Matter cihaz testi sertifikaları oluşturma

Zorunlu olmamakla birlikte, bazı test senaryoları için Üretim Dışı İçerik sertifikaları oluşturulması gerekir.

Cihaz OTA Yazılım Güncellemeleri gibi Google ekosisteminin bazı özellikleri, Test VID/PID kullanılarak gerçekleştirilemez.

Bu kılavuzda, testte kullanılmak üzere Üretim dışı Matter sertifikalarının nasıl oluşturulacağı ve doğrulanacağı açıklanmaktadır. Sertifika türleri şunlardır:

  1. Sertifika Beyanı (CD)
  2. Ürün Onayı Ara Sertifikası (PAI)
  3. Cihaz Onay Sertifikası (DAC)

Çalıştırma işlemi sırasında Matter sertifikalı bir cihazın kendisini onaylaması, yani Matter sertifikalı orijinal bir ürün olduğunu kanıtlaması gerekir. Matter cihazları tarafından onay için kullanılan kimlik bilgileri şunlardan oluşur:

  1. Onay anahtar çifti
  2. Sertifika zinciri

Cihaz Onay Sertifikası (DAC), sertifika zincirinin ilk bağlantısıdır ve Ürün Onayı Ara Sertifikası (PAI) ile, yani Ürün Onay Yetkilisi (PAA) tarafından doğrulanır.

Sertifikalar, onay anahtar çiftinin oluşturulduğu anda imzalanır ve bir düzey yukarıdaki Sertifika Yetkilisi'nin özel anahtarı kullanılarak imzalanır. Böylece bir güven zinciri oluşturulur. Yani DAC sertifikası bir PAI anahtarıyla, PAI sertifikası ise bir PAA anahtarıyla imzalanır. Zincirin en üstünde yer alan PAA sertifikaları kendinden imzalıdır. Bu güven zinciri, Dağıtılmış Uyumluluk Ledger'ı (DCL) tarafından senkronize edilen birleşik bir PAA yapısı oluşturur.

Onay süreci ve Sertifika Beyanları (CD) hakkında daha fazla bilgiye Ek Onay Belgeleri ve Mesajları bölümünden ve Matter Spesifikasyonu'ndan ulaşabilirsiniz.

Matter SDK'sını yükleyin

Bu talimatlarda, Matter SDK'sını çalışan bir şekilde yüklediğiniz varsayılmaktadır. Daha fazla bilgi için lütfen GitHub'daki dokümanlara bakın veya Matter'ı kullanmaya başlama bölümüne bakın.

Cihazınızda yoksa xxd hexdump yardımcı programını yükleyin. Bu araç, kimlik bilgilerini C stili bir biçimde yazdırmak için kullanışlıdır:

sudo apt-get install xxd

Derleme: chip-cert

  1. SDK'nın yeni bir sürümü üzerinde çalıştığınızdan emin olun. Bu prosedürler, GitHub SHA 0b17bce8'de v1.0-branch dalında test edilmiştir:

    $ cd connectedhomeip
    $ git checkout v1.0-branch
    $ git pull
    
  2. Matter cihazların kimlik bilgilerinde çeşitli işlemlerde kullanılan chip-cert aracını derleyin:

    1. Derlemeyi yapılandırın:

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

      Örnek gn çıkışı:

      Done. Made 5774 targets from 289 files in 658ms
      
    2. Derlemeyi çalıştırın:

      $ ninja -C out
      

      Örnek ninja çıkışı:

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

Sertifikalarınızı bastırın

Komut bağımsız değişkenlerinizi düzenlerken büro hatası olasılığını azaltmak için özel VID/PID'inizi ortam değişkenleri olarak dışa aktarın:

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

CD Oluştur

  1. chip-cert kullanarak CD'yi oluşturun. Şu anda yalnızca VID ve PID'nin, cihazın başka bir yerinde açığa çıkan verilerle (Temel Bilgi Kümesi, DAC ve DAC kaynağı (varsa)) eşleştiğini doğrulamaktadır. Diğer alanları değiştirmeden bırakabilirsiniz:

    $ 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. CD'yi doğrulayın. VID/PID bilginizi (ondalık biçimde) içerdiğinden emin olun:

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

    Örnek çıkış:

    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
    

PAI ve DAC oluşturma

Bu örnekte kök sertifikamız olarak Matter ürününün kendi test Ürün Onay Yetkilisi (PAA) sertifikasını ve imzalama anahtarını (Chip-Test-PAA-NoVID) kullanacağız. Bunu kendi PAI ve DAC'mizi oluşturmak için kök CA olarak kullanacağız.

  1. PAA'yı kullanarak PAI oluşturma İsteğe bağlı olarak PID bilgilerini PAI'ya ekleyebilirsiniz. Ancak bunu atlamak test için daha fazla esneklik sağlar. Ek PID'ler için DAC'lere ihtiyacınız varsa yalnızca DAC oluşturma adımını yürütebilirsiniz:

    $ 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. PAI kullanarak DAC oluşturma:

    $ 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. DAC, PAI ve PAA zincirini doğrulayın. Çıkışta herhangi bir hata görünmüyorsa sertifika onay zincirinin başarıyla doğrulandığı anlamına gelir:

    $ 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. openssl kullanarak anahtarlarınızı inceleyebilirsiniz:

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

    Örnek çıkış:

    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. Oluşturulan sertifikalarınızı incelemek için openssl kullanabilirsiniz:

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

    Örnek çıkış:

    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

Kendinden imzalı bir PAA oluşturmak için benzer bir süreç kullanılabilir ancak bunu yapmak gerekli değildir.

Bunun yerine, VID bilgilerini içermeyen mevcut bir kendinden imzalı geliştirme PAA'sını kullandık.

CD oluşturma hakkında daha fazla örnek için credentials/test/gen-test-cds.sh sayfasına bakın. PAA, PAI ve DAC oluşturmayla ilgili daha fazla örnek için credentials/test/gen-test-attestation-certs.sh adresine göz atın.

Sertifikaları değiştir

PAA ve PAI'yı değiştirme

  1. Sertifikalarınızın C stilindeki dizilerini oluşturmak için CHIP Sertifika Aracı'nı (chip-cert) kullanan aşağıdaki yardımcı komut dosyasını çalıştırın.

Yerleştirilebilir Sertifikalar Yardımcı komut dosyasını indirme

#!/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/\/,/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. PAI ve DAC çıkışının içeriğini DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert uygulamanıza kopyalayın.

    Üretim cihazlarında PAI ve DAC Fabrika Verileri'ndeyken CD, donanım yazılımının içine gömülüdür.

    1. Henüz Fabrika Verileri'ni kullanmıyorsanız PAI'nızı src/credentials/examples/ExampleDACs.cpp bölümüne yerleştirmek isteyebilirsiniz. Bu durumda, oluşturulan kodu ExampleDACs.cpp dosyanıza ekleyin:

      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. Fabrika Verileri veya özel bir Kimlik Bilgisi Sağlayıcısı kullanıyorsanız kimlik bilgilerini uygun konumlara eklediğinizden emin olun. Platformunuzun ayrıntıları için SoC sağlayıcınızla görüşebilirsiniz.

CD'yi Değiştir

  1. xxd kullanarak CD dosyanızın içeriğinin metin gösterimini çıkarın:

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

    Örnek çıkış:

      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. Önceki adımda çıkardığınız metni, CD'yi derlemenizde tanımlamak için kullandığınız dosyaya kopyalayın. PAI ve DAC'de olduğu gibi, bunu nasıl yapacağınız, hangi platformda geliştirdiğinize bağlıdır.

Kimlik bilgisi örneklerini kullanıyorsanız src/credentials/examples/DeviceAttestationCredsExample.cpp içindeki ExampleDACProvider::GetCertificationDeclaration ve kCdForAllExamples içindeki kCdForAllExamples içeriğini değiştirmek isteyebilirsiniz:

    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
        };

Hedefi oluşturma

Yeni hazırlanan kimlik bilgilerinizi kullanarak hedefinizi oluşturun ve güncelleyin. Bu bölüm platforma bağlıdır. Daha fazla bilgi için SoC belgelerinize veya Desteklenen cihazlar bölümüne bakın.

Cihazı devreye sokma

Artık Matter cihazınızı Google Home platform üzerinde kullanıma sunmak için Bir Matter cihaz eşleme bölümünde açıklanan adımları uygulayabilirsiniz.

chip-tool kullanarak hata ayıkla

chip-tool, cihazınızın doğru sertifikaları gönderip göndermediğini kontrol etmek için değerli bir araç olabilir. Oluşturmak için:

$ 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 ../..

Ek günlükleri etkinleştirmek için chip-tool çalıştırdığınızda --trace_decode 1 işaretini ilettiğinizden emin olun. Ayrıca, PAA dosyanızın yolunu --paa-trust-store-path işaretiyle iletmek de iyi bir uygulamadır.

Bu nedenle, BDE kullanarak bir Thread cihazı yaptırmak için şunları çalıştırabilirsiniz:

```
$ 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
```

Test cihazlarında <PAIRING CODE> değeri 20202021, <DISCRIMINATOR> ise 3840 değeridir.

Thread kimlik bilgilerinizi Google Nest Hub (2nd gen) hesabınızdan almak için şunları çalıştırabilirsiniz:

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

Ayrıca bir kablosuz cihazı sipariş etmek için ble-wifi seçeneğini kullanabilirsiniz:

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