diff --git a/lib/libesp32/berry/src/be_solidifylib.c b/lib/libesp32/berry/src/be_solidifylib.c index 8f95f47b4..32bb31aca 100644 --- a/lib/libesp32/berry/src/be_solidifylib.c +++ b/lib/libesp32/berry/src/be_solidifylib.c @@ -275,7 +275,9 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, char * hex_out = be_pushbuffer(vm, hex_len); be_bytes_tohex(hex_out, hex_len, bufptr, len); - logfmt("be_const_bytes_instance(%s)", hex_out); + lognofmt("be_const_bytes_instance("); + lognofmt(hex_out); + lognofmt(")"); be_pop(vm, 1); } else if (ins->super || ins->sub) { be_raise(vm, "internal_error", "instance must not have a super/sub class"); diff --git a/lib/libesp32/berry_matter/generate/be_matter_certs.h b/lib/libesp32/berry_matter/generate/be_matter_certs.h deleted file mode 100644 index e3205013b..000000000 --- a/lib/libesp32/berry_matter/generate/be_matter_certs.h +++ /dev/null @@ -1,351 +0,0 @@ -// Certificates and credentials from demo - -#include -#include - -const uint8_t kDevelopmentPAI_Cert_FFF1[463] = { - 0x30, 0x82, 0x01, 0xcb, 0x30, 0x82, 0x01, 0x71, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x56, 0xad, 0x82, 0x22, 0xad, 0x94, - 0x5b, 0x64, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x30, 0x31, 0x18, 0x30, 0x16, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0f, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x50, 0x41, 0x41, - 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0xa2, 0x7c, 0x02, 0x01, 0x0c, 0x04, 0x46, 0x46, 0x46, - 0x31, 0x30, 0x20, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x32, 0x30, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0x0f, 0x39, - 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3d, 0x31, 0x25, 0x30, 0x23, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x50, 0x41, 0x49, 0x20, - 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x20, 0x6e, 0x6f, 0x20, 0x50, 0x49, 0x44, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x2b, 0x06, - 0x01, 0x04, 0x01, 0x82, 0xa2, 0x7c, 0x02, 0x01, 0x0c, 0x04, 0x46, 0x46, 0x46, 0x31, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, - 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x41, - 0x9a, 0x93, 0x15, 0xc2, 0x17, 0x3e, 0x0c, 0x8c, 0x87, 0x6d, 0x03, 0xcc, 0xfc, 0x94, 0x48, 0x52, 0x64, 0x7f, 0x7f, 0xec, 0x5e, - 0x50, 0x82, 0xf4, 0x05, 0x99, 0x28, 0xec, 0xa8, 0x94, 0xc5, 0x94, 0x15, 0x13, 0x09, 0xac, 0x63, 0x1e, 0x4c, 0xb0, 0x33, 0x92, - 0xaf, 0x68, 0x4b, 0x0b, 0xaf, 0xb7, 0xe6, 0x5b, 0x3b, 0x81, 0x62, 0xc2, 0xf5, 0x2b, 0xf9, 0x31, 0xb8, 0xe7, 0x7a, 0xaa, 0x82, - 0xa3, 0x66, 0x30, 0x64, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, - 0x02, 0x01, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, - 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x63, 0x54, 0x0e, 0x47, 0xf6, 0x4b, 0x1c, 0x38, 0xd1, 0x38, 0x84, 0xa4, - 0x62, 0xd1, 0x6c, 0x19, 0x5d, 0x8f, 0xfb, 0x3c, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, - 0x6a, 0xfd, 0x22, 0x77, 0x1f, 0x51, 0x1f, 0xec, 0xbf, 0x16, 0x41, 0x97, 0x67, 0x10, 0xdc, 0xdc, 0x31, 0xa1, 0x71, 0x7e, 0x30, - 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xb2, 0xef, - 0x27, 0xf4, 0x9a, 0xe9, 0xb5, 0x0f, 0xb9, 0x1e, 0xea, 0xc9, 0x4c, 0x4d, 0x0b, 0xdb, 0xb8, 0xd7, 0x92, 0x9c, 0x6c, 0xb8, 0x8f, - 0xac, 0xe5, 0x29, 0x36, 0x8d, 0x12, 0x05, 0x4c, 0x0c, 0x02, 0x20, 0x65, 0x5d, 0xc9, 0x2b, 0x86, 0xbd, 0x90, 0x98, 0x82, 0xa6, - 0xc6, 0x21, 0x77, 0xb8, 0x25, 0xd7, 0xd0, 0x5e, 0xdb, 0xe7, 0xc2, 0x2f, 0x9f, 0xea, 0x71, 0x22, 0x0e, 0x7e, 0xa7, 0x03, 0xf8, - 0x91, -}; - -const uint8_t kDevelopmentPAI_PublicKey_FFF1[65] = { - 0x04, 0x41, 0x9a, 0x93, 0x15, 0xc2, 0x17, 0x3e, 0x0c, 0x8c, 0x87, 0x6d, 0x03, 0xcc, 0xfc, 0x94, 0x48, - 0x52, 0x64, 0x7f, 0x7f, 0xec, 0x5e, 0x50, 0x82, 0xf4, 0x05, 0x99, 0x28, 0xec, 0xa8, 0x94, 0xc5, 0x94, - 0x15, 0x13, 0x09, 0xac, 0x63, 0x1e, 0x4c, 0xb0, 0x33, 0x92, 0xaf, 0x68, 0x4b, 0x0b, 0xaf, 0xb7, 0xe6, - 0x5b, 0x3b, 0x81, 0x62, 0xc2, 0xf5, 0x2b, 0xf9, 0x31, 0xb8, 0xe7, 0x7a, 0xaa, 0x82, -}; -const uint8_t kDevelopmentPAI_PrivateKey_FFF1[32] = { - 0xc1, 0xab, 0x5f, 0xe2, 0x84, 0xb4, 0xc1, 0x89, 0x40, 0xa5, 0x31, 0x61, 0xf8, 0x06, 0x94, 0x40, - 0x50, 0xa1, 0x69, 0x7b, 0x71, 0x76, 0x1d, 0x38, 0x53, 0x37, 0xa8, 0xa3, 0xcd, 0x09, 0x5c, 0x34, -}; - -/* -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 56:ad:82:22:ad:94:5b:64 - Signature Algorithm: ecdsa-with-SHA256 - Issuer: CN = Matter Test PAA, 1.3.6.1.4.1.37244.2.1 = FFF1 - Validity - Not Before: Feb 5 00:00:00 2022 GMT - Not After : Dec 31 23:59:59 9999 GMT - Subject: CN = Matter Dev PAI 0xFFF1 no PID, 1.3.6.1.4.1.37244.2.1 = FFF1 - Subject Public Key Info: - Public Key Algorithm: id-ecPublicKey - Public-Key: (256 bit) - pub: - 04:41:9a:93:15:c2:17:3e:0c:8c:87:6d:03:cc:fc: - 94:48:52:64:7f:7f:ec:5e:50:82:f4:05:99:28:ec: - a8:94:c5:94:15:13:09:ac:63:1e:4c:b0:33:92:af: - 68:4b:0b:af:b7:e6:5b:3b:81:62:c2:f5:2b:f9:31: - b8:e7:7a:aa:82 - ASN1 OID: prime256v1 - NIST CURVE: P-256 - X509v3 extensions: - X509v3 Basic Constraints: critical - CA:TRUE, pathlen:0 - X509v3 Key Usage: critical - Certificate Sign, CRL Sign - X509v3 Subject Key Identifier: - 63:54:0E:47:F6:4B:1C:38:D1:38:84:A4:62:D1:6C:19:5D:8F:FB:3C - X509v3 Authority Key Identifier: - keyid:6A:FD:22:77:1F:51:1F:EC:BF:16:41:97:67:10:DC:DC:31:A1:71:7E - - Signature Algorithm: ecdsa-with-SHA256 - 30:45:02:21:00:b2:ef:27:f4:9a:e9:b5:0f:b9:1e:ea:c9:4c: - 4d:0b:db:b8:d7:92:9c:6c:b8:8f:ac:e5:29:36:8d:12:05:4c: - 0c:02:20:65:5d:c9:2b:86:bd:90:98:82:a6:c6:21:77:b8:25: - d7:d0:5e:db:e7:c2:2f:9f:ea:71:22:0e:7e:a7:03:f8:91 -*/ - -/* -ASN.1 - -SEQUENCE (3 elem) - SEQUENCE (8 elem) - [0] (1 elem) - INTEGER 2 - INTEGER (63 bit) 6245791343685426020 - SEQUENCE (1 elem) - OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) - SEQUENCE (2 elem) - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) - UTF8String Matter Test PAA - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 - UTF8String FFF1 - SEQUENCE (2 elem) - UTCTime 2022-02-05 00:00:00 UTC - GeneralizedTime 9999-12-31 23:59:59 UTC - SEQUENCE (2 elem) - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) - UTF8String Matter Dev PAI 0xFFF1 no PID - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 - UTF8String FFF1 - SEQUENCE (2 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.2.840.10045.2.1 ecPublicKey (ANSI X9.62 public key type) - OBJECT IDENTIFIER 1.2.840.10045.3.1.7 prime256v1 (ANSI X9.62 named elliptic curve) - BIT STRING (520 bit) 0000010001000001100110101001001100010101110000100001011100111110000011… - [3] (1 elem) - SEQUENCE (4 elem) - SEQUENCE (3 elem) - OBJECT IDENTIFIER 2.5.29.19 basicConstraints (X.509 extension) - BOOLEAN true - OCTET STRING (8 byte) 30060101FF020100 - SEQUENCE (2 elem) - BOOLEAN true - INTEGER 0 - SEQUENCE (3 elem) - OBJECT IDENTIFIER 2.5.29.15 keyUsage (X.509 extension) - BOOLEAN true - OCTET STRING (4 byte) 03020106 - BIT STRING (7 bit) 0000011 - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.29.14 subjectKeyIdentifier (X.509 extension) - OCTET STRING (22 byte) 041463540E47F64B1C38D13884A462D16C195D8FFB3C - OCTET STRING (20 byte) 63540E47F64B1C38D13884A462D16C195D8FFB3C - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.29.35 authorityKeyIdentifier (X.509 extension) - OCTET STRING (24 byte) 301680146AFD22771F511FECBF1641976710DCDC31A1717E - SEQUENCE (1 elem) - [0] (20 byte) 6AFD22771F511FECBF1641976710DCDC31A1717E - SEQUENCE (1 elem) -Offset: 377 -Length: 2+10 -(constructed) -Value: -(1 elem) - OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) - BIT STRING (568 bit) 0011000001000101000000100010000100000000101100101110111100100111111101… - SEQUENCE (2 elem) - INTEGER (256 bit) 8093423925895219711386938045632983408737245943652937189339272815747009… - INTEGER (255 bit) 4584930290841753608947726397552150715869097421278636946745345682393985… -*/ - -const uint8_t kDevelopmentDAC_Cert_FFF1_8000[493] = { - 0x30, 0x82, 0x01, 0xe9, 0x30, 0x82, 0x01, 0x8e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x08, 0x23, 0x8a, 0x64, 0x7b, 0xbc, 0x4c, - 0x30, 0xdd, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x3d, 0x31, 0x25, 0x30, 0x23, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1c, 0x4d, 0x61, 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x50, 0x41, 0x49, 0x20, - 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x20, 0x6e, 0x6f, 0x20, 0x50, 0x49, 0x44, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x2b, 0x06, - 0x01, 0x04, 0x01, 0x82, 0xa2, 0x7c, 0x02, 0x01, 0x0c, 0x04, 0x46, 0x46, 0x46, 0x31, 0x30, 0x20, 0x17, 0x0d, 0x32, 0x32, 0x30, - 0x32, 0x30, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x18, 0x0f, 0x39, 0x39, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, - 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x1c, 0x4d, 0x61, - 0x74, 0x74, 0x65, 0x72, 0x20, 0x44, 0x65, 0x76, 0x20, 0x44, 0x41, 0x43, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x31, 0x2f, 0x30, - 0x78, 0x38, 0x30, 0x30, 0x30, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0xa2, 0x7c, 0x02, 0x01, - 0x0c, 0x04, 0x46, 0x46, 0x46, 0x31, 0x31, 0x14, 0x30, 0x12, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0xa2, 0x7c, 0x02, - 0x02, 0x0c, 0x04, 0x38, 0x30, 0x30, 0x30, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, - 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x62, 0xdb, 0x16, 0xba, 0xde, 0xa3, 0x26, 0xa6, - 0xdb, 0x84, 0x81, 0x4a, 0x06, 0x3f, 0xc6, 0xc7, 0xe9, 0xe2, 0xb1, 0x01, 0xb7, 0x21, 0x64, 0x8e, 0xba, 0x4e, 0x5a, 0xc8, 0x40, - 0xf5, 0xda, 0x30, 0x1e, 0xe6, 0x18, 0x12, 0x4e, 0xb4, 0x18, 0x0e, 0x2f, 0xc3, 0xa2, 0x04, 0x7a, 0x56, 0x4b, 0xa9, 0xbc, 0xfa, - 0x0b, 0xf7, 0x1f, 0x60, 0xce, 0x89, 0x30, 0xf1, 0xe7, 0xf6, 0x6e, 0xc8, 0xd7, 0x28, 0xa3, 0x60, 0x30, 0x5e, 0x30, 0x0c, 0x06, - 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, - 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xbc, 0xf7, 0xb0, 0x07, - 0x49, 0x70, 0x63, 0x60, 0x6a, 0x26, 0xbe, 0x4e, 0x08, 0x7c, 0x59, 0x56, 0x87, 0x74, 0x5a, 0x5a, 0x30, 0x1f, 0x06, 0x03, 0x55, - 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x63, 0x54, 0x0e, 0x47, 0xf6, 0x4b, 0x1c, 0x38, 0xd1, 0x38, 0x84, 0xa4, 0x62, - 0xd1, 0x6c, 0x19, 0x5d, 0x8f, 0xfb, 0x3c, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x49, - 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0x97, 0x97, 0x11, 0xec, 0x9e, 0x76, 0x18, 0xce, 0x41, 0x80, 0x11, 0x32, 0xc2, 0x50, 0xdb, - 0x70, 0x76, 0x74, 0x63, 0x0c, 0xd5, 0x8c, 0x12, 0xc6, 0xe2, 0x31, 0x5f, 0x08, 0xd0, 0x1e, 0xe1, 0x78, 0x02, 0x21, 0x00, 0xec, - 0xfc, 0x13, 0x06, 0xbd, 0x2a, 0x13, 0x3d, 0x12, 0x2a, 0x27, 0x86, 0x10, 0xea, 0x3d, 0xca, 0x47, 0xf0, 0x5c, 0x7a, 0x8b, 0x80, - 0x5f, 0xa7, 0x1c, 0x6f, 0xf4, 0x15, 0x38, 0xa8, 0x64, 0xc8, -}; - -/* -Decoded cert: openssl x509 -inform der -in DAC_Cert_FFF1_8000.der -text -noout - -Certificate: - Data: - Version: 3 (0x2) - Serial Number: - 23:8a:64:7b:bc:4c:30:dd - Signature Algorithm: ecdsa-with-SHA256 - Issuer: CN = Matter Dev PAI 0xFFF1 no PID, 1.3.6.1.4.1.37244.2.1 = FFF1 - Validity - Not Before: Feb 5 00:00:00 2022 GMT - Not After : Dec 31 23:59:59 9999 GMT - Subject: CN = Matter Dev DAC 0xFFF1/0x8000, 1.3.6.1.4.1.37244.2.1 = FFF1, 1.3.6.1.4.1.37244.2.2 = 8000 - Subject Public Key Info: - Public Key Algorithm: id-ecPublicKey - Public-Key: (256 bit) - pub: - 04:62:db:16:ba:de:a3:26:a6:db:84:81:4a:06:3f: - c6:c7:e9:e2:b1:01:b7:21:64:8e:ba:4e:5a:c8:40: - f5:da:30:1e:e6:18:12:4e:b4:18:0e:2f:c3:a2:04: - 7a:56:4b:a9:bc:fa:0b:f7:1f:60:ce:89:30:f1:e7: - f6:6e:c8:d7: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: - BC:F7:B0:07:49:70:63:60:6A:26:BE:4E:08:7C:59:56:87:74:5A:5A - X509v3 Authority Key Identifier: - keyid:63:54:0E:47:F6:4B:1C:38:D1:38:84:A4:62:D1:6C:19:5D:8F:FB:3C - - Signature Algorithm: ecdsa-with-SHA256 - 30:46:02:21:00:97:97:11:ec:9e:76:18:ce:41:80:11:32:c2: - 50:db:70:76:74:63:0c:d5:8c:12:c6:e2:31:5f:08:d0:1e:e1: - 78:02:21:00:ec:fc:13:06:bd:2a:13:3d:12:2a:27:86:10:ea: - 3d:ca:47:f0:5c:7a:8b:80:5f:a7:1c:6f:f4:15:38:a8:64:c8 - -*/ - -/* Decoded ASN.1 - -SEQUENCE (3 elem) - SEQUENCE (8 elem) - [0] (1 elem) - INTEGER 2 - INTEGER (62 bit) 2560969820716413149 - SEQUENCE (1 elem) - OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) - SEQUENCE (2 elem) - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) - UTF8String Matter Dev PAI 0xFFF1 no PID - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 - UTF8String FFF1 - SEQUENCE (2 elem) - UTCTime 2022-02-05 00:00:00 UTC - GeneralizedTime 9999-12-31 23:59:59 UTC - SEQUENCE (3 elem) - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) - UTF8String Matter Dev DAC 0xFFF1/0x8000 - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 - UTF8String FFF1 - SET (1 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.2 - UTF8String 8000 - SEQUENCE (2 elem) - SEQUENCE (2 elem) - OBJECT IDENTIFIER 1.2.840.10045.2.1 ecPublicKey (ANSI X9.62 public key type) - OBJECT IDENTIFIER 1.2.840.10045.3.1.7 prime256v1 (ANSI X9.62 named elliptic curve) - BIT STRING (520 bit) 0000010001100010110110110001011010111010110111101010001100100110101001… - [3] (1 elem) - SEQUENCE (4 elem) - SEQUENCE (3 elem) - OBJECT IDENTIFIER 2.5.29.19 basicConstraints (X.509 extension) - BOOLEAN true - OCTET STRING (2 byte) 3000 - SEQUENCE (0 elem) - SEQUENCE (3 elem) - OBJECT IDENTIFIER 2.5.29.15 keyUsage (X.509 extension) - BOOLEAN true - OCTET STRING (4 byte) 03020780 - BIT STRING (1 bit) 1 - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.29.14 subjectKeyIdentifier (X.509 extension) - OCTET STRING (22 byte) 0414BCF7B007497063606A26BE4E087C595687745A5A - OCTET STRING (20 byte) BCF7B007497063606A26BE4E087C595687745A5A - SEQUENCE (2 elem) - OBJECT IDENTIFIER 2.5.29.35 authorityKeyIdentifier (X.509 extension) - OCTET STRING (24 byte) 3016801463540E47F64B1C38D13884A462D16C195D8FFB3C - SEQUENCE (1 elem) - [0] (20 byte) 63540E47F64B1C38D13884A462D16C195D8FFB3C - SEQUENCE (1 elem) - OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) - BIT STRING (576 bit) 0011000001000110000000100010000100000000100101111001011100010001111011… - SEQUENCE (2 elem) - INTEGER (256 bit) 6856615775177799389454949658700013485116050405241433595512074226650010… - INTEGER (256 bit) 1071912090408366213691559168363210336766445086127676108978024779974417… -*/ - -const uint8_t kDevelopmentDAC_PublicKey_FFF1_8000[65] = { - 0x04, 0x62, 0xdb, 0x16, 0xba, 0xde, 0xa3, 0x26, 0xa6, 0xdb, 0x84, 0x81, 0x4a, 0x06, 0x3f, 0xc6, 0xc7, - 0xe9, 0xe2, 0xb1, 0x01, 0xb7, 0x21, 0x64, 0x8e, 0xba, 0x4e, 0x5a, 0xc8, 0x40, 0xf5, 0xda, 0x30, 0x1e, - 0xe6, 0x18, 0x12, 0x4e, 0xb4, 0x18, 0x0e, 0x2f, 0xc3, 0xa2, 0x04, 0x7a, 0x56, 0x4b, 0xa9, 0xbc, 0xfa, - 0x0b, 0xf7, 0x1f, 0x60, 0xce, 0x89, 0x30, 0xf1, 0xe7, 0xf6, 0x6e, 0xc8, 0xd7, 0x28, -}; - -const uint8_t kDevelopmentDAC_PrivateKey_FFF1_8000[32] = { - 0xcc, 0xcf, 0x9d, 0xc7, 0x05, 0x0e, 0xf5, 0xd9, 0x0b, 0xe4, 0x57, 0x07, 0xb9, 0x0e, 0x1f, 0x87, - 0x5d, 0x59, 0xbe, 0x1f, 0xa9, 0x42, 0xe8, 0xed, 0x2e, 0x42, 0x72, 0x03, 0xf6, 0xc2, 0xee, 0x3d, -}; - -/* CertificationDeclaration */ -//-> format_version = 1 -//-> vendor_id = 0xFFF1 -//-> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, -// 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, -// 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, -// 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, -// 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, -// 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, -// 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] -//-> device_type_id = 0x0016 -//-> certificate_id = "CSA00000SWC00000-00" -//-> security_level = 0 -//-> security_information = 0 -//-> version_number = 1 -//-> certification_type = 0 -//-> dac_origin_vendor_id is not present -//-> dac_origin_product_id is not present -const uint8_t kCdForAllExamples[539] = { - 0x30, 0x82, 0x02, 0x17, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x02, 0x08, 0x30, - 0x82, 0x02, 0x04, 0x02, 0x01, 0x03, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, - 0x01, 0x30, 0x82, 0x01, 0x70, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x82, 0x01, 0x61, - 0x04, 0x82, 0x01, 0x5d, 0x15, 0x24, 0x00, 0x01, 0x25, 0x01, 0xf1, 0xff, 0x36, 0x02, 0x05, 0x00, 0x80, 0x05, 0x01, 0x80, - 0x05, 0x02, 0x80, 0x05, 0x03, 0x80, 0x05, 0x04, 0x80, 0x05, 0x05, 0x80, 0x05, 0x06, 0x80, 0x05, 0x07, 0x80, 0x05, 0x08, - 0x80, 0x05, 0x09, 0x80, 0x05, 0x0a, 0x80, 0x05, 0x0b, 0x80, 0x05, 0x0c, 0x80, 0x05, 0x0d, 0x80, 0x05, 0x0e, 0x80, 0x05, - 0x0f, 0x80, 0x05, 0x10, 0x80, 0x05, 0x11, 0x80, 0x05, 0x12, 0x80, 0x05, 0x13, 0x80, 0x05, 0x14, 0x80, 0x05, 0x15, 0x80, - 0x05, 0x16, 0x80, 0x05, 0x17, 0x80, 0x05, 0x18, 0x80, 0x05, 0x19, 0x80, 0x05, 0x1a, 0x80, 0x05, 0x1b, 0x80, 0x05, 0x1c, - 0x80, 0x05, 0x1d, 0x80, 0x05, 0x1e, 0x80, 0x05, 0x1f, 0x80, 0x05, 0x20, 0x80, 0x05, 0x21, 0x80, 0x05, 0x22, 0x80, 0x05, - 0x23, 0x80, 0x05, 0x24, 0x80, 0x05, 0x25, 0x80, 0x05, 0x26, 0x80, 0x05, 0x27, 0x80, 0x05, 0x28, 0x80, 0x05, 0x29, 0x80, - 0x05, 0x2a, 0x80, 0x05, 0x2b, 0x80, 0x05, 0x2c, 0x80, 0x05, 0x2d, 0x80, 0x05, 0x2e, 0x80, 0x05, 0x2f, 0x80, 0x05, 0x30, - 0x80, 0x05, 0x31, 0x80, 0x05, 0x32, 0x80, 0x05, 0x33, 0x80, 0x05, 0x34, 0x80, 0x05, 0x35, 0x80, 0x05, 0x36, 0x80, 0x05, - 0x37, 0x80, 0x05, 0x38, 0x80, 0x05, 0x39, 0x80, 0x05, 0x3a, 0x80, 0x05, 0x3b, 0x80, 0x05, 0x3c, 0x80, 0x05, 0x3d, 0x80, - 0x05, 0x3e, 0x80, 0x05, 0x3f, 0x80, 0x05, 0x40, 0x80, 0x05, 0x41, 0x80, 0x05, 0x42, 0x80, 0x05, 0x43, 0x80, 0x05, 0x44, - 0x80, 0x05, 0x45, 0x80, 0x05, 0x46, 0x80, 0x05, 0x47, 0x80, 0x05, 0x48, 0x80, 0x05, 0x49, 0x80, 0x05, 0x4a, 0x80, 0x05, - 0x4b, 0x80, 0x05, 0x4c, 0x80, 0x05, 0x4d, 0x80, 0x05, 0x4e, 0x80, 0x05, 0x4f, 0x80, 0x05, 0x50, 0x80, 0x05, 0x51, 0x80, - 0x05, 0x52, 0x80, 0x05, 0x53, 0x80, 0x05, 0x54, 0x80, 0x05, 0x55, 0x80, 0x05, 0x56, 0x80, 0x05, 0x57, 0x80, 0x05, 0x58, - 0x80, 0x05, 0x59, 0x80, 0x05, 0x5a, 0x80, 0x05, 0x5b, 0x80, 0x05, 0x5c, 0x80, 0x05, 0x5d, 0x80, 0x05, 0x5e, 0x80, 0x05, - 0x5f, 0x80, 0x05, 0x60, 0x80, 0x05, 0x61, 0x80, 0x05, 0x62, 0x80, 0x05, 0x63, 0x80, 0x18, 0x24, 0x03, 0x16, 0x2c, 0x04, - 0x13, 0x43, 0x53, 0x41, 0x30, 0x30, 0x30, 0x30, 0x30, 0x53, 0x57, 0x43, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2d, 0x30, 0x30, - 0x24, 0x05, 0x00, 0x24, 0x06, 0x00, 0x24, 0x07, 0x01, 0x24, 0x08, 0x00, 0x18, 0x31, 0x7c, 0x30, 0x7a, 0x02, 0x01, 0x03, - 0x80, 0x14, 0xfe, 0x34, 0x3f, 0x95, 0x99, 0x47, 0x76, 0x3b, 0x61, 0xee, 0x45, 0x39, 0x13, 0x13, 0x38, 0x49, 0x4f, 0xe6, - 0x7d, 0x8e, 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, 0x46, 0x30, 0x44, 0x02, 0x20, 0x4a, 0x12, 0xf8, 0xd4, 0x2f, 0x90, 0x23, - 0x5c, 0x05, 0xa7, 0x71, 0x21, 0xcb, 0xeb, 0xae, 0x15, 0xd5, 0x90, 0x14, 0x65, 0x58, 0xe9, 0xc9, 0xb4, 0x7a, 0x1a, 0x38, - 0xf7, 0xa3, 0x6a, 0x7d, 0xc5, 0x02, 0x20, 0x20, 0xa4, 0x74, 0x28, 0x97, 0xc3, 0x0a, 0xed, 0xa0, 0xa5, 0x6b, 0x36, 0xe1, - 0x4e, 0xbb, 0xc8, 0x5b, 0xbd, 0xb7, 0x44, 0x93, 0xf9, 0x93, 0x58, 0x1e, 0xb0, 0x44, 0x4e, 0xd6, 0xca, 0x94, 0x0b -}; diff --git a/lib/libesp32/berry_matter/src/be_matter_module.c b/lib/libesp32/berry_matter/src/be_matter_module.c index 02db643b3..30fd64728 100644 --- a/lib/libesp32/berry_matter/src/be_matter_module.c +++ b/lib/libesp32/berry_matter/src/be_matter_module.c @@ -211,6 +211,7 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Path_0.h" #include "solidify/solidified_Matter_Path_1_PathGenerator.h" #include "solidify/solidified_Matter_Path_1_EventGenerator.h" +#include "solidify/solidified_Matter_Certs.h" #include "solidify/solidified_Matter_TLV.h" #include "solidify/solidified_Matter_IM_Data.h" #include "solidify/solidified_Matter_UDPServer.h" @@ -238,8 +239,6 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_UI.h" #include "solidify/solidified_Matter_Profiler.h" -#include "../generate/be_matter_certs.h" - #include "solidify/solidified_Matter_Plugin_1_Root.h" #include "solidify/solidified_Matter_Plugin_1_Aggregator.h" #include "solidify/solidified_Matter_Plugin_1_Device.h" @@ -306,26 +305,6 @@ extern const bclass be_class_Matter_TLV; // need to declare it upfront because #include "solidify/solidified_Matter_Plugin_z_All.h" #include "solidify/solidified_Matter_zz_Device.h" -/*********************************************************************************************\ - * Get a bytes() object of the certificate DAC/PAI_Cert -\*********************************************************************************************/ -static int matter_return_static_bytes(bvm *vm, const uint8* addr, size_t len) { - be_getbuiltin(vm, "bytes"); - be_pushcomptr(vm, addr); - be_pushint(vm, - len); - be_call(vm, 2); - be_pop(vm, 2); - be_return(vm); -} -static int matter_PAI_Cert_FFF1(bvm *vm) { return matter_return_static_bytes(vm, kDevelopmentPAI_Cert_FFF1, sizeof(kDevelopmentPAI_Cert_FFF1)); } -static int matter_PAI_Pub_FFF1(bvm *vm) { return matter_return_static_bytes(vm, kDevelopmentPAI_PublicKey_FFF1, sizeof(kDevelopmentPAI_PublicKey_FFF1)); } -static int matter_PAI_Priv_FFF1(bvm *vm) { return matter_return_static_bytes(vm, kDevelopmentPAI_PrivateKey_FFF1, sizeof(kDevelopmentPAI_PrivateKey_FFF1)); } -static int matter_DAC_Cert_FFF1_8000(bvm *vm) { return matter_return_static_bytes(vm, kDevelopmentDAC_Cert_FFF1_8000, sizeof(kDevelopmentDAC_Cert_FFF1_8000)); } -static int matter_DAC_Pub_FFF1_8000(bvm *vm) { return matter_return_static_bytes(vm, kDevelopmentDAC_PublicKey_FFF1_8000, sizeof(kDevelopmentDAC_PublicKey_FFF1_8000)); } -static int matter_DAC_Priv_FFF1_8000(bvm *vm) { return matter_return_static_bytes(vm, kDevelopmentDAC_PrivateKey_FFF1_8000, sizeof(kDevelopmentDAC_PrivateKey_FFF1_8000)); } -static int matter_CD_FFF1_8000(bvm *vm) { return matter_return_static_bytes(vm, kCdForAllExamples, sizeof(kCdForAllExamples)); } - - #include "be_fixed_matter.h" /* @const_object_info_begin @@ -494,13 +473,7 @@ module matter (scope: global, strings: weak) { Device, class(be_class_Matter_Device) // credentials from example - PAI_Cert_FFF1, func(matter_PAI_Cert_FFF1) - PAI_Pub_FFF1, func(matter_PAI_Pub_FFF1) - PAI_Priv_FFF1, func(matter_PAI_Priv_FFF1) - DAC_Cert_FFF1_8000, func(matter_DAC_Cert_FFF1_8000) - DAC_Pub_FFF1_8000, func(matter_DAC_Pub_FFF1_8000) - DAC_Priv_FFF1_8000, func(matter_DAC_Priv_FFF1_8000) - CD_FFF1_8000, func(matter_CD_FFF1_8000) // Certification Declaration + Certs, class(be_class_Matter_Certs) // Plugins - only the core classes, all others are taken from `matter_device.plugins_classes` Plugin_Root, class(be_class_Matter_Plugin_Root) // Generic behavior common to all devices diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Certs.be b/lib/libesp32/berry_matter/src/embedded/Matter_Certs.be new file mode 100644 index 000000000..981336a9b --- /dev/null +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Certs.be @@ -0,0 +1,354 @@ +# +# Matter_Certs.be - certificates and crypto values for Matter provisioning +# +# Copyright (C) 2023 Stephan Hadinger & Theo Arends +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import matter + +#@ solidify:Matter_Certs,weak + +class Matter_Certs + + static var PAI_Cert_FFF1 = bytes( + "308201CB30820171A003020102020856AD8222AD945B64300A06082A8648CE3D" + "04030230303118301606035504030C0F4D617474657220546573742050414131" + "143012060A2B0601040182A27C02010C04464646313020170D32323032303530" + "30303030305A180F39393939313233313233353935395A303D31253023060355" + "04030C1C4D6174746572204465762050414920307846464631206E6F20504944" + "31143012060A2B0601040182A27C02010C04464646313059301306072A8648CE" + "3D020106082A8648CE3D03010703420004419A9315C2173E0C8C876D03CCFC94" + "4852647F7FEC5E5082F4059928ECA894C594151309AC631E4CB03392AF684B0B" + "AFB7E65B3B8162C2F52BF931B8E77AAA82A366306430120603551D130101FF04" + "0830060101FF020100300E0603551D0F0101FF040403020106301D0603551D0E" + "0416041463540E47F64B1C38D13884A462D16C195D8FFB3C301F0603551D2304" + "18301680146AFD22771F511FECBF1641976710DCDC31A1717E300A06082A8648" + "CE3D0403020348003045022100B2EF27F49AE9B50FB91EEAC94C4D0BDBB8D792" + "9C6CB88FACE529368D12054C0C0220655DC92B86BD909882A6C62177B825D7D0" + "5EDBE7C22F9FEA71220E7EA703F891" + ) + + # static var PAI_Pub_FFF1 = bytes( + # "04419A9315C2173E0C8C876D03CCFC944852647F7FEC5E5082F4059928ECA894" + # "C594151309AC631E4CB03392AF684B0BAFB7E65B3B8162C2F52BF931B8E77AAA" + # "82" + # ) + + # static var PAI_Priv_FFF1 = bytes( + # "C1AB5FE284B4C18940A53161F806944050A1697B71761D385337A8A3CD095C34" + # ) + + #- + Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 56:ad:82:22:ad:94:5b:64 + Signature Algorithm: ecdsa-with-SHA256 + Issuer: CN = Matter Test PAA, 1.3.6.1.4.1.37244.2.1 = FFF1 + Validity + Not Before: Feb 5 00:00:00 2022 GMT + Not After : Dec 31 23:59:59 9999 GMT + Subject: CN = Matter Dev PAI 0xFFF1 no PID, 1.3.6.1.4.1.37244.2.1 = FFF1 + Subject Public Key Info: + Public Key Algorithm: id-ecPublicKey + Public-Key: (256 bit) + pub: + 04:41:9a:93:15:c2:17:3e:0c:8c:87:6d:03:cc:fc: + 94:48:52:64:7f:7f:ec:5e:50:82:f4:05:99:28:ec: + a8:94:c5:94:15:13:09:ac:63:1e:4c:b0:33:92:af: + 68:4b:0b:af:b7:e6:5b:3b:81:62:c2:f5:2b:f9:31: + b8:e7:7a:aa:82 + ASN1 OID: prime256v1 + NIST CURVE: P-256 + X509v3 extensions: + X509v3 Basic Constraints: critical + CA:TRUE, pathlen:0 + X509v3 Key Usage: critical + Certificate Sign, CRL Sign + X509v3 Subject Key Identifier: + 63:54:0E:47:F6:4B:1C:38:D1:38:84:A4:62:D1:6C:19:5D:8F:FB:3C + X509v3 Authority Key Identifier: + keyid:6A:FD:22:77:1F:51:1F:EC:BF:16:41:97:67:10:DC:DC:31:A1:71:7E + + Signature Algorithm: ecdsa-with-SHA256 + 30:45:02:21:00:b2:ef:27:f4:9a:e9:b5:0f:b9:1e:ea:c9:4c: + 4d:0b:db:b8:d7:92:9c:6c:b8:8f:ac:e5:29:36:8d:12:05:4c: + 0c:02:20:65:5d:c9:2b:86:bd:90:98:82:a6:c6:21:77:b8:25: + d7:d0:5e:db:e7:c2:2f:9f:ea:71:22:0e:7e:a7:03:f8:91 + -# + + #- + ASN.1 + + SEQUENCE (3 elem) + SEQUENCE (8 elem) + [0] (1 elem) + INTEGER 2 + INTEGER (63 bit) 6245791343685426020 + SEQUENCE (1 elem) + OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) + SEQUENCE (2 elem) + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) + UTF8String Matter Test PAA + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 + UTF8String FFF1 + SEQUENCE (2 elem) + UTCTime 2022-02-05 00:00:00 UTC + GeneralizedTime 9999-12-31 23:59:59 UTC + SEQUENCE (2 elem) + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) + UTF8String Matter Dev PAI 0xFFF1 no PID + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 + UTF8String FFF1 + SEQUENCE (2 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.2.840.10045.2.1 ecPublicKey (ANSI X9.62 public key type) + OBJECT IDENTIFIER 1.2.840.10045.3.1.7 prime256v1 (ANSI X9.62 named elliptic curve) + BIT STRING (520 bit) 0000010001000001100110101001001100010101110000100001011100111110000011… + [3] (1 elem) + SEQUENCE (4 elem) + SEQUENCE (3 elem) + OBJECT IDENTIFIER 2.5.29.19 basicConstraints (X.509 extension) + BOOLEAN true + OCTET STRING (8 byte) 30060101FF020100 + SEQUENCE (2 elem) + BOOLEAN true + INTEGER 0 + SEQUENCE (3 elem) + OBJECT IDENTIFIER 2.5.29.15 keyUsage (X.509 extension) + BOOLEAN true + OCTET STRING (4 byte) 03020106 + BIT STRING (7 bit) 0000011 + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.29.14 subjectKeyIdentifier (X.509 extension) + OCTET STRING (22 byte) 041463540E47F64B1C38D13884A462D16C195D8FFB3C + OCTET STRING (20 byte) 63540E47F64B1C38D13884A462D16C195D8FFB3C + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.29.35 authorityKeyIdentifier (X.509 extension) + OCTET STRING (24 byte) 301680146AFD22771F511FECBF1641976710DCDC31A1717E + SEQUENCE (1 elem) + [0] (20 byte) 6AFD22771F511FECBF1641976710DCDC31A1717E + SEQUENCE (1 elem) + Offset: 377 + Length: 2+10 + (constructed) + Value: + (1 elem) + OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) + BIT STRING (568 bit) 0011000001000101000000100010000100000000101100101110111100100111111101… + SEQUENCE (2 elem) + INTEGER (256 bit) 8093423925895219711386938045632983408737245943652937189339272815747009… + INTEGER (255 bit) 4584930290841753608947726397552150715869097421278636946745345682393985… + -# + static var DAC_Cert_FFF1_8000 = bytes( + "308201E93082018EA0030201020208238A647BBC4C30DD300A06082A8648CE3D" + "040302303D3125302306035504030C1C4D617474657220446576205041492030" + "7846464631206E6F2050494431143012060A2B0601040182A27C02010C044646" + "46313020170D3232303230353030303030305A180F3939393931323331323335" + "3935395A30533125302306035504030C1C4D6174746572204465762044414320" + "3078464646312F30783830303031143012060A2B0601040182A27C02010C0446" + "46463131143012060A2B0601040182A27C02020C04383030303059301306072A" + "8648CE3D020106082A8648CE3D0301070342000462DB16BADEA326A6DB84814A" + "063FC6C7E9E2B101B721648EBA4E5AC840F5DA301EE618124EB4180E2FC3A204" + "7A564BA9BCFA0BF71F60CE8930F1E7F66EC8D728A360305E300C0603551D1301" + "01FF04023000300E0603551D0F0101FF040403020780301D0603551D0E041604" + "14BCF7B007497063606A26BE4E087C595687745A5A301F0603551D2304183016" + "801463540E47F64B1C38D13884A462D16C195D8FFB3C300A06082A8648CE3D04" + "03020349003046022100979711EC9E7618CE41801132C250DB707674630CD58C" + "12C6E2315F08D01EE178022100ECFC1306BD2A133D122A278610EA3DCA47F05C" + "7A8B805FA71C6FF41538A864C8" + ) + + #- + Decoded cert: openssl x509 -inform der -in DAC_Cert_FFF1_8000.der -text -noout + + Certificate: + Data: + Version: 3 (0x2) + Serial Number: + 23:8a:64:7b:bc:4c:30:dd + Signature Algorithm: ecdsa-with-SHA256 + Issuer: CN = Matter Dev PAI 0xFFF1 no PID, 1.3.6.1.4.1.37244.2.1 = FFF1 + Validity + Not Before: Feb 5 00:00:00 2022 GMT + Not After : Dec 31 23:59:59 9999 GMT + Subject: CN = Matter Dev DAC 0xFFF1/0x8000, 1.3.6.1.4.1.37244.2.1 = FFF1, 1.3.6.1.4.1.37244.2.2 = 8000 + Subject Public Key Info: + Public Key Algorithm: id-ecPublicKey + Public-Key: (256 bit) + pub: + 04:62:db:16:ba:de:a3:26:a6:db:84:81:4a:06:3f: + c6:c7:e9:e2:b1:01:b7:21:64:8e:ba:4e:5a:c8:40: + f5:da:30:1e:e6:18:12:4e:b4:18:0e:2f:c3:a2:04: + 7a:56:4b:a9:bc:fa:0b:f7:1f:60:ce:89:30:f1:e7: + f6:6e:c8:d7: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: + BC:F7:B0:07:49:70:63:60:6A:26:BE:4E:08:7C:59:56:87:74:5A:5A + X509v3 Authority Key Identifier: + keyid:63:54:0E:47:F6:4B:1C:38:D1:38:84:A4:62:D1:6C:19:5D:8F:FB:3C + + Signature Algorithm: ecdsa-with-SHA256 + 30:46:02:21:00:97:97:11:ec:9e:76:18:ce:41:80:11:32:c2: + 50:db:70:76:74:63:0c:d5:8c:12:c6:e2:31:5f:08:d0:1e:e1: + 78:02:21:00:ec:fc:13:06:bd:2a:13:3d:12:2a:27:86:10:ea: + 3d:ca:47:f0:5c:7a:8b:80:5f:a7:1c:6f:f4:15:38:a8:64:c8 + + -# + + #- Decoded ASN.1 + + SEQUENCE (3 elem) + SEQUENCE (8 elem) + [0] (1 elem) + INTEGER 2 + INTEGER (62 bit) 2560969820716413149 + SEQUENCE (1 elem) + OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) + SEQUENCE (2 elem) + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) + UTF8String Matter Dev PAI 0xFFF1 no PID + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 + UTF8String FFF1 + SEQUENCE (2 elem) + UTCTime 2022-02-05 00:00:00 UTC + GeneralizedTime 9999-12-31 23:59:59 UTC + SEQUENCE (3 elem) + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.4.3 commonName (X.520 DN component) + UTF8String Matter Dev DAC 0xFFF1/0x8000 + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.1 + UTF8String FFF1 + SET (1 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.3.6.1.4.1.37244.2.2 + UTF8String 8000 + SEQUENCE (2 elem) + SEQUENCE (2 elem) + OBJECT IDENTIFIER 1.2.840.10045.2.1 ecPublicKey (ANSI X9.62 public key type) + OBJECT IDENTIFIER 1.2.840.10045.3.1.7 prime256v1 (ANSI X9.62 named elliptic curve) + BIT STRING (520 bit) 0000010001100010110110110001011010111010110111101010001100100110101001… + [3] (1 elem) + SEQUENCE (4 elem) + SEQUENCE (3 elem) + OBJECT IDENTIFIER 2.5.29.19 basicConstraints (X.509 extension) + BOOLEAN true + OCTET STRING (2 byte) 3000 + SEQUENCE (0 elem) + SEQUENCE (3 elem) + OBJECT IDENTIFIER 2.5.29.15 keyUsage (X.509 extension) + BOOLEAN true + OCTET STRING (4 byte) 03020780 + BIT STRING (1 bit) 1 + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.29.14 subjectKeyIdentifier (X.509 extension) + OCTET STRING (22 byte) 0414BCF7B007497063606A26BE4E087C595687745A5A + OCTET STRING (20 byte) BCF7B007497063606A26BE4E087C595687745A5A + SEQUENCE (2 elem) + OBJECT IDENTIFIER 2.5.29.35 authorityKeyIdentifier (X.509 extension) + OCTET STRING (24 byte) 3016801463540E47F64B1C38D13884A462D16C195D8FFB3C + SEQUENCE (1 elem) + [0] (20 byte) 63540E47F64B1C38D13884A462D16C195D8FFB3C + SEQUENCE (1 elem) + OBJECT IDENTIFIER 1.2.840.10045.4.3.2 ecdsaWithSHA256 (ANSI X9.62 ECDSA algorithm with SHA256) + BIT STRING (576 bit) 0011000001000110000000100010000100000000100101111001011100010001111011… + SEQUENCE (2 elem) + INTEGER (256 bit) 6856615775177799389454949658700013485116050405241433595512074226650010… + INTEGER (256 bit) 1071912090408366213691559168363210336766445086127676108978024779974417… + -# + # static var DAC_Pub_FFF1_8000 = bytes( + # "0462DB16BADEA326A6DB84814A063FC6C7E9E2B101B721648EBA4E5AC840F5DA" + # "301EE618124EB4180E2FC3A2047A564BA9BCFA0BF71F60CE8930F1E7F66EC8D7" + # "28" + # ) + static var DAC_Priv_FFF1_8000 = bytes( + "CCCF9DC7050EF5D90BE45707B90E1F875D59BE1FA942E8ED2E427203F6C2EE3D" + ) + + # CertificationDeclaration */ + # -> format_version = 1 + # -> vendor_id = 0xFFF1 + # -> product_id_array = [ 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009, 0x800A, 0x800B, + # 0x800C, 0x800D, 0x800E, 0x800F, 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, 0x8018, 0x8019, 0x801A, + # 0x801B, 0x801C, 0x801D, 0x801E, 0x801F, 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029, + # 0x802A, 0x802B, 0x802C, 0x802D, 0x802E, 0x802F, 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, 0x8038, + # 0x8039, 0x803A, 0x803B, 0x803C, 0x803D, 0x803E, 0x803F, 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, + # 0x8048, 0x8049, 0x804A, 0x804B, 0x804C, 0x804D, 0x804E, 0x804F, 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, + # 0x8057, 0x8058, 0x8059, 0x805A, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061, 0x8062, 0x8063 ] + # -> device_type_id = 0x0016 + # -> certificate_id = "CSA00000SWC00000-00" + # -> security_level = 0 + # -> security_information = 0 + # -> version_number = 1 + # -> certification_type = 0 + # -> dac_origin_vendor_id is not present + # -> dac_origin_product_id is not present + static var CD_FFF1_8000 = bytes( + "3082021706092A864886F70D010702A082020830820204020103310D300B0609" + "6086480165030402013082017006092A864886F70D010701A08201610482015D" + "152400012501F1FF360205008005018005028005038005048005058005068005" + "0780050880050980050A80050B80050C80050D80050E80050F80051080051180" + "051280051380051480051580051680051780051880051980051A80051B80051C" + "80051D80051E80051F8005208005218005228005238005248005258005268005" + "2780052880052980052A80052B80052C80052D80052E80052F80053080053180" + "053280053380053480053580053680053780053880053980053A80053B80053C" + "80053D80053E80053F8005408005418005428005438005448005458005468005" + "4780054880054980054A80054B80054C80054D80054E80054F80055080055180" + "055280055380055480055580055680055780055880055980055A80055B80055C" + "80055D80055E80055F80056080056180056280056380182403162C0413435341" + "303030303053574330303030302D303024050024060024070124080018317C30" + "7A0201038014FE343F959947763B61EE4539131338494FE67D8E300B06096086" + "48016503040201300A06082A8648CE3D0403020446304402204A12F8D42F9023" + "5C05A77121CBEBAE15D590146558E9C9B47A1A38F7A36A7DC5022020A4742897" + "C30AEDA0A56B36E14EBBC85BBDB74493F993581EB0444ED6CA940B" + ) + +end +matter.Certs = Matter_Certs + +#- + +assert(matter.Certs.PAI_Cert_FFF1 == matter.PAI_Cert_FFF1()) +assert(matter.Certs.PAI_Pub_FFF1 == matter.PAI_Pub_FFF1()) +assert(matter.Certs.PAI_Priv_FFF1 == matter.PAI_Priv_FFF1()) +assert(matter.Certs.DAC_Priv_FFF1_8000 == matter.DAC_Priv_FFF1_8000()) +assert(matter.Certs.DAC_Cert_FFF1_8000 == matter.DAC_Cert_FFF1_8000()) +assert(matter.Certs.DAC_Pub_FFF1_8000 == matter.DAC_Pub_FFF1_8000()) +assert(matter.Certs.CD_FFF1_8000 == matter.CD_FFF1_8000()) + +-# \ No newline at end of file diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be index faee3909d..6e754e3d4 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_1_Root.be @@ -1022,7 +1022,7 @@ class Matter_Plugin_Root : Matter_Plugin # ID=1 # 0=Certificate (octstr) var ccr = TLV.Matter_TLV_struct() - ccr.add_TLV(0, TLV.B2, CertificateType == 1 ? matter.DAC_Cert_FFF1_8000() : matter.PAI_Cert_FFF1()) # send DAC_Cert_FFF1_8000 or PAI_Cert_FFF1 + ccr.add_TLV(0, TLV.B2, CertificateType == 1 ? matter.Certs.DAC_Cert_FFF1_8000 : matter.Certs.PAI_Cert_FFF1) # send DAC_Cert_FFF1_8000 or PAI_Cert_FFF1 ctx.command = 0x03 # CertificateChainResponse return ccr @@ -1033,7 +1033,7 @@ class Matter_Plugin_Root : Matter_Plugin # build Attestation Elements 11.17.5.4 p.707 var att_elts = TLV.Matter_TLV_struct() - att_elts.add_TLV(1, TLV.B2, matter.CD_FFF1_8000()) # certification_declaration + att_elts.add_TLV(1, TLV.B2, matter.Certs.CD_FFF1_8000) # certification_declaration att_elts.add_TLV(2, TLV.B1, AttestationNonce) # attestation_nonce att_elts.add_TLV(3, TLV.U4, tasmota.rtc_utc()) # timestamp in epoch-s var attestation_message = att_elts.tlv2raw() @@ -1042,7 +1042,7 @@ class Matter_Plugin_Root : Matter_Plugin var attestation_tbs = attestation_message + ac # log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4) - var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), attestation_tbs) + var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.Certs.DAC_Priv_FFF1_8000, attestation_tbs) # create AttestationResponse # 0=AttestationElements (octstr max 900 bytes) @@ -1069,7 +1069,7 @@ class Matter_Plugin_Root : Matter_Plugin # sign with attestation challenge var nocsr_tbs = nocsr_elements_message + session.get_ac() # log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4) - var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.DAC_Priv_FFF1_8000(), nocsr_tbs) + var attestation_signature = crypto.EC_P256().ecdsa_sign_sha256(matter.Certs.DAC_Priv_FFF1_8000, nocsr_tbs) # create CSRResponse # 0=NOCSRElements (octstr max 900 bytes) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Certs.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Certs.h new file mode 100644 index 000000000..ae7e5e7f7 --- /dev/null +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Certs.h @@ -0,0 +1,25 @@ +/* Solidification of Matter_Certs.h */ +/********************************************************************\ +* Generated code, don't edit * +\********************************************************************/ +#include "be_constobj.h" + +extern const bclass be_class_Matter_Certs; + +/******************************************************************** +** Solidified class: Matter_Certs +********************************************************************/ +be_local_class(Matter_Certs, + 0, + NULL, + be_nested_map(4, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(PAI_Cert_FFF1, 2), be_const_bytes_instance(308201CB30820171A003020102020856AD8222AD945B64300A06082A8648CE3D04030230303118301606035504030C0F4D617474657220546573742050414131143012060A2B0601040182A27C02010C04464646313020170D3232303230353030303030305A180F39393939313233313233353935395A303D3125302306035504030C1C4D6174746572204465762050414920307846464631206E6F2050494431143012060A2B0601040182A27C02010C04464646313059301306072A8648CE3D020106082A8648CE3D03010703420004419A9315C2173E0C8C876D03CCFC944852647F7FEC5E5082F4059928ECA894C594151309AC631E4CB03392AF684B0BAFB7E65B3B8162C2F52BF931B8E77AAA82A366306430120603551D130101FF040830060101FF020100300E0603551D0F0101FF040403020106301D0603551D0E0416041463540E47F64B1C38D13884A462D16C195D8FFB3C301F0603551D230418301680146AFD22771F511FECBF1641976710DCDC31A1717E300A06082A8648CE3D0403020348003045022100B2EF27F49AE9B50FB91EEAC94C4D0BDBB8D7929C6CB88FACE529368D12054C0C0220655DC92B86BD909882A6C62177B825D7D05EDBE7C22F9FEA71220E7EA703F891) }, + { be_const_key_weak(CD_FFF1_8000, -1), be_const_bytes_instance(3082021706092A864886F70D010702A082020830820204020103310D300B06096086480165030402013082017006092A864886F70D010701A08201610482015D152400012501F1FF3602050080050180050280050380050480050580050680050780050880050980050A80050B80050C80050D80050E80050F80051080051180051280051380051480051580051680051780051880051980051A80051B80051C80051D80051E80051F80052080052180052280052380052480052580052680052780052880052980052A80052B80052C80052D80052E80052F80053080053180053280053380053480053580053680053780053880053980053A80053B80053C80053D80053E80053F80054080054180054280054380054480054580054680054780054880054980054A80054B80054C80054D80054E80054F80055080055180055280055380055480055580055680055780055880055980055A80055B80055C80055D80055E80055F80056080056180056280056380182403162C0413435341303030303053574330303030302D303024050024060024070124080018317C307A0201038014FE343F959947763B61EE4539131338494FE67D8E300B0609608648016503040201300A06082A8648CE3D0403020446304402204A12F8D42F90235C05A77121CBEBAE15D590146558E9C9B47A1A38F7A36A7DC5022020A4742897C30AEDA0A56B36E14EBBC85BBDB74493F993581EB0444ED6CA940B) }, + { be_const_key_weak(DAC_Priv_FFF1_8000, -1), be_const_bytes_instance(CCCF9DC7050EF5D90BE45707B90E1F875D59BE1FA942E8ED2E427203F6C2EE3D) }, + { be_const_key_weak(DAC_Cert_FFF1_8000, 1), be_const_bytes_instance(308201E93082018EA0030201020208238A647BBC4C30DD300A06082A8648CE3D040302303D3125302306035504030C1C4D6174746572204465762050414920307846464631206E6F2050494431143012060A2B0601040182A27C02010C04464646313020170D3232303230353030303030305A180F39393939313233313233353935395A30533125302306035504030C1C4D61747465722044657620444143203078464646312F30783830303031143012060A2B0601040182A27C02010C044646463131143012060A2B0601040182A27C02020C04383030303059301306072A8648CE3D020106082A8648CE3D0301070342000462DB16BADEA326A6DB84814A063FC6C7E9E2B101B721648EBA4E5AC840F5DA301EE618124EB4180E2FC3A2047A564BA9BCFA0BF71F60CE8930F1E7F66EC8D728A360305E300C0603551D130101FF04023000300E0603551D0F0101FF040403020780301D0603551D0E04160414BCF7B007497063606A26BE4E087C595687745A5A301F0603551D2304183016801463540E47F64B1C38D13884A462D16C195D8FFB3C300A06082A8648CE3D0403020349003046022100979711EC9E7618CE41801132C250DB707674630CD58C12C6E2315F08D01EE178022100ECFC1306BD2A133D122A278610EA3DCA47F05C7A8B805FA71C6FF41538A864C8) }, + })), + be_str_weak(Matter_Certs) +); +/********************************************************************/ +/* End of solidification */ diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h index 4ac5e6462..faa7d1f64 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_1_Root.h @@ -3,8 +3,8 @@ * Generated code, don't edit * \********************************************************************/ #include "be_constobj.h" -// compact class 'Matter_Plugin_Root' ktab size: 174, total: 228 (saved 432 bytes) -static const bvalue be_ktab_class_Matter_Plugin_Root[174] = { +// compact class 'Matter_Plugin_Root' ktab size: 175, total: 229 (saved 432 bytes) +static const bvalue be_ktab_class_Matter_Plugin_Root[175] = { /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TLV), @@ -121,64 +121,65 @@ static const bvalue be_ktab_class_Matter_Plugin_Root[174] = { /* K113 */ be_nested_str_weak(context_error), /* K114 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), /* K115 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K116 */ be_nested_str_weak(DAC_Cert_FFF1_8000), - /* K117 */ be_nested_str_weak(PAI_Cert_FFF1), - /* K118 */ be_nested_str_weak(CD_FFF1_8000), - /* K119 */ be_nested_str_weak(tlv2raw), - /* K120 */ be_nested_str_weak(get_ac), - /* K121 */ be_nested_str_weak(EC_P256), - /* K122 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K123 */ be_nested_str_weak(DAC_Priv_FFF1_8000), - /* K124 */ be_nested_str_weak(gen_CSR), - /* K125 */ be_nested_str_weak(set_temp_ca), - /* K126 */ be_nested_str_weak(SUCCESS), - /* K127 */ be_nested_str_weak(log), - /* K128 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), - /* K129 */ be_nested_str_weak(get_temp_ca), - /* K130 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), - /* K131 */ be_nested_str_weak(create_fabric), - /* K132 */ be_nested_str_weak(set_ca), - /* K133 */ be_nested_str_weak(set_noc_icac), - /* K134 */ be_nested_str_weak(set_ipk_epoch_key), - /* K135 */ be_nested_str_weak(set_admin_subject_vendor), - /* K136 */ be_nested_str_weak(set_pk), - /* K137 */ be_nested_str_weak(get_pk), - /* K138 */ be_nested_str_weak(findsub), - /* K139 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), - /* K140 */ be_nested_str_weak(fromu32), - /* K141 */ be_nested_str_weak(tobytes), - /* K142 */ be_nested_str_weak(get_temp_ca_pub), - /* K143 */ be_const_int(2147483647), - /* K144 */ be_nested_str_weak(fromstring), - /* K145 */ be_nested_str_weak(CompressedFabric), - /* K146 */ be_nested_str_weak(HKDF_SHA256), - /* K147 */ be_nested_str_weak(copy), - /* K148 */ be_nested_str_weak(reverse), - /* K149 */ be_nested_str_weak(derive), - /* K150 */ be_nested_str_weak(set_fabric_device), - /* K151 */ be_nested_str_weak(fabric_candidate), - /* K152 */ be_nested_str_weak(start_operational_discovery_deferred), - /* K153 */ be_nested_str_weak(is_PASE), - /* K154 */ be_nested_str_weak(set_expire_in_seconds), - /* K155 */ be_nested_str_weak(log_new_fabric), - /* K156 */ be_nested_str_weak(assign_fabric_index), - /* K157 */ be_nested_str_weak(set_fabric_label), - /* K158 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), - /* K159 */ be_nested_str_weak(get_fabric_id), - /* K160 */ be_nested_str_weak(tohex), - /* K161 */ be_nested_str_weak(fabric_index_X3A), - /* K162 */ be_nested_str_weak(mark_for_deletion), - /* K163 */ be_nested_str_weak(set_timer), - /* K164 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), - /* K165 */ be_nested_str_weak(_X29_X20not_X20found), - /* K166 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), - /* K167 */ be_nested_str_weak(INVALID_DATA_TYPE), - /* K168 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), - /* K169 */ be_nested_str_weak(start_basic_commissioning), - /* K170 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), - /* K171 */ be_nested_str_weak(start_root_basic_commissioning), - /* K172 */ be_nested_str_weak(stop_basic_commissioning), - /* K173 */ be_nested_str_weak(invoke_request), + /* K116 */ be_nested_str_weak(Certs), + /* K117 */ be_nested_str_weak(DAC_Cert_FFF1_8000), + /* K118 */ be_nested_str_weak(PAI_Cert_FFF1), + /* K119 */ be_nested_str_weak(CD_FFF1_8000), + /* K120 */ be_nested_str_weak(tlv2raw), + /* K121 */ be_nested_str_weak(get_ac), + /* K122 */ be_nested_str_weak(EC_P256), + /* K123 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K124 */ be_nested_str_weak(DAC_Priv_FFF1_8000), + /* K125 */ be_nested_str_weak(gen_CSR), + /* K126 */ be_nested_str_weak(set_temp_ca), + /* K127 */ be_nested_str_weak(SUCCESS), + /* K128 */ be_nested_str_weak(log), + /* K129 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), + /* K130 */ be_nested_str_weak(get_temp_ca), + /* K131 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), + /* K132 */ be_nested_str_weak(create_fabric), + /* K133 */ be_nested_str_weak(set_ca), + /* K134 */ be_nested_str_weak(set_noc_icac), + /* K135 */ be_nested_str_weak(set_ipk_epoch_key), + /* K136 */ be_nested_str_weak(set_admin_subject_vendor), + /* K137 */ be_nested_str_weak(set_pk), + /* K138 */ be_nested_str_weak(get_pk), + /* K139 */ be_nested_str_weak(findsub), + /* K140 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), + /* K141 */ be_nested_str_weak(fromu32), + /* K142 */ be_nested_str_weak(tobytes), + /* K143 */ be_nested_str_weak(get_temp_ca_pub), + /* K144 */ be_const_int(2147483647), + /* K145 */ be_nested_str_weak(fromstring), + /* K146 */ be_nested_str_weak(CompressedFabric), + /* K147 */ be_nested_str_weak(HKDF_SHA256), + /* K148 */ be_nested_str_weak(copy), + /* K149 */ be_nested_str_weak(reverse), + /* K150 */ be_nested_str_weak(derive), + /* K151 */ be_nested_str_weak(set_fabric_device), + /* K152 */ be_nested_str_weak(fabric_candidate), + /* K153 */ be_nested_str_weak(start_operational_discovery_deferred), + /* K154 */ be_nested_str_weak(is_PASE), + /* K155 */ be_nested_str_weak(set_expire_in_seconds), + /* K156 */ be_nested_str_weak(log_new_fabric), + /* K157 */ be_nested_str_weak(assign_fabric_index), + /* K158 */ be_nested_str_weak(set_fabric_label), + /* K159 */ be_nested_str_weak(MTR_X3A_X20_X2E_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20Update_X20fabric_X20_X27_X25s_X27_X20label_X3D_X27_X25s_X27), + /* K160 */ be_nested_str_weak(get_fabric_id), + /* K161 */ be_nested_str_weak(tohex), + /* K162 */ be_nested_str_weak(fabric_index_X3A), + /* K163 */ be_nested_str_weak(mark_for_deletion), + /* K164 */ be_nested_str_weak(set_timer), + /* K165 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), + /* K166 */ be_nested_str_weak(_X29_X20not_X20found), + /* K167 */ be_nested_str_weak(MTR_X3A_X20OpenCommissioningWindow_X28timeout_X3D_X25i_X2C_X20passcode_X3D_X25s_X2C_X20discriminator_X3D_X25i_X2C_X20iterations_X3D_X25i_X2C_X20salt_X3D_X25s_X29), + /* K168 */ be_nested_str_weak(INVALID_DATA_TYPE), + /* K169 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), + /* K170 */ be_nested_str_weak(start_basic_commissioning), + /* K171 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), + /* K172 */ be_nested_str_weak(start_root_basic_commissioning), + /* K173 */ be_nested_str_weak(stop_basic_commissioning), + /* K174 */ be_nested_str_weak(invoke_request), }; @@ -1548,12 +1549,12 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C381109, // 007C EQ R14 R8 K9 0x783A0003, // 007D JMPF R14 #0082 0xB83A0200, // 007E GETNGBL R14 K1 - 0x8C381D74, // 007F GETMET R14 R14 K116 - 0x7C380200, // 0080 CALL R14 1 + 0x88381D74, // 007F GETMBR R14 R14 K116 + 0x88381D75, // 0080 GETMBR R14 R14 K117 0x70020002, // 0081 JMP #0085 0xB83A0200, // 0082 GETNGBL R14 K1 - 0x8C381D75, // 0083 GETMET R14 R14 K117 - 0x7C380200, // 0084 CALL R14 1 + 0x88381D74, // 0083 GETMBR R14 R14 K116 + 0x88381D76, // 0084 GETMBR R14 R14 K118 0x7C280800, // 0085 CALL R10 4 0x900ED90F, // 0086 SETMBR R3 K108 K15 0x80041200, // 0087 RET 1 R9 @@ -1578,8 +1579,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x58300009, // 009A LDCONST R12 K9 0x88340B3A, // 009B GETMBR R13 R5 K58 0xB83A0200, // 009C GETNGBL R14 K1 - 0x8C381D76, // 009D GETMET R14 R14 K118 - 0x7C380200, // 009E CALL R14 1 + 0x88381D74, // 009D GETMBR R14 R14 K116 + 0x88381D77, // 009E GETMBR R14 R14 K119 0x7C280800, // 009F CALL R10 4 0x8C28130B, // 00A0 GETMET R10 R9 K11 0x5830000D, // 00A1 LDCONST R12 K13 @@ -1593,17 +1594,17 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C381D2F, // 00A9 GETMET R14 R14 K47 0x7C380200, // 00AA CALL R14 1 0x7C280800, // 00AB CALL R10 4 - 0x8C281377, // 00AC GETMET R10 R9 K119 + 0x8C281378, // 00AC GETMET R10 R9 K120 0x7C280200, // 00AD CALL R10 1 - 0x8C2C0378, // 00AE GETMET R11 R1 K120 + 0x8C2C0379, // 00AE GETMET R11 R1 K121 0x7C2C0200, // 00AF CALL R11 1 0x0030140B, // 00B0 ADD R12 R10 R11 - 0x8C340979, // 00B1 GETMET R13 R4 K121 + 0x8C34097A, // 00B1 GETMET R13 R4 K122 0x7C340200, // 00B2 CALL R13 1 - 0x8C341B7A, // 00B3 GETMET R13 R13 K122 + 0x8C341B7B, // 00B3 GETMET R13 R13 K123 0xB83E0200, // 00B4 GETNGBL R15 K1 - 0x8C3C1F7B, // 00B5 GETMET R15 R15 K123 - 0x7C3C0200, // 00B6 CALL R15 1 + 0x883C1F74, // 00B5 GETMBR R15 R15 K116 + 0x883C1F7C, // 00B6 GETMBR R15 R15 K124 0x5C401800, // 00B7 MOVE R16 R12 0x7C340600, // 00B8 CALL R13 3 0x8C380B0A, // 00B9 GETMET R14 R5 K10 @@ -1642,7 +1643,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x582C0009, // 00DA LDCONST R11 K9 0x50300000, // 00DB LDBOOL R12 0 0 0x7C240600, // 00DC CALL R9 3 - 0x8C28037C, // 00DD GETMET R10 R1 K124 + 0x8C28037D, // 00DD GETMET R10 R1 K125 0x7C280200, // 00DE CALL R10 1 0x8C2C0B0A, // 00DF GETMET R11 R5 K10 0x7C2C0200, // 00E0 CALL R11 1 @@ -1656,17 +1657,17 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x883C0B1F, // 00E8 GETMBR R15 R5 K31 0x5C401000, // 00E9 MOVE R16 R8 0x7C300800, // 00EA CALL R12 4 - 0x8C301777, // 00EB GETMET R12 R11 K119 + 0x8C301778, // 00EB GETMET R12 R11 K120 0x7C300200, // 00EC CALL R12 1 - 0x8C340378, // 00ED GETMET R13 R1 K120 + 0x8C340379, // 00ED GETMET R13 R1 K121 0x7C340200, // 00EE CALL R13 1 0x0034180D, // 00EF ADD R13 R12 R13 - 0x8C380979, // 00F0 GETMET R14 R4 K121 + 0x8C38097A, // 00F0 GETMET R14 R4 K122 0x7C380200, // 00F1 CALL R14 1 - 0x8C381D7A, // 00F2 GETMET R14 R14 K122 + 0x8C381D7B, // 00F2 GETMET R14 R14 K123 0xB8420200, // 00F3 GETNGBL R16 K1 - 0x8C40217B, // 00F4 GETMET R16 R16 K123 - 0x7C400200, // 00F5 CALL R16 1 + 0x88402174, // 00F4 GETMBR R16 R16 K116 + 0x8840217C, // 00F5 GETMBR R16 R16 K124 0x5C441A00, // 00F6 MOVE R17 R13 0x7C380600, // 00F7 CALL R14 3 0x8C3C0B0A, // 00F8 GETMET R15 R5 K10 @@ -1691,11 +1692,11 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C200541, // 010B GETMET R8 R2 K65 0x58280005, // 010C LDCONST R10 K5 0x7C200400, // 010D CALL R8 2 - 0x8C24037D, // 010E GETMET R9 R1 K125 + 0x8C24037E, // 010E GETMET R9 R1 K126 0x5C2C1000, // 010F MOVE R11 R8 0x7C240400, // 0110 CALL R9 2 0xB8260200, // 0111 GETNGBL R9 K1 - 0x8824137E, // 0112 GETMBR R9 R9 K126 + 0x8824137F, // 0112 GETMBR R9 R9 K127 0x900EC809, // 0113 SETMBR R3 K100 R9 0x4C240000, // 0114 LDNIL R9 0x80041200, // 0115 RET 1 R9 @@ -1703,11 +1704,11 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x54220005, // 0117 LDINT R8 6 0x1C200E08, // 0118 EQ R8 R7 R8 0x782200BA, // 0119 JMPF R8 #01D5 - 0xB822FE00, // 011A GETNGBL R8 K127 + 0xB8230000, // 011A GETNGBL R8 K128 0x60240008, // 011B GETGBL R9 G8 0x5C280400, // 011C MOVE R10 R2 0x7C240200, // 011D CALL R9 1 - 0x00270009, // 011E ADD R9 K128 R9 + 0x00270209, // 011E ADD R9 K129 R9 0x542A0003, // 011F LDINT R10 4 0x7C200400, // 0120 CALL R8 2 0x8C200541, // 0121 GETMET R8 R2 K65 @@ -1731,38 +1732,38 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C300541, // 0133 GETMET R12 R2 K65 0x543A0003, // 0134 LDINT R14 4 0x7C300400, // 0135 CALL R12 2 - 0x8C340381, // 0136 GETMET R13 R1 K129 + 0x8C340382, // 0136 GETMET R13 R1 K130 0x7C340200, // 0137 CALL R13 1 0x4C380000, // 0138 LDNIL R14 0x1C341A0E, // 0139 EQ R13 R13 R14 0x78360005, // 013A JMPF R13 #0141 - 0xB836FE00, // 013B GETNGBL R13 K127 - 0x58380082, // 013C LDCONST R14 K130 + 0xB8370000, // 013B GETNGBL R13 K128 + 0x58380083, // 013C LDCONST R14 K131 0x583C000D, // 013D LDCONST R15 K13 0x7C340400, // 013E CALL R13 2 0x4C340000, // 013F LDNIL R13 0x80041A00, // 0140 RET 1 R13 0x88340136, // 0141 GETMBR R13 R0 K54 0x88341B37, // 0142 GETMBR R13 R13 K55 - 0x8C341B83, // 0143 GETMET R13 R13 K131 + 0x8C341B84, // 0143 GETMET R13 R13 K132 0x7C340200, // 0144 CALL R13 1 - 0x8C381B84, // 0145 GETMET R14 R13 K132 - 0x8C400381, // 0146 GETMET R16 R1 K129 + 0x8C381B85, // 0145 GETMET R14 R13 K133 + 0x8C400382, // 0146 GETMET R16 R1 K130 0x7C400200, // 0147 CALL R16 1 0x7C380400, // 0148 CALL R14 2 - 0x8C381B85, // 0149 GETMET R14 R13 K133 + 0x8C381B86, // 0149 GETMET R14 R13 K134 0x5C401000, // 014A MOVE R16 R8 0x5C441200, // 014B MOVE R17 R9 0x7C380600, // 014C CALL R14 3 - 0x8C381B86, // 014D GETMET R14 R13 K134 + 0x8C381B87, // 014D GETMET R14 R13 K135 0x5C401400, // 014E MOVE R16 R10 0x7C380400, // 014F CALL R14 2 - 0x8C381B87, // 0150 GETMET R14 R13 K135 + 0x8C381B88, // 0150 GETMET R14 R13 K136 0x5C401600, // 0151 MOVE R16 R11 0x5C441800, // 0152 MOVE R17 R12 0x7C380600, // 0153 CALL R14 3 - 0x8C381B88, // 0154 GETMET R14 R13 K136 - 0x8C400389, // 0155 GETMET R16 R1 K137 + 0x8C381B89, // 0154 GETMET R14 R13 K137 + 0x8C40038A, // 0155 GETMET R16 R1 K138 0x7C400200, // 0156 CALL R16 1 0x7C380400, // 0157 CALL R14 2 0xB83A0200, // 0158 GETNGBL R14 K1 @@ -1770,7 +1771,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C381D3F, // 015A GETMET R14 R14 K63 0x5C401000, // 015B MOVE R16 R8 0x7C380400, // 015C CALL R14 2 - 0x8C3C1D8A, // 015D GETMET R15 R14 K138 + 0x8C3C1D8B, // 015D GETMET R15 R14 K139 0x54460005, // 015E LDINT R17 6 0x7C3C0400, // 015F CALL R15 2 0x8C401F41, // 0160 GETMET R16 R15 K65 @@ -1783,8 +1784,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x784A0001, // 0167 JMPF R18 #016A 0x5C482200, // 0168 MOVE R18 R17 0x744A0005, // 0169 JMPT R18 #0170 - 0xB84AFE00, // 016A GETNGBL R18 K127 - 0x584C008B, // 016B LDCONST R19 K139 + 0xB84B0000, // 016A GETNGBL R18 K128 + 0x584C008C, // 016B LDCONST R19 K140 0x5850000D, // 016C LDCONST R20 K13 0x7C480400, // 016D CALL R18 2 0x50480000, // 016E LDBOOL R18 0 0 @@ -1795,14 +1796,14 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C482562, // 0173 EQ R18 R18 K98 0x784A0007, // 0174 JMPF R18 #017D 0xB84A5C00, // 0175 GETNGBL R18 K46 - 0x8C48258C, // 0176 GETMET R18 R18 K140 + 0x8C48258D, // 0176 GETMET R18 R18 K141 0x5C502000, // 0177 MOVE R20 R16 0x7C480400, // 0178 CALL R18 2 - 0x8C48258D, // 0179 GETMET R18 R18 K141 + 0x8C48258E, // 0179 GETMET R18 R18 K142 0x7C480200, // 017A CALL R18 1 0x5C402400, // 017B MOVE R16 R18 0x70020002, // 017C JMP #0180 - 0x8C48218D, // 017D GETMET R18 R16 K141 + 0x8C48218E, // 017D GETMET R18 R16 K142 0x7C480200, // 017E CALL R18 1 0x5C402400, // 017F MOVE R16 R18 0x60480004, // 0180 GETGBL R18 G4 @@ -1811,32 +1812,32 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C482562, // 0183 EQ R18 R18 K98 0x784A0007, // 0184 JMPF R18 #018D 0xB84A5C00, // 0185 GETNGBL R18 K46 - 0x8C48258C, // 0186 GETMET R18 R18 K140 + 0x8C48258D, // 0186 GETMET R18 R18 K141 0x5C502200, // 0187 MOVE R20 R17 0x7C480400, // 0188 CALL R18 2 - 0x8C48258D, // 0189 GETMET R18 R18 K141 + 0x8C48258E, // 0189 GETMET R18 R18 K142 0x7C480200, // 018A CALL R18 1 0x5C442400, // 018B MOVE R17 R18 0x70020002, // 018C JMP #0190 - 0x8C48238D, // 018D GETMET R18 R17 K141 + 0x8C48238E, // 018D GETMET R18 R17 K142 0x7C480200, // 018E CALL R18 1 0x5C442400, // 018F MOVE R17 R18 - 0x8C48038E, // 0190 GETMET R18 R1 K142 + 0x8C48038F, // 0190 GETMET R18 R1 K143 0x7C480200, // 0191 CALL R18 1 - 0x404E138F, // 0192 CONNECT R19 K9 K143 + 0x404E1390, // 0192 CONNECT R19 K9 K144 0x94482413, // 0193 GETIDX R18 R18 R19 0x604C0015, // 0194 GETGBL R19 G21 0x7C4C0000, // 0195 CALL R19 0 - 0x8C4C2790, // 0196 GETMET R19 R19 K144 - 0x58540091, // 0197 LDCONST R21 K145 + 0x8C4C2791, // 0196 GETMET R19 R19 K145 + 0x58540092, // 0197 LDCONST R21 K146 0x7C4C0400, // 0198 CALL R19 2 - 0x8C500992, // 0199 GETMET R20 R4 K146 + 0x8C500993, // 0199 GETMET R20 R4 K147 0x7C500200, // 019A CALL R20 1 - 0x8C542193, // 019B GETMET R21 R16 K147 + 0x8C542194, // 019B GETMET R21 R16 K148 0x7C540200, // 019C CALL R21 1 - 0x8C542B94, // 019D GETMET R21 R21 K148 + 0x8C542B95, // 019D GETMET R21 R21 K149 0x7C540200, // 019E CALL R21 1 - 0x8C582995, // 019F GETMET R22 R20 K149 + 0x8C582996, // 019F GETMET R22 R20 K150 0x5C602400, // 01A0 MOVE R24 R18 0x5C642A00, // 01A1 MOVE R25 R21 0x5C682600, // 01A2 MOVE R26 R19 @@ -1849,28 +1850,28 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x885C0136, // 01A9 GETMBR R23 R0 K54 0x885C2F4A, // 01AA GETMBR R23 R23 K74 0x885C2F4D, // 01AB GETMBR R23 R23 K77 - 0x8C601B96, // 01AC GETMET R24 R13 K150 + 0x8C601B97, // 01AC GETMET R24 R13 K151 0x5C682000, // 01AD MOVE R26 R16 0x5C6C2200, // 01AE MOVE R27 R17 0x5C702C00, // 01AF MOVE R28 R22 0x5C742E00, // 01B0 MOVE R29 R23 0x7C600A00, // 01B1 CALL R24 5 - 0x8C601B97, // 01B2 GETMET R24 R13 K151 + 0x8C601B98, // 01B2 GETMET R24 R13 K152 0x7C600200, // 01B3 CALL R24 1 0x88600136, // 01B4 GETMBR R24 R0 K54 0x8860314A, // 01B5 GETMBR R24 R24 K74 - 0x8C603198, // 01B6 GETMET R24 R24 K152 + 0x8C603199, // 01B6 GETMET R24 R24 K153 0x5C681A00, // 01B7 MOVE R26 R13 0x7C600400, // 01B8 CALL R24 2 - 0x8C600399, // 01B9 GETMET R24 R1 K153 + 0x8C60039A, // 01B9 GETMET R24 R1 K154 0x7C600200, // 01BA CALL R24 1 0x78620002, // 01BB JMPF R24 #01BF - 0x8C60039A, // 01BC GETMET R24 R1 K154 + 0x8C60039B, // 01BC GETMET R24 R1 K155 0x546A003B, // 01BD LDINT R26 60 0x7C600400, // 01BE CALL R24 2 - 0x8C601B9B, // 01BF GETMET R24 R13 K155 + 0x8C601B9C, // 01BF GETMET R24 R13 K156 0x7C600200, // 01C0 CALL R24 1 - 0x8C601B9C, // 01C1 GETMET R24 R13 K156 + 0x8C601B9D, // 01C1 GETMET R24 R13 K157 0x7C600200, // 01C2 CALL R24 1 0x8C600B0A, // 01C3 GETMET R24 R5 K10 0x7C600200, // 01C4 CALL R24 1 @@ -1878,7 +1879,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x586C0005, // 01C6 LDCONST R27 K5 0x88700B0E, // 01C7 GETMBR R28 R5 K14 0xB8760200, // 01C8 GETNGBL R29 K1 - 0x88743B7E, // 01C9 GETMBR R29 R29 K126 + 0x88743B7F, // 01C9 GETMBR R29 R29 K127 0x7C640800, // 01CA CALL R25 4 0x8C64310B, // 01CB GETMET R25 R24 K11 0x586C0009, // 01CC LDCONST R27 K9 @@ -1896,20 +1897,20 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C200541, // 01D8 GETMET R8 R2 K65 0x58280005, // 01D9 LDCONST R10 K5 0x7C200400, // 01DA CALL R8 2 - 0x8C24039D, // 01DB GETMET R9 R1 K157 + 0x8C24039E, // 01DB GETMET R9 R1 K158 0x5C2C1000, // 01DC MOVE R11 R8 0x7C240400, // 01DD CALL R9 2 - 0xB826FE00, // 01DE GETNGBL R9 K127 + 0xB8270000, // 01DE GETNGBL R9 K128 0x60280018, // 01DF GETGBL R10 G24 - 0x582C009E, // 01E0 LDCONST R11 K158 + 0x582C009F, // 01E0 LDCONST R11 K159 0x88300349, // 01E1 GETMBR R12 R1 K73 - 0x8C30199F, // 01E2 GETMET R12 R12 K159 + 0x8C3019A0, // 01E2 GETMET R12 R12 K160 0x7C300200, // 01E3 CALL R12 1 - 0x8C301993, // 01E4 GETMET R12 R12 K147 + 0x8C301994, // 01E4 GETMET R12 R12 K148 0x7C300200, // 01E5 CALL R12 1 - 0x8C301994, // 01E6 GETMET R12 R12 K148 + 0x8C301995, // 01E6 GETMET R12 R12 K149 0x7C300200, // 01E7 CALL R12 1 - 0x8C3019A0, // 01E8 GETMET R12 R12 K160 + 0x8C3019A1, // 01E8 GETMET R12 R12 K161 0x7C300200, // 01E9 CALL R12 1 0x60340008, // 01EA GETGBL R13 G8 0x5C381000, // 01EB MOVE R14 R8 @@ -1923,7 +1924,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x58300005, // 01F3 LDCONST R12 K5 0x88340B0E, // 01F4 GETMBR R13 R5 K14 0xB83A0200, // 01F5 GETNGBL R14 K1 - 0x88381D7E, // 01F6 GETMBR R14 R14 K126 + 0x88381D7F, // 01F6 GETMBR R14 R14 K127 0x7C280800, // 01F7 CALL R10 4 0x8C28130B, // 01F8 GETMET R10 R9 K11 0x58300009, // 01F9 LDCONST R12 K9 @@ -1946,8 +1947,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x60240008, // 020A GETGBL R9 G8 0x5C281000, // 020B MOVE R10 R8 0x7C240200, // 020C CALL R9 1 - 0x00274209, // 020D ADD R9 K161 R9 - 0x900EFE09, // 020E SETMBR R3 K127 R9 + 0x00274409, // 020D ADD R9 K162 R9 + 0x900F0009, // 020E SETMBR R3 K128 R9 0x60240010, // 020F GETGBL R9 G16 0x88280136, // 0210 GETMBR R10 R0 K54 0x88281537, // 0211 GETMBR R10 R10 K55 @@ -1961,10 +1962,10 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x7C2C0200, // 0219 CALL R11 1 0x1C2C1608, // 021A EQ R11 R11 R8 0x782E0018, // 021B JMPF R11 #0235 - 0x8C2C15A2, // 021C GETMET R11 R10 K162 + 0x8C2C15A3, // 021C GETMET R11 R10 K163 0x7C2C0200, // 021D CALL R11 1 0xB82E2400, // 021E GETNGBL R11 K18 - 0x8C2C17A3, // 021F GETMET R11 R11 K163 + 0x8C2C17A4, // 021F GETMET R11 R11 K164 0x543607CF, // 0220 LDINT R13 2000 0x84380000, // 0221 CLOSURE R14 P0 0x7C2C0600, // 0222 CALL R11 3 @@ -1974,7 +1975,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x58380005, // 0226 LDCONST R14 K5 0x883C0B0E, // 0227 GETMBR R15 R5 K14 0xB8420200, // 0228 GETNGBL R16 K1 - 0x8840217E, // 0229 GETMBR R16 R16 K126 + 0x8840217F, // 0229 GETMBR R16 R16 K127 0x7C300800, // 022A CALL R12 4 0x8C30170B, // 022B GETMET R12 R11 K11 0x58380009, // 022C LDCONST R14 K9 @@ -1991,12 +1992,12 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x5824003E, // 0237 LDCONST R9 K62 0xAC240200, // 0238 CATCH R9 1 0 0xB0080000, // 0239 RAISE 2 R0 R0 - 0xB826FE00, // 023A GETNGBL R9 K127 + 0xB8270000, // 023A GETNGBL R9 K128 0x60280008, // 023B GETGBL R10 G8 0x5C2C1000, // 023C MOVE R11 R8 0x7C280200, // 023D CALL R10 1 - 0x002B480A, // 023E ADD R10 K164 R10 - 0x002815A5, // 023F ADD R10 R10 K165 + 0x002B4A0A, // 023E ADD R10 K165 R10 + 0x002815A6, // 023F ADD R10 R10 K166 0x582C000D, // 0240 LDCONST R11 K13 0x7C240400, // 0241 CALL R9 2 0xB8260200, // 0242 GETNGBL R9 K1 @@ -2026,15 +2027,15 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C300541, // 025A GETMET R12 R2 K65 0x543A0003, // 025B LDINT R14 4 0x7C300400, // 025C CALL R12 2 - 0xB836FE00, // 025D GETNGBL R13 K127 + 0xB8370000, // 025D GETNGBL R13 K128 0x60380018, // 025E GETGBL R14 G24 - 0x583C00A6, // 025F LDCONST R15 K166 + 0x583C00A7, // 025F LDCONST R15 K167 0x5C401000, // 0260 MOVE R16 R8 - 0x8C4413A0, // 0261 GETMET R17 R9 K160 + 0x8C4413A1, // 0261 GETMET R17 R9 K161 0x7C440200, // 0262 CALL R17 1 0x5C481400, // 0263 MOVE R18 R10 0x5C4C1600, // 0264 MOVE R19 R11 - 0x8C5019A0, // 0265 GETMET R20 R12 K160 + 0x8C5019A1, // 0265 GETMET R20 R12 K161 0x7C500200, // 0266 CALL R20 1 0x7C380C00, // 0267 CALL R14 6 0x543E0003, // 0268 LDINT R15 4 @@ -2055,7 +2056,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x1C34180D, // 0277 EQ R13 R12 R13 0x78360005, // 0278 JMPF R13 #027F 0xB8360200, // 0279 GETNGBL R13 K1 - 0x88341BA7, // 027A GETMBR R13 R13 K167 + 0x88341BA8, // 027A GETMBR R13 R13 K168 0x900EC80D, // 027B SETMBR R3 K100 R13 0x4C340000, // 027C LDNIL R13 0xA0000000, // 027D CLOSE R0 @@ -2080,8 +2081,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x543A001F, // 0290 LDINT R14 32 0x24341A0E, // 0291 GT R13 R13 R14 0x78360009, // 0292 JMPF R13 #029D - 0xB836FE00, // 0293 GETNGBL R13 K127 - 0x583800A8, // 0294 LDCONST R14 K168 + 0xB8370000, // 0293 GETNGBL R13 K128 + 0x583800A9, // 0294 LDCONST R14 K169 0x583C000D, // 0295 LDCONST R15 K13 0x7C340400, // 0296 CALL R13 2 0xB8360200, // 0297 GETNGBL R13 K1 @@ -2094,11 +2095,11 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x40360A0D, // 029E CONNECT R13 K5 R13 0x9434120D, // 029F GETIDX R13 R9 R13 0x543A001F, // 02A0 LDINT R14 32 - 0x40381D8F, // 02A1 CONNECT R14 R14 K143 + 0x40381D90, // 02A1 CONNECT R14 R14 K144 0x9438120E, // 02A2 GETIDX R14 R9 R14 0x883C0136, // 02A3 GETMBR R15 R0 K54 0x883C1F4A, // 02A4 GETMBR R15 R15 K74 - 0x8C3C1FA9, // 02A5 GETMET R15 R15 K169 + 0x8C3C1FAA, // 02A5 GETMET R15 R15 K170 0x5C441000, // 02A6 MOVE R17 R8 0x5C481600, // 02A7 MOVE R18 R11 0x5C4C1400, // 02A8 MOVE R19 R10 @@ -2117,16 +2118,16 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x8C200541, // 02B5 GETMET R8 R2 K65 0x58280005, // 02B6 LDCONST R10 K5 0x7C200400, // 02B7 CALL R8 2 - 0xB826FE00, // 02B8 GETNGBL R9 K127 + 0xB8270000, // 02B8 GETNGBL R9 K128 0x60280008, // 02B9 GETGBL R10 G8 0x5C2C1000, // 02BA MOVE R11 R8 0x7C280200, // 02BB CALL R10 1 - 0x002B540A, // 02BC ADD R10 K170 R10 + 0x002B560A, // 02BC ADD R10 K171 R10 0x582C000F, // 02BD LDCONST R11 K15 0x7C240400, // 02BE CALL R9 2 0x88240136, // 02BF GETMBR R9 R0 K54 0x8824134A, // 02C0 GETMBR R9 R9 K74 - 0x8C2413AB, // 02C1 GETMET R9 R9 K171 + 0x8C2413AC, // 02C1 GETMET R9 R9 K172 0x5C2C1000, // 02C2 MOVE R11 R8 0x7C240400, // 02C3 CALL R9 2 0x50240200, // 02C4 LDBOOL R9 1 0 @@ -2137,7 +2138,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x78220006, // 02C9 JMPF R8 #02D1 0x88200136, // 02CA GETMBR R8 R0 K54 0x8820114A, // 02CB GETMBR R8 R8 K74 - 0x8C2011AC, // 02CC GETMET R8 R8 K172 + 0x8C2011AD, // 02CC GETMET R8 R8 K173 0x7C200200, // 02CD CALL R8 1 0x50200200, // 02CE LDBOOL R8 1 0 0xA0000000, // 02CF CLOSE R0 @@ -2155,7 +2156,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */ 0x60200003, // 02DB GETGBL R8 G3 0x5C240000, // 02DC MOVE R9 R0 0x7C200200, // 02DD CALL R8 1 - 0x8C2011AD, // 02DE GETMET R8 R8 K173 + 0x8C2011AE, // 02DE GETMET R8 R8 K174 0x5C280200, // 02DF MOVE R10 R1 0x5C2C0400, // 02E0 MOVE R11 R2 0x5C300600, // 02E1 MOVE R12 R3