بعض سيناريوهات الاختبار ليست شرطًا، ولكن تتطلب إنشاء شهادات غير متعلقة بالإنتاج.
بعض ميزات منظومة Google المتكاملة، بما في ذلك تحديثات البرامج عبر الهواء على الجهاز لا يمكن إجراؤها باستخدام معرّف VID/PID تجريبي.
يوضّح هذا الدليل كيفية إنشاء شهادات غير تابعة لإصدار Matter وإثبات صحتها لاستخدامها في الاختبار. أنواع الشهادات هي:
- اعتماد شهادة الاعتماد (CD)
- الشهادة المتوسطة لمصادقة المنتج (PAI)
- شهادة مصادقة الجهاز (DAC)
خلال عملية تكليف الجهاز بمعيار Matter، يجب أن يصادق الجهاز نفسه، أي إثبات أنه منتج أصلي ومعتمد من قِبل Matter. تتكون بيانات الاعتماد التي تستخدمها أجهزة Matter للمصادقة من:
- زوج مفاتيح للمصادقة
- سلسلة شهادات
شهادة مصادقة الجهاز (DAC) هي الرابط الأول في سلسلة الشهادات، ويتم التحقّق منها من خلال الشهادة المتوسطة لمصادقة المنتج (PAI)، التي يتم التحقّق منها بدورها من خلال هيئة مصادقة المنتج (PAA).
يتم توقيع الشهادات في الوقت نفسه الذي يتم فيه إنشاء زوج مفاتيح المصادقة، ويتم توقيعها باستخدام المفتاح الخاص لمرجع التصديق على مستوى واحد أعلاه، ما يشكل سلسلة ثقة. لذلك، يتم توقيع شهادة DAC بواسطة مفتاح PAI، ويتم توقيع شهادة PAI بواسطة مفتاح PAA. وفي الجزء العلوي من السلسلة، تكون شهادات PAA موقَّعة ذاتيًا. تشكل سلسلة الثقة هذه هيكل PAA متحدًا، تتم مزامنته من خلال سجلات الامتثال الموزع (DCL).
يمكن الاطّلاع على مزيد من المعلومات حول عملية المصادقة وإقرارات الشهادات (CD) في مستندات ورسائل المصادقة الإضافية وفي "مواصفات المسألة القانونية".
تثبيت حزمة تطوير البرامج (SDK) لمعيار Matter
تفترض هذه التعليمات أنّ لديك عملية تثبيت صالحة لحزمة تطوير البرامج (SDK) Matter. يُرجى مراجعة مستنداته على GitHub أو مراجعة بدء استخدام Matter لمزيد من المعلومات.
تثبيت الأداة المساعدة Hexdump xxd
إذا لم تكن متوفرة لديك. وهذه الأداة مفيدة
لطباعة بيانات الاعتماد بتنسيق النمط C:
sudo apt-get install xxd
الإصدار chip-cert
تأكّد من استخدام إصدار حديث من حزمة تطوير البرامج (SDK). تم اختبار هذه الإجراءات على
0b17bce8
SHA من GitHub، في فرعv1.0-branch
:$ 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
كشهادة الجذر لدينا. سنستخدمه كمرجع CA الجذر لإنشاء PAI وDAC الخاص بنا.
يمكنك إنشاء PAI باستخدام PAA. يمكنك اختياريًا تضمين معلومات PID في PAI، إلا أنّ إغفالها سيمنحك مزيدًا من المرونة في الاختبار. إذا كنت بحاجة إلى نماذج DAC لـ PIDات إضافية، يمكنك تنفيذ خطوة إنشاء 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)
يمكن استخدام عملية مماثلة لإنشاء اتفاقية شراكة أعمال موقعة ذاتيًا، ولكن ليس من الضروري إجراء ذلك.
بدلاً من ذلك، ما أنجزناه في هذه الحالة هو استخدام عرض أسعار تقديري حالي للتطوير موقَّع ذاتيًا ولا يتضمّن معلومات 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