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); char * hex_out = be_pushbuffer(vm, hex_len);
be_bytes_tohex(hex_out, hex_len, bufptr, 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); be_pop(vm, 1);
} else if (ins->super || ins->sub) { } else if (ins->super || ins->sub) {
be_raise(vm, "internal_error", "instance must not have a super/sub class"); 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_0.h"
#include "solidify/solidified_Matter_Path_1_PathGenerator.h" #include "solidify/solidified_Matter_Path_1_PathGenerator.h"
#include "solidify/solidified_Matter_Path_1_EventGenerator.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_TLV.h"
#include "solidify/solidified_Matter_IM_Data.h" #include "solidify/solidified_Matter_IM_Data.h"
#include "solidify/solidified_Matter_UDPServer.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_UI.h"
#include "solidify/solidified_Matter_Profiler.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_Root.h"
#include "solidify/solidified_Matter_Plugin_1_Aggregator.h" #include "solidify/solidified_Matter_Plugin_1_Aggregator.h"
#include "solidify/solidified_Matter_Plugin_1_Device.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_Plugin_z_All.h"
#include "solidify/solidified_Matter_zz_Device.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" #include "be_fixed_matter.h"
/* @const_object_info_begin /* @const_object_info_begin
@@ -494,13 +473,7 @@ module matter (scope: global, strings: weak) {
Device, class(be_class_Matter_Device) Device, class(be_class_Matter_Device)
// credentials from example // credentials from example
PAI_Cert_FFF1, func(matter_PAI_Cert_FFF1) Certs, class(be_class_Matter_Certs)
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
// Plugins - only the core classes, all others are taken from `matter_device.plugins_classes` // 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 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 # ID=1
# 0=Certificate (octstr) # 0=Certificate (octstr)
var ccr = TLV.Matter_TLV_struct() 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 ctx.command = 0x03 # CertificateChainResponse
return ccr return ccr
@@ -1033,7 +1033,7 @@ class Matter_Plugin_Root : Matter_Plugin
# build Attestation Elements 11.17.5.4 p.707 # build Attestation Elements 11.17.5.4 p.707
var att_elts = TLV.Matter_TLV_struct() 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(2, TLV.B1, AttestationNonce) # attestation_nonce
att_elts.add_TLV(3, TLV.U4, tasmota.rtc_utc()) # timestamp in epoch-s att_elts.add_TLV(3, TLV.U4, tasmota.rtc_utc()) # timestamp in epoch-s
var attestation_message = att_elts.tlv2raw() var attestation_message = att_elts.tlv2raw()
@@ -1042,7 +1042,7 @@ class Matter_Plugin_Root : Matter_Plugin
var attestation_tbs = attestation_message + ac var attestation_tbs = attestation_message + ac
# log("MTR: attestation_tbs=" + attestation_tbs.tohex(), 4) # 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 # create AttestationResponse
# 0=AttestationElements (octstr max 900 bytes) # 0=AttestationElements (octstr max 900 bytes)
@@ -1069,7 +1069,7 @@ class Matter_Plugin_Root : Matter_Plugin
# sign with attestation challenge # sign with attestation challenge
var nocsr_tbs = nocsr_elements_message + session.get_ac() var nocsr_tbs = nocsr_elements_message + session.get_ac()
# log("MTR: nocsr_tbs=" + nocsr_tbs.tohex(), 4) # 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 # create CSRResponse
# 0=NOCSRElements (octstr max 900 bytes) # 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 * * Generated code, don't edit *
\********************************************************************/ \********************************************************************/
#include "be_constobj.h" #include "be_constobj.h"
// compact class 'Matter_Plugin_Root' ktab size: 174, total: 228 (saved 432 bytes) // compact class 'Matter_Plugin_Root' ktab size: 175, total: 229 (saved 432 bytes)
static const bvalue be_ktab_class_Matter_Plugin_Root[174] = { static const bvalue be_ktab_class_Matter_Plugin_Root[175] = {
/* K0 */ be_nested_str_weak(string), /* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(TLV), /* 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), /* K113 */ be_nested_str_weak(context_error),
/* K114 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached), /* K114 */ be_nested_str_weak(CommissioningComplete_X3A_X20no_X20fabric_X20attached),
/* K115 */ be_nested_str_weak(UNSUPPORTED_COMMAND), /* K115 */ be_nested_str_weak(UNSUPPORTED_COMMAND),
/* K116 */ be_nested_str_weak(DAC_Cert_FFF1_8000), /* K116 */ be_nested_str_weak(Certs),
/* K117 */ be_nested_str_weak(PAI_Cert_FFF1), /* K117 */ be_nested_str_weak(DAC_Cert_FFF1_8000),
/* K118 */ be_nested_str_weak(CD_FFF1_8000), /* K118 */ be_nested_str_weak(PAI_Cert_FFF1),
/* K119 */ be_nested_str_weak(tlv2raw), /* K119 */ be_nested_str_weak(CD_FFF1_8000),
/* K120 */ be_nested_str_weak(get_ac), /* K120 */ be_nested_str_weak(tlv2raw),
/* K121 */ be_nested_str_weak(EC_P256), /* K121 */ be_nested_str_weak(get_ac),
/* K122 */ be_nested_str_weak(ecdsa_sign_sha256), /* K122 */ be_nested_str_weak(EC_P256),
/* K123 */ be_nested_str_weak(DAC_Priv_FFF1_8000), /* K123 */ be_nested_str_weak(ecdsa_sign_sha256),
/* K124 */ be_nested_str_weak(gen_CSR), /* K124 */ be_nested_str_weak(DAC_Priv_FFF1_8000),
/* K125 */ be_nested_str_weak(set_temp_ca), /* K125 */ be_nested_str_weak(gen_CSR),
/* K126 */ be_nested_str_weak(SUCCESS), /* K126 */ be_nested_str_weak(set_temp_ca),
/* K127 */ be_nested_str_weak(log), /* K127 */ be_nested_str_weak(SUCCESS),
/* K128 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D), /* K128 */ be_nested_str_weak(log),
/* K129 */ be_nested_str_weak(get_temp_ca), /* K129 */ be_nested_str_weak(MTR_X3A_X20AddNoc_X20Args_X3D),
/* K130 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA), /* K130 */ be_nested_str_weak(get_temp_ca),
/* K131 */ be_nested_str_weak(create_fabric), /* K131 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20AdNOC_X20without_X20CA),
/* K132 */ be_nested_str_weak(set_ca), /* K132 */ be_nested_str_weak(create_fabric),
/* K133 */ be_nested_str_weak(set_noc_icac), /* K133 */ be_nested_str_weak(set_ca),
/* K134 */ be_nested_str_weak(set_ipk_epoch_key), /* K134 */ be_nested_str_weak(set_noc_icac),
/* K135 */ be_nested_str_weak(set_admin_subject_vendor), /* K135 */ be_nested_str_weak(set_ipk_epoch_key),
/* K136 */ be_nested_str_weak(set_pk), /* K136 */ be_nested_str_weak(set_admin_subject_vendor),
/* K137 */ be_nested_str_weak(get_pk), /* K137 */ be_nested_str_weak(set_pk),
/* K138 */ be_nested_str_weak(findsub), /* K138 */ be_nested_str_weak(get_pk),
/* K139 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate), /* K139 */ be_nested_str_weak(findsub),
/* K140 */ be_nested_str_weak(fromu32), /* K140 */ be_nested_str_weak(MTR_X3A_X20Error_X3A_X20no_X20fabricid_X20nor_X20deviceid_X20in_X20NOC_X20certificate),
/* K141 */ be_nested_str_weak(tobytes), /* K141 */ be_nested_str_weak(fromu32),
/* K142 */ be_nested_str_weak(get_temp_ca_pub), /* K142 */ be_nested_str_weak(tobytes),
/* K143 */ be_const_int(2147483647), /* K143 */ be_nested_str_weak(get_temp_ca_pub),
/* K144 */ be_nested_str_weak(fromstring), /* K144 */ be_const_int(2147483647),
/* K145 */ be_nested_str_weak(CompressedFabric), /* K145 */ be_nested_str_weak(fromstring),
/* K146 */ be_nested_str_weak(HKDF_SHA256), /* K146 */ be_nested_str_weak(CompressedFabric),
/* K147 */ be_nested_str_weak(copy), /* K147 */ be_nested_str_weak(HKDF_SHA256),
/* K148 */ be_nested_str_weak(reverse), /* K148 */ be_nested_str_weak(copy),
/* K149 */ be_nested_str_weak(derive), /* K149 */ be_nested_str_weak(reverse),
/* K150 */ be_nested_str_weak(set_fabric_device), /* K150 */ be_nested_str_weak(derive),
/* K151 */ be_nested_str_weak(fabric_candidate), /* K151 */ be_nested_str_weak(set_fabric_device),
/* K152 */ be_nested_str_weak(start_operational_discovery_deferred), /* K152 */ be_nested_str_weak(fabric_candidate),
/* K153 */ be_nested_str_weak(is_PASE), /* K153 */ be_nested_str_weak(start_operational_discovery_deferred),
/* K154 */ be_nested_str_weak(set_expire_in_seconds), /* K154 */ be_nested_str_weak(is_PASE),
/* K155 */ be_nested_str_weak(log_new_fabric), /* K155 */ be_nested_str_weak(set_expire_in_seconds),
/* K156 */ be_nested_str_weak(assign_fabric_index), /* K156 */ be_nested_str_weak(log_new_fabric),
/* K157 */ be_nested_str_weak(set_fabric_label), /* K157 */ be_nested_str_weak(assign_fabric_index),
/* 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), /* K158 */ be_nested_str_weak(set_fabric_label),
/* K159 */ be_nested_str_weak(get_fabric_id), /* 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(tohex), /* K160 */ be_nested_str_weak(get_fabric_id),
/* K161 */ be_nested_str_weak(fabric_index_X3A), /* K161 */ be_nested_str_weak(tohex),
/* K162 */ be_nested_str_weak(mark_for_deletion), /* K162 */ be_nested_str_weak(fabric_index_X3A),
/* K163 */ be_nested_str_weak(set_timer), /* K163 */ be_nested_str_weak(mark_for_deletion),
/* K164 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28), /* K164 */ be_nested_str_weak(set_timer),
/* K165 */ be_nested_str_weak(_X29_X20not_X20found), /* K165 */ be_nested_str_weak(MTR_X3A_X20RemoveFabric_X20fabric_X28),
/* 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), /* K166 */ be_nested_str_weak(_X29_X20not_X20found),
/* K167 */ be_nested_str_weak(INVALID_DATA_TYPE), /* 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(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters), /* K168 */ be_nested_str_weak(INVALID_DATA_TYPE),
/* K169 */ be_nested_str_weak(start_basic_commissioning), /* K169 */ be_nested_str_weak(MTR_X3A_X20wrong_X20size_X20for_X20PAKE_X20parameters),
/* K170 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D), /* K170 */ be_nested_str_weak(start_basic_commissioning),
/* K171 */ be_nested_str_weak(start_root_basic_commissioning), /* K171 */ be_nested_str_weak(MTR_X3A_X20OpenBasicCommissioningWindow_X20commissioning_timeout_X3D),
/* K172 */ be_nested_str_weak(stop_basic_commissioning), /* K172 */ be_nested_str_weak(start_root_basic_commissioning),
/* K173 */ be_nested_str_weak(invoke_request), /* 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 0x1C381109, // 007C EQ R14 R8 K9
0x783A0003, // 007D JMPF R14 #0082 0x783A0003, // 007D JMPF R14 #0082
0xB83A0200, // 007E GETNGBL R14 K1 0xB83A0200, // 007E GETNGBL R14 K1
0x8C381D74, // 007F GETMET R14 R14 K116 0x88381D74, // 007F GETMBR R14 R14 K116
0x7C380200, // 0080 CALL R14 1 0x88381D75, // 0080 GETMBR R14 R14 K117
0x70020002, // 0081 JMP #0085 0x70020002, // 0081 JMP #0085
0xB83A0200, // 0082 GETNGBL R14 K1 0xB83A0200, // 0082 GETNGBL R14 K1
0x8C381D75, // 0083 GETMET R14 R14 K117 0x88381D74, // 0083 GETMBR R14 R14 K116
0x7C380200, // 0084 CALL R14 1 0x88381D76, // 0084 GETMBR R14 R14 K118
0x7C280800, // 0085 CALL R10 4 0x7C280800, // 0085 CALL R10 4
0x900ED90F, // 0086 SETMBR R3 K108 K15 0x900ED90F, // 0086 SETMBR R3 K108 K15
0x80041200, // 0087 RET 1 R9 0x80041200, // 0087 RET 1 R9
@@ -1578,8 +1579,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x58300009, // 009A LDCONST R12 K9 0x58300009, // 009A LDCONST R12 K9
0x88340B3A, // 009B GETMBR R13 R5 K58 0x88340B3A, // 009B GETMBR R13 R5 K58
0xB83A0200, // 009C GETNGBL R14 K1 0xB83A0200, // 009C GETNGBL R14 K1
0x8C381D76, // 009D GETMET R14 R14 K118 0x88381D74, // 009D GETMBR R14 R14 K116
0x7C380200, // 009E CALL R14 1 0x88381D77, // 009E GETMBR R14 R14 K119
0x7C280800, // 009F CALL R10 4 0x7C280800, // 009F CALL R10 4
0x8C28130B, // 00A0 GETMET R10 R9 K11 0x8C28130B, // 00A0 GETMET R10 R9 K11
0x5830000D, // 00A1 LDCONST R12 K13 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 0x8C381D2F, // 00A9 GETMET R14 R14 K47
0x7C380200, // 00AA CALL R14 1 0x7C380200, // 00AA CALL R14 1
0x7C280800, // 00AB CALL R10 4 0x7C280800, // 00AB CALL R10 4
0x8C281377, // 00AC GETMET R10 R9 K119 0x8C281378, // 00AC GETMET R10 R9 K120
0x7C280200, // 00AD CALL R10 1 0x7C280200, // 00AD CALL R10 1
0x8C2C0378, // 00AE GETMET R11 R1 K120 0x8C2C0379, // 00AE GETMET R11 R1 K121
0x7C2C0200, // 00AF CALL R11 1 0x7C2C0200, // 00AF CALL R11 1
0x0030140B, // 00B0 ADD R12 R10 R11 0x0030140B, // 00B0 ADD R12 R10 R11
0x8C340979, // 00B1 GETMET R13 R4 K121 0x8C34097A, // 00B1 GETMET R13 R4 K122
0x7C340200, // 00B2 CALL R13 1 0x7C340200, // 00B2 CALL R13 1
0x8C341B7A, // 00B3 GETMET R13 R13 K122 0x8C341B7B, // 00B3 GETMET R13 R13 K123
0xB83E0200, // 00B4 GETNGBL R15 K1 0xB83E0200, // 00B4 GETNGBL R15 K1
0x8C3C1F7B, // 00B5 GETMET R15 R15 K123 0x883C1F74, // 00B5 GETMBR R15 R15 K116
0x7C3C0200, // 00B6 CALL R15 1 0x883C1F7C, // 00B6 GETMBR R15 R15 K124
0x5C401800, // 00B7 MOVE R16 R12 0x5C401800, // 00B7 MOVE R16 R12
0x7C340600, // 00B8 CALL R13 3 0x7C340600, // 00B8 CALL R13 3
0x8C380B0A, // 00B9 GETMET R14 R5 K10 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 0x582C0009, // 00DA LDCONST R11 K9
0x50300000, // 00DB LDBOOL R12 0 0 0x50300000, // 00DB LDBOOL R12 0 0
0x7C240600, // 00DC CALL R9 3 0x7C240600, // 00DC CALL R9 3
0x8C28037C, // 00DD GETMET R10 R1 K124 0x8C28037D, // 00DD GETMET R10 R1 K125
0x7C280200, // 00DE CALL R10 1 0x7C280200, // 00DE CALL R10 1
0x8C2C0B0A, // 00DF GETMET R11 R5 K10 0x8C2C0B0A, // 00DF GETMET R11 R5 K10
0x7C2C0200, // 00E0 CALL R11 1 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 0x883C0B1F, // 00E8 GETMBR R15 R5 K31
0x5C401000, // 00E9 MOVE R16 R8 0x5C401000, // 00E9 MOVE R16 R8
0x7C300800, // 00EA CALL R12 4 0x7C300800, // 00EA CALL R12 4
0x8C301777, // 00EB GETMET R12 R11 K119 0x8C301778, // 00EB GETMET R12 R11 K120
0x7C300200, // 00EC CALL R12 1 0x7C300200, // 00EC CALL R12 1
0x8C340378, // 00ED GETMET R13 R1 K120 0x8C340379, // 00ED GETMET R13 R1 K121
0x7C340200, // 00EE CALL R13 1 0x7C340200, // 00EE CALL R13 1
0x0034180D, // 00EF ADD R13 R12 R13 0x0034180D, // 00EF ADD R13 R12 R13
0x8C380979, // 00F0 GETMET R14 R4 K121 0x8C38097A, // 00F0 GETMET R14 R4 K122
0x7C380200, // 00F1 CALL R14 1 0x7C380200, // 00F1 CALL R14 1
0x8C381D7A, // 00F2 GETMET R14 R14 K122 0x8C381D7B, // 00F2 GETMET R14 R14 K123
0xB8420200, // 00F3 GETNGBL R16 K1 0xB8420200, // 00F3 GETNGBL R16 K1
0x8C40217B, // 00F4 GETMET R16 R16 K123 0x88402174, // 00F4 GETMBR R16 R16 K116
0x7C400200, // 00F5 CALL R16 1 0x8840217C, // 00F5 GETMBR R16 R16 K124
0x5C441A00, // 00F6 MOVE R17 R13 0x5C441A00, // 00F6 MOVE R17 R13
0x7C380600, // 00F7 CALL R14 3 0x7C380600, // 00F7 CALL R14 3
0x8C3C0B0A, // 00F8 GETMET R15 R5 K10 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 0x8C200541, // 010B GETMET R8 R2 K65
0x58280005, // 010C LDCONST R10 K5 0x58280005, // 010C LDCONST R10 K5
0x7C200400, // 010D CALL R8 2 0x7C200400, // 010D CALL R8 2
0x8C24037D, // 010E GETMET R9 R1 K125 0x8C24037E, // 010E GETMET R9 R1 K126
0x5C2C1000, // 010F MOVE R11 R8 0x5C2C1000, // 010F MOVE R11 R8
0x7C240400, // 0110 CALL R9 2 0x7C240400, // 0110 CALL R9 2
0xB8260200, // 0111 GETNGBL R9 K1 0xB8260200, // 0111 GETNGBL R9 K1
0x8824137E, // 0112 GETMBR R9 R9 K126 0x8824137F, // 0112 GETMBR R9 R9 K127
0x900EC809, // 0113 SETMBR R3 K100 R9 0x900EC809, // 0113 SETMBR R3 K100 R9
0x4C240000, // 0114 LDNIL R9 0x4C240000, // 0114 LDNIL R9
0x80041200, // 0115 RET 1 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 0x54220005, // 0117 LDINT R8 6
0x1C200E08, // 0118 EQ R8 R7 R8 0x1C200E08, // 0118 EQ R8 R7 R8
0x782200BA, // 0119 JMPF R8 #01D5 0x782200BA, // 0119 JMPF R8 #01D5
0xB822FE00, // 011A GETNGBL R8 K127 0xB8230000, // 011A GETNGBL R8 K128
0x60240008, // 011B GETGBL R9 G8 0x60240008, // 011B GETGBL R9 G8
0x5C280400, // 011C MOVE R10 R2 0x5C280400, // 011C MOVE R10 R2
0x7C240200, // 011D CALL R9 1 0x7C240200, // 011D CALL R9 1
0x00270009, // 011E ADD R9 K128 R9 0x00270209, // 011E ADD R9 K129 R9
0x542A0003, // 011F LDINT R10 4 0x542A0003, // 011F LDINT R10 4
0x7C200400, // 0120 CALL R8 2 0x7C200400, // 0120 CALL R8 2
0x8C200541, // 0121 GETMET R8 R2 K65 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 0x8C300541, // 0133 GETMET R12 R2 K65
0x543A0003, // 0134 LDINT R14 4 0x543A0003, // 0134 LDINT R14 4
0x7C300400, // 0135 CALL R12 2 0x7C300400, // 0135 CALL R12 2
0x8C340381, // 0136 GETMET R13 R1 K129 0x8C340382, // 0136 GETMET R13 R1 K130
0x7C340200, // 0137 CALL R13 1 0x7C340200, // 0137 CALL R13 1
0x4C380000, // 0138 LDNIL R14 0x4C380000, // 0138 LDNIL R14
0x1C341A0E, // 0139 EQ R13 R13 R14 0x1C341A0E, // 0139 EQ R13 R13 R14
0x78360005, // 013A JMPF R13 #0141 0x78360005, // 013A JMPF R13 #0141
0xB836FE00, // 013B GETNGBL R13 K127 0xB8370000, // 013B GETNGBL R13 K128
0x58380082, // 013C LDCONST R14 K130 0x58380083, // 013C LDCONST R14 K131
0x583C000D, // 013D LDCONST R15 K13 0x583C000D, // 013D LDCONST R15 K13
0x7C340400, // 013E CALL R13 2 0x7C340400, // 013E CALL R13 2
0x4C340000, // 013F LDNIL R13 0x4C340000, // 013F LDNIL R13
0x80041A00, // 0140 RET 1 R13 0x80041A00, // 0140 RET 1 R13
0x88340136, // 0141 GETMBR R13 R0 K54 0x88340136, // 0141 GETMBR R13 R0 K54
0x88341B37, // 0142 GETMBR R13 R13 K55 0x88341B37, // 0142 GETMBR R13 R13 K55
0x8C341B83, // 0143 GETMET R13 R13 K131 0x8C341B84, // 0143 GETMET R13 R13 K132
0x7C340200, // 0144 CALL R13 1 0x7C340200, // 0144 CALL R13 1
0x8C381B84, // 0145 GETMET R14 R13 K132 0x8C381B85, // 0145 GETMET R14 R13 K133
0x8C400381, // 0146 GETMET R16 R1 K129 0x8C400382, // 0146 GETMET R16 R1 K130
0x7C400200, // 0147 CALL R16 1 0x7C400200, // 0147 CALL R16 1
0x7C380400, // 0148 CALL R14 2 0x7C380400, // 0148 CALL R14 2
0x8C381B85, // 0149 GETMET R14 R13 K133 0x8C381B86, // 0149 GETMET R14 R13 K134
0x5C401000, // 014A MOVE R16 R8 0x5C401000, // 014A MOVE R16 R8
0x5C441200, // 014B MOVE R17 R9 0x5C441200, // 014B MOVE R17 R9
0x7C380600, // 014C CALL R14 3 0x7C380600, // 014C CALL R14 3
0x8C381B86, // 014D GETMET R14 R13 K134 0x8C381B87, // 014D GETMET R14 R13 K135
0x5C401400, // 014E MOVE R16 R10 0x5C401400, // 014E MOVE R16 R10
0x7C380400, // 014F CALL R14 2 0x7C380400, // 014F CALL R14 2
0x8C381B87, // 0150 GETMET R14 R13 K135 0x8C381B88, // 0150 GETMET R14 R13 K136
0x5C401600, // 0151 MOVE R16 R11 0x5C401600, // 0151 MOVE R16 R11
0x5C441800, // 0152 MOVE R17 R12 0x5C441800, // 0152 MOVE R17 R12
0x7C380600, // 0153 CALL R14 3 0x7C380600, // 0153 CALL R14 3
0x8C381B88, // 0154 GETMET R14 R13 K136 0x8C381B89, // 0154 GETMET R14 R13 K137
0x8C400389, // 0155 GETMET R16 R1 K137 0x8C40038A, // 0155 GETMET R16 R1 K138
0x7C400200, // 0156 CALL R16 1 0x7C400200, // 0156 CALL R16 1
0x7C380400, // 0157 CALL R14 2 0x7C380400, // 0157 CALL R14 2
0xB83A0200, // 0158 GETNGBL R14 K1 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 0x8C381D3F, // 015A GETMET R14 R14 K63
0x5C401000, // 015B MOVE R16 R8 0x5C401000, // 015B MOVE R16 R8
0x7C380400, // 015C CALL R14 2 0x7C380400, // 015C CALL R14 2
0x8C3C1D8A, // 015D GETMET R15 R14 K138 0x8C3C1D8B, // 015D GETMET R15 R14 K139
0x54460005, // 015E LDINT R17 6 0x54460005, // 015E LDINT R17 6
0x7C3C0400, // 015F CALL R15 2 0x7C3C0400, // 015F CALL R15 2
0x8C401F41, // 0160 GETMET R16 R15 K65 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 0x784A0001, // 0167 JMPF R18 #016A
0x5C482200, // 0168 MOVE R18 R17 0x5C482200, // 0168 MOVE R18 R17
0x744A0005, // 0169 JMPT R18 #0170 0x744A0005, // 0169 JMPT R18 #0170
0xB84AFE00, // 016A GETNGBL R18 K127 0xB84B0000, // 016A GETNGBL R18 K128
0x584C008B, // 016B LDCONST R19 K139 0x584C008C, // 016B LDCONST R19 K140
0x5850000D, // 016C LDCONST R20 K13 0x5850000D, // 016C LDCONST R20 K13
0x7C480400, // 016D CALL R18 2 0x7C480400, // 016D CALL R18 2
0x50480000, // 016E LDBOOL R18 0 0 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 0x1C482562, // 0173 EQ R18 R18 K98
0x784A0007, // 0174 JMPF R18 #017D 0x784A0007, // 0174 JMPF R18 #017D
0xB84A5C00, // 0175 GETNGBL R18 K46 0xB84A5C00, // 0175 GETNGBL R18 K46
0x8C48258C, // 0176 GETMET R18 R18 K140 0x8C48258D, // 0176 GETMET R18 R18 K141
0x5C502000, // 0177 MOVE R20 R16 0x5C502000, // 0177 MOVE R20 R16
0x7C480400, // 0178 CALL R18 2 0x7C480400, // 0178 CALL R18 2
0x8C48258D, // 0179 GETMET R18 R18 K141 0x8C48258E, // 0179 GETMET R18 R18 K142
0x7C480200, // 017A CALL R18 1 0x7C480200, // 017A CALL R18 1
0x5C402400, // 017B MOVE R16 R18 0x5C402400, // 017B MOVE R16 R18
0x70020002, // 017C JMP #0180 0x70020002, // 017C JMP #0180
0x8C48218D, // 017D GETMET R18 R16 K141 0x8C48218E, // 017D GETMET R18 R16 K142
0x7C480200, // 017E CALL R18 1 0x7C480200, // 017E CALL R18 1
0x5C402400, // 017F MOVE R16 R18 0x5C402400, // 017F MOVE R16 R18
0x60480004, // 0180 GETGBL R18 G4 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 0x1C482562, // 0183 EQ R18 R18 K98
0x784A0007, // 0184 JMPF R18 #018D 0x784A0007, // 0184 JMPF R18 #018D
0xB84A5C00, // 0185 GETNGBL R18 K46 0xB84A5C00, // 0185 GETNGBL R18 K46
0x8C48258C, // 0186 GETMET R18 R18 K140 0x8C48258D, // 0186 GETMET R18 R18 K141
0x5C502200, // 0187 MOVE R20 R17 0x5C502200, // 0187 MOVE R20 R17
0x7C480400, // 0188 CALL R18 2 0x7C480400, // 0188 CALL R18 2
0x8C48258D, // 0189 GETMET R18 R18 K141 0x8C48258E, // 0189 GETMET R18 R18 K142
0x7C480200, // 018A CALL R18 1 0x7C480200, // 018A CALL R18 1
0x5C442400, // 018B MOVE R17 R18 0x5C442400, // 018B MOVE R17 R18
0x70020002, // 018C JMP #0190 0x70020002, // 018C JMP #0190
0x8C48238D, // 018D GETMET R18 R17 K141 0x8C48238E, // 018D GETMET R18 R17 K142
0x7C480200, // 018E CALL R18 1 0x7C480200, // 018E CALL R18 1
0x5C442400, // 018F MOVE R17 R18 0x5C442400, // 018F MOVE R17 R18
0x8C48038E, // 0190 GETMET R18 R1 K142 0x8C48038F, // 0190 GETMET R18 R1 K143
0x7C480200, // 0191 CALL R18 1 0x7C480200, // 0191 CALL R18 1
0x404E138F, // 0192 CONNECT R19 K9 K143 0x404E1390, // 0192 CONNECT R19 K9 K144
0x94482413, // 0193 GETIDX R18 R18 R19 0x94482413, // 0193 GETIDX R18 R18 R19
0x604C0015, // 0194 GETGBL R19 G21 0x604C0015, // 0194 GETGBL R19 G21
0x7C4C0000, // 0195 CALL R19 0 0x7C4C0000, // 0195 CALL R19 0
0x8C4C2790, // 0196 GETMET R19 R19 K144 0x8C4C2791, // 0196 GETMET R19 R19 K145
0x58540091, // 0197 LDCONST R21 K145 0x58540092, // 0197 LDCONST R21 K146
0x7C4C0400, // 0198 CALL R19 2 0x7C4C0400, // 0198 CALL R19 2
0x8C500992, // 0199 GETMET R20 R4 K146 0x8C500993, // 0199 GETMET R20 R4 K147
0x7C500200, // 019A CALL R20 1 0x7C500200, // 019A CALL R20 1
0x8C542193, // 019B GETMET R21 R16 K147 0x8C542194, // 019B GETMET R21 R16 K148
0x7C540200, // 019C CALL R21 1 0x7C540200, // 019C CALL R21 1
0x8C542B94, // 019D GETMET R21 R21 K148 0x8C542B95, // 019D GETMET R21 R21 K149
0x7C540200, // 019E CALL R21 1 0x7C540200, // 019E CALL R21 1
0x8C582995, // 019F GETMET R22 R20 K149 0x8C582996, // 019F GETMET R22 R20 K150
0x5C602400, // 01A0 MOVE R24 R18 0x5C602400, // 01A0 MOVE R24 R18
0x5C642A00, // 01A1 MOVE R25 R21 0x5C642A00, // 01A1 MOVE R25 R21
0x5C682600, // 01A2 MOVE R26 R19 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 0x885C0136, // 01A9 GETMBR R23 R0 K54
0x885C2F4A, // 01AA GETMBR R23 R23 K74 0x885C2F4A, // 01AA GETMBR R23 R23 K74
0x885C2F4D, // 01AB GETMBR R23 R23 K77 0x885C2F4D, // 01AB GETMBR R23 R23 K77
0x8C601B96, // 01AC GETMET R24 R13 K150 0x8C601B97, // 01AC GETMET R24 R13 K151
0x5C682000, // 01AD MOVE R26 R16 0x5C682000, // 01AD MOVE R26 R16
0x5C6C2200, // 01AE MOVE R27 R17 0x5C6C2200, // 01AE MOVE R27 R17
0x5C702C00, // 01AF MOVE R28 R22 0x5C702C00, // 01AF MOVE R28 R22
0x5C742E00, // 01B0 MOVE R29 R23 0x5C742E00, // 01B0 MOVE R29 R23
0x7C600A00, // 01B1 CALL R24 5 0x7C600A00, // 01B1 CALL R24 5
0x8C601B97, // 01B2 GETMET R24 R13 K151 0x8C601B98, // 01B2 GETMET R24 R13 K152
0x7C600200, // 01B3 CALL R24 1 0x7C600200, // 01B3 CALL R24 1
0x88600136, // 01B4 GETMBR R24 R0 K54 0x88600136, // 01B4 GETMBR R24 R0 K54
0x8860314A, // 01B5 GETMBR R24 R24 K74 0x8860314A, // 01B5 GETMBR R24 R24 K74
0x8C603198, // 01B6 GETMET R24 R24 K152 0x8C603199, // 01B6 GETMET R24 R24 K153
0x5C681A00, // 01B7 MOVE R26 R13 0x5C681A00, // 01B7 MOVE R26 R13
0x7C600400, // 01B8 CALL R24 2 0x7C600400, // 01B8 CALL R24 2
0x8C600399, // 01B9 GETMET R24 R1 K153 0x8C60039A, // 01B9 GETMET R24 R1 K154
0x7C600200, // 01BA CALL R24 1 0x7C600200, // 01BA CALL R24 1
0x78620002, // 01BB JMPF R24 #01BF 0x78620002, // 01BB JMPF R24 #01BF
0x8C60039A, // 01BC GETMET R24 R1 K154 0x8C60039B, // 01BC GETMET R24 R1 K155
0x546A003B, // 01BD LDINT R26 60 0x546A003B, // 01BD LDINT R26 60
0x7C600400, // 01BE CALL R24 2 0x7C600400, // 01BE CALL R24 2
0x8C601B9B, // 01BF GETMET R24 R13 K155 0x8C601B9C, // 01BF GETMET R24 R13 K156
0x7C600200, // 01C0 CALL R24 1 0x7C600200, // 01C0 CALL R24 1
0x8C601B9C, // 01C1 GETMET R24 R13 K156 0x8C601B9D, // 01C1 GETMET R24 R13 K157
0x7C600200, // 01C2 CALL R24 1 0x7C600200, // 01C2 CALL R24 1
0x8C600B0A, // 01C3 GETMET R24 R5 K10 0x8C600B0A, // 01C3 GETMET R24 R5 K10
0x7C600200, // 01C4 CALL R24 1 0x7C600200, // 01C4 CALL R24 1
@@ -1878,7 +1879,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x586C0005, // 01C6 LDCONST R27 K5 0x586C0005, // 01C6 LDCONST R27 K5
0x88700B0E, // 01C7 GETMBR R28 R5 K14 0x88700B0E, // 01C7 GETMBR R28 R5 K14
0xB8760200, // 01C8 GETNGBL R29 K1 0xB8760200, // 01C8 GETNGBL R29 K1
0x88743B7E, // 01C9 GETMBR R29 R29 K126 0x88743B7F, // 01C9 GETMBR R29 R29 K127
0x7C640800, // 01CA CALL R25 4 0x7C640800, // 01CA CALL R25 4
0x8C64310B, // 01CB GETMET R25 R24 K11 0x8C64310B, // 01CB GETMET R25 R24 K11
0x586C0009, // 01CC LDCONST R27 K9 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 0x8C200541, // 01D8 GETMET R8 R2 K65
0x58280005, // 01D9 LDCONST R10 K5 0x58280005, // 01D9 LDCONST R10 K5
0x7C200400, // 01DA CALL R8 2 0x7C200400, // 01DA CALL R8 2
0x8C24039D, // 01DB GETMET R9 R1 K157 0x8C24039E, // 01DB GETMET R9 R1 K158
0x5C2C1000, // 01DC MOVE R11 R8 0x5C2C1000, // 01DC MOVE R11 R8
0x7C240400, // 01DD CALL R9 2 0x7C240400, // 01DD CALL R9 2
0xB826FE00, // 01DE GETNGBL R9 K127 0xB8270000, // 01DE GETNGBL R9 K128
0x60280018, // 01DF GETGBL R10 G24 0x60280018, // 01DF GETGBL R10 G24
0x582C009E, // 01E0 LDCONST R11 K158 0x582C009F, // 01E0 LDCONST R11 K159
0x88300349, // 01E1 GETMBR R12 R1 K73 0x88300349, // 01E1 GETMBR R12 R1 K73
0x8C30199F, // 01E2 GETMET R12 R12 K159 0x8C3019A0, // 01E2 GETMET R12 R12 K160
0x7C300200, // 01E3 CALL R12 1 0x7C300200, // 01E3 CALL R12 1
0x8C301993, // 01E4 GETMET R12 R12 K147 0x8C301994, // 01E4 GETMET R12 R12 K148
0x7C300200, // 01E5 CALL R12 1 0x7C300200, // 01E5 CALL R12 1
0x8C301994, // 01E6 GETMET R12 R12 K148 0x8C301995, // 01E6 GETMET R12 R12 K149
0x7C300200, // 01E7 CALL R12 1 0x7C300200, // 01E7 CALL R12 1
0x8C3019A0, // 01E8 GETMET R12 R12 K160 0x8C3019A1, // 01E8 GETMET R12 R12 K161
0x7C300200, // 01E9 CALL R12 1 0x7C300200, // 01E9 CALL R12 1
0x60340008, // 01EA GETGBL R13 G8 0x60340008, // 01EA GETGBL R13 G8
0x5C381000, // 01EB MOVE R14 R8 0x5C381000, // 01EB MOVE R14 R8
@@ -1923,7 +1924,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x58300005, // 01F3 LDCONST R12 K5 0x58300005, // 01F3 LDCONST R12 K5
0x88340B0E, // 01F4 GETMBR R13 R5 K14 0x88340B0E, // 01F4 GETMBR R13 R5 K14
0xB83A0200, // 01F5 GETNGBL R14 K1 0xB83A0200, // 01F5 GETNGBL R14 K1
0x88381D7E, // 01F6 GETMBR R14 R14 K126 0x88381D7F, // 01F6 GETMBR R14 R14 K127
0x7C280800, // 01F7 CALL R10 4 0x7C280800, // 01F7 CALL R10 4
0x8C28130B, // 01F8 GETMET R10 R9 K11 0x8C28130B, // 01F8 GETMET R10 R9 K11
0x58300009, // 01F9 LDCONST R12 K9 0x58300009, // 01F9 LDCONST R12 K9
@@ -1946,8 +1947,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x60240008, // 020A GETGBL R9 G8 0x60240008, // 020A GETGBL R9 G8
0x5C281000, // 020B MOVE R10 R8 0x5C281000, // 020B MOVE R10 R8
0x7C240200, // 020C CALL R9 1 0x7C240200, // 020C CALL R9 1
0x00274209, // 020D ADD R9 K161 R9 0x00274409, // 020D ADD R9 K162 R9
0x900EFE09, // 020E SETMBR R3 K127 R9 0x900F0009, // 020E SETMBR R3 K128 R9
0x60240010, // 020F GETGBL R9 G16 0x60240010, // 020F GETGBL R9 G16
0x88280136, // 0210 GETMBR R10 R0 K54 0x88280136, // 0210 GETMBR R10 R0 K54
0x88281537, // 0211 GETMBR R10 R10 K55 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 0x7C2C0200, // 0219 CALL R11 1
0x1C2C1608, // 021A EQ R11 R11 R8 0x1C2C1608, // 021A EQ R11 R11 R8
0x782E0018, // 021B JMPF R11 #0235 0x782E0018, // 021B JMPF R11 #0235
0x8C2C15A2, // 021C GETMET R11 R10 K162 0x8C2C15A3, // 021C GETMET R11 R10 K163
0x7C2C0200, // 021D CALL R11 1 0x7C2C0200, // 021D CALL R11 1
0xB82E2400, // 021E GETNGBL R11 K18 0xB82E2400, // 021E GETNGBL R11 K18
0x8C2C17A3, // 021F GETMET R11 R11 K163 0x8C2C17A4, // 021F GETMET R11 R11 K164
0x543607CF, // 0220 LDINT R13 2000 0x543607CF, // 0220 LDINT R13 2000
0x84380000, // 0221 CLOSURE R14 P0 0x84380000, // 0221 CLOSURE R14 P0
0x7C2C0600, // 0222 CALL R11 3 0x7C2C0600, // 0222 CALL R11 3
@@ -1974,7 +1975,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x58380005, // 0226 LDCONST R14 K5 0x58380005, // 0226 LDCONST R14 K5
0x883C0B0E, // 0227 GETMBR R15 R5 K14 0x883C0B0E, // 0227 GETMBR R15 R5 K14
0xB8420200, // 0228 GETNGBL R16 K1 0xB8420200, // 0228 GETNGBL R16 K1
0x8840217E, // 0229 GETMBR R16 R16 K126 0x8840217F, // 0229 GETMBR R16 R16 K127
0x7C300800, // 022A CALL R12 4 0x7C300800, // 022A CALL R12 4
0x8C30170B, // 022B GETMET R12 R11 K11 0x8C30170B, // 022B GETMET R12 R11 K11
0x58380009, // 022C LDCONST R14 K9 0x58380009, // 022C LDCONST R14 K9
@@ -1991,12 +1992,12 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x5824003E, // 0237 LDCONST R9 K62 0x5824003E, // 0237 LDCONST R9 K62
0xAC240200, // 0238 CATCH R9 1 0 0xAC240200, // 0238 CATCH R9 1 0
0xB0080000, // 0239 RAISE 2 R0 R0 0xB0080000, // 0239 RAISE 2 R0 R0
0xB826FE00, // 023A GETNGBL R9 K127 0xB8270000, // 023A GETNGBL R9 K128
0x60280008, // 023B GETGBL R10 G8 0x60280008, // 023B GETGBL R10 G8
0x5C2C1000, // 023C MOVE R11 R8 0x5C2C1000, // 023C MOVE R11 R8
0x7C280200, // 023D CALL R10 1 0x7C280200, // 023D CALL R10 1
0x002B480A, // 023E ADD R10 K164 R10 0x002B4A0A, // 023E ADD R10 K165 R10
0x002815A5, // 023F ADD R10 R10 K165 0x002815A6, // 023F ADD R10 R10 K166
0x582C000D, // 0240 LDCONST R11 K13 0x582C000D, // 0240 LDCONST R11 K13
0x7C240400, // 0241 CALL R9 2 0x7C240400, // 0241 CALL R9 2
0xB8260200, // 0242 GETNGBL R9 K1 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 0x8C300541, // 025A GETMET R12 R2 K65
0x543A0003, // 025B LDINT R14 4 0x543A0003, // 025B LDINT R14 4
0x7C300400, // 025C CALL R12 2 0x7C300400, // 025C CALL R12 2
0xB836FE00, // 025D GETNGBL R13 K127 0xB8370000, // 025D GETNGBL R13 K128
0x60380018, // 025E GETGBL R14 G24 0x60380018, // 025E GETGBL R14 G24
0x583C00A6, // 025F LDCONST R15 K166 0x583C00A7, // 025F LDCONST R15 K167
0x5C401000, // 0260 MOVE R16 R8 0x5C401000, // 0260 MOVE R16 R8
0x8C4413A0, // 0261 GETMET R17 R9 K160 0x8C4413A1, // 0261 GETMET R17 R9 K161
0x7C440200, // 0262 CALL R17 1 0x7C440200, // 0262 CALL R17 1
0x5C481400, // 0263 MOVE R18 R10 0x5C481400, // 0263 MOVE R18 R10
0x5C4C1600, // 0264 MOVE R19 R11 0x5C4C1600, // 0264 MOVE R19 R11
0x8C5019A0, // 0265 GETMET R20 R12 K160 0x8C5019A1, // 0265 GETMET R20 R12 K161
0x7C500200, // 0266 CALL R20 1 0x7C500200, // 0266 CALL R20 1
0x7C380C00, // 0267 CALL R14 6 0x7C380C00, // 0267 CALL R14 6
0x543E0003, // 0268 LDINT R15 4 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 0x1C34180D, // 0277 EQ R13 R12 R13
0x78360005, // 0278 JMPF R13 #027F 0x78360005, // 0278 JMPF R13 #027F
0xB8360200, // 0279 GETNGBL R13 K1 0xB8360200, // 0279 GETNGBL R13 K1
0x88341BA7, // 027A GETMBR R13 R13 K167 0x88341BA8, // 027A GETMBR R13 R13 K168
0x900EC80D, // 027B SETMBR R3 K100 R13 0x900EC80D, // 027B SETMBR R3 K100 R13
0x4C340000, // 027C LDNIL R13 0x4C340000, // 027C LDNIL R13
0xA0000000, // 027D CLOSE R0 0xA0000000, // 027D CLOSE R0
@@ -2080,8 +2081,8 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x543A001F, // 0290 LDINT R14 32 0x543A001F, // 0290 LDINT R14 32
0x24341A0E, // 0291 GT R13 R13 R14 0x24341A0E, // 0291 GT R13 R13 R14
0x78360009, // 0292 JMPF R13 #029D 0x78360009, // 0292 JMPF R13 #029D
0xB836FE00, // 0293 GETNGBL R13 K127 0xB8370000, // 0293 GETNGBL R13 K128
0x583800A8, // 0294 LDCONST R14 K168 0x583800A9, // 0294 LDCONST R14 K169
0x583C000D, // 0295 LDCONST R15 K13 0x583C000D, // 0295 LDCONST R15 K13
0x7C340400, // 0296 CALL R13 2 0x7C340400, // 0296 CALL R13 2
0xB8360200, // 0297 GETNGBL R13 K1 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 0x40360A0D, // 029E CONNECT R13 K5 R13
0x9434120D, // 029F GETIDX R13 R9 R13 0x9434120D, // 029F GETIDX R13 R9 R13
0x543A001F, // 02A0 LDINT R14 32 0x543A001F, // 02A0 LDINT R14 32
0x40381D8F, // 02A1 CONNECT R14 R14 K143 0x40381D90, // 02A1 CONNECT R14 R14 K144
0x9438120E, // 02A2 GETIDX R14 R9 R14 0x9438120E, // 02A2 GETIDX R14 R9 R14
0x883C0136, // 02A3 GETMBR R15 R0 K54 0x883C0136, // 02A3 GETMBR R15 R0 K54
0x883C1F4A, // 02A4 GETMBR R15 R15 K74 0x883C1F4A, // 02A4 GETMBR R15 R15 K74
0x8C3C1FA9, // 02A5 GETMET R15 R15 K169 0x8C3C1FAA, // 02A5 GETMET R15 R15 K170
0x5C441000, // 02A6 MOVE R17 R8 0x5C441000, // 02A6 MOVE R17 R8
0x5C481600, // 02A7 MOVE R18 R11 0x5C481600, // 02A7 MOVE R18 R11
0x5C4C1400, // 02A8 MOVE R19 R10 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 0x8C200541, // 02B5 GETMET R8 R2 K65
0x58280005, // 02B6 LDCONST R10 K5 0x58280005, // 02B6 LDCONST R10 K5
0x7C200400, // 02B7 CALL R8 2 0x7C200400, // 02B7 CALL R8 2
0xB826FE00, // 02B8 GETNGBL R9 K127 0xB8270000, // 02B8 GETNGBL R9 K128
0x60280008, // 02B9 GETGBL R10 G8 0x60280008, // 02B9 GETGBL R10 G8
0x5C2C1000, // 02BA MOVE R11 R8 0x5C2C1000, // 02BA MOVE R11 R8
0x7C280200, // 02BB CALL R10 1 0x7C280200, // 02BB CALL R10 1
0x002B540A, // 02BC ADD R10 K170 R10 0x002B560A, // 02BC ADD R10 K171 R10
0x582C000F, // 02BD LDCONST R11 K15 0x582C000F, // 02BD LDCONST R11 K15
0x7C240400, // 02BE CALL R9 2 0x7C240400, // 02BE CALL R9 2
0x88240136, // 02BF GETMBR R9 R0 K54 0x88240136, // 02BF GETMBR R9 R0 K54
0x8824134A, // 02C0 GETMBR R9 R9 K74 0x8824134A, // 02C0 GETMBR R9 R9 K74
0x8C2413AB, // 02C1 GETMET R9 R9 K171 0x8C2413AC, // 02C1 GETMET R9 R9 K172
0x5C2C1000, // 02C2 MOVE R11 R8 0x5C2C1000, // 02C2 MOVE R11 R8
0x7C240400, // 02C3 CALL R9 2 0x7C240400, // 02C3 CALL R9 2
0x50240200, // 02C4 LDBOOL R9 1 0 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 0x78220006, // 02C9 JMPF R8 #02D1
0x88200136, // 02CA GETMBR R8 R0 K54 0x88200136, // 02CA GETMBR R8 R0 K54
0x8820114A, // 02CB GETMBR R8 R8 K74 0x8820114A, // 02CB GETMBR R8 R8 K74
0x8C2011AC, // 02CC GETMET R8 R8 K172 0x8C2011AD, // 02CC GETMET R8 R8 K173
0x7C200200, // 02CD CALL R8 1 0x7C200200, // 02CD CALL R8 1
0x50200200, // 02CE LDBOOL R8 1 0 0x50200200, // 02CE LDBOOL R8 1 0
0xA0000000, // 02CF CLOSE R0 0xA0000000, // 02CF CLOSE R0
@@ -2155,7 +2156,7 @@ be_local_closure(class_Matter_Plugin_Root_invoke_request, /* name */
0x60200003, // 02DB GETGBL R8 G3 0x60200003, // 02DB GETGBL R8 G3
0x5C240000, // 02DC MOVE R9 R0 0x5C240000, // 02DC MOVE R9 R0
0x7C200200, // 02DD CALL R8 1 0x7C200200, // 02DD CALL R8 1
0x8C2011AD, // 02DE GETMET R8 R8 K173 0x8C2011AE, // 02DE GETMET R8 R8 K174
0x5C280200, // 02DF MOVE R10 R1 0x5C280200, // 02DF MOVE R10 R1
0x5C2C0400, // 02E0 MOVE R11 R2 0x5C2C0400, // 02E0 MOVE R11 R2
0x5C300600, // 02E1 MOVE R12 R3 0x5C300600, // 02E1 MOVE R12 R3