ম্যাটার ডিভাইস টেস্ট সার্টিফিকেট তৈরি করুন

বাধ্যতামূলক না হলেও, কিছু টেস্টিং সিনারিওতে নন-প্রোডাকশন ম্যাটার সার্টিফিকেট তৈরি করার প্রয়োজন হয়।

গুগল ইকোসিস্টেমের কিছু ফিচার, যার মধ্যে ডিভাইস ওটিএ সফটওয়্যার আপডেটও অন্তর্ভুক্ত , একটি টেস্ট ভিআইডি/পিআইডি ব্যবহার করে সম্পাদন করা যায় না

এই নির্দেশিকায় টেস্টিং-এ ব্যবহারের জন্য নন-প্রোডাকশন Matter সার্টিফিকেট কীভাবে তৈরি ও যাচাই করতে হয়, তা ব্যাখ্যা করা হয়েছে। সার্টিফিকেটগুলোর প্রকারভেদ হলো:

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

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

  1. একটি প্রত্যয়ন কী জোড়া
  2. একটি শংসাপত্র শৃঙ্খল

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

অ্যাটেস্টেশন কী পেয়ার তৈরি করার সময়েই সার্টিফিকেটগুলো স্বাক্ষরিত হয় এবং এক স্তর উপরের সার্টিফিকেট অথরিটির প্রাইভেট কী ব্যবহার করে স্বাক্ষরিত হয়, যা একটি আস্থার শৃঙ্খল (chain of trust) তৈরি করে। সুতরাং, একটি DAC সার্টিফিকেট একটি PAI কী দ্বারা স্বাক্ষরিত হয় এবং একটি PAI সার্টিফিকেট একটি PAA কী দ্বারা স্বাক্ষরিত হয়। এই শৃঙ্খলের শীর্ষে থাকায়, PAA সার্টিফিকেটগুলো স্ব-স্বাক্ষরিত (self-signed) হয়। এই আস্থার শৃঙ্খল একটি ফেডারেল PAA কাঠামো গঠন করে, যা ডিস্ট্রিবিউটেড কমপ্লায়েন্স লেজার (DCL) দ্বারা সিঙ্ক করা হয়।

অ্যাটেস্টেশন প্রক্রিয়া এবং সার্টিফিকেশন ডিক্লারেশন (সিডি) সম্পর্কে আরও তথ্য 'অতিরিক্ত অ্যাটেস্টেশন নথি ও বার্তা' এবং 'ম্যাটার স্পেসিফিকেশন'-এ পাওয়া যাবে।

ম্যাটার এসডিকে ইনস্টল করুন

এই নির্দেশাবলী ধরে নেয় যে আপনার কাছে 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 ব্যবহার করে সিডি তৈরি করুন। বর্তমানে কমিশনার শুধুমাত্র যাচাই করেন যে, ভিআইডি (VID) এবং পিআইডি (PID) ডিভাইস দ্বারা অন্যত্র প্রকাশিত ডেটার সাথে মেলে কিনা: যেমন বেসিক ইনফরমেশন ক্লাস্টার, ডিএসি এবং ডিএসি অরিজিন (যদি থাকে)। আপনি অন্যান্য ফিল্ডগুলো অপরিবর্তিত রাখতে পারেন:

    $ 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. সিডিটি যাচাই করুন। নিশ্চিত করুন যে এতে আপনার 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 ব্যবহার করেছি, যেটিতে VID তথ্য অন্তর্ভুক্ত নেই।

সিডি তৈরির আরও উদাহরণের জন্য credentials/test/gen-test-cds.sh দেখুন এবং PAA, PAI, ও DAC তৈরির আরও উদাহরণের জন্য credentials/test/gen-test-attestation-certs.sh দেখুন।

সার্টিফিকেটগুলো প্রতিস্থাপন করুন

PAA এবং PAI প্রতিস্থাপন করুন

  1. নিম্নলিখিত সহায়ক স্ক্রিপ্টটি চালান, যা CHIP Certificate Tool ( 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. আপনি যদি এখনও ফ্যাক্টরি ডেটা ব্যবহার না করে থাকেন, তাহলে আপনার 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 ব্যবহার করে আপনার সিডি ফাইলের বিষয়বস্তুর একটি টেক্সট রূপ বের করুন:

      $ 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-এর মতোই, আপনি কোন প্ল্যাটফর্মে ডেভেলপ করছেন তার উপর নির্ভর করে এই কাজটি কীভাবে করবেন।

আপনি যদি ক্রেডেনশিয়াল উদাহরণগুলো ব্যবহার করেন, তাহলে সম্ভবত 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 ডকুমেন্টেশন বা সমর্থিত ডিভাইসগুলো দেখুন।

ডিভাইসটি চালু করুন

এখন আপনি 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