Testzertifikate für Matter-Geräte erstellen

Obwohl dies keine Voraussetzung ist, ist es für einige Testszenarien erforderlich, Matter-Zertifikate für Nicht-Produktionsumgebungen zu erstellen.

Einige Funktionen des Google-Ökosystems, einschließlich OTA-Softwareupdates für Geräte, können nicht mit einer Test-VID/PID ausgeführt werden.

In diesem Leitfaden wird erläutert, wie Sie Matter-Zertifikate für die Verwendung in Tests erstellen und bestätigen. Es gibt folgende Arten von Zertifikaten:

  1. Die Zertifizierungserklärung (CD)
  2. Das Zwischenzertifikat für die Produktbestätigung (PAI)
  3. Das Geräteattestierungszertifikat (Device Attestation Certificate, DAC)

Während der Inbetriebnahme muss sich ein Matter-zertifiziertes Gerät selbst authentifizieren, d. h. nachweisen, dass es sich um ein echtes Matter-zertifiziertes Produkt handelt. Die Anmeldedaten, die von Matter-Geräten für die Attestierung verwendet werden, bestehen aus:

  1. Ein Attestierungsschlüsselpaar
  2. Eine Zertifikatskette

Das Geräteattestierungszertifikat (Device Attestation Certificate, DAC) ist das erste Glied der Zertifikatskette und wird vom Zwischenzertifikat für die Produktattestierung (Product Attestation Intermediate Certificate, PAI) validiert, das wiederum von der Zertifizierungsstelle für die Produktattestierung (Product Attestation Authority, PAA) validiert wird.

Zertifikate werden gleichzeitig mit der Generierung des Attestierungsschlüsselpaars signiert. Die Signierung erfolgt mit dem privaten Schlüssel der Zertifizierungsstelle eine Ebene höher, wodurch eine Vertrauenskette entsteht. Ein DAC-Zertifikat wird also mit einem PAI-Schlüssel signiert und ein PAI-Zertifikat mit einem PAA-Schlüssel. Da PAA-Zertifikate das obere Ende der Kette bilden, sind sie selbst signiert. Diese Vertrauenskette bildet eine föderierte PAA-Struktur, die vom Distributed Compliance Ledger (DCL) synchronisiert wird.

Weitere Informationen zum Attestierungsprozess und zu Zertifizierungsdeklarationen (Certification Declarations, CD) finden Sie unter Zusätzliche Attestierungsdokumente und ‑mitteilungen und in der Matter-Spezifikation.

Matter SDK installieren

Bei dieser Anleitung wird davon ausgegangen, dass Sie eine funktionierende Installation des Matter SDK haben. Weitere Informationen finden Sie in der Dokumentation auf GitHub oder unter Erste Schritte mit Matter.

Installieren Sie das Dienstprogramm „hexdump“ xxd, falls Sie es noch nicht haben. Dieses Tool ist nützlich, um die Anmeldedaten im C-Stil zu drucken:

sudo apt-get install xxd

Build chip-cert

  1. Achten Sie darauf, dass Sie mit einer aktuellen Version des SDK arbeiten. Diese Verfahren wurden mit dem Github-SHA 0b17bce8 im Branch v1.0-branch getestet:

    $ cd connectedhomeip
    $ git checkout v1.0-branch
    $ git pull
    
  2. Erstellen Sie chip-cert, das Tool für mehrere Vorgänge für Anmeldedaten für Matter-Geräte:

    1. Konfigurieren Sie den Build:

      $ cd src/credentials
      $ source ../../scripts/activate.sh
      $ gn gen out
      

      Beispielausgabe gn:

      Done. Made 5774 targets from 289 files in 658ms
      
    2. Führen Sie den Build aus:

      $ ninja -C out
      

      Beispielausgabe ninja:

      ninja: Entering directory `out'
      [2000/2000] stamp obj/default.stamp
      

Zertifikate erstellen

Exportieren Sie Ihre benutzerdefinierte VID/PID als Umgebungsvariablen, um das Risiko von Tippfehlern beim Bearbeiten Ihrer Befehlsargumente zu verringern:

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

CD erstellen

  1. Generieren Sie die CD mit chip-cert. Derzeit prüft der Commissioner nur, ob VID und PID mit den Daten übereinstimmen, die an anderer Stelle vom Gerät bereitgestellt werden: dem Basic Information Cluster, DAC und DAC-Ursprung (falls vorhanden). Die anderen Felder können Sie unverändert lassen:

    $ 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. Prüfen Sie die CD. Achten Sie darauf, dass sie Ihre VID/PID (im Dezimalformat) enthält:

    $ src/credentials/out/chip-cert print-cd credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
    

    Beispielausgabe:

    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 und DAC generieren

In diesem Beispiel verwenden wir das eigene Testzertifikat der PAA (Product Attestation Authority) von Matter und den Signaturschlüssel Chip-Test-PAA-NoVID als Root-Zertifikat. Wir verwenden sie als Stamm-CA, um unsere eigene PAI und DAC zu generieren.

  1. Generieren Sie die PAI mit der PAA. Sie können die PID-Informationen optional in die PAI aufnehmen. Wenn Sie sie weglassen, haben Sie jedoch mehr Flexibilität beim Testen. Wenn Sie DACs für zusätzliche PIDs benötigen, können Sie nur den Schritt zur DAC-Generierung ausführen:

    $ 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. Generieren Sie den DAC mit der 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
    
  3. Prüfen Sie die DAC-, PAI- und PAA-Kette. Wenn in der Ausgabe keine Fehler angezeigt werden, bedeutet das, dass die Zertifikatsattestierungskette erfolgreich überprüft wurde:

    $ 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. Sie können Ihre Schlüssel mit openssl prüfen:

    $ openssl ec -noout -text -in \
      credentials/test/attestation/test-DAC-${VID}-${PID}-key.pem
    

    Beispielausgabe:

    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. Sie können auch openssl verwenden, um die generierten Zertifikate zu prüfen:

    $ openssl x509 -noout -text -in \
      credentials/test/attestation/test-DAC-${VID}-${PID}-cert.pem
    

    Beispielausgabe:

    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

Ein ähnlicher Prozess könnte zum Generieren einer selbst signierten PAA verwendet werden, dies ist jedoch nicht erforderlich.

Stattdessen haben wir ein vorhandenes selbstsigniertes Entwickler-PAA verwendet, das keine VID-Informationen enthält.

Weitere Beispiele zum Generieren eines CD finden Sie unter credentials/test/gen-test-cds.sh. Weitere Beispiele zum Generieren eines PAA, PAI und DAC finden Sie unter credentials/test/gen-test-attestation-certs.sh.

Zertifikate ersetzen

PAA und PAI ersetzen

  1. Führen Sie das folgende Hilfsskript aus, das das CHIP Certificate Tool (chip-cert) verwendet, um C-Arrays Ihrer Zertifikate zu generieren.

Helper-Skript für einbettbare Zertifikate herunterladen

#!/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. Kopieren Sie den Inhalt der PAI- und DAC-Ausgabe in Ihre Implementierung von DeviceAttestationCredentialsProvider::GetProductAttestationIntermediateCert.

    Auf Produktionsgeräten befinden sich die PAI und die DAC in den Werksdaten, während die CD in die Firmware eingebettet ist.

    1. Wenn Sie noch keine Factory Data verwenden, sollten Sie Ihre PAI in src/credentials/examples/ExampleDACs.cpp platzieren. Hängen Sie in diesem Fall den generierten Code an Ihre ExampleDACs.cpp-Datei an:

      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. Wenn Sie Werksdaten oder einen benutzerdefinierten Anmeldedatenanbieter verwenden, müssen Sie die Anmeldedaten an den entsprechenden Stellen einfügen. Wenden Sie sich an Ihren SoC-Anbieter, um Informationen zu Ihrer Plattform zu erhalten.

CD ersetzen

  1. Extrahieren Sie mit xxd eine Textdarstellung des Inhalts Ihrer CD-Datei:

      $ xxd -i credentials/test/certification-declaration/Chip-Test-CD-${VID}-${PID}.der
    

    Beispielausgabe:

      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. Kopieren Sie den Text, den Sie im vorherigen Schritt extrahiert haben, in die Datei, mit der die CD in Ihrem Build definiert wird. Wie Sie das tun, hängt wie bei PAI und DAC davon ab, auf welcher Plattform Sie entwickeln.

Wenn Sie die Beispiele für Anmeldedaten verwenden, sollten Sie wahrscheinlich den Inhalt von kCdForAllExamples in ExampleDACProvider::GetCertificationDeclaration und in src/credentials/examples/DeviceAttestationCredsExample.cpp ersetzen:

    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
        };

Ziel erstellen

Erstellen Sie Ihr Zielgerät und flashen Sie es mit Ihren neu erstellten Anmeldedaten. Dieser Abschnitt ist plattformabhängig. Weitere Informationen finden Sie in der Dokumentation Ihres SoC oder unter Unterstützte Geräte.

Gerät in Betrieb nehmen

Du kannst jetzt die Schritte unter Matter-Gerät koppeln ausführen, um dein Matter-Gerät auf dem Google Home platform in Betrieb zu nehmen.

Fehler mit chip-tool beheben

chip-tool kann ein nützliches Tool sein, um zu prüfen, ob Ihr Gerät die richtigen Zertifikate sendet. So erstellen Sie es:

$ 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 ../..

Wenn Sie zusätzliche Logs aktivieren möchten, müssen Sie beim Ausführen von chip-tool das Flag --trace_decode 1 übergeben. Außerdem empfiehlt es sich, den Pfad Ihrer PAA-Datei mit dem Flag --paa-trust-store-path zu übergeben.

Um ein Thread-Gerät mit BLE in Betrieb zu nehmen, können Sie Folgendes ausführen:

```
$ 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
```

Bei Testgeräten ist <PAIRING CODE> 20202021 und <DISCRIMINATOR> 3840.

So rufen Sie Ihre Thread-Anmeldedaten von Ihrem Google Nest Hub (2nd gen) ab:

$ adb connect border_router_ip_address
$ adb -e shell ot-ctl dataset active -x
$ adb disconnect

Zum Inbetriebnehmen eines WLAN-Geräts können Sie die Option ble-wifi verwenden:

$ examples/chip-tool/out/debug/chip-tool pairing ble-wifi 1 "SSID" SSID_password pairing_code discriminator