Added certificate name extraction API (from subject DN and SAN extension).
This commit is contained in:
parent
fb7052216d
commit
9e71c0673a
11 changed files with 1882 additions and 975 deletions
|
|
@ -551,6 +551,76 @@ void br_x509_knownkey_init_ec(br_x509_knownkey_context *ctx,
|
||||||
#define BR_X509_BUFSIZE_SIG 512
|
#define BR_X509_BUFSIZE_SIG 512
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Type for receiving a name element.
|
||||||
|
*
|
||||||
|
* An array of such structures can be provided to the X.509 decoding
|
||||||
|
* engines. If the specified elements are found in the certificate
|
||||||
|
* subject DN or the SAN extension, then the name contents are copied
|
||||||
|
* as zero-terminated strings into the buffer.
|
||||||
|
*
|
||||||
|
* The decoder converts TeletexString and BMPString to UTF8String, and
|
||||||
|
* ensures that the resulting string is zero-terminated. If the string
|
||||||
|
* does not fit in the provided buffer, then the copy is aborted and an
|
||||||
|
* error is reported.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
/**
|
||||||
|
* \brief Element OID.
|
||||||
|
*
|
||||||
|
* For X.500 name elements (to be extracted from the subject DN),
|
||||||
|
* this is the encoded OID for the requested name element; the
|
||||||
|
* first byte shall contain the length of the DER-encoded OID
|
||||||
|
* value, followed by the OID value (for instance, OID 2.5.4.3,
|
||||||
|
* for id-at-commonName, will be `03 55 04 03`). This is
|
||||||
|
* equivalent to full DER encoding with the length but without
|
||||||
|
* the tag.
|
||||||
|
*
|
||||||
|
* For SAN name elements, the first byte (`oid[0]`) has value 0,
|
||||||
|
* followed by another byte that matches the expected GeneralName
|
||||||
|
* tag. Allowed second byte values are then:
|
||||||
|
*
|
||||||
|
* - 1: `rfc822Name`
|
||||||
|
*
|
||||||
|
* - 2: `dNSName`
|
||||||
|
*
|
||||||
|
* - 6: `uniformResourceIdentifier`
|
||||||
|
*
|
||||||
|
* - 0: `otherName`
|
||||||
|
*
|
||||||
|
* If first and second byte are 0, then this is a SAN element of
|
||||||
|
* type `otherName`; the `oid[]` array should then contain, right
|
||||||
|
* after the two bytes of value 0, an encoded OID (with the same
|
||||||
|
* conventions as for X.500 name elements). If a match is found
|
||||||
|
* for that OID, then the corresponding name element will be
|
||||||
|
* extracted, as long as it is a supported string type.
|
||||||
|
*/
|
||||||
|
const unsigned char *oid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Destination buffer.
|
||||||
|
*/
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Length (in bytes) of the destination buffer.
|
||||||
|
*
|
||||||
|
* The buffer MUST NOT be smaller than 1 byte.
|
||||||
|
*/
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Decoding status.
|
||||||
|
*
|
||||||
|
* Status is 0 if the name element was not found, 1 if it was
|
||||||
|
* found and decoded, or -1 on error. Error conditions include
|
||||||
|
* an unrecognised encoding, an invalid encoding, or a string
|
||||||
|
* too large for the destination buffer.
|
||||||
|
*/
|
||||||
|
int status;
|
||||||
|
|
||||||
|
} br_name_element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief The "minimal" X.509 engine structure.
|
* \brief The "minimal" X.509 engine structure.
|
||||||
*
|
*
|
||||||
|
|
@ -643,6 +713,12 @@ typedef struct {
|
||||||
unsigned char next_dn_hash[64];
|
unsigned char next_dn_hash[64];
|
||||||
unsigned char saved_dn_hash[64];
|
unsigned char saved_dn_hash[64];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Name elements to gather.
|
||||||
|
*/
|
||||||
|
br_name_element *name_elts;
|
||||||
|
size_t num_name_elts;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Public key cryptography implementations (signature verification).
|
* Public key cryptography implementations (signature verification).
|
||||||
*/
|
*/
|
||||||
|
|
@ -798,6 +874,26 @@ br_x509_minimal_set_minrsa(br_x509_minimal_context *ctx, int byte_length)
|
||||||
ctx->min_rsa_size = (int16_t)(byte_length - 128);
|
ctx->min_rsa_size = (int16_t)(byte_length - 128);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Set the name elements to gather.
|
||||||
|
*
|
||||||
|
* The provided array is linked in the context. The elements are
|
||||||
|
* gathered from the EE certificate. If the same element type is
|
||||||
|
* requested several times, then the relevant structures will be filled
|
||||||
|
* in the order the matching values are encountered in the certificate.
|
||||||
|
*
|
||||||
|
* \param ctx validation context.
|
||||||
|
* \param elts array of name element structures to fill.
|
||||||
|
* \param num_elts number of name element structures to fill.
|
||||||
|
*/
|
||||||
|
static inline void
|
||||||
|
br_x509_minimal_set_name_elements(br_x509_minimal_context *ctx,
|
||||||
|
br_name_element *elts, size_t num_elts)
|
||||||
|
{
|
||||||
|
ctx->name_elts = elts;
|
||||||
|
ctx->num_name_elts = num_elts;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief X.509 decoder context.
|
* \brief X.509 decoder context.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -225,6 +225,8 @@ name(void *ctx) \
|
||||||
|
|
||||||
T0_DEFENTRY(br_pem_decoder_init_main, 38)
|
T0_DEFENTRY(br_pem_decoder_init_main, 38)
|
||||||
|
|
||||||
|
#define T0_NEXT(t0ipp) (*(*(t0ipp)) ++)
|
||||||
|
|
||||||
void
|
void
|
||||||
br_pem_decoder_run(void *t0ctx)
|
br_pem_decoder_run(void *t0ctx)
|
||||||
{
|
{
|
||||||
|
|
@ -272,15 +274,17 @@ br_pem_decoder_run(void *t0ctx)
|
||||||
#define T0_CO() do { \
|
#define T0_CO() do { \
|
||||||
goto t0_exit; \
|
goto t0_exit; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define T0_RET() break
|
#define T0_RET() goto t0_next
|
||||||
|
|
||||||
dp = ((t0_context *)t0ctx)->dp;
|
dp = ((t0_context *)t0ctx)->dp;
|
||||||
rp = ((t0_context *)t0ctx)->rp;
|
rp = ((t0_context *)t0ctx)->rp;
|
||||||
ip = ((t0_context *)t0ctx)->ip;
|
ip = ((t0_context *)t0ctx)->ip;
|
||||||
|
goto t0_next;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint32_t t0x;
|
uint32_t t0x;
|
||||||
|
|
||||||
t0x = t0_parse7E_unsigned(&ip);
|
t0_next:
|
||||||
|
t0x = T0_NEXT(&ip);
|
||||||
if (t0x < T0_INTERPRETED) {
|
if (t0x < T0_INTERPRETED) {
|
||||||
switch (t0x) {
|
switch (t0x) {
|
||||||
int32_t t0off;
|
int32_t t0off;
|
||||||
|
|
|
||||||
|
|
@ -501,30 +501,28 @@ static const uint8_t t0_codeblock[] = {
|
||||||
0x00, 0x01, T0_INT2(offsetof(br_ssl_engine_context, version_out)),
|
0x00, 0x01, T0_INT2(offsetof(br_ssl_engine_context, version_out)),
|
||||||
0x00, 0x00, 0x09, 0x25, 0x50, 0x06, 0x02, 0x60, 0x26, 0x00, 0x00, 0x06,
|
0x00, 0x00, 0x09, 0x25, 0x50, 0x06, 0x02, 0x60, 0x26, 0x00, 0x00, 0x06,
|
||||||
0x08, 0x2A, 0x0E, 0x05, 0x02, 0x69, 0x26, 0x04, 0x01, 0x3A, 0x00, 0x00,
|
0x08, 0x2A, 0x0E, 0x05, 0x02, 0x69, 0x26, 0x04, 0x01, 0x3A, 0x00, 0x00,
|
||||||
0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x81, 0x0F, 0x25, 0x56, 0x41, 0x81,
|
0x01, 0x01, 0x00, 0x01, 0x03, 0x00, 0x8F, 0x25, 0x56, 0x41, 0x93, 0x25,
|
||||||
0x13, 0x25, 0x05, 0x04, 0x58, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x06,
|
0x05, 0x04, 0x58, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0E, 0x06, 0x02, 0x93,
|
||||||
0x03, 0x81, 0x13, 0x00, 0x56, 0x04, 0x69, 0x00, 0x06, 0x02, 0x60, 0x26,
|
0x00, 0x56, 0x04, 0x6B, 0x00, 0x06, 0x02, 0x60, 0x26, 0x00, 0x00, 0x25,
|
||||||
0x00, 0x00, 0x25, 0x81, 0x00, 0x41, 0x05, 0x03, 0x01, 0x0C, 0x08, 0x41,
|
0x80, 0x41, 0x05, 0x03, 0x01, 0x0C, 0x08, 0x41, 0x71, 0x2A, 0xA1, 0x1C,
|
||||||
0x71, 0x2A, 0x81, 0x21, 0x1C, 0x7C, 0x01, 0x0C, 0x2F, 0x00, 0x00, 0x25,
|
0x7C, 0x01, 0x0C, 0x2F, 0x00, 0x00, 0x25, 0x1E, 0x01, 0x08, 0x0B, 0x41,
|
||||||
0x1E, 0x01, 0x08, 0x0B, 0x41, 0x54, 0x1E, 0x08, 0x00, 0x01, 0x03, 0x00,
|
0x54, 0x1E, 0x08, 0x00, 0x01, 0x03, 0x00, 0x01, 0x00, 0x6F, 0x3B, 0x27,
|
||||||
0x01, 0x00, 0x6F, 0x3B, 0x27, 0x1A, 0x34, 0x06, 0x08, 0x02, 0x00, 0x81,
|
0x1A, 0x34, 0x06, 0x07, 0x02, 0x00, 0xC3, 0x03, 0x00, 0x04, 0x75, 0x01,
|
||||||
0x43, 0x03, 0x00, 0x04, 0x74, 0x01, 0x00, 0x81, 0x3A, 0x02, 0x00, 0x25,
|
0x00, 0xBA, 0x02, 0x00, 0x25, 0x1A, 0x17, 0x06, 0x02, 0x67, 0x26, 0xC3,
|
||||||
0x1A, 0x17, 0x06, 0x02, 0x67, 0x26, 0x81, 0x43, 0x04, 0x75, 0x01, 0x01,
|
0x04, 0x76, 0x01, 0x01, 0x00, 0x6F, 0x3B, 0x01, 0x16, 0x7E, 0x3B, 0x32,
|
||||||
0x00, 0x6F, 0x3B, 0x01, 0x16, 0x7E, 0x3B, 0x32, 0x81, 0x49, 0x27, 0x81,
|
0xC9, 0x27, 0xA9, 0x06, 0x09, 0x01, 0x7F, 0xA4, 0x01, 0x7F, 0xC6, 0x04,
|
||||||
0x29, 0x06, 0x0B, 0x01, 0x7F, 0x81, 0x24, 0x01, 0x7F, 0x81, 0x46, 0x04,
|
0x80, 0x53, 0xA6, 0x71, 0x2A, 0x97, 0x01, T0_INT1(BR_KEYTYPE_SIGN),
|
||||||
0x80, 0x62, 0x81, 0x26, 0x71, 0x2A, 0x81, 0x17, 0x01,
|
0x17, 0x06, 0x01, 0xAA, 0xAD, 0x25, 0x01, 0x0D, 0x0E, 0x06, 0x07, 0x24,
|
||||||
T0_INT1(BR_KEYTYPE_SIGN), 0x17, 0x06, 0x02, 0x81, 0x2A, 0x81, 0x2D,
|
0xAC, 0xAD, 0x01, 0x7F, 0x04, 0x02, 0x01, 0x00, 0x03, 0x00, 0x01, 0x0E,
|
||||||
0x25, 0x01, 0x0D, 0x0E, 0x06, 0x09, 0x24, 0x81, 0x2C, 0x81, 0x2D, 0x01,
|
0x0E, 0x05, 0x02, 0x6A, 0x26, 0x06, 0x02, 0x5F, 0x26, 0x31, 0x06, 0x02,
|
||||||
0x7F, 0x04, 0x02, 0x01, 0x00, 0x03, 0x00, 0x01, 0x0E, 0x0E, 0x05, 0x02,
|
0x6A, 0x26, 0x02, 0x00, 0x06, 0x1C, 0xC7, 0x78, 0x2C, 0x01, 0x81, 0x7F,
|
||||||
0x6A, 0x26, 0x06, 0x02, 0x5F, 0x26, 0x31, 0x06, 0x02, 0x6A, 0x26, 0x02,
|
0x0E, 0x06, 0x0D, 0x24, 0x01, 0x10, 0xD2, 0x01, 0x00, 0xD1, 0x71, 0x2A,
|
||||||
0x00, 0x06, 0x22, 0x81, 0x47, 0x78, 0x2C, 0x01, 0x81, 0x7F, 0x0E, 0x06,
|
0xA1, 0x23, 0x04, 0x04, 0xCA, 0x06, 0x01, 0xC8, 0x04, 0x01, 0xCA, 0x01,
|
||||||
0x10, 0x24, 0x01, 0x10, 0x81, 0x52, 0x01, 0x00, 0x81, 0x51, 0x71, 0x2A,
|
0x7F, 0xC6, 0x01, 0x7F, 0xA4, 0x01, 0x01, 0x6F, 0x3B, 0x01, 0x17, 0x7E,
|
||||||
0x81, 0x21, 0x23, 0x04, 0x06, 0x81, 0x4A, 0x06, 0x02, 0x81, 0x48, 0x04,
|
0x3B, 0x00, 0x00, 0x36, 0x36, 0x00, 0x00, 0x90, 0x01, 0x0C, 0x11, 0x01,
|
||||||
0x02, 0x81, 0x4A, 0x01, 0x7F, 0x81, 0x46, 0x01, 0x7F, 0x81, 0x24, 0x01,
|
0x00, 0x36, 0x0E, 0x06, 0x05, 0x24, 0x01,
|
||||||
0x01, 0x6F, 0x3B, 0x01, 0x17, 0x7E, 0x3B, 0x00, 0x00, 0x36, 0x36, 0x00,
|
T0_INT1(BR_KEYTYPE_RSA | BR_KEYTYPE_KEYX), 0x04, 0x30, 0x01, 0x01,
|
||||||
0x00, 0x81, 0x10, 0x01, 0x0C, 0x11, 0x01, 0x00, 0x36, 0x0E, 0x06, 0x05,
|
0x36, 0x0E, 0x06, 0x05, 0x24, 0x01,
|
||||||
0x24, 0x01, T0_INT1(BR_KEYTYPE_RSA | BR_KEYTYPE_KEYX), 0x04, 0x30,
|
|
||||||
0x01, 0x01, 0x36, 0x0E, 0x06, 0x05, 0x24, 0x01,
|
|
||||||
T0_INT1(BR_KEYTYPE_RSA | BR_KEYTYPE_SIGN), 0x04, 0x25, 0x01, 0x02,
|
T0_INT1(BR_KEYTYPE_RSA | BR_KEYTYPE_SIGN), 0x04, 0x25, 0x01, 0x02,
|
||||||
0x36, 0x0E, 0x06, 0x05, 0x24, 0x01,
|
0x36, 0x0E, 0x06, 0x05, 0x24, 0x01,
|
||||||
T0_INT1(BR_KEYTYPE_EC | BR_KEYTYPE_SIGN), 0x04, 0x1A, 0x01, 0x03,
|
T0_INT1(BR_KEYTYPE_EC | BR_KEYTYPE_SIGN), 0x04, 0x1A, 0x01, 0x03,
|
||||||
|
|
@ -538,220 +536,198 @@ static const uint8_t t0_codeblock[] = {
|
||||||
0x01, 0x09, 0x01, 0x11, 0x07, 0x04, 0x03, 0x24, 0x01, 0x05, 0x00, 0x01,
|
0x01, 0x09, 0x01, 0x11, 0x07, 0x04, 0x03, 0x24, 0x01, 0x05, 0x00, 0x01,
|
||||||
0x3E, 0x03, 0x00, 0x24, 0x01, 0x00, 0x40, 0x06, 0x03, 0x02, 0x00, 0x08,
|
0x3E, 0x03, 0x00, 0x24, 0x01, 0x00, 0x40, 0x06, 0x03, 0x02, 0x00, 0x08,
|
||||||
0x3F, 0x06, 0x03, 0x02, 0x00, 0x08, 0x25, 0x06, 0x06, 0x01, 0x01, 0x0B,
|
0x3F, 0x06, 0x03, 0x02, 0x00, 0x08, 0x25, 0x06, 0x06, 0x01, 0x01, 0x0B,
|
||||||
0x01, 0x06, 0x08, 0x00, 0x00, 0x81, 0x01, 0x3C, 0x25, 0x06, 0x03, 0x01,
|
0x01, 0x06, 0x08, 0x00, 0x00, 0x81, 0x3C, 0x25, 0x06, 0x03, 0x01, 0x09,
|
||||||
0x09, 0x08, 0x00, 0x01, 0x3D, 0x25, 0x06, 0x1E, 0x01, 0x00, 0x03, 0x00,
|
0x08, 0x00, 0x01, 0x3D, 0x25, 0x06, 0x1E, 0x01, 0x00, 0x03, 0x00, 0x25,
|
||||||
0x25, 0x06, 0x0E, 0x25, 0x01, 0x01, 0x17, 0x02, 0x00, 0x08, 0x03, 0x00,
|
0x06, 0x0E, 0x25, 0x01, 0x01, 0x17, 0x02, 0x00, 0x08, 0x03, 0x00, 0x01,
|
||||||
0x01, 0x01, 0x11, 0x04, 0x6F, 0x24, 0x02, 0x00, 0x01, 0x01, 0x0B, 0x01,
|
0x01, 0x11, 0x04, 0x6F, 0x24, 0x02, 0x00, 0x01, 0x01, 0x0B, 0x01, 0x06,
|
||||||
0x06, 0x08, 0x00, 0x00, 0x77, 0x2B, 0x41, 0x11, 0x01, 0x01, 0x17, 0x33,
|
0x08, 0x00, 0x00, 0x77, 0x2B, 0x41, 0x11, 0x01, 0x01, 0x17, 0x33, 0x00,
|
||||||
0x00, 0x00, 0x81, 0x15, 0x81, 0x42, 0x25, 0x01, 0x07, 0x17, 0x01, 0x00,
|
0x00, 0x95, 0xC2, 0x25, 0x01, 0x07, 0x17, 0x01, 0x00, 0x36, 0x0E, 0x06,
|
||||||
0x36, 0x0E, 0x06, 0x0A, 0x24, 0x01, 0x10, 0x17, 0x06, 0x02, 0x81, 0x15,
|
0x09, 0x24, 0x01, 0x10, 0x17, 0x06, 0x01, 0x95, 0x04, 0x2D, 0x01, 0x01,
|
||||||
0x04, 0x32, 0x01, 0x01, 0x36, 0x0E, 0x06, 0x29, 0x24, 0x24, 0x01, 0x00,
|
0x36, 0x0E, 0x06, 0x24, 0x24, 0x24, 0x01, 0x00, 0x6F, 0x3B, 0xA8, 0x7F,
|
||||||
0x6F, 0x3B, 0x81, 0x28, 0x7F, 0x2C, 0x01, 0x01, 0x0E, 0x01, 0x01, 0x81,
|
0x2C, 0x01, 0x01, 0x0E, 0x01, 0x01, 0x9E, 0x35, 0x06, 0x0F, 0x27, 0x1A,
|
||||||
0x1E, 0x35, 0x06, 0x11, 0x27, 0x1A, 0x34, 0x06, 0x05, 0x81, 0x42, 0x24,
|
0x34, 0x06, 0x04, 0xC2, 0x24, 0x04, 0x78, 0x01, 0x80, 0x64, 0xBA, 0x04,
|
||||||
0x04, 0x77, 0x01, 0x80, 0x64, 0x81, 0x3A, 0x04, 0x02, 0x81, 0x15, 0x04,
|
0x01, 0x95, 0x04, 0x03, 0x6A, 0x26, 0x24, 0x04, 0xFF, 0x3C, 0x01, 0x25,
|
||||||
0x03, 0x6A, 0x26, 0x24, 0x04, 0xFF, 0x35, 0x01, 0x25, 0x03, 0x00, 0x09,
|
0x03, 0x00, 0x09, 0x25, 0x50, 0x06, 0x02, 0x60, 0x26, 0x02, 0x00, 0x00,
|
||||||
0x25, 0x50, 0x06, 0x02, 0x60, 0x26, 0x02, 0x00, 0x00, 0x00, 0x81, 0x10,
|
0x00, 0x90, 0x01, 0x0F, 0x17, 0x00, 0x00, 0x6E, 0x2C, 0x01, 0x00, 0x36,
|
||||||
0x01, 0x0F, 0x17, 0x00, 0x00, 0x6E, 0x2C, 0x01, 0x00, 0x36, 0x0E, 0x06,
|
0x0E, 0x06, 0x10, 0x24, 0x25, 0x01, 0x01, 0x0D, 0x06, 0x03, 0x24, 0x01,
|
||||||
0x10, 0x24, 0x25, 0x01, 0x01, 0x0D, 0x06, 0x03, 0x24, 0x01, 0x02, 0x6E,
|
0x02, 0x6E, 0x3B, 0x01, 0x00, 0x04, 0x22, 0x01, 0x01, 0x36, 0x0E, 0x06,
|
||||||
0x3B, 0x01, 0x00, 0x04, 0x22, 0x01, 0x01, 0x36, 0x0E, 0x06, 0x15, 0x24,
|
0x15, 0x24, 0x01, 0x00, 0x6E, 0x3B, 0x25, 0x01, 0x80, 0x64, 0x0E, 0x06,
|
||||||
0x01, 0x00, 0x6E, 0x3B, 0x25, 0x01, 0x80, 0x64, 0x0E, 0x06, 0x05, 0x01,
|
0x05, 0x01, 0x82, 0x00, 0x08, 0x26, 0x52, 0x00, 0x04, 0x07, 0x24, 0x01,
|
||||||
0x82, 0x00, 0x08, 0x26, 0x52, 0x00, 0x04, 0x07, 0x24, 0x01, 0x82, 0x00,
|
0x82, 0x00, 0x08, 0x26, 0x24, 0x00, 0x00, 0x01, 0x00, 0x2D, 0x06, 0x05,
|
||||||
0x08, 0x26, 0x24, 0x00, 0x00, 0x01, 0x00, 0x2D, 0x06, 0x06, 0x38, 0x81,
|
0x38, 0xA2, 0x35, 0x04, 0x78, 0x25, 0x06, 0x04, 0x01, 0x01, 0x85, 0x3B,
|
||||||
0x22, 0x35, 0x04, 0x77, 0x25, 0x06, 0x05, 0x01, 0x01, 0x81, 0x05, 0x3B,
|
|
||||||
0x00, 0x00, 0x2D, 0x06, 0x0B, 0x7D, 0x2C, 0x01, 0x14, 0x0D, 0x06, 0x02,
|
0x00, 0x00, 0x2D, 0x06, 0x0B, 0x7D, 0x2C, 0x01, 0x14, 0x0D, 0x06, 0x02,
|
||||||
0x6A, 0x26, 0x04, 0x12, 0x81, 0x42, 0x01, 0x07, 0x17, 0x25, 0x01, 0x02,
|
0x6A, 0x26, 0x04, 0x11, 0xC2, 0x01, 0x07, 0x17, 0x25, 0x01, 0x02, 0x0D,
|
||||||
0x0D, 0x06, 0x06, 0x06, 0x02, 0x6A, 0x26, 0x04, 0x6F, 0x24, 0x81, 0x37,
|
0x06, 0x06, 0x06, 0x02, 0x6A, 0x26, 0x04, 0x70, 0x24, 0xB7, 0x01, 0x01,
|
||||||
0x01, 0x01, 0x0D, 0x31, 0x35, 0x06, 0x02, 0x59, 0x26, 0x25, 0x01, 0x01,
|
0x0D, 0x31, 0x35, 0x06, 0x02, 0x59, 0x26, 0x25, 0x01, 0x01, 0xBD, 0x34,
|
||||||
0x81, 0x3D, 0x34, 0x81, 0x27, 0x00, 0x01, 0x81, 0x2D, 0x01, 0x0B, 0x0E,
|
0xA7, 0x00, 0x01, 0xAD, 0x01, 0x0B, 0x0E, 0x05, 0x02, 0x6A, 0x26, 0x25,
|
||||||
0x05, 0x02, 0x6A, 0x26, 0x25, 0x01, 0x03, 0x0E, 0x06, 0x09, 0x81, 0x35,
|
0x01, 0x03, 0x0E, 0x06, 0x08, 0xB5, 0x06, 0x02, 0x60, 0x26, 0x41, 0x24,
|
||||||
0x06, 0x02, 0x60, 0x26, 0x41, 0x24, 0x00, 0x41, 0x4F, 0x81, 0x35, 0x81,
|
0x00, 0x41, 0x4F, 0xB5, 0xA0, 0x25, 0x06, 0x23, 0xB5, 0xA0, 0x25, 0x4E,
|
||||||
0x20, 0x25, 0x06, 0x27, 0x81, 0x35, 0x81, 0x20, 0x25, 0x4E, 0x25, 0x06,
|
0x25, 0x06, 0x18, 0x25, 0x01, 0x82, 0x00, 0x0F, 0x06, 0x05, 0x01, 0x82,
|
||||||
0x19, 0x25, 0x01, 0x82, 0x00, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04,
|
0x00, 0x04, 0x01, 0x25, 0x03, 0x00, 0x7C, 0x02, 0x00, 0xAB, 0x02, 0x00,
|
||||||
0x01, 0x25, 0x03, 0x00, 0x7C, 0x02, 0x00, 0x81, 0x2B, 0x02, 0x00, 0x4B,
|
0x4B, 0x04, 0x65, 0x91, 0x4C, 0x04, 0x5A, 0x91, 0x91, 0x4D, 0x25, 0x06,
|
||||||
0x04, 0x64, 0x81, 0x11, 0x4C, 0x04, 0x56, 0x81, 0x11, 0x81, 0x11, 0x4D,
|
0x02, 0x33, 0x00, 0x24, 0x29, 0x00, 0x00, 0x71, 0x2A, 0x97, 0x01, 0x7F,
|
||||||
0x25, 0x06, 0x02, 0x33, 0x00, 0x24, 0x29, 0x00, 0x00, 0x71, 0x2A, 0x81,
|
0xA5, 0x25, 0x50, 0x06, 0x02, 0x33, 0x26, 0x25, 0x05, 0x02, 0x6A, 0x26,
|
||||||
0x17, 0x01, 0x7F, 0x81, 0x25, 0x25, 0x50, 0x06, 0x02, 0x33, 0x26, 0x25,
|
0x36, 0x17, 0x0D, 0x06, 0x02, 0x6C, 0x26, 0x39, 0x00, 0x00, 0x92, 0xAD,
|
||||||
0x05, 0x02, 0x6A, 0x26, 0x36, 0x17, 0x0D, 0x06, 0x02, 0x6C, 0x26, 0x39,
|
0x01, 0x14, 0x0D, 0x06, 0x02, 0x6A, 0x26, 0x7C, 0x01, 0x0C, 0x08, 0x01,
|
||||||
0x00, 0x00, 0x81, 0x12, 0x81, 0x2D, 0x01, 0x14, 0x0D, 0x06, 0x02, 0x6A,
|
0x0C, 0xAB, 0x91, 0x7C, 0x25, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x2E, 0x05,
|
||||||
0x26, 0x7C, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x81, 0x2B, 0x81, 0x11, 0x7C,
|
0x02, 0x5C, 0x26, 0x00, 0x00, 0xAE, 0x06, 0x02, 0x6A, 0x26, 0x06, 0x02,
|
||||||
0x25, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x2E, 0x05, 0x02, 0x5C, 0x26, 0x00,
|
0x5E, 0x26, 0x00, 0x09, 0xAD, 0x01, 0x02, 0x0E, 0x05, 0x02, 0x6A, 0x26,
|
||||||
0x00, 0x81, 0x2E, 0x06, 0x02, 0x6A, 0x26, 0x06, 0x02, 0x5E, 0x26, 0x00,
|
0xB4, 0x03, 0x00, 0x02, 0x00, 0x8B, 0x2A, 0x0A, 0x02, 0x00, 0x8A, 0x2A,
|
||||||
0x09, 0x81, 0x2D, 0x01, 0x02, 0x0E, 0x05, 0x02, 0x6A, 0x26, 0x81, 0x34,
|
0x0F, 0x35, 0x06, 0x02, 0x6B, 0x26, 0x02, 0x00, 0x89, 0x2A, 0x0D, 0x06,
|
||||||
0x03, 0x00, 0x02, 0x00, 0x81, 0x0B, 0x2A, 0x0A, 0x02, 0x00, 0x81, 0x0A,
|
0x02, 0x63, 0x26, 0x02, 0x00, 0x8C, 0x3A, 0x82, 0x01, 0x20, 0xAB, 0x01,
|
||||||
0x2A, 0x0F, 0x35, 0x06, 0x02, 0x6B, 0x26, 0x02, 0x00, 0x81, 0x09, 0x2A,
|
0x00, 0x03, 0x01, 0xB6, 0x03, 0x02, 0x02, 0x02, 0x01, 0x20, 0x0F, 0x06,
|
||||||
0x0D, 0x06, 0x02, 0x63, 0x26, 0x02, 0x00, 0x81, 0x0C, 0x3A, 0x81, 0x02,
|
0x02, 0x68, 0x26, 0x7C, 0x02, 0x02, 0xAB, 0x02, 0x02, 0x84, 0x2C, 0x0E,
|
||||||
0x01, 0x20, 0x81, 0x2B, 0x01, 0x00, 0x03, 0x01, 0x81, 0x36, 0x03, 0x02,
|
0x02, 0x02, 0x01, 0x00, 0x0F, 0x17, 0x06, 0x0B, 0x83, 0x7C, 0x02, 0x02,
|
||||||
0x02, 0x02, 0x01, 0x20, 0x0F, 0x06, 0x02, 0x68, 0x26, 0x7C, 0x02, 0x02,
|
0x2E, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x01, 0x83, 0x7C, 0x02, 0x02, 0x2F,
|
||||||
0x81, 0x2B, 0x02, 0x02, 0x81, 0x04, 0x2C, 0x0E, 0x02, 0x02, 0x01, 0x00,
|
0x02, 0x02, 0x84, 0x3B, 0x02, 0x00, 0x88, 0x02, 0x01, 0x8E, 0xB4, 0x25,
|
||||||
0x0F, 0x17, 0x06, 0x0C, 0x81, 0x03, 0x7C, 0x02, 0x02, 0x2E, 0x06, 0x04,
|
0xB8, 0x50, 0x06, 0x02, 0x5A, 0x26, 0x71, 0x02, 0x01, 0x8E, 0xB6, 0x06,
|
||||||
0x01, 0x7F, 0x03, 0x01, 0x81, 0x03, 0x7C, 0x02, 0x02, 0x2F, 0x02, 0x02,
|
0x02, 0x5B, 0x26, 0x25, 0x06, 0x81, 0x2D, 0xB4, 0xA0, 0x9C, 0x03, 0x03,
|
||||||
0x81, 0x04, 0x3B, 0x02, 0x00, 0x81, 0x08, 0x02, 0x01, 0x81, 0x0E, 0x81,
|
0x9A, 0x03, 0x04, 0x98, 0x03, 0x05, 0x9B, 0x03, 0x06, 0x9D, 0x03, 0x07,
|
||||||
0x34, 0x25, 0x81, 0x38, 0x50, 0x06, 0x02, 0x5A, 0x26, 0x71, 0x02, 0x01,
|
0x99, 0x03, 0x08, 0x25, 0x06, 0x81, 0x03, 0xB4, 0x01, 0x00, 0x36, 0x0E,
|
||||||
0x81, 0x0E, 0x81, 0x36, 0x06, 0x02, 0x5B, 0x26, 0x25, 0x06, 0x81, 0x3E,
|
0x06, 0x0F, 0x24, 0x02, 0x03, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03,
|
||||||
0x81, 0x34, 0x81, 0x20, 0x81, 0x1C, 0x03, 0x03, 0x81, 0x1A, 0x03, 0x04,
|
0x03, 0xB3, 0x04, 0x80, 0x6A, 0x01, 0x01, 0x36, 0x0E, 0x06, 0x0F, 0x24,
|
||||||
0x81, 0x18, 0x03, 0x05, 0x81, 0x1B, 0x03, 0x06, 0x81, 0x1D, 0x03, 0x07,
|
0x02, 0x05, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03, 0x05, 0xB1, 0x04,
|
||||||
0x81, 0x19, 0x03, 0x08, 0x25, 0x06, 0x81, 0x0B, 0x81, 0x34, 0x01, 0x00,
|
0x80, 0x55, 0x01, 0x83, 0xFE, 0x01, 0x36, 0x0E, 0x06, 0x0E, 0x24, 0x02,
|
||||||
0x36, 0x0E, 0x06, 0x10, 0x24, 0x02, 0x03, 0x05, 0x02, 0x64, 0x26, 0x01,
|
0x04, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03, 0x04, 0xB2, 0x04, 0x3F,
|
||||||
0x00, 0x03, 0x03, 0x81, 0x33, 0x04, 0x80, 0x70, 0x01, 0x01, 0x36, 0x0E,
|
0x01, 0x0D, 0x36, 0x0E, 0x06, 0x0E, 0x24, 0x02, 0x06, 0x05, 0x02, 0x64,
|
||||||
0x06, 0x10, 0x24, 0x02, 0x05, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03,
|
0x26, 0x01, 0x00, 0x03, 0x06, 0xAF, 0x04, 0x2B, 0x01, 0x0A, 0x36, 0x0E,
|
||||||
0x05, 0x81, 0x31, 0x04, 0x80, 0x5A, 0x01, 0x83, 0xFE, 0x01, 0x36, 0x0E,
|
0x06, 0x0E, 0x24, 0x02, 0x07, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03,
|
||||||
0x06, 0x10, 0x24, 0x02, 0x04, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03,
|
0x07, 0xAF, 0x04, 0x17, 0x01, 0x0B, 0x36, 0x0E, 0x06, 0x0E, 0x24, 0x02,
|
||||||
0x04, 0x81, 0x32, 0x04, 0x80, 0x42, 0x01, 0x0D, 0x36, 0x0E, 0x06, 0x0F,
|
0x08, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03, 0x08, 0xAF, 0x04, 0x03,
|
||||||
0x24, 0x02, 0x06, 0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03, 0x06, 0x81,
|
0x64, 0x26, 0x24, 0x04, 0xFE, 0x79, 0x02, 0x04, 0x06, 0x0D, 0x02, 0x04,
|
||||||
0x2F, 0x04, 0x2D, 0x01, 0x0A, 0x36, 0x0E, 0x06, 0x0F, 0x24, 0x02, 0x07,
|
0x01, 0x05, 0x0F, 0x06, 0x02, 0x61, 0x26, 0x01, 0x01, 0x7F, 0x3B, 0x91,
|
||||||
0x05, 0x02, 0x64, 0x26, 0x01, 0x00, 0x03, 0x07, 0x81, 0x2F, 0x04, 0x18,
|
0x91, 0x02, 0x01, 0x00, 0x04, 0xAD, 0x01, 0x0C, 0x0E, 0x05, 0x02, 0x6A,
|
||||||
0x01, 0x0B, 0x36, 0x0E, 0x06, 0x0F, 0x24, 0x02, 0x08, 0x05, 0x02, 0x64,
|
0x26, 0xB6, 0x01, 0x03, 0x0E, 0x05, 0x02, 0x65, 0x26, 0xB4, 0x25, 0x74,
|
||||||
0x26, 0x01, 0x00, 0x03, 0x08, 0x81, 0x2F, 0x04, 0x03, 0x64, 0x26, 0x24,
|
0x3B, 0x25, 0x01, 0x20, 0x10, 0x06, 0x02, 0x65, 0x26, 0x3D, 0x41, 0x11,
|
||||||
0x04, 0xFE, 0x71, 0x02, 0x04, 0x06, 0x0D, 0x02, 0x04, 0x01, 0x05, 0x0F,
|
0x01, 0x01, 0x17, 0x05, 0x02, 0x65, 0x26, 0xB6, 0x25, 0x01, 0x81, 0x05,
|
||||||
0x06, 0x02, 0x61, 0x26, 0x01, 0x01, 0x7F, 0x3B, 0x81, 0x11, 0x81, 0x11,
|
0x0F, 0x06, 0x02, 0x65, 0x26, 0x25, 0x76, 0x3B, 0x75, 0x41, 0xAB, 0x88,
|
||||||
0x02, 0x01, 0x00, 0x04, 0x81, 0x2D, 0x01, 0x0C, 0x0E, 0x05, 0x02, 0x6A,
|
0x2A, 0x01, 0x86, 0x03, 0x10, 0x03, 0x00, 0x71, 0x2A, 0xC0, 0x03, 0x01,
|
||||||
0x26, 0x81, 0x36, 0x01, 0x03, 0x0E, 0x05, 0x02, 0x65, 0x26, 0x81, 0x34,
|
0x01, 0x02, 0x03, 0x02, 0x02, 0x00, 0x06, 0x21, 0xB6, 0x25, 0x25, 0x01,
|
||||||
0x25, 0x74, 0x3B, 0x25, 0x01, 0x20, 0x10, 0x06, 0x02, 0x65, 0x26, 0x3D,
|
0x02, 0x0A, 0x41, 0x01, 0x06, 0x0F, 0x35, 0x06, 0x02, 0x65, 0x26, 0x03,
|
||||||
0x41, 0x11, 0x01, 0x01, 0x17, 0x05, 0x02, 0x65, 0x26, 0x81, 0x36, 0x25,
|
0x02, 0xB6, 0x02, 0x01, 0x01, 0x01, 0x0B, 0x01, 0x03, 0x08, 0x0E, 0x05,
|
||||||
0x01, 0x81, 0x05, 0x0F, 0x06, 0x02, 0x65, 0x26, 0x25, 0x76, 0x3B, 0x75,
|
0x02, 0x65, 0x26, 0x04, 0x08, 0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x03,
|
||||||
0x41, 0x81, 0x2B, 0x81, 0x08, 0x2A, 0x01, 0x86, 0x03, 0x10, 0x03, 0x00,
|
0x02, 0xB4, 0x25, 0x03, 0x03, 0x25, 0x01, 0x84, 0x00, 0x0F, 0x06, 0x02,
|
||||||
0x71, 0x2A, 0x81, 0x40, 0x03, 0x01, 0x01, 0x02, 0x03, 0x02, 0x02, 0x00,
|
0x66, 0x26, 0x7C, 0x41, 0xAB, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x48,
|
||||||
0x06, 0x23, 0x81, 0x36, 0x25, 0x25, 0x01, 0x02, 0x0A, 0x41, 0x01, 0x06,
|
0x25, 0x06, 0x01, 0x26, 0x24, 0x91, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01,
|
||||||
0x0F, 0x35, 0x06, 0x02, 0x65, 0x26, 0x03, 0x02, 0x81, 0x36, 0x02, 0x01,
|
0x02, 0x00, 0x8D, 0x02, 0x01, 0x02, 0x00, 0x37, 0x25, 0x01, 0x00, 0x0E,
|
||||||
0x01, 0x01, 0x0B, 0x01, 0x03, 0x08, 0x0E, 0x05, 0x02, 0x65, 0x26, 0x04,
|
0x06, 0x02, 0x58, 0x00, 0xC4, 0x04, 0x74, 0x02, 0x01, 0x00, 0x03, 0x00,
|
||||||
0x08, 0x02, 0x01, 0x06, 0x04, 0x01, 0x00, 0x03, 0x02, 0x81, 0x34, 0x25,
|
0xB6, 0xA0, 0x25, 0x06, 0x80, 0x43, 0xB6, 0x01, 0x01, 0x36, 0x0E, 0x06,
|
||||||
0x03, 0x03, 0x25, 0x01, 0x84, 0x00, 0x0F, 0x06, 0x02, 0x66, 0x26, 0x7C,
|
0x06, 0x24, 0x01, 0x81, 0x7F, 0x04, 0x2E, 0x01, 0x80, 0x40, 0x36, 0x0E,
|
||||||
0x41, 0x81, 0x2B, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03, 0x48, 0x25, 0x06,
|
0x06, 0x07, 0x24, 0x01, 0x83, 0xFE, 0x00, 0x04, 0x20, 0x01, 0x80, 0x41,
|
||||||
0x01, 0x26, 0x24, 0x81, 0x11, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02,
|
0x36, 0x0E, 0x06, 0x07, 0x24, 0x01, 0x84, 0x80, 0x00, 0x04, 0x12, 0x01,
|
||||||
0x00, 0x81, 0x0D, 0x02, 0x01, 0x02, 0x00, 0x37, 0x25, 0x01, 0x00, 0x0E,
|
0x80, 0x42, 0x36, 0x0E, 0x06, 0x07, 0x24, 0x01, 0x88, 0x80, 0x00, 0x04,
|
||||||
0x06, 0x02, 0x58, 0x00, 0x81, 0x44, 0x04, 0x73, 0x02, 0x01, 0x00, 0x03,
|
0x04, 0x01, 0x00, 0x41, 0x24, 0x02, 0x00, 0x35, 0x03, 0x00, 0x04, 0xFF,
|
||||||
0x00, 0x81, 0x36, 0x81, 0x20, 0x25, 0x06, 0x80, 0x44, 0x81, 0x36, 0x01,
|
0x39, 0x91, 0x71, 0x2A, 0xBE, 0x05, 0x09, 0x02, 0x00, 0x01, 0x83, 0xFF,
|
||||||
0x01, 0x36, 0x0E, 0x06, 0x06, 0x24, 0x01, 0x81, 0x7F, 0x04, 0x2E, 0x01,
|
0x7F, 0x17, 0x03, 0x00, 0x88, 0x2A, 0x01, 0x86, 0x03, 0x10, 0x06, 0x3A,
|
||||||
0x80, 0x40, 0x36, 0x0E, 0x06, 0x07, 0x24, 0x01, 0x83, 0xFE, 0x00, 0x04,
|
0xB0, 0x25, 0x79, 0x3A, 0x3E, 0x24, 0x25, 0x01, 0x08, 0x0B, 0x35, 0x01,
|
||||||
0x20, 0x01, 0x80, 0x41, 0x36, 0x0E, 0x06, 0x07, 0x24, 0x01, 0x84, 0x80,
|
0x8C, 0x80, 0x00, 0x35, 0x17, 0x02, 0x00, 0x17, 0x02, 0x00, 0x01, 0x8C,
|
||||||
0x00, 0x04, 0x12, 0x01, 0x80, 0x42, 0x36, 0x0E, 0x06, 0x07, 0x24, 0x01,
|
0x80, 0x00, 0x17, 0x06, 0x19, 0x25, 0x01, 0x81, 0x7F, 0x17, 0x06, 0x05,
|
||||||
0x88, 0x80, 0x00, 0x04, 0x04, 0x01, 0x00, 0x41, 0x24, 0x02, 0x00, 0x35,
|
0x01, 0x84, 0x80, 0x00, 0x35, 0x25, 0x01, 0x83, 0xFE, 0x00, 0x17, 0x06,
|
||||||
0x03, 0x00, 0x04, 0xFF, 0x38, 0x81, 0x11, 0x71, 0x2A, 0x81, 0x3E, 0x05,
|
0x05, 0x01, 0x88, 0x80, 0x00, 0x35, 0x03, 0x00, 0x04, 0x09, 0x02, 0x00,
|
||||||
0x09, 0x02, 0x00, 0x01, 0x83, 0xFF, 0x7F, 0x17, 0x03, 0x00, 0x81, 0x08,
|
0x01, 0x8C, 0x88, 0x01, 0x17, 0x03, 0x00, 0x16, 0xB4, 0xA0, 0x25, 0x06,
|
||||||
0x2A, 0x01, 0x86, 0x03, 0x10, 0x06, 0x3B, 0x81, 0x30, 0x25, 0x79, 0x3A,
|
0x23, 0xB4, 0xA0, 0x25, 0x15, 0x25, 0x06, 0x18, 0x25, 0x01, 0x82, 0x00,
|
||||||
0x3E, 0x24, 0x25, 0x01, 0x08, 0x0B, 0x35, 0x01, 0x8C, 0x80, 0x00, 0x35,
|
|
||||||
0x17, 0x02, 0x00, 0x17, 0x02, 0x00, 0x01, 0x8C, 0x80, 0x00, 0x17, 0x06,
|
|
||||||
0x19, 0x25, 0x01, 0x81, 0x7F, 0x17, 0x06, 0x05, 0x01, 0x84, 0x80, 0x00,
|
|
||||||
0x35, 0x25, 0x01, 0x83, 0xFE, 0x00, 0x17, 0x06, 0x05, 0x01, 0x88, 0x80,
|
|
||||||
0x00, 0x35, 0x03, 0x00, 0x04, 0x09, 0x02, 0x00, 0x01, 0x8C, 0x88, 0x01,
|
|
||||||
0x17, 0x03, 0x00, 0x16, 0x81, 0x34, 0x81, 0x20, 0x25, 0x06, 0x27, 0x81,
|
|
||||||
0x34, 0x81, 0x20, 0x25, 0x15, 0x25, 0x06, 0x19, 0x25, 0x01, 0x82, 0x00,
|
|
||||||
0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x25, 0x03, 0x01, 0x7C,
|
0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x25, 0x03, 0x01, 0x7C,
|
||||||
0x02, 0x01, 0x81, 0x2B, 0x02, 0x01, 0x12, 0x04, 0x64, 0x81, 0x11, 0x13,
|
0x02, 0x01, 0xAB, 0x02, 0x01, 0x12, 0x04, 0x65, 0x91, 0x13, 0x04, 0x5A,
|
||||||
0x04, 0x56, 0x81, 0x11, 0x14, 0x81, 0x11, 0x02, 0x00, 0x28, 0x00, 0x00,
|
0x91, 0x14, 0x91, 0x02, 0x00, 0x28, 0x00, 0x00, 0xAE, 0x25, 0x52, 0x06,
|
||||||
0x81, 0x2E, 0x25, 0x52, 0x06, 0x07, 0x24, 0x06, 0x02, 0x5E, 0x26, 0x04,
|
0x07, 0x24, 0x06, 0x02, 0x5E, 0x26, 0x04, 0x74, 0x00, 0x00, 0xB7, 0x01,
|
||||||
0x73, 0x00, 0x00, 0x81, 0x37, 0x01, 0x03, 0x81, 0x35, 0x41, 0x24, 0x41,
|
0x03, 0xB5, 0x41, 0x24, 0x41, 0x00, 0x00, 0xB4, 0xBB, 0x00, 0x03, 0x01,
|
||||||
0x00, 0x00, 0x81, 0x34, 0x81, 0x3B, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00,
|
0x00, 0x03, 0x00, 0xB4, 0xA0, 0x25, 0x06, 0x32, 0xB6, 0x03, 0x01, 0xB6,
|
||||||
0x81, 0x34, 0x81, 0x20, 0x25, 0x06, 0x34, 0x81, 0x36, 0x03, 0x01, 0x81,
|
0x03, 0x02, 0x02, 0x01, 0x01, 0x02, 0x10, 0x02, 0x01, 0x01, 0x06, 0x0C,
|
||||||
0x36, 0x03, 0x02, 0x02, 0x01, 0x01, 0x02, 0x10, 0x02, 0x01, 0x01, 0x06,
|
0x17, 0x02, 0x02, 0x01, 0x01, 0x0E, 0x02, 0x02, 0x01, 0x03, 0x0E, 0x35,
|
||||||
0x0C, 0x17, 0x02, 0x02, 0x01, 0x01, 0x0E, 0x02, 0x02, 0x01, 0x03, 0x0E,
|
0x17, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x55, 0x01, 0x02,
|
||||||
0x35, 0x17, 0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x55, 0x01,
|
0x0B, 0x02, 0x01, 0x08, 0x0B, 0x35, 0x03, 0x00, 0x04, 0x4B, 0x91, 0x02,
|
||||||
0x02, 0x0B, 0x02, 0x01, 0x08, 0x0B, 0x35, 0x03, 0x00, 0x04, 0x49, 0x81,
|
0x00, 0x00, 0x00, 0xB4, 0x01, 0x01, 0x0E, 0x05, 0x02, 0x5D, 0x26, 0xB6,
|
||||||
0x11, 0x02, 0x00, 0x00, 0x00, 0x81, 0x34, 0x01, 0x01, 0x0E, 0x05, 0x02,
|
0x01, 0x08, 0x08, 0x7A, 0x2C, 0x0E, 0x05, 0x02, 0x5D, 0x26, 0x00, 0x00,
|
||||||
0x5D, 0x26, 0x81, 0x36, 0x01, 0x08, 0x08, 0x7A, 0x2C, 0x0E, 0x05, 0x02,
|
0xB4, 0x7F, 0x2C, 0x05, 0x15, 0x01, 0x01, 0x0E, 0x05, 0x02, 0x61, 0x26,
|
||||||
0x5D, 0x26, 0x00, 0x00, 0x81, 0x34, 0x7F, 0x2C, 0x05, 0x16, 0x01, 0x01,
|
0xB6, 0x01, 0x00, 0x0E, 0x05, 0x02, 0x61, 0x26, 0x01, 0x02, 0x7F, 0x3B,
|
||||||
0x0E, 0x05, 0x02, 0x61, 0x26, 0x81, 0x36, 0x01, 0x00, 0x0E, 0x05, 0x02,
|
0x04, 0x1C, 0x01, 0x19, 0x0E, 0x05, 0x02, 0x61, 0x26, 0xB6, 0x01, 0x18,
|
||||||
0x61, 0x26, 0x01, 0x02, 0x7F, 0x3B, 0x04, 0x1F, 0x01, 0x19, 0x0E, 0x05,
|
0x0E, 0x05, 0x02, 0x61, 0x26, 0x7C, 0x01, 0x18, 0xAB, 0x80, 0x7C, 0x01,
|
||||||
0x02, 0x61, 0x26, 0x81, 0x36, 0x01, 0x18, 0x0E, 0x05, 0x02, 0x61, 0x26,
|
0x18, 0x2E, 0x05, 0x02, 0x61, 0x26, 0x00, 0x00, 0xB4, 0x06, 0x02, 0x62,
|
||||||
0x7C, 0x01, 0x18, 0x81, 0x2B, 0x81, 0x00, 0x7C, 0x01, 0x18, 0x2E, 0x05,
|
0x26, 0x00, 0x00, 0x01, 0x02, 0x8D, 0xB7, 0x01, 0x08, 0x0B, 0xB7, 0x08,
|
||||||
0x02, 0x61, 0x26, 0x00, 0x00, 0x81, 0x34, 0x06, 0x02, 0x62, 0x26, 0x00,
|
0x00, 0x00, 0x01, 0x03, 0x8D, 0xB7, 0x01, 0x08, 0x0B, 0xB7, 0x08, 0x01,
|
||||||
0x00, 0x01, 0x02, 0x81, 0x0D, 0x81, 0x37, 0x01, 0x08, 0x0B, 0x81, 0x37,
|
0x08, 0x0B, 0xB7, 0x08, 0x00, 0x00, 0x01, 0x01, 0x8D, 0xB7, 0x00, 0x00,
|
||||||
0x08, 0x00, 0x00, 0x01, 0x03, 0x81, 0x0D, 0x81, 0x37, 0x01, 0x08, 0x0B,
|
0x38, 0x25, 0x50, 0x05, 0x01, 0x00, 0x24, 0xC4, 0x04, 0x76, 0x02, 0x03,
|
||||||
0x81, 0x37, 0x08, 0x01, 0x08, 0x0B, 0x81, 0x37, 0x08, 0x00, 0x00, 0x01,
|
0x00, 0x87, 0x2C, 0x03, 0x01, 0x01, 0x00, 0x25, 0x02, 0x01, 0x0A, 0x06,
|
||||||
0x01, 0x81, 0x0D, 0x81, 0x37, 0x00, 0x00, 0x38, 0x25, 0x50, 0x05, 0x01,
|
0x10, 0x25, 0x01, 0x01, 0x0B, 0x86, 0x08, 0x2A, 0x02, 0x00, 0x0E, 0x06,
|
||||||
0x00, 0x24, 0x81, 0x44, 0x04, 0x75, 0x02, 0x03, 0x00, 0x81, 0x07, 0x2C,
|
0x01, 0x00, 0x54, 0x04, 0x6A, 0x24, 0x01, 0x7F, 0x00, 0x00, 0x01, 0x15,
|
||||||
0x03, 0x01, 0x01, 0x00, 0x25, 0x02, 0x01, 0x0A, 0x06, 0x11, 0x25, 0x01,
|
0x7E, 0x3B, 0x41, 0x4A, 0x24, 0x4A, 0x24, 0x27, 0x00, 0x00, 0x01, 0x01,
|
||||||
0x01, 0x0B, 0x81, 0x06, 0x08, 0x2A, 0x02, 0x00, 0x0E, 0x06, 0x01, 0x00,
|
0x41, 0xB9, 0x00, 0x00, 0x41, 0x36, 0x8D, 0x41, 0x25, 0x06, 0x05, 0xB7,
|
||||||
0x54, 0x04, 0x69, 0x24, 0x01, 0x7F, 0x00, 0x00, 0x01, 0x15, 0x7E, 0x3B,
|
0x24, 0x55, 0x04, 0x78, 0x24, 0x00, 0x00, 0x25, 0x01, 0x81, 0xAC, 0x00,
|
||||||
0x41, 0x4A, 0x24, 0x4A, 0x24, 0x27, 0x00, 0x00, 0x01, 0x01, 0x41, 0x81,
|
0x0E, 0x06, 0x04, 0x24, 0x01, 0x7F, 0x00, 0x90, 0x51, 0x00, 0x02, 0x03,
|
||||||
0x39, 0x00, 0x00, 0x41, 0x36, 0x81, 0x0D, 0x41, 0x25, 0x06, 0x06, 0x81,
|
0x00, 0x71, 0x2A, 0x90, 0x03, 0x01, 0x02, 0x01, 0x01, 0x0F, 0x17, 0x02,
|
||||||
0x37, 0x24, 0x55, 0x04, 0x77, 0x24, 0x00, 0x00, 0x25, 0x01, 0x81, 0xAC,
|
0x01, 0x01, 0x04, 0x11, 0x01, 0x0F, 0x17, 0x02, 0x01, 0x01, 0x08, 0x11,
|
||||||
0x00, 0x0E, 0x06, 0x04, 0x24, 0x01, 0x7F, 0x00, 0x81, 0x10, 0x51, 0x00,
|
0x01, 0x0F, 0x17, 0x01, 0x00, 0x36, 0x0E, 0x06, 0x10, 0x24, 0x01, 0x00,
|
||||||
0x02, 0x03, 0x00, 0x71, 0x2A, 0x81, 0x10, 0x03, 0x01, 0x02, 0x01, 0x01,
|
0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x44, 0x04, 0x01, 0x45, 0x04, 0x80,
|
||||||
0x0F, 0x17, 0x02, 0x01, 0x01, 0x04, 0x11, 0x01, 0x0F, 0x17, 0x02, 0x01,
|
0x56, 0x01, 0x01, 0x36, 0x0E, 0x06, 0x10, 0x24, 0x01, 0x01, 0x01, 0x10,
|
||||||
0x01, 0x08, 0x11, 0x01, 0x0F, 0x17, 0x01, 0x00, 0x36, 0x0E, 0x06, 0x10,
|
0x02, 0x00, 0x06, 0x03, 0x44, 0x04, 0x01, 0x45, 0x04, 0x80, 0x40, 0x01,
|
||||||
0x24, 0x01, 0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x44, 0x04, 0x01,
|
0x02, 0x36, 0x0E, 0x06, 0x0F, 0x24, 0x01, 0x01, 0x01, 0x20, 0x02, 0x00,
|
||||||
0x45, 0x04, 0x80, 0x56, 0x01, 0x01, 0x36, 0x0E, 0x06, 0x10, 0x24, 0x01,
|
0x06, 0x03, 0x44, 0x04, 0x01, 0x45, 0x04, 0x2B, 0x01, 0x03, 0x36, 0x0E,
|
||||||
0x01, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x44, 0x04, 0x01, 0x45, 0x04,
|
0x06, 0x0E, 0x24, 0x24, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x42, 0x04,
|
||||||
0x80, 0x40, 0x01, 0x02, 0x36, 0x0E, 0x06, 0x0F, 0x24, 0x01, 0x01, 0x01,
|
0x01, 0x43, 0x04, 0x17, 0x01, 0x04, 0x36, 0x0E, 0x06, 0x0E, 0x24, 0x24,
|
||||||
0x20, 0x02, 0x00, 0x06, 0x03, 0x44, 0x04, 0x01, 0x45, 0x04, 0x2B, 0x01,
|
0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x42, 0x04, 0x01, 0x43, 0x04, 0x03,
|
||||||
0x03, 0x36, 0x0E, 0x06, 0x0E, 0x24, 0x24, 0x01, 0x10, 0x02, 0x00, 0x06,
|
0x60, 0x26, 0x24, 0x00, 0x00, 0x90, 0x01, 0x0C, 0x11, 0x01, 0x02, 0x0F,
|
||||||
0x03, 0x42, 0x04, 0x01, 0x43, 0x04, 0x17, 0x01, 0x04, 0x36, 0x0E, 0x06,
|
0x00, 0x00, 0x90, 0x01, 0x0C, 0x11, 0x25, 0x53, 0x41, 0x01, 0x03, 0x0A,
|
||||||
0x0E, 0x24, 0x24, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x42, 0x04, 0x01,
|
0x17, 0x00, 0x00, 0x90, 0x01, 0x0C, 0x11, 0x01, 0x01, 0x0E, 0x00, 0x00,
|
||||||
0x43, 0x04, 0x03, 0x60, 0x26, 0x24, 0x00, 0x00, 0x81, 0x10, 0x01, 0x0C,
|
0x90, 0x01, 0x0C, 0x11, 0x52, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x6D, 0x2C,
|
||||||
0x11, 0x01, 0x02, 0x0F, 0x00, 0x00, 0x81, 0x10, 0x01, 0x0C, 0x11, 0x25,
|
0x25, 0x06, 0x1F, 0x01, 0x01, 0x36, 0x0E, 0x06, 0x06, 0x24, 0x01, 0x00,
|
||||||
0x53, 0x41, 0x01, 0x03, 0x0A, 0x17, 0x00, 0x00, 0x81, 0x10, 0x01, 0x0C,
|
0x94, 0x04, 0x11, 0x01, 0x02, 0x36, 0x0E, 0x06, 0x0A, 0x24, 0x6F, 0x2C,
|
||||||
0x11, 0x01, 0x01, 0x0E, 0x00, 0x00, 0x81, 0x10, 0x01, 0x0C, 0x11, 0x52,
|
0x06, 0x03, 0x01, 0x10, 0x35, 0x04, 0x01, 0x24, 0x04, 0x01, 0x24, 0x73,
|
||||||
0x00, 0x00, 0x1B, 0x01, 0x00, 0x6D, 0x2C, 0x25, 0x06, 0x20, 0x01, 0x01,
|
0x2C, 0x05, 0x33, 0x2D, 0x06, 0x30, 0x7D, 0x2C, 0x01, 0x14, 0x36, 0x0E,
|
||||||
0x36, 0x0E, 0x06, 0x07, 0x24, 0x01, 0x00, 0x81, 0x14, 0x04, 0x11, 0x01,
|
0x06, 0x06, 0x24, 0x01, 0x02, 0x35, 0x04, 0x22, 0x01, 0x15, 0x36, 0x0E,
|
||||||
0x02, 0x36, 0x0E, 0x06, 0x0A, 0x24, 0x6F, 0x2C, 0x06, 0x03, 0x01, 0x10,
|
0x06, 0x09, 0x24, 0xA3, 0x06, 0x03, 0x01, 0x7F, 0x94, 0x04, 0x13, 0x01,
|
||||||
0x35, 0x04, 0x01, 0x24, 0x04, 0x01, 0x24, 0x73, 0x2C, 0x05, 0x35, 0x2D,
|
0x16, 0x36, 0x0E, 0x06, 0x06, 0x24, 0x01, 0x01, 0x35, 0x04, 0x07, 0x24,
|
||||||
0x06, 0x32, 0x7D, 0x2C, 0x01, 0x14, 0x36, 0x0E, 0x06, 0x06, 0x24, 0x01,
|
0x01, 0x04, 0x35, 0x01, 0x00, 0x24, 0x1A, 0x06, 0x03, 0x01, 0x08, 0x35,
|
||||||
0x02, 0x35, 0x04, 0x24, 0x01, 0x15, 0x36, 0x0E, 0x06, 0x0B, 0x24, 0x81,
|
0x00, 0x00, 0x1B, 0x25, 0x05, 0x0F, 0x2D, 0x06, 0x0C, 0x7D, 0x2C, 0x01,
|
||||||
0x23, 0x06, 0x04, 0x01, 0x7F, 0x81, 0x14, 0x04, 0x13, 0x01, 0x16, 0x36,
|
0x15, 0x0E, 0x06, 0x04, 0x24, 0xA3, 0x04, 0x01, 0x1F, 0x00, 0x00, 0xC2,
|
||||||
0x0E, 0x06, 0x06, 0x24, 0x01, 0x01, 0x35, 0x04, 0x07, 0x24, 0x01, 0x04,
|
|
||||||
0x35, 0x01, 0x00, 0x24, 0x1A, 0x06, 0x03, 0x01, 0x08, 0x35, 0x00, 0x00,
|
|
||||||
0x1B, 0x25, 0x05, 0x10, 0x2D, 0x06, 0x0D, 0x7D, 0x2C, 0x01, 0x15, 0x0E,
|
|
||||||
0x06, 0x05, 0x24, 0x81, 0x23, 0x04, 0x01, 0x1F, 0x00, 0x00, 0x81, 0x42,
|
|
||||||
0x01, 0x07, 0x17, 0x01, 0x01, 0x0F, 0x06, 0x02, 0x6A, 0x26, 0x00, 0x01,
|
0x01, 0x07, 0x17, 0x01, 0x01, 0x0F, 0x06, 0x02, 0x6A, 0x26, 0x00, 0x01,
|
||||||
0x03, 0x00, 0x27, 0x1A, 0x06, 0x05, 0x02, 0x00, 0x7E, 0x3B, 0x00, 0x81,
|
0x03, 0x00, 0x27, 0x1A, 0x06, 0x05, 0x02, 0x00, 0x7E, 0x3B, 0x00, 0xC2,
|
||||||
0x42, 0x24, 0x04, 0x73, 0x00, 0x01, 0x14, 0x81, 0x45, 0x01, 0x01, 0x81,
|
0x24, 0x04, 0x74, 0x00, 0x01, 0x14, 0xC5, 0x01, 0x01, 0xD2, 0x27, 0x25,
|
||||||
0x52, 0x27, 0x25, 0x01, 0x00, 0x81, 0x3D, 0x01, 0x16, 0x81, 0x45, 0x81,
|
0x01, 0x00, 0xBD, 0x01, 0x16, 0xC5, 0xCB, 0x27, 0x00, 0x00, 0x01, 0x0B,
|
||||||
0x4B, 0x27, 0x00, 0x00, 0x01, 0x0B, 0x81, 0x52, 0x46, 0x25, 0x25, 0x01,
|
0xD2, 0x46, 0x25, 0x25, 0x01, 0x03, 0x08, 0xD1, 0xD1, 0x18, 0x25, 0x50,
|
||||||
0x03, 0x08, 0x81, 0x51, 0x81, 0x51, 0x18, 0x25, 0x50, 0x06, 0x02, 0x24,
|
0x06, 0x02, 0x24, 0x00, 0xD1, 0x1D, 0x25, 0x06, 0x05, 0x7C, 0x41, 0xCC,
|
||||||
0x00, 0x81, 0x51, 0x1D, 0x25, 0x06, 0x06, 0x7C, 0x41, 0x81, 0x4C, 0x04,
|
0x04, 0x77, 0x24, 0x04, 0x6C, 0x00, 0x20, 0x01, 0x0F, 0xD2, 0x25, 0x88,
|
||||||
0x76, 0x24, 0x04, 0x6A, 0x00, 0x20, 0x01, 0x0F, 0x81, 0x52, 0x25, 0x81,
|
0x2A, 0x01, 0x86, 0x03, 0x10, 0x06, 0x0C, 0x01, 0x04, 0x08, 0xD1, 0x78,
|
||||||
0x08, 0x2A, 0x01, 0x86, 0x03, 0x10, 0x06, 0x0F, 0x01, 0x04, 0x08, 0x81,
|
0x2C, 0xD2, 0x70, 0x2C, 0xD2, 0x04, 0x02, 0x56, 0xD1, 0x25, 0xD0, 0x7C,
|
||||||
0x51, 0x78, 0x2C, 0x81, 0x52, 0x70, 0x2C, 0x81, 0x52, 0x04, 0x03, 0x56,
|
0x41, 0xCC, 0x00, 0x02, 0x9A, 0x9C, 0x08, 0x98, 0x08, 0x9B, 0x08, 0x9D,
|
||||||
0x81, 0x51, 0x25, 0x81, 0x50, 0x7C, 0x41, 0x81, 0x4C, 0x00, 0x02, 0x81,
|
0x08, 0x99, 0x08, 0x03, 0x00, 0x01, 0x01, 0xD2, 0x01, 0x27, 0x84, 0x2C,
|
||||||
0x1A, 0x81, 0x1C, 0x08, 0x81, 0x18, 0x08, 0x81, 0x1B, 0x08, 0x81, 0x1D,
|
0x08, 0x87, 0x2C, 0x01, 0x01, 0x0B, 0x08, 0x02, 0x00, 0x06, 0x04, 0x56,
|
||||||
0x08, 0x81, 0x19, 0x08, 0x03, 0x00, 0x01, 0x01, 0x81, 0x52, 0x01, 0x27,
|
0x02, 0x00, 0x08, 0x7B, 0x2A, 0x36, 0x09, 0x25, 0x53, 0x06, 0x24, 0x02,
|
||||||
0x81, 0x04, 0x2C, 0x08, 0x81, 0x07, 0x2C, 0x01, 0x01, 0x0B, 0x08, 0x02,
|
0x00, 0x05, 0x04, 0x41, 0x56, 0x41, 0x57, 0x01, 0x04, 0x09, 0x25, 0x50,
|
||||||
0x00, 0x06, 0x04, 0x56, 0x02, 0x00, 0x08, 0x7B, 0x2A, 0x36, 0x09, 0x25,
|
0x06, 0x03, 0x24, 0x01, 0x00, 0x25, 0x01, 0x04, 0x08, 0x02, 0x00, 0x08,
|
||||||
0x53, 0x06, 0x24, 0x02, 0x00, 0x05, 0x04, 0x41, 0x56, 0x41, 0x57, 0x01,
|
0x03, 0x00, 0x41, 0x01, 0x04, 0x08, 0x36, 0x08, 0x41, 0x04, 0x03, 0x24,
|
||||||
0x04, 0x09, 0x25, 0x50, 0x06, 0x03, 0x24, 0x01, 0x00, 0x25, 0x01, 0x04,
|
0x01, 0x7F, 0x03, 0x01, 0xD1, 0x8A, 0x2A, 0xD0, 0x72, 0x01, 0x04, 0x19,
|
||||||
0x08, 0x02, 0x00, 0x08, 0x03, 0x00, 0x41, 0x01, 0x04, 0x08, 0x36, 0x08,
|
0x72, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x30, 0x72, 0x01, 0x20, 0xCC, 0x83,
|
||||||
0x41, 0x04, 0x03, 0x24, 0x01, 0x7F, 0x03, 0x01, 0x81, 0x51, 0x81, 0x0A,
|
0x84, 0x2C, 0xCE, 0x87, 0x2C, 0x25, 0x01, 0x01, 0x0B, 0xD0, 0x86, 0x41,
|
||||||
0x2A, 0x81, 0x50, 0x72, 0x01, 0x04, 0x19, 0x72, 0x01, 0x04, 0x08, 0x01,
|
0x25, 0x06, 0x0F, 0x55, 0x36, 0x2A, 0x25, 0xBC, 0x05, 0x02, 0x5A, 0x26,
|
||||||
0x1C, 0x30, 0x72, 0x01, 0x20, 0x81, 0x4C, 0x81, 0x03, 0x81, 0x04, 0x2C,
|
0xD0, 0x41, 0x56, 0x41, 0x04, 0x6E, 0x58, 0x01, 0x01, 0xD2, 0x01, 0x00,
|
||||||
0x81, 0x4E, 0x81, 0x07, 0x2C, 0x25, 0x01, 0x01, 0x0B, 0x81, 0x50, 0x81,
|
0xD2, 0x02, 0x00, 0x06, 0x81, 0x22, 0x02, 0x00, 0xD0, 0x9A, 0x06, 0x0E,
|
||||||
0x06, 0x41, 0x25, 0x06, 0x11, 0x55, 0x36, 0x2A, 0x25, 0x81, 0x3C, 0x05,
|
0x01, 0x83, 0xFE, 0x01, 0xD0, 0x80, 0x9A, 0x01, 0x04, 0x09, 0x25, 0xD0,
|
||||||
0x02, 0x5A, 0x26, 0x81, 0x50, 0x41, 0x56, 0x41, 0x04, 0x6C, 0x58, 0x01,
|
0x55, 0xCE, 0x9C, 0x06, 0x16, 0x01, 0x00, 0xD0, 0x81, 0x9C, 0x01, 0x04,
|
||||||
0x01, 0x81, 0x52, 0x01, 0x00, 0x81, 0x52, 0x02, 0x00, 0x06, 0x81, 0x49,
|
0x09, 0x25, 0xD0, 0x01, 0x02, 0x09, 0x25, 0xD0, 0x01, 0x00, 0xD2, 0x01,
|
||||||
0x02, 0x00, 0x81, 0x50, 0x81, 0x1A, 0x06, 0x13, 0x01, 0x83, 0xFE, 0x01,
|
0x03, 0x09, 0xCD, 0x98, 0x06, 0x0C, 0x01, 0x01, 0xD0, 0x01, 0x01, 0xD0,
|
||||||
0x81, 0x50, 0x81, 0x00, 0x81, 0x1A, 0x01, 0x04, 0x09, 0x25, 0x81, 0x50,
|
0x7A, 0x2C, 0x01, 0x08, 0x09, 0xD2, 0x9B, 0x06, 0x19, 0x01, 0x0D, 0xD0,
|
||||||
0x55, 0x81, 0x4E, 0x81, 0x1C, 0x06, 0x1D, 0x01, 0x00, 0x81, 0x50, 0x81,
|
0x9B, 0x01, 0x04, 0x09, 0x25, 0xD0, 0x01, 0x02, 0x09, 0xD0, 0x3F, 0x06,
|
||||||
0x01, 0x81, 0x1C, 0x01, 0x04, 0x09, 0x25, 0x81, 0x50, 0x01, 0x02, 0x09,
|
0x03, 0x01, 0x03, 0xCF, 0x40, 0x06, 0x03, 0x01, 0x01, 0xCF, 0x9D, 0x25,
|
||||||
0x25, 0x81, 0x50, 0x01, 0x00, 0x81, 0x52, 0x01, 0x03, 0x09, 0x81, 0x4D,
|
0x06, 0x22, 0x01, 0x0A, 0xD0, 0x01, 0x04, 0x09, 0x25, 0xD0, 0x57, 0xD0,
|
||||||
0x81, 0x18, 0x06, 0x0F, 0x01, 0x01, 0x81, 0x50, 0x01, 0x01, 0x81, 0x50,
|
0x3D, 0x01, 0x00, 0x25, 0x01, 0x20, 0x0A, 0x06, 0x0C, 0x96, 0x11, 0x01,
|
||||||
0x7A, 0x2C, 0x01, 0x08, 0x09, 0x81, 0x52, 0x81, 0x1B, 0x06, 0x1F, 0x01,
|
0x01, 0x17, 0x06, 0x02, 0x25, 0xD0, 0x54, 0x04, 0x6E, 0x58, 0x04, 0x01,
|
||||||
0x0D, 0x81, 0x50, 0x81, 0x1B, 0x01, 0x04, 0x09, 0x25, 0x81, 0x50, 0x01,
|
0x24, 0x99, 0x06, 0x0A, 0x01, 0x0B, 0xD0, 0x01, 0x02, 0xD0, 0x01, 0x82,
|
||||||
0x02, 0x09, 0x81, 0x50, 0x3F, 0x06, 0x04, 0x01, 0x03, 0x81, 0x4F, 0x40,
|
0x00, 0xD0, 0x02, 0x01, 0x50, 0x05, 0x11, 0x01, 0x15, 0xD0, 0x02, 0x01,
|
||||||
0x06, 0x04, 0x01, 0x01, 0x81, 0x4F, 0x81, 0x1D, 0x25, 0x06, 0x27, 0x01,
|
0x25, 0xD0, 0x25, 0x06, 0x06, 0x55, 0x01, 0x00, 0xD2, 0x04, 0x77, 0x24,
|
||||||
0x0A, 0x81, 0x50, 0x01, 0x04, 0x09, 0x25, 0x81, 0x50, 0x57, 0x81, 0x50,
|
0x00, 0x00, 0x01, 0x10, 0xD2, 0x71, 0x2A, 0x25, 0xC1, 0x06, 0x0C, 0xA1,
|
||||||
0x3D, 0x01, 0x00, 0x25, 0x01, 0x20, 0x0A, 0x06, 0x0E, 0x81, 0x16, 0x11,
|
0x22, 0x25, 0x56, 0xD1, 0x25, 0xD0, 0x7C, 0x41, 0xCC, 0x04, 0x0D, 0x25,
|
||||||
0x01, 0x01, 0x17, 0x06, 0x03, 0x25, 0x81, 0x50, 0x54, 0x04, 0x6C, 0x58,
|
0xBF, 0x41, 0xA1, 0x21, 0x25, 0x54, 0xD1, 0x25, 0xD2, 0x7C, 0x41, 0xCC,
|
||||||
0x04, 0x01, 0x24, 0x81, 0x19, 0x06, 0x0D, 0x01, 0x0B, 0x81, 0x50, 0x01,
|
0x00, 0x00, 0x92, 0x01, 0x14, 0xD2, 0x01, 0x0C, 0xD1, 0x7C, 0x01, 0x0C,
|
||||||
0x02, 0x81, 0x50, 0x01, 0x82, 0x00, 0x81, 0x50, 0x02, 0x01, 0x50, 0x05,
|
0xCC, 0x00, 0x00, 0x49, 0x25, 0x01, 0x00, 0x0E, 0x06, 0x02, 0x58, 0x00,
|
||||||
0x14, 0x01, 0x15, 0x81, 0x50, 0x02, 0x01, 0x25, 0x81, 0x50, 0x25, 0x06,
|
0xC2, 0x24, 0x04, 0x73, 0x00, 0x25, 0xD0, 0xCC, 0x00, 0x00, 0x25, 0xD2,
|
||||||
0x07, 0x55, 0x01, 0x00, 0x81, 0x52, 0x04, 0x76, 0x24, 0x00, 0x00, 0x01,
|
0xCC, 0x00, 0x01, 0x03, 0x00, 0x3E, 0x24, 0x25, 0x01, 0x10, 0x17, 0x06,
|
||||||
0x10, 0x81, 0x52, 0x71, 0x2A, 0x25, 0x81, 0x41, 0x06, 0x10, 0x81, 0x21,
|
0x06, 0x01, 0x04, 0xD2, 0x02, 0x00, 0xD2, 0x25, 0x01, 0x08, 0x17, 0x06,
|
||||||
0x22, 0x25, 0x56, 0x81, 0x51, 0x25, 0x81, 0x50, 0x7C, 0x41, 0x81, 0x4C,
|
0x06, 0x01, 0x03, 0xD2, 0x02, 0x00, 0xD2, 0x25, 0x01, 0x20, 0x17, 0x06,
|
||||||
0x04, 0x12, 0x25, 0x81, 0x3F, 0x41, 0x81, 0x21, 0x21, 0x25, 0x54, 0x81,
|
0x06, 0x01, 0x05, 0xD2, 0x02, 0x00, 0xD2, 0x25, 0x01, 0x80, 0x40, 0x17,
|
||||||
0x51, 0x25, 0x81, 0x52, 0x7C, 0x41, 0x81, 0x4C, 0x00, 0x00, 0x81, 0x12,
|
0x06, 0x06, 0x01, 0x06, 0xD2, 0x02, 0x00, 0xD2, 0x01, 0x04, 0x17, 0x06,
|
||||||
0x01, 0x14, 0x81, 0x52, 0x01, 0x0C, 0x81, 0x51, 0x7C, 0x01, 0x0C, 0x81,
|
0x06, 0x01, 0x02, 0xD2, 0x02, 0x00, 0xD2, 0x00, 0x00, 0x25, 0x01, 0x08,
|
||||||
0x4C, 0x00, 0x00, 0x49, 0x25, 0x01, 0x00, 0x0E, 0x06, 0x02, 0x58, 0x00,
|
0x47, 0xD2, 0xD2, 0x00, 0x00, 0x25, 0x01, 0x10, 0x47, 0xD2, 0xD0, 0x00,
|
||||||
0x81, 0x42, 0x24, 0x04, 0x72, 0x00, 0x25, 0x81, 0x50, 0x81, 0x4C, 0x00,
|
0x00, 0x25, 0x4A, 0x06, 0x02, 0x24, 0x00, 0xC2, 0x24, 0x04, 0x76
|
||||||
0x00, 0x25, 0x81, 0x52, 0x81, 0x4C, 0x00, 0x01, 0x03, 0x00, 0x3E, 0x24,
|
|
||||||
0x25, 0x01, 0x10, 0x17, 0x06, 0x08, 0x01, 0x04, 0x81, 0x52, 0x02, 0x00,
|
|
||||||
0x81, 0x52, 0x25, 0x01, 0x08, 0x17, 0x06, 0x08, 0x01, 0x03, 0x81, 0x52,
|
|
||||||
0x02, 0x00, 0x81, 0x52, 0x25, 0x01, 0x20, 0x17, 0x06, 0x08, 0x01, 0x05,
|
|
||||||
0x81, 0x52, 0x02, 0x00, 0x81, 0x52, 0x25, 0x01, 0x80, 0x40, 0x17, 0x06,
|
|
||||||
0x08, 0x01, 0x06, 0x81, 0x52, 0x02, 0x00, 0x81, 0x52, 0x01, 0x04, 0x17,
|
|
||||||
0x06, 0x08, 0x01, 0x02, 0x81, 0x52, 0x02, 0x00, 0x81, 0x52, 0x00, 0x00,
|
|
||||||
0x25, 0x01, 0x08, 0x47, 0x81, 0x52, 0x81, 0x52, 0x00, 0x00, 0x25, 0x01,
|
|
||||||
0x10, 0x47, 0x81, 0x52, 0x81, 0x50, 0x00, 0x00, 0x25, 0x4A, 0x06, 0x02,
|
|
||||||
0x24, 0x00, 0x81, 0x42, 0x24, 0x04, 0x75
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint16_t t0_caddr[] = {
|
static const uint16_t t0_caddr[] = {
|
||||||
|
|
@ -820,72 +796,72 @@ static const uint16_t t0_caddr[] = {
|
||||||
293,
|
293,
|
||||||
306,
|
306,
|
||||||
310,
|
310,
|
||||||
338,
|
335,
|
||||||
344,
|
341,
|
||||||
365,
|
360,
|
||||||
376,
|
371,
|
||||||
413,
|
405,
|
||||||
548,
|
521,
|
||||||
552,
|
525,
|
||||||
618,
|
590,
|
||||||
633,
|
605,
|
||||||
644,
|
616,
|
||||||
662,
|
634,
|
||||||
691,
|
663,
|
||||||
702,
|
673,
|
||||||
738,
|
709,
|
||||||
748,
|
719,
|
||||||
826,
|
789,
|
||||||
840,
|
803,
|
||||||
847,
|
809,
|
||||||
907,
|
869,
|
||||||
928,
|
888,
|
||||||
981,
|
937,
|
||||||
1067,
|
1013,
|
||||||
1096,
|
1040,
|
||||||
1131,
|
1071,
|
||||||
1143,
|
1082,
|
||||||
1482,
|
1383,
|
||||||
1641,
|
1530,
|
||||||
1667,
|
1554,
|
||||||
1898,
|
1770,
|
||||||
1913,
|
1784,
|
||||||
1924,
|
1793,
|
||||||
1930,
|
1797,
|
||||||
1999,
|
1861,
|
||||||
2022,
|
1882,
|
||||||
2083,
|
1938,
|
||||||
2091,
|
1945,
|
||||||
2105,
|
1956,
|
||||||
2125,
|
1972,
|
||||||
2133,
|
1978,
|
||||||
2145,
|
1989,
|
||||||
2182,
|
2024,
|
||||||
2194,
|
2036,
|
||||||
2201,
|
2042,
|
||||||
2218,
|
2057,
|
||||||
2235,
|
2073,
|
||||||
2374,
|
2211,
|
||||||
2384,
|
2220,
|
||||||
2398,
|
2233,
|
||||||
2408,
|
2242,
|
||||||
2416,
|
2249,
|
||||||
2522,
|
2352,
|
||||||
2544,
|
2373,
|
||||||
2558,
|
2386,
|
||||||
2575,
|
2402,
|
||||||
2598,
|
2420,
|
||||||
2635,
|
2452,
|
||||||
2677,
|
2486,
|
||||||
3049,
|
2796,
|
||||||
3096,
|
2832,
|
||||||
3113,
|
2845,
|
||||||
3128,
|
2859,
|
||||||
3135,
|
2864,
|
||||||
3142,
|
2869,
|
||||||
3218,
|
2935,
|
||||||
3228,
|
2943,
|
||||||
3238
|
2951
|
||||||
};
|
};
|
||||||
|
|
||||||
#define T0_INTERPRETED 80
|
#define T0_INTERPRETED 80
|
||||||
|
|
@ -911,6 +887,8 @@ name(void *ctx) \
|
||||||
|
|
||||||
T0_DEFENTRY(br_ssl_hs_client_init_main, 159)
|
T0_DEFENTRY(br_ssl_hs_client_init_main, 159)
|
||||||
|
|
||||||
|
#define T0_NEXT(t0ipp) (*(*(t0ipp)) ++)
|
||||||
|
|
||||||
void
|
void
|
||||||
br_ssl_hs_client_run(void *t0ctx)
|
br_ssl_hs_client_run(void *t0ctx)
|
||||||
{
|
{
|
||||||
|
|
@ -958,15 +936,17 @@ br_ssl_hs_client_run(void *t0ctx)
|
||||||
#define T0_CO() do { \
|
#define T0_CO() do { \
|
||||||
goto t0_exit; \
|
goto t0_exit; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define T0_RET() break
|
#define T0_RET() goto t0_next
|
||||||
|
|
||||||
dp = ((t0_context *)t0ctx)->dp;
|
dp = ((t0_context *)t0ctx)->dp;
|
||||||
rp = ((t0_context *)t0ctx)->rp;
|
rp = ((t0_context *)t0ctx)->rp;
|
||||||
ip = ((t0_context *)t0ctx)->ip;
|
ip = ((t0_context *)t0ctx)->ip;
|
||||||
|
goto t0_next;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint32_t t0x;
|
uint32_t t0x;
|
||||||
|
|
||||||
t0x = t0_parse7E_unsigned(&ip);
|
t0_next:
|
||||||
|
t0x = T0_NEXT(&ip);
|
||||||
if (t0x < T0_INTERPRETED) {
|
if (t0x < T0_INTERPRETED) {
|
||||||
switch (t0x) {
|
switch (t0x) {
|
||||||
int32_t t0off;
|
int32_t t0off;
|
||||||
|
|
|
||||||
|
|
@ -515,256 +515,231 @@ static const uint8_t t0_codeblock[] = {
|
||||||
0x01, T0_INT2(offsetof(br_ssl_engine_context, version_min)), 0x00,
|
0x01, T0_INT2(offsetof(br_ssl_engine_context, version_min)), 0x00,
|
||||||
0x00, 0x01, T0_INT2(offsetof(br_ssl_engine_context, version_out)),
|
0x00, 0x01, T0_INT2(offsetof(br_ssl_engine_context, version_out)),
|
||||||
0x00, 0x00, 0x09, 0x29, 0x56, 0x06, 0x02, 0x62, 0x2A, 0x00, 0x00, 0x01,
|
0x00, 0x00, 0x09, 0x29, 0x56, 0x06, 0x02, 0x62, 0x2A, 0x00, 0x00, 0x01,
|
||||||
0x01, 0x00, 0x01, 0x03, 0x00, 0x81, 0x11, 0x29, 0x5C, 0x46, 0x81, 0x15,
|
0x01, 0x00, 0x01, 0x03, 0x00, 0x91, 0x29, 0x5C, 0x46, 0x95, 0x29, 0x05,
|
||||||
0x29, 0x05, 0x04, 0x5D, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x06, 0x03,
|
0x04, 0x5D, 0x01, 0x00, 0x00, 0x02, 0x00, 0x0F, 0x06, 0x02, 0x95, 0x00,
|
||||||
0x81, 0x15, 0x00, 0x5C, 0x04, 0x69, 0x00, 0x06, 0x02, 0x62, 0x2A, 0x00,
|
0x5C, 0x04, 0x6B, 0x00, 0x06, 0x02, 0x62, 0x2A, 0x00, 0x00, 0x29, 0x82,
|
||||||
0x00, 0x29, 0x81, 0x02, 0x46, 0x05, 0x03, 0x01, 0x0C, 0x08, 0x46, 0x70,
|
0x46, 0x05, 0x03, 0x01, 0x0C, 0x08, 0x46, 0x70, 0x2D, 0x9D, 0x1C, 0x7D,
|
||||||
0x2D, 0x81, 0x1D, 0x1C, 0x7D, 0x01, 0x0C, 0x32, 0x00, 0x00, 0x29, 0x21,
|
0x01, 0x0C, 0x32, 0x00, 0x00, 0x29, 0x21, 0x01, 0x08, 0x0C, 0x46, 0x5A,
|
||||||
0x01, 0x08, 0x0C, 0x46, 0x5A, 0x21, 0x08, 0x00, 0x01, 0x03, 0x00, 0x01,
|
0x21, 0x08, 0x00, 0x01, 0x03, 0x00, 0x01, 0x00, 0x6F, 0x41, 0x2B, 0x19,
|
||||||
0x00, 0x6F, 0x41, 0x2B, 0x19, 0x37, 0x06, 0x08, 0x02, 0x00, 0x81, 0x43,
|
0x37, 0x06, 0x07, 0x02, 0x00, 0xC3, 0x03, 0x00, 0x04, 0x75, 0x01, 0x00,
|
||||||
0x03, 0x00, 0x04, 0x74, 0x01, 0x00, 0x81, 0x3B, 0x02, 0x00, 0x29, 0x19,
|
0xBB, 0x02, 0x00, 0x29, 0x19, 0x13, 0x06, 0x02, 0x69, 0x2A, 0xC3, 0x04,
|
||||||
0x13, 0x06, 0x02, 0x69, 0x2A, 0x81, 0x43, 0x04, 0x75, 0x00, 0x01, 0x00,
|
0x76, 0x00, 0x01, 0x00, 0x6F, 0x41, 0x01, 0x16, 0x80, 0x41, 0x35, 0xA5,
|
||||||
0x6F, 0x41, 0x01, 0x16, 0x81, 0x00, 0x41, 0x35, 0x81, 0x25, 0x34, 0x06,
|
0x34, 0x06, 0x02, 0x6B, 0x2A, 0x06, 0x0A, 0xCA, 0x01, 0x00, 0xC6, 0x01,
|
||||||
0x02, 0x6B, 0x2A, 0x06, 0x0D, 0x81, 0x4A, 0x01, 0x00, 0x81, 0x46, 0x01,
|
0x00, 0xA1, 0x04, 0x80, 0x46, 0xCA, 0xC7, 0x28, 0xCC, 0x4B, 0x06, 0x01,
|
||||||
0x00, 0x81, 0x21, 0x04, 0x80, 0x59, 0x81, 0x4A, 0x81, 0x47, 0x28, 0x81,
|
0xC8, 0xCB, 0x2B, 0x4B, 0x06, 0x31, 0x01, 0x00, 0xA2, 0x29, 0x56, 0x06,
|
||||||
0x4C, 0x4B, 0x06, 0x02, 0x81, 0x48, 0x81, 0x4B, 0x2B, 0x4B, 0x06, 0x3C,
|
0x0F, 0x01, 0x02, 0x9A, 0x05, 0x02, 0x36, 0x2A, 0x28, 0xA6, 0xA4, 0x29,
|
||||||
0x01, 0x00, 0x81, 0x22, 0x29, 0x56, 0x06, 0x13, 0x01, 0x02, 0x81, 0x1A,
|
0xBC, 0x28, 0x04, 0x19, 0x29, 0x58, 0x06, 0x0B, 0x28, 0x01, 0x02, 0x9A,
|
||||||
0x05, 0x02, 0x36, 0x2A, 0x28, 0x81, 0x26, 0x81, 0x24, 0x29, 0x81, 0x3C,
|
0x05, 0x02, 0x68, 0x2A, 0xA6, 0x04, 0x0A, 0xA8, 0x29, 0x05, 0x04, 0x28,
|
||||||
0x28, 0x04, 0x1F, 0x29, 0x58, 0x06, 0x0D, 0x28, 0x01, 0x02, 0x81, 0x1A,
|
0xA0, 0x04, 0x02, 0xA7, 0xA3, 0x04, 0x01, 0xA6, 0x01, 0x00, 0xA1, 0x01,
|
||||||
0x05, 0x02, 0x68, 0x2A, 0x81, 0x26, 0x04, 0x0E, 0x81, 0x28, 0x29, 0x05,
|
0x00, 0xC6, 0x3D, 0x01, 0x01, 0x6F, 0x41, 0x01, 0x17, 0x80, 0x41, 0x00,
|
||||||
0x05, 0x28, 0x81, 0x20, 0x04, 0x04, 0x81, 0x27, 0x81, 0x23, 0x04, 0x02,
|
0x00, 0x39, 0x39, 0x00, 0x01, 0x03, 0x00, 0x2B, 0x19, 0x37, 0x06, 0x04,
|
||||||
0x81, 0x26, 0x01, 0x00, 0x81, 0x21, 0x01, 0x00, 0x81, 0x46, 0x3D, 0x01,
|
0xC2, 0x28, 0x04, 0x78, 0x01, 0x02, 0x02, 0x00, 0xBA, 0x19, 0x37, 0x06,
|
||||||
0x01, 0x6F, 0x41, 0x01, 0x17, 0x81, 0x00, 0x41, 0x00, 0x00, 0x39, 0x39,
|
0x04, 0xC2, 0x28, 0x04, 0x78, 0x02, 0x00, 0x01, 0x84, 0x00, 0x08, 0x2A,
|
||||||
0x00, 0x01, 0x03, 0x00, 0x2B, 0x19, 0x37, 0x06, 0x05, 0x81, 0x42, 0x28,
|
|
||||||
0x04, 0x77, 0x01, 0x02, 0x02, 0x00, 0x81, 0x3A, 0x19, 0x37, 0x06, 0x05,
|
|
||||||
0x81, 0x42, 0x28, 0x04, 0x77, 0x02, 0x00, 0x01, 0x84, 0x00, 0x08, 0x2A,
|
|
||||||
0x00, 0x00, 0x79, 0x2E, 0x46, 0x12, 0x01, 0x01, 0x13, 0x36, 0x00, 0x00,
|
0x00, 0x00, 0x79, 0x2E, 0x46, 0x12, 0x01, 0x01, 0x13, 0x36, 0x00, 0x00,
|
||||||
0x01, 0x7F, 0x81, 0x17, 0x81, 0x42, 0x29, 0x01, 0x07, 0x13, 0x01, 0x00,
|
0x01, 0x7F, 0x97, 0xC2, 0x29, 0x01, 0x07, 0x13, 0x01, 0x00, 0x39, 0x0F,
|
||||||
0x39, 0x0F, 0x06, 0x0A, 0x28, 0x01, 0x10, 0x13, 0x06, 0x02, 0x81, 0x39,
|
0x06, 0x09, 0x28, 0x01, 0x10, 0x13, 0x06, 0x01, 0xB9, 0x04, 0x2A, 0x01,
|
||||||
0x04, 0x2F, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x26, 0x28, 0x28, 0x81, 0x01,
|
0x01, 0x39, 0x0F, 0x06, 0x21, 0x28, 0x28, 0x81, 0x2F, 0x01, 0x01, 0x0F,
|
||||||
0x2F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x81, 0x1A, 0x38, 0x06, 0x11, 0x2B,
|
0x01, 0x01, 0x9A, 0x38, 0x06, 0x0F, 0x2B, 0x19, 0x37, 0x06, 0x04, 0xC2,
|
||||||
0x19, 0x37, 0x06, 0x05, 0x81, 0x42, 0x28, 0x04, 0x77, 0x01, 0x80, 0x64,
|
0x28, 0x04, 0x78, 0x01, 0x80, 0x64, 0xBB, 0x04, 0x03, 0x01, 0x00, 0x97,
|
||||||
0x81, 0x3B, 0x04, 0x04, 0x01, 0x00, 0x81, 0x17, 0x04, 0x03, 0x6B, 0x2A,
|
0x04, 0x03, 0x6B, 0x2A, 0x28, 0x04, 0x40, 0x01, 0x29, 0x03, 0x00, 0x09,
|
||||||
0x28, 0x04, 0xFF, 0x38, 0x01, 0x29, 0x03, 0x00, 0x09, 0x29, 0x56, 0x06,
|
0x29, 0x56, 0x06, 0x02, 0x62, 0x2A, 0x02, 0x00, 0x00, 0x00, 0x92, 0x01,
|
||||||
0x02, 0x62, 0x2A, 0x02, 0x00, 0x00, 0x00, 0x81, 0x12, 0x01, 0x0F, 0x13,
|
0x0F, 0x13, 0x00, 0x00, 0x6E, 0x2F, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x10,
|
||||||
0x00, 0x00, 0x6E, 0x2F, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x10, 0x28, 0x29,
|
0x28, 0x29, 0x01, 0x01, 0x0E, 0x06, 0x03, 0x28, 0x01, 0x02, 0x6E, 0x41,
|
||||||
0x01, 0x01, 0x0E, 0x06, 0x03, 0x28, 0x01, 0x02, 0x6E, 0x41, 0x01, 0x00,
|
0x01, 0x00, 0x04, 0x22, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x15, 0x28, 0x01,
|
||||||
0x04, 0x22, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x15, 0x28, 0x01, 0x00, 0x6E,
|
0x00, 0x6E, 0x41, 0x29, 0x01, 0x80, 0x64, 0x0F, 0x06, 0x05, 0x01, 0x82,
|
||||||
0x41, 0x29, 0x01, 0x80, 0x64, 0x0F, 0x06, 0x05, 0x01, 0x82, 0x00, 0x08,
|
0x00, 0x08, 0x2A, 0x58, 0x00, 0x04, 0x07, 0x28, 0x01, 0x82, 0x00, 0x08,
|
||||||
0x2A, 0x58, 0x00, 0x04, 0x07, 0x28, 0x01, 0x82, 0x00, 0x08, 0x2A, 0x28,
|
0x2A, 0x28, 0x00, 0x00, 0x01, 0x00, 0x30, 0x06, 0x05, 0x3C, 0x9E, 0x38,
|
||||||
0x00, 0x00, 0x01, 0x00, 0x30, 0x06, 0x06, 0x3C, 0x81, 0x1E, 0x38, 0x04,
|
0x04, 0x78, 0x29, 0x06, 0x04, 0x01, 0x01, 0x87, 0x41, 0x00, 0x00, 0x01,
|
||||||
0x77, 0x29, 0x06, 0x05, 0x01, 0x01, 0x81, 0x07, 0x41, 0x00, 0x00, 0x01,
|
|
||||||
0x1F, 0x13, 0x01, 0x12, 0x0F, 0x05, 0x02, 0x6C, 0x2A, 0x70, 0x2D, 0x29,
|
0x1F, 0x13, 0x01, 0x12, 0x0F, 0x05, 0x02, 0x6C, 0x2A, 0x70, 0x2D, 0x29,
|
||||||
0x81, 0x3E, 0x05, 0x02, 0x6B, 0x2A, 0x81, 0x1D, 0x27, 0x00, 0x00, 0x30,
|
0xBE, 0x05, 0x02, 0x6B, 0x2A, 0x9D, 0x27, 0x00, 0x00, 0x30, 0x06, 0x0B,
|
||||||
0x06, 0x0B, 0x7F, 0x2F, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x6B, 0x2A, 0x04,
|
0x7F, 0x2F, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x6B, 0x2A, 0x04, 0x11, 0xC2,
|
||||||
0x12, 0x81, 0x42, 0x01, 0x07, 0x13, 0x29, 0x01, 0x02, 0x0E, 0x06, 0x06,
|
0x01, 0x07, 0x13, 0x29, 0x01, 0x02, 0x0E, 0x06, 0x06, 0x06, 0x02, 0x6B,
|
||||||
0x06, 0x02, 0x6B, 0x2A, 0x04, 0x6F, 0x28, 0x81, 0x37, 0x01, 0x01, 0x0E,
|
0x2A, 0x04, 0x70, 0x28, 0xB7, 0x01, 0x01, 0x0E, 0x34, 0x38, 0x06, 0x02,
|
||||||
0x34, 0x38, 0x06, 0x02, 0x5E, 0x2A, 0x29, 0x01, 0x01, 0x81, 0x3D, 0x37,
|
0x5E, 0x2A, 0x29, 0x01, 0x01, 0xBD, 0x37, 0xA9, 0x00, 0x01, 0xAE, 0x01,
|
||||||
0x81, 0x29, 0x00, 0x01, 0x81, 0x2E, 0x01, 0x0B, 0x0F, 0x05, 0x02, 0x6B,
|
0x0B, 0x0F, 0x05, 0x02, 0x6B, 0x2A, 0x29, 0x01, 0x03, 0x0F, 0x06, 0x08,
|
||||||
0x2A, 0x29, 0x01, 0x03, 0x0F, 0x06, 0x09, 0x81, 0x35, 0x06, 0x02, 0x62,
|
0xB5, 0x06, 0x02, 0x62, 0x2A, 0x46, 0x28, 0x00, 0x46, 0x55, 0xB5, 0x9C,
|
||||||
0x2A, 0x46, 0x28, 0x00, 0x46, 0x55, 0x81, 0x35, 0x81, 0x1C, 0x29, 0x06,
|
0x29, 0x06, 0x23, 0xB5, 0x9C, 0x29, 0x54, 0x29, 0x06, 0x18, 0x29, 0x01,
|
||||||
0x27, 0x81, 0x35, 0x81, 0x1C, 0x29, 0x54, 0x29, 0x06, 0x19, 0x29, 0x01,
|
|
||||||
0x82, 0x00, 0x10, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x29, 0x03,
|
0x82, 0x00, 0x10, 0x06, 0x05, 0x01, 0x82, 0x00, 0x04, 0x01, 0x29, 0x03,
|
||||||
0x00, 0x7D, 0x02, 0x00, 0x81, 0x2A, 0x02, 0x00, 0x51, 0x04, 0x64, 0x81,
|
0x00, 0x7D, 0x02, 0x00, 0xAA, 0x02, 0x00, 0x51, 0x04, 0x65, 0x93, 0x52,
|
||||||
0x13, 0x52, 0x04, 0x56, 0x81, 0x13, 0x81, 0x13, 0x53, 0x29, 0x06, 0x02,
|
0x04, 0x5A, 0x93, 0x93, 0x53, 0x29, 0x06, 0x02, 0x36, 0x00, 0x28, 0x2C,
|
||||||
0x36, 0x00, 0x28, 0x2C, 0x00, 0x02, 0x29, 0x01, 0x20, 0x13, 0x05, 0x02,
|
0x00, 0x02, 0x29, 0x01, 0x20, 0x13, 0x05, 0x02, 0x6C, 0x2A, 0x01, 0x0F,
|
||||||
0x6C, 0x2A, 0x01, 0x0F, 0x13, 0x03, 0x00, 0x81, 0x24, 0x81, 0x0B, 0x2D,
|
0x13, 0x03, 0x00, 0xA4, 0x8B, 0x2D, 0x01, 0x86, 0x03, 0x11, 0x06, 0x23,
|
||||||
0x01, 0x86, 0x03, 0x11, 0x06, 0x24, 0x81, 0x34, 0x29, 0x01, 0x81, 0x7F,
|
0xB4, 0x29, 0x01, 0x81, 0x7F, 0x13, 0x5A, 0x01, 0x01, 0x12, 0x02, 0x00,
|
||||||
0x13, 0x5A, 0x01, 0x01, 0x12, 0x02, 0x00, 0x0F, 0x05, 0x02, 0x64, 0x2A,
|
0x0F, 0x05, 0x02, 0x64, 0x2A, 0x01, 0x08, 0x12, 0x29, 0x01, 0x02, 0x0B,
|
||||||
0x01, 0x08, 0x12, 0x29, 0x01, 0x02, 0x0B, 0x39, 0x01, 0x06, 0x10, 0x38,
|
0x39, 0x01, 0x06, 0x10, 0x38, 0x06, 0x02, 0x66, 0x2A, 0x04, 0x0D, 0x02,
|
||||||
0x06, 0x02, 0x66, 0x2A, 0x04, 0x0D, 0x02, 0x00, 0x01, 0x01, 0x0F, 0x06,
|
0x00, 0x01, 0x01, 0x0F, 0x06, 0x04, 0x01, 0x00, 0x04, 0x02, 0x01, 0x02,
|
||||||
0x04, 0x01, 0x00, 0x04, 0x02, 0x01, 0x02, 0x20, 0x05, 0x02, 0x66, 0x2A,
|
0x20, 0x05, 0x02, 0x66, 0x2A, 0xB4, 0x29, 0x03, 0x01, 0x29, 0x01, 0x84,
|
||||||
0x81, 0x34, 0x29, 0x03, 0x01, 0x29, 0x01, 0x84, 0x00, 0x10, 0x06, 0x02,
|
0x00, 0x10, 0x06, 0x02, 0x67, 0x2A, 0x7D, 0x46, 0xAA, 0x02, 0x01, 0x4E,
|
||||||
0x67, 0x2A, 0x7D, 0x46, 0x81, 0x2A, 0x02, 0x01, 0x4E, 0x29, 0x06, 0x01,
|
0x29, 0x06, 0x01, 0x2A, 0x28, 0x93, 0x00, 0x00, 0x1D, 0xAE, 0x01, 0x0F,
|
||||||
0x2A, 0x28, 0x81, 0x13, 0x00, 0x00, 0x1D, 0x81, 0x2E, 0x01, 0x0F, 0x0F,
|
0x0F, 0x05, 0x02, 0x6B, 0x2A, 0x00, 0x0A, 0xAE, 0x01, 0x01, 0x0F, 0x05,
|
||||||
0x05, 0x02, 0x6B, 0x2A, 0x00, 0x0A, 0x81, 0x2E, 0x01, 0x01, 0x0F, 0x05,
|
0x02, 0x6B, 0x2A, 0xB4, 0x29, 0x03, 0x00, 0x71, 0x3F, 0x72, 0x01, 0x20,
|
||||||
0x02, 0x6B, 0x2A, 0x81, 0x34, 0x29, 0x03, 0x00, 0x71, 0x3F, 0x72, 0x01,
|
0xAA, 0xB6, 0x29, 0x01, 0x20, 0x10, 0x06, 0x02, 0x6A, 0x2A, 0x29, 0x86,
|
||||||
0x20, 0x81, 0x2A, 0x81, 0x36, 0x29, 0x01, 0x20, 0x10, 0x06, 0x02, 0x6A,
|
0x41, 0x85, 0x46, 0xAA, 0x1A, 0x03, 0x01, 0xB4, 0x9C, 0x01, 0x00, 0x03,
|
||||||
0x2A, 0x29, 0x81, 0x06, 0x41, 0x81, 0x05, 0x46, 0x81, 0x2A, 0x1A, 0x03,
|
0x02, 0x01, 0x00, 0x03, 0x03, 0x7B, 0x98, 0x17, 0x39, 0x08, 0x03, 0x04,
|
||||||
0x01, 0x81, 0x34, 0x81, 0x1C, 0x01, 0x00, 0x03, 0x02, 0x01, 0x00, 0x03,
|
0x03, 0x05, 0x29, 0x06, 0x80, 0x6D, 0xB4, 0x29, 0x03, 0x06, 0x02, 0x01,
|
||||||
0x03, 0x7B, 0x81, 0x18, 0x17, 0x39, 0x08, 0x03, 0x04, 0x03, 0x05, 0x29,
|
0x06, 0x0A, 0x29, 0x70, 0x2D, 0x0F, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x03,
|
||||||
0x06, 0x80, 0x73, 0x81, 0x34, 0x29, 0x03, 0x06, 0x02, 0x01, 0x06, 0x0A,
|
0x29, 0x01, 0x81, 0x7F, 0x0F, 0x06, 0x0A, 0x81, 0x2F, 0x06, 0x02, 0x63,
|
||||||
0x29, 0x70, 0x2D, 0x0F, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x03, 0x29, 0x01,
|
0x2A, 0x01, 0x7F, 0x03, 0x02, 0x29, 0x01, 0x81, 0xAC, 0x00, 0x0F, 0x06,
|
||||||
0x81, 0x7F, 0x0F, 0x06, 0x0B, 0x81, 0x01, 0x2F, 0x06, 0x02, 0x63, 0x2A,
|
0x11, 0x02, 0x00, 0x8E, 0x2D, 0x11, 0x02, 0x00, 0x8D, 0x2D, 0x0B, 0x13,
|
||||||
0x01, 0x7F, 0x03, 0x02, 0x29, 0x01, 0x81, 0xAC, 0x00, 0x0F, 0x06, 0x13,
|
0x06, 0x04, 0x01, 0x7F, 0x03, 0x00, 0xB8, 0x29, 0x56, 0x06, 0x03, 0x28,
|
||||||
0x02, 0x00, 0x81, 0x0E, 0x2D, 0x11, 0x02, 0x00, 0x81, 0x0D, 0x2D, 0x0B,
|
0x04, 0x26, 0x01, 0x00, 0x9A, 0x06, 0x0B, 0x01, 0x02, 0x0C, 0x73, 0x08,
|
||||||
0x13, 0x06, 0x04, 0x01, 0x7F, 0x03, 0x00, 0x81, 0x38, 0x29, 0x56, 0x06,
|
0x02, 0x06, 0x46, 0x3F, 0x04, 0x16, 0x28, 0x02, 0x05, 0x02, 0x04, 0x11,
|
||||||
0x03, 0x28, 0x04, 0x27, 0x01, 0x00, 0x81, 0x1A, 0x06, 0x0B, 0x01, 0x02,
|
0x06, 0x02, 0x61, 0x2A, 0x02, 0x06, 0x02, 0x05, 0x3F, 0x02, 0x05, 0x01,
|
||||||
0x0C, 0x73, 0x08, 0x02, 0x06, 0x46, 0x3F, 0x04, 0x16, 0x28, 0x02, 0x05,
|
0x04, 0x08, 0x03, 0x05, 0x04, 0xFF, 0x0F, 0x28, 0x01, 0x00, 0x03, 0x07,
|
||||||
0x02, 0x04, 0x11, 0x06, 0x02, 0x61, 0x2A, 0x02, 0x06, 0x02, 0x05, 0x3F,
|
0xB6, 0x9C, 0x29, 0x06, 0x09, 0xB6, 0x05, 0x04, 0x01, 0x7F, 0x03, 0x07,
|
||||||
0x02, 0x05, 0x01, 0x04, 0x08, 0x03, 0x05, 0x04, 0xFF, 0x09, 0x28, 0x01,
|
0x04, 0x74, 0x93, 0x01, 0x00, 0x83, 0x41, 0x01, 0x88, 0x04, 0x7A, 0x3F,
|
||||||
0x00, 0x03, 0x07, 0x81, 0x36, 0x81, 0x1C, 0x29, 0x06, 0x0A, 0x81, 0x36,
|
0x01, 0x84, 0x80, 0x80, 0x00, 0x76, 0x40, 0x29, 0x06, 0x80, 0x42, 0xB4,
|
||||||
0x05, 0x04, 0x01, 0x7F, 0x03, 0x07, 0x04, 0x73, 0x81, 0x13, 0x01, 0x00,
|
0x9C, 0x29, 0x06, 0x3C, 0xB4, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x04, 0x28,
|
||||||
0x81, 0x03, 0x41, 0x01, 0x88, 0x04, 0x7A, 0x3F, 0x01, 0x84, 0x80, 0x80,
|
0xAD, 0x04, 0x2F, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x04, 0x28, 0xAB, 0x04,
|
||||||
0x00, 0x76, 0x40, 0x29, 0x06, 0x80, 0x4E, 0x81, 0x34, 0x81, 0x1C, 0x29,
|
0x25, 0x01, 0x83, 0xFE, 0x01, 0x39, 0x0F, 0x06, 0x04, 0x28, 0xAC, 0x04,
|
||||||
0x06, 0x80, 0x44, 0x81, 0x34, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x05, 0x28,
|
0x19, 0x01, 0x0D, 0x39, 0x0F, 0x06, 0x04, 0x28, 0xB2, 0x04, 0x0F, 0x01,
|
||||||
0x81, 0x2D, 0x04, 0x34, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x05, 0x28, 0x81,
|
0x0A, 0x39, 0x0F, 0x06, 0x04, 0x28, 0xB3, 0x04, 0x05, 0x28, 0xB0, 0x01,
|
||||||
0x2B, 0x04, 0x29, 0x01, 0x83, 0xFE, 0x01, 0x39, 0x0F, 0x06, 0x05, 0x28,
|
0x00, 0x28, 0x04, 0x41, 0x93, 0x93, 0x02, 0x01, 0x02, 0x03, 0x13, 0x03,
|
||||||
0x81, 0x2C, 0x04, 0x1C, 0x01, 0x0D, 0x39, 0x0F, 0x06, 0x05, 0x28, 0x81,
|
0x01, 0x02, 0x00, 0x56, 0x06, 0x08, 0x71, 0x2D, 0x8F, 0x3F, 0x01, 0x80,
|
||||||
0x32, 0x04, 0x11, 0x01, 0x0A, 0x39, 0x0F, 0x06, 0x05, 0x28, 0x81, 0x33,
|
0x56, 0x99, 0x8D, 0x2D, 0x29, 0x02, 0x00, 0x10, 0x06, 0x03, 0x28, 0x02,
|
||||||
0x04, 0x06, 0x28, 0x81, 0x30, 0x01, 0x00, 0x28, 0x04, 0xFF, 0x38, 0x81,
|
|
||||||
0x13, 0x81, 0x13, 0x02, 0x01, 0x02, 0x03, 0x13, 0x03, 0x01, 0x02, 0x00,
|
|
||||||
0x56, 0x06, 0x0A, 0x71, 0x2D, 0x81, 0x0F, 0x3F, 0x01, 0x80, 0x56, 0x81,
|
|
||||||
0x19, 0x81, 0x0D, 0x2D, 0x29, 0x02, 0x00, 0x10, 0x06, 0x03, 0x28, 0x02,
|
|
||||||
0x00, 0x29, 0x01, 0x86, 0x00, 0x0B, 0x06, 0x02, 0x65, 0x2A, 0x02, 0x00,
|
0x00, 0x29, 0x01, 0x86, 0x00, 0x0B, 0x06, 0x02, 0x65, 0x2A, 0x02, 0x00,
|
||||||
0x81, 0x0E, 0x2D, 0x0B, 0x06, 0x05, 0x01, 0x80, 0x46, 0x81, 0x19, 0x02,
|
0x8E, 0x2D, 0x0B, 0x06, 0x04, 0x01, 0x80, 0x46, 0x99, 0x02, 0x01, 0x06,
|
||||||
0x01, 0x06, 0x12, 0x81, 0x0B, 0x2D, 0x02, 0x00, 0x0D, 0x06, 0x06, 0x28,
|
0x10, 0x8B, 0x2D, 0x02, 0x00, 0x0D, 0x06, 0x05, 0x28, 0x8B, 0x2D, 0x04,
|
||||||
0x81, 0x0B, 0x2D, 0x04, 0x04, 0x01, 0x00, 0x03, 0x01, 0x29, 0x81, 0x0B,
|
0x04, 0x01, 0x00, 0x03, 0x01, 0x29, 0x8B, 0x3F, 0x29, 0x8C, 0x3F, 0x29,
|
||||||
0x3F, 0x29, 0x81, 0x0C, 0x3F, 0x29, 0x81, 0x0F, 0x3F, 0x01, 0x86, 0x03,
|
0x8F, 0x3F, 0x01, 0x86, 0x03, 0x11, 0x03, 0x08, 0x02, 0x02, 0x06, 0x04,
|
||||||
0x11, 0x03, 0x08, 0x02, 0x02, 0x06, 0x05, 0x01, 0x02, 0x81, 0x01, 0x41,
|
0x01, 0x02, 0x81, 0x41, 0x02, 0x07, 0x05, 0x03, 0x01, 0x28, 0x99, 0x43,
|
||||||
0x02, 0x07, 0x05, 0x04, 0x01, 0x28, 0x81, 0x19, 0x43, 0x28, 0x01, 0x82,
|
0x28, 0x01, 0x82, 0x01, 0x07, 0x7A, 0x2D, 0x13, 0x29, 0x7A, 0x3F, 0x29,
|
||||||
0x01, 0x07, 0x7A, 0x2D, 0x13, 0x29, 0x7A, 0x3F, 0x29, 0x01, 0x81, 0x7F,
|
0x01, 0x81, 0x7F, 0x13, 0x57, 0x36, 0x46, 0x01, 0x08, 0x12, 0x57, 0x01,
|
||||||
0x13, 0x57, 0x36, 0x46, 0x01, 0x08, 0x12, 0x57, 0x01, 0x02, 0x13, 0x38,
|
0x02, 0x13, 0x38, 0x03, 0x09, 0x76, 0x2E, 0x42, 0x13, 0x29, 0x76, 0x40,
|
||||||
0x03, 0x09, 0x76, 0x2E, 0x42, 0x13, 0x29, 0x76, 0x40, 0x05, 0x04, 0x01,
|
0x05, 0x04, 0x01, 0x00, 0x03, 0x09, 0x02, 0x01, 0x06, 0x03, 0x01, 0x7F,
|
||||||
0x00, 0x03, 0x09, 0x02, 0x01, 0x06, 0x03, 0x01, 0x7F, 0x00, 0x81, 0x05,
|
0x00, 0x85, 0x01, 0x20, 0x33, 0x01, 0x20, 0x86, 0x41, 0x73, 0x29, 0x03,
|
||||||
0x01, 0x20, 0x33, 0x01, 0x20, 0x81, 0x06, 0x41, 0x73, 0x29, 0x03, 0x05,
|
0x05, 0x29, 0x02, 0x04, 0x0B, 0x06, 0x80, 0x49, 0x29, 0x2D, 0x29, 0x92,
|
||||||
0x29, 0x02, 0x04, 0x0B, 0x06, 0x80, 0x4A, 0x29, 0x2D, 0x29, 0x81, 0x12,
|
|
||||||
0x29, 0x01, 0x0C, 0x12, 0x29, 0x01, 0x01, 0x0F, 0x46, 0x01, 0x02, 0x0F,
|
0x29, 0x01, 0x0C, 0x12, 0x29, 0x01, 0x01, 0x0F, 0x46, 0x01, 0x02, 0x0F,
|
||||||
0x38, 0x06, 0x0A, 0x29, 0x02, 0x09, 0x13, 0x05, 0x04, 0x5D, 0x01, 0x00,
|
0x38, 0x06, 0x0A, 0x29, 0x02, 0x09, 0x13, 0x05, 0x04, 0x5D, 0x01, 0x00,
|
||||||
0x29, 0x02, 0x08, 0x05, 0x0E, 0x29, 0x01, 0x81, 0x70, 0x13, 0x01, 0x20,
|
0x29, 0x02, 0x08, 0x05, 0x0E, 0x29, 0x01, 0x81, 0x70, 0x13, 0x01, 0x20,
|
||||||
0x0E, 0x06, 0x04, 0x5D, 0x01, 0x00, 0x29, 0x29, 0x06, 0x10, 0x02, 0x05,
|
0x0E, 0x06, 0x04, 0x5D, 0x01, 0x00, 0x29, 0x29, 0x06, 0x10, 0x02, 0x05,
|
||||||
0x5C, 0x3F, 0x02, 0x05, 0x3F, 0x02, 0x05, 0x01, 0x04, 0x08, 0x03, 0x05,
|
0x5C, 0x3F, 0x02, 0x05, 0x3F, 0x02, 0x05, 0x01, 0x04, 0x08, 0x03, 0x05,
|
||||||
0x04, 0x01, 0x5D, 0x01, 0x04, 0x08, 0x04, 0xFF, 0x2F, 0x28, 0x02, 0x05,
|
0x04, 0x01, 0x5D, 0x01, 0x04, 0x08, 0x04, 0xFF, 0x30, 0x28, 0x02, 0x05,
|
||||||
0x73, 0x09, 0x01, 0x02, 0x12, 0x29, 0x05, 0x04, 0x01, 0x28, 0x81, 0x19,
|
0x73, 0x09, 0x01, 0x02, 0x12, 0x29, 0x05, 0x03, 0x01, 0x28, 0x99, 0x74,
|
||||||
0x74, 0x41, 0x18, 0x05, 0x04, 0x01, 0x28, 0x81, 0x19, 0x01, 0x00, 0x00,
|
0x41, 0x18, 0x05, 0x03, 0x01, 0x28, 0x99, 0x01, 0x00, 0x00, 0x00, 0xA8,
|
||||||
0x00, 0x81, 0x28, 0x81, 0x27, 0x00, 0x04, 0x70, 0x2D, 0x81, 0x41, 0x06,
|
0xA7, 0x00, 0x04, 0x70, 0x2D, 0xC1, 0x06, 0x16, 0xB4, 0x29, 0x01, 0x84,
|
||||||
0x19, 0x81, 0x34, 0x29, 0x01, 0x84, 0x00, 0x10, 0x06, 0x02, 0x67, 0x2A,
|
0x00, 0x10, 0x06, 0x02, 0x67, 0x2A, 0x29, 0x03, 0x00, 0x7D, 0x46, 0xAA,
|
||||||
0x29, 0x03, 0x00, 0x7D, 0x46, 0x81, 0x2A, 0x02, 0x00, 0x70, 0x2D, 0x81,
|
0x02, 0x00, 0x70, 0x2D, 0x9D, 0x26, 0x70, 0x2D, 0x29, 0xBF, 0x46, 0xBE,
|
||||||
0x1D, 0x26, 0x70, 0x2D, 0x29, 0x81, 0x3F, 0x46, 0x81, 0x3E, 0x03, 0x01,
|
0x03, 0x01, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x38, 0x06, 0x14, 0xB6,
|
||||||
0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x38, 0x06, 0x17, 0x81, 0x36, 0x29,
|
0x29, 0x03, 0x03, 0x7D, 0x46, 0xAA, 0x02, 0x03, 0x70, 0x2D, 0x9D, 0x02,
|
||||||
0x03, 0x03, 0x7D, 0x46, 0x81, 0x2A, 0x02, 0x03, 0x70, 0x2D, 0x81, 0x1D,
|
0x02, 0x06, 0x03, 0x25, 0x04, 0x01, 0x23, 0x93, 0x00, 0x00, 0xAE, 0x01,
|
||||||
0x02, 0x02, 0x06, 0x03, 0x25, 0x04, 0x01, 0x23, 0x81, 0x13, 0x00, 0x00,
|
0x10, 0x0F, 0x05, 0x02, 0x6B, 0x2A, 0x00, 0x00, 0x94, 0xAE, 0x01, 0x14,
|
||||||
0x81, 0x2E, 0x01, 0x10, 0x0F, 0x05, 0x02, 0x6B, 0x2A, 0x00, 0x00, 0x81,
|
0x0E, 0x06, 0x02, 0x6B, 0x2A, 0x7D, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0xAA,
|
||||||
0x14, 0x81, 0x2E, 0x01, 0x14, 0x0E, 0x06, 0x02, 0x6B, 0x2A, 0x7D, 0x01,
|
0x93, 0x7D, 0x29, 0x01, 0x0C, 0x08, 0x01, 0x0C, 0x31, 0x05, 0x02, 0x5F,
|
||||||
0x0C, 0x08, 0x01, 0x0C, 0x81, 0x2A, 0x81, 0x13, 0x7D, 0x29, 0x01, 0x0C,
|
0x2A, 0x00, 0x02, 0x03, 0x00, 0x03, 0x01, 0x02, 0x00, 0x90, 0x02, 0x01,
|
||||||
0x08, 0x01, 0x0C, 0x31, 0x05, 0x02, 0x5F, 0x2A, 0x00, 0x02, 0x03, 0x00,
|
0x02, 0x00, 0x3B, 0x29, 0x01, 0x00, 0x0F, 0x06, 0x02, 0x5D, 0x00, 0xC4,
|
||||||
0x03, 0x01, 0x02, 0x00, 0x81, 0x10, 0x02, 0x01, 0x02, 0x00, 0x3B, 0x29,
|
0x04, 0x74, 0x00, 0xB4, 0x01, 0x01, 0x0E, 0x06, 0x02, 0x60, 0x2A, 0xB6,
|
||||||
0x01, 0x00, 0x0F, 0x06, 0x02, 0x5D, 0x00, 0x81, 0x44, 0x04, 0x73, 0x00,
|
0x29, 0x29, 0x58, 0x46, 0x01, 0x05, 0x11, 0x38, 0x06, 0x02, 0x60, 0x2A,
|
||||||
0x81, 0x34, 0x01, 0x01, 0x0E, 0x06, 0x02, 0x60, 0x2A, 0x81, 0x36, 0x29,
|
0x01, 0x08, 0x08, 0x29, 0x7C, 0x2F, 0x0B, 0x06, 0x0D, 0x29, 0x01, 0x01,
|
||||||
0x29, 0x58, 0x46, 0x01, 0x05, 0x11, 0x38, 0x06, 0x02, 0x60, 0x2A, 0x01,
|
0x46, 0x0C, 0x3E, 0x29, 0x7C, 0x41, 0x7E, 0x41, 0x04, 0x01, 0x28, 0x00,
|
||||||
0x08, 0x08, 0x29, 0x7C, 0x2F, 0x0B, 0x06, 0x0D, 0x29, 0x01, 0x01, 0x46,
|
0x00, 0xB4, 0x81, 0x2F, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x13, 0x28, 0x01,
|
||||||
0x0C, 0x3E, 0x29, 0x7C, 0x41, 0x7E, 0x41, 0x04, 0x01, 0x28, 0x00, 0x00,
|
0x01, 0x0F, 0x05, 0x02, 0x63, 0x2A, 0xB6, 0x06, 0x02, 0x63, 0x2A, 0x01,
|
||||||
0x81, 0x34, 0x81, 0x01, 0x2F, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x15, 0x28,
|
0x02, 0x81, 0x41, 0x04, 0x28, 0x01, 0x02, 0x39, 0x0F, 0x06, 0x1F, 0x28,
|
||||||
0x01, 0x01, 0x0F, 0x05, 0x02, 0x63, 0x2A, 0x81, 0x36, 0x06, 0x02, 0x63,
|
0x01, 0x0D, 0x0F, 0x05, 0x02, 0x63, 0x2A, 0xB6, 0x01, 0x0C, 0x0F, 0x05,
|
||||||
0x2A, 0x01, 0x02, 0x81, 0x01, 0x41, 0x04, 0x2B, 0x01, 0x02, 0x39, 0x0F,
|
0x02, 0x63, 0x2A, 0x7D, 0x01, 0x0C, 0xAA, 0x82, 0x7D, 0x01, 0x0C, 0x31,
|
||||||
0x06, 0x22, 0x28, 0x01, 0x0D, 0x0F, 0x05, 0x02, 0x63, 0x2A, 0x81, 0x36,
|
0x05, 0x02, 0x63, 0x2A, 0x04, 0x03, 0x63, 0x2A, 0x28, 0x00, 0x00, 0xB4,
|
||||||
0x01, 0x0C, 0x0F, 0x05, 0x02, 0x63, 0x2A, 0x7D, 0x01, 0x0C, 0x81, 0x2A,
|
0x9C, 0xB4, 0x9C, 0x29, 0x06, 0x1D, 0xB6, 0x06, 0x03, 0xB0, 0x04, 0x15,
|
||||||
0x81, 0x02, 0x7D, 0x01, 0x0C, 0x31, 0x05, 0x02, 0x63, 0x2A, 0x04, 0x03,
|
0xB4, 0x29, 0x01, 0x81, 0x7F, 0x0D, 0x06, 0x0C, 0x29, 0x83, 0x08, 0x01,
|
||||||
0x63, 0x2A, 0x28, 0x00, 0x00, 0x81, 0x34, 0x81, 0x1C, 0x81, 0x34, 0x81,
|
0x00, 0x46, 0x41, 0x83, 0x46, 0xAA, 0x04, 0x01, 0xBC, 0x04, 0x60, 0x93,
|
||||||
0x1C, 0x29, 0x06, 0x24, 0x81, 0x36, 0x06, 0x04, 0x81, 0x30, 0x04, 0x1A,
|
0x93, 0x00, 0x00, 0xAF, 0x29, 0x58, 0x06, 0x07, 0x28, 0x06, 0x02, 0x61,
|
||||||
0x81, 0x34, 0x29, 0x01, 0x81, 0x7F, 0x0D, 0x06, 0x0F, 0x29, 0x81, 0x03,
|
0x2A, 0x04, 0x74, 0x00, 0x00, 0xB7, 0x01, 0x03, 0xB5, 0x46, 0x28, 0x46,
|
||||||
0x08, 0x01, 0x00, 0x46, 0x41, 0x81, 0x03, 0x46, 0x81, 0x2A, 0x04, 0x02,
|
0x00, 0x00, 0xB4, 0xBC, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00, 0xB4, 0x9C,
|
||||||
0x81, 0x3C, 0x04, 0x59, 0x81, 0x13, 0x81, 0x13, 0x00, 0x00, 0x81, 0x2F,
|
0x29, 0x06, 0x32, 0xB6, 0x03, 0x01, 0xB6, 0x03, 0x02, 0x02, 0x01, 0x01,
|
||||||
0x29, 0x58, 0x06, 0x07, 0x28, 0x06, 0x02, 0x61, 0x2A, 0x04, 0x73, 0x00,
|
0x02, 0x11, 0x02, 0x01, 0x01, 0x06, 0x0D, 0x13, 0x02, 0x02, 0x01, 0x01,
|
||||||
0x00, 0x81, 0x37, 0x01, 0x03, 0x81, 0x35, 0x46, 0x28, 0x46, 0x00, 0x00,
|
0x0F, 0x02, 0x02, 0x01, 0x03, 0x0F, 0x38, 0x13, 0x06, 0x11, 0x02, 0x00,
|
||||||
0x81, 0x34, 0x81, 0x3C, 0x00, 0x03, 0x01, 0x00, 0x03, 0x00, 0x81, 0x34,
|
0x01, 0x01, 0x02, 0x02, 0x5B, 0x01, 0x02, 0x0C, 0x02, 0x01, 0x08, 0x0C,
|
||||||
0x81, 0x1C, 0x29, 0x06, 0x34, 0x81, 0x36, 0x03, 0x01, 0x81, 0x36, 0x03,
|
0x38, 0x03, 0x00, 0x04, 0x4B, 0x93, 0x02, 0x00, 0x00, 0x00, 0xB4, 0x9C,
|
||||||
0x02, 0x02, 0x01, 0x01, 0x02, 0x11, 0x02, 0x01, 0x01, 0x06, 0x0D, 0x13,
|
0xB1, 0x7A, 0x3F, 0x93, 0x00, 0x00, 0xB4, 0x9C, 0xB4, 0x9C, 0x01, 0x00,
|
||||||
0x02, 0x02, 0x01, 0x01, 0x0F, 0x02, 0x02, 0x01, 0x03, 0x0F, 0x38, 0x13,
|
0x76, 0x40, 0x29, 0x06, 0x15, 0xB4, 0x29, 0x01, 0x20, 0x0B, 0x06, 0x0B,
|
||||||
0x06, 0x11, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02, 0x5B, 0x01, 0x02, 0x0C,
|
0x01, 0x01, 0x46, 0x0C, 0x76, 0x2E, 0x38, 0x76, 0x40, 0x04, 0x01, 0x28,
|
||||||
0x02, 0x01, 0x08, 0x0C, 0x38, 0x03, 0x00, 0x04, 0x49, 0x81, 0x13, 0x02,
|
0x04, 0x68, 0x93, 0x93, 0x00, 0x00, 0x01, 0x02, 0x90, 0xB7, 0x01, 0x08,
|
||||||
0x00, 0x00, 0x00, 0x81, 0x34, 0x81, 0x1C, 0x81, 0x31, 0x7A, 0x3F, 0x81,
|
0x0C, 0xB7, 0x08, 0x00, 0x00, 0x01, 0x03, 0x90, 0xB7, 0x01, 0x08, 0x0C,
|
||||||
0x13, 0x00, 0x00, 0x81, 0x34, 0x81, 0x1C, 0x81, 0x34, 0x81, 0x1C, 0x01,
|
0xB7, 0x08, 0x01, 0x08, 0x0C, 0xB7, 0x08, 0x00, 0x00, 0x01, 0x01, 0x90,
|
||||||
0x00, 0x76, 0x40, 0x29, 0x06, 0x16, 0x81, 0x34, 0x29, 0x01, 0x20, 0x0B,
|
0xB7, 0x00, 0x00, 0x3C, 0x29, 0x56, 0x05, 0x01, 0x00, 0x28, 0xC4, 0x04,
|
||||||
0x06, 0x0B, 0x01, 0x01, 0x46, 0x0C, 0x76, 0x2E, 0x38, 0x76, 0x40, 0x04,
|
0x76, 0x02, 0x03, 0x00, 0x8A, 0x2F, 0x03, 0x01, 0x01, 0x00, 0x29, 0x02,
|
||||||
0x01, 0x28, 0x04, 0x67, 0x81, 0x13, 0x81, 0x13, 0x00, 0x00, 0x01, 0x02,
|
0x01, 0x0B, 0x06, 0x10, 0x29, 0x01, 0x01, 0x0C, 0x89, 0x08, 0x2D, 0x02,
|
||||||
0x81, 0x10, 0x81, 0x37, 0x01, 0x08, 0x0C, 0x81, 0x37, 0x08, 0x00, 0x00,
|
0x00, 0x0F, 0x06, 0x01, 0x00, 0x5A, 0x04, 0x6A, 0x28, 0x01, 0x7F, 0x00,
|
||||||
0x01, 0x03, 0x81, 0x10, 0x81, 0x37, 0x01, 0x08, 0x0C, 0x81, 0x37, 0x08,
|
0x00, 0x2B, 0x19, 0x37, 0x06, 0x04, 0xC2, 0x28, 0x04, 0x78, 0x01, 0x16,
|
||||||
0x01, 0x08, 0x0C, 0x81, 0x37, 0x08, 0x00, 0x00, 0x01, 0x01, 0x81, 0x10,
|
0x80, 0x41, 0x01, 0x00, 0xD5, 0x01, 0x00, 0xD4, 0x2B, 0x01, 0x17, 0x80,
|
||||||
0x81, 0x37, 0x00, 0x00, 0x3C, 0x29, 0x56, 0x05, 0x01, 0x00, 0x28, 0x81,
|
0x41, 0x00, 0x00, 0x01, 0x15, 0x80, 0x41, 0x46, 0x50, 0x28, 0x50, 0x28,
|
||||||
0x44, 0x04, 0x75, 0x02, 0x03, 0x00, 0x81, 0x0A, 0x2F, 0x03, 0x01, 0x01,
|
0x2B, 0x00, 0x00, 0x01, 0x01, 0x46, 0xBA, 0x00, 0x00, 0x46, 0x39, 0x90,
|
||||||
0x00, 0x29, 0x02, 0x01, 0x0B, 0x06, 0x11, 0x29, 0x01, 0x01, 0x0C, 0x81,
|
0x46, 0x29, 0x06, 0x05, 0xB7, 0x28, 0x5B, 0x04, 0x78, 0x28, 0x00, 0x02,
|
||||||
0x09, 0x08, 0x2D, 0x02, 0x00, 0x0F, 0x06, 0x01, 0x00, 0x5A, 0x04, 0x69,
|
0x03, 0x00, 0x70, 0x2D, 0x92, 0x03, 0x01, 0x02, 0x01, 0x01, 0x0F, 0x13,
|
||||||
0x28, 0x01, 0x7F, 0x00, 0x00, 0x2B, 0x19, 0x37, 0x06, 0x05, 0x81, 0x42,
|
0x02, 0x01, 0x01, 0x04, 0x12, 0x01, 0x0F, 0x13, 0x02, 0x01, 0x01, 0x08,
|
||||||
0x28, 0x04, 0x77, 0x01, 0x16, 0x81, 0x00, 0x41, 0x01, 0x00, 0x81, 0x55,
|
0x12, 0x01, 0x0F, 0x13, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x10, 0x28, 0x01,
|
||||||
0x01, 0x00, 0x81, 0x54, 0x2B, 0x01, 0x17, 0x81, 0x00, 0x41, 0x00, 0x00,
|
0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04,
|
||||||
0x01, 0x15, 0x81, 0x00, 0x41, 0x46, 0x50, 0x28, 0x50, 0x28, 0x2B, 0x00,
|
0x80, 0x56, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x10, 0x28, 0x01, 0x01, 0x01,
|
||||||
0x00, 0x01, 0x01, 0x46, 0x81, 0x3A, 0x00, 0x00, 0x46, 0x39, 0x81, 0x10,
|
0x10, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x80, 0x40,
|
||||||
0x46, 0x29, 0x06, 0x06, 0x81, 0x37, 0x28, 0x5B, 0x04, 0x77, 0x28, 0x00,
|
0x01, 0x02, 0x39, 0x0F, 0x06, 0x0F, 0x28, 0x01, 0x01, 0x01, 0x20, 0x02,
|
||||||
0x02, 0x03, 0x00, 0x70, 0x2D, 0x81, 0x12, 0x03, 0x01, 0x02, 0x01, 0x01,
|
0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x2B, 0x01, 0x03, 0x39,
|
||||||
0x0F, 0x13, 0x02, 0x01, 0x01, 0x04, 0x12, 0x01, 0x0F, 0x13, 0x02, 0x01,
|
0x0F, 0x06, 0x0E, 0x28, 0x28, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x47,
|
||||||
0x01, 0x08, 0x12, 0x01, 0x0F, 0x13, 0x01, 0x00, 0x39, 0x0F, 0x06, 0x10,
|
0x04, 0x01, 0x48, 0x04, 0x17, 0x01, 0x04, 0x39, 0x0F, 0x06, 0x0E, 0x28,
|
||||||
0x28, 0x01, 0x00, 0x01, 0x18, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01,
|
0x28, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01, 0x48, 0x04,
|
||||||
0x4A, 0x04, 0x80, 0x56, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x10, 0x28, 0x01,
|
0x03, 0x62, 0x2A, 0x28, 0x00, 0x00, 0x92, 0x01, 0x0C, 0x12, 0x01, 0x02,
|
||||||
0x01, 0x01, 0x10, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04,
|
0x10, 0x00, 0x00, 0x92, 0x01, 0x0C, 0x12, 0x29, 0x59, 0x46, 0x01, 0x03,
|
||||||
0x80, 0x40, 0x01, 0x02, 0x39, 0x0F, 0x06, 0x0F, 0x28, 0x01, 0x01, 0x01,
|
0x0B, 0x13, 0x00, 0x00, 0x92, 0x01, 0x0C, 0x12, 0x01, 0x01, 0x0F, 0x00,
|
||||||
0x20, 0x02, 0x00, 0x06, 0x03, 0x49, 0x04, 0x01, 0x4A, 0x04, 0x2B, 0x01,
|
0x00, 0x92, 0x01, 0x0C, 0x12, 0x58, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x6D,
|
||||||
0x03, 0x39, 0x0F, 0x06, 0x0E, 0x28, 0x28, 0x01, 0x10, 0x02, 0x00, 0x06,
|
0x2F, 0x29, 0x06, 0x1F, 0x01, 0x01, 0x39, 0x0F, 0x06, 0x06, 0x28, 0x01,
|
||||||
0x03, 0x47, 0x04, 0x01, 0x48, 0x04, 0x17, 0x01, 0x04, 0x39, 0x0F, 0x06,
|
0x00, 0x96, 0x04, 0x11, 0x01, 0x02, 0x39, 0x0F, 0x06, 0x0A, 0x28, 0x6F,
|
||||||
0x0E, 0x28, 0x28, 0x01, 0x20, 0x02, 0x00, 0x06, 0x03, 0x47, 0x04, 0x01,
|
0x2F, 0x06, 0x03, 0x01, 0x10, 0x38, 0x04, 0x01, 0x28, 0x04, 0x01, 0x28,
|
||||||
0x48, 0x04, 0x03, 0x62, 0x2A, 0x28, 0x00, 0x00, 0x81, 0x12, 0x01, 0x0C,
|
0x75, 0x2F, 0x05, 0x33, 0x30, 0x06, 0x30, 0x7F, 0x2F, 0x01, 0x14, 0x39,
|
||||||
0x12, 0x01, 0x02, 0x10, 0x00, 0x00, 0x81, 0x12, 0x01, 0x0C, 0x12, 0x29,
|
0x0F, 0x06, 0x06, 0x28, 0x01, 0x02, 0x38, 0x04, 0x22, 0x01, 0x15, 0x39,
|
||||||
0x59, 0x46, 0x01, 0x03, 0x0B, 0x13, 0x00, 0x00, 0x81, 0x12, 0x01, 0x0C,
|
0x0F, 0x06, 0x09, 0x28, 0x9F, 0x06, 0x03, 0x01, 0x7F, 0x96, 0x04, 0x13,
|
||||||
0x12, 0x01, 0x01, 0x0F, 0x00, 0x00, 0x81, 0x12, 0x01, 0x0C, 0x12, 0x58,
|
0x01, 0x16, 0x39, 0x0F, 0x06, 0x06, 0x28, 0x01, 0x01, 0x38, 0x04, 0x07,
|
||||||
0x00, 0x00, 0x1B, 0x01, 0x00, 0x6D, 0x2F, 0x29, 0x06, 0x20, 0x01, 0x01,
|
0x28, 0x01, 0x04, 0x38, 0x01, 0x00, 0x28, 0x19, 0x06, 0x03, 0x01, 0x08,
|
||||||
0x39, 0x0F, 0x06, 0x07, 0x28, 0x01, 0x00, 0x81, 0x16, 0x04, 0x11, 0x01,
|
0x38, 0x00, 0x00, 0x1B, 0x29, 0x05, 0x0F, 0x30, 0x06, 0x0C, 0x7F, 0x2F,
|
||||||
0x02, 0x39, 0x0F, 0x06, 0x0A, 0x28, 0x6F, 0x2F, 0x06, 0x03, 0x01, 0x10,
|
0x01, 0x15, 0x0F, 0x06, 0x04, 0x28, 0x9F, 0x04, 0x01, 0x22, 0x00, 0x00,
|
||||||
0x38, 0x04, 0x01, 0x28, 0x04, 0x01, 0x28, 0x75, 0x2F, 0x05, 0x35, 0x30,
|
0xC2, 0x01, 0x07, 0x13, 0x01, 0x01, 0x10, 0x06, 0x02, 0x6B, 0x2A, 0x00,
|
||||||
0x06, 0x32, 0x7F, 0x2F, 0x01, 0x14, 0x39, 0x0F, 0x06, 0x06, 0x28, 0x01,
|
0x01, 0x03, 0x00, 0x2B, 0x19, 0x06, 0x05, 0x02, 0x00, 0x80, 0x41, 0x00,
|
||||||
0x02, 0x38, 0x04, 0x24, 0x01, 0x15, 0x39, 0x0F, 0x06, 0x0B, 0x28, 0x81,
|
0xC2, 0x28, 0x04, 0x74, 0x00, 0x01, 0x14, 0xC5, 0x01, 0x01, 0xD5, 0x2B,
|
||||||
0x1F, 0x06, 0x04, 0x01, 0x7F, 0x81, 0x16, 0x04, 0x13, 0x01, 0x16, 0x39,
|
0x29, 0x01, 0x00, 0xBD, 0x01, 0x16, 0xC5, 0xC9, 0x2B, 0x00, 0x00, 0x01,
|
||||||
0x0F, 0x06, 0x06, 0x28, 0x01, 0x01, 0x38, 0x04, 0x07, 0x28, 0x01, 0x04,
|
0x0B, 0xD5, 0x4C, 0x29, 0x29, 0x01, 0x03, 0x08, 0xD4, 0xD4, 0x14, 0x29,
|
||||||
0x38, 0x01, 0x00, 0x28, 0x19, 0x06, 0x03, 0x01, 0x08, 0x38, 0x00, 0x00,
|
0x56, 0x06, 0x02, 0x28, 0x00, 0xD4, 0x1E, 0x29, 0x06, 0x05, 0x7D, 0x46,
|
||||||
0x1B, 0x29, 0x05, 0x10, 0x30, 0x06, 0x0D, 0x7F, 0x2F, 0x01, 0x15, 0x0F,
|
0xCD, 0x04, 0x77, 0x28, 0x04, 0x6C, 0x00, 0x01, 0x00, 0xCF, 0x8B, 0x2D,
|
||||||
0x06, 0x05, 0x28, 0x81, 0x1F, 0x04, 0x01, 0x22, 0x00, 0x00, 0x81, 0x42,
|
0x01, 0x86, 0x03, 0x11, 0x06, 0x05, 0x5C, 0x01, 0x00, 0xD0, 0x08, 0x4B,
|
||||||
0x01, 0x07, 0x13, 0x01, 0x01, 0x10, 0x06, 0x02, 0x6B, 0x2A, 0x00, 0x01,
|
0x08, 0x01, 0x03, 0x08, 0x01, 0x0D, 0xD5, 0xD4, 0x01, 0x00, 0xCF, 0xD5,
|
||||||
0x03, 0x00, 0x2B, 0x19, 0x06, 0x06, 0x02, 0x00, 0x81, 0x00, 0x41, 0x00,
|
0x01, 0x01, 0xCF, 0x28, 0x8B, 0x2D, 0x01, 0x86, 0x03, 0x11, 0x06, 0x08,
|
||||||
0x81, 0x42, 0x28, 0x04, 0x72, 0x00, 0x01, 0x14, 0x81, 0x45, 0x01, 0x01,
|
0x01, 0x00, 0xD0, 0xD3, 0x01, 0x01, 0xD0, 0x28, 0x4B, 0xD3, 0x16, 0x15,
|
||||||
0x81, 0x55, 0x2B, 0x29, 0x01, 0x00, 0x81, 0x3D, 0x01, 0x16, 0x81, 0x45,
|
0x29, 0x56, 0x06, 0x02, 0x28, 0x00, 0xD3, 0x1F, 0x29, 0x06, 0x05, 0x7D,
|
||||||
0x81, 0x49, 0x2B, 0x00, 0x00, 0x01, 0x0B, 0x81, 0x55, 0x4C, 0x29, 0x29,
|
0x46, 0xCD, 0x04, 0x77, 0x28, 0x04, 0x6C, 0x00, 0x94, 0x01, 0x14, 0xD5,
|
||||||
0x01, 0x03, 0x08, 0x81, 0x54, 0x81, 0x54, 0x14, 0x29, 0x56, 0x06, 0x02,
|
0x01, 0x0C, 0xD4, 0x7D, 0x01, 0x0C, 0xCD, 0x00, 0x03, 0x03, 0x00, 0x01,
|
||||||
0x28, 0x00, 0x81, 0x54, 0x1E, 0x29, 0x06, 0x06, 0x7D, 0x46, 0x81, 0x4D,
|
0x02, 0xD5, 0x01, 0x80, 0x46, 0x81, 0x2F, 0x01, 0x02, 0x0F, 0x06, 0x0C,
|
||||||
0x04, 0x76, 0x28, 0x04, 0x6A, 0x00, 0x01, 0x00, 0x81, 0x4F, 0x81, 0x0B,
|
0x02, 0x00, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x1D, 0x04, 0x02,
|
||||||
0x2D, 0x01, 0x86, 0x03, 0x11, 0x06, 0x06, 0x5C, 0x01, 0x00, 0x81, 0x50,
|
0x01, 0x00, 0x03, 0x01, 0x7E, 0x2F, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02,
|
||||||
0x08, 0x4B, 0x08, 0x01, 0x03, 0x08, 0x01, 0x0D, 0x81, 0x55, 0x81, 0x54,
|
0x01, 0x00, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x08, 0x29, 0x06, 0x03,
|
||||||
0x01, 0x00, 0x81, 0x4F, 0x81, 0x55, 0x01, 0x01, 0x81, 0x4F, 0x28, 0x81,
|
0x01, 0x02, 0x08, 0x08, 0xD4, 0x8B, 0x2D, 0xD3, 0x84, 0x01, 0x04, 0x17,
|
||||||
0x0B, 0x2D, 0x01, 0x86, 0x03, 0x11, 0x06, 0x0B, 0x01, 0x00, 0x81, 0x50,
|
0x84, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x33, 0x84, 0x01, 0x20, 0xCD, 0x01,
|
||||||
0x81, 0x53, 0x01, 0x01, 0x81, 0x50, 0x28, 0x4B, 0x81, 0x53, 0x16, 0x15,
|
0x20, 0xD5, 0x85, 0x01, 0x20, 0xCD, 0x70, 0x2D, 0xD3, 0x01, 0x00, 0xD5,
|
||||||
0x29, 0x56, 0x06, 0x02, 0x28, 0x00, 0x81, 0x53, 0x1F, 0x29, 0x06, 0x06,
|
0x02, 0x01, 0x02, 0x02, 0x08, 0x29, 0x06, 0x29, 0xD3, 0x02, 0x01, 0x29,
|
||||||
0x7D, 0x46, 0x81, 0x4D, 0x04, 0x76, 0x28, 0x04, 0x6A, 0x00, 0x81, 0x14,
|
0x06, 0x10, 0x01, 0x83, 0xFE, 0x01, 0xD3, 0x01, 0x04, 0x09, 0x29, 0xD3,
|
||||||
0x01, 0x14, 0x81, 0x55, 0x01, 0x0C, 0x81, 0x54, 0x7D, 0x01, 0x0C, 0x81,
|
0x5B, 0x82, 0x46, 0xCE, 0x04, 0x01, 0x28, 0x02, 0x02, 0x06, 0x0C, 0x01,
|
||||||
0x4D, 0x00, 0x03, 0x03, 0x00, 0x01, 0x02, 0x81, 0x55, 0x01, 0x80, 0x46,
|
0x01, 0xD3, 0x01, 0x01, 0xD3, 0x7E, 0x2F, 0x01, 0x08, 0x09, 0xD5, 0x04,
|
||||||
0x81, 0x01, 0x2F, 0x01, 0x02, 0x0F, 0x06, 0x0C, 0x02, 0x00, 0x06, 0x04,
|
0x01, 0x28, 0x00, 0x00, 0x01, 0x0E, 0xD5, 0x01, 0x00, 0xD4, 0x00, 0x03,
|
||||||
0x01, 0x05, 0x04, 0x02, 0x01, 0x1D, 0x04, 0x02, 0x01, 0x00, 0x03, 0x01,
|
0x70, 0x2D, 0xBF, 0x05, 0x01, 0x00, 0x76, 0x2E, 0x01, 0x00, 0x98, 0x12,
|
||||||
0x7E, 0x2F, 0x06, 0x04, 0x01, 0x05, 0x04, 0x02, 0x01, 0x00, 0x03, 0x02,
|
0x01, 0x01, 0x13, 0x58, 0x06, 0x03, 0x5A, 0x04, 0x75, 0x03, 0x00, 0x28,
|
||||||
0x02, 0x01, 0x02, 0x02, 0x08, 0x29, 0x06, 0x03, 0x01, 0x02, 0x08, 0x08,
|
0x02, 0x00, 0x24, 0x29, 0x56, 0x06, 0x02, 0x36, 0x2A, 0x03, 0x01, 0x8B,
|
||||||
0x81, 0x54, 0x81, 0x0B, 0x2D, 0x81, 0x53, 0x81, 0x04, 0x01, 0x04, 0x17,
|
0x2D, 0x01, 0x86, 0x03, 0x11, 0x03, 0x02, 0x01, 0x0C, 0xD5, 0x02, 0x01,
|
||||||
0x81, 0x04, 0x01, 0x04, 0x08, 0x01, 0x1C, 0x33, 0x81, 0x04, 0x01, 0x20,
|
0x78, 0x2F, 0x08, 0x02, 0x02, 0x01, 0x02, 0x13, 0x08, 0x01, 0x06, 0x08,
|
||||||
0x81, 0x4D, 0x01, 0x20, 0x81, 0x55, 0x81, 0x05, 0x01, 0x20, 0x81, 0x4D,
|
0xD4, 0x01, 0x03, 0xD5, 0x02, 0x00, 0xD3, 0x77, 0x78, 0x2F, 0xCE, 0x02,
|
||||||
0x70, 0x2D, 0x81, 0x53, 0x01, 0x00, 0x81, 0x55, 0x02, 0x01, 0x02, 0x02,
|
0x02, 0x06, 0x0D, 0x88, 0x2F, 0xD5, 0x70, 0x2D, 0xC0, 0x01, 0x01, 0x0C,
|
||||||
0x08, 0x29, 0x06, 0x31, 0x81, 0x53, 0x02, 0x01, 0x29, 0x06, 0x14, 0x01,
|
0x01, 0x03, 0x08, 0xD5, 0x02, 0x01, 0xD3, 0x7D, 0x02, 0x01, 0xCD, 0x00,
|
||||||
0x83, 0xFE, 0x01, 0x81, 0x53, 0x01, 0x04, 0x09, 0x29, 0x81, 0x53, 0x5B,
|
0x00, 0x4F, 0x29, 0x01, 0x00, 0x0F, 0x06, 0x02, 0x5D, 0x00, 0xC2, 0x28,
|
||||||
0x81, 0x02, 0x46, 0x81, 0x4E, 0x04, 0x01, 0x28, 0x02, 0x02, 0x06, 0x0F,
|
0x04, 0x73, 0x00, 0x29, 0xD5, 0xCD, 0x00, 0x00, 0x01, 0x00, 0x70, 0x2D,
|
||||||
0x01, 0x01, 0x81, 0x53, 0x01, 0x01, 0x81, 0x53, 0x7E, 0x2F, 0x01, 0x08,
|
0xBE, 0x06, 0x0C, 0x5C, 0x39, 0x06, 0x08, 0x01, 0x80, 0x41, 0xD5, 0x01,
|
||||||
0x09, 0x81, 0x55, 0x04, 0x01, 0x28, 0x00, 0x00, 0x01, 0x0E, 0x81, 0x55,
|
0x80, 0x42, 0xD5, 0x45, 0x06, 0x07, 0x5A, 0x39, 0x06, 0x03, 0x01, 0x01,
|
||||||
0x01, 0x00, 0x81, 0x54, 0x00, 0x03, 0x70, 0x2D, 0x81, 0x3F, 0x05, 0x01,
|
0xD5, 0x44, 0x06, 0x08, 0x5A, 0x39, 0x06, 0x04, 0x01, 0x80, 0x40, 0xD5,
|
||||||
0x00, 0x76, 0x2E, 0x01, 0x00, 0x81, 0x18, 0x12, 0x01, 0x01, 0x13, 0x58,
|
0x46, 0x28, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00, 0x45, 0x44, 0x38, 0x05,
|
||||||
0x06, 0x03, 0x5A, 0x04, 0x74, 0x03, 0x00, 0x28, 0x02, 0x00, 0x24, 0x29,
|
0x14, 0x01, 0x01, 0x01, 0x80, 0x7C, 0xD1, 0x03, 0x00, 0x01, 0x03, 0x01,
|
||||||
0x56, 0x06, 0x02, 0x36, 0x2A, 0x03, 0x01, 0x81, 0x0B, 0x2D, 0x01, 0x86,
|
0x80, 0x7C, 0xD1, 0x02, 0x00, 0x08, 0x46, 0x28, 0x00, 0x45, 0x06, 0x07,
|
||||||
0x03, 0x11, 0x03, 0x02, 0x01, 0x0C, 0x81, 0x55, 0x02, 0x01, 0x78, 0x2F,
|
0x01, 0x01, 0x43, 0x28, 0xD1, 0x03, 0x00, 0x44, 0x06, 0x0A, 0x01, 0x03,
|
||||||
0x08, 0x02, 0x02, 0x01, 0x02, 0x13, 0x08, 0x01, 0x06, 0x08, 0x81, 0x54,
|
0x43, 0x28, 0xD1, 0x02, 0x00, 0x08, 0x03, 0x00, 0x28, 0x02, 0x00, 0x00,
|
||||||
0x01, 0x03, 0x81, 0x55, 0x02, 0x00, 0x81, 0x53, 0x77, 0x78, 0x2F, 0x81,
|
0x00, 0x01, 0x00, 0x01, 0x04, 0xD2, 0x01, 0x05, 0xD2, 0x01, 0x06, 0xD2,
|
||||||
0x4E, 0x02, 0x02, 0x06, 0x11, 0x81, 0x08, 0x2F, 0x81, 0x55, 0x70, 0x2D,
|
0x01, 0x03, 0xD2, 0x01, 0x02, 0xD2, 0x0A, 0x5D, 0x00, 0x01, 0x03, 0x00,
|
||||||
0x81, 0x40, 0x01, 0x01, 0x0C, 0x01, 0x03, 0x08, 0x81, 0x55, 0x02, 0x01,
|
0x39, 0x01, 0x01, 0x02, 0x00, 0x0C, 0x13, 0x05, 0x01, 0x00, 0x5C, 0x01,
|
||||||
0x81, 0x53, 0x7D, 0x02, 0x01, 0x81, 0x4D, 0x00, 0x00, 0x4F, 0x29, 0x01,
|
0x03, 0x3A, 0x06, 0x07, 0x02, 0x00, 0xD5, 0x01, 0x02, 0x3A, 0xD5, 0x00,
|
||||||
0x00, 0x0F, 0x06, 0x02, 0x5D, 0x00, 0x81, 0x42, 0x28, 0x04, 0x72, 0x00,
|
0x00, 0x29, 0x01, 0x08, 0x4D, 0xD5, 0xD5, 0x00, 0x00, 0x29, 0x01, 0x10,
|
||||||
0x29, 0x81, 0x55, 0x81, 0x4D, 0x00, 0x00, 0x01, 0x00, 0x70, 0x2D, 0x81,
|
0x4D, 0xD5, 0xD3, 0x00, 0x00, 0x29, 0x50, 0x06, 0x02, 0x28, 0x00, 0xC2,
|
||||||
0x3E, 0x06, 0x0E, 0x5C, 0x39, 0x06, 0x0A, 0x01, 0x80, 0x41, 0x81, 0x55,
|
0x28, 0x04, 0x76
|
||||||
0x01, 0x80, 0x42, 0x81, 0x55, 0x45, 0x06, 0x08, 0x5A, 0x39, 0x06, 0x04,
|
|
||||||
0x01, 0x01, 0x81, 0x55, 0x44, 0x06, 0x09, 0x5A, 0x39, 0x06, 0x05, 0x01,
|
|
||||||
0x80, 0x40, 0x81, 0x55, 0x46, 0x28, 0x00, 0x01, 0x01, 0x00, 0x03, 0x00,
|
|
||||||
0x45, 0x44, 0x38, 0x05, 0x16, 0x01, 0x01, 0x01, 0x80, 0x7C, 0x81, 0x51,
|
|
||||||
0x03, 0x00, 0x01, 0x03, 0x01, 0x80, 0x7C, 0x81, 0x51, 0x02, 0x00, 0x08,
|
|
||||||
0x46, 0x28, 0x00, 0x45, 0x06, 0x08, 0x01, 0x01, 0x43, 0x28, 0x81, 0x51,
|
|
||||||
0x03, 0x00, 0x44, 0x06, 0x0B, 0x01, 0x03, 0x43, 0x28, 0x81, 0x51, 0x02,
|
|
||||||
0x00, 0x08, 0x03, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
|
|
||||||
0x04, 0x81, 0x52, 0x01, 0x05, 0x81, 0x52, 0x01, 0x06, 0x81, 0x52, 0x01,
|
|
||||||
0x03, 0x81, 0x52, 0x01, 0x02, 0x81, 0x52, 0x0A, 0x5D, 0x00, 0x01, 0x03,
|
|
||||||
0x00, 0x39, 0x01, 0x01, 0x02, 0x00, 0x0C, 0x13, 0x05, 0x01, 0x00, 0x5C,
|
|
||||||
0x01, 0x03, 0x3A, 0x06, 0x09, 0x02, 0x00, 0x81, 0x55, 0x01, 0x02, 0x3A,
|
|
||||||
0x81, 0x55, 0x00, 0x00, 0x29, 0x01, 0x08, 0x4D, 0x81, 0x55, 0x81, 0x55,
|
|
||||||
0x00, 0x00, 0x29, 0x01, 0x10, 0x4D, 0x81, 0x55, 0x81, 0x53, 0x00, 0x00,
|
|
||||||
0x29, 0x50, 0x06, 0x02, 0x28, 0x00, 0x81, 0x42, 0x28, 0x04, 0x75
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint16_t t0_caddr[] = {
|
static const uint16_t t0_caddr[] = {
|
||||||
|
|
@ -829,73 +804,73 @@ static const uint16_t t0_caddr[] = {
|
||||||
275,
|
275,
|
||||||
284,
|
284,
|
||||||
288,
|
288,
|
||||||
316,
|
313,
|
||||||
322,
|
319,
|
||||||
343,
|
338,
|
||||||
354,
|
349,
|
||||||
391,
|
383,
|
||||||
523,
|
490,
|
||||||
|
494,
|
||||||
527,
|
527,
|
||||||
563,
|
537,
|
||||||
573,
|
605,
|
||||||
650,
|
619,
|
||||||
664,
|
625,
|
||||||
671,
|
685,
|
||||||
731,
|
704,
|
||||||
752,
|
726,
|
||||||
776,
|
775,
|
||||||
829,
|
851,
|
||||||
915,
|
953,
|
||||||
1023,
|
964,
|
||||||
1035,
|
1508,
|
||||||
1630,
|
1512,
|
||||||
1636,
|
1579,
|
||||||
1713,
|
1589,
|
||||||
1724,
|
1620,
|
||||||
1759,
|
1644,
|
||||||
1785,
|
1690,
|
||||||
1833,
|
1760,
|
||||||
1910,
|
1800,
|
||||||
1963,
|
1814,
|
||||||
1978,
|
1823,
|
||||||
1989,
|
1827,
|
||||||
1995,
|
1891,
|
||||||
2064,
|
1899,
|
||||||
2076,
|
1935,
|
||||||
2119,
|
1946,
|
||||||
2133,
|
1962,
|
||||||
2153,
|
1968,
|
||||||
2161,
|
1979,
|
||||||
2173,
|
2014,
|
||||||
2210,
|
2040,
|
||||||
2241,
|
2052,
|
||||||
2254,
|
2058,
|
||||||
2261,
|
2073,
|
||||||
2278,
|
2211,
|
||||||
2417,
|
2220,
|
||||||
2427,
|
2233,
|
||||||
2441,
|
2242,
|
||||||
2451,
|
2249,
|
||||||
2459,
|
2352,
|
||||||
2565,
|
2373,
|
||||||
2587,
|
2386,
|
||||||
2601,
|
2402,
|
||||||
2619,
|
2420,
|
||||||
2642,
|
2452,
|
||||||
2679,
|
2525,
|
||||||
2767,
|
2538,
|
||||||
2784,
|
2677,
|
||||||
2945,
|
2685,
|
||||||
2955,
|
2782,
|
||||||
3066,
|
2796,
|
||||||
3081,
|
2801,
|
||||||
3088,
|
2845,
|
||||||
3137,
|
2902,
|
||||||
3198,
|
2923,
|
||||||
3224,
|
2950,
|
||||||
3253,
|
2958,
|
||||||
3263,
|
2966
|
||||||
3273
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#define T0_INTERPRETED 86
|
#define T0_INTERPRETED 86
|
||||||
|
|
@ -921,6 +896,8 @@ name(void *ctx) \
|
||||||
|
|
||||||
T0_DEFENTRY(br_ssl_hs_server_init_main, 155)
|
T0_DEFENTRY(br_ssl_hs_server_init_main, 155)
|
||||||
|
|
||||||
|
#define T0_NEXT(t0ipp) (*(*(t0ipp)) ++)
|
||||||
|
|
||||||
void
|
void
|
||||||
br_ssl_hs_server_run(void *t0ctx)
|
br_ssl_hs_server_run(void *t0ctx)
|
||||||
{
|
{
|
||||||
|
|
@ -968,15 +945,17 @@ br_ssl_hs_server_run(void *t0ctx)
|
||||||
#define T0_CO() do { \
|
#define T0_CO() do { \
|
||||||
goto t0_exit; \
|
goto t0_exit; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define T0_RET() break
|
#define T0_RET() goto t0_next
|
||||||
|
|
||||||
dp = ((t0_context *)t0ctx)->dp;
|
dp = ((t0_context *)t0ctx)->dp;
|
||||||
rp = ((t0_context *)t0ctx)->rp;
|
rp = ((t0_context *)t0ctx)->rp;
|
||||||
ip = ((t0_context *)t0ctx)->ip;
|
ip = ((t0_context *)t0ctx)->ip;
|
||||||
|
goto t0_next;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint32_t t0x;
|
uint32_t t0x;
|
||||||
|
|
||||||
t0x = t0_parse7E_unsigned(&ip);
|
t0_next:
|
||||||
|
t0x = T0_NEXT(&ip);
|
||||||
if (t0x < T0_INTERPRETED) {
|
if (t0x < T0_INTERPRETED) {
|
||||||
switch (t0x) {
|
switch (t0x) {
|
||||||
int32_t t0off;
|
int32_t t0off;
|
||||||
|
|
|
||||||
180
src/x509/asn1.t0
180
src/x509/asn1.t0
|
|
@ -168,6 +168,14 @@ cc: fail ( err -- ! ) {
|
||||||
dup ifnot ERR_X509_INNER_TRUNC fail then
|
dup ifnot ERR_X509_INNER_TRUNC fail then
|
||||||
1- read8-nc ;
|
1- read8-nc ;
|
||||||
|
|
||||||
|
\ Read a 16-bit value, big-endian encoding.
|
||||||
|
: read16be ( lim -- lim x )
|
||||||
|
read8 8 << swap read8 rot + ;
|
||||||
|
|
||||||
|
\ Read a 16-bit value, little-endian encoding.
|
||||||
|
: read16le ( lim -- lim x )
|
||||||
|
read8 swap read8 8 << rot + ;
|
||||||
|
|
||||||
\ Read all bytes from the current element, then close it (i.e. drop the
|
\ Read all bytes from the current element, then close it (i.e. drop the
|
||||||
\ limit). Destination address is an offset within the context.
|
\ limit). Destination address is an offset within the context.
|
||||||
: read-blob ( lim addr -- )
|
: read-blob ( lim addr -- )
|
||||||
|
|
@ -365,9 +373,11 @@ OID: ecdsa-with-SHA256 1.2.840.10045.4.3.2
|
||||||
OID: ecdsa-with-SHA384 1.2.840.10045.4.3.3
|
OID: ecdsa-with-SHA384 1.2.840.10045.4.3.3
|
||||||
OID: ecdsa-with-SHA512 1.2.840.10045.4.3.4
|
OID: ecdsa-with-SHA512 1.2.840.10045.4.3.4
|
||||||
|
|
||||||
|
OID: id-at-commonName 2.5.4.3
|
||||||
|
|
||||||
\ Read a "small value". This assumes that the tag has just been read
|
\ Read a "small value". This assumes that the tag has just been read
|
||||||
\ and processed, but not the length. The first pad byte is set to the
|
\ and processed, but not the length. The first pad byte is set to the
|
||||||
\ value length; the encoded value iself follows. If the value length
|
\ value length; the encoded value itself follows. If the value length
|
||||||
\ exceeds 255 bytes, then a single 0 is written in the pad, and this
|
\ exceeds 255 bytes, then a single 0 is written in the pad, and this
|
||||||
\ method returns false (0). Otherwise, it returns true (-1).
|
\ method returns false (0). Otherwise, it returns true (-1).
|
||||||
\ Either way, the element is fully read.
|
\ Either way, the element is fully read.
|
||||||
|
|
@ -384,6 +394,174 @@ OID: ecdsa-with-SHA512 1.2.840.10045.4.3.4
|
||||||
: read-OID ( lim -- lim bool )
|
: read-OID ( lim -- lim bool )
|
||||||
read-tag 0x06 check-tag-primitive read-small-value ;
|
read-tag 0x06 check-tag-primitive read-small-value ;
|
||||||
|
|
||||||
|
\ Read a UTF-8 code point. On error, return 0. Reading a code point of
|
||||||
|
\ value 0 is considered to be an error.
|
||||||
|
: read-UTF8 ( lim -- lim val )
|
||||||
|
read8
|
||||||
|
choice
|
||||||
|
dup 0x80 < uf ret enduf
|
||||||
|
dup 0xC0 < uf drop 0 ret enduf
|
||||||
|
dup 0xE0 < uf 0x1F and 1 read-UTF8-next 0x80 0x7FF enduf
|
||||||
|
dup 0xF0 < uf 0x0F and 2 read-UTF8-next 0x800 0xFFFF enduf
|
||||||
|
dup 0xF8 < uf 0x07 and 3 read-UTF8-next 0x10000 0x10FFFF enduf
|
||||||
|
drop 0 ret
|
||||||
|
endchoice
|
||||||
|
between? ifnot drop 0 then
|
||||||
|
;
|
||||||
|
|
||||||
|
\ Read n subsequent bytes to complete the provided first byte. The final
|
||||||
|
\ value is -1 on error, or the code point numerical value. The final
|
||||||
|
\ value is duplicated.
|
||||||
|
: read-UTF8-next ( lim val n -- lim val val )
|
||||||
|
begin dup while
|
||||||
|
-rot
|
||||||
|
read-UTF8-chunk
|
||||||
|
rot 1-
|
||||||
|
repeat
|
||||||
|
drop dup ;
|
||||||
|
|
||||||
|
\ Read one byte, that should be a trailing UTF-8 byte, and complement the
|
||||||
|
\ current value. On error, value is set to -1.
|
||||||
|
: read-UTF8-chunk ( lim val -- lim val )
|
||||||
|
swap
|
||||||
|
\ If we are at the end of the value, report an error but don't fail.
|
||||||
|
dup ifnot 2drop 0 -1 ret then
|
||||||
|
read8 rot
|
||||||
|
dup 0< if swap drop ret then 6 <<
|
||||||
|
swap dup 6 >> 2 <> if 2drop -1 ret then
|
||||||
|
0x3F and + ;
|
||||||
|
|
||||||
|
: high-surrogate? ( x -- x bool )
|
||||||
|
dup 0xD800 0xDBFF between? ;
|
||||||
|
|
||||||
|
: low-surrogate? ( x -- x bool )
|
||||||
|
dup 0xDC00 0xDFFF between? ;
|
||||||
|
|
||||||
|
: assemble-surrogate-pair ( hi lim lo -- lim val )
|
||||||
|
low-surrogate? ifnot rot 2drop 0 ret then
|
||||||
|
rot 10 << + 0x35FDC00 - ;
|
||||||
|
|
||||||
|
\ Read a UTF-16 code point (big-endian). Returned value is 0 on error.
|
||||||
|
: read-UTF16BE ( lim -- lim val )
|
||||||
|
read16be
|
||||||
|
choice
|
||||||
|
high-surrogate? uf
|
||||||
|
swap dup ifnot 2drop 0 0 ret then
|
||||||
|
read16be assemble-surrogate-pair
|
||||||
|
enduf
|
||||||
|
low-surrogate? uf
|
||||||
|
drop 0
|
||||||
|
enduf
|
||||||
|
endchoice ;
|
||||||
|
|
||||||
|
\ Read a UTF-16 code point (little-endian). Returned value is 0 on error.
|
||||||
|
: read-UTF16LE ( lim -- lim val )
|
||||||
|
read16le
|
||||||
|
choice
|
||||||
|
high-surrogate? uf
|
||||||
|
swap dup ifnot 2drop 0 0 ret then
|
||||||
|
read16le assemble-surrogate-pair
|
||||||
|
enduf
|
||||||
|
low-surrogate? uf
|
||||||
|
drop 0
|
||||||
|
enduf
|
||||||
|
endchoice ;
|
||||||
|
|
||||||
|
\ Add byte to current pad value. Offset is updated, or set to 0 on error.
|
||||||
|
: pad-append ( off val -- off )
|
||||||
|
over dup 0= swap 256 >= or if 2drop 0 ret then
|
||||||
|
over addr-pad + set8 1+ ;
|
||||||
|
|
||||||
|
\ Add UTF-8 chunk byte to the pad. The 'nn' parameter is the shift count.
|
||||||
|
: pad-append-UTF8-chunk ( off val nn -- off )
|
||||||
|
>> 0x3F and 0x80 or pad-append ;
|
||||||
|
|
||||||
|
\ Test whether a code point is invalid when encoding. This rejects the
|
||||||
|
\ 66 noncharacters, and also the surrogate range; this function does NOT
|
||||||
|
\ check that the value is in the 0..10FFFF range.
|
||||||
|
: valid-unicode? ( val -- bool )
|
||||||
|
dup 0xFDD0 0xFEDF between? if drop 0 ret then
|
||||||
|
dup 0xD800 0xDFFF between? if drop 0 ret then
|
||||||
|
0xFFFF and 0xFFFE < ;
|
||||||
|
|
||||||
|
\ Encode a code point in UTF-8. Offset is in the pad; it is updated, or
|
||||||
|
\ set to 0 on error. Leading BOM are ignored.
|
||||||
|
: encode-UTF8 ( val off -- off )
|
||||||
|
\ Skip leading BOM (U+FEFF when off is 1).
|
||||||
|
dup2 1 = swap 0xFEFF = and if swap drop ret then
|
||||||
|
|
||||||
|
swap dup { val }
|
||||||
|
dup valid-unicode? ifnot 2drop 0 ret then
|
||||||
|
choice
|
||||||
|
dup 0x80 < uf pad-append enduf
|
||||||
|
dup 0x800 < uf
|
||||||
|
6 >> 0xC0 or pad-append
|
||||||
|
val 0 pad-append-UTF8-chunk
|
||||||
|
enduf
|
||||||
|
dup 0xFFFF < uf
|
||||||
|
12 >> 0xE0 or pad-append
|
||||||
|
val 6 pad-append-UTF8-chunk
|
||||||
|
val 0 pad-append-UTF8-chunk
|
||||||
|
enduf
|
||||||
|
18 >> 0xF0 or pad-append
|
||||||
|
val 12 pad-append-UTF8-chunk
|
||||||
|
val 6 pad-append-UTF8-chunk
|
||||||
|
val 0 pad-append-UTF8-chunk
|
||||||
|
endchoice ;
|
||||||
|
|
||||||
|
\ Read a string value into the pad; this function checks that the source
|
||||||
|
\ characters are UTF-8 and non-zero. The string length (in bytes) is
|
||||||
|
\ written in the first pad byte. Returned value is true (-1) on success,
|
||||||
|
\ false (0) on error.
|
||||||
|
: read-value-UTF8 ( lim -- lim bool )
|
||||||
|
read-length-open-elt
|
||||||
|
1 { off }
|
||||||
|
begin dup while
|
||||||
|
read-UTF8 dup ifnot drop skip-close-elt 0 ret then
|
||||||
|
off encode-UTF8 >off
|
||||||
|
repeat
|
||||||
|
drop off dup ifnot ret then 1- addr-pad set8 -1 ;
|
||||||
|
|
||||||
|
\ Decode a UTF-16 string into the pad. The string is converted to UTF-8,
|
||||||
|
\ and the length is written in the first pad byte. A leading BOM is
|
||||||
|
\ honoured (big-endian is assumed if there is no BOM). A code point of
|
||||||
|
\ value 0 is an error. Returned value is true (-1) on success, false (0)
|
||||||
|
\ on error.
|
||||||
|
: read-value-UTF16 ( lim -- lim bool )
|
||||||
|
read-length-open-elt
|
||||||
|
dup ifnot addr-pad set8 -1 ret then
|
||||||
|
1 { off }
|
||||||
|
read-UTF16BE dup 0xFFFE = if
|
||||||
|
\ Leading BOM, and indicates little-endian.
|
||||||
|
drop
|
||||||
|
begin dup while
|
||||||
|
read-UTF16LE dup ifnot drop skip-close-elt 0 ret then
|
||||||
|
off encode-UTF8 >off
|
||||||
|
repeat
|
||||||
|
else
|
||||||
|
dup ifnot drop skip-close-elt 0 ret then
|
||||||
|
\ Big-endian BOM, or no BOM.
|
||||||
|
begin
|
||||||
|
off encode-UTF8 >off
|
||||||
|
dup while
|
||||||
|
read-UTF16BE dup ifnot drop skip-close-elt 0 ret then
|
||||||
|
repeat
|
||||||
|
then
|
||||||
|
drop off dup ifnot ret then 1- addr-pad set8 -1 ;
|
||||||
|
|
||||||
|
\ Decode a latin-1 string into the pad. The string is converted to UTF-8,
|
||||||
|
\ and the length is written in the first pad byte. A source byte of
|
||||||
|
\ value 0 is an error. Returned value is true (-1) on success, false (0)
|
||||||
|
\ on error.
|
||||||
|
: read-value-latin1 ( lim -- lim bool )
|
||||||
|
read-length-open-elt
|
||||||
|
1 { off }
|
||||||
|
begin dup while
|
||||||
|
read8 dup ifnot drop skip-close-elt 0 ret then
|
||||||
|
off encode-UTF8 >off
|
||||||
|
repeat
|
||||||
|
drop off dup ifnot ret then 1- addr-pad set8 -1 ;
|
||||||
|
|
||||||
\ Read a value and interpret it as an INTEGER or ENUMERATED value. If
|
\ Read a value and interpret it as an INTEGER or ENUMERATED value. If
|
||||||
\ the integer value does not fit on an unsigned 32-bit value, an error
|
\ the integer value does not fit on an unsigned 32-bit value, an error
|
||||||
\ is reported. This function assumes that the tag has just been read
|
\ is reported. This function assumes that the tag has just been read
|
||||||
|
|
|
||||||
|
|
@ -285,6 +285,8 @@ name(void *ctx) \
|
||||||
|
|
||||||
T0_DEFENTRY(br_skey_decoder_init_main, 73)
|
T0_DEFENTRY(br_skey_decoder_init_main, 73)
|
||||||
|
|
||||||
|
#define T0_NEXT(t0ipp) (*(*(t0ipp)) ++)
|
||||||
|
|
||||||
void
|
void
|
||||||
br_skey_decoder_run(void *t0ctx)
|
br_skey_decoder_run(void *t0ctx)
|
||||||
{
|
{
|
||||||
|
|
@ -332,15 +334,17 @@ br_skey_decoder_run(void *t0ctx)
|
||||||
#define T0_CO() do { \
|
#define T0_CO() do { \
|
||||||
goto t0_exit; \
|
goto t0_exit; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define T0_RET() break
|
#define T0_RET() goto t0_next
|
||||||
|
|
||||||
dp = ((t0_context *)t0ctx)->dp;
|
dp = ((t0_context *)t0ctx)->dp;
|
||||||
rp = ((t0_context *)t0ctx)->rp;
|
rp = ((t0_context *)t0ctx)->rp;
|
||||||
ip = ((t0_context *)t0ctx)->ip;
|
ip = ((t0_context *)t0ctx)->ip;
|
||||||
|
goto t0_next;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint32_t t0x;
|
uint32_t t0x;
|
||||||
|
|
||||||
t0x = t0_parse7E_unsigned(&ip);
|
t0_next:
|
||||||
|
t0x = T0_NEXT(&ip);
|
||||||
if (t0x < T0_INTERPRETED) {
|
if (t0x < T0_INTERPRETED) {
|
||||||
switch (t0x) {
|
switch (t0x) {
|
||||||
int32_t t0off;
|
int32_t t0off;
|
||||||
|
|
|
||||||
|
|
@ -372,6 +372,8 @@ name(void *ctx) \
|
||||||
|
|
||||||
T0_DEFENTRY(br_x509_decoder_init_main, 92)
|
T0_DEFENTRY(br_x509_decoder_init_main, 92)
|
||||||
|
|
||||||
|
#define T0_NEXT(t0ipp) (*(*(t0ipp)) ++)
|
||||||
|
|
||||||
void
|
void
|
||||||
br_x509_decoder_run(void *t0ctx)
|
br_x509_decoder_run(void *t0ctx)
|
||||||
{
|
{
|
||||||
|
|
@ -419,15 +421,17 @@ br_x509_decoder_run(void *t0ctx)
|
||||||
#define T0_CO() do { \
|
#define T0_CO() do { \
|
||||||
goto t0_exit; \
|
goto t0_exit; \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define T0_RET() break
|
#define T0_RET() goto t0_next
|
||||||
|
|
||||||
dp = ((t0_context *)t0ctx)->dp;
|
dp = ((t0_context *)t0ctx)->dp;
|
||||||
rp = ((t0_context *)t0ctx)->rp;
|
rp = ((t0_context *)t0ctx)->rp;
|
||||||
ip = ((t0_context *)t0ctx)->ip;
|
ip = ((t0_context *)t0ctx)->ip;
|
||||||
|
goto t0_next;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
uint32_t t0x;
|
uint32_t t0x;
|
||||||
|
|
||||||
t0x = t0_parse7E_unsigned(&ip);
|
t0_next:
|
||||||
|
t0x = T0_NEXT(&ip);
|
||||||
if (t0x < T0_INTERPRETED) {
|
if (t0x < T0_INTERPRETED) {
|
||||||
switch (t0x) {
|
switch (t0x) {
|
||||||
int32_t t0off;
|
int32_t t0off;
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -191,8 +191,13 @@ static void
|
||||||
xm_start_chain(const br_x509_class **ctx, const char *server_name)
|
xm_start_chain(const br_x509_class **ctx, const char *server_name)
|
||||||
{
|
{
|
||||||
br_x509_minimal_context *cc;
|
br_x509_minimal_context *cc;
|
||||||
|
size_t u;
|
||||||
|
|
||||||
cc = (br_x509_minimal_context *)ctx;
|
cc = (br_x509_minimal_context *)ctx;
|
||||||
|
for (u = 0; u < cc->num_name_elts; u ++) {
|
||||||
|
cc->name_elts[u].status = 0;
|
||||||
|
cc->name_elts[u].buf[0] = 0;
|
||||||
|
}
|
||||||
memset(&cc->pkey, 0, sizeof cc->pkey);
|
memset(&cc->pkey, 0, sizeof cc->pkey);
|
||||||
cc->num_certs = 0;
|
cc->num_certs = 0;
|
||||||
cc->err = 0;
|
cc->err = 0;
|
||||||
|
|
@ -523,18 +528,125 @@ addr: current_dn_hash
|
||||||
addr: next_dn_hash
|
addr: next_dn_hash
|
||||||
addr: saved_dn_hash
|
addr: saved_dn_hash
|
||||||
|
|
||||||
\ Read a DN. The normalized DN hash is computed and stored in the
|
\ Read a DN, hashing it into current_dn_hash. The DN contents are not
|
||||||
\ current_dn_hash. The Common Name is also extracted to the pad, if
|
\ inspected (only the outer tag, for SEQUENCE, is checked).
|
||||||
\ it is present and small enough (255 bytes at most); the CN length is
|
|
||||||
\ then written in pad[0]. If these conditions are not met, then pad[0]
|
|
||||||
\ is set to 0.
|
|
||||||
: read-DN ( lim -- lim )
|
: read-DN ( lim -- lim )
|
||||||
|
start-dn-hash
|
||||||
|
read-sequence-open skip-close-elt
|
||||||
|
compute-dn-hash ;
|
||||||
|
|
||||||
|
cc: offset-name-element ( san -- n ) {
|
||||||
|
unsigned san = T0_POP();
|
||||||
|
size_t u;
|
||||||
|
|
||||||
|
for (u = 0; u < CTX->num_name_elts; u ++) {
|
||||||
|
if (CTX->name_elts[u].status == 0) {
|
||||||
|
const unsigned char *oid;
|
||||||
|
size_t len, off;
|
||||||
|
|
||||||
|
oid = CTX->name_elts[u].oid;
|
||||||
|
if (san) {
|
||||||
|
if (oid[0] != 0 || oid[1] != 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
off = 2;
|
||||||
|
} else {
|
||||||
|
off = 0;
|
||||||
|
}
|
||||||
|
len = oid[off];
|
||||||
|
if (len != 0 && len == CTX->pad[0]
|
||||||
|
&& memcmp(oid + off + 1,
|
||||||
|
CTX->pad + 1, len) == 0)
|
||||||
|
{
|
||||||
|
T0_PUSH(u);
|
||||||
|
T0_RET();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
T0_PUSHi(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
cc: copy-name-element ( bool offbuf -- ) {
|
||||||
|
size_t len;
|
||||||
|
int32_t off = T0_POPi();
|
||||||
|
int ok = T0_POPi();
|
||||||
|
|
||||||
|
if (off >= 0) {
|
||||||
|
br_name_element *ne = &CTX->name_elts[off];
|
||||||
|
|
||||||
|
if (ok) {
|
||||||
|
len = CTX->pad[0];
|
||||||
|
if (len < ne->len) {
|
||||||
|
memcpy(ne->buf, CTX->pad + 1, len);
|
||||||
|
ne->buf[len] = 0;
|
||||||
|
ne->status = 1;
|
||||||
|
} else {
|
||||||
|
ne->status = -1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ne->status = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cc: copy-name-SAN ( bool tag -- ) {
|
||||||
|
unsigned tag = T0_POP();
|
||||||
|
unsigned ok = T0_POP();
|
||||||
|
size_t u, len;
|
||||||
|
|
||||||
|
len = CTX->pad[0];
|
||||||
|
for (u = 0; u < CTX->num_name_elts; u ++) {
|
||||||
|
br_name_element *ne;
|
||||||
|
|
||||||
|
ne = &CTX->name_elts[u];
|
||||||
|
if (ne->status == 0 && ne->oid[0] == 0 && ne->oid[1] == tag) {
|
||||||
|
if (ok && ne->len > len) {
|
||||||
|
memcpy(ne->buf, CTX->pad + 1, len);
|
||||||
|
ne->buf[len] = 0;
|
||||||
|
ne->status = 1;
|
||||||
|
} else {
|
||||||
|
ne->status = -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\ Read a value, decoding string types. If the string type is recognised
|
||||||
|
\ and the value could be converted to UTF-8 into the pad, then true (-1)
|
||||||
|
\ is returned; in all other cases, false (0) is returned. Either way, the
|
||||||
|
\ object is consumed.
|
||||||
|
: read-string ( lim -- lim bool )
|
||||||
|
read-tag case
|
||||||
|
\ UTF8String
|
||||||
|
12 of check-primitive read-value-UTF8 endof
|
||||||
|
\ NumericString
|
||||||
|
18 of check-primitive read-value-latin1 endof
|
||||||
|
\ PrintableString
|
||||||
|
19 of check-primitive read-value-latin1 endof
|
||||||
|
\ TeletexString
|
||||||
|
20 of check-primitive read-value-latin1 endof
|
||||||
|
\ IA5String
|
||||||
|
22 of check-primitive read-value-latin1 endof
|
||||||
|
\ BMPString
|
||||||
|
30 of check-primitive read-value-UTF16 endof
|
||||||
|
2drop read-length-skip 0 0
|
||||||
|
endcase ;
|
||||||
|
|
||||||
|
\ Read a DN for the EE. The normalized DN hash is computed and stored in the
|
||||||
|
\ current_dn_hash.
|
||||||
|
\ Name elements are gathered. Also, the Common Name is matched against the
|
||||||
|
\ intended server name.
|
||||||
|
\ Returned value is true (-1) if the CN matches the intended server name,
|
||||||
|
\ false (0) otherwise.
|
||||||
|
: read-DN-EE ( lim -- lim bool )
|
||||||
|
\ Flag will be set to true if there is a CN and it matches the
|
||||||
|
\ intended server name.
|
||||||
|
0 { eename-matches }
|
||||||
|
|
||||||
\ Activate DN hashing.
|
\ Activate DN hashing.
|
||||||
start-dn-hash
|
start-dn-hash
|
||||||
|
|
||||||
\ Prepare pad.
|
|
||||||
0 addr-pad set8
|
|
||||||
|
|
||||||
\ Parse the DN structure: it is a SEQUENCE of SET of
|
\ Parse the DN structure: it is a SEQUENCE of SET of
|
||||||
\ AttributeTypeAndValue. Each AttributeTypeAndValue is a
|
\ AttributeTypeAndValue. Each AttributeTypeAndValue is a
|
||||||
\ SEQUENCE { OBJECT IDENTIFIER, ANY }.
|
\ SEQUENCE { OBJECT IDENTIFIER, ANY }.
|
||||||
|
|
@ -548,44 +660,45 @@ addr: saved_dn_hash
|
||||||
dup while
|
dup while
|
||||||
|
|
||||||
read-sequence-open
|
read-sequence-open
|
||||||
\ We want to recognize the OID for Common Name,
|
|
||||||
\ but we don't want to use read-OID because we
|
|
||||||
\ need to preserve the pad contents. Instead, we
|
|
||||||
\ use the fact that the encoding for the value of
|
|
||||||
\ id-at-commonName is 55 04 03 (three bytes).
|
|
||||||
read-tag 0x06 check-tag-primitive read-length-open-elt
|
|
||||||
dup 3 = if
|
|
||||||
read8 16 << { tmp }
|
|
||||||
read8 8 << tmp + >tmp
|
|
||||||
read8 tmp +
|
|
||||||
0x550403 = { isCN }
|
|
||||||
then
|
|
||||||
skip-close-elt
|
|
||||||
|
|
||||||
\ If this is a Common Name, then we want to copy
|
\ Read the OID. If the OID could not be read (too
|
||||||
\ it to the pad, but only if it uses a mono-byte
|
\ long) then the first pad byte will be 0.
|
||||||
\ encoding (Printable, Teletex or UTF-8).
|
read-OID drop
|
||||||
isCN if
|
|
||||||
read-tag
|
\ If it is the Common Name then we'll need to
|
||||||
dup dup 0x0C = swap 0x13 = or swap 0x14 = or if
|
\ match it against the intended server name (if
|
||||||
check-primitive
|
\ applicable).
|
||||||
read-small-value drop
|
id-at-commonName eqOID { isCN }
|
||||||
|
|
||||||
|
\ Get offset for reception buffer for that element
|
||||||
|
\ (or -1).
|
||||||
|
0 offset-name-element { offbuf }
|
||||||
|
|
||||||
|
\ Try to read the value as a string.
|
||||||
|
read-string
|
||||||
|
|
||||||
|
\ If the value could be decoded as a string,
|
||||||
|
\ copy it and/or match it, as appropriate.
|
||||||
|
dup isCN and if
|
||||||
|
match-server-name if
|
||||||
|
-1 >eename-matches
|
||||||
|
then
|
||||||
|
then
|
||||||
|
offbuf copy-name-element
|
||||||
|
|
||||||
|
\ Close the SEQUENCE
|
||||||
close-elt
|
close-elt
|
||||||
else
|
|
||||||
drop
|
|
||||||
0 addr-pad set8
|
|
||||||
skip-close-elt
|
|
||||||
then
|
|
||||||
else
|
|
||||||
skip-close-elt
|
|
||||||
then
|
|
||||||
repeat
|
repeat
|
||||||
close-elt
|
close-elt
|
||||||
repeat
|
repeat
|
||||||
close-elt
|
close-elt
|
||||||
|
|
||||||
\ Compute DN hash and deactivate DN hashing.
|
\ Compute DN hash and deactivate DN hashing.
|
||||||
compute-dn-hash ;
|
compute-dn-hash
|
||||||
|
|
||||||
|
\ Return the CN match flag.
|
||||||
|
eename-matches ;
|
||||||
|
|
||||||
\ Get the validation date and time from the context or system.
|
\ Get the validation date and time from the context or system.
|
||||||
cc: get-system-date ( -- days seconds ) {
|
cc: get-system-date ( -- days seconds ) {
|
||||||
|
|
@ -937,15 +1050,55 @@ OID: subjectInfoAccess 1.3.6.1.5.5.7.1.11
|
||||||
0 { m }
|
0 { m }
|
||||||
read-sequence-open
|
read-sequence-open
|
||||||
begin dup while
|
begin dup while
|
||||||
|
\ Read the tag. If the tag is context-0, then parse an
|
||||||
|
\ 'otherName'. If the tag is context-2, then parse a
|
||||||
|
\ dNSName. If the tag is context-1 or context-6,
|
||||||
|
\ parse
|
||||||
|
read-tag case
|
||||||
|
\ OtherName
|
||||||
|
0x20 of
|
||||||
|
\ OtherName ::= SEQUENCE {
|
||||||
|
\ type-id OBJECT IDENTIFIER,
|
||||||
|
\ value [0] EXPLICIT ANY
|
||||||
|
\ }
|
||||||
|
check-constructed read-length-open-elt
|
||||||
|
read-OID drop
|
||||||
|
-1 offset-name-element { offbuf }
|
||||||
|
read-tag 0x20 check-tag-constructed
|
||||||
|
read-length-open-elt
|
||||||
|
read-string offbuf copy-name-element
|
||||||
|
close-elt
|
||||||
|
close-elt
|
||||||
|
endof
|
||||||
|
\ rfc822Name (IA5String)
|
||||||
|
0x21 of
|
||||||
|
check-primitive
|
||||||
|
read-value-UTF8 1 copy-name-SAN
|
||||||
|
endof
|
||||||
|
\ dNSName (IA5String)
|
||||||
|
0x22 of
|
||||||
|
check-primitive
|
||||||
|
read-value-UTF8
|
||||||
|
dup if match-server-name m or >m then
|
||||||
|
2 copy-name-SAN
|
||||||
|
endof
|
||||||
|
\ uniformResourceIdentifier (IA5String)
|
||||||
|
0x26 of
|
||||||
|
check-primitive
|
||||||
|
read-value-UTF8 6 copy-name-SAN
|
||||||
|
endof
|
||||||
|
2drop read-length-skip 0
|
||||||
|
endcase
|
||||||
|
|
||||||
\ We check only names of type dNSName; they use IA5String,
|
\ We check only names of type dNSName; they use IA5String,
|
||||||
\ which is basically ASCII.
|
\ which is basically ASCII.
|
||||||
read-tag 0x22 = if
|
\ read-tag 0x22 = if
|
||||||
check-primitive
|
\ check-primitive
|
||||||
read-small-value drop
|
\ read-small-value drop
|
||||||
match-server-name m or >m
|
\ match-server-name m or >m
|
||||||
else
|
\ else
|
||||||
drop read-length-skip
|
\ drop read-length-skip
|
||||||
then
|
\ then
|
||||||
repeat
|
repeat
|
||||||
close-elt
|
close-elt
|
||||||
m ;
|
m ;
|
||||||
|
|
@ -996,14 +1149,14 @@ OID: subjectInfoAccess 1.3.6.1.5.5.7.1.11
|
||||||
close-elt
|
close-elt
|
||||||
|
|
||||||
\ Subject name.
|
\ Subject name.
|
||||||
read-DN
|
|
||||||
ee if
|
ee if
|
||||||
\ For the EE, we must check whether the Common Name, if
|
\ For the EE, we must check whether the Common Name, if
|
||||||
\ any, matches the expected server name.
|
\ any, matches the expected server name.
|
||||||
match-server-name { eename }
|
read-DN-EE { eename }
|
||||||
else
|
else
|
||||||
\ For a non-EE certificate, the hashed subject DN must match
|
\ For a non-EE certificate, the hashed subject DN must match
|
||||||
\ the saved hashed issuer DN from the previous certificate.
|
\ the saved hashed issuer DN from the previous certificate.
|
||||||
|
read-DN
|
||||||
addr-current_dn_hash addr-saved_dn_hash dn-hash-length eqblob
|
addr-current_dn_hash addr-saved_dn_hash dn-hash-length eqblob
|
||||||
ifnot ERR_X509_DN_MISMATCH fail then
|
ifnot ERR_X509_DN_MISMATCH fail then
|
||||||
then
|
then
|
||||||
|
|
|
||||||
347
test/test_x509.c
347
test/test_x509.c
|
|
@ -1519,7 +1519,7 @@ run_test_case(test_case *tc)
|
||||||
br_x509_minimal_set_hash(&ctx, id, hash_impls[u].impl);
|
br_x509_minimal_set_hash(&ctx, id, hash_impls[u].impl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
br_x509_minimal_set_rsa(&ctx, br_rsa_i32_pkcs1_vrfy);
|
br_x509_minimal_set_rsa(&ctx, br_rsa_i31_pkcs1_vrfy);
|
||||||
br_x509_minimal_set_ecdsa(&ctx,
|
br_x509_minimal_set_ecdsa(&ctx,
|
||||||
&br_ec_prime_i31, br_ecdsa_i31_vrfy_asn1);
|
&br_ec_prime_i31, br_ecdsa_i31_vrfy_asn1);
|
||||||
|
|
||||||
|
|
@ -1626,6 +1626,349 @@ run_test_case(test_case *tc)
|
||||||
printf("OK\n");
|
printf("OK\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A custom structure for tests, synchronised with the test certificate
|
||||||
|
* names.crt.
|
||||||
|
*
|
||||||
|
* If num is 1 or more, then this is a DN element with OID '1.1.1.1.num'.
|
||||||
|
* If num is -1 or less, then this is a SAN element of type -num.
|
||||||
|
* If num is 0, then this is a SAN element of type OtherName with
|
||||||
|
* OID 1.3.6.1.4.1.311.20.2.3 (Microsoft UPN).
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
int num;
|
||||||
|
int status;
|
||||||
|
const char *expected;
|
||||||
|
} name_element_test;
|
||||||
|
|
||||||
|
static name_element_test names_ref[] = {
|
||||||
|
/* === DN tests === */
|
||||||
|
{
|
||||||
|
/* [12] 66:6f:6f */
|
||||||
|
1, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] 62:61:72 */
|
||||||
|
1, 1, "bar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [18] 31:32:33:34 */
|
||||||
|
2, 1, "1234"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [19] 66:6f:6f */
|
||||||
|
3, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [20] 66:6f:6f */
|
||||||
|
4, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [22] 66:6f:6f */
|
||||||
|
5, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 00:66:00:6f:00:6f */
|
||||||
|
6, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] fe:ff:00:66:00:6f:00:6f */
|
||||||
|
7, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] ff:fe:66:00:6f:00:6f:00 */
|
||||||
|
8, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [20] 63:61:66:e9 */
|
||||||
|
9, 1, "caf\xC3\xA9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] 63:61:66:c3:a9 */
|
||||||
|
10, 1, "caf\xC3\xA9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] 63:61:66:e0:83:a9 */
|
||||||
|
11, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] 63:61:66:e3:90:8c */
|
||||||
|
12, 1, "caf\xE3\x90\x8C"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 00:63:00:61:00:66:34:0c */
|
||||||
|
13, 1, "caf\xE3\x90\x8C"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] 63:61:66:c3 */
|
||||||
|
14, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] d8:42:df:f4:00:67:00:6f */
|
||||||
|
15, 1, "\xF0\xA0\xAF\xB4go"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 00:66:d8:42 */
|
||||||
|
16, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] d8:42:00:66 */
|
||||||
|
17, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] df:f4:00:66 */
|
||||||
|
18, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] 66:00:6f */
|
||||||
|
19, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 00:00:34:0c */
|
||||||
|
20, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 34:0c:00:00:00:66 */
|
||||||
|
21, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [12] ef:bb:bf:66:6f:6f */
|
||||||
|
22, 1, "foo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 00:66:ff:fe:00:6f */
|
||||||
|
23, -1, NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* [30] 00:66:ff:fd:00:6f */
|
||||||
|
24, 1, "f\xEF\xBF\xBDo"
|
||||||
|
},
|
||||||
|
|
||||||
|
/* === Value not found in the DN === */
|
||||||
|
{
|
||||||
|
127, 0, NULL
|
||||||
|
},
|
||||||
|
|
||||||
|
/* === SAN tests === */
|
||||||
|
{
|
||||||
|
/* SAN OtherName (Microsoft UPN) */
|
||||||
|
0, 1, "foo@bar.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* SAN rfc822Name */
|
||||||
|
-1, 1, "bar@foo.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* SAN dNSName */
|
||||||
|
-2, 1, "example.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* SAN dNSName */
|
||||||
|
-2, 1, "www.example.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* uniformResourceIdentifier */
|
||||||
|
-6, 1, "http://www.example.com/"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
free_name_elements(br_name_element *elts, size_t num)
|
||||||
|
{
|
||||||
|
size_t u;
|
||||||
|
|
||||||
|
for (u = 0; u < num; u ++) {
|
||||||
|
xfree((void *)elts[u].oid);
|
||||||
|
xfree(elts[u].buf);
|
||||||
|
}
|
||||||
|
xfree(elts);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_name_extraction(void)
|
||||||
|
{
|
||||||
|
unsigned char *data;
|
||||||
|
size_t len;
|
||||||
|
br_x509_minimal_context ctx;
|
||||||
|
uint32_t days, seconds;
|
||||||
|
size_t u;
|
||||||
|
unsigned status;
|
||||||
|
br_name_element *names;
|
||||||
|
size_t num_names;
|
||||||
|
int good;
|
||||||
|
|
||||||
|
printf("Name extraction: ");
|
||||||
|
fflush(stdout);
|
||||||
|
data = read_file("names.crt", &len);
|
||||||
|
br_x509_minimal_init(&ctx, &br_sha256_vtable, NULL, 0);
|
||||||
|
for (u = 0; hash_impls[u].id; u ++) {
|
||||||
|
int id;
|
||||||
|
|
||||||
|
id = hash_impls[u].id;
|
||||||
|
br_x509_minimal_set_hash(&ctx, id, hash_impls[u].impl);
|
||||||
|
}
|
||||||
|
br_x509_minimal_set_rsa(&ctx, br_rsa_i31_pkcs1_vrfy);
|
||||||
|
br_x509_minimal_set_ecdsa(&ctx,
|
||||||
|
&br_ec_prime_i31, br_ecdsa_i31_vrfy_asn1);
|
||||||
|
string_to_time(DEFAULT_TIME, &days, &seconds);
|
||||||
|
br_x509_minimal_set_time(&ctx, days, seconds);
|
||||||
|
|
||||||
|
num_names = (sizeof names_ref) / (sizeof names_ref[0]);
|
||||||
|
names = xmalloc(num_names * sizeof *names);
|
||||||
|
for (u = 0; u < num_names; u ++) {
|
||||||
|
int num;
|
||||||
|
unsigned char *oid;
|
||||||
|
|
||||||
|
num = names_ref[u].num;
|
||||||
|
if (num > 0) {
|
||||||
|
oid = xmalloc(5);
|
||||||
|
oid[0] = 4;
|
||||||
|
oid[1] = 0x29;
|
||||||
|
oid[2] = 0x01;
|
||||||
|
oid[3] = 0x01;
|
||||||
|
oid[4] = num;
|
||||||
|
} else if (num == 0) {
|
||||||
|
oid = xmalloc(13);
|
||||||
|
oid[0] = 0x00;
|
||||||
|
oid[1] = 0x00;
|
||||||
|
oid[2] = 0x0A;
|
||||||
|
oid[3] = 0x2B;
|
||||||
|
oid[4] = 0x06;
|
||||||
|
oid[5] = 0x01;
|
||||||
|
oid[6] = 0x04;
|
||||||
|
oid[7] = 0x01;
|
||||||
|
oid[8] = 0x82;
|
||||||
|
oid[9] = 0x37;
|
||||||
|
oid[10] = 0x14;
|
||||||
|
oid[11] = 0x02;
|
||||||
|
oid[12] = 0x03;
|
||||||
|
} else {
|
||||||
|
oid = xmalloc(2);
|
||||||
|
oid[0] = 0x00;
|
||||||
|
oid[1] = -num;
|
||||||
|
}
|
||||||
|
names[u].oid = oid;
|
||||||
|
names[u].buf = xmalloc(256);
|
||||||
|
names[u].len = 256;
|
||||||
|
}
|
||||||
|
br_x509_minimal_set_name_elements(&ctx, names, num_names);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Put "canaries" to detect actual stack usage.
|
||||||
|
*/
|
||||||
|
for (u = 0; u < (sizeof ctx.dp_stack) / sizeof(uint32_t); u ++) {
|
||||||
|
ctx.dp_stack[u] = 0xA7C083FE;
|
||||||
|
}
|
||||||
|
for (u = 0; u < (sizeof ctx.rp_stack) / sizeof(uint32_t); u ++) {
|
||||||
|
ctx.rp_stack[u] = 0xA7C083FE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Run the engine. Since we set no trust anchor, we expect a status
|
||||||
|
* of "not trusted".
|
||||||
|
*/
|
||||||
|
ctx.vtable->start_chain(&ctx.vtable, NULL);
|
||||||
|
ctx.vtable->start_cert(&ctx.vtable, len);
|
||||||
|
ctx.vtable->append(&ctx.vtable, data, len);
|
||||||
|
ctx.vtable->end_cert(&ctx.vtable);
|
||||||
|
status = ctx.vtable->end_chain(&ctx.vtable);
|
||||||
|
if (status != BR_ERR_X509_NOT_TRUSTED) {
|
||||||
|
fprintf(stderr, "wrong status: %u\n", status);
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check stack usage.
|
||||||
|
*/
|
||||||
|
for (u = (sizeof ctx.dp_stack) / sizeof(uint32_t); u > 0; u --) {
|
||||||
|
if (ctx.dp_stack[u - 1] != 0xA7C083FE) {
|
||||||
|
if (max_dp_usage < u) {
|
||||||
|
max_dp_usage = u;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (u = (sizeof ctx.rp_stack) / sizeof(uint32_t); u > 0; u --) {
|
||||||
|
if (ctx.rp_stack[u - 1] != 0xA7C083FE) {
|
||||||
|
if (max_rp_usage < u) {
|
||||||
|
max_rp_usage = u;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
good = 1;
|
||||||
|
for (u = 0; u < num_names; u ++) {
|
||||||
|
if (names[u].status != names_ref[u].status) {
|
||||||
|
printf("ERR: name %u (id=%d): status=%d, expected=%d\n",
|
||||||
|
(unsigned)u, names_ref[u].num,
|
||||||
|
names[u].status, names_ref[u].status);
|
||||||
|
if (names[u].status > 0) {
|
||||||
|
unsigned char *p;
|
||||||
|
|
||||||
|
printf(" obtained:");
|
||||||
|
p = (unsigned char *)names[u].buf;
|
||||||
|
while (*p) {
|
||||||
|
printf(" %02X", *p ++);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
good = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (names_ref[u].expected == NULL) {
|
||||||
|
if (names[u].buf[0] != 0) {
|
||||||
|
printf("ERR: name %u not zero-terminated\n",
|
||||||
|
(unsigned)u);
|
||||||
|
good = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (strcmp(names[u].buf, names_ref[u].expected) != 0) {
|
||||||
|
unsigned char *p;
|
||||||
|
|
||||||
|
printf("ERR: name %u (id=%d): wrong value\n",
|
||||||
|
(unsigned)u, names_ref[u].num);
|
||||||
|
printf(" expected:");
|
||||||
|
p = (unsigned char *)names_ref[u].expected;
|
||||||
|
while (*p) {
|
||||||
|
printf(" %02X", *p ++);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
printf(" obtained:");
|
||||||
|
p = (unsigned char *)names[u].buf;
|
||||||
|
while (*p) {
|
||||||
|
printf(" %02X", *p ++);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
good = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!good) {
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
for (u = 0; u < num_names; u ++) {
|
||||||
|
printf("%u: (%d)", (unsigned)u, names[u].status);
|
||||||
|
if (names[u].status > 0) {
|
||||||
|
size_t v;
|
||||||
|
|
||||||
|
for (v = 0; names[u].buf[v]; v ++) {
|
||||||
|
printf(" %02x", names[u].buf[v]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
xfree(data);
|
||||||
|
free_name_elements(names, num_names);
|
||||||
|
printf("OK\n");
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(void)
|
main(void)
|
||||||
{
|
{
|
||||||
|
|
@ -1638,6 +1981,7 @@ main(void)
|
||||||
for (u = 0; u < all_chains_ptr; u ++) {
|
for (u = 0; u < all_chains_ptr; u ++) {
|
||||||
run_test_case(&all_chains[u]);
|
run_test_case(&all_chains[u]);
|
||||||
}
|
}
|
||||||
|
test_name_extraction();
|
||||||
|
|
||||||
printf("Maximum data stack usage: %u\n", (unsigned)max_dp_usage);
|
printf("Maximum data stack usage: %u\n", (unsigned)max_dp_usage);
|
||||||
printf("Maximum return stack usage: %u\n", (unsigned)max_rp_usage);
|
printf("Maximum return stack usage: %u\n", (unsigned)max_rp_usage);
|
||||||
|
|
@ -1648,5 +1992,6 @@ main(void)
|
||||||
free_test_case_contents(&all_chains[u]);
|
free_test_case_contents(&all_chains[u]);
|
||||||
}
|
}
|
||||||
xfree(all_chains);
|
xfree(all_chains);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
test/x509/names.crt
Normal file
BIN
test/x509/names.crt
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue