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

Một số trường hợp phát triển nhất định, chẳng hạn như kiểm thử OTA, yêu cầu tạo chứng chỉ Matter không phải là chứng chỉ Sản xuất.

Bạn không thể thực hiện một số tính năng của hệ sinh thái Google (bao gồm cả Bản cập nhật phần mềm OTA cho thiết bị) 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 chứng chỉ Matter không phải là chứng chỉ Phát hành công khai để sử dụng trong quá trình kiểm thử. Các loại chứng chỉ là:

  1. Tuyên bố 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 thiết lập, thiết bị được chứng nhận Matter cần phải chứng thực chính mình, tức là chứng minh rằng thiết bị đó là sản phẩm chính hãng được chứng nhận Matter. Thông tin đăng nhập mà các thiết bị Matter dùng để chứng thực bao gồm:

  1. Một cặp khoá chứng thực
  2. Một chuỗi chứng chỉ

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

Chứng chỉ được ký cùng lúc với khi cặp khoá chứng thực được tạo và được ký bằng khoá riêng tư của Cơ quan cấp chứng chỉ ở cấp độ trên, tạo thành một 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. Là chứng chỉ hàng đầu trong chuỗi, chứng chỉ PAA là chứng chỉ 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ộ hoá bằng Sổ cái tuân thủ phân tán (DCL).

Bạn có thể tìm thêm thông tin về quy trình Chứng thực và Tuyên bố chứng nhận (CD) trong phần Tài liệu và thông báo chứng thực bổ sung và trong Quy cách Matter.

Cài đặt Matter SDK

Hướng dẫn này giả định rằng bạn đã cài đặt Matter SDK. Vui lòng tham khảo tài liệu của Matter trên Github hoặc xem bài viết Bắt đầu sử dụng 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 cho việc in thông tin đăng nhập ở định dạng kiểu C:

sudo apt-get install xxd

Bản dựng chip-cert

  1. Đảm bảo bạn đang sử dụng phiên bản SDK mới. Các quy trình này đã được kiểm thử trên SHA 0b17bce8 của Github, 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ụ được dùng cho một số thao tác trên thông tin đăng nhập cho các thiết bị Matter:

    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
      

Phát hành chứng chỉ

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

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

Tạo đĩa CD

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

    $ 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 rằng tệp này chứa VID/PID của bạn (ở đị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 chứng chỉ và khoá ký Cơ quan chứng thực sản phẩm (PAA) thử nghiệm của riêng Matter Chip-Test-PAA-NoVID làm chứng chỉ gốc. Chúng ta sẽ sử dụng khoá này làm CA gốc để tạo PAI và DAC của riêng mình.

  1. Tạo PAI bằng PAA. Bạn có thể tuỳ ý đưa thông tin PID vào PAI, nhưng việc bỏ qua thông tin này sẽ giúp bạn linh hoạt hơn khi kiểm thử. Nếu cần DAC cho các PID khác, bạn chỉ cần thực hiện 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 đầu ra, tức 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 các 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ể 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ó thể sử dụng một quy trình tương tự để tạo PAA tự ký, nhưng không cần thiết phải làm như vậy.

Thay vào đó, những gì chúng ta đã làm ở đây là sử dụng một PAA 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 CD, hãy xem credentials/test/gen-test-cds.sh. Để biết 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 đây. 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 cho các chứng chỉ của bạn.

Tải tập lệnh Embeddable Certificates Helper 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 quá trình triển khai DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert.

    Trên các thiết bị sản xuất, PAI và DAC nằm trong Dữ liệu gốc, trong khi CD được nhúng trong chính chương trình cơ sở.

    1. Nếu chưa sử dụng Factory Data, bạn có thể muốn đặt PAI của mình trong src/credentials/examples/ExampleDACs.cpp. Trong trường hợp này, hãy thêm mã được tạo vào 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 một Trình cung cấp thông tin đăng nhập tuỳ chỉnh, hãy nhớ chèn thông tin đăng nhập vào các vị trí thích hợp. Bạn nên trao đổi với nhà cung cấp SoC để biết thông tin cụ thể về nền tảng của mình.

Thay thế đĩa CD

  1. Trích xuất nội dung của tệp CD dưới dạng văn bản bằng cách dù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 dùng để xác định CD trong bản dựng. Tương tự như trường hợp của PAI và DAC, cách bạn thực hiện việc này phụ thuộc vào nền tảng mà bạn đang phát triển.

Nếu đang sử dụng các ví dụ về thông tin đăng nhập, có thể bạn muốn thay thế nội dung của kCdForAllExamples trong ExampleDACProvider::GetCertificationDeclaration, trong 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
        };

Xây dựng mục tiêu

Tạo và flash mục tiêu bằng thông tin xác thực mới tạo. Phần này phụ thuộc vào nền tảng. Hãy xem tài liệu về SoC hoặc Các thiết bị được hỗ trợ để biết thêm thông tin.

Uỷ quyền thiết bị

Giờ đây, bạn có thể làm theo các bước đã được đề cập trong phần Ghép nối thiết bị Matter để thiết lập thiết bị Matter 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 có gửi đúng chứng chỉ hay không. Cách tạo:

$ 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 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 đường dẫn của tệp PAA bằng cờ --paa-trust-store-path.

Do đó, để thiết lập mộ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ị kiểm thử, <PAIRING CODE>20202021<DISCRIMINATOR>3840.

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

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

Để thiết lập mộ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