إنشاء شهادات اختبار جهاز Matter

على الرغم من أنها ليست شرطًا، فإن بعض سيناريوهات الاختبار تتطلب إنشاء شهادات غير متعلقة بالإنتاج.

لا يمكن تنفيذ بعض ميزات نظام Google البيئي، بما في ذلك تحديثات برامج OTA للجهاز، باستخدام اختبار 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.

تثبيت حزمة تطوير البرامج (SDK) الخاصة ببروتوكول Matter

تفترض هذه التعليمات أنّ لديك نسخة عاملة من حزمة تطوير البرامج (SDK) الخاصة بـ Matter. يُرجى الرجوع إلى المستندات الخاصة به على Github أو الاطّلاع على بدء استخدام Matter للحصول على مزيد من المعلومات.

ثبِّت أداة hexdump xxd إذا لم تكن مثبّتة. تفيد هذه الأداة في طباعة بيانات الاعتماد بتنسيق C:

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
      

إنشاء شهاداتك

صدِّر معرّف المورّد/معرّف المنتج المخصّصَين كمتغيّرات بيئية لتقليل فرص حدوث خطأ كتابي عند تعديل وسيطات الأمر:

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

إنشاء قرص مضغوط

  1. إنشاء القرص المضغوط باستخدام chip-cert في الوقت الحالي، يتحقّق المسؤول فقط من أنّ معرّفَي المورّد والمنتج يطابقان البيانات المعروضة في مكان آخر على الجهاز، أي "مجموعة المعلومات الأساسية" وشهادة إثبات صحة الجهاز (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. تحقَّق من القرص المضغوط. تأكَّد من أنّه يحتوي على معرّف المورّد/معرّف المنتج (بالتنسيق العشري):

    $ 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
    

إنشاء معلومات التعريف الشخصية والمحتوى الذي تم إنشاؤه باستخدام الذكاء الاصطناعي

في هذا المثال، سنستخدم شهادة ومفتاح توقيع Matter الخاصين بهيئة إصدار شهادات صحة المنتج (PAA) Chip-Test-PAA-NoVID كشهادة جذر. سنستخدمها كمرجع تصديق أساسي لإنشاء PAI وDAC خاصتَين بنا.

  1. إنشاء معلومات التعريف الشخصية باستخدام معلومات التعريف الشخصية المجهّلة يمكنك تضمين معلومات PID في PAI، ولكن عدم تضمينها يمنحك المزيد من المرونة في الاختبار. إذا كنت بحاجة إلى رموز 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 مضمّنتَين في بيانات المصنع، بينما يكون رمز CD مضمّنًا في البرامج الثابتة نفسها.

    1. إذا لم تكن تستخدم Factory Data بعد، ننصحك بوضع معلومات تحديد الهوية الشخصية في 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. إذا كنت تستخدم بيانات المصنع أو مقدّم بيانات اعتماد مخصّصًا، تأكَّد من إدراج بيانات الاعتماد في المواقع المناسبة. ننصحك بالتواصل مع موفّر نظام التشغيل على الشريحة لمعرفة تفاصيل منصتك.

استبدال القرص المضغوط

  1. استخرِج تمثيلاً نصيًا لمحتوى ملف CD باستخدام xxd:

      $ 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. انسخ النص الذي استخرجته في الخطوة السابقة إلى الملف المستخدَم لتحديد عملية التسليم المتواصل في الإصدار. كما هو الحال مع "الذكاء الاصطناعي التوليدي" و"المحتوى من إنشاء الذكاء الاصطناعي"، تعتمد كيفية إجراء ذلك على المنصة التي تستخدمها.

إذا كنت تستخدم أمثلة بيانات الاعتماد، من المفترض أنك تريد استبدال محتوى 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 ../..

لتفعيل سجلّات إضافية، احرص على تمرير العلامة --trace_decode 1 عند تشغيل chip-tool. بالإضافة إلى ذلك، من الممارسات الجيدة تمرير مسار ملف PAA باستخدام العلامة --paa-trust-store-path.

وبالتالي، لتفعيل جهاز Thread باستخدام البلوتوث المنخفض الطاقة، يمكنك تنفيذ ما يلي:

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

ولتفعيل جهاز متوافق مع شبكة Wi-Fi، يمكنك استخدام الخيار ble-wifi:

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