Tạo chứng chỉ kiểm tra thiết bị Matter

Mặc dù không bắt buộc, nhưng một số tình huống kiểm thử yêu cầu bạn phải tạo phiên bản không phải là Phiên bản phát hành công khai Chứng chỉ vấn đề.

Một số tính năng trong hệ sinh thái của Google, bao gồm cả Phần mềm OTA của thiết bị Không thể cập nhật bằng VID/PID thử nghiệm.

Hướng dẫn này giải thích cách tạo và xác minh kênh không phải kênh phát hành công khai Matter chứng chỉ để dùng trong kiểm thử. Các loại chứng chỉ là:

  1. Bản khai báo chứng nhận (CD)
  2. Chứng chỉ trung gian chứng thực sản phẩm (PAI)
  3. Chứng chỉ chứng thực thiết bị (DAC)

Trong quá trình vận hành, Matter đã được chứng nhận thiết bị cần chứng thực, tức là chứng minh rằng đó là sản phẩm chính hãng được Matter chứng nhận. Thông tin đăng nhập được Matter thiết bị dùng để chứng thực bao gồm:

  1. Cặp khoá chứng thực
  2. Chuỗi chứng chỉ

Chứng chỉ chứng thực thiết bị (DAC) là đường liên kết đầu tiên của chứng chỉ và được xác thực theo Chứng chỉ trung gian chứng thực sản phẩm (PAI), do đó, được Cơ quan chứng thực sản phẩm xác thực (PAA).

Các chứng chỉ được ký cùng lúc với cặp khoá chứng thực được tạo và được ký bằng khoá riêng tư của Tổ chức phát hành chứng chỉ một cấp trên, tạo thành chuỗi tin cậy. Do đó, chứng chỉ DAC được ký bằng khoá PAI và chứng chỉ PAI được ký bằng khoá PAA. Ở vị trí hàng đầu trong chuỗi, chứng chỉ PAA được tự ký. Chuỗi tin cậy này tạo thành một cấu trúc PAA liên kết, được đồng bộ hóa bởi Sổ cái tuân thủ được phân phối (DCL).

Thông tin khác về quy trình Chứng thực và Khai báo chứng chỉ (CD) có thể ở Giấy tờ chứng thực bổ sung và Tin nhắn và trong Thông số kỹ thuật của Matter.

Cài đặt SDK Matter

Những hướng dẫn này giả định rằng bạn có bản cài đặt SDK Matter. Vui lòng tham khảo tài liệu của công cụ này về GitHub hoặc xem bài viết Làm quen với Matter để biết thêm thông tin.

Cài đặt tiện ích hexdump xxd nếu bạn chưa có. Công cụ này hữu ích để in thông tin xác thực theo định dạng kiểu C:

sudo apt-get install xxd

Bản dựng chip-cert

  1. Hãy đảm bảo rằng bạn đang sử dụng phiên bản SDK mới nhất. Những quy trình này đã thử nghiệm trên GitHub SHA 0b17bce8, trên nhánh v1.0-branch:

    $ cd connectedhomeip
    $ git checkout v1.0-branch
    $ git pull
    
  2. Tạo chip-cert, là công cụ dùng cho một số thao tác trên thông tin đăng nhập cho Matter thiết bị:

    1. Định cấu hình bản dựng:

      $ cd src/credentials
      $ source ../../scripts/activate.sh
      $ gn gen out
      

      Ví dụ về kết quả gn:

      Done. Made 5774 targets from 289 files in 658ms
      
    2. Chạy bản dựng:

      $ ninja -C out
      

      Ví dụ về kết quả ninja:

      ninja: Entering directory `out'
      [2000/2000] stamp obj/default.stamp
      

Tạo chứng chỉ

Xuất VID/PID tuỳ chỉnh dưới dạng biến môi trường để giảm khả năng lỗi văn bản khi chỉnh sửa đối số lệnh của bạn:

$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId

Tạo đĩa CD

  1. Tạo đĩa CD bằng chip-cert. Hiện tại, Uỷ viên chỉ xác thực VID và PID khớp với dữ liệu do thiết bị hiển thị ở nơi khác: Nguồn gốc của Cụm Thông tin cơ bản, DAC và DAC (khi có). Bạn có thể rời đi các trường khác không thay đổi:

    $ src/credentials/out/chip-cert gen-cd \
      --key credentials/test/certification-declaration/Chip-Test-CD-Signing-Key.pem \
      --cert credentials/test/certification-declaration/Chip-Test-CD-Signing-Cert.pem \
      --out credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der \
      --format-version "1" \
      --vendor-id "${VID}" \
      --product-id "${PID}" \
      --device-type-id "0x1234" \
      --certificate-id "ZIG20141ZB330001-24" \
      --security-level "0" \
      --security-info "0" \
      --version-number "9876" \
      --certification-type "0"
    
  2. Xác minh đĩa CD. Đảm bảo mã này chứa VID/PID (ở định dạng thập phân):

    $ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
    

    Kết quả điểm dữ liệu:

    SignerKeyId value: hex:62FA823359ACFAA9963E1CFA140ADDF504F37160
    0x01, tag[Anonymous]: 0xffffffff, type: Structure (0x15), container:
    0x04,     tag[Context Specific]: 0x0, type: Unsigned Fixed Point (0x04), value: 1
    0x08,     tag[Context Specific]: 0x1, type: Unsigned Fixed Point (0x04), value: XXXXX // <- VID
    0x0A,     tag[Context Specific]: 0x2, type: Array (0x16), container:
    0x0D,         tag[Anonymous]: 0xffffffff, type: Unsigned Fixed Point (0x04), value: XXXXX // <- PID
    0x12,     tag[Context Specific]: 0x3, type: Unsigned Fixed Point (0x04), value: 4660
    0x15,     tag[Context Specific]: 0x4, type: UTF-8 String (0x0c), length: 19, value: "ZIG20141ZB330001-24"
    0x2B,     tag[Context Specific]: 0x5, type: Unsigned Fixed Point (0x04), value: 0
    0x2E,     tag[Context Specific]: 0x6,type: Unsigned Fixed Point (0x04), value: 0
    0x32,     tag[Context Specific]: 0x7, type: Unsigned Fixed Point (0x04), value: 39030
    0x35,     tag[Context Specific]: 0x8, type: Unsigned Fixed Point (0x04), value: 0
    

Tạo PAI và DAC

Trong ví dụ này, chúng ta sẽ sử dụng Sản phẩm thử nghiệm của chính Matter Chứng chỉ và khoá ký của Tổ chức phát hành chứng thực (PAA) Chip-Test-PAA-NoVID làm chứng chỉ gốc. Chúng tôi sẽ dùng thông tin này làm CA gốc để tạo PAI của riêng mình và DAC.

  1. Tạo PAI bằng cách sử dụng PAA. Bạn có thể thêm PID (không bắt buộc) thông tin trong PAI, nhưng việc bỏ qua mã này sẽ giúp bạn linh hoạt hơn trong việc kiểm thử. Nếu cần DAC cho các PID bổ sung, bạn có thể chỉ thực thi Bước tạo DAC:

    $ src/credentials/out/chip-cert gen-att-cert --type i \
      --subject-cn "Matter Test PAI" \
      --subject-vid "${VID}" \
      --valid-from "2021-06-28 14:23:43" \
      --lifetime "4294967295" \
      --ca-key credentials/test/attestation/Chip-Test-PAA-NoVID-Key.pem \
      --ca-cert credentials/test/attestation/Chip-Test-PAA-NoVID-Cert.pem \
      --out-key credentials/test/attestation/"test-PAI-${VID}-key".pem \
      --out credentials/test/attestation/"test-PAI-${VID}-cert".pem
    
  2. Tạo DAC bằng PAI:

    $ src/credentials/out/chip-cert gen-att-cert --type d \
      --subject-cn "Matter Test DAC 0" \
      --subject-vid "${VID}" \
      --subject-pid "${PID}" \
      --valid-from "2021-06-28 14:23:43" \
      --lifetime "4294967295" \
      --ca-key credentials/test/attestation/"test-PAI-${VID}-key".pem \
      --ca-cert credentials/test/attestation/"test-PAI-${VID}-cert".pem \
      --out-key credentials/test/attestation/"test-DAC-${VID}-${PID}-key".pem \
      --out credentials/test/attestation/"test-DAC-${VID}-${PID}-cert".pem
    
  3. Xác minh chuỗi DAC, PAI và PAA. Nếu không có lỗi nào xuất hiện trong kết quả, có nghĩa là chuỗi chứng thực chứng chỉ đã được xác minh thành công:

    $ src/credentials/out/chip-cert validate-att-cert \
    --dac credentials/test/attestation/"test-DAC-${VID}-${PID}-cert".pem \
    --pai credentials/test/attestation/"test-PAI-${VID}-cert".pem \
    --paa credentials/test/attestation/Chip-Test-PAA-NoVID-Cert.pem
    
  4. Bạn có thể kiểm tra khoá bằng openssl:

    $ openssl ec -noout -text -in \
      credentials/test/attestation/test-DAC-${VID}-${PID}-key.pem
    

    Kết quả điểm dữ liệu:

    read EC key
    Private-Key: (256 bit)
    priv:
        c9:f2:b3:04:b2:db:0d:6f:cd:c6:be:f3:7b:76:8d:
        8c:01:4e:0b:9e:ce:3e:72:49:3c:0e:35:63:7c:6c:
        6c:d6
    pub:
        04:4f:93:ba:3b:bf:63:90:73:98:76:1e:af:87:79:
        11:e6:77:e8:e2:df:a7:49:f1:7c:ac:a8:a6:91:76:
        08:5b:39:ce:6c:72:db:6d:9a:92:b3:ba:05:b0:e8:
        31:a0:bf:36:50:2b:5c:72:55:7f:11:c8:01:ff:3a:
        46:b9:19:60:28
    ASN1 OID: prime256v1
    NIST CURVE: P-256
    
  5. Bạn cũng có thể sử dụng openssl để kiểm tra các chứng chỉ đã tạo:

    $ openssl x509 -noout -text -in \
      credentials/test/attestation/test-DAC-${VID}-${PID}-cert.pem
    

    Kết quả điểm dữ liệu:

    Certificate:
        Data:
            Version: 3 (0x2)
            Serial Number: 2875998130766646679 (0x27e9990fef088d97)
            Signature Algorithm: ecdsa-with-SHA256
            Issuer: CN = Matter Test PAI, 1.3.6.1.4.1.37244.2.1 = hexVendorId
            Validity
                Not Before: Jun 28 14:23:43 2021 GMT
                Not After : Dec 31 23:59:59 9999 GMT
            Subject: CN = Matter Test DAC 0, 1.3.6.1.4.1.37244.2.1 = hexVendorId, 1.3.6.1.4.1.37244.2.2 = hexProductId
            Subject Public Key Info:
                Public Key Algorithm: id-ecPublicKey
                    Public-Key: (256 bit)
                    pub:
                        04:4f:93:ba:3b:bf:63:90:73:98:76:1e:af:87:79:
                        11:e6:77:e8:e2:df:a7:49:f1:7c:ac:a8:a6:91:76:
                        08:5b:39:ce:6c:72:db:6d:9a:92:b3:ba:05:b0:e8:
                        31:a0:bf:36:50:2b:5c:72:55:7f:11:c8:01:ff:3a:
                        46:b9:19:60:28
                    ASN1 OID: prime256v1
                    NIST CURVE: P-256
            X509v3 extensions:
                X509v3 Basic Constraints: critical
                    CA:FALSE
                X509v3 Key Usage: critical
                    Digital Signature
                X509v3 Subject Key Identifier:
                    21:0A:CA:B1:B6:5F:17:65:D8:61:19:73:84:1A:9D:52:81:19:C5:39
                X509v3 Authority Key Identifier:
                    37:7F:24:9A:73:41:4B:16:6E:6A:42:6E:F5:E8:89:FB:75:F8:77:BB
        Signature Algorithm: ecdsa-with-SHA256
        Signature Value:
            30:45:02:20:38:8f:c5:0d:3e:90:95:dd:7d:7c:e9:5a:05:19:
            1f:2d:14:08:a3:d7:0e:b5:15:6d:d3:b0:0b:f7:b8:28:4d:bf:
            02:21:00:d4:05:30:43:a6:05:00:0e:b9:99:0d:34:3d:75:fe:
            d3:c1:4e:73:ff:e7:05:64:7a:62:8d:2d:38:8f:fd:4d:ad
    

PAA

Bạn cũng có thể sử dụng quy trình tương tự để tạo PAA tự ký, nhưng làm như vậy là không cần thiết.

Thay vào đó, những gì chúng ta làm ở đây là sử dụng PAA trong quy trình phát triển tự ký hiện có không bao gồm thông tin VID.

Để biết thêm ví dụ về cách tạo đĩa CD, hãy xem credentials/test/gen-test-cds.sh Ngoài ra, để xem thêm ví dụ về cách tạo PAA, PAI và DAC, hãy xem credentials/test/gen-test-attestation-certs.sh

Thay thế chứng chỉ

Thay thế PAA và PAI

  1. Chạy tập lệnh trợ giúp sau. Tập lệnh này sử dụng Công cụ Chứng chỉ CHIP (chip-cert) để tạo mảng kiểu C của chứng chỉ.

Tải tập lệnh Trình trợ giúp chứng chỉ có thể nhúng xuống

#!/bin/bash

#
# generate-embeddable-certs.sh script
# —----------------------------------
#
# This script generates self-minted DAC and PAI.
# The output may easily be included in your C++ source code.
#

# Edit this information with your paths and certificates
folder="credentials/test/attestation"
chip_cert_tool="src/credentials/out/chip-cert"
cert_file_der="${folder}/test-PAI-${VID}-cert.der"
cert_file_pem="${folder}/test-PAI-${VID}-cert.pem"
key_file_pem="${folder}/test-PAI-${VID}-key.pem"

type="Pai"

printf "namespace chip {\n"
printf "namespace DevelopmentCerts {\n\n"
printf "#if CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID == ${PID}\n\n"

printcert() {
  # convert cert to DER
  if [ -f "${cert_file_der}" ]; then
      rm "${cert_file_der}"
  fi
  "${chip_cert_tool}" convert-cert "${cert_file_pem}" "${cert_file_der}" --x509-der

  printf "// ------------------------------------------------------------ \n"
  printf "// ${type} CERTIFICATE ${cert_file_der} \n\n"

  printf "constexpr uint8_t ${type}_Cert_Array[] = {\n"
  less -f "${cert_file_der}" | od -t x1 -An | sed 's/\ | sed 's/\>/,/g' | sed 's/^/   /g'
  printf "};\n\n"
  printf "ByteSpan k${type}Cert = ByteSpan(${type}_Cert_Array);\n\n"

  printf "// ${type} PUBLIC KEY FROM ${key_file_pem} \n\n"

  printf "constexpr uint8_t ${type}_PublicKey_Array[] = {\n"
  openssl ec -text -noout -in "${key_file_pem}" 2>/dev/null | sed '/ASN1 OID/d' | sed '/NIST CURVE/d' | sed -n '/pub:/,$p' | sed '/pub:/d' | sed 's/\([0-9a-fA-F][0-9a-fA-F]\)/0x\1/g' | sed 's/:/, /g'
  printf "};\n\n"
  printf "ByteSpan k${type}PublicKey = ByteSpan(${type}_PublicKey_Array);\n\n"

  printf "// ${type} PRIVATE KEY FROM ${key_file_pem} \n\n"

  printf "constexpr uint8_t ${type}_PrivateKey_Array[] = {\n"
  openssl ec -text -noout -in "${key_file_pem}" 2>/dev/null | sed '/read EC key/d' | sed '/Private-Key/d' | sed '/priv:/d' | sed '/pub:/,$d' | sed 's/\([0-9a-fA-F][0-9a-fA-F]\)/0x\1/g' | sed 's/:/, /g'
  printf "};\n\n"
  printf "ByteSpan k${type}PrivateKey = ByteSpan(${type}_PrivateKey_Array);\n\n"
}

# generates PAI
printcert

type="Dac"
cert_file_der="${folder}/test-DAC-${VID}-${PID}-cert.der"
cert_file_pem="${folder}/test-DAC-${VID}-${PID}-cert.pem"
key_file_pem="${folder}/test-DAC-${VID}-${PID}-key.pem"

# generates DAC
printcert

printf "#endif // CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID\n"
printf "} // namespace DevelopmentCerts\n"
printf "} // namespace chip\n"
  1. Sao chép nội dung của đầu ra PAI và DAC vào phương thức triển khai của bạn DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert.

    Trên các thiết bị chính thức, PAI và DAC đang ở Dữ liệu gốc, trong khi đĩa CD được nhúng vào chính chương trình cơ sở.

    1. Nếu chưa sử dụng Dữ liệu gốc, bạn có thể đặt PAI trong src/credentials/examples/ExampleDACs.cpp. Trong trường hợp này, hãy thêm mã được tạo kết quả cho tệp ExampleDACs.cpp:

      ByteSpan kDacCert       = ByteSpan(kDevelopmentDAC_Cert_FFF1_801F);
      ByteSpan kDacPrivateKey = ByteSpan(kDevelopmentDAC_PrivateKey_FFF1_801F);
      ByteSpan kDacPublicKey  = ByteSpan(kDevelopmentDAC_PublicKey_FFF1_801F);
      #endif
      } // namespace DevelopmentCerts
      } // namespace chip
      
      /* ------------------------------------------ */
      /* current end-of-file                        */
      /* ------------------------------------------ */
      
      /* ------------------------------------------ */
      /* output of creds-codelab.sh script          */
      /* ------------------------------------------ */
      
      namespace chip {
      namespace DevelopmentCerts {
      
      #if CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID == hexProductId
      
      ...
      
      ByteSpan kDacPrivateKey = ByteSpan(Dac_PrivateKey_Array);
      
      #endif // CHIP_DEVICE_CONFIG_DEVICE_PRODUCT_ID
      } // namespace DevelopmentCerts
      } // namespace chip
      
    2. Nếu bạn đang sử dụng Dữ liệu gốc hoặc Trình cung cấp thông tin đăng nhập tuỳ chỉnh, hãy đảm bảo để chèn thông tin xác thực vào các vị trí thích hợp. Bạn nên hãy liên hệ với nhà cung cấp hệ thống SoC của bạn để biết thông tin cụ thể về nền tảng mà bạn sử dụng.

Thay thế CD

  1. Trích xuất bản trình bày văn bản của nội dung tệp CD bằng xxd:

      $ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
    

    Kết quả điểm dữ liệu:

      unsigned char credentials_test_certification_declaration_Chip_Test_CD_hexVendorId_hexProductId_der[] = {
        0x30, 0x81, 0xe9, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
        0x07, 0x02, 0xa0, 0x81, 0xdb, 0x30, 0x81, 0xd8, 0x02, 0x01, 0x03, 0x31,
        0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04,
        0x02, 0x01, 0x30, 0x45, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
        0x01, 0x07, 0x01, 0xa0, 0x38, 0x04, 0x36, 0x15, 0x24, 0x00, 0x01, 0x25,
        0x01, 0xfe, 0xca, 0x36, 0x02, 0x05, 0xce, 0xfa, 0x18, 0x25, 0x03, 0x34,
        0x12, 0x2c, 0x04, 0x13, 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x31,
        0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x31, 0x2d, 0x32, 0x34, 0x24,
        0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x76, 0x98, 0x24, 0x08, 0x00,
        0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa,
        0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a,
        0xdd, 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86,
        0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x0a, 0x06, 0x08, 0x2a,
        0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02,
        0x20, 0x53, 0x25, 0x03, 0x2c, 0x96, 0x50, 0xb6, 0x64, 0xf4, 0x18, 0xbf,
        0x99, 0x47, 0xf8, 0x9d, 0xe6, 0xeb, 0x43, 0x94, 0xf1, 0xce, 0xb2, 0x61,
        0x00, 0xe0, 0xf9, 0x89, 0xa8, 0x71, 0x82, 0x02, 0x0a, 0x02, 0x21, 0x00,
        0xea, 0x0a, 0x40, 0xab, 0x87, 0xad, 0x7e, 0x25, 0xe1, 0xa1, 0x6c, 0xb1,
        0x12, 0xfa, 0x86, 0xfe, 0xea, 0x8a, 0xaf, 0x4b, 0xc1, 0xf3, 0x6f, 0x09,
        0x85, 0x46, 0x50, 0xb6, 0xd0, 0x55, 0x40, 0xe2
      };
      unsigned int credentials_test_certification_declaration_Chip_Test_CD_hexVendorId_hexProductId_der_len = 236;
      ```
    
  2. Sao chép văn bản bạn đã trích xuất ở bước trước vào tệp được dùng để xác định đĩa CD vào bản dựng của bạn. Như trong trường hợp của PAI và DAC, làm cách nào để thực hiện việc này tuỳ thuộc vào nền tảng bạn đang phát triển.

Nếu bạn đang sử dụng các ví dụ về thông tin đăng nhập, bạn có thể muốn thay thế nội dung của kCdForAllExamples trong ExampleDACProvider::GetCertificationDeclaration inch src/credentials/examples/DeviceAttestationCredsExample.cpp:

    const uint8_t kCdForAllExamples[] = {
            0x30, 0x81, 0xe9, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
            0x07, 0x02, 0xa0, 0x81, 0xdb, 0x30, 0x81, 0xd8, 0x02, 0x01, 0x03, 0x31,
            0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04,
            0x02, 0x01, 0x30, 0x45, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
            0x01, 0x07, 0x01, 0xa0, 0x38, 0x04, 0x36, 0x15, 0x24, 0x00, 0x01, 0x25,
            0x01, 0xfe, 0xca, 0x36, 0x02, 0x05, 0xce, 0xfa, 0x18, 0x25, 0x03, 0x34,
            0x12, 0x2c, 0x04, 0x13, 0x5a, 0x49, 0x47, 0x32, 0x30, 0x31, 0x34, 0x31,
            0x5a, 0x42, 0x33, 0x33, 0x30, 0x30, 0x30, 0x31, 0x2d, 0x32, 0x34, 0x24,
            0x05, 0x00, 0x24, 0x06, 0x00, 0x25, 0x07, 0x76, 0x98, 0x24, 0x08, 0x00,
            0x18, 0x31, 0x7d, 0x30, 0x7b, 0x02, 0x01, 0x03, 0x80, 0x14, 0x62, 0xfa,
            0x82, 0x33, 0x59, 0xac, 0xfa, 0xa9, 0x96, 0x3e, 0x1c, 0xfa, 0x14, 0x0a,
            0xdd, 0xf5, 0x04, 0xf3, 0x71, 0x60, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86,
            0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x30, 0x0a, 0x06, 0x08, 0x2a,
            0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x04, 0x47, 0x30, 0x45, 0x02,
            0x20, 0x53, 0x25, 0x03, 0x2c, 0x96, 0x50, 0xb6, 0x64, 0xf4, 0x18, 0xbf,
            0x99, 0x47, 0xf8, 0x9d, 0xe6, 0xeb, 0x43, 0x94, 0xf1, 0xce, 0xb2, 0x61,
            0x00, 0xe0, 0xf9, 0x89, 0xa8, 0x71, 0x82, 0x02, 0x0a, 0x02, 0x21, 0x00,
            0xea, 0x0a, 0x40, 0xab, 0x87, 0xad, 0x7e, 0x25, 0xe1, 0xa1, 0x6c, 0xb1,
            0x12, 0xfa, 0x86, 0xfe, 0xea, 0x8a, 0xaf, 0x4b, 0xc1, 0xf3, 0x6f, 0x09,
            0x85, 0x46, 0x50, 0xb6, 0xd0, 0x55, 0x40, 0xe2
        };

Tạo mục tiêu

Hãy tạo và cài đặt mục tiêu của bạn bằng thông tin đăng nhập mới được tạo. Chiến dịch này phụ thuộc vào nền tảng. Xem tài liệu về SoC hoặc Thiết bị được hỗ trợ để biết thêm thông tin.

Ủy quyền cho thiết bị

Giờ đây, bạn có thể làm theo các bước trong bài viết Ghép nối vấn đề thiết bị sang hãy kích hoạt thiết bị Matter của bạn trên Google Home platform.

Gỡ lỗi bằng chip-tool

chip-tool có thể là một công cụ hữu ích để kiểm tra xem thiết bị của bạn gửi đúng thông tin chứng chỉ. Cách tạo ứng dụng này:

$ cd examples/chip-tool
$ gn gen out/debug
Done. Made 114 targets from 112 files in 157ms
$ ninja -C out/debug
ninja: Entering directory `out/debug'
$ cd ../..

Để bật các nhật ký bổ sung, bất cứ khi nào chạy chip-tool, hãy nhớ truyền Cờ --trace_decode 1. Ngoài ra, bạn nên truyền PAA có cờ --paa-trust-store-path.

Do đó, để kích hoạt thiết bị Thread bằng BLE, bạn có thể chạy:

```
$ examples/chip-tool/out/debug/chip-tool pairing ble-thread 1 \
  hex:Thread_credentials \
  pairing_code \
  discriminator \
  --paa-trust-store-path <path to PAA folder> \
  --trace_decode 1
```

Trong trường hợp thiết bị thử nghiệm, <PAIRING CODE>20202021<DISCRIMINATOR>3840.

Để lấy thông tin đăng nhập Thread từ Google Nest Hub (2nd gen) của mình, bạn có thể chạy:

$ adb connect border_router_ip_address
$ adb -e shell ot-ctl dataset active -x
$ adb disconnect

Còn để kích hoạt thiết bị Wi-Fi, bạn có thể dùng tuỳ chọn ble-wifi:

$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator