گواهینامه های تست دستگاه Matter را ایجاد کنید

برخی از سناریوهای توسعه مانند آزمایش OTA مستلزم ایجاد گواهینامه‌های غیرتولیدی هستند.

برخی از ویژگی‌های اکوسیستم گوگل، از جمله به‌روزرسانی‌های نرم‌افزاری OTA دستگاه ، نمی‌توانند با استفاده از Test VID/PID انجام شوند .

این راهنما نحوه ایجاد و تأیید Matter غیر تولیدی را برای استفاده در آزمایش توضیح می‌دهد. انواع گواهینامه‌ها عبارتند از:

  1. اعلامیه صدور گواهینامه ( CD )
  2. گواهی میانی تأیید محصول ( PAI )
  3. گواهی تأیید دستگاه ( DAC )

در طول فرآیند راه‌اندازی، یک دستگاه دارای گواهینامه Matter باید خود را تأیید کند ، یعنی ثابت کند که یک محصول واقعی دارای گواهینامه Matter است. مدارک مورد استفاده توسط دستگاه‌های Matter برای تأیید عبارتند از:

  1. یک جفت کلید گواهی
  2. یک زنجیره گواهی

گواهی تأیید دستگاه (DAC) اولین حلقه از زنجیره گواهی است و توسط گواهی میانی تأیید محصول (PAI) تأیید می‌شود که به نوبه خود توسط مرجع تأیید محصول (PAA) تأیید می‌شود.

گواهی‌ها همزمان با تولید جفت کلید گواهی امضا می‌شوند و با استفاده از کلید خصوصی مرجع صدور گواهی در یک سطح بالاتر امضا می‌شوند و یک زنجیره اعتماد تشکیل می‌دهند. بنابراین، یک گواهی DAC توسط یک کلید PAI امضا می‌شود و یک گواهی PAI توسط یک کلید PAA امضا می‌شود. گواهی‌های PAA که در بالای زنجیره قرار دارند، خود-امضا هستند. این زنجیره اعتماد یک ساختار PAA فدرال را تشکیل می‌دهد که توسط دفتر کل انطباق توزیع‌شده (DCL) همگام‌سازی می‌شود.

اطلاعات بیشتر در مورد فرآیند گواهی و اعلامیه‌های صدور گواهینامه (CD) را می‌توانید در اسناد و پیام‌های گواهی اضافی و در مشخصات موضوع بیابید.

کیت توسعه نرم‌افزاری Matter را نصب کنید

این دستورالعمل‌ها فرض می‌کنند که شما یک نسخه نصب شده از Matter SDK دارید. لطفاً برای اطلاعات بیشتر به مستندات آن در Github مراجعه کنید یا به بخش «شروع کار با Matter» مراجعه کنید.

اگر ابزار hexdump xxd را ندارید، آن را نصب کنید. این ابزار برای چاپ اعتبارنامه‌ها با فرمت C-style مفید است:

sudo apt-get install xxd

ساخت chip-cert

  1. مطمئن شوید که روی نسخه اخیر SDK کار می‌کنید. این رویه‌ها روی Github SHA 0b17bce8 ، روی شاخه v1.0-branch آزمایش شده‌اند:

    $ cd connectedhomeip
    $ git checkout v1.0-branch
    $ git pull
    
  2. ساخت chip-cert ، ابزاری که برای چندین عملیات روی اعتبارنامه‌های دستگاه‌های Matter استفاده می‌شود:

    1. پیکربندی ساخت:

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

      مثال خروجی gn :

      Done. Made 5774 targets from 289 files in 658ms
      
    2. اجرای ساخت:

      $ ninja -C out
      

      مثال خروجی ninja :

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

گواهینامه‌های خود را ضرب کنید

VID/PID سفارشی خود را به عنوان متغیرهای محیطی صادر کنید تا احتمال خطای دفتری هنگام ویرایش آرگومان‌های دستور خود را کاهش دهید:

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

تولید سی دی

  1. با استفاده از chip-cert سی‌دی را تولید کنید. در حال حاضر، کمیسر فقط تأیید می‌کند که VID و PID با داده‌های افشا شده در جاهای دیگر دستگاه مطابقت داشته باشند: خوشه اطلاعات پایه، DAC و مبدا DAC (در صورت وجود). می‌توانید سایر فیلدها را بدون تغییر بگذارید:

    $ 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. سی‌دی را بررسی کنید. مطمئن شوید که حاوی VID/PID شما (به فرمت اعشاری) است:

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

    خروجی مثال:

    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 و DAC

در این مثال، ما از گواهی‌نامه‌ی مرجع تأیید محصول آزمایشی (PAA) و کلید امضای Chip-Test-PAA-NoVID متعلق به Matter به عنوان گواهی‌نامه‌ی ریشه استفاده خواهیم کرد. ما از آن به عنوان CA ریشه برای تولید PAI و DAC خود استفاده خواهیم کرد.

  1. PAI را با استفاده از PAA تولید کنید. می‌توانید به صورت اختیاری اطلاعات PID را در PAI وارد کنید، اما حذف آن انعطاف‌پذیری بیشتری برای آزمایش به شما می‌دهد. اگر برای PID های اضافی به DAC نیاز دارید، می‌توانید فقط مرحله تولید 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. DAC را با استفاده از 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. زنجیره DAC، PAI و PAA را تأیید کنید. اگر هیچ خطایی در خروجی ظاهر نشد، به این معنی است که زنجیره تأیید گواهی با موفقیت تأیید شده است:

    $ 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 بررسی کنید:

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

    خروجی مثال:

    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. همچنین می‌توانید از openssl برای بررسی گواهی‌های تولید شده خود استفاده کنید:

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

    خروجی مثال:

    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

یک فرآیند مشابه می‌تواند برای تولید یک PAA خودامضا استفاده شود، اما انجام این کار ضروری نیست.

در عوض، کاری که ما اینجا انجام داده‌ایم استفاده از یک PAA توسعه‌ی خودامضا شده‌ی موجود است که شامل اطلاعات VID نمی‌شود.

برای مثال‌های بیشتر از تولید CD، به credentials/test/gen-test-cds.sh مراجعه کنید و برای مثال‌های بیشتر از تولید PAA، PAI و DAC، به credentials/test/gen-test-attestation-certs.sh مراجعه کنید.

گواهینامه‌ها را جایگزین کنید

PAA و PAI را جایگزین کنید

  1. اسکریپت کمکی زیر را اجرا کنید، که از ابزار گواهی CHIP ( chip-cert ) برای تولید آرایه‌های به سبک C از گواهی‌های شما استفاده می‌کند.

اسکریپت کمکی گواهینامه‌های جاسازی‌شده را دانلود کنید

#!/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. محتویات خروجی PAI و DAC را در پیاده‌سازی DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert خود کپی کنید.

    در دستگاه‌های تولیدی، PAI و DAC در Factory Data قرار دارند، در حالی که CD در خودِ میان‌افزار تعبیه شده است.

    1. اگر هنوز از Factory Data استفاده نمی‌کنید، می‌توانید PAI خود را در src/credentials/examples/ExampleDACs.cpp قرار دهید. در این صورت، کد تولید شده حاصل را به فایل 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. اگر از Factory Data یا یک Credentials Provider سفارشی استفاده می‌کنید، مطمئن شوید که اعتبارنامه‌ها را در مکان‌های مناسب وارد می‌کنید. شاید بهتر باشد در مورد مشخصات پلتفرم خود با ارائه‌دهنده SoC خود مشورت کنید.

سی دی را تعویض کنید

  1. با استفاده از xxd نمایش متنی از محتوای فایل CD خود را استخراج کنید:

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

    خروجی مثال:

      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. متنی که در مرحله قبل استخراج کردید را در فایلی که برای تعریف CD در ساخت خود استفاده کردید، کپی کنید. همانند مورد PAI و DAC، نحوه انجام این کار بستگی به پلتفرمی دارد که روی آن توسعه می‌دهید.

اگر از مثال‌های اعتبارنامه‌ها استفاده می‌کنید، احتمالاً می‌خواهید محتوای kCdForAllExamples را در ExampleDACProvider::GetCertificationDeclaration در 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
        };

هدف را بسازید

با استفاده از اعتبارنامه‌های تازه ایجاد شده، هدف خود را بسازید و فلش کنید. این بخش به پلتفرم بستگی دارد. برای اطلاعات بیشتر به مستندات SoC یا دستگاه‌های پشتیبانی شده خود مراجعه کنید.

دستگاه را راه اندازی کنید

اکنون می‌توانید مراحلی را که قبلاً در بخش «جفت کردن دستگاه Matter» پوشش داده شده است، برای راه‌اندازی دستگاه Matter خود در Google Home platform دنبال کنید.

اشکال‌زدایی مشکلات با استفاده از chip-tool

chip-tool می‌تواند ابزاری ارزشمند برای بررسی ارسال گواهی‌های صحیح توسط دستگاه شما باشد. برای ساخت آن:

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

برای فعال کردن گزارش‌های اضافی، هر زمان که chip-tool اجرا می‌کنید، مطمئن شوید که پرچم --trace_decode 1 را ارسال می‌کنید. علاوه بر این، بهتر است مسیر فایل PAA خود را با پرچم --paa-trust-store-path ارسال کنید.

بنابراین برای راه‌اندازی یک دستگاه Thread با استفاده از BLE، می‌توانید دستور زیر را اجرا کنید:

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

در مورد دستگاه‌های تست، <PAIRING CODE> برابر با 20202021 و <DISCRIMINATOR> برابر با 3840 است.

برای دریافت اعتبارنامه‌های Thread خود از Google Nest Hub (2nd gen) ، می‌توانید دستور زیر را اجرا کنید:

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

و برای راه‌اندازی یک دستگاه وای‌فای، می‌توانید از گزینه ble-wifi استفاده کنید:

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