Matter ডিভাইস টেস্ট সার্টিফিকেট তৈরি করা

প্রয়োজন না হলেও, কিছু পরীক্ষার ক্ষেত্রে প্রোডাকশন নয় এমন Matter সার্টিফিকেট তৈরি করতে হয়।

Google-এর ইকোসিস্টেমের কিছু ফিচার, যার মধ্যে ডিভাইস OTA সফ্টওয়্যার আপডেট টেস্ট VID/PID ব্যবহার করে পারফর্ম করা যাবে না।

এই গাইড থেকে জানা যায় যে কীভাবে পরীক্ষার জন্য প্রোডাকশন নয় এমন Matter সার্টিফিকেট তৈরি ও যাচাই করতে হয়। সার্টিফিকেটের প্রকারভেদ:

  1. সার্টিফিকেশন ঘোষণা (CD)
  2. প্রোডাক্ট অ্যাটেস্টেশন ইন্টারমিডিয়েট সার্টিফিকেট (PAI)
  3. ডিভাইস অ্যাটেস্টেশন সার্টিফিকেট (DAC)

কমিশনিং প্রসেস চলাকালীন, একটি Matter-সার্টিফায়েড ডিভাইসকে নিজেকে অ্যাটেস্ট করতে হবে, অর্থাৎ, প্রমাণ করতে হবে যে এটি একটি আসল Matter-সার্টিফায়েড প্রোডাক্ট। Matter ডিভাইসের অ্যাটেস্টেশনের জন্য ব্যবহৃত ক্রেডেনশিয়াল এগুলি নিয়ে গঠিত:

  1. অ্যাটেস্টেশন কী পেয়ার
  2. সার্টিফিকেট চেইন

ডিভাইস অ্যাটেস্টেশন সার্টিফিকেট (DAC) হল সার্টিফিকেট চেনের প্রথম লিঙ্ক এবং এটি প্রোডাক্ট অ্যাটেস্টেশন ইন্টারমিডিয়েট সার্টিফিকেট (PAI) দ্বারা যাচাই করা হয়, যা আবার প্রোডাক্ট অ্যাটেস্টেশন অথরিটি (PAA) দ্বারা যাচাই করা হয়।

অ্যাটাস্টেশন কী পেয়ার তৈরি হওয়ার একই সময়ে সার্টিফিকেট সাইন করা হয় এবং এক লেভেল উপরে থাকা সার্টিফিকেট অথরিটির প্রাইভেট কী ব্যবহার করে সাইন করা হয়। এর ফলে একটি চেন অফ ট্রাস্ট তৈরি হয়। তাই, PAI কী দিয়ে DAC সার্টিফিকেট এবং PAA কী দিয়ে PAI সার্টিফিকেট সাইন করা হয়। চেনের সবচেয়ে উপরে থাকার কারণে, PAA সার্টিফিকেট হল সেল্ফ-সাইন করা। এই বিশ্বাসযোগ্যতার চেইন একটি ফেডারেটেড PAA স্ট্রাকচার তৈরি করে, যা ডিস্ট্রিবিউটেড কমপ্লায়েন্স লেজার (DCL) দ্বারা সিঙ্ক করা হয়।

অ্যাটেস্টেশন প্রসেস ও সার্টিফিকেশন ডিক্লারেশন (CD) সম্পর্কে আরও তথ্য অতিরিক্ত অ্যাটেস্টেশন ডকুমেন্ট ও মেসেজ ও Matter স্পেসিফিকেশন থেকে পাওয়া যেতে পারে।

Matter SDK ইনস্টল করা

এইসব নির্দেশাবলী ধরে নেয় যে আপনার কাছে Matter SDK-এর একটি কার্যকরী ইনস্টলেশন আছে। আরও তথ্যের জন্য 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
      

আপনার সার্টিফিকেট মিন্ট করা

আপনার কমান্ড আর্গুমেন্ট এডিট করার সময় ক্লারিক্যাল সমস্যা হওয়ার সম্ভাবনা কমাতে, এনভায়রনমেন্ট ভেরিয়েবল হিসেবে আপনার কাস্টম VID/PID এক্সপোর্ট করুন:

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

CD তৈরি করা

  1. chip-cert ব্যবহার করে CD তৈরি করুন। বর্তমানে কমিশনার শুধুমাত্র এটি যাচাই করেন যে 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. CD যাচাই করুন। এতে আপনার 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 তৈরি করা

এই উদাহরণে, আমরা Matter-এর নিজস্ব টেস্ট প্রোডাক্ট অ্যাটেস্টেশন অথরিটি (PAA) সার্টিফিকেট ও সাইনিং কী Chip-Test-PAA-NoVID আমাদের রুট সার্টিফিকেট হিসেবে ব্যবহার করব। আমরা এটিকে রুট CA হিসেবে ব্যবহার করে আমাদের নিজস্ব PAI ও DAC তৈরি করব।

  1. PAA ব্যবহার করে PAI তৈরি করুন। আপনি চাইলে PAI-তে PID তথ্য অন্তর্ভুক্ত করতে পারেন, তবে এটি বাদ দিলে আপনি পরীক্ষার জন্য আরও বেশি ফ্লেক্সিবিলিটি পাবেন। অতিরিক্ত 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. PAI ব্যবহার করে 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, 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. নিচের হেল্পার স্ক্রিপ্টটি চালান, যেটি আপনার সার্টিফিকেটের C-স্টাইল অ্যারে তৈরি করতে CHIP সার্টিফিকেট টুল (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/\ | 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. আপনি এখনও ফ্যাক্টরি ডেটা ব্যবহার না করলে, আপনার 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. আপনি ফ্যাক্টরি ডেটা বা কাস্টম ক্রেডেনশিয়াল প্রদানকারী ব্যবহার করলে, উপযুক্ত জায়গায় ক্রেডেনশিয়াল ইনসার্ট করতে ভুলবেন না। আপনার প্ল্যাটফর্মের স্পেসিফিকেশন সম্পর্কে জানতে 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 ডিভাইস পেয়ার করুন লিঙ্কে গিয়ে 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 ফ্ল্যাগ সহ আপনার PAA ফাইলের পাথ পাস করা একটি ভাল প্র্যাক্টিস।

এই কারণে, 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।

আপনার 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