على الرغم من أنّ ذلك ليس مطلوبًا، تتطلّب بعض سيناريوهات الاختبار إنشاء شهادات Matter غير مخصّصة للإنتاج.
لا يمكن تنفيذ بعض ميزات نظام Google المتكامل، بما في ذلك "تحديثات برامج الأجهزة عبر الهواء" باستخدام رقم تعريف المورّد (VID)/رقم تعريف المنتج (PID) للاختبار.
يوضّح هذا الدليل كيفية إنشاء شهادات غير مخصّصة للإنتاج Matter والتحقّق منها لاستخدامها في الاختبار. في ما يلي أنواع الشهادات:
- إعلان الاعتماد (CD)
- الشهادة الوسيطة لاعتماد المنتج (PAI)
- شهادة اعتماد الجهاز (DAC)
أثناء عملية الإعداد، يجب أن يثبت الجهاز المعتمد من Matter نفسه، أي أن يثبت أنه منتج أصلي معتمد من Matter. تتألّف بيانات الاعتماد التي تستخدمها أجهزة Matter لإثبات اعتمادها مما يلي:
- مفتاحا اعتماد
- سلسلة شهادات
شهادة اعتماد الجهاز (DAC) هي الرابط الأول في سلسلة الشهادات، ويتم التحقّق من صحتها من خلال الشهادة الوسيطة لاعتماد المنتج (PAI)، التي يتم التحقّق من صحتها بدورها من خلال هيئة اعتماد المنتج (PAA).
يتم توقيع الشهادات في الوقت نفسه الذي يتم فيه إنشاء مفتاحَي الاعتماد، ويتم توقيعهما باستخدام المفتاح الخاص لهيئة إصدار الشهادات التي تسبقها بمستوى واحد، ما يؤدي إلى إنشاء سلسلة ثقة. لذلك، يتم توقيع شهادة اعتماد الجهاز (DAC) باستخدام مفتاح الشهادة الوسيطة لاعتماد المنتج (PAI)، ويتم توقيع شهادة الشهادة الوسيطة لاعتماد المنتج (PAI) باستخدام مفتاح هيئة اعتماد المنتج (PAA). بما أنّ شهادات هيئة اعتماد المنتج (PAA) هي أعلى الشهادات في السلسلة، يتم توقيعها ذاتيًا. تشكّل سلسلة الثقة هذه بنية موحّدة لهيئة اعتماد المنتج (PAA)، تتم مزامنتها من خلال دفتر الامتثال الموزّع (DCL).
يمكنك العثور على مزيد من المعلومات عن عملية الاعتماد وإعلانات الاعتماد (CD) في مستندات ورسائل اعتماد إضافية وفي مواصفات Matter.
تثبيت حزمة تطوير البرامج (SDK) من Matter
تفترض هذه التعليمات أنّ لديك عملية تثبيت لحزمة تطوير البرامج (SDK) تعمل بشكلٍ سليم.Matter يُرجى الرجوع إلى مستنداتها على GitHub أو الاطّلاع على مقالة البدء في استخدام Matter لمزيد من المعلومات.
ثبِّت أداة xxd المساعدة إذا لم تكن لديك. هذه الأداة مفيدة
لطباعة بيانات الاعتماد بتنسيق على نمط لغة C:
sudo apt-get install xxd
إنشاء chip-cert
تأكَّد من أنّك تستخدم إصدارًا حديثًا من حزمة تطوير البرامج (SDK). تم اختبار هذه الإجراءات على رقم SHA
0b17bce8على فرعv1.0-branchعلى GitHub:$ cd connectedhomeip $ git checkout v1.0-branch $ git pullأنشئ
chip-cert، وهي الأداة المستخدَمة في عدة عمليات على بيانات اعتماد أجهزة Matter:ضبط عملية الإنشاء:
$ cd src/credentials $ source ../../scripts/activate.sh $ gn gen outمثال على ناتج
gn:Done. Made 5774 targets from 289 files in 658msتشغيل عملية الإنشاء:
$ ninja -C outمثال على ناتج
ninja:ninja: Entering directory `out' [2000/2000] stamp obj/default.stamp
سك شهاداتك
يمكنك تصدير رقم تعريف المورّد (VID)/رقم تعريف المنتج (PID) المخصّصَين كمتغيّرات بيئية لتقليل فرص حدوث خطأ كتابي عند تعديل وسيطات الأوامر:
$ cd ../..
$ export VID=hexVendorId
$ export PID=hexProductId
إنشاء إعلان اعتماد
أنشئ إعلان الاعتماد باستخدام
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"تحقَّق من إعلان الاعتماد. تأكَّد من أنّه يحتوي على رقم تعريف المورّد (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) للاختبار ومفتاح التوقيع
من Matter كشهادة جذر.Chip-Test-PAA-NoVID سنستخدمها كهيئة إصدار شهادات جذر لإنشاء الشهادة الوسيطة لاعتماد المنتج (PAI) وشهادة اعتماد الجهاز (DAC).
أنشئ الشهادة الوسيطة لاعتماد المنتج (PAI) باستخدام هيئة اعتماد المنتج (PAA). يمكنك اختياريًا تضمين معلومات رقم تعريف المنتج (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أنشئ شهادة اعتماد الجهاز (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تحقَّق من سلسلة شهادات اعتماد الجهاز (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يمكنك فحص مفاتيحك باستخدام
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يمكنك أيضًا استخدام
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).
لمزيد من الأمثلة على إنشاء إعلان اعتماد، اطّلِع على
credentials/test/gen-test-cds.sh
ولمزيد من الأمثلة على إنشاء هيئة اعتماد منتج (PAA) وشهادة وسيطة لاعتماد المنتج (PAI) وشهادة اعتماد الجهاز (DAC)، اطّلِع على
credentials/test/gen-test-attestation-certs.sh
استبدال الشهادات
استبدال هيئة اعتماد المنتج (PAA) والشهادة الوسيطة لاعتماد المنتج (PAI)
- شغِّل النص البرمجي المساعد التالي، الذي يستخدم
أداة شهادات 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/\0x/g' | 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"
انسخ محتويات ناتج الشهادة الوسيطة لاعتماد المنتج (PAI) وشهادة اعتماد الجهاز (DAC) إلى عملية التنفيذ الخاصة بك لـ
DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert.على الأجهزة المخصّصة للإنتاج، تكون الشهادة الوسيطة لاعتماد المنتج (PAI) وشهادة اعتماد الجهاز (DAC) في بيانات المصنع، بينما يتم تضمين إعلان الاعتماد في البرنامج الثابت نفسه.
إذا كنت لا تستخدم "بيانات المصنع" بعد، قد تحتاج إلى وضع الشهادة الوسيطة لاعتماد المنتج (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إذا كنت تستخدم "بيانات المصنع" أو موفّر بيانات اعتماد مخصّصًا، تأكَّد من إدراج بيانات الاعتماد في المواضع المناسبة. قد تحتاج إلى التواصل مع موفّر نظامك على شريحة واحدة (SoC) للحصول على تفاصيل حول منصتك.
استبدال إعلان الاعتماد
استخرِج تمثيلاً نصيًا لمحتويات ملف إعلان الاعتماد باستخدام
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; ```انسخ النص الذي استخرجته في الخطوة السابقة إلى الملف المستخدَم لتحديد إعلان الاعتماد في عملية الإنشاء. كما هو الحال مع الشهادة الوسيطة لاعتماد المنتج (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 ../..
لتفعيل سجلات إضافية، احرص على تمرير العلامة --trace_decode 1 في كل مرة تشغِّل فيها chip-tool. علاوةً على ذلك، من المستحسن تمرير مسار ملف هيئة اعتماد المنتج (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
ولإعداد جهاز Wi-Fi، يمكنك استخدام الخيار ble-wifi:
$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator