Matter move certs to Berry (#24437)

This commit is contained in:
s-hadinger
2026-02-10 21:03:01 +01:00
committed by GitHub
parent 2744a11c8a
commit 39e87e6853
7 changed files with 538 additions and 534 deletions

View File

@@ -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");

View File

@@ -1,351 +0,0 @@
// Certificates and credentials from demo
#include <stddef.h>
#include <stdint.h>
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
};

View File

@@ -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

View File

@@ -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 <http://www.gnu.org/licenses/>.
#
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())
-#

View File

@@ -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)

View File

@@ -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 */

View File

@@ -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