Matter डिवाइस के टेस्ट सर्टिफ़िकेट बनाएं

हालांकि, यह ज़रूरी नहीं है, लेकिन जांच की कुछ स्थितियों में नॉन-प्रोडक्शन मैटर सर्टिफ़िकेट बनाना ज़रूरी होता है.

Google के नेटवर्क की कुछ सुविधाएं, जिनमें डिवाइस का OTA सॉफ़्टवेयर अपडेट शामिल हैं, VID/PID की जांच का इस्तेमाल नहीं किया जा सकता.

यह गाइड, टेस्टिंग में इस्तेमाल करने के लिए, नॉन-प्रोडक्शन Matter सर्टिफ़िकेट बनाने और उनकी पुष्टि करने का तरीका बताती है. सर्टिफ़िकेट इस तरह के होते हैं:

  1. सर्टिफ़िकेशन का एलान (CD)
  2. प्रॉडक्ट प्रमाणित करने से जुड़ा इंटरमीडिएट सर्टिफ़िकेट (पीएआई)
  3. डिवाइस को प्रमाणित करने का सर्टिफ़िकेट (DAC)

कमीशन की प्रोसेस के दौरान, Matter से प्रमाणित किए गए किसी डिवाइस को खुद पुष्टि करनी होगी. इसका मतलब है कि यह साबित करना ज़रूरी है कि यह Matter-सर्टिफ़िकेट वाला असली प्रॉडक्ट है. पुष्टि करने के लिए Matter डिवाइस जिन क्रेडेंशियल का इस्तेमाल करते हैं उनमें ये क्रेडेंशियल शामिल हैं:

  1. पुष्टि करने वाली कुंजी का जोड़ा
  2. सर्टिफ़िकेट चेन

डिवाइस प्रमाणित करने का सर्टिफ़िकेट (डीएसी), सर्टिफ़िकेट की चेन का पहला लिंक है. इसकी पुष्टि प्रॉडक्ट प्रमाणित करने वाले इंटरमीडिएट सर्टिफ़िकेट (पीएआई) से की जाती है. इसके बदले में, प्रॉडक्ट प्रमाणित करने वाली संस्था (पीएए) भी इसकी पुष्टि करती है.

सर्टिफ़िकेट पर एक ही समय पर हस्ताक्षर किए जाते हैं, जब पुष्टि करने वाली कुंजी का जोड़ा जनरेट होता है. साथ ही, इन पर ऊपर एक लेवल पर, सर्टिफ़िकेट देने वाली संस्था या निकाय की निजी कुंजी का इस्तेमाल करके हस्ताक्षर किए जाते हैं. इससे ट्रस्ट की एक चेन बनती है. इसलिए, DAC सर्टिफ़िकेट पर PAI पासकोड से हस्ताक्षर किए जाते हैं और PAI सर्टिफ़िकेट पर PAA पासकोड से हस्ताक्षर किया जाता है. चेन में सबसे ऊपर, पीएए सर्टिफ़िकेट खुद हस्ताक्षर किए जाते हैं. ट्रस्ट की यह चेन, फ़ेडरेटेड पीएए स्ट्रक्चर बनाती है, जिसे डिस्ट्रिब्यूटेड कंप्लायंस लेजर (डीसीएल) से सिंक किया जाता है.

प्रमाणित करने की प्रक्रिया और सर्टिफ़िकेशन के एलान (सीडी) के बारे में ज़्यादा जानकारी, प्रमाणित करने के दूसरे दस्तावेज़ और मैसेज और मामले की खास जानकारी में देखी जा सकती है.

Matter SDK टूल इंस्टॉल करें

ये निर्देश यह मानते हैं कि आपके पास Matter SDK टूल का इंस्टॉल किया गया वर्शन है. कृपया GitHub पर मौजूद इसके दस्तावेज़ देखें. इसके अलावा, ज़्यादा जानकारी के लिए, Matter का इस्तेमाल शुरू करें देखें.

अगर आपके पास हेक्साडंप यूटिलिटी 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
      

अपने सर्टिफ़िकेट मिंट करें

अपने कस्टम VID/PID को एनवायरमेंट वैरिएबल के तौर पर एक्सपोर्ट करें. इससे कमांड के तर्कों में बदलाव करते समय, क्लर्क गड़बड़ी होने की संभावना कम हो जाएगी:

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

सीडी जनरेट करें

  1. chip-cert का इस्तेमाल करके सीडी जनरेट करें. फ़िलहाल, कमिश्नर सिर्फ़ इस बात की पुष्टि करता है कि वीआईडी और पीआईडी, डिवाइस पर कहीं और दिखाए गए डेटा से मेल खाते हैं या नहीं: बुनियादी जानकारी क्लस्टर, डीएसी, और डीएसी ऑरिजिन (जब यह उपलब्ध हो). अन्य फ़ील्ड में कोई बदलाव नहीं किया जा सकता:

    $ 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) की पुष्टि करें. पक्का करें कि इसमें आपका वीआईडी/पीआईडी (दशमलव फ़ॉर्मैट में) शामिल हो:

    $ 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 के खुद के टेस्ट प्रॉडक्ट सर्टिफ़िकेट अथॉरिटी (पीएए) सर्टिफ़िकेट और साइनिंग पासकोड Chip-Test-PAA-NoVID का इस्तेमाल करेंगे. हम इसका इस्तेमाल अपने पीएआई और DAC को जनरेट करने के लिए, रूट सीए के तौर पर करेंगे.

  1. पीएए का इस्तेमाल करके पीएआई जनरेट करें. आपके पास पीएआई में पीआईडी जानकारी को शामिल करने का विकल्प होता है. हालांकि, इसे मिटा देने से जांच करने में आसानी होती है. अगर आपको अन्य पीआईडी के लिए डीएसी की ज़रूरत है, तो सिर्फ़ डीएसी जनरेशन चरण लागू करें:

    $ 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 जनरेट करें:

    $ 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, पीएआई, और पीएए चेन की पुष्टि करें. अगर आउटपुट में कोई गड़बड़ी नहीं दिखती है, तो इसका मतलब है कि सर्टिफ़िकेट को प्रमाणित करने की चेन की पुष्टि हो गई है:

    $ 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
    

पीएए

इसी तरह की प्रोसेस का इस्तेमाल खुद हस्ताक्षर किए गए पीएए को जनरेट करने के लिए किया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है.

इसके बजाय, हमने यहां यह किया है कि हम ऐसे मौजूदा सेल्फ़-साइन्ड डेवलपमेंट पीएए का इस्तेमाल करें जिसमें VID जानकारी शामिल नहीं है.

सीडी जनरेट करने के ज़्यादा उदाहरणों के लिए, credentials/test/gen-test-cds.sh देखें. साथ ही, पीए, पीएआई, और डीएसी जनरेट करने के ज़्यादा उदाहरणों के लिए, credentials/test/gen-test-attestation-certs.sh देखें

सर्टिफ़िकेट बदलें

पीएए और पीएआई को बदलें

  1. इस हेल्पर स्क्रिप्ट को चलाएं, जो सीएचआईपी सर्टिफ़िकेट टूल (chip-cert) का इस्तेमाल करके, आपके सर्टिफ़िकेट का सी-स्टाइल कलेक्शन जनरेट करती है.

एम्बेड किए जा सकने वाले सर्टिफ़िकेट हेल्पर स्क्रिप्ट डाउनलोड करें

#!/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. पीएआई और DAC आउटपुट के कॉन्टेंट को DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert के अपने लागू करने के तरीके में कॉपी करें.

    प्रोडक्शन डिवाइसों पर, पीएआई और डीएसी फ़ैक्ट्री डेटा में होते हैं, जबकि सीडी को फ़र्मवेयर में एम्बेड किया जाता है.

    1. अगर आपने अभी तक फ़ैक्ट्री डेटा का इस्तेमाल नहीं किया है, तो आपको पीएआई को 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. अगर फ़ैक्ट्री डेटा या कस्टम क्रेडेंशियल प्रोवाइडर का इस्तेमाल किया जा रहा है, तो पक्का करें कि क्रेडेंशियल को सही जगहों पर डाला गया हो. अपने प्लैटफ़ॉर्म की खास बातों के बारे में, SoC की सेवा देने वाली कंपनी से संपर्क करें.

सीडी बदलें

  1. 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. पिछले चरण में एक्सट्रैक्ट किए गए टेक्स्ट को उस फ़ाइल में कॉपी करें जिसका इस्तेमाल आपके बिल्ड में सीडी को तय करने के लिए किया गया था. पीएआई और डीएसी की तरह ही, इसे करने का तरीका इस पर निर्भर करता है कि आप किस प्लैटफ़ॉर्म पर डेवलप कर रहे हैं.

अगर आपने क्रेडेंशियल के उदाहरण इस्तेमाल किए हैं, तो हो सकता है कि आप src/credentials/examples/DeviceAttestationCredsExample.cpp में ExampleDACProvider::GetCertificationDeclaration में मौजूद kCdForAllExamples के कॉन्टेंट को बदलना चाहें:

    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 डिवाइस को Google Home platform पर शामिल करने के लिए, किसी Matter डिवाइस को जोड़ें में पहले से बताए गए तरीके अपनाए जा सकते हैं.

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-trust-store-path फ़्लैग के साथ अपनी पीएए फ़ाइल का पाथ पास करना अच्छा रहता है.

इस तरह, BLE का इस्तेमाल करके 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 किया जाता है.

अपने Google Nest Hub (2nd gen) से Thread क्रेडेंशियल हासिल करने के लिए, इन्हें चलाया जा सकता है:

$ 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