From 134cadf55b66d4c3ee925aee9104a4e0d4811338 Mon Sep 17 00:00:00 2001 From: cheatfate Date: Mon, 7 Oct 2019 20:57:40 +0300 Subject: [PATCH] Move all declarations from root file to decls.nim Fix some declarations (e.g. size_t and pointer types). Add Mozilla ca certificates store. Add SSL error messages. --- bearssl.nim | 3690 +-------------- bearssl/cacert.nim | 25 + bearssl/certs/cacert20190828.h | 7985 ++++++++++++++++++++++++++++++++ bearssl/decls.nim | 3763 +++++++++++++++ bearssl/errors.nim | 187 + 5 files changed, 11963 insertions(+), 3687 deletions(-) create mode 100644 bearssl/cacert.nim create mode 100644 bearssl/certs/cacert20190828.h create mode 100644 bearssl/decls.nim create mode 100644 bearssl/errors.nim diff --git a/bearssl.nim b/bearssl.nim index 3603874..d0db82a 100644 --- a/bearssl.nim +++ b/bearssl.nim @@ -1,4 +1,4 @@ -## Nim-Libp2p +## Nim-BearSSL ## Copyright (c) 2018 Status Research & Development GmbH ## Licensed under either of ## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) @@ -6,3689 +6,5 @@ ## at your option. ## This file may not be copied, modified, or distributed except according to ## those terms. - -## This module implements interface with BearSSL library sources. -import strutils -from os import DirSep - -const - bearPath = currentSourcePath.rsplit(DirSep, 1)[0] & DirSep & - "bearssl" & DirSep & "csources" & DirSep - bearSrcPath = bearPath & "src" - bearIncPath = bearPath & "inc" - bearIntPath = bearSrcPath & DirSep & "int" & DirSep - bearCodecPath = bearSrcPath & DirSep & "codec" & DirSep - bearRandPath = bearSrcPath & DirSep & "rand" & DirSep - bearRsaPath = bearSrcPath & DirSep & "rsa" & DirSep - bearEcPath = bearSrcPath & DirSep & "ec" & DirSep - bearX509Path = bearSrcPath & DirSep & "x509" & DirSep - bearMacPath = bearSrcPath & DirSep & "mac" & DirSep - bearHashPath = bearSrcPath & DirSep & "hash" & DirSep - bearSslPath = bearSrcPath & DirSep & "ssl" & DirSep - bearSymcipherPath = bearSrcPath & DirSep & "symcipher" & DirSep - bearAeadPath = bearSrcPath & DirSep & "aead" & DirSep - -static: - echo bearPath - -{.passC: "-I" & bearSrcPath} -{.passC: "-I" & bearIncPath} - -when defined(windows): - {.passC: "-DBR_USE_WIN32_TIME=1".} - {.passC: "-DBR_USE_WIN32_RAND=1".} -else: - {.passC: "-DBR_USE_UNIX_TIME=1".} - {.passC: "-DBR_USE_URANDOM=1".} - -when system.cpuEndian == bigEndian: - {.passC: "-DBR_BE_UNALIGNED=1".} -else: - {.passC: "-DBR_LE_UNALIGNED=1".} - -{.pragma: bearssl_func, importc, cdecl.} - -when sizeof(int) == 8: - {.passC: "-DBR_64=1".} - {.passC:" -DBR_amd64=1".} - when defined(vcc): - {.passC: "-DBR_UMUL128=1".} - else: - {.passC: "-DBR_INT128=1".} - - ## Codec sources - {.compile: bearCodecPath & "ccopy.c".} - {.compile: bearCodecPath & "enc64be.c".} - {.compile: bearCodecPath & "dec64be.c".} - {.compile: bearCodecPath & "enc32be.c".} - {.compile: bearCodecPath & "dec32be.c".} - {.compile: bearCodecPath & "pemenc.c".} - {.compile: bearCodecPath & "pemdec.c".} - {.compile: bearCodecPath & "dec32le.c".} - {.compile: bearCodecPath & "enc32le.c".} - - ## Big integer sources - {.compile: bearIntPath & "i31_add.c".} - {.compile: bearIntPath & "i31_bitlen.c".} - {.compile: bearIntPath & "i31_decmod.c".} - {.compile: bearIntPath & "i31_decode.c".} - {.compile: bearIntPath & "i31_decred.c".} - {.compile: bearIntPath & "i31_encode.c".} - {.compile: bearIntPath & "i31_fmont.c".} - {.compile: bearIntPath & "i31_iszero.c".} - {.compile: bearIntPath & "i31_moddiv.c".} - {.compile: bearIntPath & "i31_modpow.c".} - {.compile: bearIntPath & "i31_modpow2.c".} - {.compile: bearIntPath & "i31_montmul.c".} - {.compile: bearIntPath & "i31_mulacc.c".} - {.compile: bearIntPath & "i31_muladd.c".} - {.compile: bearIntPath & "i31_ninv31.c".} - {.compile: bearIntPath & "i31_reduce.c".} - {.compile: bearIntPath & "i31_rshift.c".} - {.compile: bearIntPath & "i31_sub.c".} - {.compile: bearIntPath & "i31_tmont.c".} - - ## Additional integer sources - {.compile: bearIntPath & "i32_div32.c".} - {.compile: bearIntPath & "i62_modpow2.c".} - - ## Random generator sources - {.compile: bearRandPath & "sysrng.c".} - {.compile: bearRandPath & "hmac_drbg.c".} - {.compile: bearRandPath & "aesctr_drbg.c".} - - ## HMAC sources - {.compile: bearMacPath & "hmac.c".} - {.compile: bearMacPath & "hmac_ct.c".} - - ## HASH sources - {.compile: bearHashPath & "mgf1.c".} - {.compile: bearHashPath & "ghash_ctmul64.c".} - {.compile: bearHashPath & "ghash_pclmul.c".} - {.compile: bearHashPath & "sha2small.c".} # SHA2-224/256 - {.compile: bearHashPath & "sha2big.c".} # SHA2-384/512 - {.compile: bearHashPath & "md5.c".} - {.compile: bearHashPath & "sha1.c".} - {.compile: bearHashPath & "multihash.c".} - - ## RSA sources - {.compile: bearRsaPath & "rsa_i31_keygen_inner.c".} - {.compile: bearRsaPath & "rsa_i62_keygen.c".} - {.compile: bearRsaPath & "rsa_i62_oaep_decrypt.c".} - {.compile: bearRsaPath & "rsa_i62_oaep_encrypt.c".} - {.compile: bearRsaPath & "rsa_i62_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_i62_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_i31_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_i62_priv.c".} - {.compile: bearRsaPath & "rsa_i62_pub.c".} - {.compile: bearRsaPath & "rsa_oaep_pad.c".} - {.compile: bearRsaPath & "rsa_oaep_unpad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_pad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_unpad.c".} - {.compile: bearRsaPath & "rsa_ssl_decrypt.c".} - {.compile: bearRsaPath & "rsa_default_keygen.c".} - {.compile: bearRsaPath & "rsa_i31_modulus.c".} - {.compile: bearRsaPath & "rsa_i31_privexp.c".} - {.compile: bearRsaPath & "rsa_i31_pubexp.c".} - {.compile: bearRsaPath & "rsa_i31_pub.c".} - {.compile: bearRsaPath & "rsa_default_modulus.c".} - {.compile: bearRsaPath & "rsa_default_privexp.c".} - {.compile: bearRsaPath & "rsa_default_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_default_pub.c".} - - ## Elliptic Curve sources - {.compile: bearEcPath & "ec_all_m31.c".} - {.compile: bearEcPath & "ec_default.c".} - {.compile: bearEcPath & "ec_keygen.c".} - {.compile: bearEcPath & "ec_c25519_m31.c".} - {.compile: bearEcPath & "ec_c25519_m64.c".} - {.compile: bearEcPath & "ec_p256_m31.c".} - {.compile: bearEcPath & "ec_p256_m64.c".} - {.compile: bearEcPath & "ec_curve25519.c".} - {.compile: bearEcPath & "ec_prime_i31.c".} - {.compile: bearEcPath & "ec_pubkey.c".} - {.compile: bearEcPath & "ec_secp256r1.c".} - {.compile: bearEcPath & "ec_secp384r1.c".} - {.compile: bearEcPath & "ec_secp521r1.c".} - {.compile: bearEcPath & "ecdsa_i31_bits.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_raw.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_raw.c".} - {.compile: bearEcPath & "ecdsa_rta.c".} - {.compile: bearEcPath & "ecdsa_atr.c".} - -elif sizeof(int) == 4: - - ## Codec sources - {.compile: bearCodecPath & "ccopy.c".} - {.compile: bearCodecPath & "enc64be.c".} - {.compile: bearCodecPath & "dec64be.c".} - {.compile: bearCodecPath & "enc32be.c".} - {.compile: bearCodecPath & "dec32be.c".} - {.compile: bearCodecPath & "pemenc.c".} - {.compile: bearCodecPath & "pemdec.c".} - {.compile: bearCodecPath & "dec32le.c".} - {.compile: bearCodecPath & "enc32le.c".} - - ## Big integer sources - {.compile: bearIntPath & "i31_add.c".} - {.compile: bearIntPath & "i31_bitlen.c".} - {.compile: bearIntPath & "i31_decmod.c".} - {.compile: bearIntPath & "i31_decode.c".} - {.compile: bearIntPath & "i31_decred.c".} - {.compile: bearIntPath & "i31_encode.c".} - {.compile: bearIntPath & "i31_fmont.c".} - {.compile: bearIntPath & "i31_iszero.c".} - {.compile: bearIntPath & "i31_moddiv.c".} - {.compile: bearIntPath & "i31_modpow.c".} - {.compile: bearIntPath & "i31_modpow2.c".} - {.compile: bearIntPath & "i31_montmul.c".} - {.compile: bearIntPath & "i31_mulacc.c".} - {.compile: bearIntPath & "i31_muladd.c".} - {.compile: bearIntPath & "i31_ninv31.c".} - {.compile: bearIntPath & "i31_reduce.c".} - {.compile: bearIntPath & "i31_rshift.c".} - {.compile: bearIntPath & "i31_sub.c".} - {.compile: bearIntPath & "i31_tmont.c".} - - ## Additional integer sources - {.compile: bearIntPath & "i32_div32.c".} - - ## Random generator sources - {.compile: bearRandPath & "sysrng.c".} - {.compile: bearRandPath & "hmac_drbg.c".} - {.compile: bearRandPath & "aesctr_drbg.c".} - - ## HMAC sources - {.compile: bearMacPath & "hmac.c".} - {.compile: bearMacPath & "hmac_ct.c".} - - ## HASH sources - {.compile: bearHashPath & "mgf1.c".} - {.compile: bearHashPath & "ghash_ctmul.c".} - {.compile: bearHashPath & "ghash_pclmul.c".} - {.compile: bearHashPath & "sha2small.c".} # SHA2-224/256 - {.compile: bearHashPath & "sha2big.c".} # SHA2-384/512 - {.compile: bearHashPath & "md5.c".} - {.compile: bearHashPath & "sha1.c".} - {.compile: bearHashPath & "multihash.c".} - - ## RSA sources - {.compile: bearRsaPath & "rsa_i31_keygen_inner.c".} - {.compile: bearRsaPath & "rsa_i31_keygen.c".} - {.compile: bearRsaPath & "rsa_i31_oaep_decrypt.c".} - {.compile: bearRsaPath & "rsa_i31_oaep_encrypt.c".} - {.compile: bearRsaPath & "rsa_i31_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_i31_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_i31_priv.c".} - {.compile: bearRsaPath & "rsa_i31_pub.c".} - {.compile: bearRsaPath & "rsa_oaep_pad.c".} - {.compile: bearRsaPath & "rsa_oaep_unpad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_pad.c".} - {.compile: bearRsaPath & "rsa_pkcs1_sig_unpad.c".} - {.compile: bearRsaPath & "rsa_ssl_decrypt.c".} - {.compile: bearRsaPath & "rsa_default_keygen.c".} - {.compile: bearRsaPath & "rsa_i31_modulus.c".} - {.compile: bearRsaPath & "rsa_i31_privexp.c".} - {.compile: bearRsaPath & "rsa_i31_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_modulus.c".} - {.compile: bearRsaPath & "rsa_default_privexp.c".} - {.compile: bearRsaPath & "rsa_default_pubexp.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_sign.c".} - {.compile: bearRsaPath & "rsa_default_pkcs1_vrfy.c".} - {.compile: bearRsaPath & "rsa_default_pub.c".} - - ## Elliptic Curve sources - {.compile: bearEcPath & "ec_all_m31.c".} - {.compile: bearEcPath & "ec_default.c".} - {.compile: bearEcPath & "ec_keygen.c".} - {.compile: bearEcPath & "ec_c25519_m31.c".} - {.compile: bearEcPath & "ec_p256_m31.c".} - {.compile: bearEcPath & "ec_curve25519.c".} - {.compile: bearEcPath & "ec_prime_i31.c".} - {.compile: bearEcPath & "ec_pubkey.c".} - {.compile: bearEcPath & "ec_secp256r1.c".} - {.compile: bearEcPath & "ec_secp384r1.c".} - {.compile: bearEcPath & "ec_secp521r1.c".} - {.compile: bearEcPath & "ecdsa_i31_bits.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_raw.c".} - {.compile: bearEcPath & "ecdsa_i31_sign_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_asn1.c".} - {.compile: bearEcPath & "ecdsa_i31_vrfy_raw.c".} - {.compile: bearEcPath & "ecdsa_rta.c".} - {.compile: bearEcPath & "ecdsa_atr.c".} - -else: - error("Sorry, your target architecture is not supported!") - -{.compile: bearSslPath & "ssl_client.c".} -{.compile: bearSslPath & "ssl_client_full.c".} -{.compile: bearSslPath & "ssl_engine.c".} -{.compile: bearSslPath & "ssl_hs_client.c".} -{.compile: bearSslPath & "ssl_engine_default_rsavrfy.c".} -{.compile: bearSslPath & "ssl_engine_default_ecdsa.c".} -{.compile: bearSslPath & "ssl_engine_default_aescbc.c".} -{.compile: bearSslPath & "ssl_engine_default_aesccm.c".} -{.compile: bearSslPath & "ssl_engine_default_aesgcm.c".} -{.compile: bearSslPath & "ssl_engine_default_descbc.c".} -{.compile: bearSslPath & "ssl_engine_default_chapol.c".} -{.compile: bearSslPath & "ssl_rec_cbc.c".} -{.compile: bearSslPath & "ssl_rec_ccm.c".} -{.compile: bearSslPath & "ssl_rec_gcm.c".} -{.compile: bearSslPath & "ssl_rec_chapol.c".} - -{.compile: bearSslPath & "ssl_client_default_rsapub.c".} -{.compile: bearSslPath & "prf.c".} -{.compile: bearSslPath & "prf_md5sha1.c".} -{.compile: bearSslPath & "prf_sha256.c".} -{.compile: bearSslPath & "prf_sha384.c".} - -{.compile: bearx509Path & "x509_minimal.c".} -{.compile: bearx509Path & "x509_minimal_full.c".} - -{.compile: bearSymcipherPath & "aes_x86ni.c".} -{.compile: bearSymcipherPath & "aes_x86ni_cbcenc.c".} -{.compile: bearSymcipherPath & "aes_x86ni_cbcdec.c".} -{.compile: bearSymcipherPath & "aes_x86ni_ctrcbc.c".} -{.compile: bearSymcipherPath & "aes_x86ni_ctr.c".} - -{.compile: bearSymcipherPath & "aes_ct64.c".} -{.compile: bearSymcipherPath & "aes_ct64_cbcdec.c".} -{.compile: bearSymcipherPath & "aes_ct64_cbcenc.c".} -{.compile: bearSymcipherPath & "aes_ct64_ctrcbc.c".} -{.compile: bearSymcipherPath & "aes_ct64_ctr.c".} -{.compile: bearSymcipherPath & "aes_ct64_enc.c".} -{.compile: bearSymcipherPath & "aes_ct64_dec.c".} - -{.compile: bearSymcipherPath & "des_ct.c".} -{.compile: bearSymcipherPath & "des_ct_cbcdec.c".} -{.compile: bearSymcipherPath & "des_ct_cbcenc.c".} -{.compile: bearSymcipherPath & "des_support.c".} - -{.compile: bearSymcipherPath & "chacha20_sse2.c".} -{.compile: bearSymcipherPath & "chacha20_ct.c".} - -{.compile: bearSymcipherPath & "poly1305_ctmulq.c".} -{.compile: bearSymcipherPath & "poly1305_ctmul.c".} - -{.compile: bearAeadPath & "ccm.c".} - -type - HashClass* {.importc: "br_hash_class", header: "bearssl_hash.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - desc* {.importc: "desc".}: uint32 - init* {.importc: "init".}: proc (ctx: ptr ptr HashClass) {.cdecl.} - update* {.importc: "update".}: proc (ctx: ptr ptr HashClass; data: pointer; len: int) {. - cdecl.} - output* {.importc: "out".}: proc (ctx: ptr ptr HashClass; dst: pointer) {.cdecl.} - state* {.importc: "state".}: proc (ctx: ptr ptr HashClass; dst: pointer): uint64 {. - cdecl.} - setState* {.importc: "set_state".}: proc (ctx: ptr ptr HashClass; stb: pointer; - count: uint64) {.cdecl.} - -template hashdesc_Id*(id: untyped): untyped = - ((uint32)(id) shl hashdesc_Id_Off) - -const - HASHDESC_ID_OFF* = 0 - HASHDESC_ID_MASK* = 0x000000FF - -template hashdesc_Out*(size: untyped): untyped = - ((uint32)(size) shl hashdesc_Out_Off) - -const - HASHDESC_OUT_OFF* = 8 - HASHDESC_OUT_MASK* = 0x0000007F - -template hashdesc_State*(size: untyped): untyped = - ((uint32)(size) shl hashdesc_State_Off) - -const - HASHDESC_STATE_OFF* = 15 - HASHDESC_STATE_MASK* = 0x000000FF - -template hashdesc_Lblen*(ls: untyped): untyped = - ((uint32)(ls) shl hashdesc_Lblen_Off) - -const - HASHDESC_LBLEN_OFF* = 23 - HASHDESC_LBLEN_MASK* = 0x0000000F - HASHDESC_MD_PADDING* = (1'u32 shl 28) - HASHDESC_MD_PADDING_128* = (1'u32 shl 29) - HASHDESC_MD_PADDING_BE* = (1'u32 shl 30) - -const - md5ID* = 1 - -const - md5SIZE* = 16 - -var md5Vtable* {.importc: "br_md5_vtable", header: "bearssl_hash.h".}: HashClass - -type - Md5Context* {.importc: "br_md5_context", header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr HashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[4, uint32] - - -proc md5Init*(ctx: ptr Md5Context) {.cdecl, importc: "br_md5_init", - header: "bearssl_hash.h".} - -proc md5Update*(ctx: ptr Md5Context; data: pointer; len: int) {.cdecl, - importc: "br_md5_update", header: "bearssl_hash.h".} - -proc md5Out*(ctx: ptr Md5Context; `out`: pointer) {.cdecl, importc: "br_md5_out", - header: "bearssl_hash.h".} - -proc md5State*(ctx: ptr Md5Context; `out`: pointer): uint64 {.cdecl, - importc: "br_md5_state", header: "bearssl_hash.h".} - -proc md5SetState*(ctx: ptr Md5Context; stb: pointer; count: uint64) {.cdecl, - importc: "br_md5_set_state", header: "bearssl_hash.h".} - -const - sha1ID* = 2 - -const - sha1SIZE* = 20 - -var sha1Vtable* {.importc: "br_sha1_vtable", header: "bearssl_hash.h".}: HashClass - -type - Sha1Context* {.importc: "br_sha1_context", header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr HashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[5, uint32] - - -proc sha1Init*(ctx: ptr Sha1Context) {.cdecl, importc: "br_sha1_init", - header: "bearssl_hash.h".} - -proc sha1Update*(ctx: ptr Sha1Context; data: pointer; len: int) {.cdecl, - importc: "br_sha1_update", header: "bearssl_hash.h".} - -proc sha1Out*(ctx: ptr Sha1Context; `out`: pointer) {.cdecl, importc: "br_sha1_out", - header: "bearssl_hash.h".} - -proc sha1State*(ctx: ptr Sha1Context; `out`: pointer): uint64 {.cdecl, - importc: "br_sha1_state", header: "bearssl_hash.h".} - -proc sha1SetState*(ctx: ptr Sha1Context; stb: pointer; count: uint64) {.cdecl, - importc: "br_sha1_set_state", header: "bearssl_hash.h".} - -const - sha224ID* = 3 - -const - sha224SIZE* = 28 - -var sha224Vtable* {.importc: "br_sha224_vtable", header: "bearssl_hash.h".}: HashClass - -type - Sha256Context* = Sha224Context - Sha224Context* {.importc: "br_sha224_context", header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr HashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[8, uint32] - - -proc sha224Init*(ctx: ptr Sha224Context) {.cdecl, importc: "br_sha224_init", - header: "bearssl_hash.h".} - -proc sha224Update*(ctx: ptr Sha224Context; data: pointer; len: int) {.cdecl, - importc: "br_sha224_update", header: "bearssl_hash.h".} - -proc sha224Out*(ctx: ptr Sha224Context; `out`: pointer) {.cdecl, - importc: "br_sha224_out", header: "bearssl_hash.h".} - -proc sha224State*(ctx: ptr Sha224Context; `out`: pointer): uint64 {.cdecl, - importc: "br_sha224_state", header: "bearssl_hash.h".} - -proc sha224SetState*(ctx: ptr Sha224Context; stb: pointer; count: uint64) {.cdecl, - importc: "br_sha224_set_state", header: "bearssl_hash.h".} - -const - sha256ID* = 4 - -const - sha256SIZE* = 32 - -var sha256Vtable* {.importc: "br_sha256_vtable", header: "bearssl_hash.h".}: HashClass - -proc sha256Init*(ctx: ptr Sha256Context) {.cdecl, importc: "br_sha256_init", - header: "bearssl_hash.h".} - -proc sha256Out*(ctx: ptr Sha256Context; `out`: pointer) {.cdecl, - importc: "br_sha256_out", header: "bearssl_hash.h".} -when false: - proc sha256State*(ctx: ptr Sha256Context; `out`: pointer): uint64 {.cdecl, - importc: "br_sha256_state", header: "bearssl_hash.h".} -else: - const - sha256State* = sha224State -when false: - proc sha256SetState*(ctx: ptr Sha256Context; stb: pointer; count: uint64) {.cdecl, - importc: "br_sha256_set_state", header: "bearssl_hash.h".} -else: - const - sha256SetState* = sha224SetState - -const - sha384ID* = 5 - -const - sha384SIZE* = 48 - -var sha384Vtable* {.importc: "br_sha384_vtable", header: "bearssl_hash.h".}: HashClass - -type - Sha384Context* {.importc: "br_sha384_context", header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr HashClass - buf* {.importc: "buf".}: array[128, cuchar] - count* {.importc: "count".}: uint64 - val* {.importc: "val".}: array[8, uint64] - - -proc sha384Init*(ctx: ptr Sha384Context) {.cdecl, importc: "br_sha384_init", - header: "bearssl_hash.h".} - -proc sha384Update*(ctx: ptr Sha384Context; data: pointer; len: int) {.cdecl, - importc: "br_sha384_update", header: "bearssl_hash.h".} - -proc sha384Out*(ctx: ptr Sha384Context; `out`: pointer) {.cdecl, - importc: "br_sha384_out", header: "bearssl_hash.h".} - -proc sha384State*(ctx: ptr Sha384Context; `out`: pointer): uint64 {.cdecl, - importc: "br_sha384_state", header: "bearssl_hash.h".} - -proc sha384SetState*(ctx: ptr Sha384Context; stb: pointer; count: uint64) {.cdecl, - importc: "br_sha384_set_state", header: "bearssl_hash.h".} - -const - sha512ID* = 6 - -const - sha512SIZE* = 64 - -var sha512Vtable* {.importc: "br_sha512_vtable", header: "bearssl_hash.h".}: HashClass - -type - Sha512Context* = Sha384Context - -proc sha512Init*(ctx: ptr Sha512Context) {.cdecl, importc: "br_sha512_init", - header: "bearssl_hash.h".} -const - sha512Update* = sha384Update - -proc sha512Out*(ctx: ptr Sha512Context; `out`: pointer) {.cdecl, - importc: "br_sha512_out", header: "bearssl_hash.h".} - -const - md5sha1ID* = 0 - -const - md5sha1SIZE* = 36 - -var md5sha1Vtable* {.importc: "br_md5sha1_vtable", header: "bearssl_hash.h".}: HashClass - -type - Md5sha1Context* {.importc: "br_md5sha1_context", header: "bearssl_hash.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr HashClass - buf* {.importc: "buf".}: array[64, cuchar] - count* {.importc: "count".}: uint64 - valMd5* {.importc: "val_md5".}: array[4, uint32] - valSha1* {.importc: "val_sha1".}: array[5, uint32] - - -proc md5sha1Init*(ctx: ptr Md5sha1Context) {.cdecl, importc: "br_md5sha1_init", - header: "bearssl_hash.h".} - -proc md5sha1Update*(ctx: ptr Md5sha1Context; data: pointer; len: int) {.cdecl, - importc: "br_md5sha1_update", header: "bearssl_hash.h".} - -proc md5sha1Out*(ctx: ptr Md5sha1Context; `out`: pointer) {.cdecl, - importc: "br_md5sha1_out", header: "bearssl_hash.h".} - -proc md5sha1State*(ctx: ptr Md5sha1Context; `out`: pointer): uint64 {.cdecl, - importc: "br_md5sha1_state", header: "bearssl_hash.h".} - -proc md5sha1SetState*(ctx: ptr Md5sha1Context; stb: pointer; count: uint64) {.cdecl, - importc: "br_md5sha1_set_state", header: "bearssl_hash.h".} - -type - HashCompatContext* {.importc: "br_hash_compat_context", header: "bearssl_hash.h", - bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr HashClass - md5* {.importc: "md5".}: Md5Context - sha1* {.importc: "sha1".}: Sha1Context - sha224* {.importc: "sha224".}: Sha224Context - sha256* {.importc: "sha256".}: Sha256Context - sha384* {.importc: "sha384".}: Sha384Context - sha512* {.importc: "sha512".}: Sha512Context - md5sha1* {.importc: "md5sha1".}: Md5sha1Context - - -type - MultihashContext* {.importc: "br_multihash_context", header: "bearssl_hash.h", - bycopy.} = object - buf* {.importc: "buf".}: array[128, cuchar] - count* {.importc: "count".}: uint64 - val32* {.importc: "val_32".}: array[25, uint32] - val64* {.importc: "val_64".}: array[16, uint64] - impl* {.importc: "impl".}: array[6, ptr HashClass] - - -proc multihashZero*(ctx: ptr MultihashContext) {.cdecl, importc: "br_multihash_zero", - header: "bearssl_hash.h".} - -proc multihashSetimpl*(ctx: ptr MultihashContext; id: cint; impl: ptr HashClass) {. - inline.} = - ctx.impl[id - 1] = impl - -proc multihashGetimpl*(ctx: ptr MultihashContext; id: cint): ptr HashClass {.inline, - cdecl.} = - return ctx.impl[id - 1] - -proc multihashInit*(ctx: ptr MultihashContext) {.cdecl, importc: "br_multihash_init", - header: "bearssl_hash.h".} - -proc multihashUpdate*(ctx: ptr MultihashContext; data: pointer; len: int) {.cdecl, - importc: "br_multihash_update", header: "bearssl_hash.h".} - -proc multihashOut*(ctx: ptr MultihashContext; id: cint; dst: pointer): int {.cdecl, - importc: "br_multihash_out", header: "bearssl_hash.h".} - -type - Ghash* = proc (y: pointer; h: pointer; data: pointer; len: int) {.cdecl.} - -proc ghashCtmul*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, - importc: "br_ghash_ctmul", header: "bearssl_hash.h".} - -proc ghashCtmul32*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, - importc: "br_ghash_ctmul32", header: "bearssl_hash.h".} - -proc ghashCtmul64*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, - importc: "br_ghash_ctmul64", header: "bearssl_hash.h".} - -proc ghashPclmul*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, - importc: "br_ghash_pclmul", header: "bearssl_hash.h".} - -proc ghashPclmulGet*(): Ghash {.cdecl, importc: "br_ghash_pclmul_get", - header: "bearssl_hash.h".} - -proc ghashPwr8*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, - importc: "br_ghash_pwr8", header: "bearssl_hash.h".} - -proc ghashPwr8Get*(): Ghash {.cdecl, importc: "br_ghash_pwr8_get", - header: "bearssl_hash.h".} - -type - HmacKeyContext* {.importc: "br_hmac_key_context", header: "bearssl_hmac.h", bycopy.} = object - digVtable* {.importc: "dig_vtable".}: ptr HashClass - ksi* {.importc: "ksi".}: array[64, cuchar] - kso* {.importc: "kso".}: array[64, cuchar] - - -proc hmacKeyInit*(kc: ptr HmacKeyContext; digestVtable: ptr HashClass; key: pointer; - keyLen: int) {.cdecl, importc: "br_hmac_key_init", - header: "bearssl_hmac.h".} - -type - HmacContext* {.importc: "br_hmac_context", header: "bearssl_hmac.h", bycopy.} = object - dig* {.importc: "dig".}: HashCompatContext - kso* {.importc: "kso".}: array[64, cuchar] - outLen* {.importc: "out_len".}: int - - -proc hmacInit*(ctx: ptr HmacContext; kc: ptr HmacKeyContext; outLen: int) {.cdecl, - importc: "br_hmac_init", header: "bearssl_hmac.h".} - -proc hmacSize*(ctx: ptr HmacContext): int {.inline.} = - return ctx.outLen - -proc hmacUpdate*(ctx: ptr HmacContext; data: pointer; len: int) {.cdecl, - importc: "br_hmac_update", header: "bearssl_hmac.h".} - -proc hmacOut*(ctx: ptr HmacContext; `out`: pointer): int {.cdecl, - importc: "br_hmac_out", header: "bearssl_hmac.h".} - -proc hmacOutCT*(ctx: ptr HmacContext; data: pointer; len: int; minLen: int; - maxLen: int; `out`: pointer): int {.cdecl, - importc: "br_hmac_outCT", header: "bearssl_hmac.h".} - -type - PrngClass* {.importc: "br_prng_class", header: "bearssl_rand.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - init* {.importc: "init".}: proc (ctx: ptr ptr PrngClass; params: pointer; - seed: pointer; seedLen: int) {.cdecl.} - generate* {.importc: "generate".}: proc (ctx: ptr ptr PrngClass; `out`: pointer; - len: int) {.cdecl.} - update* {.importc: "update".}: proc (ctx: ptr ptr PrngClass; seed: pointer; - seedLen: int) {.cdecl.} - - -type - HmacDrbgContext* {.importc: "br_hmac_drbg_context", header: "bearssl_rand.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr PrngClass - k* {.importc: "K".}: array[64, cuchar] - v* {.importc: "V".}: array[64, cuchar] - digestClass* {.importc: "digest_class".}: ptr HashClass - - -var hmacDrbgVtable* {.importc: "br_hmac_drbg_vtable", header: "bearssl_rand.h".}: PrngClass - -proc hmacDrbgInit*(ctx: ptr HmacDrbgContext; digestClass: ptr HashClass; seed: pointer; - seedLen: int) {.cdecl, importc: "br_hmac_drbg_init", - header: "bearssl_rand.h".} - -proc hmacDrbgGenerate*(ctx: ptr HmacDrbgContext; `out`: pointer; len: int) {.cdecl, - importc: "br_hmac_drbg_generate", header: "bearssl_rand.h".} - -proc hmacDrbgUpdate*(ctx: ptr HmacDrbgContext; seed: pointer; seedLen: int) {.cdecl, - importc: "br_hmac_drbg_update", header: "bearssl_rand.h".} - -proc hmacDrbgGetHash*(ctx: ptr HmacDrbgContext): ptr HashClass {.inline.} = - return ctx.digestClass - -type - PrngSeeder* = proc (ctx: ptr ptr PrngClass): cint {.cdecl.} - -proc prngSeederSystem*(name: cstringArray): PrngSeeder {.cdecl, - importc: "br_prng_seeder_system", header: "bearssl_rand.h".} - -type - TlsPrfSeedChunk* {.importc: "br_tls_prf_seed_chunk", header: "bearssl_prf.h", - bycopy.} = object - data* {.importc: "data".}: pointer - len* {.importc: "len".}: int - - -proc tls10Prf*(dst: pointer; len: int; secret: pointer; secretLen: int; - label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl, - importc: "br_tls10_prf", header: "bearssl_prf.h".} - -proc tls12Sha256Prf*(dst: pointer; len: int; secret: pointer; secretLen: int; - label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl, - importc: "br_tls12_sha256_prf", header: "bearssl_prf.h".} - -proc tls12Sha384Prf*(dst: pointer; len: int; secret: pointer; secretLen: int; - label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl, - importc: "br_tls12_sha384_prf", header: "bearssl_prf.h".} - -type - TlsPrfImpl* = proc (dst: pointer; len: int; secret: pointer; secretLen: int; - label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl.} - -type - BlockCbcencClass* {.importc: "br_block_cbcenc_class", header: "bearssl_block.h", - bycopy.} = object - contextSize* {.importc: "context_size".}: int - blockSize* {.importc: "block_size".}: cuint - logBlockSize* {.importc: "log_block_size".}: cuint - init* {.importc: "init".}: proc (ctx: ptr ptr BlockCbcencClass; key: pointer; - keyLen: int) {.cdecl.} - run* {.importc: "run".}: proc (ctx: ptr ptr BlockCbcencClass; iv: pointer; - data: pointer; len: int) {.cdecl.} - - -type - BlockCbcdecClass* {.importc: "br_block_cbcdec_class", header: "bearssl_block.h", - bycopy.} = object - contextSize* {.importc: "context_size".}: int - blockSize* {.importc: "block_size".}: cuint - logBlockSize* {.importc: "log_block_size".}: cuint - init* {.importc: "init".}: proc (ctx: ptr ptr BlockCbcdecClass; key: pointer; - keyLen: int) {.cdecl.} - run* {.importc: "run".}: proc (ctx: ptr ptr BlockCbcdecClass; iv: pointer; - data: pointer; len: int) {.cdecl.} - - -type - BlockCtrClass* {.importc: "br_block_ctr_class", header: "bearssl_block.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - blockSize* {.importc: "block_size".}: cuint - logBlockSize* {.importc: "log_block_size".}: cuint - init* {.importc: "init".}: proc (ctx: ptr ptr BlockCtrClass; key: pointer; - keyLen: int) {.cdecl.} - run* {.importc: "run".}: proc (ctx: ptr ptr BlockCtrClass; iv: pointer; cc: uint32; - data: pointer; len: int): uint32 {.cdecl.} - - -type - BlockCtrcbcClass* {.importc: "br_block_ctrcbc_class", header: "bearssl_block.h", - bycopy.} = object - contextSize* {.importc: "context_size".}: int - blockSize* {.importc: "block_size".}: cuint - logBlockSize* {.importc: "log_block_size".}: cuint - init* {.importc: "init".}: proc (ctx: ptr ptr BlockCtrcbcClass; key: pointer; - keyLen: int) {.cdecl.} - encrypt* {.importc: "encrypt".}: proc (ctx: ptr ptr BlockCtrcbcClass; ctr: pointer; - cbcmac: pointer; data: pointer; len: int) {. - cdecl.} - decrypt* {.importc: "decrypt".}: proc (ctx: ptr ptr BlockCtrcbcClass; ctr: pointer; - cbcmac: pointer; data: pointer; len: int) {. - cdecl.} - ctr* {.importc: "ctr".}: proc (ctx: ptr ptr BlockCtrcbcClass; ctr: pointer; - data: pointer; len: int) {.cdecl.} - mac* {.importc: "mac".}: proc (ctx: ptr ptr BlockCtrcbcClass; cbcmac: pointer; - data: pointer; len: int) {.cdecl.} - - -const - aesBigBLOCK_SIZE* = 16 - -type - AesBigCbcencKeys* {.importc: "br_aes_big_cbcenc_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesBigCbcdecKeys* {.importc: "br_aes_big_cbcdec_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesBigCtrKeys* {.importc: "br_aes_big_ctr_keys", header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesBigCtrcbcKeys* {.importc: "br_aes_big_ctrcbc_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -var aesBigCbcencVtable* {.importc: "br_aes_big_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var aesBigCbcdecVtable* {.importc: "br_aes_big_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -var aesBigCtrVtable* {.importc: "br_aes_big_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass - -var aesBigCtrcbcVtable* {.importc: "br_aes_big_ctrcbc_vtable", - header: "bearssl_block.h".}: BlockCtrcbcClass - -proc aesBigCbcencInit*(ctx: ptr AesBigCbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_big_cbcenc_init", header: "bearssl_block.h".} - -proc aesBigCbcdecInit*(ctx: ptr AesBigCbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_big_cbcdec_init", header: "bearssl_block.h".} - -proc aesBigCtrInit*(ctx: ptr AesBigCtrKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_big_ctr_init", header: "bearssl_block.h".} - -proc aesBigCtrcbcInit*(ctx: ptr AesBigCtrcbcKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_big_ctrcbc_init", header: "bearssl_block.h".} - -proc aesBigCbcencRun*(ctx: ptr AesBigCbcencKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_aes_big_cbcenc_run", header: "bearssl_block.h".} - -proc aesBigCbcdecRun*(ctx: ptr AesBigCbcdecKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_aes_big_cbcdec_run", header: "bearssl_block.h".} - -proc aesBigCtrRun*(ctx: ptr AesBigCtrKeys; iv: pointer; cc: uint32; data: pointer; - len: int): uint32 {.cdecl, importc: "br_aes_big_ctr_run", - header: "bearssl_block.h".} - -proc aesBigCtrcbcEncrypt*(ctx: ptr AesBigCtrcbcKeys; ctr: pointer; cbcmac: pointer; - data: pointer; len: int) {.cdecl, - importc: "br_aes_big_ctrcbc_encrypt", header: "bearssl_block.h".} - -proc aesBigCtrcbcDecrypt*(ctx: ptr AesBigCtrcbcKeys; ctr: pointer; cbcmac: pointer; - data: pointer; len: int) {.cdecl, - importc: "br_aes_big_ctrcbc_decrypt", header: "bearssl_block.h".} - -proc aesBigCtrcbcCtr*(ctx: ptr AesBigCtrcbcKeys; ctr: pointer; data: pointer; len: int) {. - cdecl, importc: "br_aes_big_ctrcbc_ctr", header: "bearssl_block.h".} - -proc aesBigCtrcbcMac*(ctx: ptr AesBigCtrcbcKeys; cbcmac: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_big_ctrcbc_mac", - header: "bearssl_block.h".} - -const - aesSmallBLOCK_SIZE* = 16 - -type - AesSmallCbcencKeys* {.importc: "br_aes_small_cbcenc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesSmallCbcdecKeys* {.importc: "br_aes_small_cbcdec_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesSmallCtrKeys* {.importc: "br_aes_small_ctr_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesSmallCtrcbcKeys* {.importc: "br_aes_small_ctrcbc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -var aesSmallCbcencVtable* {.importc: "br_aes_small_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var aesSmallCbcdecVtable* {.importc: "br_aes_small_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -var aesSmallCtrVtable* {.importc: "br_aes_small_ctr_vtable", - header: "bearssl_block.h".}: BlockCtrClass - -var aesSmallCtrcbcVtable* {.importc: "br_aes_small_ctrcbc_vtable", - header: "bearssl_block.h".}: BlockCtrcbcClass - -proc aesSmallCbcencInit*(ctx: ptr AesSmallCbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_small_cbcenc_init", header: "bearssl_block.h".} - -proc aesSmallCbcdecInit*(ctx: ptr AesSmallCbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_small_cbcdec_init", header: "bearssl_block.h".} - -proc aesSmallCtrInit*(ctx: ptr AesSmallCtrKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_small_ctr_init", header: "bearssl_block.h".} - -proc aesSmallCtrcbcInit*(ctx: ptr AesSmallCtrcbcKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_small_ctrcbc_init", header: "bearssl_block.h".} - -proc aesSmallCbcencRun*(ctx: ptr AesSmallCbcencKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_small_cbcenc_run", - header: "bearssl_block.h".} - -proc aesSmallCbcdecRun*(ctx: ptr AesSmallCbcdecKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_small_cbcdec_run", - header: "bearssl_block.h".} - -proc aesSmallCtrRun*(ctx: ptr AesSmallCtrKeys; iv: pointer; cc: uint32; data: pointer; - len: int): uint32 {.cdecl, importc: "br_aes_small_ctr_run", - header: "bearssl_block.h".} - -proc aesSmallCtrcbcEncrypt*(ctx: ptr AesSmallCtrcbcKeys; ctr: pointer; - cbcmac: pointer; data: pointer; len: int) {.cdecl, - importc: "br_aes_small_ctrcbc_encrypt", header: "bearssl_block.h".} - -proc aesSmallCtrcbcDecrypt*(ctx: ptr AesSmallCtrcbcKeys; ctr: pointer; - cbcmac: pointer; data: pointer; len: int) {.cdecl, - importc: "br_aes_small_ctrcbc_decrypt", header: "bearssl_block.h".} - -proc aesSmallCtrcbcCtr*(ctx: ptr AesSmallCtrcbcKeys; ctr: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_small_ctrcbc_ctr", - header: "bearssl_block.h".} - -proc aesSmallCtrcbcMac*(ctx: ptr AesSmallCtrcbcKeys; cbcmac: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_small_ctrcbc_mac", - header: "bearssl_block.h".} - -const - aesCtBLOCK_SIZE* = 16 - -type - AesCtCbcencKeys* {.importc: "br_aes_ct_cbcenc_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesCtCbcdecKeys* {.importc: "br_aes_ct_cbcdec_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesCtCtrKeys* {.importc: "br_aes_ct_ctr_keys", header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesCtCtrcbcKeys* {.importc: "br_aes_ct_ctrcbc_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass - skey* {.importc: "skey".}: array[60, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -var aesCtCbcencVtable* {.importc: "br_aes_ct_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var aesCtCbcdecVtable* {.importc: "br_aes_ct_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -var aesCtCtrVtable* {.importc: "br_aes_ct_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass - -var aesCtCtrcbcVtable* {.importc: "br_aes_ct_ctrcbc_vtable", - header: "bearssl_block.h".}: BlockCtrcbcClass - -proc aesCtCbcencInit*(ctx: ptr AesCtCbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct_cbcenc_init", header: "bearssl_block.h".} - -proc aesCtCbcdecInit*(ctx: ptr AesCtCbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct_cbcdec_init", header: "bearssl_block.h".} - -proc aesCtCtrInit*(ctx: ptr AesCtCtrKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct_ctr_init", header: "bearssl_block.h".} - -proc aesCtCtrcbcInit*(ctx: ptr AesCtCtrcbcKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct_ctrcbc_init", header: "bearssl_block.h".} - -proc aesCtCbcencRun*(ctx: ptr AesCtCbcencKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_aes_ct_cbcenc_run", header: "bearssl_block.h".} - -proc aesCtCbcdecRun*(ctx: ptr AesCtCbcdecKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_aes_ct_cbcdec_run", header: "bearssl_block.h".} - -proc aesCtCtrRun*(ctx: ptr AesCtCtrKeys; iv: pointer; cc: uint32; data: pointer; - len: int): uint32 {.cdecl, importc: "br_aes_ct_ctr_run", - header: "bearssl_block.h".} - -proc aesCtCtrcbcEncrypt*(ctx: ptr AesCtCtrcbcKeys; ctr: pointer; cbcmac: pointer; - data: pointer; len: int) {.cdecl, - importc: "br_aes_ct_ctrcbc_encrypt", header: "bearssl_block.h".} - -proc aesCtCtrcbcDecrypt*(ctx: ptr AesCtCtrcbcKeys; ctr: pointer; cbcmac: pointer; - data: pointer; len: int) {.cdecl, - importc: "br_aes_ct_ctrcbc_decrypt", header: "bearssl_block.h".} - -proc aesCtCtrcbcCtr*(ctx: ptr AesCtCtrcbcKeys; ctr: pointer; data: pointer; len: int) {. - cdecl, importc: "br_aes_ct_ctrcbc_ctr", header: "bearssl_block.h".} - -proc aesCtCtrcbcMac*(ctx: ptr AesCtCtrcbcKeys; cbcmac: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_ct_ctrcbc_mac", - header: "bearssl_block.h".} - -const - aesCt64BLOCK_SIZE* = 16 - -type - AesCt64CbcencKeys* {.importc: "br_aes_ct64_cbcenc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: array[30, uint64] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesCt64CbcdecKeys* {.importc: "br_aes_ct64_cbcdec_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: array[30, uint64] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesCt64CtrKeys* {.importc: "br_aes_ct64_ctr_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrClass - skey* {.importc: "skey".}: array[30, uint64] - numRounds* {.importc: "num_rounds".}: cuint - - -type - AesCt64CtrcbcKeys* {.importc: "br_aes_ct64_ctrcbc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass - skey* {.importc: "skey".}: array[30, uint64] - numRounds* {.importc: "num_rounds".}: cuint - - -var aesCt64CbcencVtable* {.importc: "br_aes_ct64_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var aesCt64CbcdecVtable* {.importc: "br_aes_ct64_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -var aesCt64CtrVtable* {.importc: "br_aes_ct64_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass - -var aesCt64CtrcbcVtable* {.importc: "br_aes_ct64_ctrcbc_vtable", - header: "bearssl_block.h".}: BlockCtrcbcClass - -proc aesCt64CbcencInit*(ctx: ptr AesCt64CbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct64_cbcenc_init", header: "bearssl_block.h".} - -proc aesCt64CbcdecInit*(ctx: ptr AesCt64CbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct64_cbcdec_init", header: "bearssl_block.h".} - -proc aesCt64CtrInit*(ctx: ptr AesCt64CtrKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct64_ctr_init", header: "bearssl_block.h".} - -proc aesCt64CtrcbcInit*(ctx: ptr AesCt64CtrcbcKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_ct64_ctrcbc_init", header: "bearssl_block.h".} - -proc aesCt64CbcencRun*(ctx: ptr AesCt64CbcencKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_ct64_cbcenc_run", - header: "bearssl_block.h".} - -proc aesCt64CbcdecRun*(ctx: ptr AesCt64CbcdecKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_ct64_cbcdec_run", - header: "bearssl_block.h".} - -proc aesCt64CtrRun*(ctx: ptr AesCt64CtrKeys; iv: pointer; cc: uint32; data: pointer; - len: int): uint32 {.cdecl, importc: "br_aes_ct64_ctr_run", - header: "bearssl_block.h".} - -proc aesCt64CtrcbcEncrypt*(ctx: ptr AesCt64CtrcbcKeys; ctr: pointer; cbcmac: pointer; - data: pointer; len: int) {.cdecl, - importc: "br_aes_ct64_ctrcbc_encrypt", header: "bearssl_block.h".} - -proc aesCt64CtrcbcDecrypt*(ctx: ptr AesCt64CtrcbcKeys; ctr: pointer; cbcmac: pointer; - data: pointer; len: int) {.cdecl, - importc: "br_aes_ct64_ctrcbc_decrypt", header: "bearssl_block.h".} - -proc aesCt64CtrcbcCtr*(ctx: ptr AesCt64CtrcbcKeys; ctr: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_ct64_ctrcbc_ctr", - header: "bearssl_block.h".} - -proc aesCt64CtrcbcMac*(ctx: ptr AesCt64CtrcbcKeys; cbcmac: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_ct64_ctrcbc_mac", - header: "bearssl_block.h".} - -const - aesX86niBLOCK_SIZE* = 16 - -type - INNER_C_UNION_1159666335* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesX86niCbcencKeys* {.importc: "br_aes_x86ni_cbcenc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: INNER_C_UNION_1159666335 - numRounds* {.importc: "num_rounds".}: cuint - - -type - INNER_C_UNION_3830826214* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesX86niCbcdecKeys* {.importc: "br_aes_x86ni_cbcdec_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: INNER_C_UNION_3830826214 - numRounds* {.importc: "num_rounds".}: cuint - - -type - INNER_C_UNION_1063979105* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesX86niCtrKeys* {.importc: "br_aes_x86ni_ctr_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrClass - skey* {.importc: "skey".}: INNER_C_UNION_1063979105 - numRounds* {.importc: "num_rounds".}: cuint - - -type - INNER_C_UNION_220758887* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesX86niCtrcbcKeys* {.importc: "br_aes_x86ni_ctrcbc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass - skey* {.importc: "skey".}: INNER_C_UNION_220758887 - numRounds* {.importc: "num_rounds".}: cuint - - -var aesX86niCbcencVtable* {.importc: "br_aes_x86ni_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var aesX86niCbcdecVtable* {.importc: "br_aes_x86ni_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -var aesX86niCtrVtable* {.importc: "br_aes_x86ni_ctr_vtable", - header: "bearssl_block.h".}: BlockCtrClass - -var aesX86niCtrcbcVtable* {.importc: "br_aes_x86ni_ctrcbc_vtable", - header: "bearssl_block.h".}: BlockCtrcbcClass - -proc aesX86niCbcencInit*(ctx: ptr AesX86niCbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_x86ni_cbcenc_init", header: "bearssl_block.h".} - -proc aesX86niCbcdecInit*(ctx: ptr AesX86niCbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_x86ni_cbcdec_init", header: "bearssl_block.h".} - -proc aesX86niCtrInit*(ctx: ptr AesX86niCtrKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_x86ni_ctr_init", header: "bearssl_block.h".} - -proc aesX86niCtrcbcInit*(ctx: ptr AesX86niCtrcbcKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_x86ni_ctrcbc_init", header: "bearssl_block.h".} - -proc aesX86niCbcencRun*(ctx: ptr AesX86niCbcencKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_x86ni_cbcenc_run", - header: "bearssl_block.h".} - -proc aesX86niCbcdecRun*(ctx: ptr AesX86niCbcdecKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_x86ni_cbcdec_run", - header: "bearssl_block.h".} - -proc aesX86niCtrRun*(ctx: ptr AesX86niCtrKeys; iv: pointer; cc: uint32; data: pointer; - len: int): uint32 {.cdecl, importc: "br_aes_x86ni_ctr_run", - header: "bearssl_block.h".} - -proc aesX86niCtrcbcEncrypt*(ctx: ptr AesX86niCtrcbcKeys; ctr: pointer; - cbcmac: pointer; data: pointer; len: int) {.cdecl, - importc: "br_aes_x86ni_ctrcbc_encrypt", header: "bearssl_block.h".} - -proc aesX86niCtrcbcDecrypt*(ctx: ptr AesX86niCtrcbcKeys; ctr: pointer; - cbcmac: pointer; data: pointer; len: int) {.cdecl, - importc: "br_aes_x86ni_ctrcbc_decrypt", header: "bearssl_block.h".} - -proc aesX86niCtrcbcCtr*(ctx: ptr AesX86niCtrcbcKeys; ctr: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_x86ni_ctrcbc_ctr", - header: "bearssl_block.h".} - -proc aesX86niCtrcbcMac*(ctx: ptr AesX86niCtrcbcKeys; cbcmac: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_x86ni_ctrcbc_mac", - header: "bearssl_block.h".} - -proc aesX86niCbcencGetVtable*(): ptr BlockCbcencClass {.cdecl, - importc: "br_aes_x86ni_cbcenc_get_vtable", header: "bearssl_block.h".} - -proc aesX86niCbcdecGetVtable*(): ptr BlockCbcdecClass {.cdecl, - importc: "br_aes_x86ni_cbcdec_get_vtable", header: "bearssl_block.h".} - -proc aesX86niCtrGetVtable*(): ptr BlockCtrClass {.cdecl, - importc: "br_aes_x86ni_ctr_get_vtable", header: "bearssl_block.h".} - -proc aesX86niCtrcbcGetVtable*(): ptr BlockCtrcbcClass {.cdecl, - importc: "br_aes_x86ni_ctrcbc_get_vtable", header: "bearssl_block.h".} - -const - aesPwr8BLOCK_SIZE* = 16 - -type - INNER_C_UNION_2338321047* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesPwr8CbcencKeys* {.importc: "br_aes_pwr8_cbcenc_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: INNER_C_UNION_2338321047 - numRounds* {.importc: "num_rounds".}: cuint - - -type - INNER_C_UNION_714513630* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesPwr8CbcdecKeys* {.importc: "br_aes_pwr8_cbcdec_keys", - header: "bearssl_block.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: INNER_C_UNION_714513630 - numRounds* {.importc: "num_rounds".}: cuint - - -type - INNER_C_UNION_4166260708* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. - union.} - skni* {.importc: "skni".}: array[16 * 15, cuchar] - - AesPwr8CtrKeys* {.importc: "br_aes_pwr8_ctr_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCtrClass - skey* {.importc: "skey".}: INNER_C_UNION_4166260708 - numRounds* {.importc: "num_rounds".}: cuint - - -var aesPwr8CbcencVtable* {.importc: "br_aes_pwr8_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var aesPwr8CbcdecVtable* {.importc: "br_aes_pwr8_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -var aesPwr8CtrVtable* {.importc: "br_aes_pwr8_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass - -proc aesPwr8CbcencInit*(ctx: ptr AesPwr8CbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_pwr8_cbcenc_init", header: "bearssl_block.h".} - -proc aesPwr8CbcdecInit*(ctx: ptr AesPwr8CbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_pwr8_cbcdec_init", header: "bearssl_block.h".} - -proc aesPwr8CtrInit*(ctx: ptr AesPwr8CtrKeys; key: pointer; len: int) {.cdecl, - importc: "br_aes_pwr8_ctr_init", header: "bearssl_block.h".} - -proc aesPwr8CbcencRun*(ctx: ptr AesPwr8CbcencKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_pwr8_cbcenc_run", - header: "bearssl_block.h".} - -proc aesPwr8CbcdecRun*(ctx: ptr AesPwr8CbcdecKeys; iv: pointer; data: pointer; - len: int) {.cdecl, importc: "br_aes_pwr8_cbcdec_run", - header: "bearssl_block.h".} - -proc aesPwr8CtrRun*(ctx: ptr AesPwr8CtrKeys; iv: pointer; cc: uint32; data: pointer; - len: int): uint32 {.cdecl, importc: "br_aes_pwr8_ctr_run", - header: "bearssl_block.h".} - -proc aesPwr8CbcencGetVtable*(): ptr BlockCbcencClass {.cdecl, - importc: "br_aes_pwr8_cbcenc_get_vtable", header: "bearssl_block.h".} - -proc aesPwr8CbcdecGetVtable*(): ptr BlockCbcdecClass {.cdecl, - importc: "br_aes_pwr8_cbcdec_get_vtable", header: "bearssl_block.h".} - -proc aesPwr8CtrGetVtable*(): ptr BlockCtrClass {.cdecl, - importc: "br_aes_pwr8_ctr_get_vtable", header: "bearssl_block.h".} - -type - AesGenCbcencKeys* {.importc: "br_aes_gen_cbcenc_keys", header: "bearssl_block.h", - bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - cBig* {.importc: "c_big".}: AesBigCbcencKeys - cSmall* {.importc: "c_small".}: AesSmallCbcencKeys - cCt* {.importc: "c_ct".}: AesCtCbcencKeys - cCt64* {.importc: "c_ct64".}: AesCt64CbcencKeys - cX86ni* {.importc: "c_x86ni".}: AesX86niCbcencKeys - cPwr8* {.importc: "c_pwr8".}: AesPwr8CbcencKeys - - -type - AesGenCbcdecKeys* {.importc: "br_aes_gen_cbcdec_keys", header: "bearssl_block.h", - bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - cBig* {.importc: "c_big".}: AesBigCbcdecKeys - cSmall* {.importc: "c_small".}: AesSmallCbcdecKeys - cCt* {.importc: "c_ct".}: AesCtCbcdecKeys - cCt64* {.importc: "c_ct64".}: AesCt64CbcdecKeys - cX86ni* {.importc: "c_x86ni".}: AesX86niCbcdecKeys - cPwr8* {.importc: "c_pwr8".}: AesPwr8CbcdecKeys - - -type - AesGenCtrKeys* {.importc: "br_aes_gen_ctr_keys", header: "bearssl_block.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr BlockCtrClass - cBig* {.importc: "c_big".}: AesBigCtrKeys - cSmall* {.importc: "c_small".}: AesSmallCtrKeys - cCt* {.importc: "c_ct".}: AesCtCtrKeys - cCt64* {.importc: "c_ct64".}: AesCt64CtrKeys - cX86ni* {.importc: "c_x86ni".}: AesX86niCtrKeys - cPwr8* {.importc: "c_pwr8".}: AesPwr8CtrKeys - - -type - AesGenCtrcbcKeys* {.importc: "br_aes_gen_ctrcbc_keys", header: "bearssl_block.h", - bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass - cBig* {.importc: "c_big".}: AesBigCtrcbcKeys - cSmall* {.importc: "c_small".}: AesSmallCtrcbcKeys - cCt* {.importc: "c_ct".}: AesCtCtrcbcKeys - cCt64* {.importc: "c_ct64".}: AesCt64CtrcbcKeys - - -const - desTabBLOCK_SIZE* = 8 - -type - DesTabCbcencKeys* {.importc: "br_des_tab_cbcenc_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: array[96, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - DesTabCbcdecKeys* {.importc: "br_des_tab_cbcdec_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: array[96, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -var desTabCbcencVtable* {.importc: "br_des_tab_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var desTabCbcdecVtable* {.importc: "br_des_tab_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -proc desTabCbcencInit*(ctx: ptr DesTabCbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_des_tab_cbcenc_init", header: "bearssl_block.h".} - -proc desTabCbcdecInit*(ctx: ptr DesTabCbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_des_tab_cbcdec_init", header: "bearssl_block.h".} - -proc desTabCbcencRun*(ctx: ptr DesTabCbcencKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_des_tab_cbcenc_run", header: "bearssl_block.h".} - -proc desTabCbcdecRun*(ctx: ptr DesTabCbcdecKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_des_tab_cbcdec_run", header: "bearssl_block.h".} - -const - desCtBLOCK_SIZE* = 8 - -type - DesCtCbcencKeys* {.importc: "br_des_ct_cbcenc_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - skey* {.importc: "skey".}: array[96, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -type - DesCtCbcdecKeys* {.importc: "br_des_ct_cbcdec_keys", header: "bearssl_block.h", - bycopy.} = object - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - skey* {.importc: "skey".}: array[96, uint32] - numRounds* {.importc: "num_rounds".}: cuint - - -var desCtCbcencVtable* {.importc: "br_des_ct_cbcenc_vtable", - header: "bearssl_block.h".}: BlockCbcencClass - -var desCtCbcdecVtable* {.importc: "br_des_ct_cbcdec_vtable", - header: "bearssl_block.h".}: BlockCbcdecClass - -proc desCtCbcencInit*(ctx: ptr DesCtCbcencKeys; key: pointer; len: int) {.cdecl, - importc: "br_des_ct_cbcenc_init", header: "bearssl_block.h".} - -proc desCtCbcdecInit*(ctx: ptr DesCtCbcdecKeys; key: pointer; len: int) {.cdecl, - importc: "br_des_ct_cbcdec_init", header: "bearssl_block.h".} - -proc desCtCbcencRun*(ctx: ptr DesCtCbcencKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_des_ct_cbcenc_run", header: "bearssl_block.h".} - -proc desCtCbcdecRun*(ctx: ptr DesCtCbcdecKeys; iv: pointer; data: pointer; len: int) {. - cdecl, importc: "br_des_ct_cbcdec_run", header: "bearssl_block.h".} - -type - DesGenCbcencKeys* {.importc: "br_des_gen_cbcenc_keys", header: "bearssl_block.h", - bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - tab* {.importc: "tab".}: DesTabCbcencKeys - ct* {.importc: "ct".}: DesCtCbcencKeys - - -type - DesGenCbcdecKeys* {.importc: "br_des_gen_cbcdec_keys", header: "bearssl_block.h", - bycopy.} = object {.union.} - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - cTab* {.importc: "c_tab".}: DesTabCbcdecKeys - cCt* {.importc: "c_ct".}: DesCtCbcdecKeys - - -type - Chacha20Run* = proc (key: pointer; iv: pointer; cc: uint32; data: pointer; len: int): uint32 {. - cdecl.} - -proc chacha20CtRun*(key: pointer; iv: pointer; cc: uint32; data: pointer; len: int): uint32 {. - cdecl, importc: "br_chacha20_ct_run", header: "bearssl_block.h".} - -proc chacha20Sse2Run*(key: pointer; iv: pointer; cc: uint32; data: pointer; len: int): uint32 {. - cdecl, importc: "br_chacha20_sse2_run", header: "bearssl_block.h".} - -proc chacha20Sse2Get*(): Chacha20Run {.cdecl, importc: "br_chacha20_sse2_get", - header: "bearssl_block.h".} - -type - Poly1305Run* = proc (key: pointer; iv: pointer; data: pointer; len: int; aad: pointer; - aadLen: int; tag: pointer; ichacha: Chacha20Run; encrypt: cint) {. - cdecl.} - -proc poly1305CtmulRun*(key: pointer; iv: pointer; data: pointer; len: int; - aad: pointer; aadLen: int; tag: pointer; ichacha: Chacha20Run; - encrypt: cint) {.cdecl, importc: "br_poly1305_ctmul_run", - header: "bearssl_block.h".} - -proc poly1305Ctmul32Run*(key: pointer; iv: pointer; data: pointer; len: int; - aad: pointer; aadLen: int; tag: pointer; - ichacha: Chacha20Run; encrypt: cint) {.cdecl, - importc: "br_poly1305_ctmul32_run", header: "bearssl_block.h".} - -proc poly1305I15Run*(key: pointer; iv: pointer; data: pointer; len: int; aad: pointer; - aadLen: int; tag: pointer; ichacha: Chacha20Run; encrypt: cint) {. - cdecl, importc: "br_poly1305_i15_run", header: "bearssl_block.h".} - -proc poly1305CtmulqRun*(key: pointer; iv: pointer; data: pointer; len: int; - aad: pointer; aadLen: int; tag: pointer; - ichacha: Chacha20Run; encrypt: cint) {.cdecl, - importc: "br_poly1305_ctmulq_run", header: "bearssl_block.h".} - -proc poly1305CtmulqGet*(): Poly1305Run {.cdecl, importc: "br_poly1305_ctmulq_get", - header: "bearssl_block.h".} - -type - AeadClass* {.importc: "br_aead_class", header: "bearssl_aead.h", bycopy.} = object - tagSize* {.importc: "tag_size".}: int - reset* {.importc: "reset".}: proc (cc: ptr ptr AeadClass; iv: pointer; len: int) {. - cdecl.} - aadInject* {.importc: "aad_inject".}: proc (cc: ptr ptr AeadClass; data: pointer; - len: int) {.cdecl.} - flip* {.importc: "flip".}: proc (cc: ptr ptr AeadClass) {.cdecl.} - run* {.importc: "run".}: proc (cc: ptr ptr AeadClass; encrypt: cint; data: pointer; - len: int) {.cdecl.} - getTag* {.importc: "get_tag".}: proc (cc: ptr ptr AeadClass; tag: pointer) {.cdecl.} - checkTag* {.importc: "check_tag".}: proc (cc: ptr ptr AeadClass; tag: pointer): uint32 {. - cdecl.} - getTagTrunc* {.importc: "get_tag_trunc".}: proc (cc: ptr ptr AeadClass; - tag: pointer; len: int) {.cdecl.} - checkTagTrunc* {.importc: "check_tag_trunc".}: proc (cc: ptr ptr AeadClass; - tag: pointer; len: int): uint32 {.cdecl.} - - -type - GcmContext* {.importc: "br_gcm_context", header: "bearssl_aead.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr AeadClass - bctx* {.importc: "bctx".}: ptr ptr BlockCtrClass - gh* {.importc: "gh".}: Ghash - h* {.importc: "h".}: array[16, cuchar] - j01* {.importc: "j0_1".}: array[12, cuchar] - buf* {.importc: "buf".}: array[16, cuchar] - y* {.importc: "y".}: array[16, cuchar] - j02* {.importc: "j0_2".}: uint32 - jc* {.importc: "jc".}: uint32 - countAad* {.importc: "count_aad".}: uint64 - countCtr* {.importc: "count_ctr".}: uint64 - - -proc gcmInit*(ctx: ptr GcmContext; bctx: ptr ptr BlockCtrClass; gh: Ghash) {.cdecl, - importc: "br_gcm_init", header: "bearssl_aead.h".} - -proc gcmReset*(ctx: ptr GcmContext; iv: pointer; len: int) {.cdecl, - importc: "br_gcm_reset", header: "bearssl_aead.h".} - -proc gcmAadInject*(ctx: ptr GcmContext; data: pointer; len: int) {.cdecl, - importc: "br_gcm_aad_inject", header: "bearssl_aead.h".} - -proc gcmFlip*(ctx: ptr GcmContext) {.cdecl, importc: "br_gcm_flip", - header: "bearssl_aead.h".} - -proc gcmRun*(ctx: ptr GcmContext; encrypt: cint; data: pointer; len: int) {.cdecl, - importc: "br_gcm_run", header: "bearssl_aead.h".} - -proc gcmGetTag*(ctx: ptr GcmContext; tag: pointer) {.cdecl, importc: "br_gcm_get_tag", - header: "bearssl_aead.h".} - -proc gcmCheckTag*(ctx: ptr GcmContext; tag: pointer): uint32 {.cdecl, - importc: "br_gcm_check_tag", header: "bearssl_aead.h".} - -proc gcmGetTagTrunc*(ctx: ptr GcmContext; tag: pointer; len: int) {.cdecl, - importc: "br_gcm_get_tag_trunc", header: "bearssl_aead.h".} - -proc gcmCheckTagTrunc*(ctx: ptr GcmContext; tag: pointer; len: int): uint32 {.cdecl, - importc: "br_gcm_check_tag_trunc", header: "bearssl_aead.h".} - -var gcmVtable* {.importc: "br_gcm_vtable", header: "bearssl_aead.h".}: AeadClass - -type - EaxContext* {.importc: "br_eax_context", header: "bearssl_aead.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr AeadClass - bctx* {.importc: "bctx".}: ptr ptr BlockCtrcbcClass - l2* {.importc: "L2".}: array[16, cuchar] - l4* {.importc: "L4".}: array[16, cuchar] - nonce* {.importc: "nonce".}: array[16, cuchar] - head* {.importc: "head".}: array[16, cuchar] - ctr* {.importc: "ctr".}: array[16, cuchar] - cbcmac* {.importc: "cbcmac".}: array[16, cuchar] - buf* {.importc: "buf".}: array[16, cuchar] - `ptr`* {.importc: "ptr".}: int - - -type - EaxState* {.importc: "br_eax_state", header: "bearssl_aead.h", bycopy.} = object - st* {.importc: "st".}: array[3, array[16, cuchar]] - - -proc eaxInit*(ctx: ptr EaxContext; bctx: ptr ptr BlockCtrcbcClass) {.cdecl, - importc: "br_eax_init", header: "bearssl_aead.h".} - -proc eaxCapture*(ctx: ptr EaxContext; st: ptr EaxState) {.cdecl, - importc: "br_eax_capture", header: "bearssl_aead.h".} - -proc eaxReset*(ctx: ptr EaxContext; nonce: pointer; len: int) {.cdecl, - importc: "br_eax_reset", header: "bearssl_aead.h".} - -proc eaxResetPreAad*(ctx: ptr EaxContext; st: ptr EaxState; nonce: pointer; len: int) {. - cdecl, importc: "br_eax_reset_pre_aad", header: "bearssl_aead.h".} - -proc eaxResetPostAad*(ctx: ptr EaxContext; st: ptr EaxState; nonce: pointer; len: int) {. - cdecl, importc: "br_eax_reset_post_aad", header: "bearssl_aead.h".} - -proc eaxAadInject*(ctx: ptr EaxContext; data: pointer; len: int) {.cdecl, - importc: "br_eax_aad_inject", header: "bearssl_aead.h".} - -proc eaxFlip*(ctx: ptr EaxContext) {.cdecl, importc: "br_eax_flip", - header: "bearssl_aead.h".} - -proc eaxGetAadMac*(ctx: ptr EaxContext; st: ptr EaxState) {.inline.} = - copyMem(unsafeAddr st.st[1], unsafeAddr ctx.head, sizeof(ctx.head)) - -proc eaxRun*(ctx: ptr EaxContext; encrypt: cint; data: pointer; len: int) {.cdecl, - importc: "br_eax_run", header: "bearssl_aead.h".} - -proc eaxGetTag*(ctx: ptr EaxContext; tag: pointer) {.cdecl, importc: "br_eax_get_tag", - header: "bearssl_aead.h".} - -proc eaxCheckTag*(ctx: ptr EaxContext; tag: pointer): uint32 {.cdecl, - importc: "br_eax_check_tag", header: "bearssl_aead.h".} - -proc eaxGetTagTrunc*(ctx: ptr EaxContext; tag: pointer; len: int) {.cdecl, - importc: "br_eax_get_tag_trunc", header: "bearssl_aead.h".} - -proc eaxCheckTagTrunc*(ctx: ptr EaxContext; tag: pointer; len: int): uint32 {.cdecl, - importc: "br_eax_check_tag_trunc", header: "bearssl_aead.h".} - -var eaxVtable* {.importc: "br_eax_vtable", header: "bearssl_aead.h".}: AeadClass - -type - CcmContext* {.importc: "br_ccm_context", header: "bearssl_aead.h", bycopy.} = object - bctx* {.importc: "bctx".}: ptr ptr BlockCtrcbcClass - ctr* {.importc: "ctr".}: array[16, cuchar] - cbcmac* {.importc: "cbcmac".}: array[16, cuchar] - tagmask* {.importc: "tagmask".}: array[16, cuchar] - buf* {.importc: "buf".}: array[16, cuchar] - `ptr`* {.importc: "ptr".}: int - tagLen* {.importc: "tag_len".}: int - - -proc ccmInit*(ctx: ptr CcmContext; bctx: ptr ptr BlockCtrcbcClass) {.cdecl, - importc: "br_ccm_init", header: "bearssl_aead.h".} - -proc ccmReset*(ctx: ptr CcmContext; nonce: pointer; nonceLen: int; aadLen: uint64; - dataLen: uint64; tagLen: int): cint {.cdecl, importc: "br_ccm_reset", - header: "bearssl_aead.h".} - -proc ccmAadInject*(ctx: ptr CcmContext; data: pointer; len: int) {.cdecl, - importc: "br_ccm_aad_inject", header: "bearssl_aead.h".} - -proc ccmFlip*(ctx: ptr CcmContext) {.cdecl, importc: "br_ccm_flip", - header: "bearssl_aead.h".} - -proc ccmRun*(ctx: ptr CcmContext; encrypt: cint; data: pointer; len: int) {.cdecl, - importc: "br_ccm_run", header: "bearssl_aead.h".} - -proc ccmGetTag*(ctx: ptr CcmContext; tag: pointer): int {.cdecl, - importc: "br_ccm_get_tag", header: "bearssl_aead.h".} - -proc ccmCheckTag*(ctx: ptr CcmContext; tag: pointer): uint32 {.cdecl, - importc: "br_ccm_check_tag", header: "bearssl_aead.h".} - -type - RsaPublicKey* {.importc: "br_rsa_public_key", header: "bearssl_rsa.h", bycopy.} = object - n* {.importc: "n".}: ptr cuchar - nlen* {.importc: "nlen".}: int - e* {.importc: "e".}: ptr cuchar - elen* {.importc: "elen".}: int - - -type - RsaPrivateKey* {.importc: "br_rsa_private_key", header: "bearssl_rsa.h", bycopy.} = object - nBitlen* {.importc: "n_bitlen".}: uint32 - p* {.importc: "p".}: ptr cuchar - plen* {.importc: "plen".}: int - q* {.importc: "q".}: ptr cuchar - qlen* {.importc: "qlen".}: int - dp* {.importc: "dp".}: ptr cuchar - dplen* {.importc: "dplen".}: int - dq* {.importc: "dq".}: ptr cuchar - dqlen* {.importc: "dqlen".}: int - iq* {.importc: "iq".}: ptr cuchar - iqlen* {.importc: "iqlen".}: int - - -type - RsaPublic* = proc (x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl.} - -type - RsaPkcs1Vrfy* = proc (x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; - pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl.} - -type - RsaPrivate* = proc (x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl.} - -type - RsaPkcs1Sign* = proc (hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; - sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl.} - -const - HASH_OID_SHA1* = (("\x05+\x0E\x03\x02\x1A")) - -const - HASH_OID_SHA224* = (("\t`\x86H\x01e\x03\x04\x02\x04")) - -const - HASH_OID_SHA256* = (("\t`\x86H\x01e\x03\x04\x02\x01")) - -const - HASH_OID_SHA384* = (("\t`\x86H\x01e\x03\x04\x02\x02")) - -const - HASH_OID_SHA512* = (("\t`\x86H\x01e\x03\x04\x02\x03")) - -proc rsaI32Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, - importc: "br_rsa_i32_public", header: "bearssl_rsa.h".} - -proc rsaI32Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; - pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i32_pkcs1_vrfy", header: "bearssl_rsa.h".} - -proc rsaI32Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, - importc: "br_rsa_i32_private", header: "bearssl_rsa.h".} - -proc rsaI32Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; - sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i32_pkcs1_sign", header: "bearssl_rsa.h".} - -proc rsaI31Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, - importc: "br_rsa_i31_public", header: "bearssl_rsa.h".} - -proc rsaI31Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; - pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i31_pkcs1_vrfy", header: "bearssl_rsa.h".} - -proc rsaI31Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, - importc: "br_rsa_i31_private", header: "bearssl_rsa.h".} - -proc rsaI31Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; - sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i31_pkcs1_sign", header: "bearssl_rsa.h".} - -proc rsaI62Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, - importc: "br_rsa_i62_public", header: "bearssl_rsa.h".} - -proc rsaI62Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; - pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i62_pkcs1_vrfy", header: "bearssl_rsa.h".} - -proc rsaI62Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, - importc: "br_rsa_i62_private", header: "bearssl_rsa.h".} - -proc rsaI62Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; - sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i62_pkcs1_sign", header: "bearssl_rsa.h".} - -proc rsaI62PublicGet*(): RsaPublic {.cdecl, importc: "br_rsa_i62_public_get", - header: "bearssl_rsa.h".} - -proc rsaI62Pkcs1VrfyGet*(): RsaPkcs1Vrfy {.cdecl, - importc: "br_rsa_i62_pkcs1_vrfy_get", - header: "bearssl_rsa.h".} - -proc rsaI62PrivateGet*(): RsaPrivate {.cdecl, importc: "br_rsa_i62_private_get", - header: "bearssl_rsa.h".} - -proc rsaI62Pkcs1SignGet*(): RsaPkcs1Sign {.cdecl, - importc: "br_rsa_i62_pkcs1_sign_get", - header: "bearssl_rsa.h".} - -proc rsaI15Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, - importc: "br_rsa_i15_public", header: "bearssl_rsa.h".} - -proc rsaI15Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; - pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i15_pkcs1_vrfy", header: "bearssl_rsa.h".} - -proc rsaI15Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, - importc: "br_rsa_i15_private", header: "bearssl_rsa.h".} - -proc rsaI15Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; - sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, - importc: "br_rsa_i15_pkcs1_sign", header: "bearssl_rsa.h".} - -proc rsaPublicGetDefault*(): RsaPublic {.cdecl, - importc: "br_rsa_public_get_default", - header: "bearssl_rsa.h".} - -proc rsaPrivateGetDefault*(): RsaPrivate {.cdecl, - importc: "br_rsa_private_get_default", - header: "bearssl_rsa.h".} - -proc rsaPkcs1VrfyGetDefault*(): RsaPkcs1Vrfy {.cdecl, - importc: "br_rsa_pkcs1_vrfy_get_default", header: "bearssl_rsa.h".} - -proc rsaPkcs1SignGetDefault*(): RsaPkcs1Sign {.cdecl, - importc: "br_rsa_pkcs1_sign_get_default", header: "bearssl_rsa.h".} - -proc rsaSslDecrypt*(core: RsaPrivate; sk: ptr RsaPrivateKey; data: ptr cuchar; len: int): uint32 {. - cdecl, importc: "br_rsa_ssl_decrypt", header: "bearssl_rsa.h".} - -const - EC_sect163k1* = 1 - -const - EC_sect163r1* = 2 - -const - EC_sect163r2* = 3 - -const - EC_sect193r1* = 4 - -const - EC_sect193r2* = 5 - -const - EC_sect233k1* = 6 - -const - EC_sect233r1* = 7 - -const - EC_sect239k1* = 8 - -const - EC_sect283k1* = 9 - -const - EC_sect283r1* = 10 - -const - EC_sect409k1* = 11 - -const - EC_sect409r1* = 12 - -const - EC_sect571k1* = 13 - -const - EC_sect571r1* = 14 - -const - EC_secp160k1* = 15 - -const - EC_secp160r1* = 16 - -const - EC_secp160r2* = 17 - -const - EC_secp192k1* = 18 - -const - EC_secp192r1* = 19 - -const - EC_secp224k1* = 20 - -const - EC_secp224r1* = 21 - -const - EC_secp256k1* = 22 - -const - EC_secp256r1* = 23 - -const - EC_secp384r1* = 24 - -const - EC_secp521r1* = 25 - -const - EC_brainpoolP256r1* = 26 - -const - EC_brainpoolP384r1* = 27 - -const - EC_brainpoolP512r1* = 28 - -const - EC_curve25519* = 29 - -const - EC_curve448* = 30 - -type - EcPublicKey* {.importc: "br_ec_public_key", header: "bearssl_ec.h", bycopy.} = object - curve* {.importc: "curve".}: cint - q* {.importc: "q".}: ptr cuchar - qlen* {.importc: "qlen".}: int - - -type - EcPrivateKey* {.importc: "br_ec_private_key", header: "bearssl_ec.h", bycopy.} = object - curve* {.importc: "curve".}: cint - x* {.importc: "x".}: ptr cuchar - xlen* {.importc: "xlen".}: int - - -type - EcImpl* {.importc: "br_ec_impl", header: "bearssl_ec.h", bycopy.} = object - supportedCurves* {.importc: "supported_curves".}: uint32 - generator* {.importc: "generator".}: proc (curve: cint; len: ptr int): ptr cuchar {. - cdecl.} - order* {.importc: "order".}: proc (curve: cint; len: ptr int): ptr cuchar {.cdecl.} - xoff* {.importc: "xoff".}: proc (curve: cint; len: ptr int): int {.cdecl.} - mul* {.importc: "mul".}: proc (g: ptr cuchar; glen: int; x: ptr cuchar; xlen: int; - curve: cint): uint32 {.cdecl.} - mulgen* {.importc: "mulgen".}: proc (r: ptr cuchar; x: ptr cuchar; xlen: int; - curve: cint): int {.cdecl.} - muladd* {.importc: "muladd".}: proc (a: ptr cuchar; b: ptr cuchar; len: int; - x: ptr cuchar; xlen: int; y: ptr cuchar; - ylen: int; curve: cint): uint32 {.cdecl.} - - -var ecPrimeI31* {.importc: "br_ec_prime_i31", header: "bearssl_ec.h".}: EcImpl - -var ecPrimeI15* {.importc: "br_ec_prime_i15", header: "bearssl_ec.h".}: EcImpl - -var ecP256M15* {.importc: "br_ec_p256_m15", header: "bearssl_ec.h".}: EcImpl - -var ecP256M31* {.importc: "br_ec_p256_m31", header: "bearssl_ec.h".}: EcImpl - -var ecC25519I15* {.importc: "br_ec_c25519_i15", header: "bearssl_ec.h".}: EcImpl - -var ecC25519I31* {.importc: "br_ec_c25519_i31", header: "bearssl_ec.h".}: EcImpl - -var ecC25519M15* {.importc: "br_ec_c25519_m15", header: "bearssl_ec.h".}: EcImpl - -var ecC25519M31* {.importc: "br_ec_c25519_m31", header: "bearssl_ec.h".}: EcImpl - -var ecAllM15* {.importc: "br_ec_all_m15", header: "bearssl_ec.h".}: EcImpl - -var ecAllM31* {.importc: "br_ec_all_m31", header: "bearssl_ec.h".}: EcImpl - -proc ecGetDefault*(): ptr EcImpl {.cdecl, importc: "br_ec_get_default", - header: "bearssl_ec.h".} - -proc ecdsaRawToAsn1*(sig: pointer; sigLen: int): int {.cdecl, - importc: "br_ecdsa_raw_to_asn1", header: "bearssl_ec.h".} - -proc ecdsaAsn1ToRaw*(sig: pointer; sigLen: int): int {.cdecl, - importc: "br_ecdsa_asn1_to_raw", header: "bearssl_ec.h".} - -type - EcdsaSign* = proc (impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; - sk: ptr EcPrivateKey; sig: pointer): int {.cdecl.} - -type - EcdsaVrfy* = proc (impl: ptr EcImpl; hash: pointer; hashLen: int; pk: ptr EcPublicKey; - sig: pointer; sigLen: int): uint32 {.cdecl.} - -proc ecdsaI31SignAsn1*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; - sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, - importc: "br_ecdsa_i31_sign_asn1", header: "bearssl_ec.h".} - -proc ecdsaI31SignRaw*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; - sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, - importc: "br_ecdsa_i31_sign_raw", header: "bearssl_ec.h".} - -proc ecdsaI31VrfyAsn1*(impl: ptr EcImpl; hash: pointer; hashLen: int; - pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {. - cdecl, importc: "br_ecdsa_i31_vrfy_asn1", header: "bearssl_ec.h".} - -proc ecdsaI31VrfyRaw*(impl: ptr EcImpl; hash: pointer; hashLen: int; - pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {.cdecl, - importc: "br_ecdsa_i31_vrfy_raw", header: "bearssl_ec.h".} - -proc ecdsaI15SignAsn1*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; - sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, - importc: "br_ecdsa_i15_sign_asn1", header: "bearssl_ec.h".} - -proc ecdsaI15SignRaw*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; - sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, - importc: "br_ecdsa_i15_sign_raw", header: "bearssl_ec.h".} - -proc ecdsaI15VrfyAsn1*(impl: ptr EcImpl; hash: pointer; hashLen: int; - pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {. - cdecl, importc: "br_ecdsa_i15_vrfy_asn1", header: "bearssl_ec.h".} - -proc ecdsaI15VrfyRaw*(impl: ptr EcImpl; hash: pointer; hashLen: int; - pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {.cdecl, - importc: "br_ecdsa_i15_vrfy_raw", header: "bearssl_ec.h".} - -proc ecdsaSignAsn1GetDefault*(): EcdsaSign {.cdecl, - importc: "br_ecdsa_sign_asn1_get_default", header: "bearssl_ec.h".} - -proc ecdsaSignRawGetDefault*(): EcdsaSign {.cdecl, - importc: "br_ecdsa_sign_raw_get_default", header: "bearssl_ec.h".} - -proc ecdsaVrfyAsn1GetDefault*(): EcdsaVrfy {.cdecl, - importc: "br_ecdsa_vrfy_asn1_get_default", header: "bearssl_ec.h".} - -proc ecdsaVrfyRawGetDefault*(): EcdsaVrfy {.cdecl, - importc: "br_ecdsa_vrfy_raw_get_default", header: "bearssl_ec.h".} - -const - ERR_X509_OK* = 32 - -const - ERR_X509_INVALID_VALUE* = 33 - -const - ERR_X509_TRUNCATED* = 34 - -const - ERR_X509_EMPTY_CHAIN* = 35 - -const - ERR_X509_INNER_TRUNC* = 36 - -const - ERR_X509_BAD_TAG_CLASS* = 37 - -const - ERR_X509_BAD_TAG_VALUE* = 38 - -const - ERR_X509_INDEFINITE_LENGTH* = 39 - -const - ERR_X509_EXTRA_ELEMENT* = 40 - -const - ERR_X509_UNEXPECTED* = 41 - -const - ERR_X509_NOT_CONSTRUCTED* = 42 - -const - ERR_X509_NOT_PRIMITIVE* = 43 - -const - ERR_X509_PARTIAL_BYTE* = 44 - -const - ERR_X509_BAD_BOOLEAN* = 45 - -const - ERR_X509_OVERFLOW* = 46 - -const - ERR_X509_BAD_DN* = 47 - -const - ERR_X509_BAD_TIME* = 48 - -const - ERR_X509_UNSUPPORTED* = 49 - -const - ERR_X509_LIMIT_EXCEEDED* = 50 - -const - ERR_X509_WRONG_KEY_TYPE* = 51 - -const - ERR_X509_BAD_SIGNATURE* = 52 - -const - ERR_X509_TIME_UNKNOWN* = 53 - -const - ERR_X509_EXPIRED* = 54 - -const - ERR_X509_DN_MISMATCH* = 55 - -const - ERR_X509_BAD_SERVER_NAME* = 56 - -const - ERR_X509_CRITICAL_EXTENSION* = 57 - -const - ERR_X509_NOT_CA* = 58 - -const - ERR_X509_FORBIDDEN_KEY_USAGE* = 59 - -const - ERR_X509_WEAK_PUBLIC_KEY* = 60 - -const - ERR_X509_NOT_TRUSTED* = 62 - -type - INNER_C_UNION_2211491720* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object {. - union.} - rsa* {.importc: "rsa".}: RsaPublicKey - ec* {.importc: "ec".}: EcPublicKey - - X509Pkey* {.importc: "br_x509_pkey", header: "bearssl_x509.h", bycopy.} = object - keyType* {.importc: "key_type".}: cuchar - key* {.importc: "key".}: INNER_C_UNION_2211491720 - - -type - X500Name* {.importc: "br_x500_name", header: "bearssl_x509.h", bycopy.} = object - data* {.importc: "data".}: ptr cuchar - len* {.importc: "len".}: int - - -type - X509TrustAnchor* {.importc: "br_x509_trust_anchor", header: "bearssl_x509.h", - bycopy.} = object - dn* {.importc: "dn".}: X500Name - flags* {.importc: "flags".}: cuint - pkey* {.importc: "pkey".}: X509Pkey - - -const - X509_TA_CA* = 0x00000001 - -const - KEYTYPE_RSA* = 1 - -const - KEYTYPE_EC* = 2 - -const - KEYTYPE_KEYX* = 0x00000010 - -const - KEYTYPE_SIGN* = 0x00000020 - -type - X509Class* {.importc: "br_x509_class", header: "bearssl_x509.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - startChain* {.importc: "start_chain".}: proc (ctx: ptr ptr X509Class; - serverName: cstring) {.cdecl.} - startCert* {.importc: "start_cert".}: proc (ctx: ptr ptr X509Class; length: uint32) {. - cdecl.} - append* {.importc: "append".}: proc (ctx: ptr ptr X509Class; buf: ptr cuchar; - len: int) {.cdecl.} - endCert* {.importc: "end_cert".}: proc (ctx: ptr ptr X509Class) {.cdecl.} - endChain* {.importc: "end_chain".}: proc (ctx: ptr ptr X509Class): cuint {.cdecl.} - getPkey* {.importc: "get_pkey".}: proc (ctx: ptr ptr X509Class; usages: ptr cuint): ptr X509Pkey {. - cdecl.} - - -type - X509KnownkeyContext* {.importc: "br_x509_knownkey_context", - header: "bearssl_x509.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr X509Class - pkey* {.importc: "pkey".}: X509Pkey - usages* {.importc: "usages".}: cuint - - -var x509KnownkeyVtable* {.importc: "br_x509_knownkey_vtable", - header: "bearssl_x509.h".}: X509Class - -proc x509KnownkeyInitRsa*(ctx: ptr X509KnownkeyContext; pk: ptr RsaPublicKey; - usages: cuint) {.cdecl, - importc: "br_x509_knownkey_init_rsa", - header: "bearssl_x509.h".} - -proc x509KnownkeyInitEc*(ctx: ptr X509KnownkeyContext; pk: ptr EcPublicKey; - usages: cuint) {.cdecl, - importc: "br_x509_knownkey_init_ec", - header: "bearssl_x509.h".} - -const - X509_BUFSIZE_KEY* = 520 - X509_BUFSIZE_SIG* = 512 - -type - NameElement* {.importc: "br_name_element", header: "bearssl_x509.h", bycopy.} = object - oid* {.importc: "oid".}: ptr cuchar - buf* {.importc: "buf".}: cstring - len* {.importc: "len".}: int - status* {.importc: "status".}: cint - - -type - INNER_C_STRUCT_573696436* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object - dp* {.importc: "dp".}: ptr uint32 - rp* {.importc: "rp".}: ptr uint32 - ip* {.importc: "ip".}: ptr cuchar - - X509MinimalContext* {.importc: "br_x509_minimal_context", - header: "bearssl_x509.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr X509Class - pkey* {.importc: "pkey".}: X509Pkey - cpu* {.importc: "cpu".}: INNER_C_STRUCT_573696436 - dpStack* {.importc: "dp_stack".}: array[32, uint32] - rpStack* {.importc: "rp_stack".}: array[32, uint32] - err* {.importc: "err".}: cint - serverName* {.importc: "server_name".}: cstring - keyUsages* {.importc: "key_usages".}: cuchar - days* {.importc: "days".}: uint32 - seconds* {.importc: "seconds".}: uint32 - certLength* {.importc: "cert_length".}: uint32 - numCerts* {.importc: "num_certs".}: uint32 - hbuf* {.importc: "hbuf".}: ptr cuchar - hlen* {.importc: "hlen".}: int - pad* {.importc: "pad".}: array[256, cuchar] - eePkeyData* {.importc: "ee_pkey_data".}: array[X509_BUFSIZE_KEY, cuchar] - pkeyData* {.importc: "pkey_data".}: array[X509_BUFSIZE_KEY, cuchar] - certSignerKeyType* {.importc: "cert_signer_key_type".}: cuchar - certSigHashOid* {.importc: "cert_sig_hash_oid".}: uint16 - certSigHashLen* {.importc: "cert_sig_hash_len".}: cuchar - certSig* {.importc: "cert_sig".}: array[X509_BUFSIZE_SIG, cuchar] - certSigLen* {.importc: "cert_sig_len".}: uint16 - minRsaSize* {.importc: "min_rsa_size".}: int16 - trustAnchors* {.importc: "trust_anchors".}: ptr X509TrustAnchor - trustAnchorsNum* {.importc: "trust_anchors_num".}: int - doMhash* {.importc: "do_mhash".}: cuchar - mhash* {.importc: "mhash".}: MultihashContext - tbsHash* {.importc: "tbs_hash".}: array[64, cuchar] - doDnHash* {.importc: "do_dn_hash".}: cuchar - dnHashImpl* {.importc: "dn_hash_impl".}: ptr HashClass - dnHash* {.importc: "dn_hash".}: HashCompatContext - currentDnHash* {.importc: "current_dn_hash".}: array[64, cuchar] - nextDnHash* {.importc: "next_dn_hash".}: array[64, cuchar] - savedDnHash* {.importc: "saved_dn_hash".}: array[64, cuchar] - nameElts* {.importc: "name_elts".}: ptr NameElement - numNameElts* {.importc: "num_name_elts".}: int - irsa* {.importc: "irsa".}: RsaPkcs1Vrfy - iecdsa* {.importc: "iecdsa".}: EcdsaVrfy - iec* {.importc: "iec".}: ptr EcImpl - - -var x509MinimalVtable* {.importc: "br_x509_minimal_vtable", header: "bearssl_x509.h".}: X509Class - -proc x509MinimalInit*(ctx: ptr X509MinimalContext; dnHashImpl: ptr HashClass; - trustAnchors: ptr X509TrustAnchor; trustAnchorsNum: int) {. - cdecl, importc: "br_x509_minimal_init", header: "bearssl_x509.h".} - -proc x509MinimalSetHash*(ctx: ptr X509MinimalContext; id: cint; impl: ptr HashClass) {. - inline.} = - multihashSetimpl(addr(ctx.mhash), id, impl) - -proc x509MinimalSetRsa*(ctx: ptr X509MinimalContext; irsa: RsaPkcs1Vrfy) {.inline, - cdecl.} = - ctx.irsa = irsa - -proc x509MinimalSetEcdsa*(ctx: ptr X509MinimalContext; iec: ptr EcImpl; - iecdsa: EcdsaVrfy) {.inline.} = - ctx.iecdsa = iecdsa - ctx.iec = iec - -proc x509MinimalInitFull*(ctx: ptr X509MinimalContext; - trustAnchors: ptr X509TrustAnchor; trustAnchorsNum: int) {. - cdecl, importc: "br_x509_minimal_init_full", header: "bearssl_x509.h".} - -proc x509MinimalSetTime*(ctx: ptr X509MinimalContext; days: uint32; seconds: uint32) {. - inline.} = - ctx.days = days - ctx.seconds = seconds - -proc x509MinimalSetMinrsa*(ctx: ptr X509MinimalContext; byteLength: cint) {.inline, - cdecl.} = - ctx.minRsaSize = (int16)(byteLength - 128) - -proc x509MinimalSetNameElements*(ctx: ptr X509MinimalContext; elts: ptr NameElement; - numElts: int) {.inline.} = - ctx.nameElts = elts - ctx.numNameElts = numElts - -type - INNER_C_STRUCT_161597942* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object - dp* {.importc: "dp".}: ptr uint32 - rp* {.importc: "rp".}: ptr uint32 - ip* {.importc: "ip".}: ptr cuchar - - X509DecoderContext* {.importc: "br_x509_decoder_context", - header: "bearssl_x509.h", bycopy.} = object - pkey* {.importc: "pkey".}: X509Pkey - cpu* {.importc: "cpu".}: INNER_C_STRUCT_161597942 - dpStack* {.importc: "dp_stack".}: array[32, uint32] - rpStack* {.importc: "rp_stack".}: array[32, uint32] - err* {.importc: "err".}: cint - pad* {.importc: "pad".}: array[256, cuchar] - decoded* {.importc: "decoded".}: bool - notbeforeDays* {.importc: "notbefore_days".}: uint32 - notbeforeSeconds* {.importc: "notbefore_seconds".}: uint32 - notafterDays* {.importc: "notafter_days".}: uint32 - notafterSeconds* {.importc: "notafter_seconds".}: uint32 - isCA* {.importc: "isCA".}: bool - copyDn* {.importc: "copy_dn".}: cuchar - appendDnCtx* {.importc: "append_dn_ctx".}: pointer - appendDn* {.importc: "append_dn".}: proc (ctx: pointer; buf: pointer; len: int) {. - cdecl.} - hbuf* {.importc: "hbuf".}: ptr cuchar - hlen* {.importc: "hlen".}: int - pkeyData* {.importc: "pkey_data".}: array[X509_BUFSIZE_KEY, cuchar] - signerKeyType* {.importc: "signer_key_type".}: cuchar - signerHashId* {.importc: "signer_hash_id".}: cuchar - - -proc x509DecoderInit*(ctx: ptr X509DecoderContext; appendDn: proc (ctx: pointer; - buf: pointer; len: int) {.cdecl.}; appendDnCtx: pointer) {.cdecl, - importc: "br_x509_decoder_init", header: "bearssl_x509.h".} - -proc x509DecoderPush*(ctx: ptr X509DecoderContext; data: pointer; len: int) {.cdecl, - importc: "br_x509_decoder_push", header: "bearssl_x509.h".} - -proc x509DecoderGetPkey*(ctx: ptr X509DecoderContext): ptr X509Pkey {.inline.} = - if ctx.decoded and ctx.err == 0: - return addr(ctx.pkey) - else: - return nil - -proc x509DecoderLastError*(ctx: ptr X509DecoderContext): cint {.inline.} = - if ctx.err != 0: - return ctx.err - if not ctx.decoded: - return ERR_X509_TRUNCATED - return 0 - -proc x509DecoderIsCA*(ctx: ptr X509DecoderContext): cint {.inline.} = - return cint ctx.isCA - -proc x509DecoderGetSignerKeyType*(ctx: ptr X509DecoderContext): cint {.inline.} = - return cint ctx.signerKeyType - -proc x509DecoderGetSignerHashId*(ctx: ptr X509DecoderContext): cint {.inline.} = - return cint ctx.signerHashId - -type - X509Certificate* {.importc: "br_x509_certificate", header: "bearssl_x509.h", bycopy.} = object - data* {.importc: "data".}: ptr cuchar - dataLen* {.importc: "data_len".}: int - - -type - INNER_C_UNION_3754611343* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object {. - union.} - rsa* {.importc: "rsa".}: RsaPrivateKey - ec* {.importc: "ec".}: EcPrivateKey - - INNER_C_STRUCT_3633027466* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object - dp* {.importc: "dp".}: ptr uint32 - rp* {.importc: "rp".}: ptr uint32 - ip* {.importc: "ip".}: ptr cuchar - - SkeyDecoderContext* {.importc: "br_skey_decoder_context", - header: "bearssl_x509.h", bycopy.} = object - key* {.importc: "key".}: INNER_C_UNION_3754611343 - cpu* {.importc: "cpu".}: INNER_C_STRUCT_3633027466 - dpStack* {.importc: "dp_stack".}: array[32, uint32] - rpStack* {.importc: "rp_stack".}: array[32, uint32] - err* {.importc: "err".}: cint - hbuf* {.importc: "hbuf".}: ptr cuchar - hlen* {.importc: "hlen".}: int - pad* {.importc: "pad".}: array[256, cuchar] - keyType* {.importc: "key_type".}: cuchar - keyData* {.importc: "key_data".}: array[3 * X509_BUFSIZE_SIG, cuchar] - - -proc skeyDecoderInit*(ctx: ptr SkeyDecoderContext) {.cdecl, - importc: "br_skey_decoder_init", header: "bearssl_x509.h".} - -proc skeyDecoderPush*(ctx: ptr SkeyDecoderContext; data: pointer; len: int) {.cdecl, - importc: "br_skey_decoder_push", header: "bearssl_x509.h".} - -proc skeyDecoderLastError*(ctx: ptr SkeyDecoderContext): cint {.inline.} = - if ctx.err != 0: - return ctx.err - if ctx.keyType == '\0': - return ERR_X509_TRUNCATED - return 0 - -proc skeyDecoderKeyType*(ctx: ptr SkeyDecoderContext): cint {.inline.} = - if ctx.err == 0: - return cint ctx.keyType - else: - return 0 - -const - SSL_BUFSIZE_INPUT* = (16384 + 325) - -const - SSL_BUFSIZE_OUTPUT* = (16384 + 85) - -const - SSL_BUFSIZE_MONO* = SSL_BUFSIZE_INPUT - -const - SSL_BUFSIZE_BIDI* = (SSL_BUFSIZE_INPUT + SSL_BUFSIZE_OUTPUT) - -const - SSL30* = 0x00000300 - -const - TLS10* = 0x00000301 - -const - TLS11* = 0x00000302 - -const - TLS12* = 0x00000303 - -const - ERR_OK* = 0 - -const - ERR_BAD_PARAM* = 1 - -const - ERR_BAD_STATE* = 2 - -const - ERR_UNSUPPORTED_VERSION* = 3 - -const - ERR_BAD_VERSION* = 4 - -const - ERR_BAD_LENGTH* = 5 - -const - ERR_TOO_LARGE* = 6 - -const - ERR_BAD_MAC* = 7 - -const - ERR_NO_RANDOM* = 8 - -const - ERR_UNKNOWN_TYPE* = 9 - -const - ERR_UNEXPECTED* = 10 - -const - ERR_BAD_CCS* = 12 - -const - ERR_BAD_ALERT* = 13 - -const - ERR_BAD_HANDSHAKE* = 14 - -const - ERR_OVERSIZED_ID* = 15 - -const - ERR_BAD_CIPHER_SUITE* = 16 - -const - ERR_BAD_COMPRESSION* = 17 - -const - ERR_BAD_FRAGLEN* = 18 - -const - ERR_BAD_SECRENEG* = 19 - -const - ERR_EXTRA_EXTENSION* = 20 - -const - ERR_BAD_SNI* = 21 - -const - ERR_BAD_HELLO_DONE* = 22 - -const - ERR_LIMIT_EXCEEDED* = 23 - -const - ERR_BAD_FINISHED* = 24 - -const - ERR_RESUME_MISMATCH* = 25 - -const - ERR_INVALID_ALGORITHM* = 26 - -const - ERR_BAD_SIGNATURE* = 27 - -const - ERR_WRONG_KEY_USAGE* = 28 - -const - ERR_NO_CLIENT_AUTH* = 29 - -const - ERR_IO* = 31 - -const - ERR_RECV_FATAL_ALERT* = 256 - -const - ERR_SEND_FATAL_ALERT* = 512 - -type - SslrecInClass* {.importc: "br_sslrec_in_class", header: "bearssl_ssl.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - checkLength* {.importc: "check_length".}: proc (ctx: ptr ptr SslrecInClass; - recordLen: int): cint {.cdecl.} - decrypt* {.importc: "decrypt".}: proc (ctx: ptr ptr SslrecInClass; recordType: cint; - version: cuint; payload: pointer; - len: ptr int): ptr cuchar {.cdecl.} - - -type - SslrecOutClass* {.importc: "br_sslrec_out_class", header: "bearssl_ssl.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - maxPlaintext* {.importc: "max_plaintext".}: proc (ctx: ptr ptr SslrecOutClass; - start: ptr int; `end`: ptr int) {.cdecl.} - encrypt* {.importc: "encrypt".}: proc (ctx: ptr ptr SslrecOutClass; - recordType: cint; version: cuint; - plaintext: pointer; len: ptr int): ptr cuchar {. - cdecl.} - - -type - SslrecOutClearContext* {.importc: "br_sslrec_out_clear_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslrecOutClass - - -var sslrecOutClearVtable* {.importc: "br_sslrec_out_clear_vtable", - header: "bearssl_ssl.h".}: SslrecOutClass - -type - SslrecInCbcClass* {.importc: "br_sslrec_in_cbc_class", header: "bearssl_ssl.h", - bycopy.} = object - inner* {.importc: "inner".}: SslrecInClass - init* {.importc: "init".}: proc (ctx: ptr ptr SslrecInCbcClass; - bcImpl: ptr BlockCbcdecClass; bcKey: pointer; - bcKeyLen: int; digImpl: ptr HashClass; - macKey: pointer; macKeyLen: int; - macOutLen: int; iv: pointer) {.cdecl.} - - -type - SslrecOutCbcClass* {.importc: "br_sslrec_out_cbc_class", - header: "bearssl_ssl.h", bycopy.} = object - inner* {.importc: "inner".}: SslrecOutClass - init* {.importc: "init".}: proc (ctx: ptr ptr SslrecOutCbcClass; - bcImpl: ptr BlockCbcencClass; bcKey: pointer; - bcKeyLen: int; digImpl: ptr HashClass; - macKey: pointer; macKeyLen: int; - macOutLen: int; iv: pointer) {.cdecl.} - - -type - INNER_C_UNION_2105460304* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr BlockCbcdecClass - aes* {.importc: "aes".}: AesGenCbcdecKeys - des* {.importc: "des".}: DesGenCbcdecKeys - - SslrecInCbcContext* {.importc: "br_sslrec_in_cbc_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslrecInCbcClass - seq* {.importc: "seq".}: uint64 - bc* {.importc: "bc".}: INNER_C_UNION_2105460304 - mac* {.importc: "mac".}: HmacKeyContext - macLen* {.importc: "mac_len".}: int - iv* {.importc: "iv".}: array[16, cuchar] - explicitIV* {.importc: "explicit_IV".}: cint - - -var sslrecInCbcVtable* {.importc: "br_sslrec_in_cbc_vtable", header: "bearssl_ssl.h".}: SslrecInCbcClass - -type - INNER_C_UNION_3724465237* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr BlockCbcencClass - aes* {.importc: "aes".}: AesGenCbcencKeys - des* {.importc: "des".}: DesGenCbcencKeys - - SslrecOutCbcContext* {.importc: "br_sslrec_out_cbc_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslrecOutCbcClass - seq* {.importc: "seq".}: uint64 - bc* {.importc: "bc".}: INNER_C_UNION_3724465237 - mac* {.importc: "mac".}: HmacKeyContext - macLen* {.importc: "mac_len".}: int - iv* {.importc: "iv".}: array[16, cuchar] - explicitIV* {.importc: "explicit_IV".}: cint - - -var sslrecOutCbcVtable* {.importc: "br_sslrec_out_cbc_vtable", - header: "bearssl_ssl.h".}: SslrecOutCbcClass - -type - SslrecInGcmClass* {.importc: "br_sslrec_in_gcm_class", header: "bearssl_ssl.h", - bycopy.} = object - inner* {.importc: "inner".}: SslrecInClass - init* {.importc: "init".}: proc (ctx: ptr ptr SslrecInGcmClass; - bcImpl: ptr BlockCtrClass; key: pointer; - keyLen: int; ghImpl: Ghash; iv: pointer) {.cdecl.} - - -type - SslrecOutGcmClass* {.importc: "br_sslrec_out_gcm_class", - header: "bearssl_ssl.h", bycopy.} = object - inner* {.importc: "inner".}: SslrecOutClass - init* {.importc: "init".}: proc (ctx: ptr ptr SslrecOutGcmClass; - bcImpl: ptr BlockCtrClass; key: pointer; - keyLen: int; ghImpl: Ghash; iv: pointer) {.cdecl.} - - -type - INNER_C_UNION_536016210* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - gen* {.importc: "gen".}: pointer - `in`* {.importc: "in".}: ptr SslrecInGcmClass - `out`* {.importc: "out".}: ptr SslrecOutGcmClass - - INNER_C_UNION_1283557389* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr BlockCtrClass - aes* {.importc: "aes".}: AesGenCtrKeys - - SslrecGcmContext* {.importc: "br_sslrec_gcm_context", header: "bearssl_ssl.h", - bycopy.} = object - vtable* {.importc: "vtable".}: INNER_C_UNION_536016210 - seq* {.importc: "seq".}: uint64 - bc* {.importc: "bc".}: INNER_C_UNION_1283557389 - gh* {.importc: "gh".}: Ghash - iv* {.importc: "iv".}: array[4, cuchar] - h* {.importc: "h".}: array[16, cuchar] - - -var sslrecInGcmVtable* {.importc: "br_sslrec_in_gcm_vtable", header: "bearssl_ssl.h".}: SslrecInGcmClass - -var sslrecOutGcmVtable* {.importc: "br_sslrec_out_gcm_vtable", - header: "bearssl_ssl.h".}: SslrecOutGcmClass - -type - SslrecInChapolClass* {.importc: "br_sslrec_in_chapol_class", - header: "bearssl_ssl.h", bycopy.} = object - inner* {.importc: "inner".}: SslrecInClass - init* {.importc: "init".}: proc (ctx: ptr ptr SslrecInChapolClass; - ichacha: Chacha20Run; ipoly: Poly1305Run; - key: pointer; iv: pointer) {.cdecl.} - - -type - SslrecOutChapolClass* {.importc: "br_sslrec_out_chapol_class", - header: "bearssl_ssl.h", bycopy.} = object - inner* {.importc: "inner".}: SslrecOutClass - init* {.importc: "init".}: proc (ctx: ptr ptr SslrecOutChapolClass; - ichacha: Chacha20Run; ipoly: Poly1305Run; - key: pointer; iv: pointer) {.cdecl.} - - -type - INNER_C_UNION_1683842004* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - gen* {.importc: "gen".}: pointer - `in`* {.importc: "in".}: ptr SslrecInChapolClass - `out`* {.importc: "out".}: ptr SslrecOutChapolClass - - SslrecChapolContext* {.importc: "br_sslrec_chapol_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: INNER_C_UNION_1683842004 - seq* {.importc: "seq".}: uint64 - key* {.importc: "key".}: array[32, cuchar] - iv* {.importc: "iv".}: array[12, cuchar] - ichacha* {.importc: "ichacha".}: Chacha20Run - ipoly* {.importc: "ipoly".}: Poly1305Run - - -var sslrecInChapolVtable* {.importc: "br_sslrec_in_chapol_vtable", - header: "bearssl_ssl.h".}: SslrecInChapolClass - -var sslrecOutChapolVtable* {.importc: "br_sslrec_out_chapol_vtable", - header: "bearssl_ssl.h".}: SslrecOutChapolClass - -type - SslSessionParameters* {.importc: "br_ssl_session_parameters", - header: "bearssl_ssl.h", bycopy.} = object - sessionId* {.importc: "session_id".}: array[32, cuchar] - sessionIdLen* {.importc: "session_id_len".}: byte - version* {.importc: "version".}: uint16 - cipherSuite* {.importc: "cipher_suite".}: uint16 - masterSecret* {.importc: "master_secret".}: array[48, cuchar] - - -const - MAX_CIPHER_SUITES* = 40 - -type - INNER_C_UNION_861939089* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr SslrecInClass - cbc* {.importc: "cbc".}: SslrecInCbcContext - gcm* {.importc: "gcm".}: SslrecGcmContext - chapol* {.importc: "chapol".}: SslrecChapolContext - - INNER_C_UNION_1609480268* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr SslrecOutClass - clear* {.importc: "clear".}: SslrecOutClearContext - cbc* {.importc: "cbc".}: SslrecOutCbcContext - gcm* {.importc: "gcm".}: SslrecGcmContext - chapol* {.importc: "chapol".}: SslrecChapolContext - - INNER_C_STRUCT_671658464* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object - dp* {.importc: "dp".}: ptr uint32 - rp* {.importc: "rp".}: ptr uint32 - ip* {.importc: "ip".}: ptr cuchar - - SslEngineContext* {.importc: "br_ssl_engine_context", header: "bearssl_ssl.h", - bycopy.} = object - err* {.importc: "err".}: cint - ibuf* {.importc: "ibuf".}: ptr cuchar - obuf* {.importc: "obuf".}: ptr cuchar - ibufLen* {.importc: "ibuf_len".}: int - obufLen* {.importc: "obuf_len".}: int - maxFragLen* {.importc: "max_frag_len".}: uint16 - logMaxFragLen* {.importc: "log_max_frag_len".}: cuchar - peerLogMaxFragLen* {.importc: "peer_log_max_frag_len".}: cuchar - ixa* {.importc: "ixa".}: int - ixb* {.importc: "ixb".}: int - ixc* {.importc: "ixc".}: int - oxa* {.importc: "oxa".}: int - oxb* {.importc: "oxb".}: int - oxc* {.importc: "oxc".}: int - iomode* {.importc: "iomode".}: cuchar - incrypt* {.importc: "incrypt".}: cuchar - shutdownRecv* {.importc: "shutdown_recv".}: cuchar - recordTypeIn* {.importc: "record_type_in".}: cuchar - recordTypeOut* {.importc: "record_type_out".}: cuchar - versionIn* {.importc: "version_in".}: uint16 - versionOut* {.importc: "version_out".}: uint16 - `in`* {.importc: "in".}: INNER_C_UNION_861939089 - `out`* {.importc: "out".}: INNER_C_UNION_1609480268 - applicationData* {.importc: "application_data".}: cuchar - rng* {.importc: "rng".}: HmacDrbgContext - rngInitDone* {.importc: "rng_init_done".}: cint - rngOsRandDone* {.importc: "rng_os_rand_done".}: cint - versionMin* {.importc: "version_min".}: uint16 - versionMax* {.importc: "version_max".}: uint16 - suitesBuf* {.importc: "suites_buf".}: array[MAX_CIPHER_SUITES, uint16] - suitesNum* {.importc: "suites_num".}: cuchar - serverName* {.importc: "server_name".}: array[256, char] - clientRandom* {.importc: "client_random".}: array[32, cuchar] - serverRandom* {.importc: "server_random".}: array[32, cuchar] - session* {.importc: "session".}: SslSessionParameters - ecdheCurve* {.importc: "ecdhe_curve".}: cuchar - ecdhePoint* {.importc: "ecdhe_point".}: array[133, cuchar] - ecdhePointLen* {.importc: "ecdhe_point_len".}: cuchar - reneg* {.importc: "reneg".}: cuchar - savedFinished* {.importc: "saved_finished".}: array[24, cuchar] - flags* {.importc: "flags".}: uint32 - cpu* {.importc: "cpu".}: INNER_C_STRUCT_671658464 - dpStack* {.importc: "dp_stack".}: array[32, uint32] - rpStack* {.importc: "rp_stack".}: array[32, uint32] - pad* {.importc: "pad".}: array[512, cuchar] - hbufIn* {.importc: "hbuf_in".}: ptr cuchar - hbufOut* {.importc: "hbuf_out".}: ptr cuchar - savedHbufOut* {.importc: "saved_hbuf_out".}: ptr cuchar - hlenIn* {.importc: "hlen_in".}: int - hlenOut* {.importc: "hlen_out".}: int - hsrun* {.importc: "hsrun".}: proc (ctx: pointer) {.cdecl.} - action* {.importc: "action".}: cuchar - alert* {.importc: "alert".}: cuchar - closeReceived* {.importc: "close_received".}: cuchar - mhash* {.importc: "mhash".}: MultihashContext - x509ctx* {.importc: "x509ctx".}: ptr ptr X509Class - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - certCur* {.importc: "cert_cur".}: ptr cuchar - certLen* {.importc: "cert_len".}: int - protocolNames* {.importc: "protocol_names".}: cstringArray - protocolNamesNum* {.importc: "protocol_names_num".}: uint16 - selectedProtocol* {.importc: "selected_protocol".}: uint16 - prf10* {.importc: "prf10".}: TlsPrfImpl - prfSha256* {.importc: "prf_sha256".}: TlsPrfImpl - prfSha384* {.importc: "prf_sha384".}: TlsPrfImpl - iaesCbcenc* {.importc: "iaes_cbcenc".}: ptr BlockCbcencClass - iaesCbcdec* {.importc: "iaes_cbcdec".}: ptr BlockCbcdecClass - iaesCtr* {.importc: "iaes_ctr".}: ptr BlockCtrClass - idesCbcenc* {.importc: "ides_cbcenc".}: ptr BlockCbcencClass - idesCbcdec* {.importc: "ides_cbcdec".}: ptr BlockCbcdecClass - ighash* {.importc: "ighash".}: Ghash - ichacha* {.importc: "ichacha".}: Chacha20Run - ipoly* {.importc: "ipoly".}: Poly1305Run - icbcIn* {.importc: "icbc_in".}: ptr SslrecInCbcClass - icbcOut* {.importc: "icbc_out".}: ptr SslrecOutCbcClass - igcmIn* {.importc: "igcm_in".}: ptr SslrecInGcmClass - igcmOut* {.importc: "igcm_out".}: ptr SslrecOutGcmClass - ichapolIn* {.importc: "ichapol_in".}: ptr SslrecInChapolClass - ichapolOut* {.importc: "ichapol_out".}: ptr SslrecOutChapolClass - iec* {.importc: "iec".}: ptr EcImpl - irsavrfy* {.importc: "irsavrfy".}: RsaPkcs1Vrfy - iecdsa* {.importc: "iecdsa".}: EcdsaVrfy - - -proc sslEngineGetFlags*(cc: ptr SslEngineContext): uint32 {.inline.} = - return cc.flags - -proc sslEngineSetAllFlags*(cc: ptr SslEngineContext; flags: uint32) {.inline.} = - cc.flags = flags - -proc sslEngineAddFlags*(cc: ptr SslEngineContext; flags: uint32) {.inline.} = - cc.flags = cc.flags or flags - -proc sslEngineRemoveFlags*(cc: ptr SslEngineContext; flags: uint32) {.inline.} = - cc.flags = cc.flags and not flags - -const - OPT_ENFORCE_SERVER_PREFERENCES* = (1'u32 shl 0) - -const - OPT_NO_RENEGOTIATION* = (1'u32 shl 1) - -const - OPT_TOLERATE_NO_CLIENT_AUTH* = (1'u32 shl 2) - -const - OPT_FAIL_ON_ALPN_MISMATCH* = (1'u32 shl 3) - -proc sslEngineSetVersions*(cc: ptr SslEngineContext; versionMin: uint16; - versionMax: uint16) {.inline.} = - cc.versionMin = versionMin - cc.versionMax = versionMax - -proc sslEngineSetSuites*(cc: ptr SslEngineContext; suites: ptr uint16; - suitesNum: int) {.cdecl, - importc: "br_ssl_engine_set_suites", header: "bearssl_ssl.h".} - -proc sslEngineSetX509*(cc: ptr SslEngineContext; x509ctx: ptr ptr X509Class) {.inline, - cdecl.} = - cc.x509ctx = x509ctx - -proc sslEngineSetProtocolNames*(ctx: ptr SslEngineContext; names: cstringArray; - num: int) {.inline.} = - ctx.protocolNames = names - ctx.protocolNamesNum = uint16 num - -proc sslEngineGetSelectedProtocol*(ctx: ptr SslEngineContext): cstring {.inline.} = - var k: cuint - k = ctx.selectedProtocol - return if (k == 0 or k == 0x0000FFFF): nil else: ctx.protocolNames[k - 1] - -proc sslEngineSetHash*(ctx: ptr SslEngineContext; id: cint; impl: ptr HashClass) {. - inline.} = - multihashSetimpl(addr(ctx.mhash), id, impl) - -proc sslEngineGetHash*(ctx: ptr SslEngineContext; id: cint): ptr HashClass {.inline, - cdecl.} = - return multihashGetimpl(addr(ctx.mhash), id) - -proc sslEngineSetPrf10*(cc: ptr SslEngineContext; impl: TlsPrfImpl) {.inline.} = - cc.prf10 = impl - -proc sslEngineSetPrfSha256*(cc: ptr SslEngineContext; impl: TlsPrfImpl) {.inline.} = - cc.prfSha256 = impl - -proc sslEngineSetPrfSha384*(cc: ptr SslEngineContext; impl: TlsPrfImpl) {.inline.} = - cc.prfSha384 = impl - -proc sslEngineSetAesCbc*(cc: ptr SslEngineContext; implEnc: ptr BlockCbcencClass; - implDec: ptr BlockCbcdecClass) {.inline.} = - cc.iaesCbcenc = implEnc - cc.iaesCbcdec = implDec - -proc sslEngineSetDefaultAesCbc*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_aes_cbc", header: "bearssl_ssl.h".} - -proc sslEngineSetAesCtr*(cc: ptr SslEngineContext; impl: ptr BlockCtrClass) {.inline, - cdecl.} = - cc.iaesCtr = impl - -proc sslEngineSetDefaultAesGcm*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_aes_gcm", header: "bearssl_ssl.h".} - -proc sslEngineSetDesCbc*(cc: ptr SslEngineContext; implEnc: ptr BlockCbcencClass; - implDec: ptr BlockCbcdecClass) {.inline.} = - cc.idesCbcenc = implEnc - cc.idesCbcdec = implDec - -proc sslEngineSetDefaultDesCbc*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_des_cbc", header: "bearssl_ssl.h".} - -proc sslEngineSetGhash*(cc: ptr SslEngineContext; impl: Ghash) {.inline.} = - cc.ighash = impl - -proc sslEngineSetChacha20*(cc: ptr SslEngineContext; ichacha: Chacha20Run) {.inline, - cdecl.} = - cc.ichacha = ichacha - -proc sslEngineSetPoly1305*(cc: ptr SslEngineContext; ipoly: Poly1305Run) {.inline, - cdecl.} = - cc.ipoly = ipoly - -proc sslEngineSetDefaultChapol*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_chapol", header: "bearssl_ssl.h".} - -proc sslEngineSetCbc*(cc: ptr SslEngineContext; implIn: ptr SslrecInCbcClass; - implOut: ptr SslrecOutCbcClass) {.inline.} = - cc.icbcIn = implIn - cc.icbcOut = implOut - -proc sslEngineSetGcm*(cc: ptr SslEngineContext; implIn: ptr SslrecInGcmClass; - implOut: ptr SslrecOutGcmClass) {.inline.} = - cc.igcmIn = implIn - cc.igcmOut = implOut - -proc sslEngineSetChapol*(cc: ptr SslEngineContext; implIn: ptr SslrecInChapolClass; - implOut: ptr SslrecOutChapolClass) {.inline.} = - cc.ichapolIn = implIn - cc.ichapolOut = implOut - -proc sslEngineSetEc*(cc: ptr SslEngineContext; iec: ptr EcImpl) {.inline.} = - cc.iec = iec - -proc sslEngineSetDefaultEc*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_ec", header: "bearssl_ssl.h".} - -proc sslEngineGetEc*(cc: ptr SslEngineContext): ptr EcImpl {.inline.} = - return cc.iec - -proc sslEngineSetRsavrfy*(cc: ptr SslEngineContext; irsavrfy: RsaPkcs1Vrfy) {.inline, - cdecl.} = - cc.irsavrfy = irsavrfy - -proc sslEngineSetDefaultRsavrfy*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_rsavrfy", header: "bearssl_ssl.h".} - -proc sslEngineGetRsavrfy*(cc: ptr SslEngineContext): RsaPkcs1Vrfy {.inline.} = - return cc.irsavrfy - -proc sslEngineSetEcdsa*(cc: ptr SslEngineContext; iecdsa: EcdsaVrfy) {.inline.} = - cc.iecdsa = iecdsa - -proc sslEngineSetDefaultEcdsa*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_set_default_ecdsa", header: "bearssl_ssl.h".} - -proc sslEngineGetEcdsa*(cc: ptr SslEngineContext): EcdsaVrfy {.inline.} = - return cc.iecdsa - -proc sslEngineSetBuffer*(cc: ptr SslEngineContext; iobuf: pointer; iobufLen: int; - bidi: cint) {.cdecl, importc: "br_ssl_engine_set_buffer", - header: "bearssl_ssl.h".} - -proc sslEngineSetBuffersBidi*(cc: ptr SslEngineContext; ibuf: pointer; ibufLen: int; - obuf: pointer; obufLen: int) {.cdecl, - importc: "br_ssl_engine_set_buffers_bidi", header: "bearssl_ssl.h".} - -proc sslEngineInjectEntropy*(cc: ptr SslEngineContext; data: pointer; len: int) {. - cdecl, importc: "br_ssl_engine_inject_entropy", header: "bearssl_ssl.h".} - -proc sslEngineGetServerName*(cc: ptr SslEngineContext): cstring {.inline.} = - return addr cc.serverName - -proc sslEngineGetVersion*(cc: ptr SslEngineContext): cuint {.inline.} = - return cc.session.version - -proc sslEngineGetSessionParameters*(cc: ptr SslEngineContext; - pp: ptr SslSessionParameters) {.inline.} = - copyMem(pp, addr(cc.session), sizeof(pp[])) - -proc sslEngineSetSessionParameters*(cc: ptr SslEngineContext; - pp: ptr SslSessionParameters) {.inline.} = - copyMem(addr(cc.session), pp, sizeof(pp[])) - -proc sslEngineGetEcdheCurve*(cc: ptr SslEngineContext): cint {.inline.} = - return cint cc.ecdheCurve - -proc sslEngineCurrentState*(cc: ptr SslEngineContext): cuint {.cdecl, - importc: "br_ssl_engine_current_state", header: "bearssl_ssl.h".} - -const - SSL_CLOSED* = 0x00000001 - -const - SSL_SENDREC* = 0x00000002 - -const - SSL_RECVREC* = 0x00000004 - -const - SSL_SENDAPP* = 0x00000008 - -const - SSL_RECVAPP* = 0x00000010 - -proc sslEngineLastError*(cc: ptr SslEngineContext): cint {.inline.} = - return cc.err - -proc sslEngineSendappBuf*(cc: ptr SslEngineContext; len: ptr int): ptr cuchar {.cdecl, - importc: "br_ssl_engine_sendapp_buf", header: "bearssl_ssl.h".} - -proc sslEngineSendappAck*(cc: ptr SslEngineContext; len: int) {.cdecl, - importc: "br_ssl_engine_sendapp_ack", header: "bearssl_ssl.h".} - -proc sslEngineRecvappBuf*(cc: ptr SslEngineContext; len: ptr int): ptr cuchar {.cdecl, - importc: "br_ssl_engine_recvapp_buf", header: "bearssl_ssl.h".} - -proc sslEngineRecvappAck*(cc: ptr SslEngineContext; len: int) {.cdecl, - importc: "br_ssl_engine_recvapp_ack", header: "bearssl_ssl.h".} - -proc sslEngineSendrecBuf*(cc: ptr SslEngineContext; len: ptr int): ptr cuchar {.cdecl, - importc: "br_ssl_engine_sendrec_buf", header: "bearssl_ssl.h".} - -proc sslEngineSendrecAck*(cc: ptr SslEngineContext; len: int) {.cdecl, - importc: "br_ssl_engine_sendrec_ack", header: "bearssl_ssl.h".} - -proc sslEngineRecvrecBuf*(cc: ptr SslEngineContext; len: ptr int): ptr cuchar {.cdecl, - importc: "br_ssl_engine_recvrec_buf", header: "bearssl_ssl.h".} - -proc sslEngineRecvrecAck*(cc: ptr SslEngineContext; len: int) {.cdecl, - importc: "br_ssl_engine_recvrec_ack", header: "bearssl_ssl.h".} - -proc sslEngineFlush*(cc: ptr SslEngineContext; force: cint) {.cdecl, - importc: "br_ssl_engine_flush", header: "bearssl_ssl.h".} - -proc sslEngineClose*(cc: ptr SslEngineContext) {.cdecl, - importc: "br_ssl_engine_close", header: "bearssl_ssl.h".} - -proc sslEngineRenegotiate*(cc: ptr SslEngineContext): cint {.cdecl, - importc: "br_ssl_engine_renegotiate", header: "bearssl_ssl.h".} - -proc sslKeyExport*(cc: ptr SslEngineContext; dst: pointer; len: int; label: cstring; - context: pointer; contextLen: int): cint {.cdecl, - importc: "br_ssl_key_export", header: "bearssl_ssl.h".} - -type - SslClientCertificate* {.importc: "br_ssl_client_certificate", - header: "bearssl_ssl.h", bycopy.} = object - authType* {.importc: "auth_type".}: cint - hashId* {.importc: "hash_id".}: cint - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - - -const - AUTH_ECDH* = 0 - -const - AUTH_RSA* = 1 - -const - AUTH_ECDSA* = 3 - -type - INNER_C_UNION_2478042450* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr SslClientCertificateClass - singleRsa* {.importc: "single_rsa".}: SslClientCertificateRsaContext - singleEc* {.importc: "single_ec".}: SslClientCertificateEcContext - - SslClientContext* {.importc: "br_ssl_client_context", header: "bearssl_ssl.h", - bycopy.} = object - eng* {.importc: "eng".}: SslEngineContext - minClienthelloLen* {.importc: "min_clienthello_len".}: uint16 - hashes* {.importc: "hashes".}: uint32 - serverCurve* {.importc: "server_curve".}: cint - clientAuthVtable* {.importc: "client_auth_vtable".}: ptr ptr SslClientCertificateClass - authType* {.importc: "auth_type".}: cuchar - hashId* {.importc: "hash_id".}: cuchar - clientAuth* {.importc: "client_auth".}: INNER_C_UNION_2478042450 - irsapub* {.importc: "irsapub".}: RsaPublic - - SslClientCertificateClass* {.importc: "br_ssl_client_certificate_class", - header: "bearssl_ssl.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - startNameList* {.importc: "start_name_list".}: proc ( - pctx: ptr ptr SslClientCertificateClass) {.cdecl.} - startName* {.importc: "start_name".}: proc ( - pctx: ptr ptr SslClientCertificateClass; len: int) {.cdecl.} - appendName* {.importc: "append_name".}: proc ( - pctx: ptr ptr SslClientCertificateClass; data: ptr cuchar; len: int) {.cdecl.} - endName* {.importc: "end_name".}: proc (pctx: ptr ptr SslClientCertificateClass) {. - cdecl.} - endNameList* {.importc: "end_name_list".}: proc ( - pctx: ptr ptr SslClientCertificateClass) {.cdecl.} - choose* {.importc: "choose".}: proc (pctx: ptr ptr SslClientCertificateClass; - cc: ptr SslClientContext; authTypes: uint32; - choices: ptr SslClientCertificate) {.cdecl.} - doKeyx* {.importc: "do_keyx".}: proc (pctx: ptr ptr SslClientCertificateClass; - data: ptr cuchar; len: ptr int): uint32 {. - cdecl.} - doSign* {.importc: "do_sign".}: proc (pctx: ptr ptr SslClientCertificateClass; - hashId: cint; hvLen: int; data: ptr cuchar; - len: int): int {.cdecl.} - - SslClientCertificateRsaContext* {.importc: "br_ssl_client_certificate_rsa_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslClientCertificateClass - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - sk* {.importc: "sk".}: ptr RsaPrivateKey - irsasign* {.importc: "irsasign".}: RsaPkcs1Sign - - SslClientCertificateEcContext* {.importc: "br_ssl_client_certificate_ec_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslClientCertificateClass - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - sk* {.importc: "sk".}: ptr EcPrivateKey - allowedUsages* {.importc: "allowed_usages".}: cuint - issuerKeyType* {.importc: "issuer_key_type".}: cuint - mhash* {.importc: "mhash".}: ptr MultihashContext - iec* {.importc: "iec".}: ptr EcImpl - iecdsa* {.importc: "iecdsa".}: EcdsaSign - - - -proc sslClientGetServerHashes*(cc: ptr SslClientContext): uint32 {.inline.} = - return cc.hashes - -proc sslClientGetServerCurve*(cc: ptr SslClientContext): cint {.inline.} = - return cc.serverCurve - -proc sslClientInitFull*(cc: ptr SslClientContext; xc: ptr X509MinimalContext; - trustAnchors: ptr X509TrustAnchor; trustAnchorsNum: int) {. - cdecl, importc: "br_ssl_client_init_full", header: "bearssl_ssl.h".} - -proc sslClientZero*(cc: ptr SslClientContext) {.cdecl, importc: "br_ssl_client_zero", - header: "bearssl_ssl.h".} - -proc sslClientSetClientCertificate*(cc: ptr SslClientContext; - pctx: ptr ptr SslClientCertificateClass) {. - inline.} = - cc.clientAuthVtable = pctx - -proc sslClientSetRsapub*(cc: ptr SslClientContext; irsapub: RsaPublic) {.inline.} = - cc.irsapub = irsapub - -proc sslClientSetDefaultRsapub*(cc: ptr SslClientContext) {.cdecl, - importc: "br_ssl_client_set_default_rsapub", header: "bearssl_ssl.h".} - -proc sslClientSetMinClienthelloLen*(cc: ptr SslClientContext; len: uint16) {.inline, - cdecl.} = - cc.minClienthelloLen = len - -proc sslClientReset*(cc: ptr SslClientContext; serverName: cstring; - resumeSession: cint): cint {.cdecl, - importc: "br_ssl_client_reset", header: "bearssl_ssl.h".} - -proc sslClientForgetSession*(cc: ptr SslClientContext) {.inline.} = - cc.eng.session.sessionIdLen = 0 - -proc sslClientSetSingleRsa*(cc: ptr SslClientContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr RsaPrivateKey; - irsasign: RsaPkcs1Sign) {.cdecl, - importc: "br_ssl_client_set_single_rsa", header: "bearssl_ssl.h".} - -proc sslClientSetSingleEc*(cc: ptr SslClientContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr EcPrivateKey; - allowedUsages: cuint; certIssuerKeyType: cuint; - iec: ptr EcImpl; iecdsa: EcdsaSign) {.cdecl, - importc: "br_ssl_client_set_single_ec", header: "bearssl_ssl.h".} - -type - SuiteTranslated* = array[2, uint16] - -when not defined(DOXYGEN_IGNORE): - const - SSLKEYX_RSA* = 0 - SSLKEYX_ECDHE_RSA* = 1 - SSLKEYX_ECDHE_ECDSA* = 2 - SSLKEYX_ECDH_RSA* = 3 - SSLKEYX_ECDH_ECDSA* = 4 - SSLENC_3DES_CBC* = 0 - SSLENC_AES128_CBC* = 1 - SSLENC_AES256_CBC* = 2 - SSLENC_AES128_GCM* = 3 - SSLENC_AES256_GCM* = 4 - SSLENC_CHACHA20* = 5 - SSLMAC_AEAD* = 0 - SSLMAC_SHA1* = sha1ID - SSLMAC_SHA256* = sha256ID - SSLMAC_SHA384* = sha384ID - SSLPRF_SHA256* = sha256ID - SSLPRF_SHA384* = sha384ID - -type - SslServerChoices* {.importc: "br_ssl_server_choices", header: "bearssl_ssl.h", - bycopy.} = object - cipherSuite* {.importc: "cipher_suite".}: uint16 - algoId* {.importc: "algo_id".}: cuint - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - - SslServerPolicyClass* {.importc: "br_ssl_server_policy_class", - header: "bearssl_ssl.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - choose* {.importc: "choose".}: proc (pctx: ptr ptr SslServerPolicyClass; - cc: ptr SslServerContext; - choices: ptr SslServerChoices): cint {.cdecl.} - doKeyx* {.importc: "do_keyx".}: proc (pctx: ptr ptr SslServerPolicyClass; - data: ptr cuchar; len: ptr int): uint32 {. - cdecl.} - doSign* {.importc: "do_sign".}: proc (pctx: ptr ptr SslServerPolicyClass; - algoId: cuint; data: ptr cuchar; hvLen: int; - len: int): int {.cdecl.} - - SslServerPolicyRsaContext* {.importc: "br_ssl_server_policy_rsa_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslServerPolicyClass - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - sk* {.importc: "sk".}: ptr RsaPrivateKey - allowedUsages* {.importc: "allowed_usages".}: cuint - irsacore* {.importc: "irsacore".}: RsaPrivate - irsasign* {.importc: "irsasign".}: RsaPkcs1Sign - - SslServerPolicyEcContext* {.importc: "br_ssl_server_policy_ec_context", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslServerPolicyClass - chain* {.importc: "chain".}: ptr X509Certificate - chainLen* {.importc: "chain_len".}: int - sk* {.importc: "sk".}: ptr EcPrivateKey - allowedUsages* {.importc: "allowed_usages".}: cuint - certIssuerKeyType* {.importc: "cert_issuer_key_type".}: cuint - mhash* {.importc: "mhash".}: ptr MultihashContext - iec* {.importc: "iec".}: ptr EcImpl - iecdsa* {.importc: "iecdsa".}: EcdsaSign - - INNER_C_UNION_537875083* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. - union.} - vtable* {.importc: "vtable".}: ptr SslServerPolicyClass - singleRsa* {.importc: "single_rsa".}: SslServerPolicyRsaContext - singleEc* {.importc: "single_ec".}: SslServerPolicyEcContext - - SslServerContext* {.importc: "br_ssl_server_context", header: "bearssl_ssl.h", - bycopy.} = object - eng* {.importc: "eng".}: SslEngineContext - clientMaxVersion* {.importc: "client_max_version".}: uint16 - cacheVtable* {.importc: "cache_vtable".}: ptr ptr SslSessionCacheClass - clientSuites* {.importc: "client_suites".}: array[MAX_CIPHER_SUITES, - SuiteTranslated] - clientSuitesNum* {.importc: "client_suites_num".}: cuchar - hashes* {.importc: "hashes".}: uint32 - curves* {.importc: "curves".}: uint32 - policyVtable* {.importc: "policy_vtable".}: ptr ptr SslServerPolicyClass - signHashId* {.importc: "sign_hash_id".}: uint16 - chainHandler* {.importc: "chain_handler".}: INNER_C_UNION_537875083 - ecdheKey* {.importc: "ecdhe_key".}: array[70, cuchar] - ecdheKeyLen* {.importc: "ecdhe_key_len".}: int - taNames* {.importc: "ta_names".}: ptr X500Name - tas* {.importc: "tas".}: ptr X509TrustAnchor - numTas* {.importc: "num_tas".}: int - curDnIndex* {.importc: "cur_dn_index".}: int - curDn* {.importc: "cur_dn".}: ptr cuchar - curDnLen* {.importc: "cur_dn_len".}: int - hashCV* {.importc: "hash_CV".}: array[64, cuchar] - hashCV_len* {.importc: "hash_CV_len".}: int - hashCV_id* {.importc: "hash_CV_id".}: cint - - - SslSessionCacheClass* {.importc: "br_ssl_session_cache_class", - header: "bearssl_ssl.h", bycopy.} = object - contextSize* {.importc: "context_size".}: int - save* {.importc: "save".}: proc (ctx: ptr ptr SslSessionCacheClass; - serverCtx: ptr SslServerContext; - params: ptr SslSessionParameters) {.cdecl.} - load* {.importc: "load".}: proc (ctx: ptr ptr SslSessionCacheClass; - serverCtx: ptr SslServerContext; - params: ptr SslSessionParameters): cint {.cdecl.} - - SslSessionCacheLru* {.importc: "br_ssl_session_cache_lru", - header: "bearssl_ssl.h", bycopy.} = object - vtable* {.importc: "vtable".}: ptr SslSessionCacheClass - store* {.importc: "store".}: ptr cuchar - storeLen* {.importc: "store_len".}: int - storePtr* {.importc: "store_ptr".}: int - indexKey* {.importc: "index_key".}: array[32, cuchar] - hash* {.importc: "hash".}: ptr HashClass - initDone* {.importc: "init_done".}: cint - head* {.importc: "head".}: uint32 - tail* {.importc: "tail".}: uint32 - root* {.importc: "root".}: uint32 - - -proc sslSessionCacheLruInit*(cc: ptr SslSessionCacheLru; store: ptr cuchar; - storeLen: int) {.cdecl, - importc: "br_ssl_session_cache_lru_init", header: "bearssl_ssl.h".} - -proc sslSessionCacheLruForget*(cc: ptr SslSessionCacheLru; id: ptr cuchar) {.cdecl, - importc: "br_ssl_session_cache_lru_forget", header: "bearssl_ssl.h".} - - -proc sslServerInitFullRsa*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, - importc: "br_ssl_server_init_full_rsa", header: "bearssl_ssl.h".} - -proc sslServerInitFullEc*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; certIssuerKeyType: cuint; - sk: ptr EcPrivateKey) {.cdecl, - importc: "br_ssl_server_init_full_ec", header: "bearssl_ssl.h".} - -proc sslServerInitMinr2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, - importc: "br_ssl_server_init_minr2g", header: "bearssl_ssl.h".} - -proc sslServerInitMine2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, - importc: "br_ssl_server_init_mine2g", header: "bearssl_ssl.h".} - -proc sslServerInitMinf2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr EcPrivateKey) {.cdecl, - importc: "br_ssl_server_init_minf2g", header: "bearssl_ssl.h".} - -proc sslServerInitMinu2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr EcPrivateKey) {.cdecl, - importc: "br_ssl_server_init_minu2g", header: "bearssl_ssl.h".} - -proc sslServerInitMinv2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr EcPrivateKey) {.cdecl, - importc: "br_ssl_server_init_minv2g", header: "bearssl_ssl.h".} - -proc sslServerInitMine2c*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, - importc: "br_ssl_server_init_mine2c", header: "bearssl_ssl.h".} - -proc sslServerInitMinf2c*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr EcPrivateKey) {.cdecl, - importc: "br_ssl_server_init_minf2c", header: "bearssl_ssl.h".} - -proc sslServerGetClientSuites*(cc: ptr SslServerContext; num: ptr int): - ptr array[MAX_CIPHER_SUITES, SuiteTranslated] {. - inline.} = - num[] = int cc.clientSuitesNum - return addr cc.clientSuites - -proc sslServerGetClientHashes*(cc: ptr SslServerContext): uint32 {.inline.} = - return cc.hashes - -proc sslServerGetClientCurves*(cc: ptr SslServerContext): uint32 {.inline.} = - return cc.curves - -proc sslServerZero*(cc: ptr SslServerContext) {.cdecl, importc: "br_ssl_server_zero", - header: "bearssl_ssl.h".} - -proc sslServerSetPolicy*(cc: ptr SslServerContext; - pctx: ptr ptr SslServerPolicyClass) {.inline.} = - cc.policyVtable = pctx - -proc sslServerSetSingleRsa*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr RsaPrivateKey; - allowedUsages: cuint; irsacore: RsaPrivate; - irsasign: RsaPkcs1Sign) {.cdecl, - importc: "br_ssl_server_set_single_rsa", header: "bearssl_ssl.h".} - -proc sslServerSetSingleEc*(cc: ptr SslServerContext; chain: ptr X509Certificate; - chainLen: int; sk: ptr EcPrivateKey; - allowedUsages: cuint; certIssuerKeyType: cuint; - iec: ptr EcImpl; iecdsa: EcdsaSign) {.cdecl, - importc: "br_ssl_server_set_single_ec", header: "bearssl_ssl.h".} - -proc sslServerSetTrustAnchorNames*(cc: ptr SslServerContext; taNames: ptr X500Name; - num: int) {.inline.} = - cc.taNames = taNames - cc.tas = nil - cc.numTas = num - -proc sslServerSetTrustAnchorNamesAlt*(cc: ptr SslServerContext; - tas: ptr X509TrustAnchor; num: int) {.inline, - cdecl.} = - cc.taNames = nil - cc.tas = tas - cc.numTas = num - -proc sslServerSetCache*(cc: ptr SslServerContext; - vtable: ptr ptr SslSessionCacheClass) {.inline.} = - cc.cacheVtable = vtable - -proc sslServerReset*(cc: ptr SslServerContext): cint {.cdecl, - importc: "br_ssl_server_reset", header: "bearssl_ssl.h".} - -type - SslioContext* {.importc: "br_sslio_context", header: "bearssl_ssl.h", bycopy.} = object - engine* {.importc: "engine".}: ptr SslEngineContext - lowRead* {.importc: "low_read".}: proc (readContext: pointer; data: ptr cuchar; - len: int): cint {.cdecl.} - readContext* {.importc: "read_context".}: pointer - lowWrite* {.importc: "low_write".}: proc (writeContext: pointer; data: ptr cuchar; - len: int): cint {.cdecl.} - writeContext* {.importc: "write_context".}: pointer - - -proc sslioInit*(ctx: ptr SslioContext; engine: ptr SslEngineContext; lowRead: proc ( - readContext: pointer; data: ptr cuchar; len: int): cint {.cdecl.}; - readContext: pointer; lowWrite: proc (writeContext: pointer; - data: ptr cuchar; len: int): cint {.cdecl.}; writeContext: pointer) {.cdecl, - importc: "br_sslio_init", header: "bearssl_ssl.h".} - -proc sslioRead*(cc: ptr SslioContext; dst: pointer; len: int): cint {.cdecl, - importc: "br_sslio_read", header: "bearssl_ssl.h".} - -proc sslioReadAll*(cc: ptr SslioContext; dst: pointer; len: int): cint {.cdecl, - importc: "br_sslio_read_all", header: "bearssl_ssl.h".} - -proc sslioWrite*(cc: ptr SslioContext; src: pointer; len: int): cint {.cdecl, - importc: "br_sslio_write", header: "bearssl_ssl.h".} - -proc sslioWriteAll*(cc: ptr SslioContext; src: pointer; len: int): cint {.cdecl, - importc: "br_sslio_write_all", header: "bearssl_ssl.h".} - -proc sslioFlush*(cc: ptr SslioContext): cint {.cdecl, importc: "br_sslio_flush", - header: "bearssl_ssl.h".} - -proc sslioClose*(cc: ptr SslioContext): cint {.cdecl, importc: "br_sslio_close", - header: "bearssl_ssl.h".} - -const - TLS_NULL_WITH_NULL_NULL* = 0x00000000 - TLS_RSA_WITH_NULL_MD5* = 0x00000001 - TLS_RSA_WITH_NULL_SHA* = 0x00000002 - TLS_RSA_WITH_NULL_SHA256* = 0x0000003B - TLS_RSA_WITH_RC4_128_MD5* = 0x00000004 - TLS_RSA_WITH_RC4_128_SHA* = 0x00000005 - TLS_RSA_WITH_3DES_EDE_CBC_SHA* = 0x0000000A - TLS_RSA_WITH_AES_128_CBC_SHA* = 0x0000002F - TLS_RSA_WITH_AES_256_CBC_SHA* = 0x00000035 - TLS_RSA_WITH_AES_128_CBC_SHA256* = 0x0000003C - TLS_RSA_WITH_AES_256_CBC_SHA256* = 0x0000003D - TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA* = 0x0000000D - TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA* = 0x00000010 - TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA* = 0x00000013 - TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA* = 0x00000016 - TLS_DH_DSS_WITH_AES_128_CBC_SHA* = 0x00000030 - TLS_DH_RSA_WITH_AES_128_CBC_SHA* = 0x00000031 - TLS_DHE_DSS_WITH_AES_128_CBC_SHA* = 0x00000032 - TLS_DHE_RSA_WITH_AES_128_CBC_SHA* = 0x00000033 - TLS_DH_DSS_WITH_AES_256_CBC_SHA* = 0x00000036 - TLS_DH_RSA_WITH_AES_256_CBC_SHA* = 0x00000037 - TLS_DHE_DSS_WITH_AES_256_CBC_SHA* = 0x00000038 - TLS_DHE_RSA_WITH_AES_256_CBC_SHA* = 0x00000039 - TLS_DH_DSS_WITH_AES_128_CBC_SHA256* = 0x0000003E - TLS_DH_RSA_WITH_AES_128_CBC_SHA256* = 0x0000003F - TLS_DHE_DSS_WITH_AES_128_CBC_SHA256* = 0x00000040 - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256* = 0x00000067 - TLS_DH_DSS_WITH_AES_256_CBC_SHA256* = 0x00000068 - TLS_DH_RSA_WITH_AES_256_CBC_SHA256* = 0x00000069 - TLS_DHE_DSS_WITH_AES_256_CBC_SHA256* = 0x0000006A - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256* = 0x0000006B - TLS_DH_anonWITH_RC4128MD5* = 0x00000018 - TLS_DH_anonWITH_3DES_EDE_CBC_SHA* = 0x0000001B - TLS_DH_anonWITH_AES_128CBC_SHA* = 0x00000034 - TLS_DH_anonWITH_AES_256CBC_SHA* = 0x0000003A - TLS_DH_anonWITH_AES_128CBC_SHA256* = 0x0000006C - TLS_DH_anonWITH_AES_256CBC_SHA256* = 0x0000006D - -const - TLS_ECDH_ECDSA_WITH_NULL_SHA* = 0x0000C001 - TLS_ECDH_ECDSA_WITH_RC4_128_SHA* = 0x0000C002 - TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C003 - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA* = 0x0000C004 - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA* = 0x0000C005 - TLS_ECDHE_ECDSA_WITH_NULL_SHA* = 0x0000C006 - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA* = 0x0000C007 - TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C008 - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA* = 0x0000C009 - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA* = 0x0000C00A - TLS_ECDH_RSA_WITH_NULL_SHA* = 0x0000C00B - TLS_ECDH_RSA_WITH_RC4_128_SHA* = 0x0000C00C - TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C00D - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA* = 0x0000C00E - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA* = 0x0000C00F - TLS_ECDHE_RSA_WITH_NULL_SHA* = 0x0000C010 - TLS_ECDHE_RSA_WITH_RC4_128_SHA* = 0x0000C011 - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C012 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA* = 0x0000C013 - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA* = 0x0000C014 - TLS_ECDH_anonWITH_NULL_SHA* = 0x0000C015 - TLS_ECDH_anonWITH_RC4128SHA* = 0x0000C016 - TLS_ECDH_anonWITH_3DES_EDE_CBC_SHA* = 0x0000C017 - TLS_ECDH_anonWITH_AES_128CBC_SHA* = 0x0000C018 - TLS_ECDH_anonWITH_AES_256CBC_SHA* = 0x0000C019 - -const - TLS_RSA_WITH_AES_128_GCM_SHA256* = 0x0000009C - TLS_RSA_WITH_AES_256_GCM_SHA384* = 0x0000009D - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256* = 0x0000009E - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384* = 0x0000009F - TLS_DH_RSA_WITH_AES_128_GCM_SHA256* = 0x000000A0 - TLS_DH_RSA_WITH_AES_256_GCM_SHA384* = 0x000000A1 - TLS_DHE_DSS_WITH_AES_128_GCM_SHA256* = 0x000000A2 - TLS_DHE_DSS_WITH_AES_256_GCM_SHA384* = 0x000000A3 - TLS_DH_DSS_WITH_AES_128_GCM_SHA256* = 0x000000A4 - TLS_DH_DSS_WITH_AES_256_GCM_SHA384* = 0x000000A5 - TLS_DH_anonWITH_AES_128GCM_SHA256* = 0x000000A6 - TLS_DH_anonWITH_AES_256GCM_SHA384* = 0x000000A7 - -const - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256* = 0x0000C023 - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384* = 0x0000C024 - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256* = 0x0000C025 - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384* = 0x0000C026 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256* = 0x0000C027 - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384* = 0x0000C028 - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256* = 0x0000C029 - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384* = 0x0000C02A - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256* = 0x0000C02B - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384* = 0x0000C02C - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256* = 0x0000C02D - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384* = 0x0000C02E - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256* = 0x0000C02F - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384* = 0x0000C030 - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256* = 0x0000C031 - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384* = 0x0000C032 - -const - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCA8 - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCA9 - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAA - TLS_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAB - TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAC - TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAD - TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAE - -const - TLS_FALLBACK_SCSV* = 0x00005600 - -const - ALERT_CLOSE_NOTIFY* = 0 - ALERT_UNEXPECTED_MESSAGE* = 10 - ALERT_BAD_RECORD_MAC* = 20 - ALERT_RECORD_OVERFLOW* = 22 - ALERT_DECOMPRESSION_FAILURE* = 30 - ALERT_HANDSHAKE_FAILURE* = 40 - ALERT_BAD_CERTIFICATE* = 42 - ALERT_UNSUPPORTED_CERTIFICATE* = 43 - ALERT_CERTIFICATE_REVOKED* = 44 - ALERT_CERTIFICATE_EXPIRED* = 45 - ALERT_CERTIFICATE_UNKNOWN* = 46 - ALERT_ILLEGAL_PARAMETER* = 47 - ALERT_UNKNOWN_CA* = 48 - ALERT_ACCESS_DENIED* = 49 - ALERT_DECODE_ERROR* = 50 - ALERT_DECRYPT_ERROR* = 51 - ALERT_PROTOCOL_VERSION* = 70 - ALERT_INSUFFICIENT_SECURITY* = 71 - ALERT_INTERNAL_ERROR* = 80 - ALERT_USER_CANCELED* = 90 - ALERT_NO_RENEGOTIATION* = 100 - ALERT_UNSUPPORTED_EXTENSION* = 110 - ALERT_NO_APPLICATION_PROTOCOL* = 120 - -type - INNER_C_STRUCT_1475532182* {.importc: "no_name", header: "bearssl_pem.h", bycopy.} = object - dp* {.importc: "dp".}: ptr uint32 - rp* {.importc: "rp".}: ptr uint32 - ip* {.importc: "ip".}: ptr cuchar - - PemDecoderContext* {.importc: "br_pem_decoder_context", header: "bearssl_pem.h", - bycopy.} = object - cpu* {.importc: "cpu".}: INNER_C_STRUCT_1475532182 - dpStack* {.importc: "dp_stack".}: array[32, uint32] - rpStack* {.importc: "rp_stack".}: array[32, uint32] - err* {.importc: "err".}: cint - hbuf* {.importc: "hbuf".}: ptr cuchar - hlen* {.importc: "hlen".}: int - dest* {.importc: "dest".}: proc (destCtx: pointer; src: pointer; len: int) {.cdecl.} - destCtx* {.importc: "dest_ctx".}: pointer - event* {.importc: "event".}: cuchar - name* {.importc: "name".}: array[128, char] - buf* {.importc: "buf".}: array[255, cuchar] - `ptr`* {.importc: "ptr".}: int - - -proc pemDecoderInit*(ctx: ptr PemDecoderContext) {.cdecl, - importc: "br_pem_decoder_init", header: "bearssl_pem.h".} - -proc pemDecoderPush*(ctx: ptr PemDecoderContext; data: pointer; len: int): int {. - cdecl, importc: "br_pem_decoder_push", header: "bearssl_pem.h".} - -proc pemDecoderSetdest*(ctx: ptr PemDecoderContext; dest: proc (destCtx: pointer; - src: pointer; len: int) {.cdecl.}; destCtx: pointer) {.inline.} = - ctx.dest = dest - ctx.destCtx = destCtx - -proc pemDecoderEvent*(ctx: ptr PemDecoderContext): cint {.cdecl, - importc: "br_pem_decoder_event", header: "bearssl_pem.h".} - -const - PEM_BEGIN_OBJ* = 1 - -const - PEM_END_OBJ* = 2 - -const - PEM_ERROR* = 3 - -proc pemDecoderName*(ctx: ptr PemDecoderContext): cstring {.inline.} = - return addr ctx.name - -type - ConfigOption* {.importc: "br_config_option", header: "bearssl.h", bycopy.} = object - name* {.importc: "name".}: cstring - value* {.importc: "value".}: clong - - -proc getConfig*(): ptr ConfigOption {.cdecl, importc: "br_get_config", - header: "bearssl.h".} - -const - BR_EC_SECP256R1* = 23 - BR_EC_SECP384R1* = 24 - BR_EC_SECP521R1* = 25 - - BR_EC_KBUF_PRIV_MAX_SIZE* = 72 - BR_EC_KBUF_PUB_MAX_SIZE* = 145 - -# Deprecated - -type - BrHashClass* = HashClass - BrMd5Context* = Md5Context - BrMd5sha1Context* = Md5sha1Context - BrSha512Context* = Sha384Context - BrSha384Context* = Sha384Context - BrSha256Context* = Sha224Context - BrSha224Context* = Sha224Context - BrHashCompatContext* = HashCompatContext - BrPrngClass* = PrngClass - BrHmacDrbgContext* = HmacDrbgContext - BrRsaPublicKey* = RsaPublicKey - BrRsaPrivateKey* = RsaPrivateKey - BrEcPublicKey* = EcPublicKey - BrEcPrivateKey* = EcPrivateKey - BrEcImplementation* = EcImpl - BrPrngSeeder* = PrngSeeder - BrRsaKeygen* = proc (ctx: ptr ptr BrPrngClass, - sk: ptr BrRsaPrivateKey, bufsec: ptr byte, - pk: ptr BrRsaPublicKey, bufpub: ptr byte, - size: cuint, pubexp: uint32): uint32 {.cdecl.} - BrRsaComputeModulus* = proc (n: pointer, - sk: ptr BrRsaPrivateKey): int {.cdecl.} - BrRsaComputePubexp* = proc (sk: ptr BrRsaPrivateKey): uint32 {.cdecl.} - BrRsaComputePrivexp* = proc (d: pointer, - sk: ptr BrRsaPrivateKey, - pubexp: uint32): int {.cdecl.} - BrRsaPkcs1Verify* = proc (x: ptr cuchar, xlen: int, - hash_oid: ptr cuchar, hash_len: int, - pk: ptr BrRsaPublicKey, - hash_out: ptr cuchar): uint32 {.cdecl.} - BrPemDecoderProc* = proc (destctx: pointer, src: pointer, - length: int) {.cdecl.} - BrRsaPkcs1Sign* = RsaPkcs1Sign - -proc brPrngSeederSystem*(name: cstringArray): BrPrngSeeder {.cdecl, - importc: "br_prng_seeder_system", header: "bearssl_rand.h".} - -proc brHmacDrbgInit*(ctx: ptr BrHmacDrbgContext, digestClass: ptr BrHashClass, - seed: pointer, seedLen: int) {. - cdecl, importc: "br_hmac_drbg_init", header: "bearssl_rand.h".} - -proc brRsaKeygenGetDefault*(): BrRsaKeygen {. - cdecl, importc: "br_rsa_keygen_get_default", header: "bearssl_rsa.h".} - -proc BrRsaPkcs1SignGetDefault*(): BrRsaPkcs1Sign {. - cdecl, importc: "br_rsa_pkcs1_sign_get_default", header: "bearssl_rsa.h".} - -proc BrRsaPkcs1VrfyGetDefault*(): BrRsaPkcs1Verify {. - cdecl, importc: "br_rsa_pkcs1_vrfy_get_default", header: "bearssl_rsa.h".} - -proc brRsaComputeModulusGetDefault*(): BrRsaComputeModulus {. - cdecl, importc: "br_rsa_compute_modulus_get_default", - header: "bearssl_rsa.h".} - -proc brRsaComputePubexpGetDefault*(): BrRsaComputePubexp {. - cdecl, importc: "br_rsa_compute_pubexp_get_default", - header: "bearssl_rsa.h".} - -proc brRsaComputePrivexpGetDefault*(): BrRsaComputePrivexp {. - cdecl, importc: "br_rsa_compute_privexp_get_default", - header: "bearssl_rsa.h".} - -proc brEcGetDefault*(): ptr BrEcImplementation {. - cdecl, importc: "br_ec_get_default", header: "bearssl_ec.h".} - -proc brEcKeygen*(ctx: ptr ptr BrPrngClass, impl: ptr BrEcImplementation, - sk: ptr BrEcPrivateKey, keybuf: ptr byte, - curve: cint): int {.cdecl, - importc: "br_ec_keygen", header: "bearssl_ec.h".} - -proc brEcComputePublicKey*(impl: ptr BrEcImplementation, pk: ptr BrEcPublicKey, - kbuf: ptr byte, sk: ptr BrEcPrivateKey): int {. - cdecl, importc: "br_ec_compute_pub", header: "bearssl_ec.h".} - -proc brEcdsaSignRaw*(impl: ptr BrEcImplementation, hf: ptr BrHashClass, - value: pointer, sk: ptr BrEcPrivateKey, - sig: pointer): int {. - cdecl, importc: "br_ecdsa_i31_sign_raw", header: "bearssl_ec.h".} - -proc brEcdsaVerifyRaw*(impl: ptr BrEcImplementation, hash: pointer, - hashlen: int, pk: ptr BrEcPublicKey, sig: pointer, - siglen: int): uint32 {. - cdecl, importc: "br_ecdsa_i31_vrfy_raw", header: "bearssl_ec.h".} - -proc brEcdsaSignAsn1*(impl: ptr BrEcImplementation, hf: ptr BrHashClass, - value: pointer, sk: ptr BrEcPrivateKey, - sig: pointer): int {. - cdecl, importc: "br_ecdsa_i31_sign_asn1", header: "bearssl_ec.h".} - -proc brEcdsaVerifyAsn1*(impl: ptr BrEcImplementation, hash: pointer, - hashlen: int, pk: ptr BrEcPublicKey, sig: pointer, - siglen: int): uint32 {. - cdecl, importc: "br_ecdsa_i31_vrfy_asn1", header: "bearssl_ec.h".} - -template brRsaPrivateKeyBufferSize*(size: int): int = - # BR_RSA_KBUF_PRIV_SIZE(size) - (5 * ((size + 15) shr 4)) - -template brRsaPublicKeyBufferSize*(size: int): int = - # BR_RSA_KBUF_PUB_SIZE(size) - (4 + ((size + 7) shr 3)) +import bearssl/[decls, errors] +export decls, errors diff --git a/bearssl/cacert.nim b/bearssl/cacert.nim new file mode 100644 index 0000000..41e23ff --- /dev/null +++ b/bearssl/cacert.nim @@ -0,0 +1,25 @@ +## Nim-BearSSL +## Copyright (c) 2018 Status Research & Development GmbH +## Licensed under either of +## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) +## * MIT license ([LICENSE-MIT](LICENSE-MIT)) +## at your option. +## This file may not be copied, modified, or distributed except according to +## those terms. + +## This module provides access to Mozilla's CA certificate store in PEM format. +## This certificate store was downloaded from +## https://curl.haxx.se/ca/cacert-2019-08-28.pem +## And converted to C header using ``brssl ta cacert cacert-2019-08-28.pem``. +from decls import X509TrustAnchor +from strutils import rsplit +from os import DirSep + +const CurrentPath = currentSourcePath.rsplit(DirSep, 1)[0] + +{.passC: "-I" & CurrentPath & DirSep & "certs".} + +var MozillaTrustAnchors* {. + importc: "TAs", header: "cacert20190828.h".}: array[139, X509TrustAnchor] +var MozillaTrustAnchorsCount* {. + importc: "TAs_NUM", header: "cacert20190828.h".}: cint diff --git a/bearssl/certs/cacert20190828.h b/bearssl/certs/cacert20190828.h new file mode 100644 index 0000000..11a3640 --- /dev/null +++ b/bearssl/certs/cacert20190828.h @@ -0,0 +1,7985 @@ +#include "bearssl_x509.h" + +static const unsigned char TA0_DN[] = { + 0x30, 0x57, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, + 0x20, 0x6E, 0x76, 0x2D, 0x73, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x07, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, + 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x47, + 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA0_RSA_N[] = { + 0xDA, 0x0E, 0xE6, 0x99, 0x8D, 0xCE, 0xA3, 0xE3, 0x4F, 0x8A, 0x7E, 0xFB, + 0xF1, 0x8B, 0x83, 0x25, 0x6B, 0xEA, 0x48, 0x1F, 0xF1, 0x2A, 0xB0, 0xB9, + 0x95, 0x11, 0x04, 0xBD, 0xF0, 0x63, 0xD1, 0xE2, 0x67, 0x66, 0xCF, 0x1C, + 0xDD, 0xCF, 0x1B, 0x48, 0x2B, 0xEE, 0x8D, 0x89, 0x8E, 0x9A, 0xAF, 0x29, + 0x80, 0x65, 0xAB, 0xE9, 0xC7, 0x2D, 0x12, 0xCB, 0xAB, 0x1C, 0x4C, 0x70, + 0x07, 0xA1, 0x3D, 0x0A, 0x30, 0xCD, 0x15, 0x8D, 0x4F, 0xF8, 0xDD, 0xD4, + 0x8C, 0x50, 0x15, 0x1C, 0xEF, 0x50, 0xEE, 0xC4, 0x2E, 0xF7, 0xFC, 0xE9, + 0x52, 0xF2, 0x91, 0x7D, 0xE0, 0x6D, 0xD5, 0x35, 0x30, 0x8E, 0x5E, 0x43, + 0x73, 0xF2, 0x41, 0xE9, 0xD5, 0x6A, 0xE3, 0xB2, 0x89, 0x3A, 0x56, 0x39, + 0x38, 0x6F, 0x06, 0x3C, 0x88, 0x69, 0x5B, 0x2A, 0x4D, 0xC5, 0xA7, 0x54, + 0xB8, 0x6C, 0x89, 0xCC, 0x9B, 0xF9, 0x3C, 0xCA, 0xE5, 0xFD, 0x89, 0xF5, + 0x12, 0x3C, 0x92, 0x78, 0x96, 0xD6, 0xDC, 0x74, 0x6E, 0x93, 0x44, 0x61, + 0xD1, 0x8D, 0xC7, 0x46, 0xB2, 0x75, 0x0E, 0x86, 0xE8, 0x19, 0x8A, 0xD5, + 0x6D, 0x6C, 0xD5, 0x78, 0x16, 0x95, 0xA2, 0xE9, 0xC8, 0x0A, 0x38, 0xEB, + 0xF2, 0x24, 0x13, 0x4F, 0x73, 0x54, 0x93, 0x13, 0x85, 0x3A, 0x1B, 0xBC, + 0x1E, 0x34, 0xB5, 0x8B, 0x05, 0x8C, 0xB9, 0x77, 0x8B, 0xB1, 0xDB, 0x1F, + 0x20, 0x91, 0xAB, 0x09, 0x53, 0x6E, 0x90, 0xCE, 0x7B, 0x37, 0x74, 0xB9, + 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xAE, 0xB1, 0xAE, 0x41, + 0x26, 0x08, 0xC8, 0x19, 0x2B, 0xD1, 0x46, 0xAA, 0x48, 0xD6, 0x64, 0x2A, + 0xD7, 0x83, 0x34, 0xFF, 0x2C, 0x2A, 0xC1, 0x6C, 0x19, 0x43, 0x4A, 0x07, + 0x85, 0xE7, 0xD3, 0x7C, 0xF6, 0x21, 0x68, 0xEF, 0xEA, 0xF2, 0x52, 0x9F, + 0x7F, 0x93, 0x90, 0xCF +}; + +static const unsigned char TA0_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA1_DN[] = { + 0x30, 0x4C, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x17, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x52, 0x32, + 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0A, 0x47, + 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0A, 0x47, 0x6C, 0x6F, 0x62, + 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E +}; + +static const unsigned char TA1_RSA_N[] = { + 0xA6, 0xCF, 0x24, 0x0E, 0xBE, 0x2E, 0x6F, 0x28, 0x99, 0x45, 0x42, 0xC4, + 0xAB, 0x3E, 0x21, 0x54, 0x9B, 0x0B, 0xD3, 0x7F, 0x84, 0x70, 0xFA, 0x12, + 0xB3, 0xCB, 0xBF, 0x87, 0x5F, 0xC6, 0x7F, 0x86, 0xD3, 0xB2, 0x30, 0x5C, + 0xD6, 0xFD, 0xAD, 0xF1, 0x7B, 0xDC, 0xE5, 0xF8, 0x60, 0x96, 0x09, 0x92, + 0x10, 0xF5, 0xD0, 0x53, 0xDE, 0xFB, 0x7B, 0x7E, 0x73, 0x88, 0xAC, 0x52, + 0x88, 0x7B, 0x4A, 0xA6, 0xCA, 0x49, 0xA6, 0x5E, 0xA8, 0xA7, 0x8C, 0x5A, + 0x11, 0xBC, 0x7A, 0x82, 0xEB, 0xBE, 0x8C, 0xE9, 0xB3, 0xAC, 0x96, 0x25, + 0x07, 0x97, 0x4A, 0x99, 0x2A, 0x07, 0x2F, 0xB4, 0x1E, 0x77, 0xBF, 0x8A, + 0x0F, 0xB5, 0x02, 0x7C, 0x1B, 0x96, 0xB8, 0xC5, 0xB9, 0x3A, 0x2C, 0xBC, + 0xD6, 0x12, 0xB9, 0xEB, 0x59, 0x7D, 0xE2, 0xD0, 0x06, 0x86, 0x5F, 0x5E, + 0x49, 0x6A, 0xB5, 0x39, 0x5E, 0x88, 0x34, 0xEC, 0xBC, 0x78, 0x0C, 0x08, + 0x98, 0x84, 0x6C, 0xA8, 0xCD, 0x4B, 0xB4, 0xA0, 0x7D, 0x0C, 0x79, 0x4D, + 0xF0, 0xB8, 0x2D, 0xCB, 0x21, 0xCA, 0xD5, 0x6C, 0x5B, 0x7D, 0xE1, 0xA0, + 0x29, 0x84, 0xA1, 0xF9, 0xD3, 0x94, 0x49, 0xCB, 0x24, 0x62, 0x91, 0x20, + 0xBC, 0xDD, 0x0B, 0xD5, 0xD9, 0xCC, 0xF9, 0xEA, 0x27, 0x0A, 0x2B, 0x73, + 0x91, 0xC6, 0x9D, 0x1B, 0xAC, 0xC8, 0xCB, 0xE8, 0xE0, 0xA0, 0xF4, 0x2F, + 0x90, 0x8B, 0x4D, 0xFB, 0xB0, 0x36, 0x1B, 0xF6, 0x19, 0x7A, 0x85, 0xE0, + 0x6D, 0xF2, 0x61, 0x13, 0x88, 0x5C, 0x9F, 0xE0, 0x93, 0x0A, 0x51, 0x97, + 0x8A, 0x5A, 0xCE, 0xAF, 0xAB, 0xD5, 0xF7, 0xAA, 0x09, 0xAA, 0x60, 0xBD, + 0xDC, 0xD9, 0x5F, 0xDF, 0x72, 0xA9, 0x60, 0x13, 0x5E, 0x00, 0x01, 0xC9, + 0x4A, 0xFA, 0x3F, 0xA4, 0xEA, 0x07, 0x03, 0x21, 0x02, 0x8E, 0x82, 0xCA, + 0x03, 0xC2, 0x9B, 0x8F +}; + +static const unsigned char TA1_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA2_DN[] = { + 0x30, 0x81, 0xCA, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, + 0x72, 0x6B, 0x31, 0x3A, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x31, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, + 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, + 0x6C, 0x79, 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x3C, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, + 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, + 0x33 +}; + +static const unsigned char TA2_RSA_N[] = { + 0xCB, 0xBA, 0x9C, 0x52, 0xFC, 0x78, 0x1F, 0x1A, 0x1E, 0x6F, 0x1B, 0x37, + 0x73, 0xBD, 0xF8, 0xC9, 0x6B, 0x94, 0x12, 0x30, 0x4F, 0xF0, 0x36, 0x47, + 0xF5, 0xD0, 0x91, 0x0A, 0xF5, 0x17, 0xC8, 0xA5, 0x61, 0xC1, 0x16, 0x40, + 0x4D, 0xFB, 0x8A, 0x61, 0x90, 0xE5, 0x76, 0x20, 0xC1, 0x11, 0x06, 0x7D, + 0xAB, 0x2C, 0x6E, 0xA6, 0xF5, 0x11, 0x41, 0x8E, 0xFA, 0x2D, 0xAD, 0x2A, + 0x61, 0x59, 0xA4, 0x67, 0x26, 0x4C, 0xD0, 0xE8, 0xBC, 0x52, 0x5B, 0x70, + 0x20, 0x04, 0x58, 0xD1, 0x7A, 0xC9, 0xA4, 0x69, 0xBC, 0x83, 0x17, 0x64, + 0xAD, 0x05, 0x8B, 0xBC, 0xD0, 0x58, 0xCE, 0x8D, 0x8C, 0xF5, 0xEB, 0xF0, + 0x42, 0x49, 0x0B, 0x9D, 0x97, 0x27, 0x67, 0x32, 0x6E, 0xE1, 0xAE, 0x93, + 0x15, 0x1C, 0x70, 0xBC, 0x20, 0x4D, 0x2F, 0x18, 0xDE, 0x92, 0x88, 0xE8, + 0x6C, 0x85, 0x57, 0x11, 0x1A, 0xE9, 0x7E, 0xE3, 0x26, 0x11, 0x54, 0xA2, + 0x45, 0x96, 0x55, 0x83, 0xCA, 0x30, 0x89, 0xE8, 0xDC, 0xD8, 0xA3, 0xED, + 0x2A, 0x80, 0x3F, 0x7F, 0x79, 0x65, 0x57, 0x3E, 0x15, 0x20, 0x66, 0x08, + 0x2F, 0x95, 0x93, 0xBF, 0xAA, 0x47, 0x2F, 0xA8, 0x46, 0x97, 0xF0, 0x12, + 0xE2, 0xFE, 0xC2, 0x0A, 0x2B, 0x51, 0xE6, 0x76, 0xE6, 0xB7, 0x46, 0xB7, + 0xE2, 0x0D, 0xA6, 0xCC, 0xA8, 0xC3, 0x4C, 0x59, 0x55, 0x89, 0xE6, 0xE8, + 0x53, 0x5C, 0x1C, 0xEA, 0x9D, 0xF0, 0x62, 0x16, 0x0B, 0xA7, 0xC9, 0x5F, + 0x0C, 0xF0, 0xDE, 0xC2, 0x76, 0xCE, 0xAF, 0xF7, 0x6A, 0xF2, 0xFA, 0x41, + 0xA6, 0xA2, 0x33, 0x14, 0xC9, 0xE5, 0x7A, 0x63, 0xD3, 0x9E, 0x62, 0x37, + 0xD5, 0x85, 0x65, 0x9E, 0x0E, 0xE6, 0x53, 0x24, 0x74, 0x1B, 0x5E, 0x1D, + 0x12, 0x53, 0x5B, 0xC7, 0x2C, 0xE7, 0x83, 0x49, 0x3B, 0x15, 0xAE, 0x8A, + 0x68, 0xB9, 0x57, 0x97 +}; + +static const unsigned char TA2_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA3_DN[] = { + 0x30, 0x81, 0xB4, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0B, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x6E, 0x65, + 0x74, 0x31, 0x40, 0x30, 0x3E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x14, 0x37, + 0x77, 0x77, 0x77, 0x2E, 0x65, 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, + 0x6E, 0x65, 0x74, 0x2F, 0x43, 0x50, 0x53, 0x5F, 0x32, 0x30, 0x34, 0x38, + 0x20, 0x69, 0x6E, 0x63, 0x6F, 0x72, 0x70, 0x2E, 0x20, 0x62, 0x79, 0x20, + 0x72, 0x65, 0x66, 0x2E, 0x20, 0x28, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x73, + 0x20, 0x6C, 0x69, 0x61, 0x62, 0x2E, 0x29, 0x31, 0x25, 0x30, 0x23, 0x06, + 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1C, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, + 0x39, 0x39, 0x20, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x6E, + 0x65, 0x74, 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x33, + 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2A, 0x45, 0x6E, 0x74, + 0x72, 0x75, 0x73, 0x74, 0x2E, 0x6E, 0x65, 0x74, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x28, 0x32, 0x30, + 0x34, 0x38, 0x29 +}; + +static const unsigned char TA3_RSA_N[] = { + 0xAD, 0x4D, 0x4B, 0xA9, 0x12, 0x86, 0xB2, 0xEA, 0xA3, 0x20, 0x07, 0x15, + 0x16, 0x64, 0x2A, 0x2B, 0x4B, 0xD1, 0xBF, 0x0B, 0x4A, 0x4D, 0x8E, 0xED, + 0x80, 0x76, 0xA5, 0x67, 0xB7, 0x78, 0x40, 0xC0, 0x73, 0x42, 0xC8, 0x68, + 0xC0, 0xDB, 0x53, 0x2B, 0xDD, 0x5E, 0xB8, 0x76, 0x98, 0x35, 0x93, 0x8B, + 0x1A, 0x9D, 0x7C, 0x13, 0x3A, 0x0E, 0x1F, 0x5B, 0xB7, 0x1E, 0xCF, 0xE5, + 0x24, 0x14, 0x1E, 0xB1, 0x81, 0xA9, 0x8D, 0x7D, 0xB8, 0xCC, 0x6B, 0x4B, + 0x03, 0xF1, 0x02, 0x0C, 0xDC, 0xAB, 0xA5, 0x40, 0x24, 0x00, 0x7F, 0x74, + 0x94, 0xA1, 0x9D, 0x08, 0x29, 0xB3, 0x88, 0x0B, 0xF5, 0x87, 0x77, 0x9D, + 0x55, 0xCD, 0xE4, 0xC3, 0x7E, 0xD7, 0x6A, 0x64, 0xAB, 0x85, 0x14, 0x86, + 0x95, 0x5B, 0x97, 0x32, 0x50, 0x6F, 0x3D, 0xC8, 0xBA, 0x66, 0x0C, 0xE3, + 0xFC, 0xBD, 0xB8, 0x49, 0xC1, 0x76, 0x89, 0x49, 0x19, 0xFD, 0xC0, 0xA8, + 0xBD, 0x89, 0xA3, 0x67, 0x2F, 0xC6, 0x9F, 0xBC, 0x71, 0x19, 0x60, 0xB8, + 0x2D, 0xE9, 0x2C, 0xC9, 0x90, 0x76, 0x66, 0x7B, 0x94, 0xE2, 0xAF, 0x78, + 0xD6, 0x65, 0x53, 0x5D, 0x3C, 0xD6, 0x9C, 0xB2, 0xCF, 0x29, 0x03, 0xF9, + 0x2F, 0xA4, 0x50, 0xB2, 0xD4, 0x48, 0xCE, 0x05, 0x32, 0x55, 0x8A, 0xFD, + 0xB2, 0x64, 0x4C, 0x0E, 0xE4, 0x98, 0x07, 0x75, 0xDB, 0x7F, 0xDF, 0xB9, + 0x08, 0x55, 0x60, 0x85, 0x30, 0x29, 0xF9, 0x7B, 0x48, 0xA4, 0x69, 0x86, + 0xE3, 0x35, 0x3F, 0x1E, 0x86, 0x5D, 0x7A, 0x7A, 0x15, 0xBD, 0xEF, 0x00, + 0x8E, 0x15, 0x22, 0x54, 0x17, 0x00, 0x90, 0x26, 0x93, 0xBC, 0x0E, 0x49, + 0x68, 0x91, 0xBF, 0xF8, 0x47, 0xD3, 0x9D, 0x95, 0x42, 0xC1, 0x0E, 0x4D, + 0xDF, 0x6F, 0x26, 0xCF, 0xC3, 0x18, 0x21, 0x62, 0x66, 0x43, 0x70, 0xD6, + 0xD5, 0xC0, 0x07, 0xE1 +}; + +static const unsigned char TA3_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA4_DN[] = { + 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x49, 0x45, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x09, 0x42, 0x61, 0x6C, 0x74, 0x69, 0x6D, 0x6F, 0x72, 0x65, 0x31, + 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x0A, 0x43, 0x79, + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x42, 0x61, 0x6C, 0x74, 0x69, + 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74 +}; + +static const unsigned char TA4_RSA_N[] = { + 0xA3, 0x04, 0xBB, 0x22, 0xAB, 0x98, 0x3D, 0x57, 0xE8, 0x26, 0x72, 0x9A, + 0xB5, 0x79, 0xD4, 0x29, 0xE2, 0xE1, 0xE8, 0x95, 0x80, 0xB1, 0xB0, 0xE3, + 0x5B, 0x8E, 0x2B, 0x29, 0x9A, 0x64, 0xDF, 0xA1, 0x5D, 0xED, 0xB0, 0x09, + 0x05, 0x6D, 0xDB, 0x28, 0x2E, 0xCE, 0x62, 0xA2, 0x62, 0xFE, 0xB4, 0x88, + 0xDA, 0x12, 0xEB, 0x38, 0xEB, 0x21, 0x9D, 0xC0, 0x41, 0x2B, 0x01, 0x52, + 0x7B, 0x88, 0x77, 0xD3, 0x1C, 0x8F, 0xC7, 0xBA, 0xB9, 0x88, 0xB5, 0x6A, + 0x09, 0xE7, 0x73, 0xE8, 0x11, 0x40, 0xA7, 0xD1, 0xCC, 0xCA, 0x62, 0x8D, + 0x2D, 0xE5, 0x8F, 0x0B, 0xA6, 0x50, 0xD2, 0xA8, 0x50, 0xC3, 0x28, 0xEA, + 0xF5, 0xAB, 0x25, 0x87, 0x8A, 0x9A, 0x96, 0x1C, 0xA9, 0x67, 0xB8, 0x3F, + 0x0C, 0xD5, 0xF7, 0xF9, 0x52, 0x13, 0x2F, 0xC2, 0x1B, 0xD5, 0x70, 0x70, + 0xF0, 0x8F, 0xC0, 0x12, 0xCA, 0x06, 0xCB, 0x9A, 0xE1, 0xD9, 0xCA, 0x33, + 0x7A, 0x77, 0xD6, 0xF8, 0xEC, 0xB9, 0xF1, 0x68, 0x44, 0x42, 0x48, 0x13, + 0xD2, 0xC0, 0xC2, 0xA4, 0xAE, 0x5E, 0x60, 0xFE, 0xB6, 0xA6, 0x05, 0xFC, + 0xB4, 0xDD, 0x07, 0x59, 0x02, 0xD4, 0x59, 0x18, 0x98, 0x63, 0xF5, 0xA5, + 0x63, 0xE0, 0x90, 0x0C, 0x7D, 0x5D, 0xB2, 0x06, 0x7A, 0xF3, 0x85, 0xEA, + 0xEB, 0xD4, 0x03, 0xAE, 0x5E, 0x84, 0x3E, 0x5F, 0xFF, 0x15, 0xED, 0x69, + 0xBC, 0xF9, 0x39, 0x36, 0x72, 0x75, 0xCF, 0x77, 0x52, 0x4D, 0xF3, 0xC9, + 0x90, 0x2C, 0xB9, 0x3D, 0xE5, 0xC9, 0x23, 0x53, 0x3F, 0x1F, 0x24, 0x98, + 0x21, 0x5C, 0x07, 0x99, 0x29, 0xBD, 0xC6, 0x3A, 0xEC, 0xE7, 0x6E, 0x86, + 0x3A, 0x6B, 0x97, 0x74, 0x63, 0x33, 0xBD, 0x68, 0x18, 0x31, 0xF0, 0x78, + 0x8D, 0x76, 0xBF, 0xFC, 0x9E, 0x8E, 0x5D, 0x2A, 0x86, 0xA7, 0x4D, 0x90, + 0xDC, 0x27, 0x1A, 0x39 +}; + +static const unsigned char TA4_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA5_DN[] = { + 0x30, 0x6F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x53, 0x45, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0B, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x41, + 0x42, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1D, + 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x54, 0x54, 0x50, 0x20, 0x4E, 0x65, + 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x19, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x20, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x43, 0x41, + 0x20, 0x52, 0x6F, 0x6F, 0x74 +}; + +static const unsigned char TA5_RSA_N[] = { + 0xB7, 0xF7, 0x1A, 0x33, 0xE6, 0xF2, 0x00, 0x04, 0x2D, 0x39, 0xE0, 0x4E, + 0x5B, 0xED, 0x1F, 0xBC, 0x6C, 0x0F, 0xCD, 0xB5, 0xFA, 0x23, 0xB6, 0xCE, + 0xDE, 0x9B, 0x11, 0x33, 0x97, 0xA4, 0x29, 0x4C, 0x7D, 0x93, 0x9F, 0xBD, + 0x4A, 0xBC, 0x93, 0xED, 0x03, 0x1A, 0xE3, 0x8F, 0xCF, 0xE5, 0x6D, 0x50, + 0x5A, 0xD6, 0x97, 0x29, 0x94, 0x5A, 0x80, 0xB0, 0x49, 0x7A, 0xDB, 0x2E, + 0x95, 0xFD, 0xB8, 0xCA, 0xBF, 0x37, 0x38, 0x2D, 0x1E, 0x3E, 0x91, 0x41, + 0xAD, 0x70, 0x56, 0xC7, 0xF0, 0x4F, 0x3F, 0xE8, 0x32, 0x9E, 0x74, 0xCA, + 0xC8, 0x90, 0x54, 0xE9, 0xC6, 0x5F, 0x0F, 0x78, 0x9D, 0x9A, 0x40, 0x3C, + 0x0E, 0xAC, 0x61, 0xAA, 0x5E, 0x14, 0x8F, 0x9E, 0x87, 0xA1, 0x6A, 0x50, + 0xDC, 0xD7, 0x9A, 0x4E, 0xAF, 0x05, 0xB3, 0xA6, 0x71, 0x94, 0x9C, 0x71, + 0xB3, 0x50, 0x60, 0x0A, 0xC7, 0x13, 0x9D, 0x38, 0x07, 0x86, 0x02, 0xA8, + 0xE9, 0xA8, 0x69, 0x26, 0x18, 0x90, 0xAB, 0x4C, 0xB0, 0x4F, 0x23, 0xAB, + 0x3A, 0x4F, 0x84, 0xD8, 0xDF, 0xCE, 0x9F, 0xE1, 0x69, 0x6F, 0xBB, 0xD7, + 0x42, 0xD7, 0x6B, 0x44, 0xE4, 0xC7, 0xAD, 0xEE, 0x6D, 0x41, 0x5F, 0x72, + 0x5A, 0x71, 0x08, 0x37, 0xB3, 0x79, 0x65, 0xA4, 0x59, 0xA0, 0x94, 0x37, + 0xF7, 0x00, 0x2F, 0x0D, 0xC2, 0x92, 0x72, 0xDA, 0xD0, 0x38, 0x72, 0xDB, + 0x14, 0xA8, 0x45, 0xC4, 0x5D, 0x2A, 0x7D, 0xB7, 0xB4, 0xD6, 0xC4, 0xEE, + 0xAC, 0xCD, 0x13, 0x44, 0xB7, 0xC9, 0x2B, 0xDD, 0x43, 0x00, 0x25, 0xFA, + 0x61, 0xB9, 0x69, 0x6A, 0x58, 0x23, 0x11, 0xB7, 0xA7, 0x33, 0x8F, 0x56, + 0x75, 0x59, 0xF5, 0xCD, 0x29, 0xD7, 0x46, 0xB7, 0x0A, 0x2B, 0x65, 0xB6, + 0xD3, 0x42, 0x6F, 0x15, 0xB2, 0xB8, 0x7B, 0xFB, 0xEF, 0xE9, 0x5D, 0x53, + 0xD5, 0x34, 0x5A, 0x27 +}; + +static const unsigned char TA5_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA6_DN[] = { + 0x30, 0x81, 0xB0, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0D, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, + 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x30, 0x77, 0x77, 0x77, 0x2E, 0x65, 0x6E, 0x74, 0x72, 0x75, + 0x73, 0x74, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x43, 0x50, 0x53, 0x20, 0x69, + 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6E, 0x63, 0x65, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x16, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x45, + 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, + 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x45, + 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA6_RSA_N[] = { + 0xB6, 0x95, 0xB6, 0x43, 0x42, 0xFA, 0xC6, 0x6D, 0x2A, 0x6F, 0x48, 0xDF, + 0x94, 0x4C, 0x39, 0x57, 0x05, 0xEE, 0xC3, 0x79, 0x11, 0x41, 0x68, 0x36, + 0xED, 0xEC, 0xFE, 0x9A, 0x01, 0x8F, 0xA1, 0x38, 0x28, 0xFC, 0xF7, 0x10, + 0x46, 0x66, 0x2E, 0x4D, 0x1E, 0x1A, 0xB1, 0x1A, 0x4E, 0xC6, 0xD1, 0xC0, + 0x95, 0x88, 0xB0, 0xC9, 0xFF, 0x31, 0x8B, 0x33, 0x03, 0xDB, 0xB7, 0x83, + 0x7B, 0x3E, 0x20, 0x84, 0x5E, 0xED, 0xB2, 0x56, 0x28, 0xA7, 0xF8, 0xE0, + 0xB9, 0x40, 0x71, 0x37, 0xC5, 0xCB, 0x47, 0x0E, 0x97, 0x2A, 0x68, 0xC0, + 0x22, 0x95, 0x62, 0x15, 0xDB, 0x47, 0xD9, 0xF5, 0xD0, 0x2B, 0xFF, 0x82, + 0x4B, 0xC9, 0xAD, 0x3E, 0xDE, 0x4C, 0xDB, 0x90, 0x80, 0x50, 0x3F, 0x09, + 0x8A, 0x84, 0x00, 0xEC, 0x30, 0x0A, 0x3D, 0x18, 0xCD, 0xFB, 0xFD, 0x2A, + 0x59, 0x9A, 0x23, 0x95, 0x17, 0x2C, 0x45, 0x9E, 0x1F, 0x6E, 0x43, 0x79, + 0x6D, 0x0C, 0x5C, 0x98, 0xFE, 0x48, 0xA7, 0xC5, 0x23, 0x47, 0x5C, 0x5E, + 0xFD, 0x6E, 0xE7, 0x1E, 0xB4, 0xF6, 0x68, 0x45, 0xD1, 0x86, 0x83, 0x5B, + 0xA2, 0x8A, 0x8D, 0xB1, 0xE3, 0x29, 0x80, 0xFE, 0x25, 0x71, 0x88, 0xAD, + 0xBE, 0xBC, 0x8F, 0xAC, 0x52, 0x96, 0x4B, 0xAA, 0x51, 0x8D, 0xE4, 0x13, + 0x31, 0x19, 0xE8, 0x4E, 0x4D, 0x9F, 0xDB, 0xAC, 0xB3, 0x6A, 0xD5, 0xBC, + 0x39, 0x54, 0x71, 0xCA, 0x7A, 0x7A, 0x7F, 0x90, 0xDD, 0x7D, 0x1D, 0x80, + 0xD9, 0x81, 0xBB, 0x59, 0x26, 0xC2, 0x11, 0xFE, 0xE6, 0x93, 0xE2, 0xF7, + 0x80, 0xE4, 0x65, 0xFB, 0x34, 0x37, 0x0E, 0x29, 0x80, 0x70, 0x4D, 0xAF, + 0x38, 0x86, 0x2E, 0x9E, 0x7F, 0x57, 0xAF, 0x9E, 0x17, 0xAE, 0xEB, 0x1C, + 0xCB, 0x28, 0x21, 0x5F, 0xB6, 0x1C, 0xD8, 0xE7, 0xA2, 0x04, 0x22, 0xF9, + 0xD3, 0xDA, 0xD8, 0xCB +}; + +static const unsigned char TA6_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA7_DN[] = { + 0x30, 0x42, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x12, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, + 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA7_RSA_N[] = { + 0xDA, 0xCC, 0x18, 0x63, 0x30, 0xFD, 0xF4, 0x17, 0x23, 0x1A, 0x56, 0x7E, + 0x5B, 0xDF, 0x3C, 0x6C, 0x38, 0xE4, 0x71, 0xB7, 0x78, 0x91, 0xD4, 0xBC, + 0xA1, 0xD8, 0x4C, 0xF8, 0xA8, 0x43, 0xB6, 0x03, 0xE9, 0x4D, 0x21, 0x07, + 0x08, 0x88, 0xDA, 0x58, 0x2F, 0x66, 0x39, 0x29, 0xBD, 0x05, 0x78, 0x8B, + 0x9D, 0x38, 0xE8, 0x05, 0xB7, 0x6A, 0x7E, 0x71, 0xA4, 0xE6, 0xC4, 0x60, + 0xA6, 0xB0, 0xEF, 0x80, 0xE4, 0x89, 0x28, 0x0F, 0x9E, 0x25, 0xD6, 0xED, + 0x83, 0xF3, 0xAD, 0xA6, 0x91, 0xC7, 0x98, 0xC9, 0x42, 0x18, 0x35, 0x14, + 0x9D, 0xAD, 0x98, 0x46, 0x92, 0x2E, 0x4F, 0xCA, 0xF1, 0x87, 0x43, 0xC1, + 0x16, 0x95, 0x57, 0x2D, 0x50, 0xEF, 0x89, 0x2D, 0x80, 0x7A, 0x57, 0xAD, + 0xF2, 0xEE, 0x5F, 0x6B, 0xD2, 0x00, 0x8D, 0xB9, 0x14, 0xF8, 0x14, 0x15, + 0x35, 0xD9, 0xC0, 0x46, 0xA3, 0x7B, 0x72, 0xC8, 0x91, 0xBF, 0xC9, 0x55, + 0x2B, 0xCD, 0xD0, 0x97, 0x3E, 0x9C, 0x26, 0x64, 0xCC, 0xDF, 0xCE, 0x83, + 0x19, 0x71, 0xCA, 0x4E, 0xE6, 0xD4, 0xD5, 0x7B, 0xA9, 0x19, 0xCD, 0x55, + 0xDE, 0xC8, 0xEC, 0xD2, 0x5E, 0x38, 0x53, 0xE5, 0x5C, 0x4F, 0x8C, 0x2D, + 0xFE, 0x50, 0x23, 0x36, 0xFC, 0x66, 0xE6, 0xCB, 0x8E, 0xA4, 0x39, 0x19, + 0x00, 0xB7, 0x95, 0x02, 0x39, 0x91, 0x0B, 0x0E, 0xFE, 0x38, 0x2E, 0xD1, + 0x1D, 0x05, 0x9A, 0xF6, 0x4D, 0x3E, 0x6F, 0x0F, 0x07, 0x1D, 0xAF, 0x2C, + 0x1E, 0x8F, 0x60, 0x39, 0xE2, 0xFA, 0x36, 0x53, 0x13, 0x39, 0xD4, 0x5E, + 0x26, 0x2B, 0xDB, 0x3D, 0xA8, 0x14, 0xBD, 0x32, 0xEB, 0x18, 0x03, 0x28, + 0x52, 0x04, 0x71, 0xE5, 0xAB, 0x33, 0x3D, 0xE1, 0x38, 0xBB, 0x07, 0x36, + 0x84, 0x62, 0x9C, 0x79, 0xEA, 0x16, 0x30, 0xF4, 0x5F, 0xC0, 0x2B, 0xE8, + 0x71, 0x6B, 0xE4, 0xF9 +}; + +static const unsigned char TA7_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA8_DN[] = { + 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x15, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x55, + 0x6E, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA8_RSA_N[] = { + 0xA6, 0x15, 0x55, 0xA0, 0xA3, 0xC6, 0xE0, 0x1F, 0x8C, 0x9D, 0x21, 0x50, + 0xD7, 0xC1, 0xBE, 0x2B, 0x5B, 0xB5, 0xA4, 0x9E, 0xA1, 0xD9, 0x72, 0x58, + 0xBD, 0x00, 0x1B, 0x4C, 0xBF, 0x61, 0xC9, 0x14, 0x1D, 0x45, 0x82, 0xAB, + 0xC6, 0x1D, 0x80, 0xD6, 0x3D, 0xEB, 0x10, 0x9C, 0x3A, 0xAF, 0x6D, 0x24, + 0xF8, 0xBC, 0x71, 0x01, 0x9E, 0x06, 0xF5, 0x7C, 0x5F, 0x1E, 0xC1, 0x0E, + 0x55, 0xCA, 0x83, 0x9A, 0x59, 0x30, 0xAE, 0x19, 0xCB, 0x30, 0x48, 0x95, + 0xED, 0x22, 0x37, 0x8D, 0xF4, 0x4A, 0x9A, 0x72, 0x66, 0x3E, 0xAD, 0x95, + 0xC0, 0xE0, 0x16, 0x00, 0xE0, 0x10, 0x1F, 0x2B, 0x31, 0x0E, 0xD7, 0x94, + 0x54, 0xD3, 0x42, 0x33, 0xA0, 0x34, 0x1D, 0x1E, 0x45, 0x76, 0xDD, 0x4F, + 0xCA, 0x18, 0x37, 0xEC, 0x85, 0x15, 0x7A, 0x19, 0x08, 0xFC, 0xD5, 0xC7, + 0x9C, 0xF0, 0xF2, 0xA9, 0x2E, 0x10, 0xA9, 0x92, 0xE6, 0x3D, 0x58, 0x3D, + 0xA9, 0x16, 0x68, 0x3C, 0x2F, 0x75, 0x21, 0x18, 0x7F, 0x28, 0x77, 0xA5, + 0xE1, 0x61, 0x17, 0xB7, 0xA6, 0xE9, 0xF8, 0x1E, 0x99, 0xDB, 0x73, 0x6E, + 0xF4, 0x0A, 0xA2, 0x21, 0x6C, 0xEE, 0xDA, 0xAA, 0x85, 0x92, 0x66, 0xAF, + 0xF6, 0x7A, 0x6B, 0x82, 0xDA, 0xBA, 0x22, 0x08, 0x35, 0x0F, 0xCF, 0x42, + 0xF1, 0x35, 0xFA, 0x6A, 0xEE, 0x7E, 0x2B, 0x25, 0xCC, 0x3A, 0x11, 0xE4, + 0x6D, 0xAF, 0x73, 0xB2, 0x76, 0x1D, 0xAD, 0xD0, 0xB2, 0x78, 0x67, 0x1A, + 0xA4, 0x39, 0x1C, 0x51, 0x0B, 0x67, 0x56, 0x83, 0xFD, 0x38, 0x5D, 0x0D, + 0xCE, 0xDD, 0xF0, 0xBB, 0x2B, 0x96, 0x1F, 0xDE, 0x7B, 0x32, 0x52, 0xFD, + 0x1D, 0xBB, 0xB5, 0x06, 0xA1, 0xB2, 0x21, 0x5E, 0xA5, 0xD6, 0x95, 0x68, + 0x7F, 0xF0, 0x99, 0x9E, 0xDC, 0x45, 0x08, 0x3E, 0xE7, 0xD2, 0x09, 0x0D, + 0x35, 0x94, 0xDD, 0x80, 0x4E, 0x53, 0x97, 0xD7, 0xB5, 0x09, 0x44, 0x20, + 0x64, 0x16, 0x17, 0x03, 0x02, 0x4C, 0x53, 0x0D, 0x68, 0xDE, 0xD5, 0xAA, + 0x72, 0x4D, 0x93, 0x6D, 0x82, 0x0E, 0xDB, 0x9C, 0xBD, 0xCF, 0xB4, 0xF3, + 0x5C, 0x5D, 0x54, 0x7A, 0x69, 0x09, 0x96, 0xD6, 0xDB, 0x11, 0xC1, 0x8D, + 0x75, 0xA8, 0xB4, 0xCF, 0x39, 0xC8, 0xCE, 0x3C, 0xBC, 0x24, 0x7C, 0xE6, + 0x62, 0xCA, 0xE1, 0xBD, 0x7D, 0xA7, 0xBD, 0x57, 0x65, 0x0B, 0xE4, 0xFE, + 0x25, 0xED, 0xB6, 0x69, 0x10, 0xDC, 0x28, 0x1A, 0x46, 0xBD, 0x01, 0x1D, + 0xD0, 0x97, 0xB5, 0xE1, 0x98, 0x3B, 0xC0, 0x37, 0x64, 0xD6, 0x3D, 0x94, + 0xEE, 0x0B, 0xE1, 0xF5, 0x28, 0xAE, 0x0B, 0x56, 0xBF, 0x71, 0x8B, 0x23, + 0x29, 0x41, 0x8E, 0x86, 0xC5, 0x4B, 0x52, 0x7B, 0xD8, 0x71, 0xAB, 0x1F, + 0x8A, 0x15, 0xA6, 0x3B, 0x83, 0x5A, 0xD7, 0x58, 0x01, 0x51, 0xC6, 0x4C, + 0x41, 0xD9, 0x7F, 0xD8, 0x41, 0x67, 0x72, 0xA2, 0x28, 0xDF, 0x60, 0x83, + 0xA9, 0x9E, 0xC8, 0x7B, 0xFC, 0x53, 0x73, 0x72, 0x59, 0xF5, 0x93, 0x7A, + 0x17, 0x76, 0x0E, 0xCE, 0xF7, 0xE5, 0x5C, 0xD9, 0x0B, 0x55, 0x34, 0xA2, + 0xAA, 0x5B, 0xB5, 0x6A, 0x54, 0xE7, 0x13, 0xCA, 0x57, 0xEC, 0x97, 0x6D, + 0xF4, 0x5E, 0x06, 0x2F, 0x45, 0x8B, 0x58, 0xD4, 0x23, 0x16, 0x92, 0xE4, + 0x16, 0x6E, 0x28, 0x63, 0x59, 0x30, 0xDF, 0x50, 0x01, 0x9C, 0x63, 0x89, + 0x1A, 0x9F, 0xDB, 0x17, 0x94, 0x82, 0x70, 0x37, 0xC3, 0x24, 0x9E, 0x9A, + 0x47, 0xD6, 0x5A, 0xCA, 0x4E, 0xA8, 0x69, 0x89, 0x72, 0x1F, 0x91, 0x6C, + 0xDB, 0x7E, 0x9E, 0x1B, 0xAD, 0xC7, 0x1F, 0x73, 0xDD, 0x2C, 0x4F, 0x19, + 0x65, 0xFD, 0x7F, 0x93, 0x40, 0x10, 0x2E, 0xD2, 0xF0, 0xED, 0x3C, 0x9E, + 0x2E, 0x28, 0x3E, 0x69, 0x26, 0x33, 0xC5, 0x7B +}; + +static const unsigned char TA8_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA9_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x55, + 0x6E, 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x43, 0x41, 0x20, + 0x32 +}; + +static const unsigned char TA9_RSA_N[] = { + 0xB3, 0x54, 0x52, 0xC1, 0xC9, 0x3E, 0xF2, 0xD9, 0xDC, 0xB1, 0x53, 0x1A, + 0x59, 0x29, 0xE7, 0xB1, 0xC3, 0x45, 0x28, 0xE5, 0xD7, 0xD1, 0xED, 0xC5, + 0xC5, 0x4B, 0xA1, 0xAA, 0x74, 0x7B, 0x57, 0xAF, 0x4A, 0x26, 0xFC, 0xD8, + 0xF5, 0x5E, 0xA7, 0x6E, 0x19, 0xDB, 0x74, 0x0C, 0x4F, 0x35, 0x5B, 0x32, + 0x0B, 0x01, 0xE3, 0xDB, 0xEB, 0x7A, 0x77, 0x35, 0xEA, 0xAA, 0x5A, 0xE0, + 0xD6, 0xE8, 0xA1, 0x57, 0x94, 0xF0, 0x90, 0xA3, 0x74, 0x56, 0x94, 0x44, + 0x30, 0x03, 0x1E, 0x5C, 0x4E, 0x2B, 0x85, 0x26, 0x74, 0x82, 0x7A, 0x0C, + 0x76, 0xA0, 0x6F, 0x4D, 0xCE, 0x41, 0x2D, 0xA0, 0x15, 0x06, 0x14, 0x5F, + 0xB7, 0x42, 0xCD, 0x7B, 0x8F, 0x58, 0x61, 0x34, 0xDC, 0x2A, 0x08, 0xF9, + 0x2E, 0xC3, 0x01, 0xA6, 0x22, 0x44, 0x1C, 0x4C, 0x07, 0x82, 0xE6, 0x5B, + 0xCE, 0xD0, 0x4A, 0x7C, 0x04, 0xD3, 0x19, 0x73, 0x27, 0xF0, 0xAA, 0x98, + 0x7F, 0x2E, 0xAF, 0x4E, 0xEB, 0x87, 0x1E, 0x24, 0x77, 0x6A, 0x5D, 0xB6, + 0xE8, 0x5B, 0x45, 0xBA, 0xDC, 0xC3, 0xA1, 0x05, 0x6F, 0x56, 0x8E, 0x8F, + 0x10, 0x26, 0xA5, 0x49, 0xC3, 0x2E, 0xD7, 0x41, 0x87, 0x22, 0xE0, 0x4F, + 0x86, 0xCA, 0x60, 0xB5, 0xEA, 0xA1, 0x63, 0xC0, 0x01, 0x97, 0x10, 0x79, + 0xBD, 0x00, 0x3C, 0x12, 0x6D, 0x2B, 0x15, 0xB1, 0xAC, 0x4B, 0xB1, 0xEE, + 0x18, 0xB9, 0x4E, 0x96, 0xDC, 0xDC, 0x76, 0xFF, 0x3B, 0xBE, 0xCF, 0x5F, + 0x03, 0xC0, 0xFC, 0x3B, 0xE8, 0xBE, 0x46, 0x1B, 0xFF, 0xDA, 0x40, 0xC2, + 0x52, 0xF7, 0xFE, 0xE3, 0x3A, 0xF7, 0x6A, 0x77, 0x35, 0xD0, 0xDA, 0x8D, + 0xEB, 0x5E, 0x18, 0x6A, 0x31, 0xC7, 0x1E, 0xBA, 0x3C, 0x1B, 0x28, 0xD6, + 0x6B, 0x54, 0xC6, 0xAA, 0x5B, 0xD7, 0xA2, 0x2C, 0x1B, 0x19, 0xCC, 0xA2, + 0x02, 0xF6, 0x9B, 0x59, 0xBD, 0x37, 0x6B, 0x86, 0xB5, 0x6D, 0x82, 0xBA, + 0xD8, 0xEA, 0xC9, 0x56, 0xBC, 0xA9, 0x36, 0x58, 0xFD, 0x3E, 0x19, 0xF3, + 0xED, 0x0C, 0x26, 0xA9, 0x93, 0x38, 0xF8, 0x4F, 0xC1, 0x5D, 0x22, 0x06, + 0xD0, 0x97, 0xEA, 0xE1, 0xAD, 0xC6, 0x55, 0xE0, 0x81, 0x2B, 0x28, 0x83, + 0x3A, 0xFA, 0xF4, 0x7B, 0x21, 0x51, 0x00, 0xBE, 0x52, 0x38, 0xCE, 0xCD, + 0x66, 0x79, 0xA8, 0xF4, 0x81, 0x56, 0xE2, 0xD0, 0x83, 0x09, 0x47, 0x51, + 0x5B, 0x50, 0x6A, 0xCF, 0xDB, 0x48, 0x1A, 0x5D, 0x3E, 0xF7, 0xCB, 0xF6, + 0x65, 0xF7, 0x6C, 0xF1, 0x95, 0xF8, 0x02, 0x3B, 0x32, 0x56, 0x82, 0x39, + 0x7A, 0x5B, 0xBD, 0x2F, 0x89, 0x1B, 0xBF, 0xA1, 0xB4, 0xE8, 0xFF, 0x7F, + 0x8D, 0x8C, 0xDF, 0x03, 0xF1, 0x60, 0x4E, 0x58, 0x11, 0x4C, 0xEB, 0xA3, + 0x3F, 0x10, 0x2B, 0x83, 0x9A, 0x01, 0x73, 0xD9, 0x94, 0x6D, 0x84, 0x00, + 0x27, 0x66, 0xAC, 0xF0, 0x70, 0x40, 0x09, 0x42, 0x92, 0xAD, 0x4F, 0x93, + 0x0D, 0x61, 0x09, 0x51, 0x24, 0xD8, 0x92, 0xD5, 0x0B, 0x94, 0x61, 0xB2, + 0x87, 0xB2, 0xED, 0xFF, 0x9A, 0x35, 0xFF, 0x85, 0x54, 0xCA, 0xED, 0x44, + 0x43, 0xAC, 0x1B, 0x3C, 0x16, 0x6B, 0x48, 0x4A, 0x0A, 0x1C, 0x40, 0x88, + 0x1F, 0x92, 0xC2, 0x0B, 0x00, 0x05, 0xFF, 0xF2, 0xC8, 0x02, 0x4A, 0xA4, + 0xAA, 0xA9, 0xCC, 0x99, 0x96, 0x9C, 0x2F, 0x58, 0xE0, 0x7D, 0xE1, 0xBE, + 0xBB, 0x07, 0xDC, 0x5F, 0x04, 0x72, 0x5C, 0x31, 0x34, 0xC3, 0xEC, 0x5F, + 0x2D, 0xE0, 0x3D, 0x64, 0x90, 0x22, 0xE6, 0xD1, 0xEC, 0xB8, 0x2E, 0xDD, + 0x59, 0xAE, 0xD9, 0xA1, 0x37, 0xBF, 0x54, 0x35, 0xDC, 0x73, 0x32, 0x4F, + 0x8C, 0x04, 0x1E, 0x33, 0xB2, 0xC9, 0x46, 0xF1, 0xD8, 0x5C, 0xC8, 0x55, + 0x50, 0xC9, 0x68, 0xBD, 0xA8, 0xBA, 0x36, 0x09 +}; + +static const unsigned char TA9_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA10_DN[] = { + 0x30, 0x7B, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x0C, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, + 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, + 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, + 0x11, 0x43, 0x6F, 0x6D, 0x6F, 0x64, 0x6F, 0x20, 0x43, 0x41, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x0C, 0x18, 0x41, 0x41, 0x41, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73 +}; + +static const unsigned char TA10_RSA_N[] = { + 0xBE, 0x40, 0x9D, 0xF4, 0x6E, 0xE1, 0xEA, 0x76, 0x87, 0x1C, 0x4D, 0x45, + 0x44, 0x8E, 0xBE, 0x46, 0xC8, 0x83, 0x06, 0x9D, 0xC1, 0x2A, 0xFE, 0x18, + 0x1F, 0x8E, 0xE4, 0x02, 0xFA, 0xF3, 0xAB, 0x5D, 0x50, 0x8A, 0x16, 0x31, + 0x0B, 0x9A, 0x06, 0xD0, 0xC5, 0x70, 0x22, 0xCD, 0x49, 0x2D, 0x54, 0x63, + 0xCC, 0xB6, 0x6E, 0x68, 0x46, 0x0B, 0x53, 0xEA, 0xCB, 0x4C, 0x24, 0xC0, + 0xBC, 0x72, 0x4E, 0xEA, 0xF1, 0x15, 0xAE, 0xF4, 0x54, 0x9A, 0x12, 0x0A, + 0xC3, 0x7A, 0xB2, 0x33, 0x60, 0xE2, 0xDA, 0x89, 0x55, 0xF3, 0x22, 0x58, + 0xF3, 0xDE, 0xDC, 0xCF, 0xEF, 0x83, 0x86, 0xA2, 0x8C, 0x94, 0x4F, 0x9F, + 0x68, 0xF2, 0x98, 0x90, 0x46, 0x84, 0x27, 0xC7, 0x76, 0xBF, 0xE3, 0xCC, + 0x35, 0x2C, 0x8B, 0x5E, 0x07, 0x64, 0x65, 0x82, 0xC0, 0x48, 0xB0, 0xA8, + 0x91, 0xF9, 0x61, 0x9F, 0x76, 0x20, 0x50, 0xA8, 0x91, 0xC7, 0x66, 0xB5, + 0xEB, 0x78, 0x62, 0x03, 0x56, 0xF0, 0x8A, 0x1A, 0x13, 0xEA, 0x31, 0xA3, + 0x1E, 0xA0, 0x99, 0xFD, 0x38, 0xF6, 0xF6, 0x27, 0x32, 0x58, 0x6F, 0x07, + 0xF5, 0x6B, 0xB8, 0xFB, 0x14, 0x2B, 0xAF, 0xB7, 0xAA, 0xCC, 0xD6, 0x63, + 0x5F, 0x73, 0x8C, 0xDA, 0x05, 0x99, 0xA8, 0x38, 0xA8, 0xCB, 0x17, 0x78, + 0x36, 0x51, 0xAC, 0xE9, 0x9E, 0xF4, 0x78, 0x3A, 0x8D, 0xCF, 0x0F, 0xD9, + 0x42, 0xE2, 0x98, 0x0C, 0xAB, 0x2F, 0x9F, 0x0E, 0x01, 0xDE, 0xEF, 0x9F, + 0x99, 0x49, 0xF1, 0x2D, 0xDF, 0xAC, 0x74, 0x4D, 0x1B, 0x98, 0xB5, 0x47, + 0xC5, 0xE5, 0x29, 0xD1, 0xF9, 0x90, 0x18, 0xC7, 0x62, 0x9C, 0xBE, 0x83, + 0xC7, 0x26, 0x7B, 0x3E, 0x8A, 0x25, 0xC7, 0xC0, 0xDD, 0x9D, 0xE6, 0x35, + 0x68, 0x10, 0x20, 0x9D, 0x8F, 0xD8, 0xDE, 0xD2, 0xC3, 0x84, 0x9C, 0x0D, + 0x5E, 0xE8, 0x2F, 0xC9 +}; + +static const unsigned char TA10_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA11_DN[] = { + 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x4D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x1C, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x2E, 0x30, + 0x2C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x51, 0x75, 0x6F, 0x56, + 0x61, 0x64, 0x69, 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA11_RSA_N[] = { + 0xBF, 0x61, 0xB5, 0x95, 0x53, 0xBA, 0x57, 0xFC, 0xFA, 0xF2, 0x67, 0x0B, + 0x3A, 0x1A, 0xDF, 0x11, 0x80, 0x64, 0x95, 0xB4, 0xD1, 0xBC, 0xCD, 0x7A, + 0xCF, 0xF6, 0x29, 0x96, 0x2E, 0x24, 0x54, 0x40, 0x24, 0x38, 0xF7, 0x1A, + 0x85, 0xDC, 0x58, 0x4C, 0xCB, 0xA4, 0x27, 0x42, 0x97, 0xD0, 0x9F, 0x83, + 0x8A, 0xC3, 0xE4, 0x06, 0x03, 0x5B, 0x00, 0xA5, 0x51, 0x1E, 0x70, 0x04, + 0x74, 0xE2, 0xC1, 0xD4, 0x3A, 0xAB, 0xD7, 0xAD, 0x3B, 0x07, 0x18, 0x05, + 0x8E, 0xFD, 0x83, 0xAC, 0xEA, 0x66, 0xD9, 0x18, 0x1B, 0x68, 0x8A, 0xF5, + 0x57, 0x1A, 0x98, 0xBA, 0xF5, 0xED, 0x76, 0x3D, 0x7C, 0xD9, 0xDE, 0x94, + 0x6A, 0x3B, 0x4B, 0x17, 0xC1, 0xD5, 0x8F, 0xBD, 0x65, 0x38, 0x3A, 0x95, + 0xD0, 0x3D, 0x55, 0x36, 0x4E, 0xDF, 0x79, 0x57, 0x31, 0x2A, 0x1E, 0xD8, + 0x59, 0x65, 0x49, 0x58, 0x20, 0x98, 0x7E, 0xAB, 0x5F, 0x7E, 0x9F, 0xE9, + 0xD6, 0x4D, 0xEC, 0x83, 0x74, 0xA9, 0xC7, 0x6C, 0xD8, 0xEE, 0x29, 0x4A, + 0x85, 0x2A, 0x06, 0x14, 0xF9, 0x54, 0xE6, 0xD3, 0xDA, 0x65, 0x07, 0x8B, + 0x63, 0x37, 0x12, 0xD7, 0xD0, 0xEC, 0xC3, 0x7B, 0x20, 0x41, 0x44, 0xA3, + 0xED, 0xCB, 0xA0, 0x17, 0xE1, 0x71, 0x65, 0xCE, 0x1D, 0x66, 0x31, 0xF7, + 0x76, 0x01, 0x19, 0xC8, 0x7D, 0x03, 0x58, 0xB6, 0x95, 0x49, 0x1D, 0xA6, + 0x12, 0x26, 0xE8, 0xC6, 0x0C, 0x76, 0xE0, 0xE3, 0x66, 0xCB, 0xEA, 0x5D, + 0xA6, 0x26, 0xEE, 0xE5, 0xCC, 0x5F, 0xBD, 0x67, 0xA7, 0x01, 0x27, 0x0E, + 0xA2, 0xCA, 0x54, 0xC5, 0xB1, 0x7A, 0x95, 0x1D, 0x71, 0x1E, 0x4A, 0x29, + 0x8A, 0x03, 0xDC, 0x6A, 0x45, 0xC1, 0xA4, 0x19, 0x5E, 0x6F, 0x36, 0xCD, + 0xC3, 0xA2, 0xB0, 0xB7, 0xFE, 0x5C, 0x38, 0xE2, 0x52, 0xBC, 0xF8, 0x44, + 0x43, 0xE6, 0x90, 0xBB +}; + +static const unsigned char TA11_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA12_DN[] = { + 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x4D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x12, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, + 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32 +}; + +static const unsigned char TA12_RSA_N[] = { + 0x9A, 0x18, 0xCA, 0x4B, 0x94, 0x0D, 0x00, 0x2D, 0xAF, 0x03, 0x29, 0x8A, + 0xF0, 0x0F, 0x81, 0xC8, 0xAE, 0x4C, 0x19, 0x85, 0x1D, 0x08, 0x9F, 0xAB, + 0x29, 0x44, 0x85, 0xF3, 0x2F, 0x81, 0xAD, 0x32, 0x1E, 0x90, 0x46, 0xBF, + 0xA3, 0x86, 0x26, 0x1A, 0x1E, 0xFE, 0x7E, 0x1C, 0x18, 0x3A, 0x5C, 0x9C, + 0x60, 0x17, 0x2A, 0x3A, 0x74, 0x83, 0x33, 0x30, 0x7D, 0x61, 0x54, 0x11, + 0xCB, 0xED, 0xAB, 0xE0, 0xE6, 0xD2, 0xA2, 0x7E, 0xF5, 0x6B, 0x6F, 0x18, + 0xB7, 0x0A, 0x0B, 0x2D, 0xFD, 0xE9, 0x3E, 0xEF, 0x0A, 0xC6, 0xB3, 0x10, + 0xE9, 0xDC, 0xC2, 0x46, 0x17, 0xF8, 0x5D, 0xFD, 0xA4, 0xDA, 0xFF, 0x9E, + 0x49, 0x5A, 0x9C, 0xE6, 0x33, 0xE6, 0x24, 0x96, 0xF7, 0x3F, 0xBA, 0x5B, + 0x2B, 0x1C, 0x7A, 0x35, 0xC2, 0xD6, 0x67, 0xFE, 0xAB, 0x66, 0x50, 0x8B, + 0x6D, 0x28, 0x60, 0x2B, 0xEF, 0xD7, 0x60, 0xC3, 0xC7, 0x93, 0xBC, 0x8D, + 0x36, 0x91, 0xF3, 0x7F, 0xF8, 0xDB, 0x11, 0x13, 0xC4, 0x9C, 0x77, 0x76, + 0xC1, 0xAE, 0xB7, 0x02, 0x6A, 0x81, 0x7A, 0xA9, 0x45, 0x83, 0xE2, 0x05, + 0xE6, 0xB9, 0x56, 0xC1, 0x94, 0x37, 0x8F, 0x48, 0x71, 0x63, 0x22, 0xEC, + 0x17, 0x65, 0x07, 0x95, 0x8A, 0x4B, 0xDF, 0x8F, 0xC6, 0x5A, 0x0A, 0xE5, + 0xB0, 0xE3, 0x5F, 0x5E, 0x6B, 0x11, 0xAB, 0x0C, 0xF9, 0x85, 0xEB, 0x44, + 0xE9, 0xF8, 0x04, 0x73, 0xF2, 0xE9, 0xFE, 0x5C, 0x98, 0x8C, 0xF5, 0x73, + 0xAF, 0x6B, 0xB4, 0x7E, 0xCD, 0xD4, 0x5C, 0x02, 0x2B, 0x4C, 0x39, 0xE1, + 0xB2, 0x95, 0x95, 0x2D, 0x42, 0x87, 0xD7, 0xD5, 0xB3, 0x90, 0x43, 0xB7, + 0x6C, 0x13, 0xF1, 0xDE, 0xDD, 0xF6, 0xC4, 0xF8, 0x89, 0x3F, 0xD1, 0x75, + 0xF5, 0x92, 0xC3, 0x91, 0xD5, 0x8A, 0x88, 0xD0, 0x90, 0xEC, 0xDC, 0x6D, + 0xDE, 0x89, 0xC2, 0x65, 0x71, 0x96, 0x8B, 0x0D, 0x03, 0xFD, 0x9C, 0xBF, + 0x5B, 0x16, 0xAC, 0x92, 0xDB, 0xEA, 0xFE, 0x79, 0x7C, 0xAD, 0xEB, 0xAF, + 0xF7, 0x16, 0xCB, 0xDB, 0xCD, 0x25, 0x2B, 0xE5, 0x1F, 0xFB, 0x9A, 0x9F, + 0xE2, 0x51, 0xCC, 0x3A, 0x53, 0x0C, 0x48, 0xE6, 0x0E, 0xBD, 0xC9, 0xB4, + 0x76, 0x06, 0x52, 0xE6, 0x11, 0x13, 0x85, 0x72, 0x63, 0x03, 0x04, 0xE0, + 0x04, 0x36, 0x2B, 0x20, 0x19, 0x02, 0xE8, 0x74, 0xA7, 0x1F, 0xB6, 0xC9, + 0x56, 0x66, 0xF0, 0x75, 0x25, 0xDC, 0x67, 0xC1, 0x0E, 0x61, 0x60, 0x88, + 0xB3, 0x3E, 0xD1, 0xA8, 0xFC, 0xA3, 0xDA, 0x1D, 0xB0, 0xD1, 0xB1, 0x23, + 0x54, 0xDF, 0x44, 0x76, 0x6D, 0xED, 0x41, 0xD8, 0xC1, 0xB2, 0x22, 0xB6, + 0x53, 0x1C, 0xDF, 0x35, 0x1D, 0xDC, 0xA1, 0x77, 0x2A, 0x31, 0xE4, 0x2D, + 0xF5, 0xE5, 0xE5, 0xDB, 0xC8, 0xE0, 0xFF, 0xE5, 0x80, 0xD7, 0x0B, 0x63, + 0xA0, 0xFF, 0x33, 0xA1, 0x0F, 0xBA, 0x2C, 0x15, 0x15, 0xEA, 0x97, 0xB3, + 0xD2, 0xA2, 0xB5, 0xBE, 0xF2, 0x8C, 0x96, 0x1E, 0x1A, 0x8F, 0x1D, 0x6C, + 0xA4, 0x61, 0x37, 0xB9, 0x86, 0x73, 0x33, 0xD7, 0x97, 0x96, 0x9E, 0x23, + 0x7D, 0x82, 0xA4, 0x4C, 0x81, 0xE2, 0xA1, 0xD1, 0xBA, 0x67, 0x5F, 0x95, + 0x07, 0xA3, 0x27, 0x11, 0xEE, 0x16, 0x10, 0x7B, 0xBC, 0x45, 0x4A, 0x4C, + 0xB2, 0x04, 0xD2, 0xAB, 0xEF, 0xD5, 0xFD, 0x0C, 0x51, 0xCE, 0x50, 0x6A, + 0x08, 0x31, 0xF9, 0x91, 0xDA, 0x0C, 0x8F, 0x64, 0x5C, 0x03, 0xC3, 0x3A, + 0x8B, 0x20, 0x3F, 0x6E, 0x8D, 0x67, 0x3D, 0x3A, 0xD6, 0xFE, 0x7D, 0x5B, + 0x88, 0xC9, 0x5E, 0xFB, 0xCC, 0x61, 0xDC, 0x8B, 0x33, 0x77, 0xD3, 0x44, + 0x32, 0x35, 0x09, 0x62, 0x04, 0x92, 0x16, 0x10, 0xD8, 0x9E, 0x27, 0x47, + 0xFB, 0x3B, 0x21, 0xE3, 0xF8, 0xEB, 0x1D, 0x5B +}; + +static const unsigned char TA12_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA13_DN[] = { + 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x4D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x12, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, + 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33 +}; + +static const unsigned char TA13_RSA_N[] = { + 0xCC, 0x57, 0x42, 0x16, 0x54, 0x9C, 0xE6, 0x98, 0xD3, 0xD3, 0x4D, 0xEE, + 0xFE, 0xED, 0xC7, 0x9F, 0x43, 0x39, 0x4A, 0x65, 0xB3, 0xE8, 0x16, 0x88, + 0x34, 0xDB, 0x0D, 0x59, 0x91, 0x74, 0xCF, 0x92, 0xB8, 0x04, 0x40, 0xAD, + 0x02, 0x4B, 0x31, 0xAB, 0xBC, 0x8D, 0x91, 0x68, 0xD8, 0x20, 0x0E, 0x1A, + 0x01, 0xE2, 0x1A, 0x7B, 0x4E, 0x17, 0x5D, 0xE2, 0x8A, 0xB7, 0x3F, 0x99, + 0x1A, 0xCD, 0xEB, 0x61, 0xAB, 0xC2, 0x65, 0xA6, 0x1F, 0xB7, 0xB7, 0xBD, + 0xB7, 0x8F, 0xFC, 0xFD, 0x70, 0x8F, 0x0B, 0xA0, 0x67, 0xBE, 0x01, 0xA2, + 0x59, 0xCF, 0x71, 0xE6, 0x0F, 0x29, 0x76, 0xFF, 0xB1, 0x56, 0x79, 0x45, + 0x2B, 0x1F, 0x9E, 0x7A, 0x54, 0xE8, 0xA3, 0x29, 0x35, 0x68, 0xA4, 0x01, + 0x4F, 0x0F, 0xA4, 0x2E, 0x37, 0xEF, 0x1B, 0xBF, 0xE3, 0x8F, 0x10, 0xA8, + 0x72, 0xAB, 0x58, 0x57, 0xE7, 0x54, 0x86, 0xC8, 0xC9, 0xF3, 0x5B, 0xDA, + 0x2C, 0xDA, 0x5D, 0x8E, 0x6E, 0x3C, 0xA3, 0x3E, 0xDA, 0xFB, 0x82, 0xE5, + 0xDD, 0xF2, 0x5C, 0xB2, 0x05, 0x33, 0x6F, 0x8A, 0x36, 0xCE, 0xD0, 0x13, + 0x4E, 0xFF, 0xBF, 0x4A, 0x0C, 0x34, 0x4C, 0xA6, 0xC3, 0x21, 0xBD, 0x50, + 0x04, 0x55, 0xEB, 0xB1, 0xBB, 0x9D, 0xFB, 0x45, 0x1E, 0x64, 0x15, 0xDE, + 0x55, 0x01, 0x8C, 0x02, 0x76, 0xB5, 0xCB, 0xA1, 0x3F, 0x42, 0x69, 0xBC, + 0x2F, 0xBD, 0x68, 0x43, 0x16, 0x56, 0x89, 0x2A, 0x37, 0x61, 0x91, 0xFD, + 0xA6, 0xAE, 0x4E, 0xC0, 0xCB, 0x14, 0x65, 0x94, 0x37, 0x4B, 0x92, 0x06, + 0xEF, 0x04, 0xD0, 0xC8, 0x9C, 0x88, 0xDB, 0x0B, 0x7B, 0x81, 0xAF, 0xB1, + 0x3D, 0x2A, 0xC4, 0x65, 0x3A, 0x78, 0xB6, 0xEE, 0xDC, 0x80, 0xB1, 0xD2, + 0xD3, 0x99, 0x9C, 0x3A, 0xEE, 0x6B, 0x5A, 0x6B, 0xB3, 0x8D, 0xB7, 0xD5, + 0xCE, 0x9C, 0xC2, 0xBE, 0xA5, 0x4B, 0x2F, 0x16, 0xB1, 0x9E, 0x68, 0x3B, + 0x06, 0x6F, 0xAE, 0x7D, 0x9F, 0xF8, 0xDE, 0xEC, 0xCC, 0x29, 0xA7, 0x98, + 0xA3, 0x25, 0x43, 0x2F, 0xEF, 0xF1, 0x5F, 0x26, 0xE1, 0x88, 0x4D, 0xF8, + 0x5E, 0x6E, 0xD7, 0xD9, 0x14, 0x6E, 0x19, 0x33, 0x69, 0xA7, 0x3B, 0x84, + 0x89, 0x93, 0xC4, 0x53, 0x55, 0x13, 0xA1, 0x51, 0x78, 0x40, 0xF8, 0xB8, + 0xC9, 0xA2, 0xEE, 0x7B, 0xBA, 0x52, 0x42, 0x83, 0x9E, 0x14, 0xED, 0x05, + 0x52, 0x5A, 0x59, 0x56, 0xA7, 0x97, 0xFC, 0x9D, 0x3F, 0x0A, 0x29, 0xD8, + 0xDC, 0x4F, 0x91, 0x0E, 0x13, 0xBC, 0xDE, 0x95, 0xA4, 0xDF, 0x8B, 0x99, + 0xBE, 0xAC, 0x9B, 0x33, 0x88, 0xEF, 0xB5, 0x81, 0xAF, 0x1B, 0xC6, 0x22, + 0x53, 0xC8, 0xF6, 0xC7, 0xEE, 0x97, 0x14, 0xB0, 0xC5, 0x7C, 0x78, 0x52, + 0xC8, 0xF0, 0xCE, 0x6E, 0x77, 0x60, 0x84, 0xA6, 0xE9, 0x2A, 0x76, 0x20, + 0xED, 0x58, 0x01, 0x17, 0x30, 0x93, 0xE9, 0x1A, 0x8B, 0xE0, 0x73, 0x63, + 0xD9, 0x6A, 0x92, 0x94, 0x49, 0x4E, 0xB4, 0xAD, 0x4A, 0x85, 0xC4, 0xA3, + 0x22, 0x30, 0xFC, 0x09, 0xED, 0x68, 0x22, 0x73, 0xA6, 0x88, 0x0C, 0x55, + 0x21, 0x58, 0xC5, 0xE1, 0x3A, 0x9F, 0x2A, 0xDD, 0xCA, 0xE1, 0x90, 0xE0, + 0xD9, 0x73, 0xAB, 0x6C, 0x80, 0xB8, 0xE8, 0x0B, 0x64, 0x93, 0xA0, 0x9C, + 0x8C, 0x19, 0xFF, 0xB3, 0xD2, 0x0C, 0xEC, 0x91, 0x26, 0x87, 0x8A, 0xB3, + 0xA2, 0xE1, 0x70, 0x8F, 0x2C, 0x0A, 0xE5, 0xCD, 0x6D, 0x68, 0x51, 0xEB, + 0xDA, 0x3F, 0x05, 0x7F, 0x8B, 0x32, 0xE6, 0x13, 0x5C, 0x6B, 0xFE, 0x5F, + 0x40, 0xE2, 0x22, 0xC8, 0xB4, 0xB4, 0x64, 0x4F, 0xD6, 0xBA, 0x7D, 0x48, + 0x3E, 0xA8, 0x69, 0x0C, 0xD7, 0xBB, 0x86, 0x71, 0xC9, 0x73, 0xB8, 0x3F, + 0x3B, 0x9D, 0x25, 0x4B, 0xDA, 0xFF, 0x40, 0xEB +}; + +static const unsigned char TA13_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA14_DN[] = { + 0x30, 0x50, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4A, 0x50, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0F, 0x53, 0x45, 0x43, 0x4F, 0x4D, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x2E, 0x6E, 0x65, 0x74, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x1E, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, + 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x31 +}; + +static const unsigned char TA14_RSA_N[] = { + 0xB3, 0xB3, 0xFE, 0x7F, 0xD3, 0x6D, 0xB1, 0xEF, 0x16, 0x7C, 0x57, 0xA5, + 0x0C, 0x6D, 0x76, 0x8A, 0x2F, 0x4B, 0xBF, 0x64, 0xFB, 0x4C, 0xEE, 0x8A, + 0xF0, 0xF3, 0x29, 0x7C, 0xF5, 0xFF, 0xEE, 0x2A, 0xE0, 0xE9, 0xE9, 0xBA, + 0x5B, 0x64, 0x22, 0x9A, 0x9A, 0x6F, 0x2C, 0x3A, 0x26, 0x69, 0x51, 0x05, + 0x99, 0x26, 0xDC, 0xD5, 0x1C, 0x6A, 0x71, 0xC6, 0x9A, 0x7D, 0x1E, 0x9D, + 0xDD, 0x7C, 0x6C, 0xC6, 0x8C, 0x67, 0x67, 0x4A, 0x3E, 0xF8, 0x71, 0xB0, + 0x19, 0x27, 0xA9, 0x09, 0x0C, 0xA6, 0x95, 0xBF, 0x4B, 0x8C, 0x0C, 0xFA, + 0x55, 0x98, 0x3B, 0xD8, 0xE8, 0x22, 0xA1, 0x4B, 0x71, 0x38, 0x79, 0xAC, + 0x97, 0x92, 0x69, 0xB3, 0x89, 0x7E, 0xEA, 0x21, 0x68, 0x06, 0x98, 0x14, + 0x96, 0x87, 0xD2, 0x61, 0x36, 0xBC, 0x6D, 0x27, 0x56, 0x9E, 0x57, 0xEE, + 0xC0, 0xC0, 0x56, 0xFD, 0x32, 0xCF, 0xA4, 0xD9, 0x8E, 0xC2, 0x23, 0xD7, + 0x8D, 0xA8, 0xF3, 0xD8, 0x25, 0xAC, 0x97, 0xE4, 0x70, 0x38, 0xF4, 0xB6, + 0x3A, 0xB4, 0x9D, 0x3B, 0x97, 0x26, 0x43, 0xA3, 0xA1, 0xBC, 0x49, 0x59, + 0x72, 0x4C, 0x23, 0x30, 0x87, 0x01, 0x58, 0xF6, 0x4E, 0xBE, 0x1C, 0x68, + 0x56, 0x66, 0xAF, 0xCD, 0x41, 0x5D, 0xC8, 0xB3, 0x4D, 0x2A, 0x55, 0x46, + 0xAB, 0x1F, 0xDA, 0x1E, 0xE2, 0x40, 0x3D, 0xDB, 0xCD, 0x7D, 0xB9, 0x92, + 0x80, 0x9C, 0x37, 0xDD, 0x0C, 0x96, 0x64, 0x9D, 0xDC, 0x22, 0xF7, 0x64, + 0x8B, 0xDF, 0x61, 0xDE, 0x15, 0x94, 0x52, 0x15, 0xA0, 0x7D, 0x52, 0xC9, + 0x4B, 0xA8, 0x21, 0xC9, 0xC6, 0xB1, 0xED, 0xCB, 0xC3, 0x95, 0x60, 0xD1, + 0x0F, 0xF0, 0xAB, 0x70, 0xF8, 0xDF, 0xCB, 0x4D, 0x7E, 0xEC, 0xD6, 0xFA, + 0xAB, 0xD9, 0xBD, 0x7F, 0x54, 0xF2, 0xA5, 0xE9, 0x79, 0xFA, 0xD9, 0xD6, + 0x76, 0x24, 0x28, 0x73 +}; + +static const unsigned char TA14_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA15_DN[] = { + 0x30, 0x39, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x49, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x06, 0x53, 0x6F, 0x6E, 0x65, 0x72, 0x61, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x53, 0x6F, 0x6E, 0x65, 0x72, + 0x61, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x32, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA15_RSA_N[] = { + 0x90, 0x17, 0x4A, 0x35, 0x9D, 0xCA, 0xF0, 0x0D, 0x96, 0xC7, 0x44, 0xFA, + 0x16, 0x37, 0xFC, 0x48, 0xBD, 0xBD, 0x7F, 0x80, 0x2D, 0x35, 0x3B, 0xE1, + 0x6F, 0xA8, 0x67, 0xA9, 0xBF, 0x03, 0x1C, 0x4D, 0x8C, 0x6F, 0x32, 0x47, + 0xD5, 0x41, 0x68, 0xA4, 0x13, 0x04, 0xC1, 0x35, 0x0C, 0x9A, 0x84, 0x43, + 0xFC, 0x5C, 0x1D, 0xFF, 0x89, 0xB3, 0xE8, 0x17, 0x18, 0xCD, 0x91, 0x5F, + 0xFB, 0x89, 0xE3, 0xEA, 0xBF, 0x4E, 0x5D, 0x7C, 0x1B, 0x26, 0xD3, 0x75, + 0x79, 0xED, 0xE6, 0x84, 0xE3, 0x57, 0xE5, 0xAD, 0x29, 0xC4, 0xF4, 0x3A, + 0x28, 0xE7, 0xA5, 0x7B, 0x84, 0x36, 0x69, 0xB3, 0xFD, 0x5E, 0x76, 0xBD, + 0xA3, 0x2D, 0x99, 0xD3, 0x90, 0x4E, 0x23, 0x28, 0x7D, 0x18, 0x63, 0xF1, + 0x54, 0x3B, 0x26, 0x9D, 0x76, 0x5B, 0x97, 0x42, 0xB2, 0xFF, 0xAE, 0xF0, + 0x4E, 0xEC, 0xDD, 0x39, 0x95, 0x4E, 0x83, 0x06, 0x7F, 0xE7, 0x49, 0x40, + 0xC8, 0xC5, 0x01, 0xB2, 0x54, 0x5A, 0x66, 0x1D, 0x3D, 0xFC, 0xF9, 0xE9, + 0x3C, 0x0A, 0x9E, 0x81, 0xB8, 0x70, 0xF0, 0x01, 0x8B, 0xE4, 0x23, 0x54, + 0x7C, 0xC8, 0xAE, 0xF8, 0x90, 0x1E, 0x00, 0x96, 0x72, 0xD4, 0x54, 0xCF, + 0x61, 0x23, 0xBC, 0xEA, 0xFB, 0x9D, 0x02, 0x95, 0xD1, 0xB6, 0xB9, 0x71, + 0x3A, 0x69, 0x08, 0x3F, 0x0F, 0xB4, 0xE1, 0x42, 0xC7, 0x88, 0xF5, 0x3F, + 0x98, 0xA8, 0xA7, 0xBA, 0x1C, 0xE0, 0x71, 0x71, 0xEF, 0x58, 0x57, 0x81, + 0x50, 0x7A, 0x5C, 0x6B, 0x74, 0x46, 0x0E, 0x83, 0x03, 0x98, 0xC3, 0x8E, + 0xA8, 0x6E, 0xF2, 0x76, 0x32, 0x6E, 0x27, 0x83, 0xC2, 0x73, 0xF3, 0xDC, + 0x18, 0xE8, 0xB4, 0x93, 0xEA, 0x75, 0x44, 0x6B, 0x04, 0x60, 0x20, 0x71, + 0x57, 0x87, 0x9D, 0xF3, 0xBE, 0xA0, 0x90, 0x23, 0x3D, 0x8A, 0x24, 0xE1, + 0xDA, 0x21, 0xDB, 0xC3 +}; + +static const unsigned char TA15_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA16_DN[] = { + 0x30, 0x81, 0x82, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x15, 0x77, 0x77, 0x77, 0x2E, 0x78, 0x72, 0x61, 0x6D, 0x70, + 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2E, 0x63, 0x6F, 0x6D, + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x1B, 0x58, + 0x52, 0x61, 0x6D, 0x70, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x24, 0x58, 0x52, 0x61, 0x6D, 0x70, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, + 0x6C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, + 0x79 +}; + +static const unsigned char TA16_RSA_N[] = { + 0x98, 0x24, 0x1E, 0xBD, 0x15, 0xB4, 0xBA, 0xDF, 0xC7, 0x8C, 0xA5, 0x27, + 0xB6, 0x38, 0x0B, 0x69, 0xF3, 0xB6, 0x4E, 0xA8, 0x2C, 0x2E, 0x21, 0x1D, + 0x5C, 0x44, 0xDF, 0x21, 0x5D, 0x7E, 0x23, 0x74, 0xFE, 0x5E, 0x7E, 0xB4, + 0x4A, 0xB7, 0xA6, 0xAD, 0x1F, 0xAE, 0xE0, 0x06, 0x16, 0xE2, 0x9B, 0x5B, + 0xD9, 0x67, 0x74, 0x6B, 0x5D, 0x80, 0x8F, 0x29, 0x9D, 0x86, 0x1B, 0xD9, + 0x9C, 0x0D, 0x98, 0x6D, 0x76, 0x10, 0x28, 0x58, 0xE4, 0x65, 0xB0, 0x7F, + 0x4A, 0x98, 0x79, 0x9F, 0xE0, 0xC3, 0x31, 0x7E, 0x80, 0x2B, 0xB5, 0x8C, + 0xC0, 0x40, 0x3B, 0x11, 0x86, 0xD0, 0xCB, 0xA2, 0x86, 0x36, 0x60, 0xA4, + 0xD5, 0x30, 0x82, 0x6D, 0xD9, 0x6E, 0xD0, 0x0F, 0x12, 0x04, 0x33, 0x97, + 0x5F, 0x4F, 0x61, 0x5A, 0xF0, 0xE4, 0xF9, 0x91, 0xAB, 0xE7, 0x1D, 0x3B, + 0xBC, 0xE8, 0xCF, 0xF4, 0x6B, 0x2D, 0x34, 0x7C, 0xE2, 0x48, 0x61, 0x1C, + 0x8E, 0xF3, 0x61, 0x44, 0xCC, 0x6F, 0xA0, 0x4A, 0xA9, 0x94, 0xB0, 0x4D, + 0xDA, 0xE7, 0xA9, 0x34, 0x7A, 0x72, 0x38, 0xA8, 0x41, 0xCC, 0x3C, 0x94, + 0x11, 0x7D, 0xEB, 0xC8, 0xA6, 0x8C, 0xB7, 0x86, 0xCB, 0xCA, 0x33, 0x3B, + 0xD9, 0x3D, 0x37, 0x8B, 0xFB, 0x7A, 0x3E, 0x86, 0x2C, 0xE7, 0x73, 0xD7, + 0x0A, 0x57, 0xAC, 0x64, 0x9B, 0x19, 0xEB, 0xF4, 0x0F, 0x04, 0x08, 0x8A, + 0xAC, 0x03, 0x17, 0x19, 0x64, 0xF4, 0x5A, 0x25, 0x22, 0x8D, 0x34, 0x2C, + 0xB2, 0xF6, 0x68, 0x1D, 0x12, 0x6D, 0xD3, 0x8A, 0x1E, 0x14, 0xDA, 0xC4, + 0x8F, 0xA6, 0xE2, 0x23, 0x85, 0xD5, 0x7A, 0x0D, 0xBD, 0x6A, 0xE0, 0xE9, + 0xEC, 0xEC, 0x17, 0xBB, 0x42, 0x1B, 0x67, 0xAA, 0x25, 0xED, 0x45, 0x83, + 0x21, 0xFC, 0xC1, 0xC9, 0x7C, 0xD5, 0x62, 0x3E, 0xFA, 0xF2, 0xC5, 0x2D, + 0xD3, 0xFD, 0xD4, 0x65 +}; + +static const unsigned char TA16_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA17_DN[] = { + 0x30, 0x63, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x18, 0x54, 0x68, 0x65, 0x20, 0x47, 0x6F, 0x20, 0x44, 0x61, 0x64, + 0x64, 0x79, 0x20, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x2C, 0x20, 0x49, 0x6E, + 0x63, 0x2E, 0x31, 0x31, 0x30, 0x2F, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x28, 0x47, 0x6F, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x43, 0x6C, + 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA17_RSA_N[] = { + 0xDE, 0x9D, 0xD7, 0xEA, 0x57, 0x18, 0x49, 0xA1, 0x5B, 0xEB, 0xD7, 0x5F, + 0x48, 0x86, 0xEA, 0xBE, 0xDD, 0xFF, 0xE4, 0xEF, 0x67, 0x1C, 0xF4, 0x65, + 0x68, 0xB3, 0x57, 0x71, 0xA0, 0x5E, 0x77, 0xBB, 0xED, 0x9B, 0x49, 0xE9, + 0x70, 0x80, 0x3D, 0x56, 0x18, 0x63, 0x08, 0x6F, 0xDA, 0xF2, 0xCC, 0xD0, + 0x3F, 0x7F, 0x02, 0x54, 0x22, 0x54, 0x10, 0xD8, 0xB2, 0x81, 0xD4, 0xC0, + 0x75, 0x3D, 0x4B, 0x7F, 0xC7, 0x77, 0xC3, 0x3E, 0x78, 0xAB, 0x1A, 0x03, + 0xB5, 0x20, 0x6B, 0x2F, 0x6A, 0x2B, 0xB1, 0xC5, 0x88, 0x7E, 0xC4, 0xBB, + 0x1E, 0xB0, 0xC1, 0xD8, 0x45, 0x27, 0x6F, 0xAA, 0x37, 0x58, 0xF7, 0x87, + 0x26, 0xD7, 0xD8, 0x2D, 0xF6, 0xA9, 0x17, 0xB7, 0x1F, 0x72, 0x36, 0x4E, + 0xA6, 0x17, 0x3F, 0x65, 0x98, 0x92, 0xDB, 0x2A, 0x6E, 0x5D, 0xA2, 0xFE, + 0x88, 0xE0, 0x0B, 0xDE, 0x7F, 0xE5, 0x8D, 0x15, 0xE1, 0xEB, 0xCB, 0x3A, + 0xD5, 0xE2, 0x12, 0xA2, 0x13, 0x2D, 0xD8, 0x8E, 0xAF, 0x5F, 0x12, 0x3D, + 0xA0, 0x08, 0x05, 0x08, 0xB6, 0x5C, 0xA5, 0x65, 0x38, 0x04, 0x45, 0x99, + 0x1E, 0xA3, 0x60, 0x60, 0x74, 0xC5, 0x41, 0xA5, 0x72, 0x62, 0x1B, 0x62, + 0xC5, 0x1F, 0x6F, 0x5F, 0x1A, 0x42, 0xBE, 0x02, 0x51, 0x65, 0xA8, 0xAE, + 0x23, 0x18, 0x6A, 0xFC, 0x78, 0x03, 0xA9, 0x4D, 0x7F, 0x80, 0xC3, 0xFA, + 0xAB, 0x5A, 0xFC, 0xA1, 0x40, 0xA4, 0xCA, 0x19, 0x16, 0xFE, 0xB2, 0xC8, + 0xEF, 0x5E, 0x73, 0x0D, 0xEE, 0x77, 0xBD, 0x9A, 0xF6, 0x79, 0x98, 0xBC, + 0xB1, 0x07, 0x67, 0xA2, 0x15, 0x0D, 0xDD, 0xA0, 0x58, 0xC6, 0x44, 0x7B, + 0x0A, 0x3E, 0x62, 0x28, 0x5F, 0xBA, 0x41, 0x07, 0x53, 0x58, 0xCF, 0x11, + 0x7E, 0x38, 0x74, 0xC5, 0xF8, 0xFF, 0xB5, 0x69, 0x90, 0x8F, 0x84, 0x74, + 0xEA, 0x97, 0x1B, 0xAF +}; + +static const unsigned char TA17_RSA_E[] = { + 0x03 +}; + +static const unsigned char TA18_DN[] = { + 0x30, 0x68, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x1C, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, + 0x54, 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x69, 0x65, 0x73, + 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, + 0x6C, 0x64, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA18_RSA_N[] = { + 0xB7, 0x32, 0xC8, 0xFE, 0xE9, 0x71, 0xA6, 0x04, 0x85, 0xAD, 0x0C, 0x11, + 0x64, 0xDF, 0xCE, 0x4D, 0xEF, 0xC8, 0x03, 0x18, 0x87, 0x3F, 0xA1, 0xAB, + 0xFB, 0x3C, 0xA6, 0x9F, 0xF0, 0xC3, 0xA1, 0xDA, 0xD4, 0xD8, 0x6E, 0x2B, + 0x53, 0x90, 0xFB, 0x24, 0xA4, 0x3E, 0x84, 0xF0, 0x9E, 0xE8, 0x5F, 0xEC, + 0xE5, 0x27, 0x44, 0xF5, 0x28, 0xA6, 0x3F, 0x7B, 0xDE, 0xE0, 0x2A, 0xF0, + 0xC8, 0xAF, 0x53, 0x2F, 0x9E, 0xCA, 0x05, 0x01, 0x93, 0x1E, 0x8F, 0x66, + 0x1C, 0x39, 0xA7, 0x4D, 0xFA, 0x5A, 0xB6, 0x73, 0x04, 0x25, 0x66, 0xEB, + 0x77, 0x7F, 0xE7, 0x59, 0xC6, 0x4A, 0x99, 0x25, 0x14, 0x54, 0xEB, 0x26, + 0xC7, 0xF3, 0x7F, 0x19, 0xD5, 0x30, 0x70, 0x8F, 0xAF, 0xB0, 0x46, 0x2A, + 0xFF, 0xAD, 0xEB, 0x29, 0xED, 0xD7, 0x9F, 0xAA, 0x04, 0x87, 0xA3, 0xD4, + 0xF9, 0x89, 0xA5, 0x34, 0x5F, 0xDB, 0x43, 0x91, 0x82, 0x36, 0xD9, 0x66, + 0x3C, 0xB1, 0xB8, 0xB9, 0x82, 0xFD, 0x9C, 0x3A, 0x3E, 0x10, 0xC8, 0x3B, + 0xEF, 0x06, 0x65, 0x66, 0x7A, 0x9B, 0x19, 0x18, 0x3D, 0xFF, 0x71, 0x51, + 0x3C, 0x30, 0x2E, 0x5F, 0xBE, 0x3D, 0x77, 0x73, 0xB2, 0x5D, 0x06, 0x6C, + 0xC3, 0x23, 0x56, 0x9A, 0x2B, 0x85, 0x26, 0x92, 0x1C, 0xA7, 0x02, 0xB3, + 0xE4, 0x3F, 0x0D, 0xAF, 0x08, 0x79, 0x82, 0xB8, 0x36, 0x3D, 0xEA, 0x9C, + 0xD3, 0x35, 0xB3, 0xBC, 0x69, 0xCA, 0xF5, 0xCC, 0x9D, 0xE8, 0xFD, 0x64, + 0x8D, 0x17, 0x80, 0x33, 0x6E, 0x5E, 0x4A, 0x5D, 0x99, 0xC9, 0x1E, 0x87, + 0xB4, 0x9D, 0x1A, 0xC0, 0xD5, 0x6E, 0x13, 0x35, 0x23, 0x5E, 0xDF, 0x9B, + 0x5F, 0x3D, 0xEF, 0xD6, 0xF7, 0x76, 0xC2, 0xEA, 0x3E, 0xBB, 0x78, 0x0D, + 0x1C, 0x42, 0x67, 0x6B, 0x04, 0xD8, 0xF8, 0xD6, 0xDA, 0x6F, 0x8B, 0xF2, + 0x44, 0xA0, 0x01, 0xAB +}; + +static const unsigned char TA18_RSA_E[] = { + 0x03 +}; + +static const unsigned char TA19_DN[] = { + 0x30, 0x3F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x54, 0x57, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x27, 0x47, 0x6F, 0x76, 0x65, 0x72, 0x6E, 0x6D, 0x65, 0x6E, 0x74, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA19_RSA_N[] = { + 0x9A, 0x25, 0xB8, 0xEC, 0xCC, 0xA2, 0x75, 0xA8, 0x7B, 0xF7, 0xCE, 0x5B, + 0x59, 0x8A, 0xC9, 0xD1, 0x86, 0x12, 0x08, 0x54, 0xEC, 0x9C, 0xF2, 0xE7, + 0x46, 0xF6, 0x88, 0xF3, 0x7C, 0xE9, 0xA5, 0xDF, 0x4C, 0x47, 0x36, 0xA4, + 0x1B, 0x01, 0x1C, 0x7F, 0x1E, 0x57, 0x8A, 0x8D, 0xC3, 0xC5, 0xD1, 0x21, + 0xE3, 0xDA, 0x24, 0x3F, 0x48, 0x2B, 0xFB, 0x9F, 0x2E, 0xA1, 0x94, 0xE7, + 0x2C, 0x1C, 0x93, 0xD1, 0xBF, 0x1B, 0x01, 0x87, 0x53, 0x99, 0xCE, 0xA7, + 0xF5, 0x0A, 0x21, 0x76, 0x77, 0xFF, 0xA9, 0xB7, 0xC6, 0x73, 0x94, 0x4F, + 0x46, 0xF7, 0x10, 0x49, 0x37, 0xFA, 0xA8, 0x59, 0x49, 0x5D, 0x6A, 0x81, + 0x07, 0x56, 0xF2, 0x8A, 0xF9, 0x06, 0xD0, 0xF7, 0x70, 0x22, 0x4D, 0xB4, + 0xB7, 0x41, 0xB9, 0x32, 0xB8, 0xB1, 0xF0, 0xB1, 0xC3, 0x9C, 0x3F, 0x70, + 0xFD, 0x53, 0xDD, 0x81, 0xAA, 0xD8, 0x63, 0x78, 0xF6, 0xD8, 0x53, 0x6E, + 0xA1, 0xAC, 0x6A, 0x84, 0x24, 0x72, 0x54, 0x86, 0xC6, 0xD2, 0xB2, 0xCA, + 0x1C, 0x0E, 0x79, 0x81, 0xD6, 0xB5, 0x70, 0x62, 0x08, 0x01, 0x2E, 0x4E, + 0x4F, 0x0E, 0xD5, 0x11, 0xAF, 0xA9, 0xAF, 0xE5, 0x9A, 0xBF, 0xDC, 0xCC, + 0x87, 0x6D, 0x26, 0xE4, 0xC9, 0x57, 0xA2, 0xFB, 0x96, 0xF9, 0xCC, 0xE1, + 0x3F, 0x53, 0x8C, 0x6C, 0x4C, 0x7E, 0x9B, 0x53, 0x08, 0x0B, 0x6C, 0x17, + 0xFB, 0x67, 0xC8, 0xC2, 0xAD, 0xB1, 0xCD, 0x80, 0xB4, 0x97, 0xDC, 0x76, + 0x01, 0x16, 0x15, 0xE9, 0x6A, 0xD7, 0xA4, 0xE1, 0x78, 0x47, 0xCE, 0x86, + 0xD5, 0xFB, 0x31, 0xF3, 0xFA, 0x31, 0xBE, 0x34, 0xAA, 0x28, 0xFB, 0x70, + 0x4C, 0x1D, 0x49, 0xC7, 0xAF, 0x2C, 0x9D, 0x6D, 0x66, 0xA6, 0xB6, 0x8D, + 0x64, 0x7E, 0xB5, 0x20, 0x6A, 0x9D, 0x3B, 0x81, 0xB6, 0x8F, 0x40, 0x00, + 0x67, 0x4B, 0x89, 0x86, 0xB8, 0xCC, 0x65, 0xFE, 0x15, 0x53, 0xE9, 0x04, + 0xC1, 0xD6, 0x5F, 0x1D, 0x44, 0xD7, 0x0A, 0x2F, 0x27, 0x9A, 0x46, 0x7D, + 0xA1, 0x0D, 0x75, 0xAD, 0x54, 0x86, 0x15, 0xDC, 0x49, 0x3B, 0xF1, 0x96, + 0xCE, 0x0F, 0x9B, 0xA0, 0xEC, 0xA3, 0x7A, 0x5D, 0xBE, 0xD5, 0x2A, 0x75, + 0x42, 0xE5, 0x7B, 0xDE, 0xA5, 0xB6, 0xAA, 0xAF, 0x28, 0xAC, 0xAC, 0x90, + 0xAC, 0x38, 0xB7, 0xD5, 0x68, 0x35, 0x26, 0x7A, 0xDC, 0xF7, 0x3B, 0xF3, + 0xFD, 0x45, 0x9B, 0xD1, 0xBB, 0x43, 0x78, 0x6E, 0x6F, 0xF1, 0x42, 0x54, + 0x6A, 0x98, 0xF0, 0x0D, 0xAD, 0x97, 0xE9, 0x52, 0x5E, 0xE9, 0xD5, 0x6A, + 0x72, 0xDE, 0x6A, 0xF7, 0x1B, 0x60, 0x14, 0xF4, 0xA5, 0xE4, 0xB6, 0x71, + 0x67, 0xAA, 0x1F, 0xEA, 0xE2, 0x4D, 0xC1, 0x42, 0x40, 0xFE, 0x67, 0x46, + 0x17, 0x38, 0x2F, 0x47, 0x3F, 0x71, 0x9C, 0xAE, 0xE5, 0x21, 0xCA, 0x61, + 0x2D, 0x6D, 0x07, 0xA8, 0x84, 0x7C, 0x2D, 0xEE, 0x51, 0x25, 0xF1, 0x63, + 0x90, 0x9E, 0xFD, 0xE1, 0x57, 0x88, 0x6B, 0xEF, 0x8A, 0x23, 0x6D, 0xB1, + 0xE6, 0xBD, 0x3F, 0xAD, 0xD1, 0x3D, 0x96, 0x0B, 0x85, 0x8D, 0xCD, 0x6B, + 0x27, 0xBB, 0xB7, 0x05, 0x9B, 0xEC, 0xBB, 0x91, 0xA9, 0x0A, 0x07, 0x12, + 0x02, 0x97, 0x4E, 0x20, 0x90, 0xF0, 0xFF, 0x0D, 0x1E, 0xE2, 0x41, 0x3B, + 0xD3, 0x40, 0x3A, 0xE7, 0x8D, 0x5D, 0xDA, 0x66, 0xE4, 0x02, 0xB0, 0x07, + 0x52, 0x98, 0x5C, 0x0E, 0x8E, 0x33, 0x9C, 0xC2, 0xA6, 0x95, 0xFB, 0x55, + 0x19, 0x6E, 0x4C, 0x8E, 0xAE, 0x4B, 0x0F, 0xBD, 0xC1, 0x38, 0x4D, 0x5E, + 0x8F, 0x84, 0x1D, 0x66, 0xCD, 0xC5, 0x60, 0x96, 0xB4, 0x52, 0x5A, 0x05, + 0x89, 0x8E, 0x95, 0x7A, 0x98, 0xC1, 0x91, 0x3C, 0x95, 0x23, 0xB2, 0x0E, + 0xF4, 0x79, 0xB4, 0xC9, 0x7C, 0xC1, 0x4A, 0x21 +}; + +static const unsigned char TA19_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA20_DN[] = { + 0x30, 0x65, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1B, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, + 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA20_RSA_N[] = { + 0xAD, 0x0E, 0x15, 0xCE, 0xE4, 0x43, 0x80, 0x5C, 0xB1, 0x87, 0xF3, 0xB7, + 0x60, 0xF9, 0x71, 0x12, 0xA5, 0xAE, 0xDC, 0x26, 0x94, 0x88, 0xAA, 0xF4, + 0xCE, 0xF5, 0x20, 0x39, 0x28, 0x58, 0x60, 0x0C, 0xF8, 0x80, 0xDA, 0xA9, + 0x15, 0x95, 0x32, 0x61, 0x3C, 0xB5, 0xB1, 0x28, 0x84, 0x8A, 0x8A, 0xDC, + 0x9F, 0x0A, 0x0C, 0x83, 0x17, 0x7A, 0x8F, 0x90, 0xAC, 0x8A, 0xE7, 0x79, + 0x53, 0x5C, 0x31, 0x84, 0x2A, 0xF6, 0x0F, 0x98, 0x32, 0x36, 0x76, 0xCC, + 0xDE, 0xDD, 0x3C, 0xA8, 0xA2, 0xEF, 0x6A, 0xFB, 0x21, 0xF2, 0x52, 0x61, + 0xDF, 0x9F, 0x20, 0xD7, 0x1F, 0xE2, 0xB1, 0xD9, 0xFE, 0x18, 0x64, 0xD2, + 0x12, 0x5B, 0x5F, 0xF9, 0x58, 0x18, 0x35, 0xBC, 0x47, 0xCD, 0xA1, 0x36, + 0xF9, 0x6B, 0x7F, 0xD4, 0xB0, 0x38, 0x3E, 0xC1, 0x1B, 0xC3, 0x8C, 0x33, + 0xD9, 0xD8, 0x2F, 0x18, 0xFE, 0x28, 0x0F, 0xB3, 0xA7, 0x83, 0xD6, 0xC3, + 0x6E, 0x44, 0xC0, 0x61, 0x35, 0x96, 0x16, 0xFE, 0x59, 0x9C, 0x8B, 0x76, + 0x6D, 0xD7, 0xF1, 0xA2, 0x4B, 0x0D, 0x2B, 0xFF, 0x0B, 0x72, 0xDA, 0x9E, + 0x60, 0xD0, 0x8E, 0x90, 0x35, 0xC6, 0x78, 0x55, 0x87, 0x20, 0xA1, 0xCF, + 0xE5, 0x6D, 0x0A, 0xC8, 0x49, 0x7C, 0x31, 0x98, 0x33, 0x6C, 0x22, 0xE9, + 0x87, 0xD0, 0x32, 0x5A, 0xA2, 0xBA, 0x13, 0x82, 0x11, 0xED, 0x39, 0x17, + 0x9D, 0x99, 0x3A, 0x72, 0xA1, 0xE6, 0xFA, 0xA4, 0xD9, 0xD5, 0x17, 0x31, + 0x75, 0xAE, 0x85, 0x7D, 0x22, 0xAE, 0x3F, 0x01, 0x46, 0x86, 0xF6, 0x28, + 0x79, 0xC8, 0xB1, 0xDA, 0xE4, 0x57, 0x17, 0xC4, 0x7E, 0x1C, 0x0E, 0xB0, + 0xB4, 0x92, 0xA6, 0x56, 0xB3, 0xBD, 0xB2, 0x97, 0xED, 0xAA, 0xA7, 0xF0, + 0xB7, 0xC5, 0xA8, 0x3F, 0x95, 0x16, 0xD0, 0xFF, 0xA1, 0x96, 0xEB, 0x08, + 0x5F, 0x18, 0x77, 0x4F +}; + +static const unsigned char TA20_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA21_DN[] = { + 0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41 +}; + +static const unsigned char TA21_RSA_N[] = { + 0xE2, 0x3B, 0xE1, 0x11, 0x72, 0xDE, 0xA8, 0xA4, 0xD3, 0xA3, 0x57, 0xAA, + 0x50, 0xA2, 0x8F, 0x0B, 0x77, 0x90, 0xC9, 0xA2, 0xA5, 0xEE, 0x12, 0xCE, + 0x96, 0x5B, 0x01, 0x09, 0x20, 0xCC, 0x01, 0x93, 0xA7, 0x4E, 0x30, 0xB7, + 0x53, 0xF7, 0x43, 0xC4, 0x69, 0x00, 0x57, 0x9D, 0xE2, 0x8D, 0x22, 0xDD, + 0x87, 0x06, 0x40, 0x00, 0x81, 0x09, 0xCE, 0xCE, 0x1B, 0x83, 0xBF, 0xDF, + 0xCD, 0x3B, 0x71, 0x46, 0xE2, 0xD6, 0x66, 0xC7, 0x05, 0xB3, 0x76, 0x27, + 0x16, 0x8F, 0x7B, 0x9E, 0x1E, 0x95, 0x7D, 0xEE, 0xB7, 0x48, 0xA3, 0x08, + 0xDA, 0xD6, 0xAF, 0x7A, 0x0C, 0x39, 0x06, 0x65, 0x7F, 0x4A, 0x5D, 0x1F, + 0xBC, 0x17, 0xF8, 0xAB, 0xBE, 0xEE, 0x28, 0xD7, 0x74, 0x7F, 0x7A, 0x78, + 0x99, 0x59, 0x85, 0x68, 0x6E, 0x5C, 0x23, 0x32, 0x4B, 0xBF, 0x4E, 0xC0, + 0xE8, 0x5A, 0x6D, 0xE3, 0x70, 0xBF, 0x77, 0x10, 0xBF, 0xFC, 0x01, 0xF6, + 0x85, 0xD9, 0xA8, 0x44, 0x10, 0x58, 0x32, 0xA9, 0x75, 0x18, 0xD5, 0xD1, + 0xA2, 0xBE, 0x47, 0xE2, 0x27, 0x6A, 0xF4, 0x9A, 0x33, 0xF8, 0x49, 0x08, + 0x60, 0x8B, 0xD4, 0x5F, 0xB4, 0x3A, 0x84, 0xBF, 0xA1, 0xAA, 0x4A, 0x4C, + 0x7D, 0x3E, 0xCF, 0x4F, 0x5F, 0x6C, 0x76, 0x5E, 0xA0, 0x4B, 0x37, 0x91, + 0x9E, 0xDC, 0x22, 0xE6, 0x6D, 0xCE, 0x14, 0x1A, 0x8E, 0x6A, 0xCB, 0xFE, + 0xCD, 0xB3, 0x14, 0x64, 0x17, 0xC7, 0x5B, 0x29, 0x9E, 0x32, 0xBF, 0xF2, + 0xEE, 0xFA, 0xD3, 0x0B, 0x42, 0xD4, 0xAB, 0xB7, 0x41, 0x32, 0xDA, 0x0C, + 0xD4, 0xEF, 0xF8, 0x81, 0xD5, 0xBB, 0x8D, 0x58, 0x3F, 0xB5, 0x1B, 0xE8, + 0x49, 0x28, 0xA2, 0x70, 0xDA, 0x31, 0x04, 0xDD, 0xF7, 0xB2, 0x16, 0xF2, + 0x4C, 0x0A, 0x4E, 0x07, 0xA8, 0xED, 0x4A, 0x3D, 0x5E, 0xB5, 0x7F, 0xA3, + 0x90, 0xC3, 0xAF, 0x27 +}; + +static const unsigned char TA21_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA22_DN[] = { + 0x30, 0x6C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6E, 0x63, 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, + 0x43, 0x41 +}; + +static const unsigned char TA22_RSA_N[] = { + 0xC6, 0xCC, 0xE5, 0x73, 0xE6, 0xFB, 0xD4, 0xBB, 0xE5, 0x2D, 0x2D, 0x32, + 0xA6, 0xDF, 0xE5, 0x81, 0x3F, 0xC9, 0xCD, 0x25, 0x49, 0xB6, 0x71, 0x2A, + 0xC3, 0xD5, 0x94, 0x34, 0x67, 0xA2, 0x0A, 0x1C, 0xB0, 0x5F, 0x69, 0xA6, + 0x40, 0xB1, 0xC4, 0xB7, 0xB2, 0x8F, 0xD0, 0x98, 0xA4, 0xA9, 0x41, 0x59, + 0x3A, 0xD3, 0xDC, 0x94, 0xD6, 0x3C, 0xDB, 0x74, 0x38, 0xA4, 0x4A, 0xCC, + 0x4D, 0x25, 0x82, 0xF7, 0x4A, 0xA5, 0x53, 0x12, 0x38, 0xEE, 0xF3, 0x49, + 0x6D, 0x71, 0x91, 0x7E, 0x63, 0xB6, 0xAB, 0xA6, 0x5F, 0xC3, 0xA4, 0x84, + 0xF8, 0x4F, 0x62, 0x51, 0xBE, 0xF8, 0xC5, 0xEC, 0xDB, 0x38, 0x92, 0xE3, + 0x06, 0xE5, 0x08, 0x91, 0x0C, 0xC4, 0x28, 0x41, 0x55, 0xFB, 0xCB, 0x5A, + 0x89, 0x15, 0x7E, 0x71, 0xE8, 0x35, 0xBF, 0x4D, 0x72, 0x09, 0x3D, 0xBE, + 0x3A, 0x38, 0x50, 0x5B, 0x77, 0x31, 0x1B, 0x8D, 0xB3, 0xC7, 0x24, 0x45, + 0x9A, 0xA7, 0xAC, 0x6D, 0x00, 0x14, 0x5A, 0x04, 0xB7, 0xBA, 0x13, 0xEB, + 0x51, 0x0A, 0x98, 0x41, 0x41, 0x22, 0x4E, 0x65, 0x61, 0x87, 0x81, 0x41, + 0x50, 0xA6, 0x79, 0x5C, 0x89, 0xDE, 0x19, 0x4A, 0x57, 0xD5, 0x2E, 0xE6, + 0x5D, 0x1C, 0x53, 0x2C, 0x7E, 0x98, 0xCD, 0x1A, 0x06, 0x16, 0xA4, 0x68, + 0x73, 0xD0, 0x34, 0x04, 0x13, 0x5C, 0xA1, 0x71, 0xD3, 0x5A, 0x7C, 0x55, + 0xDB, 0x5E, 0x64, 0xE1, 0x37, 0x87, 0x30, 0x56, 0x04, 0xE5, 0x11, 0xB4, + 0x29, 0x80, 0x12, 0xF1, 0x79, 0x39, 0x88, 0xA2, 0x02, 0x11, 0x7C, 0x27, + 0x66, 0xB7, 0x88, 0xB7, 0x78, 0xF2, 0xCA, 0x0A, 0xA8, 0x38, 0xAB, 0x0A, + 0x64, 0xC2, 0xBF, 0x66, 0x5D, 0x95, 0x84, 0xC1, 0xA1, 0x25, 0x1E, 0x87, + 0x5D, 0x1A, 0x50, 0x0B, 0x20, 0x12, 0xCC, 0x41, 0xBB, 0x6E, 0x0B, 0x51, + 0x38, 0xB8, 0x4B, 0xCB +}; + +static const unsigned char TA22_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA23_DN[] = { + 0x30, 0x3D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x08, 0x43, 0x65, 0x72, 0x74, 0x70, 0x6C, 0x75, 0x73, 0x31, 0x1B, + 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x43, 0x6C, 0x61, + 0x73, 0x73, 0x20, 0x32, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, + 0x20, 0x43, 0x41 +}; + +static const unsigned char TA23_RSA_N[] = { + 0xDC, 0x50, 0x96, 0xD0, 0x12, 0xF8, 0x35, 0xD2, 0x08, 0x78, 0x7A, 0xB6, + 0x52, 0x70, 0xFD, 0x6F, 0xEE, 0xCF, 0xB9, 0x11, 0xCB, 0x5D, 0x77, 0xE1, + 0xEC, 0xE9, 0x7E, 0x04, 0x8D, 0xD6, 0xCC, 0x6F, 0x73, 0x43, 0x57, 0x60, + 0xAC, 0x33, 0x0A, 0x44, 0xEC, 0x03, 0x5F, 0x1C, 0x80, 0x24, 0x91, 0xE5, + 0xA8, 0x91, 0x56, 0x12, 0x82, 0xF7, 0xE0, 0x2B, 0xF4, 0xDB, 0xAE, 0x61, + 0x2E, 0x89, 0x10, 0x8D, 0x6B, 0x6C, 0xBA, 0xB3, 0x02, 0xBD, 0xD5, 0x36, + 0xC5, 0x48, 0x37, 0x23, 0xE2, 0xF0, 0x5A, 0x37, 0x52, 0x33, 0x17, 0x12, + 0xE2, 0xD1, 0x60, 0x4D, 0xBE, 0x2F, 0x41, 0x11, 0xE3, 0xF6, 0x17, 0x25, + 0x0C, 0x8B, 0x91, 0xC0, 0x1B, 0x99, 0x7B, 0x99, 0x56, 0x0D, 0xAF, 0xEE, + 0xD2, 0xBC, 0x47, 0x57, 0xE3, 0x79, 0x49, 0x7B, 0x34, 0x89, 0x27, 0x24, + 0x84, 0xDE, 0xB1, 0xEC, 0xE9, 0x58, 0x4E, 0xFE, 0x4E, 0xDF, 0x5A, 0xBE, + 0x41, 0xAD, 0xAC, 0x08, 0xC5, 0x18, 0x0E, 0xEF, 0xD2, 0x53, 0xEE, 0x6C, + 0xD0, 0x9D, 0x12, 0x01, 0x13, 0x8D, 0xDC, 0x80, 0x62, 0xF7, 0x95, 0xA9, + 0x44, 0x88, 0x4A, 0x71, 0x4E, 0x60, 0x55, 0x9E, 0xDB, 0x23, 0x19, 0x79, + 0x56, 0x07, 0x0C, 0x3F, 0x63, 0x0B, 0x5C, 0xB0, 0xE2, 0xBE, 0x7E, 0x15, + 0xFC, 0x94, 0x33, 0x58, 0x41, 0x38, 0x74, 0xC4, 0xE1, 0x8F, 0x8B, 0xDF, + 0x26, 0xAC, 0x1F, 0xB5, 0x8B, 0x3B, 0xB7, 0x43, 0x59, 0x6B, 0xB0, 0x24, + 0xA6, 0x6D, 0x90, 0x8B, 0xC4, 0x72, 0xEA, 0x5D, 0x33, 0x98, 0xB7, 0xCB, + 0xDE, 0x5E, 0x7B, 0xEF, 0x94, 0xF1, 0x1B, 0x3E, 0xCA, 0xC9, 0x21, 0xC1, + 0xC5, 0x98, 0x02, 0xAA, 0xA2, 0xF6, 0x5B, 0x77, 0x9B, 0xF5, 0x7E, 0x96, + 0x55, 0x34, 0x1C, 0x67, 0x69, 0xC0, 0xF1, 0x42, 0xE3, 0x47, 0xAC, 0xFC, + 0x28, 0x1C, 0x66, 0x55 +}; + +static const unsigned char TA23_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA24_DN[] = { + 0x30, 0x3F, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, + 0x1B, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6C, 0x20, 0x53, 0x69, 0x67, + 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x20, 0x43, 0x6F, 0x2E, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x0E, 0x44, 0x53, 0x54, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x58, 0x33 +}; + +static const unsigned char TA24_RSA_N[] = { + 0xDF, 0xAF, 0xE9, 0x97, 0x50, 0x08, 0x83, 0x57, 0xB4, 0xCC, 0x62, 0x65, + 0xF6, 0x90, 0x82, 0xEC, 0xC7, 0xD3, 0x2C, 0x6B, 0x30, 0xCA, 0x5B, 0xEC, + 0xD9, 0xC3, 0x7D, 0xC7, 0x40, 0xC1, 0x18, 0x14, 0x8B, 0xE0, 0xE8, 0x33, + 0x76, 0x49, 0x2A, 0xE3, 0x3F, 0x21, 0x49, 0x93, 0xAC, 0x4E, 0x0E, 0xAF, + 0x3E, 0x48, 0xCB, 0x65, 0xEE, 0xFC, 0xD3, 0x21, 0x0F, 0x65, 0xD2, 0x2A, + 0xD9, 0x32, 0x8F, 0x8C, 0xE5, 0xF7, 0x77, 0xB0, 0x12, 0x7B, 0xB5, 0x95, + 0xC0, 0x89, 0xA3, 0xA9, 0xBA, 0xED, 0x73, 0x2E, 0x7A, 0x0C, 0x06, 0x32, + 0x83, 0xA2, 0x7E, 0x8A, 0x14, 0x30, 0xCD, 0x11, 0xA0, 0xE1, 0x2A, 0x38, + 0xB9, 0x79, 0x0A, 0x31, 0xFD, 0x50, 0xBD, 0x80, 0x65, 0xDF, 0xB7, 0x51, + 0x63, 0x83, 0xC8, 0xE2, 0x88, 0x61, 0xEA, 0x4B, 0x61, 0x81, 0xEC, 0x52, + 0x6B, 0xB9, 0xA2, 0xE2, 0x4B, 0x1A, 0x28, 0x9F, 0x48, 0xA3, 0x9E, 0x0C, + 0xDA, 0x09, 0x8E, 0x3E, 0x17, 0x2E, 0x1E, 0xDD, 0x20, 0xDF, 0x5B, 0xC6, + 0x2A, 0x8A, 0xAB, 0x2E, 0xBD, 0x70, 0xAD, 0xC5, 0x0B, 0x1A, 0x25, 0x90, + 0x74, 0x72, 0xC5, 0x7B, 0x6A, 0xAB, 0x34, 0xD6, 0x30, 0x89, 0xFF, 0xE5, + 0x68, 0x13, 0x7B, 0x54, 0x0B, 0xC8, 0xD6, 0xAE, 0xEC, 0x5A, 0x9C, 0x92, + 0x1E, 0x3D, 0x64, 0xB3, 0x8C, 0xC6, 0xDF, 0xBF, 0xC9, 0x41, 0x70, 0xEC, + 0x16, 0x72, 0xD5, 0x26, 0xEC, 0x38, 0x55, 0x39, 0x43, 0xD0, 0xFC, 0xFD, + 0x18, 0x5C, 0x40, 0xF1, 0x97, 0xEB, 0xD5, 0x9A, 0x9B, 0x8D, 0x1D, 0xBA, + 0xDA, 0x25, 0xB9, 0xC6, 0xD8, 0xDF, 0xC1, 0x15, 0x02, 0x3A, 0xAB, 0xDA, + 0x6E, 0xF1, 0x3E, 0x2E, 0xF5, 0x5C, 0x08, 0x9C, 0x3C, 0xD6, 0x83, 0x69, + 0xE4, 0x10, 0x9B, 0x19, 0x2A, 0xB6, 0x29, 0x57, 0xE3, 0xE5, 0x3D, 0x9B, + 0x9F, 0xF0, 0x02, 0x5D +}; + +static const unsigned char TA24_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA25_DN[] = { + 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x48, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x53, 0x77, 0x69, 0x73, 0x73, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x41, 0x47, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x16, 0x53, 0x77, 0x69, 0x73, 0x73, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x47, + 0x6F, 0x6C, 0x64, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x32 +}; + +static const unsigned char TA25_RSA_N[] = { + 0xAF, 0xE4, 0xEE, 0x7E, 0x8B, 0x24, 0x0E, 0x12, 0x6E, 0xA9, 0x50, 0x2D, + 0x16, 0x44, 0x3B, 0x92, 0x92, 0x5C, 0xCA, 0xB8, 0x5D, 0x84, 0x92, 0x42, + 0x13, 0x2A, 0xBC, 0x65, 0x57, 0x82, 0x40, 0x3E, 0x57, 0x24, 0xCD, 0x50, + 0x8B, 0x25, 0x2A, 0xB7, 0x6F, 0xFC, 0xEF, 0xA2, 0xD0, 0xC0, 0x1F, 0x02, + 0x24, 0x4A, 0x13, 0x96, 0x8F, 0x23, 0x13, 0xE6, 0x28, 0x58, 0x00, 0xA3, + 0x47, 0xC7, 0x06, 0xA7, 0x84, 0x23, 0x2B, 0xBB, 0xBD, 0x96, 0x2B, 0x7F, + 0x55, 0xCC, 0x8B, 0xC1, 0x57, 0x1F, 0x0E, 0x62, 0x65, 0x0F, 0xDD, 0x3D, + 0x56, 0x8A, 0x73, 0xDA, 0xAE, 0x7E, 0x6D, 0xBA, 0x81, 0x1C, 0x7E, 0x42, + 0x8C, 0x20, 0x35, 0xD9, 0x43, 0x4D, 0x84, 0xFA, 0x84, 0xDB, 0x52, 0x2C, + 0xF3, 0x0E, 0x27, 0x77, 0x0B, 0x6B, 0xBF, 0x11, 0x2F, 0x72, 0x78, 0x9F, + 0x2E, 0xD8, 0x3E, 0xE6, 0x18, 0x37, 0x5A, 0x2A, 0x72, 0xF9, 0xDA, 0x62, + 0x90, 0x92, 0x95, 0xCA, 0x1F, 0x9C, 0xE9, 0xB3, 0x3C, 0x2B, 0xCB, 0xF3, + 0x01, 0x13, 0xBF, 0x5A, 0xCF, 0xC1, 0xB5, 0x0A, 0x60, 0xBD, 0xDD, 0xB5, + 0x99, 0x64, 0x53, 0xB8, 0xA0, 0x96, 0xB3, 0x6F, 0xE2, 0x26, 0x77, 0x91, + 0x8C, 0xE0, 0x62, 0x10, 0x02, 0x9F, 0x34, 0x0F, 0xA4, 0xD5, 0x92, 0x33, + 0x51, 0xDE, 0xBE, 0x8D, 0xBA, 0x84, 0x7A, 0x60, 0x3C, 0x6A, 0xDB, 0x9F, + 0x2B, 0xEC, 0xDE, 0xDE, 0x01, 0x3F, 0x6E, 0x4D, 0xE5, 0x50, 0x86, 0xCB, + 0xB4, 0xAF, 0xED, 0x44, 0x40, 0xC5, 0xCA, 0x5A, 0x8C, 0xDA, 0xD2, 0x2B, + 0x7C, 0xA8, 0xEE, 0xBE, 0xA6, 0xE5, 0x0A, 0xAA, 0x0E, 0xA5, 0xDF, 0x05, + 0x52, 0xB7, 0x55, 0xC7, 0x22, 0x5D, 0x32, 0x6A, 0x97, 0x97, 0x63, 0x13, + 0xDB, 0xC9, 0xDB, 0x79, 0x36, 0x7B, 0x85, 0x3A, 0x4A, 0xC5, 0x52, 0x89, + 0xF9, 0x24, 0xE7, 0x9D, 0x77, 0xA9, 0x82, 0xFF, 0x55, 0x1C, 0xA5, 0x71, + 0x69, 0x2B, 0xD1, 0x02, 0x24, 0xF2, 0xB3, 0x26, 0xD4, 0x6B, 0xDA, 0x04, + 0x55, 0xE5, 0xC1, 0x0A, 0xC7, 0x6D, 0x30, 0x37, 0x90, 0x2A, 0xE4, 0x9E, + 0x14, 0x33, 0x5E, 0x16, 0x17, 0x55, 0xC5, 0x5B, 0xB5, 0xCB, 0x34, 0x89, + 0x92, 0xF1, 0x9D, 0x26, 0x8F, 0xA1, 0x07, 0xD4, 0xC6, 0xB2, 0x78, 0x50, + 0xDB, 0x0C, 0x0C, 0x0B, 0x7C, 0x0B, 0x8C, 0x41, 0xD7, 0xB9, 0xE9, 0xDD, + 0x8C, 0x88, 0xF7, 0xA3, 0x4D, 0xB2, 0x32, 0xCC, 0xD8, 0x17, 0xDA, 0xCD, + 0xB7, 0xCE, 0x66, 0x9D, 0xD4, 0xFD, 0x5E, 0xFF, 0xBD, 0x97, 0x3E, 0x29, + 0x75, 0xE7, 0x7E, 0xA7, 0x62, 0x58, 0xAF, 0x25, 0x34, 0xA5, 0x41, 0xC7, + 0x3D, 0xBC, 0x0D, 0x50, 0xCA, 0x03, 0x03, 0x0F, 0x08, 0x5A, 0x1F, 0x95, + 0x73, 0x78, 0x62, 0xBF, 0xAF, 0x72, 0x14, 0x69, 0x0E, 0xA5, 0xE5, 0x03, + 0x0E, 0x78, 0x8E, 0x26, 0x28, 0x42, 0xF0, 0x07, 0x0B, 0x62, 0x20, 0x10, + 0x67, 0x39, 0x46, 0xFA, 0xA9, 0x03, 0xCC, 0x04, 0x38, 0x7A, 0x66, 0xEF, + 0x20, 0x83, 0xB5, 0x8C, 0x4A, 0x56, 0x8E, 0x91, 0x00, 0xFC, 0x8E, 0x5C, + 0x82, 0xDE, 0x88, 0xA0, 0xC3, 0xE2, 0x68, 0x6E, 0x7D, 0x8D, 0xEF, 0x3C, + 0xDD, 0x65, 0xF4, 0x5D, 0xAC, 0x51, 0xEF, 0x24, 0x80, 0xAE, 0xAA, 0x56, + 0x97, 0x6F, 0xF9, 0xAD, 0x7D, 0xDA, 0x61, 0x3F, 0x98, 0x77, 0x3C, 0xA5, + 0x91, 0xB6, 0x1C, 0x8C, 0x26, 0xDA, 0x65, 0xA2, 0x09, 0x6D, 0xC1, 0xE2, + 0x54, 0xE3, 0xB9, 0xCA, 0x4C, 0x4C, 0x80, 0x8F, 0x77, 0x7B, 0x60, 0x9A, + 0x1E, 0xDF, 0xB6, 0xF2, 0x48, 0x1E, 0x0E, 0xBA, 0x4E, 0x54, 0x6D, 0x98, + 0xE0, 0xE1, 0xA2, 0x1A, 0xA2, 0x77, 0x50, 0xCF, 0xC4, 0x63, 0x92, 0xEC, + 0x47, 0x19, 0x9D, 0xEB, 0xE6, 0x6B, 0xCE, 0xC1 +}; + +static const unsigned char TA25_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA26_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x48, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x53, 0x77, 0x69, 0x73, 0x73, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x41, 0x47, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x18, 0x53, 0x77, 0x69, 0x73, 0x73, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x53, + 0x69, 0x6C, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, + 0x32 +}; + +static const unsigned char TA26_RSA_N[] = { + 0xC4, 0xF1, 0x87, 0x7F, 0xD3, 0x78, 0x31, 0xF7, 0x38, 0xC9, 0xF8, 0xC3, + 0x99, 0x43, 0xBC, 0xC7, 0xF7, 0xBC, 0x37, 0xE7, 0x4E, 0x71, 0xBA, 0x4B, + 0x8F, 0xA5, 0x73, 0x1D, 0x5C, 0x6E, 0x98, 0xAE, 0x03, 0x57, 0xAE, 0x38, + 0x37, 0x43, 0x2F, 0x17, 0x3D, 0x1F, 0xC8, 0xCE, 0x68, 0x10, 0xC1, 0x78, + 0xAE, 0x19, 0x03, 0x2B, 0x10, 0xFA, 0x2C, 0x79, 0x83, 0xF6, 0xE8, 0xB9, + 0x68, 0xB9, 0x55, 0xF2, 0x04, 0x44, 0xA7, 0x39, 0xF9, 0xFC, 0x04, 0x8B, + 0x1E, 0xF1, 0xA2, 0x4D, 0x27, 0xF9, 0x61, 0x7B, 0xBA, 0xB7, 0xE5, 0xA2, + 0x13, 0xB6, 0xEB, 0x61, 0x3E, 0xD0, 0x6C, 0xD1, 0xE6, 0xFB, 0xFA, 0x5E, + 0xED, 0x1D, 0xB4, 0x9E, 0xA0, 0x35, 0x5B, 0xA1, 0x92, 0xCB, 0xF0, 0x49, + 0x92, 0xFE, 0x85, 0x0A, 0x05, 0x3E, 0xE6, 0xD9, 0x0B, 0xE2, 0x4F, 0xBB, + 0xDC, 0x95, 0x37, 0xFC, 0x91, 0xE9, 0x32, 0x35, 0x22, 0xD1, 0x1F, 0x3A, + 0x4E, 0x27, 0x85, 0x9D, 0xB0, 0x15, 0x94, 0x32, 0xDA, 0x61, 0x0D, 0x47, + 0x4D, 0x60, 0x42, 0xAE, 0x92, 0x47, 0xE8, 0x83, 0x5A, 0x50, 0x58, 0xE9, + 0x8A, 0x8B, 0xB9, 0x5D, 0xA1, 0xDC, 0xDD, 0x99, 0x4A, 0x1F, 0x36, 0x67, + 0xBB, 0x48, 0xE4, 0x83, 0xB6, 0x37, 0xEB, 0x48, 0x3A, 0xAF, 0x0F, 0x67, + 0x8F, 0x17, 0x07, 0xE8, 0x04, 0xCA, 0xEF, 0x6A, 0x31, 0x87, 0xD4, 0xC0, + 0xB6, 0xF9, 0x94, 0x71, 0x7B, 0x67, 0x64, 0xB8, 0xB6, 0x91, 0x4A, 0x42, + 0x7B, 0x65, 0x2E, 0x30, 0x6A, 0x0C, 0xF5, 0x90, 0xEE, 0x95, 0xE6, 0xF2, + 0xCD, 0x82, 0xEC, 0xD9, 0xA1, 0x4A, 0xEC, 0xF6, 0xB2, 0x4B, 0xE5, 0x45, + 0x85, 0xE6, 0x6D, 0x78, 0x93, 0x04, 0x2E, 0x9C, 0x82, 0x6D, 0x36, 0xA9, + 0xC4, 0x31, 0x64, 0x1F, 0x86, 0x83, 0x0B, 0x2A, 0xF4, 0x35, 0x0A, 0x78, + 0xC9, 0x55, 0xCF, 0x41, 0xB0, 0x47, 0xE9, 0x30, 0x9F, 0x99, 0xBE, 0x61, + 0xA8, 0x06, 0x84, 0xB9, 0x28, 0x7A, 0x5F, 0x38, 0xD9, 0x1B, 0xA9, 0x38, + 0xB0, 0x83, 0x7F, 0x73, 0xC1, 0xC3, 0x3B, 0x48, 0x2A, 0x82, 0x0F, 0x21, + 0x9B, 0xB8, 0xCC, 0xA8, 0x35, 0xC3, 0x84, 0x1B, 0x83, 0xB3, 0x3E, 0xBE, + 0xA4, 0x95, 0x69, 0x01, 0x3A, 0x89, 0x00, 0x78, 0x04, 0xD9, 0xC9, 0xF4, + 0x99, 0x19, 0xAB, 0x56, 0x7E, 0x5B, 0x8B, 0x86, 0x39, 0x15, 0x91, 0xA4, + 0x10, 0x2C, 0x09, 0x32, 0x80, 0x60, 0xB3, 0x93, 0xC0, 0x2A, 0xB6, 0x18, + 0x0B, 0x9D, 0x7E, 0x8D, 0x49, 0xF2, 0x10, 0x4A, 0x7F, 0xF9, 0xD5, 0x46, + 0x2F, 0x19, 0x92, 0xA3, 0x99, 0xA7, 0x26, 0xAC, 0xBB, 0x8C, 0x3C, 0xE6, + 0x0E, 0xBC, 0x47, 0x07, 0xDC, 0x73, 0x51, 0xF1, 0x70, 0x64, 0x2F, 0x08, + 0xF9, 0xB4, 0x47, 0x1D, 0x30, 0x6C, 0x44, 0xEA, 0x29, 0x37, 0x85, 0x92, + 0x68, 0x66, 0xBC, 0x83, 0x38, 0xFE, 0x7B, 0x39, 0x2E, 0xD3, 0x50, 0xF0, + 0x1F, 0xFB, 0x5E, 0x60, 0xB6, 0xA9, 0xA6, 0xFA, 0x27, 0x41, 0xF1, 0x9B, + 0x18, 0x72, 0xF2, 0xF5, 0x84, 0x74, 0x4A, 0xC9, 0x67, 0xC4, 0x54, 0xAE, + 0x48, 0x64, 0xDF, 0x8C, 0xD1, 0x6E, 0xB0, 0x1D, 0xE1, 0x07, 0x8F, 0x08, + 0x1E, 0x99, 0x9C, 0x71, 0xE9, 0x4C, 0xD8, 0xA5, 0xF7, 0x47, 0x12, 0x1F, + 0x74, 0xD1, 0x51, 0x9E, 0x86, 0xF3, 0xC2, 0xA2, 0x23, 0x40, 0x0B, 0x73, + 0xDB, 0x4B, 0xA6, 0xE7, 0x73, 0x06, 0x8C, 0xC1, 0xA0, 0xE9, 0xC1, 0x59, + 0xAC, 0x46, 0xFA, 0xE6, 0x2F, 0xF8, 0xCF, 0x71, 0x9C, 0x46, 0x6D, 0xB9, + 0xC4, 0x15, 0x8D, 0x38, 0x79, 0x03, 0x45, 0x48, 0xEF, 0xC4, 0x5D, 0xD7, + 0x08, 0xEE, 0x87, 0x39, 0x22, 0x86, 0xB2, 0x0D, 0x0F, 0x58, 0x43, 0xF7, + 0x71, 0xA9, 0x48, 0x2E, 0xFD, 0xEA, 0xD6, 0x1F +}; + +static const unsigned char TA26_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA27_DN[] = { + 0x30, 0x58, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x31, 0x30, 0x2F, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x28, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, + 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA27_RSA_N[] = { + 0xBE, 0xB8, 0x15, 0x7B, 0xFF, 0xD4, 0x7C, 0x7D, 0x67, 0xAD, 0x83, 0x64, + 0x7B, 0xC8, 0x42, 0x53, 0x2D, 0xDF, 0xF6, 0x84, 0x08, 0x20, 0x61, 0xD6, + 0x01, 0x59, 0x6A, 0x9C, 0x44, 0x11, 0xAF, 0xEF, 0x76, 0xFD, 0x95, 0x7E, + 0xCE, 0x61, 0x30, 0xBB, 0x7A, 0x83, 0x5F, 0x02, 0xBD, 0x01, 0x66, 0xCA, + 0xEE, 0x15, 0x8D, 0x6F, 0xA1, 0x30, 0x9C, 0xBD, 0xA1, 0x85, 0x9E, 0x94, + 0x3A, 0xF3, 0x56, 0x88, 0x00, 0x31, 0xCF, 0xD8, 0xEE, 0x6A, 0x96, 0x02, + 0xD9, 0xED, 0x03, 0x8C, 0xFB, 0x75, 0x6D, 0xE7, 0xEA, 0xB8, 0x55, 0x16, + 0x05, 0x16, 0x9A, 0xF4, 0xE0, 0x5E, 0xB1, 0x88, 0xC0, 0x64, 0x85, 0x5C, + 0x15, 0x4D, 0x88, 0xC7, 0xB7, 0xBA, 0xE0, 0x75, 0xE9, 0xAD, 0x05, 0x3D, + 0x9D, 0xC7, 0x89, 0x48, 0xE0, 0xBB, 0x28, 0xC8, 0x03, 0xE1, 0x30, 0x93, + 0x64, 0x5E, 0x52, 0xC0, 0x59, 0x70, 0x22, 0x35, 0x57, 0x88, 0x8A, 0xF1, + 0x95, 0x0A, 0x83, 0xD7, 0xBC, 0x31, 0x73, 0x01, 0x34, 0xED, 0xEF, 0x46, + 0x71, 0xE0, 0x6B, 0x02, 0xA8, 0x35, 0x72, 0x6B, 0x97, 0x9B, 0x66, 0xE0, + 0xCB, 0x1C, 0x79, 0x5F, 0xD8, 0x1A, 0x04, 0x68, 0x1E, 0x47, 0x02, 0xE6, + 0x9D, 0x60, 0xE2, 0x36, 0x97, 0x01, 0xDF, 0xCE, 0x35, 0x92, 0xDF, 0xBE, + 0x67, 0xC7, 0x6D, 0x77, 0x59, 0x3B, 0x8F, 0x9D, 0xD6, 0x90, 0x15, 0x94, + 0xBC, 0x42, 0x34, 0x10, 0xC1, 0x39, 0xF9, 0xB1, 0x27, 0x3E, 0x7E, 0xD6, + 0x8A, 0x75, 0xC5, 0xB2, 0xAF, 0x96, 0xD3, 0xA2, 0xDE, 0x9B, 0xE4, 0x98, + 0xBE, 0x7D, 0xE1, 0xE9, 0x81, 0xAD, 0xB6, 0x6F, 0xFC, 0xD7, 0x0E, 0xDA, + 0xE0, 0x34, 0xB0, 0x0D, 0x1A, 0x77, 0xE7, 0xE3, 0x08, 0x98, 0xEF, 0x58, + 0xFA, 0x9C, 0x84, 0xB7, 0x36, 0xAF, 0xC2, 0xDF, 0xAC, 0xD2, 0xF4, 0x10, + 0x06, 0x70, 0x71, 0x35 +}; + +static const unsigned char TA27_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA28_DN[] = { + 0x30, 0x81, 0xA9, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0C, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2C, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x1F, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x31, 0x38, 0x30, + 0x36, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x2F, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x36, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x31, 0x1F, 0x30, 0x1D, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x16, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA28_RSA_N[] = { + 0xAC, 0xA0, 0xF0, 0xFB, 0x80, 0x59, 0xD4, 0x9C, 0xC7, 0xA4, 0xCF, 0x9D, + 0xA1, 0x59, 0x73, 0x09, 0x10, 0x45, 0x0C, 0x0D, 0x2C, 0x6E, 0x68, 0xF1, + 0x6C, 0x5B, 0x48, 0x68, 0x49, 0x59, 0x37, 0xFC, 0x0B, 0x33, 0x19, 0xC2, + 0x77, 0x7F, 0xCC, 0x10, 0x2D, 0x95, 0x34, 0x1C, 0xE6, 0xEB, 0x4D, 0x09, + 0xA7, 0x1C, 0xD2, 0xB8, 0xC9, 0x97, 0x36, 0x02, 0xB7, 0x89, 0xD4, 0x24, + 0x5F, 0x06, 0xC0, 0xCC, 0x44, 0x94, 0x94, 0x8D, 0x02, 0x62, 0x6F, 0xEB, + 0x5A, 0xDD, 0x11, 0x8D, 0x28, 0x9A, 0x5C, 0x84, 0x90, 0x10, 0x7A, 0x0D, + 0xBD, 0x74, 0x66, 0x2F, 0x6A, 0x38, 0xA0, 0xE2, 0xD5, 0x54, 0x44, 0xEB, + 0x1D, 0x07, 0x9F, 0x07, 0xBA, 0x6F, 0xEE, 0xE9, 0xFD, 0x4E, 0x0B, 0x29, + 0xF5, 0x3E, 0x84, 0xA0, 0x01, 0xF1, 0x9C, 0xAB, 0xF8, 0x1C, 0x7E, 0x89, + 0xA4, 0xE8, 0xA1, 0xD8, 0x71, 0x65, 0x0D, 0xA3, 0x51, 0x7B, 0xEE, 0xBC, + 0xD2, 0x22, 0x60, 0x0D, 0xB9, 0x5B, 0x9D, 0xDF, 0xBA, 0xFC, 0x51, 0x5B, + 0x0B, 0xAF, 0x98, 0xB2, 0xE9, 0x2E, 0xE9, 0x04, 0xE8, 0x62, 0x87, 0xDE, + 0x2B, 0xC8, 0xD7, 0x4E, 0xC1, 0x4C, 0x64, 0x1E, 0xDD, 0xCF, 0x87, 0x58, + 0xBA, 0x4A, 0x4F, 0xCA, 0x68, 0x07, 0x1D, 0x1C, 0x9D, 0x4A, 0xC6, 0xD5, + 0x2F, 0x91, 0xCC, 0x7C, 0x71, 0x72, 0x1C, 0xC5, 0xC0, 0x67, 0xEB, 0x32, + 0xFD, 0xC9, 0x92, 0x5C, 0x94, 0xDA, 0x85, 0xC0, 0x9B, 0xBF, 0x53, 0x7D, + 0x2B, 0x09, 0xF4, 0x8C, 0x9D, 0x91, 0x1F, 0x97, 0x6A, 0x52, 0xCB, 0xDE, + 0x09, 0x36, 0xA4, 0x77, 0xD8, 0x7B, 0x87, 0x50, 0x44, 0xD5, 0x3E, 0x6E, + 0x29, 0x69, 0xFB, 0x39, 0x49, 0x26, 0x1E, 0x09, 0xA5, 0x80, 0x7B, 0x40, + 0x2D, 0xEB, 0xE8, 0x27, 0x85, 0xC9, 0xFE, 0x61, 0xFD, 0x7E, 0xE6, 0x7C, + 0x97, 0x1D, 0xD5, 0x9D +}; + +static const unsigned char TA28_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA29_DN[] = { + 0x30, 0x81, 0xCA, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, + 0x72, 0x6B, 0x31, 0x3A, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x31, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x36, 0x20, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, + 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, + 0x6C, 0x79, 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x3C, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, + 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, + 0x35 +}; + +static const unsigned char TA29_RSA_N[] = { + 0xAF, 0x24, 0x08, 0x08, 0x29, 0x7A, 0x35, 0x9E, 0x60, 0x0C, 0xAA, 0xE7, + 0x4B, 0x3B, 0x4E, 0xDC, 0x7C, 0xBC, 0x3C, 0x45, 0x1C, 0xBB, 0x2B, 0xE0, + 0xFE, 0x29, 0x02, 0xF9, 0x57, 0x08, 0xA3, 0x64, 0x85, 0x15, 0x27, 0xF5, + 0xF1, 0xAD, 0xC8, 0x31, 0x89, 0x5D, 0x22, 0xE8, 0x2A, 0xAA, 0xA6, 0x42, + 0xB3, 0x8F, 0xF8, 0xB9, 0x55, 0xB7, 0xB1, 0xB7, 0x4B, 0xB3, 0xFE, 0x8F, + 0x7E, 0x07, 0x57, 0xEC, 0xEF, 0x43, 0xDB, 0x66, 0x62, 0x15, 0x61, 0xCF, + 0x60, 0x0D, 0xA4, 0xD8, 0xDE, 0xF8, 0xE0, 0xC3, 0x62, 0x08, 0x3D, 0x54, + 0x13, 0xEB, 0x49, 0xCA, 0x59, 0x54, 0x85, 0x26, 0xE5, 0x2B, 0x8F, 0x1B, + 0x9F, 0xEB, 0xF5, 0xA1, 0x91, 0xC2, 0x33, 0x49, 0xD8, 0x43, 0x63, 0x6A, + 0x52, 0x4B, 0xD2, 0x8F, 0xE8, 0x70, 0x51, 0x4D, 0xD1, 0x89, 0x69, 0x7B, + 0xC7, 0x70, 0xF6, 0xB3, 0xDC, 0x12, 0x74, 0xDB, 0x7B, 0x5D, 0x4B, 0x56, + 0xD3, 0x96, 0xBF, 0x15, 0x77, 0xA1, 0xB0, 0xF4, 0xA2, 0x25, 0xF2, 0xAF, + 0x1C, 0x92, 0x67, 0x18, 0xE5, 0xF4, 0x06, 0x04, 0xEF, 0x90, 0xB9, 0xE4, + 0x00, 0xE4, 0xDD, 0x3A, 0xB5, 0x19, 0xFF, 0x02, 0xBA, 0xF4, 0x3C, 0xEE, + 0xE0, 0x8B, 0xEB, 0x37, 0x8B, 0xEC, 0xF4, 0xD7, 0xAC, 0xF2, 0xF6, 0xF0, + 0x3D, 0xAF, 0xDD, 0x75, 0x91, 0x33, 0x19, 0x1D, 0x1C, 0x40, 0xCB, 0x74, + 0x24, 0x19, 0x21, 0x93, 0xD9, 0x14, 0xFE, 0xAC, 0x2A, 0x52, 0xC7, 0x8F, + 0xD5, 0x04, 0x49, 0xE4, 0x8D, 0x63, 0x47, 0x88, 0x3C, 0x69, 0x83, 0xCB, + 0xFE, 0x47, 0xBD, 0x2B, 0x7E, 0x4F, 0xC5, 0x95, 0xAE, 0x0E, 0x9D, 0xD4, + 0xD1, 0x43, 0xC0, 0x67, 0x73, 0xE3, 0x14, 0x08, 0x7E, 0xE5, 0x3F, 0x9F, + 0x73, 0xB8, 0x33, 0x0A, 0xCF, 0x5D, 0x3F, 0x34, 0x87, 0x96, 0x8A, 0xEE, + 0x53, 0xE8, 0x25, 0x15 +}; + +static const unsigned char TA29_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA30_DN[] = { + 0x30, 0x48, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x17, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0E, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x43, 0x41 +}; + +static const unsigned char TA30_RSA_N[] = { + 0xAB, 0xA4, 0x81, 0xE5, 0x95, 0xCD, 0xF5, 0xF6, 0x14, 0x8E, 0xC2, 0x4F, + 0xCA, 0xD4, 0xE2, 0x78, 0x95, 0x58, 0x9C, 0x41, 0xE1, 0x0D, 0x99, 0x40, + 0x24, 0x17, 0x39, 0x91, 0x33, 0x66, 0xE9, 0xBE, 0xE1, 0x83, 0xAF, 0x62, + 0x5C, 0x89, 0xD1, 0xFC, 0x24, 0x5B, 0x61, 0xB3, 0xE0, 0x11, 0x11, 0x41, + 0x1C, 0x1D, 0x6E, 0xF0, 0xB8, 0xBB, 0xF8, 0xDE, 0xA7, 0x81, 0xBA, 0xA6, + 0x48, 0xC6, 0x9F, 0x1D, 0xBD, 0xBE, 0x8E, 0xA9, 0x41, 0x3E, 0xB8, 0x94, + 0xED, 0x29, 0x1A, 0xD4, 0x8E, 0xD2, 0x03, 0x1D, 0x03, 0xEF, 0x6D, 0x0D, + 0x67, 0x1C, 0x57, 0xD7, 0x06, 0xAD, 0xCA, 0xC8, 0xF5, 0xFE, 0x0E, 0xAF, + 0x66, 0x25, 0x48, 0x04, 0x96, 0x0B, 0x5D, 0xA3, 0xBA, 0x16, 0xC3, 0x08, + 0x4F, 0xD1, 0x46, 0xF8, 0x14, 0x5C, 0xF2, 0xC8, 0x5E, 0x01, 0x99, 0x6D, + 0xFD, 0x88, 0xCC, 0x86, 0xA8, 0xC1, 0x6F, 0x31, 0x42, 0x6C, 0x52, 0x3E, + 0x68, 0xCB, 0xF3, 0x19, 0x34, 0xDF, 0xBB, 0x87, 0x18, 0x56, 0x80, 0x26, + 0xC4, 0xD0, 0xDC, 0xC0, 0x6F, 0xDF, 0xDE, 0xA0, 0xC2, 0x91, 0x16, 0xA0, + 0x64, 0x11, 0x4B, 0x44, 0xBC, 0x1E, 0xF6, 0xE7, 0xFA, 0x63, 0xDE, 0x66, + 0xAC, 0x76, 0xA4, 0x71, 0xA3, 0xEC, 0x36, 0x94, 0x68, 0x7A, 0x77, 0xA4, + 0xB1, 0xE7, 0x0E, 0x2F, 0x81, 0x7A, 0xE2, 0xB5, 0x72, 0x86, 0xEF, 0xA2, + 0x6B, 0x8B, 0xF0, 0x0F, 0xDB, 0xD3, 0x59, 0x3F, 0xBA, 0x72, 0xBC, 0x44, + 0x24, 0x9C, 0xE3, 0x73, 0xB3, 0xF7, 0xAF, 0x57, 0x2F, 0x42, 0x26, 0x9D, + 0xA9, 0x74, 0xBA, 0x00, 0x52, 0xF2, 0x4B, 0xCD, 0x53, 0x7C, 0x47, 0x0B, + 0x36, 0x85, 0x0E, 0x66, 0xA9, 0x08, 0x97, 0x16, 0x34, 0x57, 0xC1, 0x66, + 0xF7, 0x80, 0xE3, 0xED, 0x70, 0x54, 0xC7, 0x93, 0xE0, 0x2E, 0x28, 0x15, + 0x59, 0x87, 0xBA, 0xBB +}; + +static const unsigned char TA30_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA31_DN[] = { + 0x30, 0x4A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x17, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, + 0x6E, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, + 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, + 0x6C, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA31_RSA_N[] = { + 0xAF, 0x35, 0x2E, 0xD8, 0xAC, 0x6C, 0x55, 0x69, 0x06, 0x71, 0xE5, 0x13, + 0x68, 0x24, 0xB3, 0x4F, 0xD8, 0xCC, 0x21, 0x47, 0xF8, 0xF1, 0x60, 0x38, + 0x89, 0x89, 0x03, 0xE9, 0xBD, 0xEA, 0x5E, 0x46, 0x53, 0x09, 0xDC, 0x5C, + 0xF5, 0x5A, 0xE8, 0xF7, 0x45, 0x2A, 0x02, 0xEB, 0x31, 0x61, 0xD7, 0x29, + 0x33, 0x4C, 0xCE, 0xC7, 0x7C, 0x0A, 0x37, 0x7E, 0x0F, 0xBA, 0x32, 0x98, + 0xE1, 0x1D, 0x97, 0xAF, 0x8F, 0xC7, 0xDC, 0xC9, 0x38, 0x96, 0xF3, 0xDB, + 0x1A, 0xFC, 0x51, 0xED, 0x68, 0xC6, 0xD0, 0x6E, 0xA4, 0x7C, 0x24, 0xD1, + 0xAE, 0x42, 0xC8, 0x96, 0x50, 0x63, 0x2E, 0xE0, 0xFE, 0x75, 0xFE, 0x98, + 0xA7, 0x5F, 0x49, 0x2E, 0x95, 0xE3, 0x39, 0x33, 0x64, 0x8E, 0x1E, 0xA4, + 0x5F, 0x90, 0xD2, 0x67, 0x3C, 0xB2, 0xD9, 0xFE, 0x41, 0xB9, 0x55, 0xA7, + 0x09, 0x8E, 0x72, 0x05, 0x1E, 0x8B, 0xDD, 0x44, 0x85, 0x82, 0x42, 0xD0, + 0x49, 0xC0, 0x1D, 0x60, 0xF0, 0xD1, 0x17, 0x2C, 0x95, 0xEB, 0xF6, 0xA5, + 0xC1, 0x92, 0xA3, 0xC5, 0xC2, 0xA7, 0x08, 0x60, 0x0D, 0x60, 0x04, 0x10, + 0x96, 0x79, 0x9E, 0x16, 0x34, 0xE6, 0xA9, 0xB6, 0xFA, 0x25, 0x45, 0x39, + 0xC8, 0x1E, 0x65, 0xF9, 0x93, 0xF5, 0xAA, 0xF1, 0x52, 0xDC, 0x99, 0x98, + 0x3D, 0xA5, 0x86, 0x1A, 0x0C, 0x35, 0x33, 0xFA, 0x4B, 0xA5, 0x04, 0x06, + 0x15, 0x1C, 0x31, 0x80, 0xEF, 0xAA, 0x18, 0x6B, 0xC2, 0x7B, 0xD7, 0xDA, + 0xCE, 0xF9, 0x33, 0x20, 0xD5, 0xF5, 0xBD, 0x6A, 0x33, 0x2D, 0x81, 0x04, + 0xFB, 0xB0, 0x5C, 0xD4, 0x9C, 0xA3, 0xE2, 0x5C, 0x1D, 0xE3, 0xA9, 0x42, + 0x75, 0x5E, 0x7B, 0xD4, 0x77, 0xEF, 0x39, 0x54, 0xBA, 0xC9, 0x0A, 0x18, + 0x1B, 0x12, 0x99, 0x49, 0x2F, 0x88, 0x4B, 0xFD, 0x50, 0x62, 0xD1, 0x73, + 0xE7, 0x8F, 0x7A, 0x43 +}; + +static const unsigned char TA31_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA32_DN[] = { + 0x30, 0x81, 0x81, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, + 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, + 0x6F, 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x11, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, + 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x27, 0x30, 0x25, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x1E, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, + 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA32_RSA_N[] = { + 0xD0, 0x40, 0x8B, 0x8B, 0x72, 0xE3, 0x91, 0x1B, 0xF7, 0x51, 0xC1, 0x1B, + 0x54, 0x04, 0x98, 0xD3, 0xA9, 0xBF, 0xC1, 0xE6, 0x8A, 0x5D, 0x3B, 0x87, + 0xFB, 0xBB, 0x88, 0xCE, 0x0D, 0xE3, 0x2F, 0x3F, 0x06, 0x96, 0xF0, 0xA2, + 0x29, 0x50, 0x99, 0xAE, 0xDB, 0x3B, 0xA1, 0x57, 0xB0, 0x74, 0x51, 0x71, + 0xCD, 0xED, 0x42, 0x91, 0x4D, 0x41, 0xFE, 0xA9, 0xC8, 0xD8, 0x6A, 0x86, + 0x77, 0x44, 0xBB, 0x59, 0x66, 0x97, 0x50, 0x5E, 0xB4, 0xD4, 0x2C, 0x70, + 0x44, 0xCF, 0xDA, 0x37, 0x95, 0x42, 0x69, 0x3C, 0x30, 0xC4, 0x71, 0xB3, + 0x52, 0xF0, 0x21, 0x4D, 0xA1, 0xD8, 0xBA, 0x39, 0x7C, 0x1C, 0x9E, 0xA3, + 0x24, 0x9D, 0xF2, 0x83, 0x16, 0x98, 0xAA, 0x16, 0x7C, 0x43, 0x9B, 0x15, + 0x5B, 0xB7, 0xAE, 0x34, 0x91, 0xFE, 0xD4, 0x62, 0x26, 0x18, 0x46, 0x9A, + 0x3F, 0xEB, 0xC1, 0xF9, 0xF1, 0x90, 0x57, 0xEB, 0xAC, 0x7A, 0x0D, 0x8B, + 0xDB, 0x72, 0x30, 0x6A, 0x66, 0xD5, 0xE0, 0x46, 0xA3, 0x70, 0xDC, 0x68, + 0xD9, 0xFF, 0x04, 0x48, 0x89, 0x77, 0xDE, 0xB5, 0xE9, 0xFB, 0x67, 0x6D, + 0x41, 0xE9, 0xBC, 0x39, 0xBD, 0x32, 0xD9, 0x62, 0x02, 0xF1, 0xB1, 0xA8, + 0x3D, 0x6E, 0x37, 0x9C, 0xE2, 0x2F, 0xE2, 0xD3, 0xA2, 0x26, 0x8B, 0xC6, + 0xB8, 0x55, 0x43, 0x88, 0xE1, 0x23, 0x3E, 0xA5, 0xD2, 0x24, 0x39, 0x6A, + 0x47, 0xAB, 0x00, 0xD4, 0xA1, 0xB3, 0xA9, 0x25, 0xFE, 0x0D, 0x3F, 0xA7, + 0x1D, 0xBA, 0xD3, 0x51, 0xC1, 0x0B, 0xA4, 0xDA, 0xAC, 0x38, 0xEF, 0x55, + 0x50, 0x24, 0x05, 0x65, 0x46, 0x93, 0x34, 0x4F, 0x2D, 0x8D, 0xAD, 0xC6, + 0xD4, 0x21, 0x19, 0xD2, 0x8E, 0xCA, 0x05, 0x61, 0x71, 0x07, 0x73, 0x47, + 0xE5, 0x8A, 0x19, 0x12, 0xBD, 0x04, 0x4D, 0xCE, 0x4E, 0x9C, 0xA5, 0x48, + 0xAC, 0xBB, 0x26, 0xF7 +}; + +static const unsigned char TA32_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA33_DN[] = { + 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x18, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x53, 0x6F, + 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x4C, 0x2E, 0x4C, 0x2E, + 0x43, 0x2E, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x27, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x53, 0x6F, 0x6C, + 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA33_RSA_N[] = { + 0xE4, 0xBC, 0x7E, 0x92, 0x30, 0x6D, 0xC6, 0xD8, 0x8E, 0x2B, 0x0B, 0xBC, + 0x46, 0xCE, 0xE0, 0x27, 0x96, 0xDE, 0xDE, 0xF9, 0xFA, 0x12, 0xD3, 0x3C, + 0x33, 0x73, 0xB3, 0x04, 0x2F, 0xBC, 0x71, 0x8C, 0xE5, 0x9F, 0xB6, 0x22, + 0x60, 0x3E, 0x5F, 0x5D, 0xCE, 0x09, 0xFF, 0x82, 0x0C, 0x1B, 0x9A, 0x51, + 0x50, 0x1A, 0x26, 0x89, 0xDD, 0xD5, 0x61, 0x5D, 0x19, 0xDC, 0x12, 0x0F, + 0x2D, 0x0A, 0xA2, 0x43, 0x5D, 0x17, 0xD0, 0x34, 0x92, 0x20, 0xEA, 0x73, + 0xCF, 0x38, 0x2C, 0x06, 0x26, 0x09, 0x7A, 0x72, 0xF7, 0xFA, 0x50, 0x32, + 0xF8, 0xC2, 0x93, 0xD3, 0x69, 0xA2, 0x23, 0xCE, 0x41, 0xB1, 0xCC, 0xE4, + 0xD5, 0x1F, 0x36, 0xD1, 0x8A, 0x3A, 0xF8, 0x8C, 0x63, 0xE2, 0x14, 0x59, + 0x69, 0xED, 0x0D, 0xD3, 0x7F, 0x6B, 0xE8, 0xB8, 0x03, 0xE5, 0x4F, 0x6A, + 0xE5, 0x98, 0x63, 0x69, 0x48, 0x05, 0xBE, 0x2E, 0xFF, 0x33, 0xB6, 0xE9, + 0x97, 0x59, 0x69, 0xF8, 0x67, 0x19, 0xAE, 0x93, 0x61, 0x96, 0x44, 0x15, + 0xD3, 0x72, 0xB0, 0x3F, 0xBC, 0x6A, 0x7D, 0xEC, 0x48, 0x7F, 0x8D, 0xC3, + 0xAB, 0xAA, 0x71, 0x2B, 0x53, 0x69, 0x41, 0x53, 0x34, 0xB5, 0xB0, 0xB9, + 0xC5, 0x06, 0x0A, 0xC4, 0xB0, 0x45, 0xF5, 0x41, 0x5D, 0x6E, 0x89, 0x45, + 0x7B, 0x3D, 0x3B, 0x26, 0x8C, 0x74, 0xC2, 0xE5, 0xD2, 0xD1, 0x7D, 0xB2, + 0x11, 0xD4, 0xFB, 0x58, 0x32, 0x22, 0x9A, 0x80, 0xC9, 0xDC, 0xFD, 0x0C, + 0xE9, 0x7F, 0x5E, 0x03, 0x97, 0xCE, 0x3B, 0x00, 0x14, 0x87, 0x27, 0x70, + 0x38, 0xA9, 0x8E, 0x6E, 0xB3, 0x27, 0x76, 0x98, 0x51, 0xE0, 0x05, 0xE3, + 0x21, 0xAB, 0x1A, 0xD5, 0x85, 0x22, 0x3C, 0x29, 0xB5, 0x9A, 0x16, 0xC5, + 0x80, 0xA8, 0xF4, 0xBB, 0x6B, 0x30, 0x8F, 0x2F, 0x46, 0x02, 0xA2, 0xB1, + 0x0C, 0x22, 0xE0, 0xD3 +}; + +static const unsigned char TA33_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA34_DN[] = { + 0x30, 0x81, 0x85, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, + 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, + 0x6F, 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x11, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, + 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2B, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, + 0x20, 0x45, 0x43, 0x43, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA34_EC_Q[] = { + 0x04, 0x03, 0x47, 0x7B, 0x2F, 0x75, 0xC9, 0x82, 0x15, 0x85, 0xFB, 0x75, + 0xE4, 0x91, 0x16, 0xD4, 0xAB, 0x62, 0x99, 0xF5, 0x3E, 0x52, 0x0B, 0x06, + 0xCE, 0x41, 0x00, 0x7F, 0x97, 0xE1, 0x0A, 0x24, 0x3C, 0x1D, 0x01, 0x04, + 0xEE, 0x3D, 0xD2, 0x8D, 0x09, 0x97, 0x0C, 0xE0, 0x75, 0xE4, 0xFA, 0xFB, + 0x77, 0x8A, 0x2A, 0xF5, 0x03, 0x60, 0x4B, 0x36, 0x8B, 0x16, 0x23, 0x16, + 0xAD, 0x09, 0x71, 0xF4, 0x4A, 0xF4, 0x28, 0x50, 0xB4, 0xFE, 0x88, 0x1C, + 0x6E, 0x3F, 0x6C, 0x2F, 0x2F, 0x09, 0x59, 0x5B, 0xA5, 0x5B, 0x0B, 0x33, + 0x99, 0xE2, 0xC3, 0x3D, 0x89, 0xF9, 0x6A, 0x2C, 0xEF, 0xB2, 0xD3, 0x06, + 0xE9 +}; + +static const unsigned char TA35_DN[] = { + 0x30, 0x81, 0x8A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x43, 0x48, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x07, 0x57, 0x49, 0x53, 0x65, 0x4B, 0x65, 0x79, 0x31, 0x1B, + 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x12, 0x43, 0x6F, 0x70, + 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x32, + 0x30, 0x30, 0x35, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x19, 0x4F, 0x49, 0x53, 0x54, 0x45, 0x20, 0x46, 0x6F, 0x75, 0x6E, + 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x45, 0x6E, 0x64, 0x6F, 0x72, + 0x73, 0x65, 0x64, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x1F, 0x4F, 0x49, 0x53, 0x54, 0x45, 0x20, 0x57, 0x49, 0x53, 0x65, + 0x4B, 0x65, 0x79, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, + 0x6F, 0x6F, 0x74, 0x20, 0x47, 0x41, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA35_RSA_N[] = { + 0xCB, 0x4F, 0xB3, 0x00, 0x9B, 0x3D, 0x36, 0xDD, 0xF9, 0xD1, 0x49, 0x6A, + 0x6B, 0x10, 0x49, 0x1F, 0xEC, 0xD8, 0x2B, 0xB2, 0xC6, 0xF8, 0x32, 0x81, + 0x29, 0x43, 0x95, 0x4C, 0x9A, 0x19, 0x23, 0x21, 0x15, 0x45, 0xDE, 0xE3, + 0xC8, 0x1C, 0x51, 0x55, 0x5B, 0xAE, 0x93, 0xE8, 0x37, 0xFF, 0x2B, 0x6B, + 0xE9, 0xD4, 0xEA, 0xBE, 0x2A, 0xDD, 0xA8, 0x51, 0x2B, 0xD7, 0x66, 0xC3, + 0x61, 0x5C, 0x60, 0x02, 0xC8, 0xF5, 0xCE, 0x72, 0x7B, 0x3B, 0xB8, 0xF2, + 0x4E, 0x65, 0x08, 0x9A, 0xCD, 0xA4, 0x6A, 0x19, 0xC1, 0x01, 0xBB, 0x73, + 0xA6, 0xD7, 0xF6, 0xC3, 0xDD, 0xCD, 0xBC, 0xA4, 0x8B, 0xB5, 0x99, 0x61, + 0xB8, 0x01, 0xA2, 0xA3, 0xD4, 0x4D, 0xD4, 0x05, 0x3D, 0x91, 0xAD, 0xF8, + 0xB4, 0x08, 0x71, 0x64, 0xAF, 0x70, 0xF1, 0x1C, 0x6B, 0x7E, 0xF6, 0xC3, + 0x77, 0x9D, 0x24, 0x73, 0x7B, 0xE4, 0x0C, 0x8C, 0xE1, 0xD9, 0x36, 0xE1, + 0x99, 0x8B, 0x05, 0x99, 0x0B, 0xED, 0x45, 0x31, 0x09, 0xCA, 0xC2, 0x00, + 0xDB, 0xF7, 0x72, 0xA0, 0x96, 0xAA, 0x95, 0x87, 0xD0, 0x8E, 0xC7, 0xB6, + 0x61, 0x73, 0x0D, 0x76, 0x66, 0x8C, 0xDC, 0x1B, 0xB4, 0x63, 0xA2, 0x9F, + 0x7F, 0x93, 0x13, 0x30, 0xF1, 0xA1, 0x27, 0xDB, 0xD9, 0xFF, 0x2C, 0x55, + 0x88, 0x91, 0xA0, 0xE0, 0x4F, 0x07, 0xB0, 0x28, 0x56, 0x8C, 0x18, 0x1B, + 0x97, 0x44, 0x8E, 0x89, 0xDD, 0xE0, 0x17, 0x6E, 0xE7, 0x2A, 0xEF, 0x8F, + 0x39, 0x0A, 0x31, 0x84, 0x82, 0xD8, 0x40, 0x14, 0x49, 0x2E, 0x7A, 0x41, + 0xE4, 0xA7, 0xFE, 0xE3, 0x64, 0xCC, 0xC1, 0x59, 0x71, 0x4B, 0x2C, 0x21, + 0xA7, 0x5B, 0x7D, 0xE0, 0x1D, 0xD1, 0x2E, 0x81, 0x9B, 0xC3, 0xD8, 0x68, + 0xF7, 0xBD, 0x96, 0x1B, 0xAC, 0x70, 0xB1, 0x16, 0x14, 0x0B, 0xDB, 0x60, + 0xB9, 0x26, 0x01, 0x05 +}; + +static const unsigned char TA35_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA36_DN[] = { + 0x30, 0x34, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x09, 0x44, 0x68, 0x69, 0x6D, 0x79, 0x6F, 0x74, 0x69, 0x73, 0x31, + 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x08, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x67, 0x6E, 0x61 +}; + +static const unsigned char TA36_RSA_N[] = { + 0xC8, 0x68, 0xF1, 0xC9, 0xD6, 0xD6, 0xB3, 0x34, 0x75, 0x26, 0x82, 0x1E, + 0xEC, 0xB4, 0xBE, 0xEA, 0x5C, 0xE1, 0x26, 0xED, 0x11, 0x47, 0x61, 0xE1, + 0xA2, 0x7C, 0x16, 0x78, 0x40, 0x21, 0xE4, 0x60, 0x9E, 0x5A, 0xC8, 0x63, + 0xE1, 0xC4, 0xB1, 0x96, 0x92, 0xFF, 0x18, 0x6D, 0x69, 0x23, 0xE1, 0x2B, + 0x62, 0xF7, 0xDD, 0xE2, 0x36, 0x2F, 0x91, 0x07, 0xB9, 0x48, 0xCF, 0x0E, + 0xEC, 0x79, 0xB6, 0x2C, 0xE7, 0x34, 0x4B, 0x70, 0x08, 0x25, 0xA3, 0x3C, + 0x87, 0x1B, 0x19, 0xF2, 0x81, 0x07, 0x0F, 0x38, 0x90, 0x19, 0xD3, 0x11, + 0xFE, 0x86, 0xB4, 0xF2, 0xD1, 0x5E, 0x1E, 0x1E, 0x96, 0xCD, 0x80, 0x6C, + 0xCE, 0x3B, 0x31, 0x93, 0xB6, 0xF2, 0xA0, 0xD0, 0xA9, 0x95, 0x12, 0x7D, + 0xA5, 0x9A, 0xCC, 0x6B, 0xC8, 0x84, 0x56, 0x8A, 0x33, 0xA9, 0xE7, 0x22, + 0x15, 0x53, 0x16, 0xF0, 0xCC, 0x17, 0xEC, 0x57, 0x5F, 0xE9, 0xA2, 0x0A, + 0x98, 0x09, 0xDE, 0xE3, 0x5F, 0x9C, 0x6F, 0xDC, 0x48, 0xE3, 0x85, 0x0B, + 0x15, 0x5A, 0xA6, 0xBA, 0x9F, 0xAC, 0x48, 0xE3, 0x09, 0xB2, 0xF7, 0xF4, + 0x32, 0xDE, 0x5E, 0x34, 0xBE, 0x1C, 0x78, 0x5D, 0x42, 0x5B, 0xCE, 0x0E, + 0x22, 0x8F, 0x4D, 0x90, 0xD7, 0x7D, 0x32, 0x18, 0xB3, 0x0B, 0x2C, 0x6A, + 0xBF, 0x8E, 0x3F, 0x14, 0x11, 0x89, 0x20, 0x0E, 0x77, 0x14, 0xB5, 0x3D, + 0x94, 0x08, 0x87, 0xF7, 0x25, 0x1E, 0xD5, 0xB2, 0x60, 0x00, 0xEC, 0x6F, + 0x2A, 0x28, 0x25, 0x6E, 0x2A, 0x3E, 0x18, 0x63, 0x17, 0x25, 0x3F, 0x3E, + 0x44, 0x20, 0x16, 0xF6, 0x26, 0xC8, 0x25, 0xAE, 0x05, 0x4A, 0xB4, 0xE7, + 0x63, 0x2C, 0xF3, 0x8C, 0x16, 0x53, 0x7E, 0x5C, 0xFB, 0x11, 0x1A, 0x08, + 0xC1, 0x46, 0x62, 0x9F, 0x22, 0xB8, 0xF1, 0xC2, 0x8D, 0x69, 0xDC, 0xFA, + 0x3A, 0x58, 0x06, 0xDF +}; + +static const unsigned char TA36_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA37_DN[] = { + 0x30, 0x71, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x44, 0x45, 0x31, 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x13, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x65, 0x20, 0x54, + 0x65, 0x6C, 0x65, 0x6B, 0x6F, 0x6D, 0x20, 0x41, 0x47, 0x31, 0x1F, 0x30, + 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x16, 0x54, 0x2D, 0x54, 0x65, + 0x6C, 0x65, 0x53, 0x65, 0x63, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x43, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x1A, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, + 0x65, 0x20, 0x54, 0x65, 0x6C, 0x65, 0x6B, 0x6F, 0x6D, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32 +}; + +static const unsigned char TA37_RSA_N[] = { + 0xAB, 0x0B, 0xA3, 0x35, 0xE0, 0x8B, 0x29, 0x14, 0xB1, 0x14, 0x85, 0xAF, + 0x3C, 0x10, 0xE4, 0x39, 0x6F, 0x35, 0x5D, 0x4A, 0xAE, 0xDD, 0xEA, 0x61, + 0x8D, 0x95, 0x49, 0xF4, 0x6F, 0x64, 0xA3, 0x1A, 0x60, 0x66, 0xA4, 0xA9, + 0x40, 0x22, 0x84, 0xD9, 0xD4, 0xA5, 0xE5, 0x78, 0x93, 0x0E, 0x68, 0x01, + 0xAD, 0xB9, 0x4D, 0x5C, 0x3A, 0xCE, 0xD3, 0xB8, 0xA8, 0x42, 0x40, 0xDF, + 0xCF, 0xA3, 0xBA, 0x82, 0x59, 0x6A, 0x92, 0x1B, 0xAC, 0x1C, 0x9A, 0xDA, + 0x08, 0x2B, 0x25, 0x27, 0xF9, 0x69, 0x23, 0x47, 0xF1, 0xE0, 0xEB, 0x2C, + 0x7A, 0x9B, 0xF5, 0x13, 0x02, 0xD0, 0x7E, 0x34, 0x7C, 0xC2, 0x9E, 0x3C, + 0x00, 0x59, 0xAB, 0xF5, 0xDA, 0x0C, 0xF5, 0x32, 0x3C, 0x2B, 0xAC, 0x50, + 0xDA, 0xD6, 0xC3, 0xDE, 0x83, 0x94, 0xCA, 0xA8, 0x0C, 0x99, 0x32, 0x0E, + 0x08, 0x48, 0x56, 0x5B, 0x6A, 0xFB, 0xDA, 0xE1, 0x58, 0x58, 0x01, 0x49, + 0x5F, 0x72, 0x41, 0x3C, 0x15, 0x06, 0x01, 0x8E, 0x5D, 0xAD, 0xAA, 0xB8, + 0x93, 0xB4, 0xCD, 0x9E, 0xEB, 0xA7, 0xE8, 0x6A, 0x2D, 0x52, 0x34, 0xDB, + 0x3A, 0xEF, 0x5C, 0x75, 0x51, 0xDA, 0xDB, 0xF3, 0x31, 0xF9, 0xEE, 0x71, + 0x98, 0x32, 0xC4, 0x54, 0x15, 0x44, 0x0C, 0xF9, 0x9B, 0x55, 0xED, 0xAD, + 0xDF, 0x18, 0x08, 0xA0, 0xA3, 0x86, 0x8A, 0x49, 0xEE, 0x53, 0x05, 0x8F, + 0x19, 0x4C, 0xD5, 0xDE, 0x58, 0x79, 0x9B, 0xD2, 0x6A, 0x1C, 0x42, 0xAB, + 0xC5, 0xD5, 0xA7, 0xCF, 0x68, 0x0F, 0x96, 0xE4, 0xE1, 0x61, 0x98, 0x76, + 0x61, 0xC8, 0x91, 0x7C, 0xD6, 0x3E, 0x00, 0xE2, 0x91, 0x50, 0x87, 0xE1, + 0x9D, 0x0A, 0xE6, 0xAD, 0x97, 0xD2, 0x1D, 0xC6, 0x3A, 0x7D, 0xCB, 0xBC, + 0xDA, 0x03, 0x34, 0xD5, 0x8E, 0x5B, 0x01, 0xF5, 0x6A, 0x07, 0xB7, 0x16, + 0xB6, 0x6E, 0x4A, 0x7F +}; + +static const unsigned char TA37_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA38_DN[] = { + 0x30, 0x3B, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, + 0x0F, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x13, 0x16, 0x43, 0x79, 0x62, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, + 0x74 +}; + +static const unsigned char TA38_RSA_N[] = { + 0xF8, 0xC8, 0xBC, 0xBD, 0x14, 0x50, 0x66, 0x13, 0xFF, 0xF0, 0xD3, 0x79, + 0xEC, 0x23, 0xF2, 0xB7, 0x1A, 0xC7, 0x8E, 0x85, 0xF1, 0x12, 0x73, 0xA6, + 0x19, 0xAA, 0x10, 0xDB, 0x9C, 0xA2, 0x65, 0x74, 0x5A, 0x77, 0x3E, 0x51, + 0x7D, 0x56, 0xF6, 0xDC, 0x23, 0xB6, 0xD4, 0xED, 0x5F, 0x58, 0xB1, 0x37, + 0x4D, 0xD5, 0x49, 0x0E, 0x6E, 0xF5, 0x6A, 0x87, 0xD6, 0xD2, 0x8C, 0xD2, + 0x27, 0xC6, 0xE2, 0xFF, 0x36, 0x9F, 0x98, 0x65, 0xA0, 0x13, 0x4E, 0xC6, + 0x2A, 0x64, 0x9B, 0xD5, 0x90, 0x12, 0xCF, 0x14, 0x06, 0xF4, 0x3B, 0xE3, + 0xD4, 0x28, 0xBE, 0xE8, 0x0E, 0xF8, 0xAB, 0x4E, 0x48, 0x94, 0x6D, 0x8E, + 0x95, 0x31, 0x10, 0x5C, 0xED, 0xA2, 0x2D, 0xBD, 0xD5, 0x3A, 0x6D, 0xB2, + 0x1C, 0xBB, 0x60, 0xC0, 0x46, 0x4B, 0x01, 0xF5, 0x49, 0xAE, 0x7E, 0x46, + 0x8A, 0xD0, 0x74, 0x8D, 0xA1, 0x0C, 0x02, 0xCE, 0xEE, 0xFC, 0xE7, 0x8F, + 0xB8, 0x6B, 0x66, 0xF3, 0x7F, 0x44, 0x00, 0xBF, 0x66, 0x25, 0x14, 0x2B, + 0xDD, 0x10, 0x30, 0x1D, 0x07, 0x96, 0x3F, 0x4D, 0xF6, 0x6B, 0xB8, 0x8F, + 0xB7, 0x7B, 0x0C, 0xA5, 0x38, 0xEB, 0xDE, 0x47, 0xDB, 0xD5, 0x5D, 0x39, + 0xFC, 0x88, 0xA7, 0xF3, 0xD7, 0x2A, 0x74, 0xF1, 0xE8, 0x5A, 0xA2, 0x3B, + 0x9F, 0x50, 0xBA, 0xA6, 0x8C, 0x45, 0x35, 0xC2, 0x50, 0x65, 0x95, 0xDC, + 0x63, 0x82, 0xEF, 0xDD, 0xBF, 0x77, 0x4D, 0x9C, 0x62, 0xC9, 0x63, 0x73, + 0x16, 0xD0, 0x29, 0x0F, 0x49, 0xA9, 0x48, 0xF0, 0xB3, 0xAA, 0xB7, 0x6C, + 0xC5, 0xA7, 0x30, 0x39, 0x40, 0x5D, 0xAE, 0xC4, 0xE2, 0x5D, 0x26, 0x53, + 0xF0, 0xCE, 0x1C, 0x23, 0x08, 0x61, 0xA8, 0x94, 0x19, 0xBA, 0x04, 0x62, + 0x40, 0xEC, 0x1F, 0x38, 0x70, 0x77, 0x12, 0x06, 0x71, 0xA7, 0x30, 0x18, + 0x5D, 0x25, 0x27, 0xA5 +}; + +static const unsigned char TA38_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA39_DN[] = { + 0x30, 0x5E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x54, 0x57, 0x31, 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x1A, 0x43, 0x68, 0x75, 0x6E, 0x67, 0x68, 0x77, 0x61, 0x20, 0x54, + 0x65, 0x6C, 0x65, 0x63, 0x6F, 0x6D, 0x20, 0x43, 0x6F, 0x2E, 0x2C, 0x20, + 0x4C, 0x74, 0x64, 0x2E, 0x31, 0x2A, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x0C, 0x21, 0x65, 0x50, 0x4B, 0x49, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA39_RSA_N[] = { + 0xE1, 0x25, 0x0F, 0xEE, 0x8D, 0xDB, 0x88, 0x33, 0x75, 0x67, 0xCD, 0xAD, + 0x1F, 0x7D, 0x3A, 0x4E, 0x6D, 0x9D, 0xD3, 0x2F, 0x14, 0xF3, 0x63, 0x74, + 0xCB, 0x01, 0x21, 0x6A, 0x37, 0xEA, 0x84, 0x50, 0x07, 0x4B, 0x26, 0x5B, + 0x09, 0x43, 0x6C, 0x21, 0x9E, 0x6A, 0xC8, 0xD5, 0x03, 0xF5, 0x60, 0x69, + 0x8F, 0xCC, 0xF0, 0x22, 0xE4, 0x1F, 0xE7, 0xF7, 0x6A, 0x22, 0x31, 0xB7, + 0x2C, 0x15, 0xF2, 0xE0, 0xFE, 0x00, 0x6A, 0x43, 0xFF, 0x87, 0x65, 0xC6, + 0xB5, 0x1A, 0xC1, 0xA7, 0x4C, 0x6D, 0x22, 0x70, 0x21, 0x8A, 0x31, 0xF2, + 0x97, 0x74, 0x89, 0x09, 0x12, 0x26, 0x1C, 0x9E, 0xCA, 0xD9, 0x12, 0xA2, + 0x95, 0x3C, 0xDA, 0xE9, 0x67, 0xBF, 0x08, 0xA0, 0x64, 0xE3, 0xD6, 0x42, + 0xB7, 0x45, 0xEF, 0x97, 0xF4, 0xF6, 0xF5, 0xD7, 0xB5, 0x4A, 0x15, 0x02, + 0x58, 0x7D, 0x98, 0x58, 0x4B, 0x60, 0xBC, 0xCD, 0xD7, 0x0D, 0x9A, 0x13, + 0x33, 0x53, 0xD1, 0x61, 0xF9, 0x7A, 0xD5, 0xD7, 0x78, 0xB3, 0x9A, 0x33, + 0xF7, 0x00, 0x86, 0xCE, 0x1D, 0x4D, 0x94, 0x38, 0xAF, 0xA8, 0xEC, 0x78, + 0x51, 0x70, 0x8A, 0x5C, 0x10, 0x83, 0x51, 0x21, 0xF7, 0x11, 0x3D, 0x34, + 0x86, 0x5E, 0xE5, 0x48, 0xCD, 0x97, 0x81, 0x82, 0x35, 0x4C, 0x19, 0xEC, + 0x65, 0xF6, 0x6B, 0xC5, 0x05, 0xA1, 0xEE, 0x47, 0x13, 0xD6, 0xB3, 0x21, + 0x27, 0x94, 0x10, 0x0A, 0xD9, 0x24, 0x3B, 0xBA, 0xBE, 0x44, 0x13, 0x46, + 0x30, 0x3F, 0x97, 0x3C, 0xD8, 0xD7, 0xD7, 0x6A, 0xEE, 0x3B, 0x38, 0xE3, + 0x2B, 0xD4, 0x97, 0x0E, 0xB9, 0x1B, 0xE7, 0x07, 0x49, 0x7F, 0x37, 0x2A, + 0xF9, 0x77, 0x78, 0xCF, 0x54, 0xED, 0x5B, 0x46, 0x9D, 0xA3, 0x80, 0x0E, + 0x91, 0x43, 0xC1, 0xD6, 0x5B, 0x5F, 0x14, 0xBA, 0x9F, 0xA6, 0x8D, 0x24, + 0x47, 0x40, 0x59, 0xBF, 0x72, 0x38, 0xB2, 0x36, 0x6C, 0x37, 0xFF, 0x99, + 0xD1, 0x5D, 0x0E, 0x59, 0x0A, 0xAB, 0x69, 0xF7, 0xC0, 0xB2, 0x04, 0x45, + 0x7A, 0x54, 0x00, 0xAE, 0xBE, 0x53, 0xF6, 0xB5, 0xE7, 0xE1, 0xF8, 0x3C, + 0xA3, 0x31, 0xD2, 0xA9, 0xFE, 0x21, 0x52, 0x64, 0xC5, 0xA6, 0x67, 0xF0, + 0x75, 0x07, 0x06, 0x94, 0x14, 0x81, 0x55, 0xC6, 0x27, 0xE4, 0x01, 0x8F, + 0x17, 0xC1, 0x6A, 0x71, 0xD7, 0xBE, 0x4B, 0xFB, 0x94, 0x58, 0x7D, 0x7E, + 0x11, 0x33, 0xB1, 0x42, 0xF7, 0x62, 0x6C, 0x18, 0xD6, 0xCF, 0x09, 0x68, + 0x3E, 0x7F, 0x6C, 0xF6, 0x1E, 0x8F, 0x62, 0xAD, 0xA5, 0x63, 0xDB, 0x09, + 0xA7, 0x1F, 0x22, 0x42, 0x41, 0x1E, 0x6F, 0x99, 0x8A, 0x3E, 0xD7, 0xF9, + 0x3F, 0x40, 0x7A, 0x79, 0xB0, 0xA5, 0x01, 0x92, 0xD2, 0x9D, 0x3D, 0x08, + 0x15, 0xA5, 0x10, 0x01, 0x2D, 0xB3, 0x32, 0x76, 0xA8, 0x95, 0x0D, 0xB3, + 0x7A, 0x9A, 0xFB, 0x07, 0x10, 0x78, 0x11, 0x6F, 0xE1, 0x8F, 0xC7, 0xBA, + 0x0F, 0x25, 0x1A, 0x74, 0x2A, 0xE5, 0x1C, 0x98, 0x41, 0x99, 0xDF, 0x21, + 0x87, 0xE8, 0x95, 0x06, 0x6A, 0x0A, 0xB3, 0x6A, 0x47, 0x76, 0x65, 0xF6, + 0x3A, 0xCF, 0x8F, 0x62, 0x17, 0x19, 0x7B, 0x0A, 0x28, 0xCD, 0x1A, 0xD2, + 0x83, 0x1E, 0x21, 0xC7, 0x2C, 0xBF, 0xBE, 0xFF, 0x61, 0x68, 0xB7, 0x67, + 0x1B, 0xBB, 0x78, 0x4D, 0x8D, 0xCE, 0x67, 0xE5, 0xE4, 0xC1, 0x8E, 0xB7, + 0x23, 0x66, 0xE2, 0x9D, 0x90, 0x75, 0x34, 0x98, 0xA9, 0x36, 0x2B, 0x8A, + 0x9A, 0x94, 0xB9, 0x9D, 0xEC, 0xCC, 0x8A, 0xB1, 0xF8, 0x25, 0x89, 0x5C, + 0x5A, 0xB6, 0x2F, 0x8C, 0x1F, 0x6D, 0x79, 0x24, 0xA7, 0x52, 0x68, 0xC3, + 0x84, 0x35, 0xE2, 0x66, 0x8D, 0x63, 0x0E, 0x25, 0x4D, 0xD5, 0x19, 0xB2, + 0xE6, 0x79, 0x37, 0xA7, 0x22, 0x9D, 0x54, 0x31 +}; + +static const unsigned char TA39_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA40_DN[] = { + 0x30, 0x3B, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x52, 0x4F, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x08, 0x63, 0x65, 0x72, 0x74, 0x53, 0x49, 0x47, 0x4E, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x63, 0x65, 0x72, + 0x74, 0x53, 0x49, 0x47, 0x4E, 0x20, 0x52, 0x4F, 0x4F, 0x54, 0x20, 0x43, + 0x41 +}; + +static const unsigned char TA40_RSA_N[] = { + 0xB7, 0x33, 0xB9, 0x7E, 0xC8, 0x25, 0x4A, 0x8E, 0xB5, 0xDB, 0xB4, 0x28, + 0x1B, 0xAA, 0x57, 0x90, 0xE8, 0xD1, 0x22, 0xD3, 0x64, 0xBA, 0xD3, 0x93, + 0xE8, 0xD4, 0xAC, 0x86, 0x61, 0x40, 0x6A, 0x60, 0x57, 0x68, 0x54, 0x84, + 0x4D, 0xBC, 0x6A, 0x54, 0x02, 0x05, 0xFF, 0xDF, 0x9B, 0x9A, 0x2A, 0xAE, + 0x5D, 0x07, 0x8F, 0x4A, 0xC3, 0x28, 0x7F, 0xEF, 0xFB, 0x2B, 0xFA, 0x79, + 0xF1, 0xC7, 0xAD, 0xF0, 0x10, 0x53, 0x24, 0x90, 0x8B, 0x66, 0xC9, 0xA8, + 0x88, 0xAB, 0xAF, 0x5A, 0xA3, 0x00, 0xE9, 0xBE, 0xBA, 0x46, 0xEE, 0x5B, + 0x73, 0x7B, 0x2C, 0x17, 0x82, 0x81, 0x5E, 0x62, 0x2C, 0xA1, 0x02, 0x65, + 0xB3, 0xBD, 0xC5, 0x2B, 0x00, 0x7E, 0xC4, 0xFC, 0x03, 0x33, 0x57, 0x0D, + 0xED, 0xE2, 0xFA, 0xCE, 0x5D, 0x45, 0xD6, 0x38, 0xCD, 0x35, 0xB6, 0xB2, + 0xC1, 0xD0, 0x9C, 0x81, 0x4A, 0xAA, 0xE4, 0xB2, 0x01, 0x5C, 0x1D, 0x8F, + 0x5F, 0x99, 0xC4, 0xB1, 0xAD, 0xDB, 0x88, 0x21, 0xEB, 0x90, 0x08, 0x82, + 0x80, 0xF3, 0x30, 0xA3, 0x43, 0xE6, 0x90, 0x82, 0xAE, 0x55, 0x28, 0x49, + 0xED, 0x5B, 0xD7, 0xA9, 0x10, 0x38, 0x0E, 0xFE, 0x8F, 0x4C, 0x5B, 0x9B, + 0x46, 0xEA, 0x41, 0xF5, 0xB0, 0x08, 0x74, 0xC3, 0xD0, 0x88, 0x33, 0xB6, + 0x7C, 0xD7, 0x74, 0xDF, 0xDC, 0x84, 0xD1, 0x43, 0x0E, 0x75, 0x39, 0xA1, + 0x25, 0x40, 0x28, 0xEA, 0x78, 0xCB, 0x0E, 0x2C, 0x2E, 0x39, 0x9D, 0x8C, + 0x8B, 0x6E, 0x16, 0x1C, 0x2F, 0x26, 0x82, 0x10, 0xE2, 0xE3, 0x65, 0x94, + 0x0A, 0x04, 0xC0, 0x5E, 0xF7, 0x5D, 0x5B, 0xF8, 0x10, 0xE2, 0xD0, 0xBA, + 0x7A, 0x4B, 0xFB, 0xDE, 0x37, 0x00, 0x00, 0x1A, 0x5B, 0x28, 0xE3, 0xD2, + 0x9C, 0x73, 0x3E, 0x32, 0x87, 0x98, 0xA1, 0xC9, 0x51, 0x2F, 0xD7, 0xDE, + 0xAC, 0x33, 0xB3, 0x4F +}; + +static const unsigned char TA40_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA41_DN[] = { + 0x30, 0x81, 0x98, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, + 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x63, + 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, + 0x6E, 0x6C, 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x2D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, + 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x33 +}; + +static const unsigned char TA41_RSA_N[] = { + 0xDC, 0xE2, 0x5E, 0x62, 0x58, 0x1D, 0x33, 0x57, 0x39, 0x32, 0x33, 0xFA, + 0xEB, 0xCB, 0x87, 0x8C, 0xA7, 0xD4, 0x4A, 0xDD, 0x06, 0x88, 0xEA, 0x64, + 0x8E, 0x31, 0x98, 0xA5, 0x38, 0x90, 0x1E, 0x98, 0xCF, 0x2E, 0x63, 0x2B, + 0xF0, 0x46, 0xBC, 0x44, 0xB2, 0x89, 0xA1, 0xC0, 0x28, 0x0C, 0x49, 0x70, + 0x21, 0x95, 0x9F, 0x64, 0xC0, 0xA6, 0x93, 0x12, 0x02, 0x65, 0x26, 0x86, + 0xC6, 0xA5, 0x89, 0xF0, 0xFA, 0xD7, 0x84, 0xA0, 0x70, 0xAF, 0x4F, 0x1A, + 0x97, 0x3F, 0x06, 0x44, 0xD5, 0xC9, 0xEB, 0x72, 0x10, 0x7D, 0xE4, 0x31, + 0x28, 0xFB, 0x1C, 0x61, 0xE6, 0x28, 0x07, 0x44, 0x73, 0x92, 0x22, 0x69, + 0xA7, 0x03, 0x88, 0x6C, 0x9D, 0x63, 0xC8, 0x52, 0xDA, 0x98, 0x27, 0xE7, + 0x08, 0x4C, 0x70, 0x3E, 0xB4, 0xC9, 0x12, 0xC1, 0xC5, 0x67, 0x83, 0x5D, + 0x33, 0xF3, 0x03, 0x11, 0xEC, 0x6A, 0xD0, 0x53, 0xE2, 0xD1, 0xBA, 0x36, + 0x60, 0x94, 0x80, 0xBB, 0x61, 0x63, 0x6C, 0x5B, 0x17, 0x7E, 0xDF, 0x40, + 0x94, 0x1E, 0xAB, 0x0D, 0xC2, 0x21, 0x28, 0x70, 0x88, 0xFF, 0xD6, 0x26, + 0x6C, 0x6C, 0x60, 0x04, 0x25, 0x4E, 0x55, 0x7E, 0x7D, 0xEF, 0xBF, 0x94, + 0x48, 0xDE, 0xB7, 0x1D, 0xDD, 0x70, 0x8D, 0x05, 0x5F, 0x88, 0xA5, 0x9B, + 0xF2, 0xC2, 0xEE, 0xEA, 0xD1, 0x40, 0x41, 0x6D, 0x62, 0x38, 0x1D, 0x56, + 0x06, 0xC5, 0x03, 0x47, 0x51, 0x20, 0x19, 0xFC, 0x7B, 0x10, 0x0B, 0x0E, + 0x62, 0xAE, 0x76, 0x55, 0xBF, 0x5F, 0x77, 0xBE, 0x3E, 0x49, 0x01, 0x53, + 0x3D, 0x98, 0x25, 0x03, 0x76, 0x24, 0x5A, 0x1D, 0xB4, 0xDB, 0x89, 0xEA, + 0x79, 0xE5, 0xB6, 0xB3, 0x3B, 0x3F, 0xBA, 0x4C, 0x28, 0x41, 0x7F, 0x06, + 0xAC, 0x6A, 0x8E, 0xC1, 0xD0, 0xF6, 0x05, 0x1D, 0x7D, 0xE6, 0x42, 0x86, + 0xE3, 0xA5, 0xD5, 0x47 +}; + +static const unsigned char TA41_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA42_DN[] = { + 0x30, 0x81, 0x84, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0C, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2C, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x2F, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x37, 0x20, 0x74, + 0x68, 0x61, 0x77, 0x74, 0x65, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, + 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, + 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C, + 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, + 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, + 0x72, 0x79, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, + 0x20, 0x47, 0x32 +}; + +static const unsigned char TA42_EC_Q[] = { + 0x04, 0xA2, 0xD5, 0x9C, 0x82, 0x7B, 0x95, 0x9D, 0xF1, 0x52, 0x78, 0x87, + 0xFE, 0x8A, 0x16, 0xBF, 0x05, 0xE6, 0xDF, 0xA3, 0x02, 0x4F, 0x0D, 0x07, + 0xC6, 0x00, 0x51, 0xBA, 0x0C, 0x02, 0x52, 0x2D, 0x22, 0xA4, 0x42, 0x39, + 0xC4, 0xFE, 0x8F, 0xEA, 0xC9, 0xC1, 0xBE, 0xD4, 0x4D, 0xFF, 0x9F, 0x7A, + 0x9E, 0xE2, 0xB1, 0x7C, 0x9A, 0xAD, 0xA7, 0x86, 0x09, 0x73, 0x87, 0xD1, + 0xE7, 0x9A, 0xE3, 0x7A, 0xA5, 0xAA, 0x6E, 0xFB, 0xBA, 0xB3, 0x70, 0xC0, + 0x67, 0x88, 0xA2, 0x35, 0xD4, 0xA3, 0x9A, 0xB1, 0xFD, 0xAD, 0xC2, 0xEF, + 0x31, 0xFA, 0xA8, 0xB9, 0xF3, 0xFB, 0x08, 0xC6, 0x91, 0xD1, 0xFB, 0x29, + 0x95 +}; + +static const unsigned char TA43_DN[] = { + 0x30, 0x81, 0xAE, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0C, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2C, 0x20, 0x49, + 0x6E, 0x63, 0x2E, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x1F, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, + 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x31, 0x38, 0x30, + 0x36, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x2F, 0x28, 0x63, 0x29, 0x20, + 0x32, 0x30, 0x30, 0x38, 0x20, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, + 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x33 +}; + +static const unsigned char TA43_RSA_N[] = { + 0xB2, 0xBF, 0x27, 0x2C, 0xFB, 0xDB, 0xD8, 0x5B, 0xDD, 0x78, 0x7B, 0x1B, + 0x9E, 0x77, 0x66, 0x81, 0xCB, 0x3E, 0xBC, 0x7C, 0xAE, 0xF3, 0xA6, 0x27, + 0x9A, 0x34, 0xA3, 0x68, 0x31, 0x71, 0x38, 0x33, 0x62, 0xE4, 0xF3, 0x71, + 0x66, 0x79, 0xB1, 0xA9, 0x65, 0xA3, 0xA5, 0x8B, 0xD5, 0x8F, 0x60, 0x2D, + 0x3F, 0x42, 0xCC, 0xAA, 0x6B, 0x32, 0xC0, 0x23, 0xCB, 0x2C, 0x41, 0xDD, + 0xE4, 0xDF, 0xFC, 0x61, 0x9C, 0xE2, 0x73, 0xB2, 0x22, 0x95, 0x11, 0x43, + 0x18, 0x5F, 0xC4, 0xB6, 0x1F, 0x57, 0x6C, 0x0A, 0x05, 0x58, 0x22, 0xC8, + 0x36, 0x4C, 0x3A, 0x7C, 0xA5, 0xD1, 0xCF, 0x86, 0xAF, 0x88, 0xA7, 0x44, + 0x02, 0x13, 0x74, 0x71, 0x73, 0x0A, 0x42, 0x59, 0x02, 0xF8, 0x1B, 0x14, + 0x6B, 0x42, 0xDF, 0x6F, 0x5F, 0xBA, 0x6B, 0x82, 0xA2, 0x9D, 0x5B, 0xE7, + 0x4A, 0xBD, 0x1E, 0x01, 0x72, 0xDB, 0x4B, 0x74, 0xE8, 0x3B, 0x7F, 0x7F, + 0x7D, 0x1F, 0x04, 0xB4, 0x26, 0x9B, 0xE0, 0xB4, 0x5A, 0xAC, 0x47, 0x3D, + 0x55, 0xB8, 0xD7, 0xB0, 0x26, 0x52, 0x28, 0x01, 0x31, 0x40, 0x66, 0xD8, + 0xD9, 0x24, 0xBD, 0xF6, 0x2A, 0xD8, 0xEC, 0x21, 0x49, 0x5C, 0x9B, 0xF6, + 0x7A, 0xE9, 0x7F, 0x55, 0x35, 0x7E, 0x96, 0x6B, 0x8D, 0x93, 0x93, 0x27, + 0xCB, 0x92, 0xBB, 0xEA, 0xAC, 0x40, 0xC0, 0x9F, 0xC2, 0xF8, 0x80, 0xCF, + 0x5D, 0xF4, 0x5A, 0xDC, 0xCE, 0x74, 0x86, 0xA6, 0x3E, 0x6C, 0x0B, 0x53, + 0xCA, 0xBD, 0x92, 0xCE, 0x19, 0x06, 0x72, 0xE6, 0x0C, 0x5C, 0x38, 0x69, + 0xC7, 0x04, 0xD6, 0xBC, 0x6C, 0xCE, 0x5B, 0xF6, 0xF7, 0x68, 0x9C, 0xDC, + 0x25, 0x15, 0x48, 0x88, 0xA1, 0xE9, 0xA9, 0xF8, 0x98, 0x9C, 0xE0, 0xF3, + 0xD5, 0x31, 0x28, 0x61, 0x11, 0x6C, 0x67, 0x96, 0x8D, 0x39, 0x99, 0xCB, + 0xC2, 0x45, 0x24, 0x39 +}; + +static const unsigned char TA43_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA44_DN[] = { + 0x30, 0x81, 0x98, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x30, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x37, 0x20, + 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x49, 0x6E, 0x63, + 0x2E, 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, + 0x6E, 0x6C, 0x79, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x2D, 0x47, 0x65, 0x6F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, + 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x32 +}; + +static const unsigned char TA44_EC_Q[] = { + 0x04, 0x15, 0xB1, 0xE8, 0xFD, 0x03, 0x15, 0x43, 0xE5, 0xAC, 0xEB, 0x87, + 0x37, 0x11, 0x62, 0xEF, 0xD2, 0x83, 0x36, 0x52, 0x7D, 0x45, 0x57, 0x0B, + 0x4A, 0x8D, 0x7B, 0x54, 0x3B, 0x3A, 0x6E, 0x5F, 0x15, 0x02, 0xC0, 0x50, + 0xA6, 0xCF, 0x25, 0x2F, 0x7D, 0xCA, 0x48, 0xB8, 0xC7, 0x50, 0x63, 0x1C, + 0x2A, 0x21, 0x08, 0x7C, 0x9A, 0x36, 0xD8, 0x0B, 0xFE, 0xD1, 0x26, 0xC5, + 0x58, 0x31, 0x30, 0x28, 0x25, 0xF3, 0x5D, 0x5D, 0xA3, 0xB8, 0xB6, 0xA5, + 0xB4, 0x92, 0xED, 0x6C, 0x2C, 0x9F, 0xEB, 0xDD, 0x43, 0x89, 0xA2, 0x3C, + 0x4B, 0x48, 0x91, 0x1D, 0x50, 0xEC, 0x26, 0xDF, 0xD6, 0x60, 0x2E, 0xBD, + 0x21 +}; + +static const unsigned char TA45_DN[] = { + 0x30, 0x81, 0xBD, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, + 0x72, 0x6B, 0x31, 0x3A, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x31, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x38, 0x20, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, + 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, + 0x6C, 0x79, 0x31, 0x38, 0x30, 0x36, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x2F, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x55, 0x6E, + 0x69, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA45_RSA_N[] = { + 0xC7, 0x61, 0x37, 0x5E, 0xB1, 0x01, 0x34, 0xDB, 0x62, 0xD7, 0x15, 0x9B, + 0xFF, 0x58, 0x5A, 0x8C, 0x23, 0x23, 0xD6, 0x60, 0x8E, 0x91, 0xD7, 0x90, + 0x98, 0x83, 0x7A, 0xE6, 0x58, 0x19, 0x38, 0x8C, 0xC5, 0xF6, 0xE5, 0x64, + 0x85, 0xB4, 0xA2, 0x71, 0xFB, 0xED, 0xBD, 0xB9, 0xDA, 0xCD, 0x4D, 0x00, + 0xB4, 0xC8, 0x2D, 0x73, 0xA5, 0xC7, 0x69, 0x71, 0x95, 0x1F, 0x39, 0x3C, + 0xB2, 0x44, 0x07, 0x9C, 0xE8, 0x0E, 0xFA, 0x4D, 0x4A, 0xC4, 0x21, 0xDF, + 0x29, 0x61, 0x8F, 0x32, 0x22, 0x61, 0x82, 0xC5, 0x87, 0x1F, 0x6E, 0x8C, + 0x7C, 0x5F, 0x16, 0x20, 0x51, 0x44, 0xD1, 0x70, 0x4F, 0x57, 0xEA, 0xE3, + 0x1C, 0xE3, 0xCC, 0x79, 0xEE, 0x58, 0xD8, 0x0E, 0xC2, 0xB3, 0x45, 0x93, + 0xC0, 0x2C, 0xE7, 0x9A, 0x17, 0x2B, 0x7B, 0x00, 0x37, 0x7A, 0x41, 0x33, + 0x78, 0xE1, 0x33, 0xE2, 0xF3, 0x10, 0x1A, 0x7F, 0x87, 0x2C, 0xBE, 0xF6, + 0xF5, 0xF7, 0x42, 0xE2, 0xE5, 0xBF, 0x87, 0x62, 0x89, 0x5F, 0x00, 0x4B, + 0xDF, 0xC5, 0xDD, 0xE4, 0x75, 0x44, 0x32, 0x41, 0x3A, 0x1E, 0x71, 0x6E, + 0x69, 0xCB, 0x0B, 0x75, 0x46, 0x08, 0xD1, 0xCA, 0xD2, 0x2B, 0x95, 0xD0, + 0xCF, 0xFB, 0xB9, 0x40, 0x6B, 0x64, 0x8C, 0x57, 0x4D, 0xFC, 0x13, 0x11, + 0x79, 0x84, 0xED, 0x5E, 0x54, 0xF6, 0x34, 0x9F, 0x08, 0x01, 0xF3, 0x10, + 0x25, 0x06, 0x17, 0x4A, 0xDA, 0xF1, 0x1D, 0x7A, 0x66, 0x6B, 0x98, 0x60, + 0x66, 0xA4, 0xD9, 0xEF, 0xD2, 0x2E, 0x82, 0xF1, 0xF0, 0xEF, 0x09, 0xEA, + 0x44, 0xC9, 0x15, 0x6A, 0xE2, 0x03, 0x6E, 0x33, 0xD3, 0xAC, 0x9F, 0x55, + 0x00, 0xC7, 0xF6, 0x08, 0x6A, 0x94, 0xB9, 0x5F, 0xDC, 0xE0, 0x33, 0xF1, + 0x84, 0x60, 0xF9, 0x5B, 0x27, 0x11, 0xB4, 0xFC, 0x16, 0xF2, 0xBB, 0x56, + 0x6A, 0x80, 0x25, 0x8D +}; + +static const unsigned char TA45_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA46_DN[] = { + 0x30, 0x81, 0xCA, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, + 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, + 0x72, 0x6B, 0x31, 0x3A, 0x30, 0x38, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x31, 0x28, 0x63, 0x29, 0x20, 0x32, 0x30, 0x30, 0x37, 0x20, 0x56, 0x65, + 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, + 0x20, 0x2D, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, + 0x6C, 0x79, 0x31, 0x45, 0x30, 0x43, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x3C, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6C, + 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, + 0x20, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, + 0x34 +}; + +static const unsigned char TA46_EC_Q[] = { + 0x04, 0xA7, 0x56, 0x7A, 0x7C, 0x52, 0xDA, 0x64, 0x9B, 0x0E, 0x2D, 0x5C, + 0xD8, 0x5E, 0xAC, 0x92, 0x3D, 0xFE, 0x01, 0xE6, 0x19, 0x4A, 0x3D, 0x14, + 0x03, 0x4B, 0xFA, 0x60, 0x27, 0x20, 0xD9, 0x83, 0x89, 0x69, 0xFA, 0x54, + 0xC6, 0x9A, 0x18, 0x5E, 0x55, 0x2A, 0x64, 0xDE, 0x06, 0xF6, 0x8D, 0x4A, + 0x3B, 0xAD, 0x10, 0x3C, 0x65, 0x3D, 0x90, 0x88, 0x04, 0x89, 0xE0, 0x30, + 0x61, 0xB3, 0xAE, 0x5D, 0x01, 0xA7, 0x7B, 0xDE, 0x7C, 0xB2, 0xBE, 0xCA, + 0x65, 0x61, 0x00, 0x86, 0xAE, 0xDA, 0x8F, 0x7B, 0xD0, 0x89, 0xAD, 0x4D, + 0x1D, 0x59, 0x9A, 0x41, 0xB1, 0xBC, 0x47, 0x80, 0xDC, 0x9E, 0x62, 0xC3, + 0xF9 +}; + +static const unsigned char TA47_DN[] = { + 0x30, 0x81, 0xA7, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x48, 0x55, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x0C, 0x08, 0x42, 0x75, 0x64, 0x61, 0x70, 0x65, 0x73, 0x74, 0x31, + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x4E, 0x65, + 0x74, 0x4C, 0x6F, 0x63, 0x6B, 0x20, 0x4B, 0x66, 0x74, 0x2E, 0x31, 0x37, + 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x2E, 0x54, 0x61, 0x6E, + 0xC3, 0xBA, 0x73, 0xC3, 0xAD, 0x74, 0x76, 0xC3, 0xA1, 0x6E, 0x79, 0x6B, + 0x69, 0x61, 0x64, 0xC3, 0xB3, 0x6B, 0x20, 0x28, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x29, 0x31, 0x35, 0x30, 0x33, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x2C, 0x4E, 0x65, 0x74, 0x4C, 0x6F, 0x63, + 0x6B, 0x20, 0x41, 0x72, 0x61, 0x6E, 0x79, 0x20, 0x28, 0x43, 0x6C, 0x61, + 0x73, 0x73, 0x20, 0x47, 0x6F, 0x6C, 0x64, 0x29, 0x20, 0x46, 0xC5, 0x91, + 0x74, 0x61, 0x6E, 0xC3, 0xBA, 0x73, 0xC3, 0xAD, 0x74, 0x76, 0xC3, 0xA1, + 0x6E, 0x79 +}; + +static const unsigned char TA47_RSA_N[] = { + 0xC4, 0x24, 0x5E, 0x73, 0xBE, 0x4B, 0x6D, 0x14, 0xC3, 0xA1, 0xF4, 0xE3, + 0x97, 0x90, 0x6E, 0xD2, 0x30, 0x45, 0x1E, 0x3C, 0xEE, 0x67, 0xD9, 0x64, + 0xE0, 0x1A, 0x8A, 0x7F, 0xCA, 0x30, 0xCA, 0x83, 0xE3, 0x20, 0xC1, 0xE3, + 0xF4, 0x3A, 0xD3, 0x94, 0x5F, 0x1A, 0x7C, 0x5B, 0x6D, 0xBF, 0x30, 0x4F, + 0x84, 0x27, 0xF6, 0x9F, 0x1F, 0x49, 0xBC, 0xC6, 0x99, 0x0A, 0x90, 0xF2, + 0x0F, 0xF5, 0x7F, 0x43, 0x84, 0x37, 0x63, 0x51, 0x8B, 0x7A, 0xA5, 0x70, + 0xFC, 0x7A, 0x58, 0xCD, 0x8E, 0x9B, 0xED, 0xC3, 0x46, 0x6C, 0x84, 0x70, + 0x5D, 0xDA, 0xF3, 0x01, 0x90, 0x23, 0xFC, 0x4E, 0x30, 0xA9, 0x7E, 0xE1, + 0x27, 0x63, 0xE7, 0xED, 0x64, 0x3C, 0xA0, 0xB8, 0xC9, 0x33, 0x63, 0xFE, + 0x16, 0x90, 0xFF, 0xB0, 0xB8, 0xFD, 0xD7, 0xA8, 0xC0, 0xC0, 0x94, 0x43, + 0x0B, 0xB6, 0xD5, 0x59, 0xA6, 0x9E, 0x56, 0xD0, 0x24, 0x1F, 0x70, 0x79, + 0xAF, 0xDB, 0x39, 0x54, 0x0D, 0x65, 0x75, 0xD9, 0x15, 0x41, 0x94, 0x01, + 0xAF, 0x5E, 0xEC, 0xF6, 0x8D, 0xF1, 0xFF, 0xAD, 0x64, 0xFE, 0x20, 0x9A, + 0xD7, 0x5C, 0xEB, 0xFE, 0xA6, 0x1F, 0x08, 0x64, 0xA3, 0x8B, 0x76, 0x55, + 0xAD, 0x1E, 0x3B, 0x28, 0x60, 0x2E, 0x87, 0x25, 0xE8, 0xAA, 0xAF, 0x1F, + 0xC6, 0x64, 0x46, 0x20, 0xB7, 0x70, 0x7F, 0x3C, 0xDE, 0x48, 0xDB, 0x96, + 0x53, 0xB7, 0x39, 0x77, 0xE4, 0x1A, 0xE2, 0xC7, 0x16, 0x84, 0x76, 0x97, + 0x5B, 0x2F, 0xBB, 0x19, 0x15, 0x85, 0xF8, 0x69, 0x85, 0xF5, 0x99, 0xA7, + 0xA9, 0xF2, 0x34, 0xA7, 0xA9, 0xB6, 0xA6, 0x03, 0xFC, 0x6F, 0x86, 0x3D, + 0x54, 0x7C, 0x76, 0x04, 0x9B, 0x6B, 0xF9, 0x40, 0x5D, 0x00, 0x34, 0xC7, + 0x2E, 0x99, 0x75, 0x9D, 0xE5, 0x88, 0x03, 0xAA, 0x4D, 0xF8, 0x03, 0xD2, + 0x42, 0x76, 0xC0, 0x1B +}; + +static const unsigned char TA47_RSA_E[] = { + 0xA8, 0x8B +}; + +static const unsigned char TA48_DN[] = { + 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4E, 0x4C, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x15, 0x53, 0x74, 0x61, 0x61, 0x74, 0x20, 0x64, 0x65, 0x72, 0x20, + 0x4E, 0x65, 0x64, 0x65, 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x65, 0x6E, 0x31, + 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x22, 0x53, 0x74, + 0x61, 0x61, 0x74, 0x20, 0x64, 0x65, 0x72, 0x20, 0x4E, 0x65, 0x64, 0x65, + 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x65, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x32 +}; + +static const unsigned char TA48_RSA_N[] = { + 0xC5, 0x59, 0xE7, 0x6F, 0x75, 0xAA, 0x3E, 0x4B, 0x9C, 0xB5, 0xB8, 0xAC, + 0x9E, 0x0B, 0xE4, 0xF9, 0xD9, 0xCA, 0xAB, 0x5D, 0x8F, 0xB5, 0x39, 0x10, + 0x82, 0xD7, 0xAF, 0x51, 0xE0, 0x3B, 0xE1, 0x00, 0x48, 0x6A, 0xCF, 0xDA, + 0xE1, 0x06, 0x43, 0x11, 0x99, 0xAA, 0x14, 0x25, 0x12, 0xAD, 0x22, 0xE8, + 0x00, 0x6D, 0x43, 0xC4, 0xA9, 0xB8, 0xE5, 0x1F, 0x89, 0x4B, 0x67, 0xBD, + 0x61, 0x48, 0xEF, 0xFD, 0xD2, 0xE0, 0x60, 0x88, 0xE5, 0xB9, 0x18, 0x60, + 0x28, 0xC3, 0x77, 0x2B, 0xAD, 0xB0, 0x37, 0xAA, 0x37, 0xDE, 0x64, 0x59, + 0x2A, 0x46, 0x57, 0xE4, 0x4B, 0xB9, 0xF8, 0x37, 0x7C, 0xD5, 0x36, 0xE7, + 0x80, 0xC1, 0xB6, 0xF3, 0xD4, 0x67, 0x9B, 0x96, 0xE8, 0xCE, 0xD7, 0xC6, + 0x0A, 0x53, 0xD0, 0x6B, 0x49, 0x96, 0xF3, 0xA3, 0x0B, 0x05, 0x77, 0x48, + 0xF7, 0x25, 0xE5, 0x70, 0xAC, 0x30, 0x14, 0x20, 0x25, 0xE3, 0x7F, 0x75, + 0x5A, 0xE5, 0x48, 0xF8, 0x4E, 0x7B, 0x03, 0x07, 0x04, 0xFA, 0x82, 0x61, + 0x87, 0x6E, 0xF0, 0x3B, 0xC4, 0xA4, 0xC7, 0xD0, 0xF5, 0x74, 0x3E, 0xA5, + 0x5D, 0x1A, 0x08, 0xF2, 0x9B, 0x25, 0xD2, 0xF6, 0xAC, 0x04, 0x26, 0x3E, + 0x55, 0x3A, 0x62, 0x28, 0xA5, 0x7B, 0xB2, 0x30, 0xAF, 0xF8, 0x37, 0xC2, + 0xD1, 0xBA, 0xD6, 0x38, 0xFD, 0xF4, 0xEF, 0x49, 0x30, 0x37, 0x99, 0x26, + 0x21, 0x48, 0x85, 0x01, 0xA9, 0xE5, 0x16, 0xE7, 0xDC, 0x90, 0x55, 0xDF, + 0x0F, 0xE8, 0x38, 0xCD, 0x99, 0x37, 0x21, 0x4F, 0x5D, 0xF5, 0x22, 0x6F, + 0x6A, 0xC5, 0x12, 0x16, 0x60, 0x17, 0x55, 0xF2, 0x65, 0x66, 0xA6, 0xA7, + 0x30, 0x91, 0x38, 0xC1, 0x38, 0x1D, 0x86, 0x04, 0x84, 0xBA, 0x1A, 0x25, + 0x78, 0x5E, 0x9D, 0xAF, 0xCC, 0x50, 0x60, 0xD6, 0x13, 0x87, 0x52, 0xED, + 0x63, 0x1F, 0x6D, 0x65, 0x7D, 0xC2, 0x15, 0x18, 0x74, 0xCA, 0xE1, 0x7E, + 0x64, 0x29, 0x8C, 0x72, 0xD8, 0x16, 0x13, 0x7D, 0x0B, 0x49, 0x4A, 0xF1, + 0x28, 0x1B, 0x20, 0x74, 0x6B, 0xC5, 0x3D, 0xDD, 0xB0, 0xAA, 0x48, 0x09, + 0x3D, 0x2E, 0x82, 0x94, 0xCD, 0x1A, 0x65, 0xD9, 0x2B, 0x88, 0x9A, 0x99, + 0xBC, 0x18, 0x7E, 0x9F, 0xEE, 0x7D, 0x66, 0x7C, 0x3E, 0xBD, 0x94, 0xB8, + 0x81, 0xCE, 0xCD, 0x98, 0x30, 0x78, 0xC1, 0x6F, 0x67, 0xD0, 0xBE, 0x5F, + 0xE0, 0x68, 0xED, 0xDE, 0xE2, 0xB1, 0xC9, 0x2C, 0x59, 0x78, 0x92, 0xAA, + 0xDF, 0x2B, 0x60, 0x63, 0xF2, 0xE5, 0x5E, 0xB9, 0xE3, 0xCA, 0xFA, 0x7F, + 0x50, 0x86, 0x3E, 0xA2, 0x34, 0x18, 0x0C, 0x09, 0x68, 0x28, 0x11, 0x1C, + 0xE4, 0xE1, 0xB9, 0x5C, 0x3E, 0x47, 0xBA, 0x32, 0x3F, 0x18, 0xCC, 0x5B, + 0x84, 0xF5, 0xF3, 0x6B, 0x74, 0xC4, 0x72, 0x74, 0xE1, 0xE3, 0x8B, 0xA0, + 0x4A, 0xBD, 0x8D, 0x66, 0x2F, 0xEA, 0xAD, 0x35, 0xDA, 0x20, 0xD3, 0x88, + 0x82, 0x61, 0xF0, 0x12, 0x22, 0xB6, 0xBC, 0xD0, 0xD5, 0xA4, 0xEC, 0xAF, + 0x54, 0x88, 0x25, 0x24, 0x3C, 0xA7, 0x6D, 0xB1, 0x72, 0x29, 0x3F, 0x3E, + 0x57, 0xA6, 0x7F, 0x55, 0xAF, 0x6E, 0x26, 0xC6, 0xFE, 0xE7, 0xCC, 0x40, + 0x5C, 0x51, 0x44, 0x81, 0x0A, 0x78, 0xDE, 0x4A, 0xCE, 0x55, 0xBF, 0x1D, + 0xD5, 0xD9, 0xB7, 0x56, 0xEF, 0xF0, 0x76, 0xFF, 0x0B, 0x79, 0xB5, 0xAF, + 0xBD, 0xFB, 0xA9, 0x69, 0x91, 0x46, 0x97, 0x68, 0x80, 0x14, 0x36, 0x1D, + 0xB3, 0x7F, 0xBB, 0x29, 0x98, 0x36, 0xA5, 0x20, 0xFA, 0x82, 0x60, 0x62, + 0x33, 0xA4, 0xEC, 0xD6, 0xBA, 0x07, 0xA7, 0x6E, 0xC5, 0xCF, 0x14, 0xA6, + 0xE7, 0xD6, 0x92, 0x34, 0xD8, 0x81, 0xF5, 0xFC, 0x1D, 0x5D, 0xAA, 0x5C, + 0x1E, 0xF6, 0xA3, 0x4D, 0x3B, 0xB8, 0xF7, 0x39 +}; + +static const unsigned char TA48_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA49_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x48, 0x4B, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0D, 0x48, 0x6F, 0x6E, 0x67, 0x6B, 0x6F, 0x6E, 0x67, 0x20, 0x50, + 0x6F, 0x73, 0x74, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x48, 0x6F, 0x6E, 0x67, 0x6B, 0x6F, 0x6E, 0x67, 0x20, 0x50, + 0x6F, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, + 0x31 +}; + +static const unsigned char TA49_RSA_N[] = { + 0xAC, 0xFF, 0x38, 0xB6, 0xE9, 0x66, 0x02, 0x49, 0xE3, 0xA2, 0xB4, 0xE1, + 0x90, 0xF9, 0x40, 0x8F, 0x79, 0xF9, 0xE2, 0xBD, 0x79, 0xFE, 0x02, 0xBD, + 0xEE, 0x24, 0x92, 0x1D, 0x22, 0xF6, 0xDA, 0x85, 0x72, 0x69, 0xFE, 0xD7, + 0x3F, 0x09, 0xD4, 0xDD, 0x91, 0xB5, 0x02, 0x9C, 0xD0, 0x8D, 0x5A, 0xE1, + 0x55, 0xC3, 0x50, 0x86, 0xB9, 0x29, 0x26, 0xC2, 0xE3, 0xD9, 0xA0, 0xF1, + 0x69, 0x03, 0x28, 0x20, 0x80, 0x45, 0x22, 0x2D, 0x56, 0xA7, 0x3B, 0x54, + 0x95, 0x56, 0x22, 0x59, 0x1F, 0x28, 0xDF, 0x1F, 0x20, 0x3D, 0x6D, 0xA2, + 0x36, 0xBE, 0x23, 0xA0, 0xB1, 0x6E, 0xB5, 0xB1, 0x27, 0x3F, 0x39, 0x53, + 0x09, 0xEA, 0xAB, 0x6A, 0xE8, 0x74, 0xB2, 0xC2, 0x65, 0x5C, 0x8E, 0xBF, + 0x7C, 0xC3, 0x78, 0x84, 0xCD, 0x9E, 0x16, 0xFC, 0xF5, 0x2E, 0x4F, 0x20, + 0x2A, 0x08, 0x9F, 0x77, 0xF3, 0xC5, 0x1E, 0xC4, 0x9A, 0x52, 0x66, 0x1E, + 0x48, 0x5E, 0xE3, 0x10, 0x06, 0x8F, 0x22, 0x98, 0xE1, 0x65, 0x8E, 0x1B, + 0x5D, 0x23, 0x66, 0x3B, 0xB8, 0xA5, 0x32, 0x51, 0xC8, 0x86, 0xAA, 0xA1, + 0xA9, 0x9E, 0x7F, 0x76, 0x94, 0xC2, 0xA6, 0x6C, 0xB7, 0x41, 0xF0, 0xD5, + 0xC8, 0x06, 0x38, 0xE6, 0xD4, 0x0C, 0xE2, 0xF3, 0x3B, 0x4C, 0x6D, 0x50, + 0x8C, 0xC4, 0x83, 0x27, 0xC1, 0x13, 0x84, 0x59, 0x3D, 0x9E, 0x75, 0x74, + 0xB6, 0xD8, 0x02, 0x5E, 0x3A, 0x90, 0x7A, 0xC0, 0x42, 0x36, 0x72, 0xEC, + 0x6A, 0x4D, 0xDC, 0xEF, 0xC4, 0x00, 0xDF, 0x13, 0x18, 0x57, 0x5F, 0x26, + 0x78, 0xC8, 0xD6, 0x0A, 0x79, 0x77, 0xBF, 0xF7, 0xAF, 0xB7, 0x76, 0xB9, + 0xA5, 0x0B, 0x84, 0x17, 0x5D, 0x10, 0xEA, 0x6F, 0xE1, 0xAB, 0x95, 0x11, + 0x5F, 0x6D, 0x3C, 0xA3, 0x5C, 0x4D, 0x83, 0x5B, 0xF2, 0xB3, 0x19, 0x8A, + 0x80, 0x8B, 0x0B, 0x87 +}; + +static const unsigned char TA49_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA50_DN[] = { + 0x30, 0x58, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4A, 0x50, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x22, 0x4A, 0x61, 0x70, 0x61, 0x6E, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, + 0x31, 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x13, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x41, 0x31, 0x31 +}; + +static const unsigned char TA50_RSA_N[] = { + 0xFD, 0x77, 0xAA, 0xA5, 0x1C, 0x90, 0x05, 0x3B, 0xCB, 0x4C, 0x9B, 0x33, + 0x8B, 0x5A, 0x14, 0x45, 0xA4, 0xE7, 0x90, 0x16, 0xD1, 0xDF, 0x57, 0xD2, + 0x21, 0x10, 0xA4, 0x17, 0xFD, 0xDF, 0xAC, 0xD6, 0x1F, 0xA7, 0xE4, 0xDB, + 0x7C, 0xF7, 0xEC, 0xDF, 0xB8, 0x03, 0xDA, 0x94, 0x58, 0xFD, 0x5D, 0x72, + 0x7C, 0x8C, 0x3F, 0x5F, 0x01, 0x67, 0x74, 0x15, 0x96, 0xE3, 0x02, 0x3C, + 0x87, 0xDB, 0xAE, 0xCB, 0x01, 0x8E, 0xC2, 0xF3, 0x66, 0xC6, 0x85, 0x45, + 0xF4, 0x02, 0xC6, 0x3A, 0xB5, 0x62, 0xB2, 0xAF, 0xFA, 0x9C, 0xBF, 0xA4, + 0xE6, 0xD4, 0x80, 0x30, 0x98, 0xF3, 0x0D, 0xB6, 0x93, 0x8F, 0xA9, 0xD4, + 0xD8, 0x36, 0xF2, 0xB0, 0xFC, 0x8A, 0xCA, 0x2C, 0xA1, 0x15, 0x33, 0x95, + 0x31, 0xDA, 0xC0, 0x1B, 0xF2, 0xEE, 0x62, 0x99, 0x86, 0x63, 0x3F, 0xBF, + 0xDD, 0x93, 0x2A, 0x83, 0xA8, 0x76, 0xB9, 0x13, 0x1F, 0xB7, 0xCE, 0x4E, + 0x42, 0x85, 0x8F, 0x22, 0xE7, 0x2E, 0x1A, 0xF2, 0x95, 0x09, 0xB2, 0x05, + 0xB5, 0x44, 0x4E, 0x77, 0xA1, 0x20, 0xBD, 0xA9, 0xF2, 0x4E, 0x0A, 0x7D, + 0x50, 0xAD, 0xF5, 0x05, 0x0D, 0x45, 0x4F, 0x46, 0x71, 0xFD, 0x28, 0x3E, + 0x53, 0xFB, 0x04, 0xD8, 0x2D, 0xD7, 0x65, 0x1D, 0x4A, 0x1B, 0xFA, 0xCF, + 0x3B, 0xB0, 0x31, 0x9A, 0x35, 0x6E, 0xC8, 0x8B, 0x06, 0xD3, 0x00, 0x91, + 0xF2, 0x94, 0x08, 0x65, 0x4C, 0xB1, 0x34, 0x06, 0x00, 0x7A, 0x89, 0xE2, + 0xF0, 0xC7, 0x03, 0x59, 0xCF, 0xD5, 0xD6, 0xE8, 0xA7, 0x32, 0xB3, 0xE6, + 0x98, 0x40, 0x86, 0xC5, 0xCD, 0x27, 0x12, 0x8B, 0xCC, 0x7B, 0xCE, 0xB7, + 0x11, 0x3C, 0x62, 0x60, 0x07, 0x23, 0x3E, 0x2B, 0x40, 0x6E, 0x94, 0x80, + 0x09, 0x6D, 0xB6, 0xB3, 0x6F, 0x77, 0x6F, 0x35, 0x08, 0x50, 0xFB, 0x02, + 0x87, 0xC5, 0x3E, 0x89 +}; + +static const unsigned char TA50_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA51_DN[] = { + 0x30, 0x81, 0x82, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x48, 0x55, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x0C, 0x08, 0x42, 0x75, 0x64, 0x61, 0x70, 0x65, 0x73, 0x74, 0x31, + 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0D, 0x4D, 0x69, + 0x63, 0x72, 0x6F, 0x73, 0x65, 0x63, 0x20, 0x4C, 0x74, 0x64, 0x2E, 0x31, + 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1E, 0x4D, 0x69, + 0x63, 0x72, 0x6F, 0x73, 0x65, 0x63, 0x20, 0x65, 0x2D, 0x53, 0x7A, 0x69, + 0x67, 0x6E, 0x6F, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, + 0x32, 0x30, 0x30, 0x39, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, + 0x6F, 0x40, 0x65, 0x2D, 0x73, 0x7A, 0x69, 0x67, 0x6E, 0x6F, 0x2E, 0x68, + 0x75 +}; + +static const unsigned char TA51_RSA_N[] = { + 0xE9, 0xF8, 0x8F, 0xF3, 0x63, 0xAD, 0xDA, 0x86, 0xD8, 0xA7, 0xE0, 0x42, + 0xFB, 0xCF, 0x91, 0xDE, 0xA6, 0x26, 0xF8, 0x99, 0xA5, 0x63, 0x70, 0xAD, + 0x9B, 0xAE, 0xCA, 0x33, 0x40, 0x7D, 0x6D, 0x96, 0x6E, 0xA1, 0x0E, 0x44, + 0xEE, 0xE1, 0x13, 0x9D, 0x94, 0x42, 0x52, 0x9A, 0xBD, 0x75, 0x85, 0x74, + 0x2C, 0xA8, 0x0E, 0x1D, 0x93, 0xB6, 0x18, 0xB7, 0x8C, 0x2C, 0xA8, 0xCF, + 0xFB, 0x5C, 0x71, 0xB9, 0xDA, 0xEC, 0xFE, 0xE8, 0x7E, 0x8F, 0xE4, 0x2F, + 0x1D, 0xB2, 0xA8, 0x75, 0x87, 0xD8, 0xB7, 0xA1, 0xE5, 0x3B, 0xCF, 0x99, + 0x4A, 0x46, 0xD0, 0x83, 0x19, 0x7D, 0xC0, 0xA1, 0x12, 0x1C, 0x95, 0x6D, + 0x4A, 0xF4, 0xD8, 0xC7, 0xA5, 0x4D, 0x33, 0x2E, 0x85, 0x39, 0x40, 0x75, + 0x7E, 0x14, 0x7C, 0x80, 0x12, 0x98, 0x50, 0xC7, 0x41, 0x67, 0xB8, 0xA0, + 0x80, 0x61, 0x54, 0xA6, 0x6C, 0x4E, 0x1F, 0xE0, 0x9D, 0x0E, 0x07, 0xE9, + 0xC9, 0xBA, 0x33, 0xE7, 0xFE, 0xC0, 0x55, 0x28, 0x2C, 0x02, 0x80, 0xA7, + 0x19, 0xF5, 0x9E, 0xDC, 0x55, 0x53, 0x03, 0x97, 0x7B, 0x07, 0x48, 0xFF, + 0x99, 0xFB, 0x37, 0x8A, 0x24, 0xC4, 0x59, 0xCC, 0x50, 0x10, 0x63, 0x8E, + 0xAA, 0xA9, 0x1A, 0xB0, 0x84, 0x1A, 0x86, 0xF9, 0x5F, 0xBB, 0xB1, 0x50, + 0x6E, 0xA4, 0xD1, 0x0A, 0xCC, 0xD5, 0x71, 0x7E, 0x1F, 0xA7, 0x1B, 0x7C, + 0xF5, 0x53, 0x6E, 0x22, 0x5F, 0xCB, 0x2B, 0xE6, 0xD4, 0x7C, 0x5D, 0xAE, + 0xD6, 0xC2, 0xC6, 0x4C, 0xE5, 0x05, 0x01, 0xD9, 0xED, 0x57, 0xFC, 0xC1, + 0x23, 0x79, 0xFC, 0xFA, 0xC8, 0x24, 0x83, 0x95, 0xF3, 0xB5, 0x6A, 0x51, + 0x01, 0xD0, 0x77, 0xD6, 0xE9, 0x12, 0xA1, 0xF9, 0x1A, 0x83, 0xFB, 0x82, + 0x1B, 0xB9, 0xB0, 0x97, 0xF4, 0x76, 0x06, 0x33, 0x43, 0x49, 0xA0, 0xFF, + 0x0B, 0xB5, 0xFA, 0xB5 +}; + +static const unsigned char TA51_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA52_DN[] = { + 0x30, 0x4C, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x17, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x52, 0x33, + 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0A, 0x47, + 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0A, 0x47, 0x6C, 0x6F, 0x62, + 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E +}; + +static const unsigned char TA52_RSA_N[] = { + 0xCC, 0x25, 0x76, 0x90, 0x79, 0x06, 0x78, 0x22, 0x16, 0xF5, 0xC0, 0x83, + 0xB6, 0x84, 0xCA, 0x28, 0x9E, 0xFD, 0x05, 0x76, 0x11, 0xC5, 0xAD, 0x88, + 0x72, 0xFC, 0x46, 0x02, 0x43, 0xC7, 0xB2, 0x8A, 0x9D, 0x04, 0x5F, 0x24, + 0xCB, 0x2E, 0x4B, 0xE1, 0x60, 0x82, 0x46, 0xE1, 0x52, 0xAB, 0x0C, 0x81, + 0x47, 0x70, 0x6C, 0xDD, 0x64, 0xD1, 0xEB, 0xF5, 0x2C, 0xA3, 0x0F, 0x82, + 0x3D, 0x0C, 0x2B, 0xAE, 0x97, 0xD7, 0xB6, 0x14, 0x86, 0x10, 0x79, 0xBB, + 0x3B, 0x13, 0x80, 0x77, 0x8C, 0x08, 0xE1, 0x49, 0xD2, 0x6A, 0x62, 0x2F, + 0x1F, 0x5E, 0xFA, 0x96, 0x68, 0xDF, 0x89, 0x27, 0x95, 0x38, 0x9F, 0x06, + 0xD7, 0x3E, 0xC9, 0xCB, 0x26, 0x59, 0x0D, 0x73, 0xDE, 0xB0, 0xC8, 0xE9, + 0x26, 0x0E, 0x83, 0x15, 0xC6, 0xEF, 0x5B, 0x8B, 0xD2, 0x04, 0x60, 0xCA, + 0x49, 0xA6, 0x28, 0xF6, 0x69, 0x3B, 0xF6, 0xCB, 0xC8, 0x28, 0x91, 0xE5, + 0x9D, 0x8A, 0x61, 0x57, 0x37, 0xAC, 0x74, 0x14, 0xDC, 0x74, 0xE0, 0x3A, + 0xEE, 0x72, 0x2F, 0x2E, 0x9C, 0xFB, 0xD0, 0xBB, 0xBF, 0xF5, 0x3D, 0x00, + 0xE1, 0x06, 0x33, 0xE8, 0x82, 0x2B, 0xAE, 0x53, 0xA6, 0x3A, 0x16, 0x73, + 0x8C, 0xDD, 0x41, 0x0E, 0x20, 0x3A, 0xC0, 0xB4, 0xA7, 0xA1, 0xE9, 0xB2, + 0x4F, 0x90, 0x2E, 0x32, 0x60, 0xE9, 0x57, 0xCB, 0xB9, 0x04, 0x92, 0x68, + 0x68, 0xE5, 0x38, 0x26, 0x60, 0x75, 0xB2, 0x9F, 0x77, 0xFF, 0x91, 0x14, + 0xEF, 0xAE, 0x20, 0x49, 0xFC, 0xAD, 0x40, 0x15, 0x48, 0xD1, 0x02, 0x31, + 0x61, 0x19, 0x5E, 0xB8, 0x97, 0xEF, 0xAD, 0x77, 0xB7, 0x64, 0x9A, 0x7A, + 0xBF, 0x5F, 0xC1, 0x13, 0xEF, 0x9B, 0x62, 0xFB, 0x0D, 0x6C, 0xE0, 0x54, + 0x69, 0x16, 0xA9, 0x03, 0xDA, 0x6E, 0xE9, 0x83, 0x93, 0x71, 0x76, 0xC6, + 0x69, 0x85, 0x82, 0x17 +}; + +static const unsigned char TA52_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA53_DN[] = { + 0x30, 0x51, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x45, 0x53, 0x31, 0x42, 0x30, 0x40, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x39, 0x41, 0x75, 0x74, 0x6F, 0x72, 0x69, 0x64, 0x61, 0x64, 0x20, + 0x64, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x63, 0x69, 0x6F, 0x6E, 0x20, 0x46, 0x69, 0x72, 0x6D, 0x61, 0x70, 0x72, + 0x6F, 0x66, 0x65, 0x73, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x43, 0x49, + 0x46, 0x20, 0x41, 0x36, 0x32, 0x36, 0x33, 0x34, 0x30, 0x36, 0x38 +}; + +static const unsigned char TA53_RSA_N[] = { + 0xCA, 0x96, 0x6B, 0x8E, 0xEA, 0xF8, 0xFB, 0xF1, 0xA2, 0x35, 0xE0, 0x7F, + 0x4C, 0xDA, 0xE0, 0xC3, 0x52, 0xD7, 0x7D, 0xB6, 0x10, 0xC8, 0x02, 0x5E, + 0xB3, 0x43, 0x2A, 0xC4, 0x4F, 0x6A, 0xB2, 0xCA, 0x1C, 0x5D, 0x28, 0x9A, + 0x78, 0x11, 0x1A, 0x69, 0x59, 0x57, 0xAF, 0xB5, 0x20, 0x42, 0xE4, 0x8B, + 0x0F, 0xE6, 0xDF, 0x5B, 0xA6, 0x03, 0x92, 0x2F, 0xF5, 0x11, 0xE4, 0x62, + 0xD7, 0x32, 0x71, 0x38, 0xD9, 0x04, 0x0C, 0x71, 0xAB, 0x3D, 0x51, 0x7E, + 0x0F, 0x07, 0xDF, 0x63, 0x05, 0x5C, 0xE9, 0xBF, 0x94, 0x6F, 0xC1, 0x29, + 0x82, 0xC0, 0xB4, 0xDA, 0x51, 0xB0, 0xC1, 0x3C, 0xBB, 0xAD, 0x37, 0x4A, + 0x5C, 0xCA, 0xF1, 0x4B, 0x36, 0x0E, 0x24, 0xAB, 0xBF, 0xC3, 0x84, 0x77, + 0xFD, 0xA8, 0x50, 0xF4, 0xB1, 0xE7, 0xC6, 0x2F, 0xD2, 0x2D, 0x59, 0x8D, + 0x7A, 0x0A, 0x4E, 0x96, 0x69, 0x52, 0x02, 0xAA, 0x36, 0x98, 0xEC, 0xFC, + 0xFA, 0x14, 0x83, 0x0C, 0x37, 0x1F, 0xC9, 0x92, 0x37, 0x7F, 0xD7, 0x81, + 0x2D, 0xE5, 0xC4, 0xB9, 0xE0, 0x3E, 0x34, 0xFE, 0x67, 0xF4, 0x3E, 0x66, + 0xD1, 0xD3, 0xF4, 0x40, 0xCF, 0x5E, 0x62, 0x34, 0x0F, 0x70, 0x06, 0x3E, + 0x20, 0x18, 0x5A, 0xCE, 0xF7, 0x72, 0x1B, 0x25, 0x6C, 0x93, 0x74, 0x14, + 0x93, 0xA3, 0x73, 0xB1, 0x0E, 0xAA, 0x87, 0x10, 0x23, 0x59, 0x5F, 0x20, + 0x05, 0x19, 0x47, 0xED, 0x68, 0x8E, 0x92, 0x12, 0xCA, 0x5D, 0xFC, 0xD6, + 0x2B, 0xB2, 0x92, 0x3C, 0x20, 0xCF, 0xE1, 0x5F, 0xAF, 0x20, 0xBE, 0xA0, + 0x76, 0x7F, 0x76, 0xE5, 0xEC, 0x1A, 0x86, 0x61, 0x33, 0x3E, 0xE7, 0x7B, + 0xB4, 0x3F, 0xA0, 0x0F, 0x8E, 0xA2, 0xB9, 0x6A, 0x6F, 0xB9, 0x87, 0x26, + 0x6F, 0x41, 0x6C, 0x88, 0xA6, 0x50, 0xFD, 0x6A, 0x63, 0x0B, 0xF5, 0x93, + 0x16, 0x1B, 0x19, 0x8F, 0xB2, 0xED, 0x9B, 0x9B, 0xC9, 0x90, 0xF5, 0x01, + 0x0C, 0xDF, 0x19, 0x3D, 0x0F, 0x3E, 0x38, 0x23, 0xC9, 0x2F, 0x8F, 0x0C, + 0xD1, 0x02, 0xFE, 0x1B, 0x55, 0xD6, 0x4E, 0xD0, 0x8D, 0x3C, 0xAF, 0x4F, + 0xA4, 0xF3, 0xFE, 0xAF, 0x2A, 0xD3, 0x05, 0x9D, 0x79, 0x08, 0xA1, 0xCB, + 0x57, 0x31, 0xB4, 0x9C, 0xC8, 0x90, 0xB2, 0x67, 0xF4, 0x18, 0x16, 0x93, + 0x3A, 0xFC, 0x47, 0xD8, 0xD1, 0x78, 0x96, 0x31, 0x1F, 0xBA, 0x2B, 0x0C, + 0x5F, 0x5D, 0x99, 0xAD, 0x63, 0x89, 0x5A, 0x24, 0x20, 0x76, 0xD8, 0xDF, + 0xFD, 0xAB, 0x4E, 0xA6, 0x22, 0xAA, 0x9D, 0x5E, 0xE6, 0x27, 0x8A, 0x7D, + 0x68, 0x29, 0xA3, 0xE7, 0x8A, 0xB8, 0xDA, 0x11, 0xBB, 0x17, 0x2D, 0x99, + 0x9D, 0x13, 0x24, 0x46, 0xF7, 0xC5, 0xE2, 0xD8, 0x9F, 0x8E, 0x7F, 0xC7, + 0x8F, 0x74, 0x6D, 0x5A, 0xB2, 0xE8, 0x72, 0xF5, 0xAC, 0xEE, 0x24, 0x10, + 0xAD, 0x2F, 0x14, 0xDA, 0xFF, 0x2D, 0x9A, 0x46, 0x71, 0x47, 0xBE, 0x42, + 0xDF, 0xBB, 0x01, 0xDB, 0xF4, 0x7F, 0xD3, 0x28, 0x8F, 0x31, 0x59, 0x5B, + 0xD3, 0xC9, 0x02, 0xA6, 0xB4, 0x52, 0xCA, 0x6E, 0x97, 0xFB, 0x43, 0xC5, + 0x08, 0x26, 0x6F, 0x8A, 0xF4, 0xBB, 0xFD, 0x9F, 0x28, 0xAA, 0x0D, 0xD5, + 0x45, 0xF3, 0x13, 0x3A, 0x1D, 0xD8, 0xC0, 0x78, 0x8F, 0x41, 0x67, 0x3C, + 0x1E, 0x94, 0x64, 0xAE, 0x7B, 0x0B, 0xC5, 0xE8, 0xD9, 0x01, 0x88, 0x39, + 0x1A, 0x97, 0x86, 0x64, 0x41, 0xD5, 0x3B, 0x87, 0x0C, 0x6E, 0xFA, 0x0F, + 0xC6, 0xBD, 0x48, 0x14, 0xBF, 0x39, 0x4D, 0xD4, 0x9E, 0x41, 0xB6, 0x8F, + 0x96, 0x1D, 0x63, 0x96, 0x93, 0xD9, 0x95, 0x06, 0x78, 0x31, 0x68, 0x9E, + 0x37, 0x06, 0x3B, 0x80, 0x89, 0x45, 0x61, 0x39, 0x23, 0xC7, 0x1B, 0x44, + 0xA3, 0x15, 0xE5, 0x1C, 0xF8, 0x92, 0x30, 0xBB +}; + +static const unsigned char TA53_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA54_DN[] = { + 0x30, 0x38, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x45, 0x53, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0B, 0x49, 0x5A, 0x45, 0x4E, 0x50, 0x45, 0x20, 0x53, 0x2E, 0x41, + 0x2E, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0A, + 0x49, 0x7A, 0x65, 0x6E, 0x70, 0x65, 0x2E, 0x63, 0x6F, 0x6D +}; + +static const unsigned char TA54_RSA_N[] = { + 0xC9, 0xD3, 0x7A, 0xCA, 0x0F, 0x1E, 0xAC, 0xA7, 0x86, 0xE8, 0x16, 0x65, + 0x6A, 0xB1, 0xC2, 0x1B, 0x45, 0x32, 0x71, 0x95, 0xD9, 0xFE, 0x10, 0x5B, + 0xCC, 0xAF, 0xE7, 0xA5, 0x79, 0x01, 0x8F, 0x89, 0xC3, 0xCA, 0xF2, 0x55, + 0x71, 0xF7, 0x77, 0xBE, 0x77, 0x94, 0xF3, 0x72, 0xA4, 0x2C, 0x44, 0xD8, + 0x9E, 0x92, 0x9B, 0x14, 0x3A, 0xA1, 0xE7, 0x24, 0x90, 0x0A, 0x0A, 0x56, + 0x8E, 0xC5, 0xD8, 0x26, 0x94, 0xE1, 0xD9, 0x48, 0xE1, 0x2D, 0x3E, 0xDA, + 0x0A, 0x72, 0xDD, 0xA3, 0x99, 0x15, 0xDA, 0x81, 0xA2, 0x87, 0xF4, 0x7B, + 0x6E, 0x26, 0x77, 0x89, 0x58, 0xAD, 0xD6, 0xEB, 0x0C, 0xB2, 0x41, 0x7A, + 0x73, 0x6E, 0x6D, 0xDB, 0x7A, 0x78, 0x41, 0xE9, 0x08, 0x88, 0x12, 0x7E, + 0x87, 0x2E, 0x66, 0x11, 0x63, 0x6C, 0x54, 0xFB, 0x3C, 0x9D, 0x72, 0xC0, + 0xBC, 0x2E, 0xFF, 0xC2, 0xB7, 0xDD, 0x0D, 0x76, 0xE3, 0x3A, 0xD7, 0xF7, + 0xB4, 0x68, 0xBE, 0xA2, 0xF5, 0xE3, 0x81, 0x6E, 0xC1, 0x46, 0x6F, 0x5D, + 0x8D, 0xE0, 0x4D, 0xC6, 0x54, 0x55, 0x89, 0x1A, 0x33, 0x31, 0x0A, 0xB1, + 0x57, 0xB9, 0xA3, 0x8A, 0x98, 0xC3, 0xEC, 0x3B, 0x34, 0xC5, 0x95, 0x41, + 0x69, 0x7E, 0x75, 0xC2, 0x3C, 0x20, 0xC5, 0x61, 0xBA, 0x51, 0x47, 0xA0, + 0x20, 0x90, 0x93, 0xA1, 0x90, 0x4B, 0xF3, 0x4E, 0x7C, 0x85, 0x45, 0x54, + 0x9A, 0xD1, 0x05, 0x26, 0x41, 0xB0, 0xB5, 0x4D, 0x1D, 0x33, 0xBE, 0xC4, + 0x03, 0xC8, 0x25, 0x7C, 0xC1, 0x70, 0xDB, 0x3B, 0xF4, 0x09, 0x2D, 0x54, + 0x27, 0x48, 0xAC, 0x2F, 0xE1, 0xC4, 0xAC, 0x3E, 0xC8, 0xCB, 0x92, 0x4C, + 0x53, 0x39, 0x37, 0x23, 0xEC, 0xD3, 0x01, 0xF9, 0xE0, 0x09, 0x44, 0x4D, + 0x4D, 0x64, 0xC0, 0xE1, 0x0D, 0x5A, 0x87, 0x22, 0xBC, 0xAD, 0x1B, 0xA3, + 0xFE, 0x26, 0xB5, 0x15, 0xF3, 0xA7, 0xFC, 0x84, 0x19, 0xE9, 0xEC, 0xA1, + 0x88, 0xB4, 0x44, 0x69, 0x84, 0x83, 0xF3, 0x89, 0xD1, 0x74, 0x06, 0xA9, + 0xCC, 0x0B, 0xD6, 0xC2, 0xDE, 0x27, 0x85, 0x50, 0x26, 0xCA, 0x17, 0xB8, + 0xC9, 0x7A, 0x87, 0x56, 0x2C, 0x1A, 0x01, 0x1E, 0x6C, 0xBE, 0x13, 0xAD, + 0x10, 0xAC, 0xB5, 0x24, 0xF5, 0x38, 0x91, 0xA1, 0xD6, 0x4B, 0xDA, 0xF1, + 0xBB, 0xD2, 0xDE, 0x47, 0xB5, 0xF1, 0xBC, 0x81, 0xF6, 0x59, 0x6B, 0xCF, + 0x19, 0x53, 0xE9, 0x8D, 0x15, 0xCB, 0x4A, 0xCB, 0xA9, 0x6F, 0x44, 0xE5, + 0x1B, 0x41, 0xCF, 0xE1, 0x86, 0xA7, 0xCA, 0xD0, 0x6A, 0x9F, 0xBC, 0x4C, + 0x8D, 0x06, 0x33, 0x5A, 0xA2, 0x85, 0xE5, 0x90, 0x35, 0xA0, 0x62, 0x5C, + 0x16, 0x4E, 0xF0, 0xE3, 0xA2, 0xFA, 0x03, 0x1A, 0xB4, 0x2C, 0x71, 0xB3, + 0x58, 0x2C, 0xDE, 0x7B, 0x0B, 0xDB, 0x1A, 0x0F, 0xEB, 0xDE, 0x21, 0x1F, + 0x06, 0x77, 0x06, 0x03, 0xB0, 0xC9, 0xEF, 0x99, 0xFC, 0xC0, 0xB9, 0x4F, + 0x0B, 0x86, 0x28, 0xFE, 0xD2, 0xB9, 0xEA, 0xE3, 0xDA, 0xA5, 0xC3, 0x47, + 0x69, 0x12, 0xE0, 0xDB, 0xF0, 0xF6, 0x19, 0x8B, 0xED, 0x7B, 0x70, 0xD7, + 0x02, 0xD6, 0xED, 0x87, 0x18, 0x28, 0x2C, 0x04, 0x24, 0x4C, 0x77, 0xE4, + 0x48, 0x8A, 0x1A, 0xC6, 0x3B, 0x9A, 0xD4, 0x0F, 0xCA, 0xFA, 0x75, 0xD2, + 0x01, 0x40, 0x5A, 0x8D, 0x79, 0xBF, 0x8B, 0xCF, 0x4B, 0xCF, 0xAA, 0x16, + 0xC1, 0x95, 0xE4, 0xAD, 0x4C, 0x8A, 0x3E, 0x17, 0x91, 0xD4, 0xB1, 0x62, + 0xE5, 0x82, 0xE5, 0x80, 0x04, 0xA4, 0x03, 0x7E, 0x8D, 0xBF, 0xDA, 0x7F, + 0xA2, 0x0F, 0x97, 0x4F, 0x0C, 0xD3, 0x0D, 0xFB, 0xD7, 0xD1, 0xE5, 0x72, + 0x7E, 0x1C, 0xC8, 0x77, 0xFF, 0x5B, 0x9A, 0x0F, 0xB7, 0xAE, 0x05, 0x46, + 0xE5, 0xF1, 0xA8, 0x16, 0xEC, 0x47, 0xA4, 0x17 +}; + +static const unsigned char TA54_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA55_DN[] = { + 0x30, 0x81, 0xAE, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x45, 0x55, 0x31, 0x43, 0x30, 0x41, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x3A, 0x4D, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x28, 0x73, + 0x65, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x74, 0x20, 0x77, 0x77, + 0x77, 0x2E, 0x63, 0x61, 0x6D, 0x65, 0x72, 0x66, 0x69, 0x72, 0x6D, 0x61, + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x29, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x09, + 0x41, 0x38, 0x32, 0x37, 0x34, 0x33, 0x32, 0x38, 0x37, 0x31, 0x1B, 0x30, + 0x19, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x12, 0x41, 0x43, 0x20, 0x43, + 0x61, 0x6D, 0x65, 0x72, 0x66, 0x69, 0x72, 0x6D, 0x61, 0x20, 0x53, 0x2E, + 0x41, 0x2E, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x20, 0x43, 0x68, 0x61, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x66, + 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x65, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x2D, 0x20, 0x32, 0x30, 0x30, 0x38 +}; + +static const unsigned char TA55_RSA_N[] = { + 0xAF, 0x00, 0xCB, 0x70, 0x37, 0x2B, 0x80, 0x5A, 0x4A, 0x3A, 0x6C, 0x78, + 0x94, 0x7D, 0xA3, 0x7F, 0x1A, 0x1F, 0xF6, 0x35, 0xD5, 0xBD, 0xDB, 0xCB, + 0x0D, 0x44, 0x72, 0x3E, 0x26, 0xB2, 0x90, 0x52, 0xBA, 0x63, 0x3B, 0x28, + 0x58, 0x6F, 0xA5, 0xB3, 0x6D, 0x94, 0xA6, 0xF3, 0xDD, 0x64, 0x0C, 0x55, + 0xF6, 0xF6, 0xE7, 0xF2, 0x22, 0x22, 0x80, 0x5E, 0xE1, 0x62, 0xC6, 0xB6, + 0x29, 0xE1, 0x81, 0x6C, 0xF2, 0xBF, 0xE5, 0x7D, 0x32, 0x6A, 0x54, 0xA0, + 0x32, 0x19, 0x59, 0xFE, 0x1F, 0x8B, 0xD7, 0x3D, 0x60, 0x86, 0x85, 0x24, + 0x6F, 0xE3, 0x11, 0xB3, 0x77, 0x3E, 0x20, 0x96, 0x35, 0x21, 0x6B, 0xB3, + 0x08, 0xD9, 0x70, 0x2E, 0x64, 0xF7, 0x84, 0x92, 0x53, 0xD6, 0x0E, 0xB0, + 0x90, 0x8A, 0x8A, 0xE3, 0x87, 0x8D, 0x06, 0xD3, 0xBD, 0x90, 0x0E, 0xE2, + 0x99, 0xA1, 0x1B, 0x86, 0x0E, 0xDA, 0x9A, 0x0A, 0xBB, 0x0B, 0x61, 0x50, + 0x06, 0x52, 0xF1, 0x9E, 0x7F, 0x76, 0xEC, 0xCB, 0x0F, 0xD0, 0x1E, 0x0D, + 0xCF, 0x99, 0x30, 0x3D, 0x1C, 0xC4, 0x45, 0x10, 0x58, 0xAC, 0xD6, 0xD3, + 0xE8, 0xD7, 0xE5, 0xEA, 0xC5, 0x01, 0x07, 0x77, 0xD6, 0x51, 0xE6, 0x03, + 0x7F, 0x8A, 0x48, 0xA5, 0x4D, 0x68, 0x75, 0xB9, 0xE9, 0xBC, 0x9E, 0x4E, + 0x19, 0x71, 0xF5, 0x32, 0x4B, 0x9C, 0x6D, 0x60, 0x19, 0x0B, 0xFB, 0xCC, + 0x9D, 0x75, 0xDC, 0xBF, 0x26, 0xCD, 0x8F, 0x93, 0x78, 0x39, 0x79, 0x73, + 0x5E, 0x25, 0x0E, 0xCA, 0x5C, 0xEB, 0x77, 0x12, 0x07, 0xCB, 0x64, 0x41, + 0x47, 0x72, 0x93, 0xAB, 0x50, 0xC3, 0xEB, 0x09, 0x76, 0x64, 0x34, 0xD2, + 0x39, 0xB7, 0x76, 0x11, 0x09, 0x0D, 0x76, 0x45, 0xC4, 0xA9, 0xAE, 0x3D, + 0x6A, 0xAF, 0xB5, 0x7D, 0x65, 0x2F, 0x94, 0x58, 0x10, 0xEC, 0x5C, 0x7C, + 0xAF, 0x7E, 0xE2, 0xB6, 0x18, 0xD9, 0xD0, 0x9B, 0x4E, 0x5A, 0x49, 0xDF, + 0xA9, 0x66, 0x0B, 0xCC, 0x3C, 0xC6, 0x78, 0x7C, 0xA7, 0x9C, 0x1D, 0xE3, + 0xCE, 0x8E, 0x53, 0xBE, 0x05, 0xDE, 0x60, 0x0F, 0x6B, 0xE5, 0x1A, 0xDB, + 0x3F, 0xE3, 0xE1, 0x21, 0xC9, 0x29, 0xC1, 0xF1, 0xEB, 0x07, 0x9C, 0x52, + 0x1B, 0x01, 0x44, 0x51, 0x3C, 0x7B, 0x25, 0xD7, 0xC4, 0xE5, 0x52, 0x54, + 0x5D, 0x25, 0x07, 0xCA, 0x16, 0x20, 0xB8, 0xAD, 0xE4, 0x41, 0xEE, 0x7A, + 0x08, 0xFE, 0x99, 0x6F, 0x83, 0xA6, 0x91, 0x02, 0xB0, 0x6C, 0x36, 0x55, + 0x6A, 0xE7, 0x7D, 0xF5, 0x96, 0xE6, 0xCA, 0x81, 0xD6, 0x97, 0xF1, 0x94, + 0x83, 0xE9, 0xED, 0xB0, 0xB1, 0x6B, 0x12, 0x69, 0x1E, 0xAC, 0xFB, 0x5D, + 0xA9, 0xC5, 0x98, 0xE9, 0xB4, 0x5B, 0x58, 0x7A, 0xBE, 0x3D, 0xA2, 0x44, + 0x3A, 0x63, 0x59, 0xD4, 0x0B, 0x25, 0xDE, 0x1B, 0x4F, 0xBD, 0xE5, 0x01, + 0x9E, 0xCD, 0xD2, 0x29, 0xD5, 0x9F, 0x17, 0x19, 0x0A, 0x6F, 0xBF, 0x0C, + 0x90, 0xD3, 0x09, 0x5F, 0xD9, 0xE3, 0x8A, 0x35, 0xCC, 0x79, 0x5A, 0x4D, + 0x19, 0x37, 0x92, 0xB7, 0xC4, 0xC1, 0xAD, 0xAF, 0xF4, 0x79, 0x24, 0x9A, + 0xB2, 0x01, 0x0B, 0xB1, 0xAF, 0x5C, 0x96, 0xF3, 0x80, 0x32, 0xFB, 0x5C, + 0x3D, 0x98, 0xF1, 0xA0, 0x3F, 0x4A, 0xDE, 0xBE, 0xAF, 0x94, 0x2E, 0xD9, + 0x55, 0x9A, 0x17, 0x6E, 0x60, 0x9D, 0x63, 0x6C, 0xB8, 0x63, 0xC9, 0xAE, + 0x81, 0x5C, 0x18, 0x35, 0xE0, 0x90, 0xBB, 0xBE, 0x3C, 0x4F, 0x37, 0x22, + 0xB9, 0x7E, 0xEB, 0xCF, 0x9E, 0x77, 0x21, 0xA6, 0x3D, 0x38, 0x81, 0xFB, + 0x48, 0xDA, 0x31, 0x3D, 0x2B, 0xE3, 0x89, 0xF5, 0xD0, 0xB5, 0xBD, 0x7E, + 0xE0, 0x50, 0xC4, 0x12, 0x89, 0xB3, 0x23, 0x9A, 0x10, 0x31, 0x85, 0xDB, + 0xAE, 0x6F, 0xEF, 0x38, 0x33, 0x18, 0x76, 0x11 +}; + +static const unsigned char TA55_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA56_DN[] = { + 0x30, 0x81, 0xAC, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x45, 0x55, 0x31, 0x43, 0x30, 0x41, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x3A, 0x4D, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x28, 0x73, + 0x65, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x74, 0x20, 0x77, 0x77, + 0x77, 0x2E, 0x63, 0x61, 0x6D, 0x65, 0x72, 0x66, 0x69, 0x72, 0x6D, 0x61, + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x29, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x05, 0x13, 0x09, + 0x41, 0x38, 0x32, 0x37, 0x34, 0x33, 0x32, 0x38, 0x37, 0x31, 0x1B, 0x30, + 0x19, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x12, 0x41, 0x43, 0x20, 0x43, + 0x61, 0x6D, 0x65, 0x72, 0x66, 0x69, 0x72, 0x6D, 0x61, 0x20, 0x53, 0x2E, + 0x41, 0x2E, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1E, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x43, 0x68, 0x61, 0x6D, + 0x62, 0x65, 0x72, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x2D, 0x20, 0x32, 0x30, 0x30, 0x38 +}; + +static const unsigned char TA56_RSA_N[] = { + 0xC0, 0xDF, 0x56, 0xD3, 0xE4, 0x3A, 0x9B, 0x76, 0x45, 0xB4, 0x13, 0xDB, + 0xFF, 0xC1, 0xB6, 0x19, 0x8B, 0x37, 0x41, 0x18, 0x95, 0x52, 0x47, 0xEB, + 0x17, 0x9D, 0x29, 0x88, 0x8E, 0x35, 0x6C, 0x06, 0x32, 0x2E, 0x47, 0x62, + 0xF3, 0x49, 0x04, 0xBF, 0x7D, 0x44, 0x36, 0xB1, 0x71, 0xCC, 0xBD, 0x5A, + 0x09, 0x73, 0xD5, 0xD9, 0x85, 0x44, 0xFF, 0x91, 0x57, 0x25, 0xDF, 0x5E, + 0x36, 0x8E, 0x70, 0xD1, 0x5C, 0x71, 0x43, 0x1D, 0xD9, 0xDA, 0xEF, 0x5C, + 0xD2, 0xFB, 0x1B, 0xBD, 0x3A, 0xB5, 0xCB, 0xAD, 0xA3, 0xCC, 0x44, 0xA7, + 0x0D, 0xAE, 0x21, 0x15, 0x3F, 0xB9, 0x7A, 0x5B, 0x92, 0x75, 0xD8, 0xA4, + 0x12, 0x38, 0x89, 0x19, 0x8A, 0xB7, 0x80, 0xD2, 0xE2, 0x32, 0x6F, 0x56, + 0x9C, 0x91, 0xD6, 0x88, 0x10, 0x0B, 0xB3, 0x74, 0x64, 0x92, 0x74, 0x60, + 0xF3, 0xF6, 0xCF, 0x18, 0x4F, 0x60, 0xB2, 0x23, 0xD0, 0xC7, 0x3B, 0xCE, + 0x61, 0x4B, 0x99, 0x8F, 0xC2, 0x0C, 0xD0, 0x40, 0xB2, 0x98, 0xDC, 0x0D, + 0xA8, 0x4E, 0xA3, 0xB9, 0x0A, 0xAE, 0x60, 0xA0, 0xAD, 0x45, 0x52, 0x63, + 0xBA, 0x66, 0xBD, 0x68, 0xE0, 0xF9, 0xBE, 0x1A, 0xA8, 0x81, 0xBB, 0x1E, + 0x41, 0x78, 0x75, 0xD3, 0xC1, 0xFE, 0x00, 0x55, 0xB0, 0x87, 0x54, 0xE8, + 0x27, 0x90, 0x35, 0x1D, 0x4C, 0x33, 0xAD, 0x97, 0xFC, 0x97, 0x2E, 0x98, + 0x84, 0xBF, 0x2C, 0xC9, 0xA3, 0xBF, 0xD1, 0x98, 0x11, 0x14, 0xED, 0x63, + 0xF8, 0xCA, 0x98, 0x88, 0x58, 0x17, 0x99, 0xED, 0x45, 0x03, 0x97, 0x7E, + 0x3C, 0x86, 0x1E, 0x88, 0x8C, 0xBE, 0xF2, 0x91, 0x84, 0x8F, 0x65, 0x34, + 0xD8, 0x00, 0x4C, 0x7D, 0xB7, 0x31, 0x17, 0x5A, 0x29, 0x7A, 0x0A, 0x18, + 0x24, 0x30, 0xA3, 0x37, 0xB5, 0x7A, 0xA9, 0x01, 0x7D, 0x26, 0xD6, 0xF9, + 0x0E, 0x8E, 0x59, 0xF1, 0xFD, 0x1B, 0x33, 0xB5, 0x29, 0x3B, 0x17, 0x3B, + 0x41, 0xB6, 0x21, 0xDD, 0xD4, 0xC0, 0x3D, 0xA5, 0x9F, 0x9F, 0x1F, 0x43, + 0x50, 0xC9, 0xBB, 0xBC, 0x6C, 0x7A, 0x97, 0x98, 0xEE, 0xCD, 0x8C, 0x1F, + 0xFB, 0x9C, 0x51, 0xAE, 0x8B, 0x70, 0xBD, 0x27, 0x9F, 0x71, 0xC0, 0x6B, + 0xAC, 0x7D, 0x90, 0x66, 0xE8, 0xD7, 0x5D, 0x3A, 0x0D, 0xB0, 0xD5, 0xC2, + 0x8D, 0xD5, 0xC8, 0x9D, 0x9D, 0xC1, 0x6D, 0xD0, 0xD0, 0xBF, 0x51, 0xE4, + 0xE3, 0xF8, 0xC3, 0x38, 0x36, 0xAE, 0xD6, 0xA7, 0x75, 0xE6, 0xAF, 0x84, + 0x43, 0x5D, 0x93, 0x92, 0x0C, 0x6A, 0x07, 0xDE, 0x3B, 0x1D, 0x98, 0x22, + 0xD6, 0xAC, 0xC1, 0x35, 0xDB, 0xA3, 0xA0, 0x25, 0xFF, 0x72, 0xB5, 0x76, + 0x1D, 0xDE, 0x6D, 0xE9, 0x2C, 0x66, 0x2C, 0x52, 0x84, 0xD0, 0x45, 0x92, + 0xCE, 0x1C, 0xE5, 0xE5, 0x33, 0x1D, 0xDC, 0x07, 0x53, 0x54, 0xA3, 0xAA, + 0x82, 0x3B, 0x9A, 0x37, 0x2F, 0xDC, 0xDD, 0xA0, 0x64, 0xE9, 0xE6, 0xDD, + 0xBD, 0xAE, 0xFC, 0x64, 0x85, 0x1D, 0x3C, 0xA7, 0xC9, 0x06, 0xDE, 0x84, + 0xFF, 0x6B, 0xE8, 0x6B, 0x1A, 0x3C, 0xC5, 0xA2, 0xB3, 0x42, 0xFB, 0x8B, + 0x09, 0x3E, 0x5F, 0x08, 0x52, 0xC7, 0x62, 0xC4, 0xD4, 0x05, 0x71, 0xBF, + 0xC4, 0x64, 0xE4, 0xF8, 0xA1, 0x83, 0xE8, 0x3E, 0x12, 0x9B, 0xA8, 0x1E, + 0xD4, 0x36, 0x4D, 0x2F, 0x71, 0xF6, 0x8D, 0x28, 0xF6, 0x83, 0xA9, 0x13, + 0xD2, 0x61, 0xC1, 0x91, 0xBB, 0x48, 0xC0, 0x34, 0x8F, 0x41, 0x8C, 0x4B, + 0x4C, 0xDB, 0x69, 0x12, 0xFF, 0x50, 0x94, 0x9C, 0x20, 0x83, 0x59, 0x73, + 0xED, 0x7C, 0xA1, 0xF2, 0xF1, 0xFD, 0xDD, 0xF7, 0x49, 0xD3, 0x43, 0x58, + 0xA0, 0x56, 0x63, 0xCA, 0x3D, 0x3D, 0xE5, 0x35, 0x56, 0x59, 0xE9, 0x0E, + 0xCA, 0x20, 0xCC, 0x2B, 0x4B, 0x93, 0x29, 0x0F +}; + +static const unsigned char TA56_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA57_DN[] = { + 0x30, 0x81, 0x83, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7A, 0x6F, 0x6E, 0x61, 0x31, 0x13, + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0A, 0x53, 0x63, 0x6F, + 0x74, 0x74, 0x73, 0x64, 0x61, 0x6C, 0x65, 0x31, 0x1A, 0x30, 0x18, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x11, 0x47, 0x6F, 0x44, 0x61, 0x64, 0x64, + 0x79, 0x2E, 0x63, 0x6F, 0x6D, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, + 0x31, 0x30, 0x2F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6F, + 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, + 0x47, 0x32 +}; + +static const unsigned char TA57_RSA_N[] = { + 0xBF, 0x71, 0x62, 0x08, 0xF1, 0xFA, 0x59, 0x34, 0xF7, 0x1B, 0xC9, 0x18, + 0xA3, 0xF7, 0x80, 0x49, 0x58, 0xE9, 0x22, 0x83, 0x13, 0xA6, 0xC5, 0x20, + 0x43, 0x01, 0x3B, 0x84, 0xF1, 0xE6, 0x85, 0x49, 0x9F, 0x27, 0xEA, 0xF6, + 0x84, 0x1B, 0x4E, 0xA0, 0xB4, 0xDB, 0x70, 0x98, 0xC7, 0x32, 0x01, 0xB1, + 0x05, 0x3E, 0x07, 0x4E, 0xEE, 0xF4, 0xFA, 0x4F, 0x2F, 0x59, 0x30, 0x22, + 0xE7, 0xAB, 0x19, 0x56, 0x6B, 0xE2, 0x80, 0x07, 0xFC, 0xF3, 0x16, 0x75, + 0x80, 0x39, 0x51, 0x7B, 0xE5, 0xF9, 0x35, 0xB6, 0x74, 0x4E, 0xA9, 0x8D, + 0x82, 0x13, 0xE4, 0xB6, 0x3F, 0xA9, 0x03, 0x83, 0xFA, 0xA2, 0xBE, 0x8A, + 0x15, 0x6A, 0x7F, 0xDE, 0x0B, 0xC3, 0xB6, 0x19, 0x14, 0x05, 0xCA, 0xEA, + 0xC3, 0xA8, 0x04, 0x94, 0x3B, 0x46, 0x7C, 0x32, 0x0D, 0xF3, 0x00, 0x66, + 0x22, 0xC8, 0x8D, 0x69, 0x6D, 0x36, 0x8C, 0x11, 0x18, 0xB7, 0xD3, 0xB2, + 0x1C, 0x60, 0xB4, 0x38, 0xFA, 0x02, 0x8C, 0xCE, 0xD3, 0xDD, 0x46, 0x07, + 0xDE, 0x0A, 0x3E, 0xEB, 0x5D, 0x7C, 0xC8, 0x7C, 0xFB, 0xB0, 0x2B, 0x53, + 0xA4, 0x92, 0x62, 0x69, 0x51, 0x25, 0x05, 0x61, 0x1A, 0x44, 0x81, 0x8C, + 0x2C, 0xA9, 0x43, 0x96, 0x23, 0xDF, 0xAC, 0x3A, 0x81, 0x9A, 0x0E, 0x29, + 0xC5, 0x1C, 0xA9, 0xE9, 0x5D, 0x1E, 0xB6, 0x9E, 0x9E, 0x30, 0x0A, 0x39, + 0xCE, 0xF1, 0x88, 0x80, 0xFB, 0x4B, 0x5D, 0xCC, 0x32, 0xEC, 0x85, 0x62, + 0x43, 0x25, 0x34, 0x02, 0x56, 0x27, 0x01, 0x91, 0xB4, 0x3B, 0x70, 0x2A, + 0x3F, 0x6E, 0xB1, 0xE8, 0x9C, 0x88, 0x01, 0x7D, 0x9F, 0xD4, 0xF9, 0xDB, + 0x53, 0x6D, 0x60, 0x9D, 0xBF, 0x2C, 0xE7, 0x58, 0xAB, 0xB8, 0x5F, 0x46, + 0xFC, 0xCE, 0xC4, 0x1B, 0x03, 0x3C, 0x09, 0xEB, 0x49, 0x31, 0x5C, 0x69, + 0x46, 0xB3, 0xE0, 0x47 +}; + +static const unsigned char TA57_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA58_DN[] = { + 0x30, 0x81, 0x8F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7A, 0x6F, 0x6E, 0x61, 0x31, 0x13, + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0A, 0x53, 0x63, 0x6F, + 0x74, 0x74, 0x73, 0x64, 0x61, 0x6C, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x1C, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, + 0x65, 0x6C, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x6C, 0x6F, + 0x67, 0x69, 0x65, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x32, + 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x53, 0x74, 0x61, + 0x72, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, + 0x47, 0x32 +}; + +static const unsigned char TA58_RSA_N[] = { + 0xBD, 0xED, 0xC1, 0x03, 0xFC, 0xF6, 0x8F, 0xFC, 0x02, 0xB1, 0x6F, 0x5B, + 0x9F, 0x48, 0xD9, 0x9D, 0x79, 0xE2, 0xA2, 0xB7, 0x03, 0x61, 0x56, 0x18, + 0xC3, 0x47, 0xB6, 0xD7, 0xCA, 0x3D, 0x35, 0x2E, 0x89, 0x43, 0xF7, 0xA1, + 0x69, 0x9B, 0xDE, 0x8A, 0x1A, 0xFD, 0x13, 0x20, 0x9C, 0xB4, 0x49, 0x77, + 0x32, 0x29, 0x56, 0xFD, 0xB9, 0xEC, 0x8C, 0xDD, 0x22, 0xFA, 0x72, 0xDC, + 0x27, 0x61, 0x97, 0xEE, 0xF6, 0x5A, 0x84, 0xEC, 0x6E, 0x19, 0xB9, 0x89, + 0x2C, 0xDC, 0x84, 0x5B, 0xD5, 0x74, 0xFB, 0x6B, 0x5F, 0xC5, 0x89, 0xA5, + 0x10, 0x52, 0x89, 0x46, 0x55, 0xF4, 0xB8, 0x75, 0x1C, 0xE6, 0x7F, 0xE4, + 0x54, 0xAE, 0x4B, 0xF8, 0x55, 0x72, 0x57, 0x02, 0x19, 0xF8, 0x17, 0x71, + 0x59, 0xEB, 0x1E, 0x28, 0x07, 0x74, 0xC5, 0x9D, 0x48, 0xBE, 0x6C, 0xB4, + 0xF4, 0xA4, 0xB0, 0xF3, 0x64, 0x37, 0x79, 0x92, 0xC0, 0xEC, 0x46, 0x5E, + 0x7F, 0xE1, 0x6D, 0x53, 0x4C, 0x62, 0xAF, 0xCD, 0x1F, 0x0B, 0x63, 0xBB, + 0x3A, 0x9D, 0xFB, 0xFC, 0x79, 0x00, 0x98, 0x61, 0x74, 0xCF, 0x26, 0x82, + 0x40, 0x63, 0xF3, 0xB2, 0x72, 0x6A, 0x19, 0x0D, 0x99, 0xCA, 0xD4, 0x0E, + 0x75, 0xCC, 0x37, 0xFB, 0x8B, 0x89, 0xC1, 0x59, 0xF1, 0x62, 0x7F, 0x5F, + 0xB3, 0x5F, 0x65, 0x30, 0xF8, 0xA7, 0xB7, 0x4D, 0x76, 0x5A, 0x1E, 0x76, + 0x5E, 0x34, 0xC0, 0xE8, 0x96, 0x56, 0x99, 0x8A, 0xB3, 0xF0, 0x7F, 0xA4, + 0xCD, 0xBD, 0xDC, 0x32, 0x31, 0x7C, 0x91, 0xCF, 0xE0, 0x5F, 0x11, 0xF8, + 0x6B, 0xAA, 0x49, 0x5C, 0xD1, 0x99, 0x94, 0xD1, 0xA2, 0xE3, 0x63, 0x5B, + 0x09, 0x76, 0xB5, 0x56, 0x62, 0xE1, 0x4B, 0x74, 0x1D, 0x96, 0xD4, 0x26, + 0xD4, 0x08, 0x04, 0x59, 0xD0, 0x98, 0x0E, 0x0E, 0xE6, 0xDE, 0xFC, 0xC3, + 0xEC, 0x1F, 0x90, 0xF1 +}; + +static const unsigned char TA58_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA59_DN[] = { + 0x30, 0x81, 0x98, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7A, 0x6F, 0x6E, 0x61, 0x31, 0x13, + 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0A, 0x53, 0x63, 0x6F, + 0x74, 0x74, 0x73, 0x64, 0x61, 0x6C, 0x65, 0x31, 0x25, 0x30, 0x23, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x1C, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, + 0x65, 0x6C, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x6C, 0x6F, + 0x67, 0x69, 0x65, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x3B, + 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, 0x61, + 0x72, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, 0x32 +}; + +static const unsigned char TA59_RSA_N[] = { + 0xD5, 0x0C, 0x3A, 0xC4, 0x2A, 0xF9, 0x4E, 0xE2, 0xF5, 0xBE, 0x19, 0x97, + 0x5F, 0x8E, 0x88, 0x53, 0xB1, 0x1F, 0x3F, 0xCB, 0xCF, 0x9F, 0x20, 0x13, + 0x6D, 0x29, 0x3A, 0xC8, 0x0F, 0x7D, 0x3C, 0xF7, 0x6B, 0x76, 0x38, 0x63, + 0xD9, 0x36, 0x60, 0xA8, 0x9B, 0x5E, 0x5C, 0x00, 0x80, 0xB2, 0x2F, 0x59, + 0x7F, 0xF6, 0x87, 0xF9, 0x25, 0x43, 0x86, 0xE7, 0x69, 0x1B, 0x52, 0x9A, + 0x90, 0xE1, 0x71, 0xE3, 0xD8, 0x2D, 0x0D, 0x4E, 0x6F, 0xF6, 0xC8, 0x49, + 0xD9, 0xB6, 0xF3, 0x1A, 0x56, 0xAE, 0x2B, 0xB6, 0x74, 0x14, 0xEB, 0xCF, + 0xFB, 0x26, 0xE3, 0x1A, 0xBA, 0x1D, 0x96, 0x2E, 0x6A, 0x3B, 0x58, 0x94, + 0x89, 0x47, 0x56, 0xFF, 0x25, 0xA0, 0x93, 0x70, 0x53, 0x83, 0xDA, 0x84, + 0x74, 0x14, 0xC3, 0x67, 0x9E, 0x04, 0x68, 0x3A, 0xDF, 0x8E, 0x40, 0x5A, + 0x1D, 0x4A, 0x4E, 0xCF, 0x43, 0x91, 0x3B, 0xE7, 0x56, 0xD6, 0x00, 0x70, + 0xCB, 0x52, 0xEE, 0x7B, 0x7D, 0xAE, 0x3A, 0xE7, 0xBC, 0x31, 0xF9, 0x45, + 0xF6, 0xC2, 0x60, 0xCF, 0x13, 0x59, 0x02, 0x2B, 0x80, 0xCC, 0x34, 0x47, + 0xDF, 0xB9, 0xDE, 0x90, 0x65, 0x6D, 0x02, 0xCF, 0x2C, 0x91, 0xA6, 0xA6, + 0xE7, 0xDE, 0x85, 0x18, 0x49, 0x7C, 0x66, 0x4E, 0xA3, 0x3A, 0x6D, 0xA9, + 0xB5, 0xEE, 0x34, 0x2E, 0xBA, 0x0D, 0x03, 0xB8, 0x33, 0xDF, 0x47, 0xEB, + 0xB1, 0x6B, 0x8D, 0x25, 0xD9, 0x9B, 0xCE, 0x81, 0xD1, 0x45, 0x46, 0x32, + 0x96, 0x70, 0x87, 0xDE, 0x02, 0x0E, 0x49, 0x43, 0x85, 0xB6, 0x6C, 0x73, + 0xBB, 0x64, 0xEA, 0x61, 0x41, 0xAC, 0xC9, 0xD4, 0x54, 0xDF, 0x87, 0x2F, + 0xC7, 0x22, 0xB2, 0x26, 0xCC, 0x9F, 0x59, 0x54, 0x68, 0x9F, 0xFC, 0xBE, + 0x2A, 0x2F, 0xC4, 0x55, 0x1C, 0x75, 0x40, 0x60, 0x17, 0x85, 0x02, 0x55, + 0x39, 0x8B, 0x7F, 0x05 +}; + +static const unsigned char TA59_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA60_DN[] = { + 0x30, 0x44, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0B, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, + 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C +}; + +static const unsigned char TA60_RSA_N[] = { + 0xF6, 0x1B, 0x4F, 0x67, 0x07, 0x2B, 0xA1, 0x15, 0xF5, 0x06, 0x22, 0xCB, + 0x1F, 0x01, 0xB2, 0xE3, 0x73, 0x45, 0x06, 0x44, 0x49, 0x2C, 0xBB, 0x49, + 0x25, 0x14, 0xD6, 0xCE, 0xC3, 0xB7, 0xAB, 0x2C, 0x4F, 0xC6, 0x41, 0x32, + 0x94, 0x57, 0xFA, 0x12, 0xA7, 0x5B, 0x0E, 0xE2, 0x8F, 0x1F, 0x1E, 0x86, + 0x19, 0xA7, 0xAA, 0xB5, 0x2D, 0xB9, 0x5F, 0x0D, 0x8A, 0xC2, 0xAF, 0x85, + 0x35, 0x79, 0x32, 0x2D, 0xBB, 0x1C, 0x62, 0x37, 0xF2, 0xB1, 0x5B, 0x4A, + 0x3D, 0xCA, 0xCD, 0x71, 0x5F, 0xE9, 0x42, 0xBE, 0x94, 0xE8, 0xC8, 0xDE, + 0xF9, 0x22, 0x48, 0x64, 0xC6, 0xE5, 0xAB, 0xC6, 0x2B, 0x6D, 0xAD, 0x05, + 0xF0, 0xFA, 0xD5, 0x0B, 0xCF, 0x9A, 0xE5, 0xF0, 0x50, 0xA4, 0x8B, 0x3B, + 0x47, 0xA5, 0x23, 0x5B, 0x7A, 0x7A, 0xF8, 0x33, 0x3F, 0xB8, 0xEF, 0x99, + 0x97, 0xE3, 0x20, 0xC1, 0xD6, 0x28, 0x89, 0xCF, 0x94, 0xFB, 0xB9, 0x45, + 0xED, 0xE3, 0x40, 0x17, 0x11, 0xD4, 0x74, 0xF0, 0x0B, 0x31, 0xE2, 0x2B, + 0x26, 0x6A, 0x9B, 0x4C, 0x57, 0xAE, 0xAC, 0x20, 0x3E, 0xBA, 0x45, 0x7A, + 0x05, 0xF3, 0xBD, 0x9B, 0x69, 0x15, 0xAE, 0x7D, 0x4E, 0x20, 0x63, 0xC4, + 0x35, 0x76, 0x3A, 0x07, 0x02, 0xC9, 0x37, 0xFD, 0xC7, 0x47, 0xEE, 0xE8, + 0xF1, 0x76, 0x1D, 0x73, 0x15, 0xF2, 0x97, 0xA4, 0xB5, 0xC8, 0x7A, 0x79, + 0xD9, 0x42, 0xAA, 0x2B, 0x7F, 0x5C, 0xFE, 0xCE, 0x26, 0x4F, 0xA3, 0x66, + 0x81, 0x35, 0xAF, 0x44, 0xBA, 0x54, 0x1E, 0x1C, 0x30, 0x32, 0x65, 0x9D, + 0xE6, 0x3C, 0x93, 0x5E, 0x50, 0x4E, 0x7A, 0xE3, 0x3A, 0xD4, 0x6E, 0xCC, + 0x1A, 0xFB, 0xF9, 0xD2, 0x37, 0xAE, 0x24, 0x2A, 0xAB, 0x57, 0x03, 0x22, + 0x28, 0x0D, 0x49, 0x75, 0x7F, 0xB7, 0x28, 0xDA, 0x75, 0xBF, 0x8E, 0xE3, + 0xDC, 0x0E, 0x79, 0x31 +}; + +static const unsigned char TA60_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA61_DN[] = { + 0x30, 0x44, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0B, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, + 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x69, 0x6E, 0x67 +}; + +static const unsigned char TA61_RSA_N[] = { + 0xB4, 0x84, 0xCC, 0x33, 0x17, 0x2E, 0x6B, 0x94, 0x6C, 0x6B, 0x61, 0x52, + 0xA0, 0xEB, 0xA3, 0xCF, 0x79, 0x94, 0x4C, 0xE5, 0x94, 0x80, 0x99, 0xCB, + 0x55, 0x64, 0x44, 0x65, 0x8F, 0x67, 0x64, 0xE2, 0x06, 0xE3, 0x5C, 0x37, + 0x49, 0xF6, 0x2F, 0x9B, 0x84, 0x84, 0x1E, 0x2D, 0xF2, 0x60, 0x9D, 0x30, + 0x4E, 0xCC, 0x84, 0x85, 0xE2, 0x2C, 0xCF, 0x1E, 0x9E, 0xFE, 0x36, 0xAB, + 0x33, 0x77, 0x35, 0x44, 0xD8, 0x35, 0x96, 0x1A, 0x3D, 0x36, 0xE8, 0x7A, + 0x0E, 0xD8, 0xD5, 0x47, 0xA1, 0x6A, 0x69, 0x8B, 0xD9, 0xFC, 0xBB, 0x3A, + 0xAE, 0x79, 0x5A, 0xD5, 0xF4, 0xD6, 0x71, 0xBB, 0x9A, 0x90, 0x23, 0x6B, + 0x9A, 0xB7, 0x88, 0x74, 0x87, 0x0C, 0x1E, 0x5F, 0xB9, 0x9E, 0x2D, 0xFA, + 0xAB, 0x53, 0x2B, 0xDC, 0xBB, 0x76, 0x3E, 0x93, 0x4C, 0x08, 0x08, 0x8C, + 0x1E, 0xA2, 0x23, 0x1C, 0xD4, 0x6A, 0xAD, 0x22, 0xBA, 0x99, 0x01, 0x2E, + 0x6D, 0x65, 0xCB, 0xBE, 0x24, 0x66, 0x55, 0x24, 0x4B, 0x40, 0x44, 0xB1, + 0x1B, 0xD7, 0xE1, 0xC2, 0x85, 0xC0, 0xDE, 0x10, 0x3F, 0x3D, 0xED, 0xB8, + 0xFC, 0xF1, 0xF1, 0x23, 0x53, 0xDC, 0xBF, 0x65, 0x97, 0x6F, 0xD9, 0xF9, + 0x40, 0x71, 0x8D, 0x7D, 0xBD, 0x95, 0xD4, 0xCE, 0xBE, 0xA0, 0x5E, 0x27, + 0x23, 0xDE, 0xFD, 0xA6, 0xD0, 0x26, 0x0E, 0x00, 0x29, 0xEB, 0x3C, 0x46, + 0xF0, 0x3D, 0x60, 0xBF, 0x3F, 0x50, 0xD2, 0xDC, 0x26, 0x41, 0x51, 0x9E, + 0x14, 0x37, 0x42, 0x04, 0xA3, 0x70, 0x57, 0xA8, 0x1B, 0x87, 0xED, 0x2D, + 0xFA, 0x7B, 0xEE, 0x8C, 0x0A, 0xE3, 0xA9, 0x66, 0x89, 0x19, 0xCB, 0x41, + 0xF9, 0xDD, 0x44, 0x36, 0x61, 0xCF, 0xE2, 0x77, 0x46, 0xC8, 0x7D, 0xF6, + 0xF4, 0x92, 0x81, 0x36, 0xFD, 0xDB, 0x34, 0xF1, 0x72, 0x7E, 0xF3, 0x0C, + 0x16, 0xBD, 0xB4, 0x15 +}; + +static const unsigned char TA61_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA62_DN[] = { + 0x30, 0x41, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0B, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x13, + 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x50, 0x72, 0x65, 0x6D, 0x69, 0x75, 0x6D +}; + +static const unsigned char TA62_RSA_N[] = { + 0xC4, 0x12, 0xDF, 0xA9, 0x5F, 0xFE, 0x41, 0xDD, 0xDD, 0xF5, 0x9F, 0x8A, + 0xE3, 0xF6, 0xAC, 0xE1, 0x3C, 0x78, 0x9A, 0xBC, 0xD8, 0xF0, 0x7F, 0x7A, + 0xA0, 0x33, 0x2A, 0xDC, 0x8D, 0x20, 0x5B, 0xAE, 0x2D, 0x6F, 0xE7, 0x93, + 0xD9, 0x36, 0x70, 0x6A, 0x68, 0xCF, 0x8E, 0x51, 0xA3, 0x85, 0x5B, 0x67, + 0x04, 0xA0, 0x10, 0x24, 0x6F, 0x5D, 0x28, 0x82, 0xC1, 0x97, 0x57, 0xD8, + 0x48, 0x29, 0x13, 0xB6, 0xE1, 0xBE, 0x91, 0x4D, 0xDF, 0x85, 0x0C, 0x53, + 0x18, 0x9A, 0x1E, 0x24, 0xA2, 0x4F, 0x8F, 0xF0, 0xA2, 0x85, 0x0B, 0xCB, + 0xF4, 0x29, 0x7F, 0xD2, 0xA4, 0x58, 0xEE, 0x26, 0x4D, 0xC9, 0xAA, 0xA8, + 0x7B, 0x9A, 0xD9, 0xFA, 0x38, 0xDE, 0x44, 0x57, 0x15, 0xE5, 0xF8, 0x8C, + 0xC8, 0xD9, 0x48, 0xE2, 0x0D, 0x16, 0x27, 0x1D, 0x1E, 0xC8, 0x83, 0x85, + 0x25, 0xB7, 0xBA, 0xAA, 0x55, 0x41, 0xCC, 0x03, 0x22, 0x4B, 0x2D, 0x91, + 0x8D, 0x8B, 0xE6, 0x89, 0xAF, 0x66, 0xC7, 0xE9, 0xFF, 0x2B, 0xE9, 0x3C, + 0xAC, 0xDA, 0xD2, 0xB3, 0xC3, 0xE1, 0x68, 0x9C, 0x89, 0xF8, 0x7A, 0x00, + 0x56, 0xDE, 0xF4, 0x55, 0x95, 0x6C, 0xFB, 0xBA, 0x64, 0xDD, 0x62, 0x8B, + 0xDF, 0x0B, 0x77, 0x32, 0xEB, 0x62, 0xCC, 0x26, 0x9A, 0x9B, 0xBB, 0xAA, + 0x62, 0x83, 0x4C, 0xB4, 0x06, 0x7A, 0x30, 0xC8, 0x29, 0xBF, 0xED, 0x06, + 0x4D, 0x97, 0xB9, 0x1C, 0xC4, 0x31, 0x2B, 0xD5, 0x5F, 0xBC, 0x53, 0x12, + 0x17, 0x9C, 0x99, 0x57, 0x29, 0x66, 0x77, 0x61, 0x21, 0x31, 0x07, 0x2E, + 0x25, 0x49, 0x9D, 0x18, 0xF2, 0xEE, 0xF3, 0x2B, 0x71, 0x8C, 0xB5, 0xBA, + 0x39, 0x07, 0x49, 0x77, 0xFC, 0xEF, 0x2E, 0x92, 0x90, 0x05, 0x8D, 0x2D, + 0x2F, 0x77, 0x7B, 0xEF, 0x43, 0xBF, 0x35, 0xBB, 0x9A, 0xD8, 0xF9, 0x73, + 0xA7, 0x2C, 0xF2, 0xD0, 0x57, 0xEE, 0x28, 0x4E, 0x26, 0x5F, 0x8F, 0x90, + 0x68, 0x09, 0x2F, 0xB8, 0xF8, 0xDC, 0x06, 0xE9, 0x2E, 0x9A, 0x3E, 0x51, + 0xA7, 0xD1, 0x22, 0xC4, 0x0A, 0xA7, 0x38, 0x48, 0x6C, 0xB3, 0xF9, 0xFF, + 0x7D, 0xAB, 0x86, 0x57, 0xE3, 0xBA, 0xD6, 0x85, 0x78, 0x77, 0xBA, 0x43, + 0xEA, 0x48, 0x7F, 0xF6, 0xD8, 0xBE, 0x23, 0x6D, 0x1E, 0xBF, 0xD1, 0x36, + 0x6C, 0x58, 0x5C, 0xF1, 0xEE, 0xA4, 0x19, 0x54, 0x1A, 0xF5, 0x03, 0xD2, + 0x76, 0xE6, 0xE1, 0x8C, 0xBD, 0x3C, 0xB3, 0xD3, 0x48, 0x4B, 0xE2, 0xC8, + 0xF8, 0x7F, 0x92, 0xA8, 0x76, 0x46, 0x9C, 0x42, 0x65, 0x3E, 0xA4, 0x1E, + 0xC1, 0x07, 0x03, 0x5A, 0x46, 0x2D, 0xB8, 0x97, 0xF3, 0xB7, 0xD5, 0xB2, + 0x55, 0x21, 0xEF, 0xBA, 0xDC, 0x4C, 0x00, 0x97, 0xFB, 0x14, 0x95, 0x27, + 0x33, 0xBF, 0xE8, 0x43, 0x47, 0x46, 0xD2, 0x08, 0x99, 0x16, 0x60, 0x3B, + 0x9A, 0x7E, 0xD2, 0xE6, 0xED, 0x38, 0xEA, 0xEC, 0x01, 0x1E, 0x3C, 0x48, + 0x56, 0x49, 0x09, 0xC7, 0x4C, 0x37, 0x00, 0x9E, 0x88, 0x0E, 0xC0, 0x73, + 0xE1, 0x6F, 0x66, 0xE9, 0x72, 0x47, 0x30, 0x3E, 0x10, 0xE5, 0x0B, 0x03, + 0xC9, 0x9A, 0x42, 0x00, 0x6C, 0xC5, 0x94, 0x7E, 0x61, 0xC4, 0x8A, 0xDF, + 0x7F, 0x82, 0x1A, 0x0B, 0x59, 0xC4, 0x59, 0x32, 0x77, 0xB3, 0xBC, 0x60, + 0x69, 0x56, 0x39, 0xFD, 0xB4, 0x06, 0x7B, 0x2C, 0xD6, 0x64, 0x36, 0xD9, + 0xBD, 0x48, 0xED, 0x84, 0x1F, 0x7E, 0xA5, 0x22, 0x8F, 0x2A, 0xB8, 0x42, + 0xF4, 0x82, 0xB7, 0xD4, 0x53, 0x90, 0x78, 0x4E, 0x2D, 0x1A, 0xFD, 0x81, + 0x6F, 0x44, 0xD7, 0x3B, 0x01, 0x74, 0x96, 0x42, 0xE0, 0x00, 0xE2, 0x2E, + 0x6B, 0xEA, 0xC5, 0xEE, 0x72, 0xAC, 0xBB, 0xBF, 0xFE, 0xEA, 0xAA, 0xA8, + 0xF8, 0xDC, 0xF6, 0xB2, 0x79, 0x8A, 0xB6, 0x67 +}; + +static const unsigned char TA62_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA63_DN[] = { + 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0B, 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, + 0x41, 0x66, 0x66, 0x69, 0x72, 0x6D, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, + 0x50, 0x72, 0x65, 0x6D, 0x69, 0x75, 0x6D, 0x20, 0x45, 0x43, 0x43 +}; + +static const unsigned char TA63_EC_Q[] = { + 0x04, 0x0D, 0x30, 0x5E, 0x1B, 0x15, 0x9D, 0x03, 0xD0, 0xA1, 0x79, 0x35, + 0xB7, 0x3A, 0x3C, 0x92, 0x7A, 0xCA, 0x15, 0x1C, 0xCD, 0x62, 0xF3, 0x9C, + 0x26, 0x5C, 0x07, 0x3D, 0xE5, 0x54, 0xFA, 0xA3, 0xD6, 0xCC, 0x12, 0xEA, + 0xF4, 0x14, 0x5F, 0xE8, 0x8E, 0x19, 0xAB, 0x2F, 0x2E, 0x48, 0xE6, 0xAC, + 0x18, 0x43, 0x78, 0xAC, 0xD0, 0x37, 0xC3, 0xBD, 0xB2, 0xCD, 0x2C, 0xE6, + 0x47, 0xE2, 0x1A, 0xE6, 0x63, 0xB8, 0x3D, 0x2E, 0x2F, 0x78, 0xC4, 0x4F, + 0xDB, 0xF4, 0x0F, 0xA4, 0x68, 0x4C, 0x55, 0x72, 0x6B, 0x95, 0x1D, 0x4E, + 0x18, 0x42, 0x95, 0x78, 0xCC, 0x37, 0x3C, 0x91, 0xE2, 0x9B, 0x65, 0x2B, + 0x29 +}; + +static const unsigned char TA64_DN[] = { + 0x30, 0x7E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x50, 0x4C, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x19, 0x55, 0x6E, 0x69, 0x7A, 0x65, 0x74, 0x6F, 0x20, 0x54, 0x65, + 0x63, 0x68, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x69, 0x65, 0x73, 0x20, 0x53, + 0x2E, 0x41, 0x2E, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x1E, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6D, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x22, 0x30, 0x20, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x19, 0x43, 0x65, 0x72, 0x74, 0x75, + 0x6D, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4E, 0x65, + 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA64_RSA_N[] = { + 0xE3, 0xFB, 0x7D, 0xA3, 0x72, 0xBA, 0xC2, 0xF0, 0xC9, 0x14, 0x87, 0xF5, + 0x6B, 0x01, 0x4E, 0xE1, 0x6E, 0x40, 0x07, 0xBA, 0x6D, 0x27, 0x5D, 0x7F, + 0xF7, 0x5B, 0x2D, 0xB3, 0x5A, 0xC7, 0x51, 0x5F, 0xAB, 0xA4, 0x32, 0xA6, + 0x61, 0x87, 0xB6, 0x6E, 0x0F, 0x86, 0xD2, 0x30, 0x02, 0x97, 0xF8, 0xD7, + 0x69, 0x57, 0xA1, 0x18, 0x39, 0x5D, 0x6A, 0x64, 0x79, 0xC6, 0x01, 0x59, + 0xAC, 0x3C, 0x31, 0x4A, 0x38, 0x7C, 0xD2, 0x04, 0xD2, 0x4B, 0x28, 0xE8, + 0x20, 0x5F, 0x3B, 0x07, 0xA2, 0xCC, 0x4D, 0x73, 0xDB, 0xF3, 0xAE, 0x4F, + 0xC7, 0x56, 0xD5, 0x5A, 0xA7, 0x96, 0x89, 0xFA, 0xF3, 0xAB, 0x68, 0xD4, + 0x23, 0x86, 0x59, 0x27, 0xCF, 0x09, 0x27, 0xBC, 0xAC, 0x6E, 0x72, 0x83, + 0x1C, 0x30, 0x72, 0xDF, 0xE0, 0xA2, 0xE9, 0xD2, 0xE1, 0x74, 0x75, 0x19, + 0xBD, 0x2A, 0x9E, 0x7B, 0x15, 0x54, 0x04, 0x1B, 0xD7, 0x43, 0x39, 0xAD, + 0x55, 0x28, 0xC5, 0xE2, 0x1A, 0xBB, 0xF4, 0xC0, 0xE4, 0xAE, 0x38, 0x49, + 0x33, 0xCC, 0x76, 0x85, 0x9F, 0x39, 0x45, 0xD2, 0xA4, 0x9E, 0xF2, 0x12, + 0x8C, 0x51, 0xF8, 0x7C, 0xE4, 0x2D, 0x7F, 0xF5, 0xAC, 0x5F, 0xEB, 0x16, + 0x9F, 0xB1, 0x2D, 0xD1, 0xBA, 0xCC, 0x91, 0x42, 0x77, 0x4C, 0x25, 0xC9, + 0x90, 0x38, 0x6F, 0xDB, 0xF0, 0xCC, 0xFB, 0x8E, 0x1E, 0x97, 0x59, 0x3E, + 0xD5, 0x60, 0x4E, 0xE6, 0x05, 0x28, 0xED, 0x49, 0x79, 0x13, 0x4B, 0xBA, + 0x48, 0xDB, 0x2F, 0xF9, 0x72, 0xD3, 0x39, 0xCA, 0xFE, 0x1F, 0xD8, 0x34, + 0x72, 0xF5, 0xB4, 0x40, 0xCF, 0x31, 0x01, 0xC3, 0xEC, 0xDE, 0x11, 0x2D, + 0x17, 0x5D, 0x1F, 0xB8, 0x50, 0xD1, 0x5E, 0x19, 0xA7, 0x69, 0xDE, 0x07, + 0x33, 0x28, 0xCA, 0x50, 0x95, 0xF9, 0xA7, 0x54, 0xCB, 0x54, 0x86, 0x50, + 0x45, 0xA9, 0xF9, 0x49 +}; + +static const unsigned char TA64_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA65_DN[] = { + 0x30, 0x5F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x54, 0x57, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x09, 0x54, 0x41, 0x49, 0x57, 0x41, 0x4E, 0x2D, 0x43, 0x41, 0x31, + 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x41, 0x31, 0x2A, 0x30, 0x28, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x0C, 0x21, 0x54, 0x57, 0x43, 0x41, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, + 0x79 +}; + +static const unsigned char TA65_RSA_N[] = { + 0xB0, 0x7E, 0x72, 0xB8, 0xA4, 0x03, 0x94, 0xE6, 0xA7, 0xDE, 0x09, 0x38, + 0x91, 0x4A, 0x11, 0x40, 0x87, 0xA7, 0x7C, 0x59, 0x64, 0x14, 0x7B, 0xB5, + 0x11, 0x10, 0xDD, 0xFE, 0xBF, 0xD5, 0xC0, 0xBB, 0x56, 0xE2, 0x85, 0x25, + 0xF4, 0x35, 0x72, 0x0F, 0xF8, 0x53, 0xD0, 0x41, 0xE1, 0x44, 0x01, 0xC2, + 0xB4, 0x1C, 0xC3, 0x31, 0x42, 0x16, 0x47, 0x85, 0x33, 0x22, 0x76, 0xB2, + 0x0A, 0x6F, 0x0F, 0xE5, 0x25, 0x50, 0x4F, 0x85, 0x86, 0xBE, 0xBF, 0x98, + 0x2E, 0x10, 0x67, 0x1E, 0xBE, 0x11, 0x05, 0x86, 0x05, 0x90, 0xC4, 0x59, + 0xD0, 0x7C, 0x78, 0x10, 0xB0, 0x80, 0x5C, 0xB7, 0xE1, 0xC7, 0x2B, 0x75, + 0xCB, 0x7C, 0x9F, 0xAE, 0xB5, 0xD1, 0x9D, 0x23, 0x37, 0x63, 0xA7, 0xDC, + 0x42, 0xA2, 0x2D, 0x92, 0x04, 0x1B, 0x50, 0xC1, 0x7B, 0xB8, 0x3E, 0x1B, + 0xC9, 0x56, 0x04, 0x8B, 0x2F, 0x52, 0x9B, 0xAD, 0xA9, 0x56, 0xE9, 0xC1, + 0xFF, 0xAD, 0xA9, 0x58, 0x87, 0x30, 0xB6, 0x81, 0xF7, 0x97, 0x45, 0xFC, + 0x19, 0x57, 0x3B, 0x2B, 0x6F, 0xE4, 0x47, 0xF4, 0x99, 0x45, 0xFE, 0x1D, + 0xF1, 0xF8, 0x97, 0xA3, 0x88, 0x1D, 0x37, 0x1C, 0x5C, 0x8F, 0xE0, 0x76, + 0x25, 0x9A, 0x50, 0xF8, 0xA0, 0x54, 0xFF, 0x44, 0x90, 0x76, 0x23, 0xD2, + 0x32, 0xC6, 0xC3, 0xAB, 0x06, 0xBF, 0xFC, 0xFB, 0xBF, 0xF3, 0xAD, 0x7D, + 0x92, 0x62, 0x02, 0x5B, 0x29, 0xD3, 0x35, 0xA3, 0x93, 0x9A, 0x43, 0x64, + 0x60, 0x5D, 0xB2, 0xFA, 0x32, 0xFF, 0x3B, 0x04, 0xAF, 0x4D, 0x40, 0x6A, + 0xF9, 0xC7, 0xE3, 0xEF, 0x23, 0xFD, 0x6B, 0xCB, 0xE5, 0x0F, 0x8B, 0x38, + 0x0D, 0xEE, 0x0A, 0xFC, 0xFE, 0x0F, 0x98, 0x9F, 0x30, 0x31, 0xDD, 0x6C, + 0x52, 0x65, 0xF9, 0x8B, 0x81, 0xBE, 0x22, 0xE1, 0x1C, 0x58, 0x03, 0xBA, + 0x91, 0x1B, 0x89, 0x07 +}; + +static const unsigned char TA65_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA66_DN[] = { + 0x30, 0x5D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4A, 0x50, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x1C, 0x53, 0x45, 0x43, 0x4F, 0x4D, 0x20, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x43, 0x4F, + 0x2E, 0x2C, 0x4C, 0x54, 0x44, 0x2E, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x1E, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x32 +}; + +static const unsigned char TA66_RSA_N[] = { + 0xD0, 0x15, 0x39, 0x52, 0xB1, 0x52, 0xB3, 0xBA, 0xC5, 0x59, 0x82, 0xC4, + 0x5D, 0x52, 0xAE, 0x3A, 0x43, 0x65, 0x80, 0x4B, 0xC7, 0xF2, 0x96, 0xBC, + 0xDB, 0x36, 0x97, 0xD6, 0xA6, 0x64, 0x8C, 0xA8, 0x5E, 0xF0, 0xE3, 0x0A, + 0x1C, 0xF7, 0xDF, 0x97, 0x3D, 0x4B, 0xAE, 0xF6, 0x5D, 0xEC, 0x21, 0xB5, + 0x41, 0xAB, 0xCD, 0xB9, 0x7E, 0x76, 0x9F, 0xBE, 0xF9, 0x3E, 0x36, 0x34, + 0xA0, 0x3B, 0xC1, 0xF6, 0x31, 0x11, 0x45, 0x74, 0x93, 0x3D, 0x57, 0x80, + 0xC5, 0xF9, 0x89, 0x99, 0xCA, 0xE5, 0xAB, 0x6A, 0xD4, 0xB5, 0xDA, 0x41, + 0x90, 0x10, 0xC1, 0xD6, 0xD6, 0x42, 0x89, 0xC2, 0xBF, 0xF4, 0x38, 0x12, + 0x95, 0x4C, 0x54, 0x05, 0xF7, 0x36, 0xE4, 0x45, 0x83, 0x7B, 0x14, 0x65, + 0xD6, 0xDC, 0x0C, 0x4D, 0xD1, 0xDE, 0x7E, 0x0C, 0xAB, 0x3B, 0xC4, 0x15, + 0xBE, 0x3A, 0x56, 0xA6, 0x5A, 0x6F, 0x76, 0x69, 0x52, 0xA9, 0x7A, 0xB9, + 0xC8, 0xEB, 0x6A, 0x9A, 0x5D, 0x52, 0xD0, 0x2D, 0x0A, 0x6B, 0x35, 0x16, + 0x09, 0x10, 0x84, 0xD0, 0x6A, 0xCA, 0x3A, 0x06, 0x00, 0x37, 0x47, 0xE4, + 0x7E, 0x57, 0x4F, 0x3F, 0x8B, 0xEB, 0x67, 0xB8, 0x88, 0xAA, 0xC5, 0xBE, + 0x53, 0x55, 0xB2, 0x91, 0xC4, 0x7D, 0xB9, 0xB0, 0x85, 0x19, 0x06, 0x78, + 0x2E, 0xDB, 0x61, 0x1A, 0xFA, 0x85, 0xF5, 0x4A, 0x91, 0xA1, 0xE7, 0x16, + 0xD5, 0x8E, 0xA2, 0x39, 0xDF, 0x94, 0xB8, 0x70, 0x1F, 0x28, 0x3F, 0x8B, + 0xFC, 0x40, 0x5E, 0x63, 0x83, 0x3C, 0x83, 0x2A, 0x1A, 0x99, 0x6B, 0xCF, + 0xDE, 0x59, 0x6A, 0x3B, 0xFC, 0x6F, 0x16, 0xD7, 0x1F, 0xFD, 0x4A, 0x10, + 0xEB, 0x4E, 0x82, 0x16, 0x3A, 0xAC, 0x27, 0x0C, 0x53, 0xF1, 0xAD, 0xD5, + 0x24, 0xB0, 0x6B, 0x03, 0x50, 0xC1, 0x2D, 0x3C, 0x16, 0xDD, 0x44, 0x34, + 0x27, 0x1A, 0x75, 0xFB +}; + +static const unsigned char TA66_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA67_DN[] = { + 0x30, 0x81, 0xF3, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x45, 0x53, 0x31, 0x3B, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x32, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x69, 0x61, 0x20, 0x43, + 0x61, 0x74, 0x61, 0x6C, 0x61, 0x6E, 0x61, 0x20, 0x64, 0x65, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x63, 0x69, 0x6F, 0x20, + 0x28, 0x4E, 0x49, 0x46, 0x20, 0x51, 0x2D, 0x30, 0x38, 0x30, 0x31, 0x31, + 0x37, 0x36, 0x2D, 0x49, 0x29, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x1F, 0x53, 0x65, 0x72, 0x76, 0x65, 0x69, 0x73, 0x20, + 0x50, 0x75, 0x62, 0x6C, 0x69, 0x63, 0x73, 0x20, 0x64, 0x65, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x63, 0x69, 0x6F, 0x31, + 0x35, 0x30, 0x33, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x2C, 0x56, 0x65, + 0x67, 0x65, 0x75, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, + 0x77, 0x77, 0x77, 0x2E, 0x63, 0x61, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2E, + 0x6E, 0x65, 0x74, 0x2F, 0x76, 0x65, 0x72, 0x61, 0x72, 0x72, 0x65, 0x6C, + 0x20, 0x28, 0x63, 0x29, 0x30, 0x33, 0x31, 0x35, 0x30, 0x33, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x2C, 0x4A, 0x65, 0x72, 0x61, 0x72, 0x71, 0x75, + 0x69, 0x61, 0x20, 0x45, 0x6E, 0x74, 0x69, 0x74, 0x61, 0x74, 0x73, 0x20, + 0x64, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x63, 0x69, 0x6F, 0x20, 0x43, 0x61, 0x74, 0x61, 0x6C, 0x61, 0x6E, 0x65, + 0x73, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x06, + 0x45, 0x43, 0x2D, 0x41, 0x43, 0x43 +}; + +static const unsigned char TA67_RSA_N[] = { + 0xB3, 0x22, 0xC7, 0x4F, 0xE2, 0x97, 0x42, 0x95, 0x88, 0x47, 0x83, 0x40, + 0xF6, 0x1D, 0x17, 0xF3, 0x83, 0x73, 0x24, 0x1E, 0x51, 0xF3, 0x98, 0x8A, + 0xC3, 0x92, 0xB8, 0xFF, 0x40, 0x90, 0x05, 0x70, 0x87, 0x60, 0xC9, 0x00, + 0xA9, 0xB5, 0x94, 0x65, 0x19, 0x22, 0x15, 0x17, 0xC2, 0x43, 0x6C, 0x66, + 0x44, 0x9A, 0x0D, 0x04, 0x3E, 0x39, 0x6F, 0xA5, 0x4B, 0x7A, 0xAA, 0x63, + 0xB7, 0x8A, 0x44, 0x9D, 0xD9, 0x63, 0x91, 0x84, 0x66, 0xE0, 0x28, 0x0F, + 0xBA, 0x42, 0xE3, 0x6E, 0x8E, 0xF7, 0x14, 0x27, 0x93, 0x69, 0xEE, 0x91, + 0x0E, 0xA3, 0x5F, 0x0E, 0xB1, 0xEB, 0x66, 0xA2, 0x72, 0x4F, 0x12, 0x13, + 0x86, 0x65, 0x7A, 0x3E, 0xDB, 0x4F, 0x07, 0xF4, 0xA7, 0x09, 0x60, 0xDA, + 0x3A, 0x42, 0x99, 0xC7, 0xB2, 0x7F, 0xB3, 0x16, 0x95, 0x1C, 0xC7, 0xF9, + 0x34, 0xB5, 0x94, 0x85, 0xD5, 0x99, 0x5E, 0xA0, 0x48, 0xA0, 0x7E, 0xE7, + 0x17, 0x65, 0xB8, 0xA2, 0x75, 0xB8, 0x1E, 0xF3, 0xE5, 0x42, 0x7D, 0xAF, + 0xED, 0xF3, 0x8A, 0x48, 0x64, 0x5D, 0x82, 0x14, 0x93, 0xD8, 0xC0, 0xE4, + 0xFF, 0xB3, 0x50, 0x72, 0xF2, 0x76, 0xF6, 0xB3, 0x5D, 0x42, 0x50, 0x79, + 0xD0, 0x94, 0x3E, 0x6B, 0x0C, 0x00, 0xBE, 0xD8, 0x6B, 0x0E, 0x4E, 0x2A, + 0xEC, 0x3E, 0xD2, 0xCC, 0x82, 0xA2, 0x18, 0x65, 0x33, 0x13, 0x77, 0x9E, + 0x9A, 0x5D, 0x1A, 0x13, 0xD8, 0xC3, 0xDB, 0x3D, 0xC8, 0x97, 0x7A, 0xEE, + 0x70, 0xED, 0xA7, 0xE6, 0x7C, 0xDB, 0x71, 0xCF, 0x2D, 0x94, 0x62, 0xDF, + 0x6D, 0xD6, 0xF5, 0x38, 0xBE, 0x3F, 0xA5, 0x85, 0x0A, 0x19, 0xB8, 0xA8, + 0xD8, 0x09, 0x75, 0x42, 0x70, 0xC4, 0xEA, 0xEF, 0xCB, 0x0E, 0xC8, 0x34, + 0xA8, 0x12, 0x22, 0x98, 0x0C, 0xB8, 0x13, 0x94, 0xB6, 0x4B, 0xEC, 0xF0, + 0xD0, 0x90, 0xE7, 0x27 +}; + +static const unsigned char TA67_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA68_DN[] = { + 0x30, 0x81, 0x95, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x47, 0x52, 0x31, 0x44, 0x30, 0x42, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x3B, 0x48, 0x65, 0x6C, 0x6C, 0x65, 0x6E, 0x69, 0x63, 0x20, + 0x41, 0x63, 0x61, 0x64, 0x65, 0x6D, 0x69, 0x63, 0x20, 0x61, 0x6E, 0x64, + 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x49, 0x6E, + 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x2E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, + 0x74, 0x79, 0x31, 0x40, 0x30, 0x3E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x37, 0x48, 0x65, 0x6C, 0x6C, 0x65, 0x6E, 0x69, 0x63, 0x20, 0x41, 0x63, + 0x61, 0x64, 0x65, 0x6D, 0x69, 0x63, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x52, + 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x49, 0x6E, 0x73, 0x74, + 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, 0x31 +}; + +static const unsigned char TA68_RSA_N[] = { + 0xA9, 0x53, 0x00, 0xE3, 0x2E, 0xA6, 0xF6, 0x8E, 0xFA, 0x60, 0xD8, 0x2D, + 0x95, 0x3E, 0xF8, 0x2C, 0x2A, 0x54, 0x4E, 0xCD, 0xB9, 0x84, 0x61, 0x94, + 0x58, 0x4F, 0x8F, 0x3D, 0x8B, 0xE4, 0x43, 0xF3, 0x75, 0x89, 0x8D, 0x51, + 0xE4, 0xC3, 0x37, 0xD2, 0x8A, 0x88, 0x4D, 0x79, 0x1E, 0xB7, 0x12, 0xDD, + 0x43, 0x78, 0x4A, 0x8A, 0x92, 0xE6, 0xD7, 0x48, 0xD5, 0x0F, 0xA4, 0x3A, + 0x29, 0x44, 0x35, 0xB8, 0x07, 0xF6, 0x68, 0x1D, 0x55, 0xCD, 0x38, 0x51, + 0xF0, 0x8C, 0x24, 0x31, 0x85, 0xAF, 0x83, 0xC9, 0x7D, 0xE9, 0x77, 0xAF, + 0xED, 0x1A, 0x7B, 0x9D, 0x17, 0xF9, 0xB3, 0x9D, 0x38, 0x50, 0x0F, 0xA6, + 0x5A, 0x79, 0x91, 0x80, 0xAF, 0x37, 0xAE, 0xA6, 0xD3, 0x31, 0xFB, 0xB5, + 0x26, 0x09, 0x9D, 0x3C, 0x5A, 0xEF, 0x51, 0xC5, 0x2B, 0xDF, 0x96, 0x5D, + 0xEB, 0x32, 0x1E, 0x02, 0xDA, 0x70, 0x49, 0xEC, 0x6E, 0x0C, 0xC8, 0x9A, + 0x37, 0x8D, 0xF7, 0xF1, 0x36, 0x60, 0x4B, 0x26, 0x2C, 0x82, 0x9E, 0xD0, + 0x78, 0xF3, 0x0D, 0x0F, 0x63, 0xA4, 0x51, 0x30, 0xE1, 0xF9, 0x2B, 0x27, + 0x12, 0x07, 0xD8, 0xEA, 0xBD, 0x18, 0x62, 0x98, 0xB0, 0x59, 0x37, 0x7D, + 0xBE, 0xEE, 0xF3, 0x20, 0x51, 0x42, 0x5A, 0x83, 0xEF, 0x93, 0xBA, 0x69, + 0x15, 0xF1, 0x62, 0x9D, 0x9F, 0x99, 0x39, 0x82, 0xA1, 0xB7, 0x74, 0x2E, + 0x8B, 0xD4, 0xC5, 0x0B, 0x7B, 0x2F, 0xF0, 0xC8, 0x0A, 0xDA, 0x3D, 0x79, + 0x0A, 0x9A, 0x93, 0x1C, 0xA5, 0x28, 0x72, 0x73, 0x91, 0x43, 0x9A, 0xA7, + 0xD1, 0x4D, 0x85, 0x84, 0xB9, 0xA9, 0x74, 0x8F, 0x14, 0x40, 0xC7, 0xDC, + 0xDE, 0xAC, 0x41, 0x64, 0x6C, 0xB4, 0x19, 0x9B, 0x02, 0x63, 0x6D, 0x24, + 0x64, 0x8F, 0x44, 0xB2, 0x25, 0xEA, 0xCE, 0x5D, 0x74, 0x0C, 0x63, 0x32, + 0x5C, 0x8D, 0x87, 0xE5 +}; + +static const unsigned char TA68_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA69_DN[] = { + 0x30, 0x6B, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x49, 0x54, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x0C, 0x05, 0x4D, 0x69, 0x6C, 0x61, 0x6E, 0x31, 0x23, 0x30, 0x21, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x1A, 0x41, 0x63, 0x74, 0x61, 0x6C, 0x69, + 0x73, 0x20, 0x53, 0x2E, 0x70, 0x2E, 0x41, 0x2E, 0x2F, 0x30, 0x33, 0x33, + 0x35, 0x38, 0x35, 0x32, 0x30, 0x39, 0x36, 0x37, 0x31, 0x27, 0x30, 0x25, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1E, 0x41, 0x63, 0x74, 0x61, 0x6C, + 0x69, 0x73, 0x20, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6E, 0x74, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, + 0x41 +}; + +static const unsigned char TA69_RSA_N[] = { + 0xA7, 0xC6, 0xC4, 0xA5, 0x29, 0xA4, 0x2C, 0xEF, 0xE5, 0x18, 0xC5, 0xB0, + 0x50, 0xA3, 0x6F, 0x51, 0x3B, 0x9F, 0x0A, 0x5A, 0xC9, 0xC2, 0x48, 0x38, + 0x0A, 0xC2, 0x1C, 0xA0, 0x18, 0x7F, 0x91, 0xB5, 0x87, 0xB9, 0x40, 0x3F, + 0xDD, 0x1D, 0x68, 0x1F, 0x08, 0x83, 0xD5, 0x2D, 0x1E, 0x88, 0xA0, 0xF8, + 0x8F, 0x56, 0x8F, 0x6D, 0x99, 0x02, 0x92, 0x90, 0x16, 0xD5, 0x5F, 0x08, + 0x6C, 0x89, 0xD7, 0xE1, 0xAC, 0xBC, 0x20, 0xC2, 0xB1, 0xE0, 0x83, 0x51, + 0x8A, 0x69, 0x4D, 0x00, 0x96, 0x5A, 0x6F, 0x2F, 0xC0, 0x44, 0x7E, 0xA3, + 0x0E, 0xE4, 0x91, 0xCD, 0x58, 0xEE, 0xDC, 0xFB, 0xC7, 0x1E, 0x45, 0x47, + 0xDD, 0x27, 0xB9, 0x08, 0x01, 0x9F, 0xA6, 0x21, 0x1D, 0xF5, 0x41, 0x2D, + 0x2F, 0x4C, 0xFD, 0x28, 0xAD, 0xE0, 0x8A, 0xAD, 0x22, 0xB4, 0x56, 0x65, + 0x8E, 0x86, 0x54, 0x8F, 0x93, 0x43, 0x29, 0xDE, 0x39, 0x46, 0x78, 0xA3, + 0x30, 0x23, 0xBA, 0xCD, 0xF0, 0x7D, 0x13, 0x57, 0xC0, 0x5D, 0xD2, 0x83, + 0x6B, 0x48, 0x4C, 0xC4, 0xAB, 0x9F, 0x80, 0x5A, 0x5B, 0x3A, 0xBD, 0xC9, + 0xA7, 0x22, 0x3F, 0x80, 0x27, 0x33, 0x5B, 0x0E, 0xB7, 0x8A, 0x0C, 0x5D, + 0x07, 0x37, 0x08, 0xCB, 0x6C, 0xD2, 0x7A, 0x47, 0x22, 0x44, 0x35, 0xC5, + 0xCC, 0xCC, 0x2E, 0x8E, 0xDD, 0x2A, 0xED, 0xB7, 0x7D, 0x66, 0x0D, 0x5F, + 0x61, 0x51, 0x22, 0x55, 0x1B, 0xE3, 0x46, 0xE3, 0xE3, 0x3D, 0xD0, 0x35, + 0x62, 0x9A, 0xDB, 0xAF, 0x14, 0xC8, 0x5B, 0xA1, 0xCC, 0x89, 0x1B, 0xE1, + 0x30, 0x26, 0xFC, 0xA0, 0x9B, 0x1F, 0x81, 0xA7, 0x47, 0x1F, 0x04, 0xEB, + 0xA3, 0x39, 0x92, 0x06, 0x9F, 0x99, 0xD3, 0xBF, 0xD3, 0xEA, 0x4F, 0x50, + 0x9C, 0x19, 0xFE, 0x96, 0x87, 0x1E, 0x3C, 0x65, 0xF6, 0xA3, 0x18, 0x24, + 0x83, 0x86, 0x10, 0xE7, 0x54, 0x3E, 0xA8, 0x3A, 0x76, 0x24, 0x4F, 0x81, + 0x21, 0xC5, 0xE3, 0x0F, 0x02, 0xF8, 0x93, 0x94, 0x47, 0x20, 0xBB, 0xFE, + 0xD4, 0x0E, 0xD3, 0x68, 0xB9, 0xDD, 0xC4, 0x7A, 0x84, 0x82, 0xE3, 0x53, + 0x54, 0x79, 0xDD, 0xDB, 0x9C, 0xD2, 0xF2, 0x07, 0x9B, 0x2E, 0xB6, 0xBC, + 0x3E, 0xED, 0x85, 0x6D, 0xEF, 0x25, 0x11, 0xF2, 0x97, 0x1A, 0x42, 0x61, + 0xF7, 0x4A, 0x97, 0xE8, 0x8B, 0xB1, 0x10, 0x07, 0xFA, 0x65, 0x81, 0xB2, + 0xA2, 0x39, 0xCF, 0xF7, 0x3C, 0xFF, 0x18, 0xFB, 0xC6, 0xF1, 0x5A, 0x8B, + 0x59, 0xE2, 0x02, 0xAC, 0x7B, 0x92, 0xD0, 0x4E, 0x14, 0x4F, 0x59, 0x45, + 0xF6, 0x0C, 0x5E, 0x28, 0x5F, 0xB0, 0xE8, 0x3F, 0x45, 0xCF, 0xCF, 0xAF, + 0x9B, 0x6F, 0xFB, 0x84, 0xD3, 0x77, 0x5A, 0x95, 0x6F, 0xAC, 0x94, 0x84, + 0x9E, 0xEE, 0xBC, 0xC0, 0x4A, 0x8F, 0x4A, 0x93, 0xF8, 0x44, 0x21, 0xE2, + 0x31, 0x45, 0x61, 0x50, 0x4E, 0x10, 0xD8, 0xE3, 0x35, 0x7C, 0x4C, 0x19, + 0xB4, 0xDE, 0x05, 0xBF, 0xA3, 0x06, 0x9F, 0xC8, 0xB5, 0xCD, 0xE4, 0x1F, + 0xD7, 0x17, 0x06, 0x0D, 0x7A, 0x95, 0x74, 0x55, 0x0D, 0x68, 0x1A, 0xFC, + 0x10, 0x1B, 0x62, 0x64, 0x9D, 0x6D, 0xE0, 0x95, 0xA0, 0xC3, 0x94, 0x07, + 0x57, 0x0D, 0x14, 0xE6, 0xBD, 0x05, 0xFB, 0xB8, 0x9F, 0xE6, 0xDF, 0x8B, + 0xE2, 0xC6, 0xE7, 0x7E, 0x96, 0xF6, 0x53, 0xC5, 0x80, 0x34, 0x50, 0x28, + 0x58, 0xF0, 0x12, 0x50, 0x71, 0x17, 0x30, 0xBA, 0xE6, 0x78, 0x63, 0xBC, + 0xF4, 0xB2, 0xAD, 0x9B, 0x2B, 0xB2, 0xFE, 0xE1, 0x39, 0x8C, 0x5E, 0xBA, + 0x0B, 0x20, 0x94, 0xDE, 0x7B, 0x83, 0xB8, 0xFF, 0xE3, 0x56, 0x8D, 0xB7, + 0x11, 0xE9, 0x3B, 0x8C, 0xF2, 0xB1, 0xC1, 0x5D, 0x9D, 0xA4, 0x0B, 0x4C, + 0x2B, 0xD9, 0xB2, 0x18, 0xF5, 0xB5, 0x9F, 0x4B +}; + +static const unsigned char TA69_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA70_DN[] = { + 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x47, 0x42, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0F, 0x54, 0x72, 0x75, 0x73, 0x74, 0x69, 0x73, 0x20, 0x4C, 0x69, + 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x13, 0x54, 0x72, 0x75, 0x73, 0x74, 0x69, 0x73, 0x20, + 0x46, 0x50, 0x53, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA70_RSA_N[] = { + 0xC5, 0x50, 0x7B, 0x9E, 0x3B, 0x35, 0xD0, 0xDF, 0xC4, 0x8C, 0xCD, 0x8E, + 0x9B, 0xED, 0xA3, 0xC0, 0x36, 0x99, 0xF4, 0x42, 0xEA, 0xA7, 0x3E, 0x80, + 0x83, 0x0F, 0xA6, 0xA7, 0x59, 0x87, 0xC9, 0x90, 0x45, 0x43, 0x7E, 0x00, + 0xEA, 0x86, 0x79, 0x2A, 0x03, 0xBD, 0x3D, 0x37, 0x99, 0x89, 0x66, 0xB7, + 0xE5, 0x8A, 0x56, 0x86, 0x93, 0x9C, 0x68, 0x4B, 0x68, 0x04, 0x8C, 0x93, + 0x93, 0x02, 0x3E, 0x30, 0xD2, 0x37, 0x3A, 0x22, 0x61, 0x89, 0x1C, 0x85, + 0x4E, 0x7D, 0x8F, 0xD5, 0xAF, 0x7B, 0x35, 0xF6, 0x7E, 0x28, 0x47, 0x89, + 0x31, 0xDC, 0x0E, 0x79, 0x64, 0x1F, 0x99, 0xD2, 0x5B, 0xBA, 0xFE, 0x7F, + 0x60, 0xBF, 0xAD, 0xEB, 0xE7, 0x3C, 0x38, 0x29, 0x6A, 0x2F, 0xE5, 0x91, + 0x0B, 0x55, 0xFF, 0xEC, 0x6F, 0x58, 0xD5, 0x2D, 0xC9, 0xDE, 0x4C, 0x66, + 0x71, 0x8F, 0x0C, 0xD7, 0x04, 0xDA, 0x07, 0xE6, 0x1E, 0x18, 0xE3, 0xBD, + 0x29, 0x02, 0xA8, 0xFA, 0x1C, 0xE1, 0x5B, 0xB9, 0x83, 0xA8, 0x41, 0x48, + 0xBC, 0x1A, 0x71, 0x8D, 0xE7, 0x62, 0xE5, 0x2D, 0xB2, 0xEB, 0xDF, 0x7C, + 0xCF, 0xDB, 0xAB, 0x5A, 0xCA, 0x31, 0xF1, 0x4C, 0x22, 0xF3, 0x05, 0x13, + 0xF7, 0x82, 0xF9, 0x73, 0x79, 0x0C, 0xBE, 0xD7, 0x4B, 0x1C, 0xC0, 0xD1, + 0x15, 0x3C, 0x93, 0x41, 0x64, 0xD1, 0xE6, 0xBE, 0x23, 0x17, 0x22, 0x00, + 0x89, 0x5E, 0x1F, 0x6B, 0xA5, 0xAC, 0x6E, 0xA7, 0x4B, 0x8C, 0xED, 0xA3, + 0x72, 0xE6, 0xAF, 0x63, 0x4D, 0x2F, 0x85, 0xD2, 0x14, 0x35, 0x9A, 0x2E, + 0x4E, 0x8C, 0xEA, 0x32, 0x98, 0x28, 0x86, 0xA1, 0x91, 0x09, 0x41, 0x3A, + 0xB4, 0xE1, 0xE3, 0xF2, 0xFA, 0xF0, 0xC9, 0x0A, 0xA2, 0x41, 0xDD, 0xA9, + 0xE3, 0x03, 0xC7, 0x88, 0x15, 0x3B, 0x1C, 0xD4, 0x1A, 0x94, 0xD7, 0x9F, + 0x64, 0x59, 0x12, 0x6D +}; + +static const unsigned char TA70_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA71_DN[] = { + 0x30, 0x4E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4E, 0x4F, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x14, 0x42, 0x75, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x41, 0x53, + 0x2D, 0x39, 0x38, 0x33, 0x31, 0x36, 0x33, 0x33, 0x32, 0x37, 0x31, 0x20, + 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x42, 0x75, 0x79, + 0x70, 0x61, 0x73, 0x73, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x32, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA71_RSA_N[] = { + 0xD7, 0xC7, 0x5E, 0xF7, 0xC1, 0x07, 0xD4, 0x77, 0xFB, 0x43, 0x21, 0xF4, + 0xF4, 0xF5, 0x69, 0xE4, 0xEE, 0x32, 0x01, 0xDB, 0xA3, 0x86, 0x1F, 0xE4, + 0x59, 0x0D, 0xBA, 0xE7, 0x75, 0x83, 0x52, 0xEB, 0xEA, 0x1C, 0x61, 0x15, + 0x48, 0xBB, 0x1D, 0x07, 0xCA, 0x8C, 0xAE, 0xB0, 0xDC, 0x96, 0x9D, 0xEA, + 0xC3, 0x60, 0x92, 0x86, 0x82, 0x28, 0x73, 0x9C, 0x56, 0x06, 0xFF, 0x4B, + 0x64, 0xF0, 0x0C, 0x2A, 0x37, 0x49, 0xB5, 0xE5, 0xCF, 0x0C, 0x7C, 0xEE, + 0xF1, 0x4A, 0xBB, 0x73, 0x30, 0x65, 0xF3, 0xD5, 0x2F, 0x83, 0xB6, 0x7E, + 0xE3, 0xE7, 0xF5, 0x9E, 0xAB, 0x60, 0xF9, 0xD3, 0xF1, 0x9D, 0x92, 0x74, + 0x8A, 0xE4, 0x1C, 0x96, 0xAC, 0x5B, 0x80, 0xE9, 0xB5, 0xF4, 0x31, 0x87, + 0xA3, 0x51, 0xFC, 0xC7, 0x7E, 0xA1, 0x6F, 0x8E, 0x53, 0x77, 0xD4, 0x97, + 0xC1, 0x55, 0x33, 0x92, 0x3E, 0x18, 0x2F, 0x75, 0xD4, 0xAD, 0x86, 0x49, + 0xCB, 0x95, 0xAF, 0x54, 0x06, 0x6C, 0xD8, 0x06, 0x13, 0x8D, 0x5B, 0xFF, + 0xE1, 0x26, 0x19, 0x59, 0xC0, 0x24, 0xBA, 0x81, 0x71, 0x79, 0x90, 0x44, + 0x50, 0x68, 0x24, 0x94, 0x5F, 0xB8, 0xB3, 0x11, 0xF1, 0x29, 0x41, 0x61, + 0xA3, 0x41, 0xCB, 0x23, 0x36, 0xD5, 0xC1, 0xF1, 0x32, 0x50, 0x10, 0x4E, + 0x7F, 0xF4, 0x86, 0x93, 0xEC, 0x84, 0xD3, 0x8E, 0xBC, 0x4B, 0xBF, 0x5C, + 0x01, 0x4E, 0x07, 0x3D, 0xDC, 0x14, 0x8A, 0x94, 0x0A, 0xA4, 0xEA, 0x73, + 0xFB, 0x0B, 0x51, 0xE8, 0x13, 0x07, 0x18, 0xFA, 0x0E, 0xF1, 0x2B, 0xD1, + 0x54, 0x15, 0x7D, 0x3C, 0xE1, 0xF7, 0xB4, 0x19, 0x42, 0x67, 0x62, 0x5E, + 0x77, 0xE0, 0xA2, 0x55, 0xEC, 0xB6, 0xD9, 0x69, 0x17, 0xD5, 0x3A, 0xAF, + 0x44, 0xED, 0x4A, 0xC5, 0x9E, 0xE4, 0x7A, 0x27, 0x7C, 0xE5, 0x75, 0xD7, + 0xAA, 0xCB, 0x25, 0xE7, 0xDF, 0x6B, 0x0A, 0xDB, 0x0F, 0x4D, 0x93, 0x4E, + 0xA8, 0xA0, 0xCD, 0x7B, 0x2E, 0xF2, 0x59, 0x01, 0x6A, 0xB7, 0x0D, 0xB8, + 0x07, 0x81, 0x7E, 0x8B, 0x38, 0x1B, 0x38, 0xE6, 0x0A, 0x57, 0x99, 0x3D, + 0xEE, 0x21, 0xE8, 0xA3, 0xF5, 0x0C, 0x16, 0xDD, 0x8B, 0xEC, 0x34, 0x8E, + 0x9C, 0x2A, 0x1C, 0x00, 0x15, 0x17, 0x8D, 0x68, 0x83, 0xD2, 0x70, 0x9F, + 0x18, 0x08, 0xCD, 0x11, 0x68, 0xD5, 0xC9, 0x6B, 0x52, 0xCD, 0xC4, 0x46, + 0x8F, 0xDC, 0xB5, 0xF3, 0xD8, 0x57, 0x73, 0x1E, 0xE9, 0x94, 0x39, 0x04, + 0xBF, 0xD3, 0xDE, 0x38, 0xDE, 0xB4, 0x53, 0xEC, 0x69, 0x1C, 0xA2, 0x7E, + 0xC4, 0x8F, 0xE4, 0x1B, 0x70, 0xAD, 0xF2, 0xA2, 0xF9, 0xFB, 0xF7, 0x16, + 0x64, 0x66, 0x69, 0x9F, 0x49, 0x51, 0xA2, 0xE2, 0x15, 0x18, 0x67, 0x06, + 0x4A, 0x7F, 0xD5, 0x6C, 0xB5, 0x4D, 0xB3, 0x33, 0xE0, 0x61, 0xEB, 0x5D, + 0xBE, 0xE9, 0x98, 0x0F, 0x32, 0xD7, 0x1D, 0x4B, 0x3C, 0x2E, 0x5A, 0x01, + 0x52, 0x91, 0x09, 0xF2, 0xDF, 0xEA, 0x8D, 0xD8, 0x06, 0x40, 0x63, 0xAA, + 0x11, 0xE4, 0xFE, 0xC3, 0x37, 0x9E, 0x14, 0x52, 0x3F, 0xF4, 0xE2, 0xCC, + 0xF2, 0x61, 0x93, 0xD1, 0xFD, 0x67, 0x6B, 0xD7, 0x52, 0xAE, 0xBF, 0x68, + 0xAB, 0x40, 0x43, 0xA0, 0x57, 0x35, 0x53, 0x78, 0xF0, 0x53, 0xF8, 0x61, + 0x42, 0x07, 0x64, 0xC6, 0xD7, 0x6F, 0x9B, 0x4C, 0x38, 0x0D, 0x63, 0xAC, + 0x62, 0xAF, 0x36, 0x8B, 0xA2, 0x73, 0x0A, 0x0D, 0xF5, 0x21, 0xBD, 0x74, + 0xAA, 0x4D, 0xEA, 0x72, 0x03, 0x49, 0xDB, 0xC7, 0x5F, 0x1D, 0x62, 0x63, + 0xC7, 0xFD, 0xDD, 0x91, 0xEC, 0x33, 0xEE, 0xF5, 0x6D, 0xB4, 0x6E, 0x30, + 0x68, 0xDE, 0xC8, 0xD6, 0x26, 0xB0, 0x75, 0x5E, 0x7B, 0xB4, 0x07, 0x20, + 0x98, 0xA1, 0x76, 0x32, 0xB8, 0x4D, 0x6C, 0x4F +}; + +static const unsigned char TA71_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA72_DN[] = { + 0x30, 0x4E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4E, 0x4F, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x14, 0x42, 0x75, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x41, 0x53, + 0x2D, 0x39, 0x38, 0x33, 0x31, 0x36, 0x33, 0x33, 0x32, 0x37, 0x31, 0x20, + 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x17, 0x42, 0x75, 0x79, + 0x70, 0x61, 0x73, 0x73, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA72_RSA_N[] = { + 0xA5, 0xDA, 0x0A, 0x95, 0x16, 0x50, 0xE3, 0x95, 0xF2, 0x5E, 0x9D, 0x76, + 0x31, 0x06, 0x32, 0x7A, 0x9B, 0xF1, 0x10, 0x76, 0xB8, 0x00, 0x9A, 0xB5, + 0x52, 0x36, 0xCD, 0x24, 0x47, 0xB0, 0x9F, 0x18, 0x64, 0xBC, 0x9A, 0xF6, + 0xFA, 0xD5, 0x79, 0xD8, 0x90, 0x62, 0x4C, 0x22, 0x2F, 0xDE, 0x38, 0x3D, + 0xD6, 0xE0, 0xA8, 0xE9, 0x1C, 0x2C, 0xDB, 0x78, 0x11, 0xE9, 0x8E, 0x68, + 0x51, 0x15, 0x72, 0xC7, 0xF3, 0x33, 0x87, 0xE4, 0xA0, 0x5D, 0x0B, 0x5C, + 0xE0, 0x57, 0x07, 0x2A, 0x30, 0xF5, 0xCD, 0xC4, 0x37, 0x77, 0x28, 0x4D, + 0x18, 0x91, 0xE6, 0xBF, 0xD5, 0x52, 0xFD, 0x71, 0x2D, 0x70, 0x3E, 0xE7, + 0xC6, 0xC4, 0x8A, 0xE3, 0xF0, 0x28, 0x0B, 0xF4, 0x76, 0x98, 0xA1, 0x8B, + 0x87, 0x55, 0xB2, 0x3A, 0x13, 0xFC, 0xB7, 0x3E, 0x27, 0x37, 0x8E, 0x22, + 0xE3, 0xA8, 0x4F, 0x2A, 0xEF, 0x60, 0xBB, 0x3D, 0xB7, 0x39, 0xC3, 0x0E, + 0x01, 0x47, 0x99, 0x5D, 0x12, 0x4F, 0xDB, 0x43, 0xFA, 0x57, 0xA1, 0xED, + 0xF9, 0x9D, 0xBE, 0x11, 0x47, 0x26, 0x5B, 0x13, 0x98, 0xAB, 0x5D, 0x16, + 0x8A, 0xB0, 0x37, 0x1C, 0x57, 0x9D, 0x45, 0xFF, 0x88, 0x96, 0x36, 0xBF, + 0xBB, 0xCA, 0x07, 0x7B, 0x6F, 0x87, 0x63, 0xD7, 0xD0, 0x32, 0x6A, 0xD6, + 0x5D, 0x6C, 0x0C, 0xF1, 0xB3, 0x6E, 0x39, 0xE2, 0x6B, 0x31, 0x2E, 0x39, + 0x00, 0x27, 0x14, 0xDE, 0x38, 0xC0, 0xEC, 0x19, 0x66, 0x86, 0x12, 0xE8, + 0x9D, 0x72, 0x16, 0x13, 0x64, 0x52, 0xC7, 0xA9, 0x37, 0x1C, 0xFD, 0x82, + 0x30, 0xED, 0x84, 0x18, 0x1D, 0xF4, 0xAE, 0x5C, 0xFF, 0x70, 0x13, 0x00, + 0xEB, 0xB1, 0xF5, 0x33, 0x7A, 0x4B, 0xD6, 0x55, 0xF8, 0x05, 0x8D, 0x4B, + 0x69, 0xB0, 0xF5, 0xB3, 0x28, 0x36, 0x5C, 0x14, 0xC4, 0x51, 0x73, 0x4D, + 0x6B, 0x0B, 0xF1, 0x34, 0x07, 0xDB, 0x17, 0x39, 0xD7, 0xDC, 0x28, 0x7B, + 0x6B, 0xF5, 0x9F, 0xF3, 0x2E, 0xC1, 0x4F, 0x17, 0x2A, 0x10, 0xF3, 0xCC, + 0xCA, 0xE8, 0xEB, 0xFD, 0x6B, 0xAB, 0x2E, 0x9A, 0x9F, 0x2D, 0x82, 0x6E, + 0x04, 0xD4, 0x52, 0x01, 0x93, 0x2D, 0x3D, 0x86, 0xFC, 0x7E, 0xFC, 0xDF, + 0xEF, 0x42, 0x1D, 0xA6, 0x6B, 0xEF, 0xB9, 0x20, 0xC6, 0xF7, 0xBD, 0xA0, + 0xA7, 0x95, 0xFD, 0xA7, 0xE6, 0x89, 0x24, 0xD8, 0xCC, 0x8C, 0x34, 0x6C, + 0xE2, 0x23, 0x2F, 0xD9, 0x12, 0x1A, 0x21, 0xB9, 0x55, 0x91, 0x6F, 0x0B, + 0x91, 0x79, 0x19, 0x0C, 0xAD, 0x40, 0x88, 0x0B, 0x70, 0xE2, 0x7A, 0xD2, + 0x0E, 0xD8, 0x68, 0x48, 0xBB, 0x82, 0x13, 0x39, 0x10, 0x58, 0xE9, 0xD8, + 0x2A, 0x07, 0xC6, 0x12, 0xDB, 0x58, 0xDB, 0xD2, 0x3B, 0x55, 0x10, 0x47, + 0x05, 0x15, 0x67, 0x62, 0x7E, 0x18, 0x63, 0xA6, 0x46, 0x3F, 0x09, 0x0E, + 0x54, 0x32, 0x5E, 0xBF, 0x0D, 0x62, 0x7A, 0x27, 0xEF, 0x80, 0xE8, 0xDB, + 0xD9, 0x4B, 0x06, 0x5A, 0x37, 0x5A, 0x25, 0xD0, 0x08, 0x12, 0x77, 0xD4, + 0x6F, 0x09, 0x50, 0x97, 0x3D, 0xC8, 0x1D, 0xC3, 0xDF, 0x8C, 0x45, 0x30, + 0x56, 0xC6, 0xD3, 0x64, 0xAB, 0x66, 0xF3, 0xC0, 0x5E, 0x96, 0x9C, 0xC3, + 0xC4, 0xEF, 0xC3, 0x7C, 0x6B, 0x8B, 0x3A, 0x79, 0x7F, 0xB3, 0x49, 0xCF, + 0x3D, 0xE2, 0x89, 0x9F, 0xA0, 0x30, 0x4B, 0x85, 0xB9, 0x9C, 0x94, 0x24, + 0x79, 0x8F, 0x7D, 0x6B, 0xA9, 0x45, 0x68, 0x0F, 0x2B, 0xD0, 0xF1, 0xDA, + 0x1C, 0xCB, 0x69, 0xB8, 0xCA, 0x49, 0x62, 0x6D, 0xC8, 0xD0, 0x63, 0x62, + 0xDD, 0x60, 0x0F, 0x58, 0xAA, 0x8F, 0xA1, 0xBC, 0x05, 0xA5, 0x66, 0xA2, + 0xCF, 0x1B, 0x76, 0xB2, 0x84, 0x64, 0xB1, 0x4C, 0x39, 0x52, 0xC0, 0x30, + 0xBA, 0xF0, 0x8C, 0x4B, 0x02, 0xB0, 0xB6, 0xB7 +}; + +static const unsigned char TA72_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA73_DN[] = { + 0x30, 0x81, 0x82, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x44, 0x45, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x0C, 0x22, 0x54, 0x2D, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, + 0x20, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x47, 0x6D, 0x62, + 0x48, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x16, + 0x54, 0x2D, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1C, 0x54, 0x2D, 0x54, + 0x65, 0x6C, 0x65, 0x53, 0x65, 0x63, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, + 0x6C, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, + 0x33 +}; + +static const unsigned char TA73_RSA_N[] = { + 0xBD, 0x75, 0x93, 0xF0, 0x62, 0x22, 0x6F, 0x24, 0xAE, 0xE0, 0x7A, 0x76, + 0xAC, 0x7D, 0xBD, 0xD9, 0x24, 0xD5, 0xB8, 0xB7, 0xFC, 0xCD, 0xF0, 0x42, + 0xE0, 0xEB, 0x78, 0x88, 0x56, 0x5E, 0x9B, 0x9A, 0x54, 0x1D, 0x4D, 0x0C, + 0x8A, 0xF6, 0xD3, 0xCF, 0x70, 0xF4, 0x52, 0xB5, 0xD8, 0x93, 0x04, 0xE3, + 0x46, 0x86, 0x71, 0x41, 0x4A, 0x2B, 0xF0, 0x2A, 0x2C, 0x55, 0x03, 0xD6, + 0x48, 0xC3, 0xE0, 0x39, 0x38, 0xED, 0xF2, 0x5C, 0x3C, 0x3F, 0x44, 0xBC, + 0x93, 0x3D, 0x61, 0xAB, 0x4E, 0xCD, 0x0D, 0xBE, 0xF0, 0x20, 0x27, 0x58, + 0x0E, 0x44, 0x7F, 0x04, 0x1A, 0x87, 0xA5, 0xD7, 0x96, 0x14, 0x36, 0x90, + 0xD0, 0x49, 0x7B, 0xA1, 0x75, 0xFB, 0x1A, 0x6B, 0x73, 0xB1, 0xF8, 0xCE, + 0xA9, 0x09, 0x2C, 0xF2, 0x53, 0xD5, 0xC3, 0x14, 0x44, 0xB8, 0x86, 0xA5, + 0xF6, 0x8B, 0x2B, 0x39, 0xDA, 0xA3, 0x33, 0x54, 0xD9, 0xFA, 0x72, 0x1A, + 0xF7, 0x22, 0x15, 0x1C, 0x88, 0x91, 0x6B, 0x7F, 0x66, 0xE5, 0xC3, 0x6A, + 0x80, 0xB0, 0x24, 0xF3, 0xDF, 0x86, 0x45, 0x88, 0xFD, 0x19, 0x7F, 0x75, + 0x87, 0x1F, 0x1F, 0xB1, 0x1B, 0x0A, 0x73, 0x24, 0x5B, 0xB9, 0x65, 0xE0, + 0x2C, 0x54, 0xC8, 0x60, 0xD3, 0x66, 0x17, 0x3F, 0xE1, 0xCC, 0x54, 0x33, + 0x73, 0x91, 0x02, 0x3A, 0xA6, 0x7F, 0x7B, 0x76, 0x39, 0xA2, 0x1F, 0x96, + 0xB6, 0x38, 0xAE, 0xB5, 0xC8, 0x93, 0x74, 0x1D, 0x9E, 0xB9, 0xB4, 0xE5, + 0x60, 0x9D, 0x2F, 0x56, 0xD1, 0xE0, 0xEB, 0x5E, 0x5B, 0x4C, 0x12, 0x70, + 0x0C, 0x6C, 0x44, 0x20, 0xAB, 0x11, 0xD8, 0xF4, 0x19, 0xF6, 0xD2, 0x9C, + 0x52, 0x37, 0xE7, 0xFA, 0xB6, 0xC2, 0x31, 0x3B, 0x4A, 0xD4, 0x14, 0x99, + 0xAD, 0xC7, 0x1A, 0xF5, 0x5D, 0x5F, 0xFA, 0x07, 0xB8, 0x7C, 0x0D, 0x1F, + 0xD6, 0x83, 0x1E, 0xB3 +}; + +static const unsigned char TA73_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA74_DN[] = { + 0x30, 0x75, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x45, 0x45, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x19, 0x41, 0x53, 0x20, 0x53, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x74, 0x73, 0x65, 0x65, 0x72, 0x69, 0x6D, 0x69, 0x73, 0x6B, 0x65, 0x73, + 0x6B, 0x75, 0x73, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x1F, 0x45, 0x45, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x43, 0x65, 0x6E, 0x74, 0x72, + 0x65, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x31, 0x18, 0x30, + 0x16, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, + 0x16, 0x09, 0x70, 0x6B, 0x69, 0x40, 0x73, 0x6B, 0x2E, 0x65, 0x65 +}; + +static const unsigned char TA74_RSA_N[] = { + 0xC8, 0x20, 0xC0, 0xEC, 0xE0, 0xC5, 0x4B, 0xAB, 0x07, 0x78, 0x95, 0xF3, + 0x44, 0xEE, 0xFB, 0x0B, 0x0C, 0xFF, 0x74, 0x8E, 0x61, 0xBB, 0xB1, 0x62, + 0xEA, 0x23, 0xD8, 0xAB, 0xA1, 0x65, 0x32, 0x7A, 0xEB, 0x8E, 0x17, 0x4F, + 0x96, 0xD8, 0x0A, 0x7B, 0x91, 0xA2, 0x63, 0x6C, 0xC7, 0x8C, 0x4C, 0x2E, + 0x79, 0xBF, 0xA9, 0x05, 0xFC, 0x69, 0x5C, 0x95, 0x8D, 0x62, 0xF9, 0xB9, + 0x70, 0xED, 0xC3, 0x51, 0x7D, 0xD0, 0x93, 0xE6, 0x6C, 0xEB, 0x30, 0x4B, + 0xE1, 0xBC, 0x7D, 0xBF, 0x52, 0x9B, 0xCE, 0x6E, 0x7B, 0x65, 0xF2, 0x38, + 0xB1, 0xC0, 0xA2, 0x32, 0xEF, 0x62, 0xB2, 0x68, 0xE0, 0x61, 0x53, 0xC1, + 0x36, 0x95, 0xFF, 0xEC, 0x94, 0xBA, 0x36, 0xAE, 0x9C, 0x1C, 0xA7, 0x32, + 0x0F, 0xE5, 0x7C, 0xB4, 0xC6, 0x6F, 0x74, 0xFD, 0x7B, 0x18, 0xE8, 0xAC, + 0x57, 0xED, 0x06, 0x20, 0x4B, 0x32, 0x30, 0x58, 0x5B, 0xFD, 0xCD, 0xA8, + 0xE6, 0xA1, 0xFC, 0x70, 0xBC, 0x8E, 0x92, 0x73, 0xDB, 0x97, 0xA7, 0x7C, + 0x21, 0xAE, 0x3D, 0xC1, 0xF5, 0x48, 0x87, 0x6C, 0x27, 0xBD, 0x9F, 0x25, + 0x74, 0x81, 0x55, 0xB0, 0xF7, 0x75, 0xF6, 0x3D, 0xA4, 0x64, 0x6B, 0xD6, + 0x4F, 0xE7, 0xCE, 0x40, 0xAD, 0x0F, 0xDD, 0x32, 0xD3, 0xBC, 0x8A, 0x12, + 0x53, 0x98, 0xC9, 0x89, 0xFB, 0x10, 0x1D, 0x4D, 0x7E, 0xCD, 0x7E, 0x1F, + 0x56, 0x0D, 0x21, 0x70, 0x85, 0xF6, 0x20, 0x83, 0x1F, 0xF6, 0xBA, 0x1F, + 0x04, 0x8F, 0xEA, 0x77, 0x88, 0x35, 0xC4, 0xFF, 0xEA, 0x4E, 0xA1, 0x8B, + 0x4D, 0x3F, 0x63, 0x1B, 0x44, 0xC3, 0x44, 0xD4, 0x25, 0x76, 0xCA, 0xB7, + 0x8D, 0xD7, 0x1E, 0x4A, 0x66, 0x64, 0xCD, 0x5C, 0xC5, 0x9C, 0x83, 0xE1, + 0xC2, 0x08, 0x88, 0x9A, 0xEC, 0x4E, 0xA3, 0xF1, 0x3E, 0x1C, 0x2C, 0xD9, + 0x6C, 0x1D, 0xA1, 0x4B +}; + +static const unsigned char TA74_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA75_DN[] = { + 0x30, 0x4D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x44, 0x45, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0C, 0x44, 0x2D, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6D, + 0x62, 0x48, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x1E, 0x44, 0x2D, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x41, + 0x20, 0x32, 0x20, 0x32, 0x30, 0x30, 0x39 +}; + +static const unsigned char TA75_RSA_N[] = { + 0xD3, 0xB2, 0x4A, 0xCF, 0x7A, 0x47, 0xEF, 0x75, 0x9B, 0x23, 0xFA, 0x3A, + 0x2F, 0xD6, 0x50, 0x45, 0x89, 0x35, 0x3A, 0xC6, 0x6B, 0xDB, 0xFE, 0xDB, + 0x00, 0x68, 0xA8, 0xE0, 0x03, 0x11, 0x1D, 0x37, 0x50, 0x08, 0x9F, 0x4D, + 0x4A, 0x68, 0x94, 0x35, 0xB3, 0x53, 0xD1, 0x94, 0x63, 0xA7, 0x20, 0x56, + 0xAF, 0xDE, 0x51, 0x78, 0xEC, 0x2A, 0x3D, 0xF3, 0x48, 0x48, 0x50, 0x3E, + 0x0A, 0xDF, 0x46, 0x55, 0x8B, 0x27, 0x6D, 0xC3, 0x10, 0x4D, 0x0D, 0x91, + 0x52, 0x43, 0xD8, 0x87, 0xE0, 0x5D, 0x4E, 0x36, 0xB5, 0x21, 0xCA, 0x5F, + 0x39, 0x40, 0x04, 0x5F, 0x5B, 0x7E, 0xCC, 0xA3, 0xC6, 0x2B, 0xA9, 0x40, + 0x1E, 0xD9, 0x36, 0x84, 0xD6, 0x48, 0xF3, 0x92, 0x1E, 0x34, 0x46, 0x20, + 0x24, 0xC1, 0xA4, 0x51, 0x8E, 0x4A, 0x1A, 0xEF, 0x50, 0x3F, 0x69, 0x5D, + 0x19, 0x7F, 0x45, 0xC3, 0xC7, 0x01, 0x8F, 0x51, 0xC9, 0x23, 0xE8, 0x72, + 0xAE, 0xB4, 0xBC, 0x56, 0x09, 0x7F, 0x12, 0xCB, 0x1C, 0xB1, 0xAF, 0x29, + 0x90, 0x0A, 0xC9, 0x55, 0xCC, 0x0F, 0xD3, 0xB4, 0x1A, 0xED, 0x47, 0x35, + 0x5A, 0x4A, 0xED, 0x9C, 0x73, 0x04, 0x21, 0xD0, 0xAA, 0xBD, 0x0C, 0x13, + 0xB5, 0x00, 0xCA, 0x26, 0x6C, 0xC4, 0x6B, 0x0C, 0x94, 0x5A, 0x95, 0x94, + 0xDA, 0x50, 0x9A, 0xF1, 0xFF, 0xA5, 0x2B, 0x66, 0x31, 0xA4, 0xC9, 0x38, + 0xA0, 0xDF, 0x1D, 0x1F, 0xB8, 0x09, 0x2E, 0xF3, 0xA7, 0xE8, 0x67, 0x52, + 0xAB, 0x95, 0x1F, 0xE0, 0x46, 0x3E, 0xD8, 0xA4, 0xC3, 0xCA, 0x5A, 0xC5, + 0x31, 0x80, 0xE8, 0x48, 0x9A, 0x9F, 0x94, 0x69, 0xFE, 0x19, 0xDD, 0xD8, + 0x73, 0x7C, 0x81, 0xCA, 0x96, 0xDE, 0x8E, 0xED, 0xB3, 0x32, 0x05, 0x65, + 0x84, 0x34, 0xE6, 0xE6, 0xFD, 0x57, 0x10, 0xB5, 0x5F, 0x76, 0xBF, 0x2F, + 0xB0, 0x10, 0x0D, 0xC5 +}; + +static const unsigned char TA75_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA76_DN[] = { + 0x30, 0x50, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x44, 0x45, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0C, 0x44, 0x2D, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6D, + 0x62, 0x48, 0x31, 0x2A, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x21, 0x44, 0x2D, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x41, + 0x20, 0x32, 0x20, 0x45, 0x56, 0x20, 0x32, 0x30, 0x30, 0x39 +}; + +static const unsigned char TA76_RSA_N[] = { + 0x99, 0xF1, 0x84, 0x34, 0x70, 0xBA, 0x2F, 0xB7, 0x30, 0xA0, 0x8E, 0xBD, + 0x7C, 0x04, 0xCF, 0xBE, 0x62, 0xBC, 0x99, 0xFD, 0x82, 0x97, 0xD2, 0x7A, + 0x0A, 0x67, 0x96, 0x38, 0x09, 0xF6, 0x10, 0x4E, 0x95, 0x22, 0x73, 0x99, + 0x8D, 0xDA, 0x15, 0x2D, 0xE7, 0x05, 0xFC, 0x19, 0x73, 0x22, 0xB7, 0x8E, + 0x98, 0x00, 0xBC, 0x3C, 0x3D, 0xAC, 0xA1, 0x6C, 0xFB, 0xD6, 0x79, 0x25, + 0x4B, 0xAD, 0xF0, 0xCC, 0x64, 0xDA, 0x88, 0x3E, 0x29, 0xB8, 0x0F, 0x09, + 0xD3, 0x34, 0xDD, 0x33, 0xF5, 0x62, 0xD1, 0xE1, 0xCD, 0x19, 0xE9, 0xEE, + 0x18, 0x4F, 0x4C, 0x58, 0xAE, 0xE2, 0x1E, 0xD6, 0x0C, 0x5B, 0x15, 0x5A, + 0xD8, 0x3A, 0xB8, 0xC4, 0x18, 0x64, 0x1E, 0xE3, 0x33, 0xB2, 0xB5, 0x89, + 0x77, 0x4E, 0x0C, 0xBF, 0xD9, 0x94, 0x6B, 0x13, 0x97, 0x6F, 0x12, 0xA3, + 0xFE, 0x99, 0xA9, 0x04, 0xCC, 0x15, 0xEC, 0x60, 0x68, 0x36, 0xED, 0x08, + 0x7B, 0xB7, 0xF5, 0xBF, 0x93, 0xED, 0x66, 0x31, 0x83, 0x8C, 0xC6, 0x71, + 0x34, 0x87, 0x4E, 0x17, 0xEA, 0xAF, 0x8B, 0x91, 0x8D, 0x1C, 0x56, 0x41, + 0xAE, 0x22, 0x37, 0x5E, 0x37, 0xF2, 0x1D, 0xD9, 0xD1, 0x2D, 0x0D, 0x2F, + 0x69, 0x51, 0xA7, 0xBE, 0x66, 0xA6, 0x8A, 0x3A, 0x2A, 0xBD, 0xC7, 0x1A, + 0xB1, 0xE1, 0x14, 0xF0, 0xBE, 0x3A, 0x1D, 0xB9, 0xCF, 0x5B, 0xB1, 0x6A, + 0xFE, 0xB4, 0xB1, 0x46, 0x20, 0xA2, 0xFB, 0x1E, 0x3B, 0x70, 0xEF, 0x93, + 0x98, 0x7D, 0x8C, 0x73, 0x96, 0xF2, 0xC5, 0xEF, 0x85, 0x70, 0xAD, 0x29, + 0x26, 0xFC, 0x1E, 0x04, 0x3E, 0x1C, 0xA0, 0xD8, 0x0F, 0xCB, 0x52, 0x83, + 0x62, 0x7C, 0xEE, 0x8B, 0x53, 0x95, 0x90, 0xA9, 0x57, 0xA2, 0xEA, 0x61, + 0x05, 0xD8, 0xF9, 0x4D, 0xC4, 0x27, 0xFA, 0x6E, 0xAD, 0xED, 0xF9, 0xD7, + 0x51, 0xF7, 0x6B, 0xA5 +}; + +static const unsigned char TA76_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA77_DN[] = { + 0x30, 0x52, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x53, 0x4B, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, + 0x13, 0x0A, 0x42, 0x72, 0x61, 0x74, 0x69, 0x73, 0x6C, 0x61, 0x76, 0x61, + 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0A, 0x44, + 0x69, 0x73, 0x69, 0x67, 0x20, 0x61, 0x2E, 0x73, 0x2E, 0x31, 0x19, 0x30, + 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x43, 0x41, 0x20, 0x44, + 0x69, 0x73, 0x69, 0x67, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x52, 0x32 +}; + +static const unsigned char TA77_RSA_N[] = { + 0xA2, 0xA3, 0xC4, 0x00, 0x09, 0xD6, 0x85, 0x5D, 0x2D, 0x6D, 0x14, 0xF6, + 0xC2, 0xC3, 0x73, 0x9E, 0x35, 0xC2, 0x71, 0x55, 0x7E, 0x81, 0xFB, 0xAB, + 0x46, 0x50, 0xE0, 0xC1, 0x7C, 0x49, 0x78, 0xE6, 0xAB, 0x79, 0x58, 0x3C, + 0xDA, 0xFF, 0x7C, 0x1C, 0x9F, 0xD8, 0x97, 0x02, 0x78, 0x3E, 0x6B, 0x41, + 0x04, 0xE9, 0x41, 0xBD, 0xBE, 0x03, 0x2C, 0x45, 0xF6, 0x2F, 0x64, 0xD4, + 0xAB, 0x5D, 0xA3, 0x47, 0x3D, 0x64, 0x9B, 0xE9, 0x68, 0x9A, 0xC6, 0xCC, + 0x1B, 0x3F, 0xBA, 0xBE, 0xB2, 0x8B, 0x34, 0x02, 0x2E, 0x98, 0x55, 0x19, + 0xFC, 0x8C, 0x6F, 0xAA, 0x5F, 0xDA, 0x4C, 0xCE, 0x4D, 0x03, 0x21, 0xA3, + 0xD8, 0xD2, 0x34, 0x93, 0x56, 0x96, 0xCB, 0x4C, 0x0C, 0x00, 0x16, 0x3C, + 0x5F, 0x1A, 0xCD, 0xC8, 0xC7, 0x6C, 0xA6, 0xAD, 0xD3, 0x31, 0xA7, 0xBC, + 0xE8, 0xE5, 0xE1, 0x66, 0xD6, 0xD2, 0xFB, 0x03, 0xB4, 0x41, 0x65, 0xC9, + 0x10, 0xAE, 0x0E, 0x05, 0x63, 0xC6, 0x80, 0x6A, 0x69, 0x30, 0xFD, 0xD2, + 0xEE, 0x90, 0xEF, 0x0D, 0x27, 0xDF, 0x9F, 0x95, 0x73, 0xF4, 0xE1, 0x25, + 0xDA, 0x6C, 0x16, 0xDE, 0x41, 0x38, 0x34, 0xEA, 0x8B, 0xFC, 0xD1, 0xE8, + 0x04, 0x14, 0x61, 0x2D, 0x41, 0x7E, 0xAC, 0xC7, 0x77, 0x4E, 0xCB, 0x51, + 0x54, 0xFB, 0x5E, 0x92, 0x18, 0x1B, 0x04, 0x5A, 0x68, 0xC6, 0xC9, 0xC4, + 0xFA, 0xB7, 0x13, 0xA0, 0x98, 0xB7, 0x11, 0x2B, 0xB7, 0xD6, 0x57, 0xCC, + 0x7C, 0x9E, 0x17, 0xD1, 0xCB, 0x25, 0xFE, 0x86, 0x4E, 0x24, 0x2E, 0x56, + 0x0C, 0x78, 0x4D, 0x9E, 0x01, 0x12, 0xA6, 0x2B, 0xA7, 0x01, 0x65, 0x6E, + 0x7C, 0x62, 0x1D, 0x84, 0x84, 0xDF, 0xEA, 0xC0, 0x6B, 0xB5, 0xA5, 0x2A, + 0x95, 0x83, 0xC3, 0x53, 0x11, 0x0C, 0x73, 0x1D, 0x0B, 0xB2, 0x46, 0x90, + 0xD1, 0x42, 0x3A, 0xCE, 0x40, 0x6E, 0x95, 0xAD, 0xFF, 0xC6, 0x94, 0xAD, + 0x6E, 0x97, 0x84, 0x8E, 0x7D, 0x6F, 0x9E, 0x8A, 0x80, 0x0D, 0x49, 0x6D, + 0x73, 0xE2, 0x7B, 0x92, 0x1E, 0xC3, 0xF3, 0xC1, 0xF3, 0xEB, 0x2E, 0x05, + 0x6F, 0xD9, 0x1B, 0xCF, 0x37, 0x76, 0x04, 0xC8, 0xB4, 0x5A, 0xE4, 0x17, + 0xA7, 0xCB, 0xDD, 0x76, 0x1F, 0xD0, 0x19, 0x76, 0xE8, 0x2C, 0x05, 0xB3, + 0xD6, 0x9C, 0x34, 0xD8, 0x96, 0xDC, 0x61, 0x87, 0x91, 0x05, 0xE4, 0x44, + 0x08, 0x33, 0xC1, 0xDA, 0xB9, 0x08, 0x65, 0xD4, 0xAE, 0xB2, 0x36, 0x0D, + 0xEB, 0xBA, 0x38, 0xBA, 0x0C, 0xE5, 0x9B, 0x9E, 0xEB, 0x8D, 0x66, 0xDD, + 0x99, 0xCF, 0xD6, 0x89, 0x41, 0xF6, 0x04, 0x92, 0x8A, 0x29, 0x29, 0x6D, + 0x6B, 0x3A, 0x1C, 0xE7, 0x75, 0x7D, 0x02, 0x71, 0x0E, 0xF3, 0xC0, 0xE7, + 0xBD, 0xCB, 0x19, 0xDD, 0x9D, 0x60, 0xB2, 0xC2, 0x66, 0x60, 0xB6, 0xB1, + 0x04, 0xEE, 0xC9, 0xE6, 0x86, 0xB9, 0x9A, 0x66, 0x40, 0xA8, 0xE7, 0x11, + 0xED, 0x81, 0x45, 0x03, 0x8B, 0xF6, 0x67, 0x59, 0xE8, 0xC1, 0x06, 0x11, + 0xBD, 0xDD, 0xCF, 0x80, 0x02, 0x4F, 0x65, 0x40, 0x78, 0x5C, 0x47, 0x50, + 0xC8, 0x9B, 0xE6, 0x1F, 0x81, 0x7B, 0xE4, 0x44, 0xA8, 0x5B, 0x85, 0x9A, + 0xE2, 0xDE, 0x5A, 0xD5, 0xC7, 0xF9, 0x3A, 0x44, 0x66, 0x4B, 0xE4, 0x32, + 0x54, 0x7C, 0xE4, 0x6C, 0x9C, 0xB3, 0x0E, 0x3D, 0x17, 0xA2, 0xB2, 0x34, + 0x12, 0xD6, 0x7E, 0xB2, 0xA8, 0x49, 0xBB, 0xD1, 0x7A, 0x28, 0x40, 0xBE, + 0xA2, 0x16, 0x1F, 0xDF, 0xE4, 0x37, 0x1F, 0x11, 0x73, 0xFB, 0x90, 0x0A, + 0x65, 0x43, 0xA2, 0x0D, 0x7C, 0xF8, 0x06, 0x01, 0x55, 0x33, 0x7D, 0xB0, + 0x0D, 0xB8, 0xF4, 0xF5, 0xAE, 0xA5, 0x42, 0x57, 0x7C, 0x36, 0x11, 0x8C, + 0x7B, 0x5E, 0xC4, 0x03, 0x9D, 0x8C, 0x79, 0x9D +}; + +static const unsigned char TA77_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA78_DN[] = { + 0x30, 0x42, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x09, 0x41, 0x43, 0x43, 0x56, 0x52, 0x41, 0x49, 0x5A, 0x31, 0x31, 0x10, + 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07, 0x50, 0x4B, 0x49, + 0x41, 0x43, 0x43, 0x56, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x0C, 0x04, 0x41, 0x43, 0x43, 0x56, 0x31, 0x0B, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x45, 0x53 +}; + +static const unsigned char TA78_RSA_N[] = { + 0x9B, 0xA9, 0xAB, 0xBF, 0x61, 0x4A, 0x97, 0xAF, 0x2F, 0x97, 0x66, 0x9A, + 0x74, 0x5F, 0xD0, 0xD9, 0x96, 0xFD, 0xCF, 0xE2, 0xE4, 0x66, 0xEF, 0x1F, + 0x1F, 0x47, 0x33, 0xC2, 0x44, 0xA3, 0xDF, 0x9A, 0xDE, 0x1F, 0xB5, 0x54, + 0xDD, 0x15, 0x7C, 0x69, 0x35, 0x11, 0x6F, 0xBB, 0xC8, 0x0C, 0x8E, 0x6A, + 0x18, 0x1E, 0xD8, 0x8F, 0xD9, 0x16, 0xBC, 0x10, 0x48, 0x36, 0x5C, 0xF0, + 0x63, 0xB3, 0x90, 0x5A, 0x5C, 0x24, 0x37, 0xD7, 0xA3, 0xD6, 0xCB, 0x09, + 0x71, 0xB9, 0xF1, 0x01, 0x72, 0x84, 0xB0, 0x7D, 0xDB, 0x4D, 0x80, 0xCD, + 0xFC, 0xD3, 0x6F, 0xC9, 0xF8, 0xDA, 0xB6, 0x0E, 0x82, 0xD2, 0x45, 0x85, + 0xA8, 0x1B, 0x68, 0xA8, 0x3D, 0xE8, 0xF4, 0x44, 0x6C, 0xBD, 0xA1, 0xC2, + 0xCB, 0x03, 0xBE, 0x8C, 0x3E, 0x13, 0x00, 0x84, 0xDF, 0x4A, 0x48, 0xC0, + 0xE3, 0x22, 0x0A, 0xE8, 0xE9, 0x37, 0xA7, 0x18, 0x4C, 0xB1, 0x09, 0x0D, + 0x23, 0x56, 0x7F, 0x04, 0x4D, 0xD9, 0x17, 0x84, 0x18, 0xA5, 0xC8, 0xDA, + 0x40, 0x94, 0x73, 0xEB, 0xCE, 0x0E, 0x57, 0x3C, 0x03, 0x81, 0x3A, 0x9D, + 0x0A, 0xA1, 0x57, 0x43, 0x69, 0xAC, 0x57, 0x6D, 0x79, 0x90, 0x78, 0xE5, + 0xB5, 0xB4, 0x3B, 0xD8, 0xBC, 0x4C, 0x8D, 0x28, 0xA1, 0xA7, 0xA3, 0xA7, + 0xBA, 0x02, 0x4E, 0x25, 0xD1, 0x2A, 0xAE, 0xED, 0xAE, 0x03, 0x22, 0xB8, + 0x6B, 0x20, 0x0F, 0x30, 0x28, 0x54, 0x95, 0x7F, 0xE0, 0xEE, 0xCE, 0x0A, + 0x66, 0x9D, 0xD1, 0x40, 0x2D, 0x6E, 0x22, 0xAF, 0x9D, 0x1A, 0xC1, 0x05, + 0x19, 0xD2, 0x6F, 0xC0, 0xF2, 0x9F, 0xF8, 0x7B, 0xB3, 0x02, 0x42, 0xFB, + 0x50, 0xA9, 0x1D, 0x2D, 0x93, 0x0F, 0x23, 0xAB, 0xC6, 0xC1, 0x0F, 0x92, + 0xFF, 0xD0, 0xA2, 0x15, 0xF5, 0x53, 0x09, 0x71, 0x1C, 0xFF, 0x45, 0x13, + 0x84, 0xE6, 0x26, 0x5E, 0xF8, 0xE0, 0x88, 0x1C, 0x0A, 0xFC, 0x16, 0xB6, + 0xA8, 0x73, 0x06, 0xB8, 0xF0, 0x63, 0x84, 0x02, 0xA0, 0xC6, 0x5A, 0xEC, + 0xE7, 0x74, 0xDF, 0x70, 0xAE, 0xA3, 0x83, 0x25, 0xEA, 0xD6, 0xC7, 0x97, + 0x87, 0x93, 0xA7, 0xC6, 0x8A, 0x8A, 0x33, 0x97, 0x60, 0x37, 0x10, 0x3E, + 0x97, 0x3E, 0x6E, 0x29, 0x15, 0xD6, 0xA1, 0x0F, 0xD1, 0x88, 0x2C, 0x12, + 0x9F, 0x6F, 0xAA, 0xA4, 0xC6, 0x42, 0xEB, 0x41, 0xA2, 0xE3, 0x95, 0x43, + 0xD3, 0x01, 0x85, 0x6D, 0x8E, 0xBB, 0x3B, 0xF3, 0x23, 0x36, 0xC7, 0xFE, + 0x3B, 0xE0, 0xA1, 0x25, 0x07, 0x48, 0xAB, 0xC9, 0x89, 0x74, 0xFF, 0x08, + 0x8F, 0x80, 0xBF, 0xC0, 0x96, 0x65, 0xF3, 0xEE, 0xEC, 0x4B, 0x68, 0xBD, + 0x9D, 0x88, 0xC3, 0x31, 0xB3, 0x40, 0xF1, 0xE8, 0xCF, 0xF6, 0x38, 0xBB, + 0x9C, 0xE4, 0xD1, 0x7F, 0xD4, 0xE5, 0x58, 0x9B, 0x7C, 0xFA, 0xD4, 0xF3, + 0x0E, 0x9B, 0x75, 0x91, 0xE4, 0xBA, 0x52, 0x2E, 0x19, 0x7E, 0xD1, 0xF5, + 0xCD, 0x5A, 0x19, 0xFC, 0xBA, 0x06, 0xF6, 0xFB, 0x52, 0xA8, 0x4B, 0x99, + 0x04, 0xDD, 0xF8, 0xF9, 0xB4, 0x8B, 0x50, 0xA3, 0x4E, 0x62, 0x89, 0xF0, + 0x87, 0x24, 0xFA, 0x83, 0x42, 0xC1, 0x87, 0xFA, 0xD5, 0x2D, 0x29, 0x2A, + 0x5A, 0x71, 0x7A, 0x64, 0x6A, 0xD7, 0x27, 0x60, 0x63, 0x0D, 0xDB, 0xCE, + 0x49, 0xF5, 0x8D, 0x1F, 0x90, 0x89, 0x32, 0x17, 0xF8, 0x73, 0x43, 0xB8, + 0xD2, 0x5A, 0x93, 0x86, 0x61, 0xD6, 0xE1, 0x75, 0x0A, 0xEA, 0x79, 0x66, + 0x76, 0x88, 0x4F, 0x71, 0xEB, 0x04, 0x25, 0xD6, 0x0A, 0x5A, 0x7A, 0x93, + 0xE5, 0xB9, 0x4B, 0x17, 0x40, 0x0F, 0xB1, 0xB6, 0xB9, 0xF5, 0xDE, 0x4F, + 0xDC, 0xE0, 0xB3, 0xAC, 0x3B, 0x11, 0x70, 0x60, 0x84, 0x4A, 0x43, 0x6E, + 0x99, 0x20, 0xC0, 0x29, 0x71, 0x0A, 0xC0, 0x65 +}; + +static const unsigned char TA78_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA79_DN[] = { + 0x30, 0x51, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x54, 0x57, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x09, 0x54, 0x41, 0x49, 0x57, 0x41, 0x4E, 0x2D, 0x43, 0x41, 0x31, + 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x07, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x13, 0x54, 0x57, 0x43, 0x41, 0x20, 0x47, 0x6C, 0x6F, + 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA79_RSA_N[] = { + 0xB0, 0x05, 0xDB, 0xC8, 0xEB, 0x8C, 0xC4, 0x6E, 0x8A, 0x21, 0xEF, 0x8E, + 0x4D, 0x9C, 0x71, 0x0A, 0x1F, 0x52, 0x70, 0xED, 0x6D, 0x82, 0x9C, 0x97, + 0xC5, 0xD7, 0x4C, 0x4E, 0x45, 0x49, 0xCB, 0x40, 0x42, 0xB5, 0x12, 0x34, + 0x6C, 0x19, 0xC2, 0x74, 0xA4, 0x31, 0x5F, 0x85, 0x02, 0x97, 0xEC, 0x43, + 0x33, 0x0A, 0x53, 0xD2, 0x9C, 0x8C, 0x8E, 0xB7, 0xB8, 0x79, 0xDB, 0x2B, + 0xD5, 0x6A, 0xF2, 0x8E, 0x66, 0xC4, 0xEE, 0x2B, 0x01, 0x07, 0x92, 0xD4, + 0xB3, 0xD0, 0x02, 0xDF, 0x50, 0xF6, 0x55, 0xAF, 0x66, 0x0E, 0xCB, 0xE0, + 0x47, 0x60, 0x2F, 0x2B, 0x32, 0x39, 0x35, 0x52, 0x3A, 0x28, 0x83, 0xF8, + 0x7B, 0x16, 0xC6, 0x18, 0xB8, 0x62, 0xD6, 0x47, 0x25, 0x91, 0xCE, 0xF0, + 0x19, 0x12, 0x4D, 0xAD, 0x63, 0xF5, 0xD3, 0x3F, 0x75, 0x5F, 0x29, 0xF0, + 0xA1, 0x30, 0x1C, 0x2A, 0xA0, 0x98, 0xA6, 0x15, 0xBD, 0xEE, 0xFD, 0x19, + 0x36, 0xF0, 0xE2, 0x91, 0x43, 0x8F, 0xFA, 0xCA, 0xD6, 0x10, 0x27, 0x49, + 0x4C, 0xEF, 0xDD, 0xC1, 0xF1, 0x85, 0x70, 0x9B, 0xCA, 0xEA, 0xA8, 0x5A, + 0x43, 0xFC, 0x6D, 0x86, 0x6F, 0x73, 0xE9, 0x37, 0x45, 0xA9, 0xF0, 0x36, + 0xC7, 0xCC, 0x88, 0x75, 0x1E, 0xBB, 0x6C, 0x06, 0xFF, 0x9B, 0x6B, 0x3E, + 0x17, 0xEC, 0x61, 0xAA, 0x71, 0x7C, 0xC6, 0x1D, 0xA2, 0xF7, 0x49, 0xE9, + 0x15, 0xB5, 0x3C, 0xD6, 0xA1, 0x61, 0xF5, 0x11, 0xF7, 0x05, 0x6F, 0x1D, + 0xFD, 0x11, 0xBE, 0xD0, 0x30, 0x07, 0xC2, 0x29, 0xB0, 0x09, 0x4E, 0x26, + 0xDC, 0xE3, 0xA2, 0xA8, 0x91, 0x6A, 0x1F, 0xC2, 0x91, 0x45, 0x88, 0x5C, + 0xE5, 0x98, 0xB8, 0x71, 0xA5, 0x15, 0x19, 0xC9, 0x7C, 0x75, 0x11, 0xCC, + 0x70, 0x74, 0x4F, 0x2D, 0x9B, 0x1D, 0x91, 0x44, 0xFD, 0x56, 0x28, 0xA0, + 0xFE, 0xBB, 0x86, 0x6A, 0xC8, 0xFA, 0x5C, 0x0B, 0x58, 0xDC, 0xC6, 0x4B, + 0x76, 0xC8, 0xAB, 0x22, 0xD9, 0x73, 0x0F, 0xA5, 0xF4, 0x5A, 0x02, 0x89, + 0x3F, 0x4F, 0x9E, 0x22, 0x82, 0xEE, 0xA2, 0x74, 0x53, 0x2A, 0x3D, 0x53, + 0x27, 0x69, 0x1D, 0x6C, 0x8E, 0x32, 0x2C, 0x64, 0x00, 0x26, 0x63, 0x61, + 0x36, 0x4E, 0xA3, 0x46, 0xB7, 0x3F, 0x7D, 0xB3, 0x2D, 0xAC, 0x6D, 0x90, + 0xA2, 0x95, 0xA2, 0xCE, 0xCF, 0xDA, 0x82, 0xE7, 0x07, 0x34, 0x19, 0x96, + 0xE9, 0xB8, 0x21, 0xAA, 0x29, 0x7E, 0xA6, 0x38, 0xBE, 0x8E, 0x29, 0x4A, + 0x21, 0x66, 0x79, 0x1F, 0xB3, 0xC3, 0xB5, 0x09, 0x67, 0xDE, 0xD6, 0xD4, + 0x07, 0x46, 0xF3, 0x2A, 0xDA, 0xE6, 0x22, 0x37, 0x60, 0xCB, 0x81, 0xB6, + 0x0F, 0xA0, 0x0F, 0xE9, 0xC8, 0x95, 0x7F, 0xBF, 0x55, 0x91, 0x05, 0x7A, + 0xCF, 0x3D, 0x15, 0xC0, 0x6F, 0xDE, 0x09, 0x94, 0x01, 0x83, 0xD7, 0x34, + 0x1B, 0xCC, 0x40, 0xA5, 0xF0, 0xB8, 0x9B, 0x67, 0xD5, 0x98, 0x91, 0x3B, + 0xA7, 0x84, 0x78, 0x95, 0x26, 0xA4, 0x5A, 0x08, 0xF8, 0x2B, 0x74, 0xB4, + 0x00, 0x04, 0x3C, 0xDF, 0xB8, 0x14, 0x8E, 0xE8, 0xDF, 0xA9, 0x8D, 0x6C, + 0x67, 0x92, 0x33, 0x1D, 0xC0, 0xB7, 0xD2, 0xEC, 0x92, 0xC8, 0xBE, 0x09, + 0xBF, 0x2C, 0x29, 0x05, 0x6F, 0x02, 0x6B, 0x9E, 0xEF, 0xBC, 0xBF, 0x2A, + 0xBC, 0x5B, 0xC0, 0x50, 0x8F, 0x41, 0x70, 0x71, 0x87, 0xB2, 0x4D, 0xB7, + 0x04, 0xA9, 0x84, 0xA3, 0x32, 0xAF, 0xAE, 0xEE, 0x6B, 0x17, 0x8B, 0xB2, + 0xB1, 0xFE, 0x6C, 0xE1, 0x90, 0x8C, 0x88, 0xA8, 0x97, 0x48, 0xCE, 0xC8, + 0x4D, 0xCB, 0xF3, 0x06, 0xCF, 0x5F, 0x6A, 0x0A, 0x42, 0xB1, 0x1E, 0x1E, + 0x77, 0x2F, 0x8E, 0xA0, 0xE6, 0x92, 0x0E, 0x06, 0xFC, 0x05, 0x22, 0xD2, + 0x26, 0xE1, 0x31, 0x51, 0x7D, 0x32, 0xDC, 0x0F +}; + +static const unsigned char TA79_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA80_DN[] = { + 0x30, 0x37, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, + 0x0B, 0x54, 0x65, 0x6C, 0x69, 0x61, 0x53, 0x6F, 0x6E, 0x65, 0x72, 0x61, + 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, 0x54, + 0x65, 0x6C, 0x69, 0x61, 0x53, 0x6F, 0x6E, 0x65, 0x72, 0x61, 0x20, 0x52, + 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x76, 0x31 +}; + +static const unsigned char TA80_RSA_N[] = { + 0xC2, 0xBE, 0xEB, 0x27, 0xF0, 0x21, 0xA3, 0xF3, 0x69, 0x26, 0x55, 0x7E, + 0x9D, 0xC5, 0x55, 0x16, 0x91, 0x5C, 0xFD, 0xEF, 0x21, 0xBF, 0x53, 0x80, + 0x7A, 0x2D, 0xD2, 0x91, 0x8C, 0x63, 0x31, 0xF0, 0xEC, 0x24, 0xF0, 0xC3, + 0xA5, 0xD2, 0x72, 0x7C, 0x10, 0x6D, 0xF4, 0x37, 0xB7, 0xE5, 0xE6, 0x7C, + 0x79, 0xEA, 0x8C, 0xB5, 0x82, 0x8B, 0xAE, 0x48, 0xB6, 0xAC, 0x00, 0xDC, + 0x65, 0x75, 0xEC, 0x2A, 0x4D, 0x5F, 0xC1, 0x87, 0xF5, 0x20, 0x65, 0x2B, + 0x81, 0xA8, 0x47, 0x3E, 0x89, 0x23, 0x95, 0x30, 0x16, 0x90, 0x7F, 0xE8, + 0x57, 0x07, 0x48, 0xE7, 0x19, 0xAE, 0xBF, 0x45, 0x67, 0xB1, 0x37, 0x1B, + 0x06, 0x2A, 0xFE, 0xDE, 0xF9, 0xAC, 0x7D, 0x83, 0xFB, 0x5E, 0xBA, 0xE4, + 0x8F, 0x97, 0x67, 0xBE, 0x4B, 0x8E, 0x8D, 0x64, 0x07, 0x57, 0x38, 0x55, + 0x69, 0x34, 0x36, 0x3D, 0x13, 0x48, 0xEF, 0x4F, 0xE2, 0xD3, 0x66, 0x1E, + 0xA4, 0xCF, 0x1A, 0xB7, 0x5E, 0x36, 0x33, 0xD4, 0xB4, 0x06, 0xBD, 0x18, + 0x01, 0xFD, 0x77, 0x84, 0x50, 0x00, 0x45, 0xF5, 0x8C, 0x5D, 0xE8, 0x23, + 0xBC, 0x7E, 0xFE, 0x35, 0xE1, 0xED, 0x50, 0x7B, 0xA9, 0x30, 0x8D, 0x19, + 0xD3, 0x09, 0x8E, 0x68, 0x67, 0x5D, 0xBF, 0x3C, 0x97, 0x18, 0x53, 0xBB, + 0x29, 0x62, 0xC5, 0xCA, 0x5E, 0x72, 0xC1, 0xC7, 0x96, 0xD4, 0xDB, 0x2D, + 0xA0, 0xB4, 0x1F, 0x69, 0x03, 0xEC, 0xEA, 0xE2, 0x50, 0xF1, 0x0C, 0x3C, + 0xF0, 0xAC, 0xF3, 0x53, 0x2D, 0xF0, 0x1C, 0xF5, 0xED, 0x6C, 0x39, 0x39, + 0x73, 0x80, 0x16, 0xC8, 0x52, 0xB0, 0x23, 0xCD, 0xE0, 0x3E, 0xDC, 0xDD, + 0x3C, 0x47, 0xA0, 0xBB, 0x35, 0x8A, 0xE2, 0x98, 0x68, 0x8B, 0xBE, 0xE5, + 0xBF, 0x72, 0xEE, 0xD2, 0xFA, 0xA5, 0xED, 0x12, 0xED, 0xFC, 0x98, 0x18, + 0xA9, 0x26, 0x76, 0xDC, 0x28, 0x4B, 0x10, 0x20, 0x1C, 0xD3, 0x7F, 0x16, + 0x77, 0x2D, 0xED, 0x6F, 0x80, 0xF7, 0x49, 0xBB, 0x53, 0x05, 0xBB, 0x5D, + 0x68, 0xC7, 0xD4, 0xC8, 0x75, 0x16, 0x3F, 0x89, 0x5A, 0x8B, 0xF7, 0x17, + 0x47, 0xD4, 0x4C, 0xF1, 0xD2, 0x89, 0x79, 0x3E, 0x4D, 0x3D, 0x98, 0xA8, + 0x61, 0xDE, 0x3A, 0x1E, 0xD2, 0xF8, 0x5E, 0x03, 0xE0, 0xC1, 0xC9, 0x1C, + 0x8C, 0xD3, 0x8D, 0x4D, 0xD3, 0x95, 0x36, 0xB3, 0x37, 0x5F, 0x63, 0x63, + 0x9B, 0x33, 0x14, 0xF0, 0x2D, 0x26, 0x6B, 0x53, 0x7C, 0x89, 0x8C, 0x32, + 0xC2, 0x6E, 0xEC, 0x3D, 0x21, 0x00, 0x39, 0xC9, 0xA1, 0x68, 0xE2, 0x50, + 0x83, 0x2E, 0xB0, 0x3A, 0x2B, 0xF3, 0x36, 0xA0, 0xAC, 0x2F, 0xE4, 0x6F, + 0x61, 0xC2, 0x51, 0x09, 0x39, 0x3E, 0x8B, 0x53, 0xB9, 0xBB, 0x67, 0xDA, + 0xDC, 0x53, 0xB9, 0x76, 0x59, 0x36, 0x9D, 0x43, 0xE5, 0x20, 0xE0, 0x3D, + 0x32, 0x60, 0x85, 0x22, 0x51, 0xB7, 0xC7, 0x33, 0xBB, 0xDD, 0x15, 0x2F, + 0xA4, 0x78, 0xA6, 0x07, 0x7B, 0x81, 0x46, 0x36, 0x04, 0x86, 0xDD, 0x79, + 0x35, 0xC7, 0x95, 0x2C, 0x3B, 0xB0, 0xA3, 0x17, 0x35, 0xE5, 0x73, 0x1F, + 0xB4, 0x5C, 0x59, 0xEF, 0xDA, 0xEA, 0x10, 0x65, 0x7B, 0x7A, 0xD0, 0x7F, + 0x9F, 0xB3, 0xB4, 0x2A, 0x37, 0x3B, 0x70, 0x8B, 0x9B, 0x5B, 0xB9, 0x2B, + 0xB7, 0xEC, 0xB2, 0x51, 0x12, 0x97, 0x53, 0x29, 0x5A, 0xD4, 0xF0, 0x12, + 0x10, 0xDC, 0x4F, 0x02, 0xBB, 0x12, 0x92, 0x2F, 0x62, 0xD4, 0x3F, 0x69, + 0x43, 0x7C, 0x0D, 0xD6, 0xFC, 0x58, 0x75, 0x01, 0x88, 0x9D, 0x58, 0x16, + 0x4B, 0xDE, 0xBA, 0x90, 0xFF, 0x47, 0x01, 0x89, 0x06, 0x6A, 0xF6, 0x5F, + 0xB2, 0x90, 0x6A, 0xB3, 0x02, 0xA6, 0x02, 0x88, 0xBF, 0xB3, 0x47, 0x7E, + 0x2A, 0xD9, 0xD5, 0xFA, 0x68, 0x78, 0x35, 0x4D +}; + +static const unsigned char TA80_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA81_DN[] = { + 0x30, 0x81, 0xB2, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x54, 0x52, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x0C, 0x06, 0x41, 0x6E, 0x6B, 0x61, 0x72, 0x61, 0x31, 0x40, 0x30, + 0x3E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x37, 0x45, 0x2D, 0x54, 0x75, + 0xC4, 0x9F, 0x72, 0x61, 0x20, 0x45, 0x42, 0x47, 0x20, 0x42, 0x69, 0x6C, + 0x69, 0xC5, 0x9F, 0x69, 0x6D, 0x20, 0x54, 0x65, 0x6B, 0x6E, 0x6F, 0x6C, + 0x6F, 0x6A, 0x69, 0x6C, 0x65, 0x72, 0x69, 0x20, 0x76, 0x65, 0x20, 0x48, + 0x69, 0x7A, 0x6D, 0x65, 0x74, 0x6C, 0x65, 0x72, 0x69, 0x20, 0x41, 0x2E, + 0xC5, 0x9E, 0x2E, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x0C, 0x1D, 0x45, 0x2D, 0x54, 0x75, 0x67, 0x72, 0x61, 0x20, 0x53, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x6B, 0x61, 0x73, 0x79, 0x6F, 0x6E, 0x20, + 0x4D, 0x65, 0x72, 0x6B, 0x65, 0x7A, 0x69, 0x31, 0x28, 0x30, 0x26, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1F, 0x45, 0x2D, 0x54, 0x75, 0x67, 0x72, + 0x61, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, + 0x79 +}; + +static const unsigned char TA81_RSA_N[] = { + 0xE2, 0xF5, 0x3F, 0x93, 0x05, 0x51, 0x1E, 0x85, 0x62, 0x54, 0x5E, 0x7A, + 0x0B, 0xF5, 0x18, 0x07, 0x83, 0xAE, 0x7E, 0xAF, 0x7C, 0xF7, 0xD4, 0x8A, + 0x6B, 0xA5, 0x63, 0x43, 0x39, 0xB9, 0x4B, 0xF7, 0xC3, 0xC6, 0x64, 0x89, + 0x3D, 0x94, 0x2E, 0x54, 0x80, 0x52, 0x39, 0x39, 0x07, 0x4B, 0x4B, 0xDD, + 0x85, 0x07, 0x76, 0x87, 0xCC, 0xBF, 0x2F, 0x95, 0x4C, 0xCC, 0x7D, 0xA7, + 0x3D, 0xBC, 0x47, 0x0F, 0x98, 0x70, 0xF8, 0x8C, 0x85, 0x1E, 0x74, 0x8E, + 0x92, 0x6D, 0x1B, 0x40, 0xD1, 0x99, 0x0D, 0xBB, 0x75, 0x6E, 0xC8, 0xA9, + 0x6B, 0x9A, 0xC0, 0x84, 0x31, 0xAF, 0xCA, 0x43, 0xCB, 0xEB, 0x2B, 0x34, + 0xE8, 0x8F, 0x97, 0x6B, 0x01, 0x9B, 0xD5, 0x0E, 0x4A, 0x08, 0xAA, 0x5B, + 0x92, 0x74, 0x85, 0x43, 0xD3, 0x80, 0xAE, 0xA1, 0x88, 0x5B, 0xAE, 0xB3, + 0xEA, 0x5E, 0xCB, 0x16, 0x9A, 0x77, 0x44, 0xC8, 0xA1, 0xF6, 0x54, 0x68, + 0xCE, 0xDE, 0x8F, 0x97, 0x2B, 0xBA, 0x5B, 0x40, 0x02, 0x0C, 0x64, 0x17, + 0xC0, 0xB5, 0x93, 0xCD, 0xE1, 0xF1, 0x13, 0x66, 0xCE, 0x0C, 0x79, 0xEF, + 0xD1, 0x91, 0x28, 0xAB, 0x5F, 0xA0, 0x12, 0x52, 0x30, 0x73, 0x19, 0x8E, + 0x8F, 0xE1, 0x8C, 0x07, 0xA2, 0xC3, 0xBB, 0x4A, 0xF0, 0xEA, 0x1F, 0x15, + 0xA8, 0xEE, 0x25, 0xCC, 0xA4, 0x46, 0xF8, 0x1B, 0x22, 0xEF, 0xB3, 0x0E, + 0x43, 0xBA, 0x2C, 0x24, 0xB8, 0xC5, 0x2C, 0x5C, 0xD4, 0x1C, 0xF8, 0x5D, + 0x64, 0xBD, 0xC3, 0x93, 0x5E, 0x28, 0xA7, 0x3F, 0x27, 0xF1, 0x8E, 0x1E, + 0xD3, 0x2A, 0x50, 0x05, 0xA3, 0x55, 0xD9, 0xCB, 0xE7, 0x39, 0x53, 0xC0, + 0x98, 0x9E, 0x8C, 0x54, 0x62, 0x8B, 0x26, 0xB0, 0xF7, 0x7D, 0x8D, 0x7C, + 0xE4, 0xC6, 0x9E, 0x66, 0x42, 0x55, 0x82, 0x47, 0xE7, 0xB2, 0x58, 0x8D, + 0x66, 0xF7, 0x07, 0x7C, 0x2E, 0x36, 0xE6, 0x50, 0x1C, 0x3F, 0xDB, 0x43, + 0x24, 0xC5, 0xBF, 0x86, 0x47, 0x79, 0xB3, 0x79, 0x1C, 0xF7, 0x5A, 0xF4, + 0x13, 0xEC, 0x6C, 0xF8, 0x3F, 0xE2, 0x59, 0x1F, 0x95, 0xEE, 0x42, 0x3E, + 0xB9, 0xAD, 0xA8, 0x32, 0x85, 0x49, 0x97, 0x46, 0xFE, 0x4B, 0x31, 0x8F, + 0x5A, 0xCB, 0xAD, 0x74, 0x47, 0x1F, 0xE9, 0x91, 0xB7, 0xDF, 0x28, 0x04, + 0x22, 0xA0, 0xD4, 0x0F, 0x5D, 0xE2, 0x79, 0x4F, 0xEA, 0x6C, 0x85, 0x86, + 0xBD, 0xA8, 0xA6, 0xCE, 0xE4, 0xFA, 0xC3, 0xE1, 0xB3, 0xAE, 0xDE, 0x3C, + 0x51, 0xEE, 0xCB, 0x13, 0x7C, 0x01, 0x7F, 0x84, 0x0E, 0x5D, 0x51, 0x94, + 0x9E, 0x13, 0x0C, 0xB6, 0x2E, 0xA5, 0x4C, 0xF9, 0x39, 0x70, 0x36, 0x6F, + 0x96, 0xCA, 0x2E, 0x0C, 0x44, 0x55, 0xC5, 0xCA, 0xFA, 0x5D, 0x02, 0xA3, + 0xDF, 0xD6, 0x64, 0x8C, 0x5A, 0xB3, 0x01, 0x0A, 0xA9, 0xB5, 0x0A, 0x47, + 0x17, 0xFF, 0xEF, 0x91, 0x40, 0x2A, 0x8E, 0xA1, 0x46, 0x3A, 0x31, 0x98, + 0xE5, 0x11, 0xFC, 0xCC, 0xBB, 0x49, 0x56, 0x8A, 0xFC, 0xB9, 0xD0, 0x61, + 0x9A, 0x6F, 0x65, 0x6C, 0xE6, 0xC3, 0xCB, 0x3E, 0x75, 0x49, 0xFE, 0x8F, + 0xA7, 0xE2, 0x89, 0xC5, 0x67, 0xD7, 0x9D, 0x46, 0x13, 0x4E, 0x31, 0x76, + 0x3B, 0x24, 0xB3, 0x9E, 0x11, 0x65, 0x86, 0xAB, 0x7F, 0xEF, 0x1D, 0xD4, + 0xF8, 0xBC, 0xE7, 0xAC, 0x5A, 0x5C, 0xB7, 0x5A, 0x47, 0x5C, 0x55, 0xCE, + 0x55, 0xB4, 0x22, 0x71, 0x5B, 0x5B, 0x0B, 0xF0, 0xCF, 0xDC, 0xA0, 0x61, + 0x64, 0xEA, 0xA9, 0xD7, 0x68, 0x0A, 0x63, 0xA7, 0xE0, 0x0D, 0x3F, 0xA0, + 0xAF, 0xD3, 0xAA, 0xD2, 0x7E, 0xEF, 0x51, 0xA0, 0xE6, 0x51, 0x2B, 0x55, + 0x92, 0x15, 0x17, 0x53, 0xCB, 0xB7, 0x66, 0x0E, 0x66, 0x4C, 0xF8, 0xF9, + 0x75, 0x4C, 0x90, 0xE7, 0x12, 0x70, 0xC7, 0x45 +}; + +static const unsigned char TA81_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA82_DN[] = { + 0x30, 0x81, 0x82, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x44, 0x45, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x0C, 0x22, 0x54, 0x2D, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, + 0x20, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x20, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x47, 0x6D, 0x62, + 0x48, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x16, + 0x54, 0x2D, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x43, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1C, 0x54, 0x2D, 0x54, + 0x65, 0x6C, 0x65, 0x53, 0x65, 0x63, 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, + 0x6C, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x20, + 0x32 +}; + +static const unsigned char TA82_RSA_N[] = { + 0xAA, 0x5F, 0xDA, 0x1B, 0x5F, 0xE8, 0x73, 0x91, 0xE5, 0xDA, 0x5C, 0xF4, + 0xA2, 0xE6, 0x47, 0xE5, 0xF3, 0x68, 0x55, 0x60, 0x05, 0x1D, 0x02, 0xA4, + 0xB3, 0x9B, 0x59, 0xF3, 0x1E, 0x8A, 0xAF, 0x34, 0xAD, 0xFC, 0x0D, 0xC2, + 0xD9, 0x48, 0x19, 0xEE, 0x69, 0x8F, 0xC9, 0x20, 0xFC, 0x21, 0xAA, 0x07, + 0x19, 0xED, 0xB0, 0x5C, 0xAC, 0x65, 0xC7, 0x5F, 0xED, 0x02, 0x7C, 0x7B, + 0x7C, 0x2D, 0x1B, 0xD6, 0xBA, 0xB9, 0x80, 0xC2, 0x18, 0x82, 0x16, 0x84, + 0xFA, 0x66, 0xB0, 0x08, 0xC6, 0x54, 0x23, 0x81, 0xE4, 0xCD, 0xB9, 0x49, + 0x3F, 0xF6, 0x4F, 0x6E, 0x37, 0x48, 0x28, 0x38, 0x0F, 0xC5, 0xBE, 0xE7, + 0x68, 0x70, 0xFD, 0x39, 0x97, 0x4D, 0xD2, 0xC7, 0x98, 0x91, 0x50, 0xAA, + 0xC4, 0x44, 0xB3, 0x23, 0x7D, 0x39, 0x47, 0xE9, 0x52, 0x62, 0xD6, 0x12, + 0x93, 0x5E, 0xB7, 0x31, 0x96, 0x42, 0x05, 0xFB, 0x76, 0xA7, 0x1E, 0xA3, + 0xF5, 0xC2, 0xFC, 0xE9, 0x7A, 0xC5, 0x6C, 0xA9, 0x71, 0x4F, 0xEA, 0xCB, + 0x78, 0xBC, 0x60, 0xAF, 0xC7, 0xDE, 0xF4, 0xD9, 0xCB, 0xBE, 0x7E, 0x33, + 0xA5, 0x6E, 0x94, 0x83, 0xF0, 0x34, 0xFA, 0x21, 0xAB, 0xEA, 0x8E, 0x72, + 0xA0, 0x3F, 0xA4, 0xDE, 0x30, 0x5B, 0xEF, 0x86, 0x4D, 0x6A, 0x95, 0x5B, + 0x43, 0x44, 0xA8, 0x10, 0x15, 0x1C, 0xE5, 0x01, 0x57, 0xC5, 0x98, 0xF1, + 0xE6, 0x06, 0x28, 0x91, 0xAA, 0x20, 0xC5, 0xB7, 0x53, 0x26, 0x51, 0x43, + 0xB2, 0x0B, 0x11, 0x95, 0x58, 0xE1, 0xC0, 0x0F, 0x76, 0xD9, 0xC0, 0x8D, + 0x7C, 0x81, 0xF3, 0x72, 0x70, 0x9E, 0x6F, 0xFE, 0x1A, 0x8E, 0xD9, 0x5F, + 0x35, 0xC6, 0xB2, 0x6F, 0x34, 0x7C, 0xBE, 0x48, 0x4F, 0xE2, 0x5A, 0x39, + 0xD7, 0xD8, 0x9D, 0x78, 0x9E, 0x9F, 0x86, 0x3E, 0x03, 0x5E, 0x19, 0x8B, + 0x44, 0xA2, 0xD5, 0xC7 +}; + +static const unsigned char TA82_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA83_DN[] = { + 0x30, 0x3C, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x15, 0x41, 0x74, 0x6F, 0x73, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, + 0x64, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x32, 0x30, 0x31, 0x31, 0x31, 0x0D, + 0x30, 0x0B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x04, 0x41, 0x74, 0x6F, + 0x73, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x44, 0x45 +}; + +static const unsigned char TA83_RSA_N[] = { + 0x95, 0x85, 0x3B, 0x97, 0x6F, 0x2A, 0x3B, 0x2E, 0x3B, 0xCF, 0xA6, 0xF3, + 0x29, 0x35, 0xBE, 0xCF, 0x18, 0xAC, 0x3E, 0xAA, 0xD9, 0xF8, 0x4D, 0xA0, + 0x3E, 0x1A, 0x47, 0xB9, 0xBC, 0x9A, 0xDF, 0xF2, 0xFE, 0xCC, 0x3E, 0x47, + 0xE8, 0x7A, 0x96, 0xC2, 0x24, 0x8E, 0x35, 0xF4, 0xA9, 0x0C, 0xFC, 0x82, + 0xFD, 0x6D, 0xC1, 0x72, 0x62, 0x27, 0xBD, 0xEA, 0x6B, 0xEB, 0xE7, 0x8A, + 0xCC, 0x54, 0x3E, 0x90, 0x50, 0xCF, 0x80, 0xD4, 0x95, 0xFB, 0xE8, 0xB5, + 0x82, 0xD4, 0x14, 0xC5, 0xB6, 0xA9, 0x55, 0x25, 0x57, 0xDB, 0xB1, 0x50, + 0xF6, 0xB0, 0x60, 0x64, 0x59, 0x7A, 0x69, 0xCF, 0x03, 0xB7, 0x6F, 0x0D, + 0xBE, 0xCA, 0x3E, 0x6F, 0x74, 0x72, 0xEA, 0xAA, 0x30, 0x2A, 0x73, 0x62, + 0xBE, 0x49, 0x91, 0x61, 0xC8, 0x11, 0xFE, 0x0E, 0x03, 0x2A, 0xF7, 0x6A, + 0x20, 0xDC, 0x02, 0x15, 0x0D, 0x5E, 0x15, 0x6A, 0xFC, 0xE3, 0x82, 0xC1, + 0xB5, 0xC5, 0x9D, 0x64, 0x09, 0x6C, 0xA3, 0x59, 0x98, 0x07, 0x27, 0xC7, + 0x1B, 0x96, 0x2B, 0x61, 0x74, 0x71, 0x6C, 0x43, 0xF1, 0xF7, 0x35, 0x89, + 0x10, 0xE0, 0x9E, 0xEC, 0x55, 0xA1, 0x37, 0x22, 0xA2, 0x87, 0x04, 0x05, + 0x2C, 0x47, 0x7D, 0xB4, 0x1C, 0xB9, 0x62, 0x29, 0x66, 0x28, 0xCA, 0xB7, + 0xE1, 0x93, 0xF5, 0xA4, 0x94, 0x03, 0x99, 0xB9, 0x70, 0x85, 0xB5, 0xE6, + 0x48, 0xEA, 0x8D, 0x50, 0xFC, 0xD9, 0xDE, 0xCC, 0x6F, 0x07, 0x0E, 0xDD, + 0x0B, 0x72, 0x9D, 0x80, 0x30, 0x16, 0x07, 0x95, 0x3F, 0x28, 0x0E, 0xFD, + 0xC5, 0x75, 0x4F, 0x53, 0xD6, 0x74, 0x9A, 0xB4, 0x24, 0x2E, 0x8E, 0x02, + 0x91, 0xCF, 0x76, 0xC5, 0x9B, 0x1E, 0x55, 0x74, 0x9C, 0x78, 0x21, 0xB1, + 0xF0, 0x2D, 0xF1, 0x0B, 0x9F, 0xC2, 0xD5, 0x96, 0x18, 0x1F, 0xF0, 0x54, + 0x22, 0x7A, 0x8C, 0x07 +}; + +static const unsigned char TA83_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA84_DN[] = { + 0x30, 0x48, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x4D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x15, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, + 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x20, + 0x47, 0x33 +}; + +static const unsigned char TA84_RSA_N[] = { + 0xA0, 0xBE, 0x50, 0x10, 0x8E, 0xE9, 0xF2, 0x6C, 0x40, 0xB4, 0x04, 0x9C, + 0x85, 0xB9, 0x31, 0xCA, 0xDC, 0x2D, 0xE4, 0x11, 0xA9, 0x04, 0x3C, 0x1B, + 0x55, 0xC1, 0xE7, 0x58, 0x30, 0x1D, 0x24, 0xB4, 0xC3, 0xEF, 0x85, 0xDE, + 0x8C, 0x2C, 0xE1, 0xC1, 0x3D, 0xDF, 0x82, 0xE6, 0x4F, 0xAD, 0x47, 0x87, + 0x6C, 0xEC, 0x5B, 0x49, 0xC1, 0x4A, 0xD5, 0xBB, 0x8F, 0xEC, 0x87, 0xAC, + 0x7F, 0x82, 0x9A, 0x86, 0xEC, 0x3D, 0x03, 0x99, 0x52, 0x01, 0xD2, 0x35, + 0x9E, 0xAC, 0xDA, 0xF0, 0x53, 0xC9, 0x66, 0x3C, 0xD4, 0xAC, 0x02, 0x01, + 0xDA, 0x24, 0xD3, 0x3B, 0xA8, 0x02, 0x46, 0xAF, 0xA4, 0x1C, 0xE3, 0xF8, + 0x73, 0x58, 0x76, 0xB7, 0xF6, 0x0E, 0x90, 0x0D, 0xB5, 0xF0, 0xCF, 0xCC, + 0xFA, 0xF9, 0xC6, 0x4C, 0xE5, 0xC3, 0x86, 0x30, 0x0A, 0x8D, 0x17, 0x7E, + 0x35, 0xEB, 0xC5, 0xDF, 0xBB, 0x0E, 0x9C, 0xC0, 0x8D, 0x87, 0xE3, 0x88, + 0x38, 0x85, 0x67, 0xFA, 0x3E, 0xC7, 0xAB, 0xE0, 0x13, 0x9C, 0x05, 0x18, + 0x98, 0xCF, 0x93, 0xF5, 0xB1, 0x92, 0xB4, 0xFC, 0x23, 0xD3, 0xCF, 0xD5, + 0xC4, 0x27, 0x49, 0xE0, 0x9E, 0x3C, 0x9B, 0x08, 0xA3, 0x8B, 0x5D, 0x2A, + 0x21, 0xE0, 0xFC, 0x39, 0xAA, 0x53, 0xDA, 0x7D, 0x7E, 0xCF, 0x1A, 0x09, + 0x53, 0xBC, 0x5D, 0x05, 0x04, 0xCF, 0xA1, 0x4A, 0x8F, 0x8B, 0x76, 0x82, + 0x0D, 0xA1, 0xF8, 0xD2, 0xC7, 0x14, 0x77, 0x5B, 0x90, 0x36, 0x07, 0x81, + 0x9B, 0x3E, 0x06, 0xFA, 0x52, 0x5E, 0x63, 0xC5, 0xA6, 0x00, 0xFE, 0xA5, + 0xE9, 0x52, 0x1B, 0x52, 0xB5, 0x92, 0x39, 0x72, 0x03, 0x09, 0x62, 0xBD, + 0xB0, 0x60, 0x16, 0x6E, 0xA6, 0xDD, 0x25, 0xC2, 0x03, 0x66, 0xDD, 0xF3, + 0x04, 0xD1, 0x40, 0xE2, 0x4E, 0x8B, 0x86, 0xF4, 0x6F, 0xE5, 0x83, 0xA0, + 0x27, 0x84, 0x5E, 0x04, 0xC1, 0xF5, 0x90, 0xBD, 0x30, 0x3D, 0xC4, 0xEF, + 0xA8, 0x69, 0xBC, 0x38, 0x9B, 0xA4, 0xA4, 0x96, 0xD1, 0x62, 0xDA, 0x69, + 0xC0, 0x01, 0x96, 0xAE, 0xCB, 0xC4, 0x51, 0x34, 0xEA, 0x0C, 0xAA, 0xFF, + 0x21, 0x8E, 0x59, 0x8F, 0x4A, 0x5C, 0xE4, 0x61, 0x9A, 0xA7, 0xD2, 0xE9, + 0x2A, 0x78, 0x8D, 0x51, 0x3D, 0x3A, 0x15, 0xEE, 0xA2, 0x59, 0x8E, 0xA9, + 0x5C, 0xDE, 0xC5, 0xF9, 0x90, 0x22, 0xE5, 0x88, 0x45, 0x71, 0xDD, 0x91, + 0x99, 0x6C, 0x7A, 0x9F, 0x3D, 0x3D, 0x98, 0x7C, 0x5E, 0xF6, 0xBE, 0x16, + 0x68, 0xA0, 0x5E, 0xAE, 0x0B, 0x23, 0xFC, 0x5A, 0x0F, 0xAA, 0x22, 0x76, + 0x2D, 0xC9, 0xA1, 0x10, 0x1D, 0xE4, 0xD3, 0x44, 0x23, 0x90, 0x88, 0x9F, + 0xC6, 0x2A, 0xE6, 0xD7, 0xF5, 0x9A, 0xB3, 0x58, 0x1E, 0x2F, 0x30, 0x89, + 0x08, 0x1B, 0x54, 0xA2, 0xB5, 0x98, 0x23, 0xEC, 0x08, 0x77, 0x1C, 0x95, + 0x5D, 0x61, 0xD1, 0xCB, 0x89, 0x9C, 0x5F, 0xA2, 0x4A, 0x91, 0x9A, 0xEF, + 0x21, 0xAA, 0x49, 0x16, 0x08, 0xA8, 0xBD, 0x61, 0x28, 0x31, 0xC9, 0x74, + 0xAD, 0x85, 0xF6, 0xD9, 0xC5, 0xB1, 0x8B, 0xD1, 0xE5, 0x10, 0x32, 0x4D, + 0x5F, 0x8B, 0x20, 0x3A, 0x3C, 0x49, 0x1F, 0x33, 0x85, 0x59, 0x0D, 0xDB, + 0xCB, 0x09, 0x75, 0x43, 0x69, 0x73, 0xFB, 0x6B, 0x71, 0x7D, 0xF0, 0xDF, + 0xC4, 0x4C, 0x7D, 0xC6, 0xA3, 0x2E, 0xC8, 0x95, 0x79, 0xCB, 0x73, 0xA2, + 0x8E, 0x4E, 0x4D, 0x24, 0xFB, 0x5E, 0xE4, 0x04, 0xBE, 0x72, 0x1B, 0xA6, + 0x27, 0x2D, 0x49, 0x5A, 0x99, 0x7A, 0xD7, 0x5C, 0x09, 0x20, 0xB7, 0x7F, + 0x94, 0xB9, 0x4F, 0xF1, 0x0D, 0x1C, 0x5E, 0x88, 0x42, 0x1B, 0x11, 0xB7, + 0xE7, 0x91, 0xDB, 0x9E, 0x6C, 0xF4, 0x6A, 0xDF, 0x8C, 0x06, 0x98, 0x03, + 0xAD, 0xCC, 0x28, 0xEF, 0xA5, 0x47, 0xF3, 0x53 +}; + +static const unsigned char TA84_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA85_DN[] = { + 0x30, 0x48, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x4D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x15, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, + 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x20, + 0x47, 0x33 +}; + +static const unsigned char TA85_RSA_N[] = { + 0xA1, 0xAE, 0x25, 0xB2, 0x01, 0x18, 0xDC, 0x57, 0x88, 0x3F, 0x46, 0xEB, + 0xF9, 0xAF, 0xE2, 0xEB, 0x23, 0x71, 0xE2, 0x9A, 0xD1, 0x61, 0x66, 0x21, + 0x5F, 0xAA, 0xAF, 0x27, 0x51, 0xE5, 0x6E, 0x1B, 0x16, 0xD4, 0x2D, 0x7D, + 0x50, 0xB0, 0x53, 0x77, 0xBD, 0x78, 0x3A, 0x60, 0xE2, 0x64, 0x02, 0x9B, + 0x7C, 0x86, 0x9B, 0xD6, 0x1A, 0x8E, 0xAD, 0xFF, 0x1F, 0x15, 0x7F, 0xD5, + 0x95, 0x1E, 0x12, 0xCB, 0xE6, 0x14, 0x84, 0x04, 0xC1, 0xDF, 0x36, 0xB3, + 0x16, 0x9F, 0x8A, 0xE3, 0xC9, 0xDB, 0x98, 0x34, 0xCE, 0xD8, 0x33, 0x17, + 0x28, 0x46, 0xFC, 0xA7, 0xC9, 0xF0, 0xD2, 0xB4, 0xD5, 0x4D, 0x09, 0x72, + 0x49, 0xF9, 0xF2, 0x87, 0xE3, 0xA9, 0xDA, 0x7D, 0xA1, 0x7D, 0x6B, 0xB2, + 0x3A, 0x25, 0xA9, 0x6D, 0x52, 0x44, 0xAC, 0xF8, 0xBE, 0x6E, 0xFB, 0xDC, + 0xA6, 0x73, 0x91, 0x90, 0x61, 0xA6, 0x03, 0x14, 0x20, 0xF2, 0xE7, 0x87, + 0xA3, 0x88, 0xAD, 0xAD, 0xA0, 0x8C, 0xFF, 0xA6, 0x0B, 0x25, 0x52, 0x25, + 0xE7, 0x16, 0x01, 0xD5, 0xCB, 0xB8, 0x35, 0x81, 0x0C, 0xA3, 0x3B, 0xF0, + 0xE1, 0xE1, 0xFC, 0x5A, 0x5D, 0xCE, 0x80, 0x71, 0x6D, 0xF8, 0x49, 0xAB, + 0x3E, 0x3B, 0xBA, 0xB8, 0xD7, 0x80, 0x01, 0xFB, 0xA5, 0xEB, 0x5B, 0xB3, + 0xC5, 0x5E, 0x60, 0x2A, 0x31, 0xA0, 0xAF, 0x37, 0xE8, 0x20, 0x3A, 0x9F, + 0xA8, 0x32, 0x2C, 0x0C, 0xCC, 0x09, 0x1D, 0xD3, 0x9E, 0x8E, 0x5D, 0xBC, + 0x4C, 0x98, 0xEE, 0xC5, 0x1A, 0x68, 0x7B, 0xEC, 0x53, 0xA6, 0xE9, 0x14, + 0x35, 0xA3, 0xDF, 0xCD, 0x80, 0x9F, 0x0C, 0x48, 0xFB, 0x1C, 0xF4, 0xF1, + 0xBF, 0x4A, 0xB8, 0xFA, 0xD5, 0x8C, 0x71, 0x4A, 0xC7, 0x1F, 0xAD, 0xFE, + 0x41, 0x9A, 0xB3, 0x83, 0x5D, 0xF2, 0x84, 0x56, 0xEF, 0xA5, 0x57, 0x43, + 0xCE, 0x29, 0xAD, 0x8C, 0xAB, 0x55, 0xBF, 0xC4, 0xFB, 0x5B, 0x01, 0xDD, + 0x23, 0x21, 0xA1, 0x58, 0x00, 0x8E, 0xC3, 0xD0, 0x6A, 0x13, 0xED, 0x13, + 0xE3, 0x12, 0x2B, 0x80, 0xDC, 0x67, 0xE6, 0x95, 0xB2, 0xCD, 0x1E, 0x22, + 0x6E, 0x2A, 0xF8, 0x41, 0xD4, 0xF2, 0xCA, 0x14, 0x07, 0x8D, 0x8A, 0x55, + 0x12, 0xC6, 0x69, 0xF5, 0xB8, 0x86, 0x68, 0x2F, 0x53, 0x5E, 0xB0, 0xD2, + 0xAA, 0x21, 0xC1, 0x98, 0xE6, 0x30, 0xE3, 0x67, 0x55, 0xC7, 0x9B, 0x6E, + 0xAC, 0x19, 0xA8, 0x55, 0xA6, 0x45, 0x06, 0xD0, 0x23, 0x3A, 0xDB, 0xEB, + 0x65, 0x5D, 0x2A, 0x11, 0x11, 0xF0, 0x3B, 0x4F, 0xCA, 0x6D, 0xF4, 0x34, + 0xC4, 0x71, 0xE4, 0xFF, 0x00, 0x5A, 0xF6, 0x5C, 0xAE, 0x23, 0x60, 0x85, + 0x73, 0xF1, 0xE4, 0x10, 0xB1, 0x25, 0xAE, 0xD5, 0x92, 0xBB, 0x13, 0xC1, + 0x0C, 0xE0, 0x39, 0xDA, 0xB4, 0x39, 0x57, 0xB5, 0xAB, 0x35, 0xAA, 0x72, + 0x21, 0x3B, 0x83, 0x35, 0xE7, 0x31, 0xDF, 0x7A, 0x21, 0x6E, 0xB8, 0x32, + 0x08, 0x7D, 0x1D, 0x32, 0x91, 0x15, 0x4A, 0x62, 0x72, 0xCF, 0xE3, 0x77, + 0xA1, 0xBC, 0xD5, 0x11, 0x1B, 0x76, 0x01, 0x67, 0x08, 0xE0, 0x41, 0x0B, + 0xC3, 0xEB, 0x15, 0x6E, 0xF8, 0xA4, 0x19, 0xD9, 0xA2, 0xAB, 0xAF, 0xE2, + 0x27, 0x52, 0x56, 0x2B, 0x02, 0x8A, 0x2C, 0x14, 0x24, 0xF9, 0xBF, 0x42, + 0x02, 0xBF, 0x26, 0xC8, 0xC6, 0x8F, 0xE0, 0x6E, 0x38, 0x7D, 0x53, 0x2D, + 0xE5, 0xED, 0x98, 0xB3, 0x95, 0x63, 0x68, 0x7F, 0xF9, 0x35, 0xF4, 0xDF, + 0x88, 0xC5, 0x60, 0x35, 0x92, 0xC0, 0x7C, 0x69, 0x1C, 0x61, 0x95, 0x16, + 0xD0, 0xEB, 0xDE, 0x0B, 0xAF, 0x3E, 0x04, 0x10, 0x45, 0x65, 0x58, 0x50, + 0x38, 0xAF, 0x48, 0xF2, 0x59, 0xB6, 0x16, 0xF2, 0x3C, 0x0D, 0x90, 0x02, + 0xC6, 0x70, 0x2E, 0x01, 0xAD, 0x3C, 0x15, 0xD7 +}; + +static const unsigned char TA85_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA86_DN[] = { + 0x30, 0x48, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x42, 0x4D, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x10, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, 0x73, 0x20, 0x4C, + 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, + 0x55, 0x04, 0x03, 0x13, 0x15, 0x51, 0x75, 0x6F, 0x56, 0x61, 0x64, 0x69, + 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33, 0x20, + 0x47, 0x33 +}; + +static const unsigned char TA86_RSA_N[] = { + 0xB3, 0xCB, 0x0E, 0x10, 0x67, 0x8E, 0xEA, 0x14, 0x97, 0xA7, 0x32, 0x2A, + 0x0A, 0x56, 0x36, 0x7F, 0x68, 0x4C, 0xC7, 0xB3, 0x6F, 0x3A, 0x23, 0x14, + 0x91, 0xFF, 0x19, 0x7F, 0xA5, 0xCA, 0xAC, 0xEE, 0xB3, 0x76, 0x9D, 0x7A, + 0xE9, 0x8B, 0x1B, 0xAB, 0x6B, 0x31, 0xDB, 0xFA, 0x0B, 0x53, 0x4C, 0xAF, + 0xC5, 0xA5, 0x1A, 0x79, 0x3C, 0x8A, 0x4C, 0xFF, 0xAC, 0xDF, 0x25, 0xDE, + 0x4E, 0xD9, 0x82, 0x32, 0x0B, 0x44, 0xDE, 0xCA, 0xDB, 0x8C, 0xAC, 0xA3, + 0x6E, 0x16, 0x83, 0x3B, 0xA6, 0x64, 0x4B, 0x32, 0x89, 0xFB, 0x16, 0x16, + 0x38, 0x7E, 0xEB, 0x43, 0xE2, 0xD3, 0x74, 0x4A, 0xC2, 0x62, 0x0A, 0x73, + 0x0A, 0xDD, 0x49, 0xB3, 0x57, 0xD2, 0xB0, 0x0A, 0x85, 0x9D, 0x71, 0x3C, + 0xDE, 0xA3, 0xCB, 0xC0, 0x32, 0xF3, 0x01, 0x39, 0x20, 0x43, 0x1B, 0x35, + 0xD1, 0x53, 0xB3, 0xB1, 0xEE, 0xC5, 0x93, 0x69, 0x82, 0x3E, 0x16, 0xB5, + 0x28, 0x46, 0xA1, 0xDE, 0xEA, 0x89, 0x09, 0xED, 0x43, 0xB8, 0x05, 0x46, + 0x8A, 0x86, 0xF5, 0x59, 0x47, 0xBE, 0x1B, 0x6F, 0x01, 0x21, 0x10, 0xB9, + 0xFD, 0xA9, 0xD2, 0x28, 0xCA, 0x10, 0x39, 0x09, 0xCA, 0x13, 0x36, 0xCF, + 0x9C, 0xAD, 0xAD, 0x40, 0x74, 0x79, 0x2B, 0x02, 0x3F, 0x34, 0xFF, 0xFA, + 0x20, 0x69, 0x7D, 0xD3, 0xEE, 0x61, 0xF5, 0xBA, 0xB3, 0xE7, 0x30, 0xD0, + 0x37, 0x23, 0x86, 0x72, 0x61, 0x45, 0x29, 0x48, 0x59, 0x68, 0x6F, 0x77, + 0xA6, 0x2E, 0x81, 0xBE, 0x07, 0x4D, 0x6F, 0xAF, 0xCE, 0xC4, 0x45, 0x13, + 0x91, 0x14, 0x70, 0x06, 0x8F, 0x1F, 0x9F, 0xF8, 0x87, 0x69, 0xB1, 0x0E, + 0xEF, 0xC3, 0x89, 0x19, 0xEB, 0xEA, 0x1C, 0x61, 0xFC, 0x7A, 0x6C, 0x8A, + 0xDC, 0xD6, 0x03, 0x0B, 0x9E, 0x26, 0xBA, 0x12, 0xDD, 0xD4, 0x54, 0x39, + 0xAB, 0x26, 0xA3, 0x33, 0xEA, 0x75, 0x81, 0xDA, 0x2D, 0xCD, 0x0F, 0x4F, + 0xE4, 0x03, 0xD1, 0xEF, 0x15, 0x97, 0x1B, 0x6B, 0x90, 0xC5, 0x02, 0x90, + 0x93, 0x66, 0x02, 0x21, 0xB1, 0x47, 0xDE, 0x8B, 0x9A, 0x4A, 0x80, 0xB9, + 0x55, 0x8F, 0xB5, 0xA2, 0x2F, 0xC0, 0xD6, 0x33, 0x67, 0xDA, 0x7E, 0xC4, + 0xA7, 0xB4, 0x04, 0x44, 0xEB, 0x47, 0xFB, 0xE6, 0x58, 0xB9, 0xF7, 0x0C, + 0xF0, 0x7B, 0x2B, 0xB1, 0xC0, 0x70, 0x29, 0xC3, 0x40, 0x62, 0x2D, 0x3B, + 0x48, 0x69, 0xDC, 0x23, 0x3C, 0x48, 0xEB, 0x7B, 0x09, 0x79, 0xA9, 0x6D, + 0xDA, 0xA8, 0x30, 0x98, 0xCF, 0x80, 0x72, 0x03, 0x88, 0xA6, 0x5B, 0x46, + 0xAE, 0x72, 0x79, 0x7C, 0x08, 0x03, 0x21, 0x65, 0xAE, 0xB7, 0xE1, 0x1C, + 0xA5, 0xB1, 0x2A, 0xA2, 0x31, 0xDE, 0x66, 0x04, 0xF7, 0xC0, 0x74, 0xE8, + 0x71, 0xDE, 0xFF, 0x3D, 0x59, 0xCC, 0x96, 0x26, 0x12, 0x8B, 0x85, 0x95, + 0x57, 0x1A, 0xAB, 0x6B, 0x75, 0x0B, 0x44, 0x3D, 0x11, 0x28, 0x3C, 0x7B, + 0x61, 0xB7, 0xE2, 0x8F, 0x67, 0x4F, 0xE5, 0xEC, 0x3C, 0x4C, 0x60, 0x80, + 0x69, 0x57, 0x38, 0x1E, 0x01, 0x5B, 0x8D, 0x55, 0xE8, 0xC7, 0xDF, 0xC0, + 0xCC, 0x77, 0x23, 0x34, 0x49, 0x75, 0x7C, 0xF6, 0x98, 0x11, 0xEB, 0x2D, + 0xDE, 0xED, 0x41, 0x2E, 0x14, 0x05, 0x02, 0x7F, 0xE0, 0xFE, 0x20, 0xEB, + 0x35, 0xE7, 0x11, 0xAC, 0x22, 0xCE, 0x57, 0x3D, 0xDE, 0xC9, 0x30, 0x6D, + 0x10, 0x03, 0x85, 0xCD, 0xF1, 0xFF, 0x8C, 0x16, 0xB5, 0xC1, 0xB2, 0x3E, + 0x88, 0x6C, 0x60, 0x7F, 0x90, 0x4F, 0x95, 0xF7, 0xF6, 0x2D, 0xAD, 0x01, + 0x39, 0x07, 0x04, 0xFA, 0x75, 0x80, 0x7D, 0xBF, 0x49, 0x50, 0xED, 0xEF, + 0xC9, 0xC4, 0x7C, 0x1C, 0xEB, 0x80, 0x7E, 0xDB, 0xB6, 0xD0, 0xDD, 0x13, + 0xFE, 0xC9, 0xD3, 0x9C, 0xD7, 0xB2, 0x97, 0xA9 +}; + +static const unsigned char TA86_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA87_DN[] = { + 0x30, 0x65, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1B, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, + 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x47, 0x32 +}; + +static const unsigned char TA87_RSA_N[] = { + 0xD9, 0xE7, 0x28, 0x2F, 0x52, 0x3F, 0x36, 0x72, 0x49, 0x88, 0x93, 0x34, + 0xF3, 0xF8, 0x6A, 0x1E, 0x31, 0x54, 0x80, 0x9F, 0xAD, 0x54, 0x41, 0xB5, + 0x47, 0xDF, 0x96, 0xA8, 0xD4, 0xAF, 0x80, 0x2D, 0xB9, 0x0A, 0xCF, 0x75, + 0xFD, 0x89, 0xA5, 0x7D, 0x24, 0xFA, 0xE3, 0x22, 0x0C, 0x2B, 0xBC, 0x95, + 0x17, 0x0B, 0x33, 0xBF, 0x19, 0x4D, 0x41, 0x06, 0x90, 0x00, 0xBD, 0x0C, + 0x4D, 0x10, 0xFE, 0x07, 0xB5, 0xE7, 0x1C, 0x6E, 0x22, 0x55, 0x31, 0x65, + 0x97, 0xBD, 0xD3, 0x17, 0xD2, 0x1E, 0x62, 0xF3, 0xDB, 0xEA, 0x6C, 0x50, + 0x8C, 0x3F, 0x84, 0x0C, 0x96, 0xCF, 0xB7, 0xCB, 0x03, 0xE0, 0xCA, 0x6D, + 0xA1, 0x14, 0x4C, 0x1B, 0x89, 0xDD, 0xED, 0x00, 0xB0, 0x52, 0x7C, 0xAF, + 0x91, 0x6C, 0xB1, 0x38, 0x13, 0xD1, 0xE9, 0x12, 0x08, 0xC0, 0x00, 0xB0, + 0x1C, 0x2B, 0x11, 0xDA, 0x77, 0x70, 0x36, 0x9B, 0xAE, 0xCE, 0x79, 0x87, + 0xDC, 0x82, 0x70, 0xE6, 0x09, 0x74, 0x70, 0x55, 0x69, 0xAF, 0xA3, 0x68, + 0x9F, 0xBF, 0xDD, 0xB6, 0x79, 0xB3, 0xF2, 0x9D, 0x70, 0x29, 0x55, 0xF4, + 0xAB, 0xFF, 0x95, 0x61, 0xF3, 0xC9, 0x40, 0x6F, 0x1D, 0xD1, 0xBE, 0x93, + 0xBB, 0xD3, 0x88, 0x2A, 0xBB, 0x9D, 0xBF, 0x72, 0x5A, 0x56, 0x71, 0x3B, + 0x3F, 0xD4, 0xF3, 0xD1, 0x0A, 0xFE, 0x28, 0xEF, 0xA3, 0xEE, 0xD9, 0x99, + 0xAF, 0x03, 0xD3, 0x8F, 0x60, 0xB7, 0xF2, 0x92, 0xA1, 0xB1, 0xBD, 0x89, + 0x89, 0x1F, 0x30, 0xCD, 0xC3, 0xA6, 0x2E, 0x62, 0x33, 0xAE, 0x16, 0x02, + 0x77, 0x44, 0x5A, 0xE7, 0x81, 0x0A, 0x3C, 0xA7, 0x44, 0x2E, 0x79, 0xB8, + 0x3F, 0x04, 0xBC, 0x5C, 0xA0, 0x87, 0xE1, 0x1B, 0xAF, 0x51, 0x8E, 0xCD, + 0xEC, 0x2C, 0xFA, 0xF8, 0xFE, 0x6D, 0xF0, 0x3A, 0x7C, 0xAA, 0x8B, 0xE4, + 0x67, 0x95, 0x31, 0x8D +}; + +static const unsigned char TA87_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA88_DN[] = { + 0x30, 0x65, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x1B, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, + 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x47, 0x33 +}; + +static const unsigned char TA88_EC_Q[] = { + 0x04, 0x19, 0xE7, 0xBC, 0xAC, 0x44, 0x65, 0xED, 0xCD, 0xB8, 0x3F, 0x58, + 0xFB, 0x8D, 0xB1, 0x57, 0xA9, 0x44, 0x2D, 0x05, 0x15, 0xF2, 0xEF, 0x0B, + 0xFF, 0x10, 0x74, 0x9F, 0xB5, 0x62, 0x52, 0x5F, 0x66, 0x7E, 0x1F, 0xE5, + 0xDC, 0x1B, 0x45, 0x79, 0x0B, 0xCC, 0xC6, 0x53, 0x0A, 0x9D, 0x8D, 0x5D, + 0x02, 0xD9, 0xA9, 0x59, 0xDE, 0x02, 0x5A, 0xF6, 0x95, 0x2A, 0x0E, 0x8D, + 0x38, 0x4A, 0x8A, 0x49, 0xC6, 0xBC, 0xC6, 0x03, 0x38, 0x07, 0x5F, 0x55, + 0xDA, 0x7E, 0x09, 0x6E, 0xE2, 0x7F, 0x5E, 0xD0, 0x45, 0x20, 0x0F, 0x59, + 0x76, 0x10, 0xD6, 0xA0, 0x24, 0xF0, 0x2D, 0xDE, 0x36, 0xF2, 0x6C, 0x29, + 0x39 +}; + +static const unsigned char TA89_DN[] = { + 0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x47, 0x32 +}; + +static const unsigned char TA89_RSA_N[] = { + 0xBB, 0x37, 0xCD, 0x34, 0xDC, 0x7B, 0x6B, 0xC9, 0xB2, 0x68, 0x90, 0xAD, + 0x4A, 0x75, 0xFF, 0x46, 0xBA, 0x21, 0x0A, 0x08, 0x8D, 0xF5, 0x19, 0x54, + 0xC9, 0xFB, 0x88, 0xDB, 0xF3, 0xAE, 0xF2, 0x3A, 0x89, 0x91, 0x3C, 0x7A, + 0xE6, 0xAB, 0x06, 0x1A, 0x6B, 0xCF, 0xAC, 0x2D, 0xE8, 0x5E, 0x09, 0x24, + 0x44, 0xBA, 0x62, 0x9A, 0x7E, 0xD6, 0xA3, 0xA8, 0x7E, 0xE0, 0x54, 0x75, + 0x20, 0x05, 0xAC, 0x50, 0xB7, 0x9C, 0x63, 0x1A, 0x6C, 0x30, 0xDC, 0xDA, + 0x1F, 0x19, 0xB1, 0xD7, 0x1E, 0xDE, 0xFD, 0xD7, 0xE0, 0xCB, 0x94, 0x83, + 0x37, 0xAE, 0xEC, 0x1F, 0x43, 0x4E, 0xDD, 0x7B, 0x2C, 0xD2, 0xBD, 0x2E, + 0xA5, 0x2F, 0xE4, 0xA9, 0xB8, 0xAD, 0x3A, 0xD4, 0x99, 0xA4, 0xB6, 0x25, + 0xE9, 0x9B, 0x6B, 0x00, 0x60, 0x92, 0x60, 0xFF, 0x4F, 0x21, 0x49, 0x18, + 0xF7, 0x67, 0x90, 0xAB, 0x61, 0x06, 0x9C, 0x8F, 0xF2, 0xBA, 0xE9, 0xB4, + 0xE9, 0x92, 0x32, 0x6B, 0xB5, 0xF3, 0x57, 0xE8, 0x5D, 0x1B, 0xCD, 0x8C, + 0x1D, 0xAB, 0x95, 0x04, 0x95, 0x49, 0xF3, 0x35, 0x2D, 0x96, 0xE3, 0x49, + 0x6D, 0xDD, 0x77, 0xE3, 0xFB, 0x49, 0x4B, 0xB4, 0xAC, 0x55, 0x07, 0xA9, + 0x8F, 0x95, 0xB3, 0xB4, 0x23, 0xBB, 0x4C, 0x6D, 0x45, 0xF0, 0xF6, 0xA9, + 0xB2, 0x95, 0x30, 0xB4, 0xFD, 0x4C, 0x55, 0x8C, 0x27, 0x4A, 0x57, 0x14, + 0x7C, 0x82, 0x9D, 0xCD, 0x73, 0x92, 0xD3, 0x16, 0x4A, 0x06, 0x0C, 0x8C, + 0x50, 0xD1, 0x8F, 0x1E, 0x09, 0xBE, 0x17, 0xA1, 0xE6, 0x21, 0xCA, 0xFD, + 0x83, 0xE5, 0x10, 0xBC, 0x83, 0xA5, 0x0A, 0xC4, 0x67, 0x28, 0xF6, 0x73, + 0x14, 0x14, 0x3D, 0x46, 0x76, 0xC3, 0x87, 0x14, 0x89, 0x21, 0x34, 0x4D, + 0xAF, 0x0F, 0x45, 0x0C, 0xA6, 0x49, 0xA1, 0xBA, 0xBB, 0x9C, 0xC5, 0xB1, + 0x33, 0x83, 0x29, 0x85 +}; + +static const unsigned char TA89_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA90_DN[] = { + 0x30, 0x61, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x47, 0x33 +}; + +static const unsigned char TA90_EC_Q[] = { + 0x04, 0xDD, 0xA7, 0xD9, 0xBB, 0x8A, 0xB8, 0x0B, 0xFB, 0x0B, 0x7F, 0x21, + 0xD2, 0xF0, 0xBE, 0xBE, 0x73, 0xF3, 0x33, 0x5D, 0x1A, 0xBC, 0x34, 0xEA, + 0xDE, 0xC6, 0x9B, 0xBC, 0xD0, 0x95, 0xF6, 0xF0, 0xCC, 0xD0, 0x0B, 0xBA, + 0x61, 0x5B, 0x51, 0x46, 0x7E, 0x9E, 0x2D, 0x9F, 0xEE, 0x8E, 0x63, 0x0C, + 0x17, 0xEC, 0x07, 0x70, 0xF5, 0xCF, 0x84, 0x2E, 0x40, 0x83, 0x9C, 0xE8, + 0x3F, 0x41, 0x6D, 0x3B, 0xAD, 0xD3, 0xA4, 0x14, 0x59, 0x36, 0x78, 0x9D, + 0x03, 0x43, 0xEE, 0x10, 0x13, 0x6C, 0x72, 0xDE, 0xAE, 0x88, 0xA7, 0xA1, + 0x6B, 0xB5, 0x43, 0xCE, 0x67, 0xDC, 0x23, 0xFF, 0x03, 0x1C, 0xA3, 0xE2, + 0x3E +}; + +static const unsigned char TA91_DN[] = { + 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x13, 0x18, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x47, 0x34 +}; + +static const unsigned char TA91_RSA_N[] = { + 0xBF, 0xE6, 0x90, 0x73, 0x68, 0xDE, 0xBB, 0xE4, 0x5D, 0x4A, 0x3C, 0x30, + 0x22, 0x30, 0x69, 0x33, 0xEC, 0xC2, 0xA7, 0x25, 0x2E, 0xC9, 0x21, 0x3D, + 0xF2, 0x8A, 0xD8, 0x59, 0xC2, 0xE1, 0x29, 0xA7, 0x3D, 0x58, 0xAB, 0x76, + 0x9A, 0xCD, 0xAE, 0x7B, 0x1B, 0x84, 0x0D, 0xC4, 0x30, 0x1F, 0xF3, 0x1B, + 0xA4, 0x38, 0x16, 0xEB, 0x56, 0xC6, 0x97, 0x6D, 0x1D, 0xAB, 0xB2, 0x79, + 0xF2, 0xCA, 0x11, 0xD2, 0xE4, 0x5F, 0xD6, 0x05, 0x3C, 0x52, 0x0F, 0x52, + 0x1F, 0xC6, 0x9E, 0x15, 0xA5, 0x7E, 0xBE, 0x9F, 0xA9, 0x57, 0x16, 0x59, + 0x55, 0x72, 0xAF, 0x68, 0x93, 0x70, 0xC2, 0xB2, 0xBA, 0x75, 0x99, 0x6A, + 0x73, 0x32, 0x94, 0xD1, 0x10, 0x44, 0x10, 0x2E, 0xDF, 0x82, 0xF3, 0x07, + 0x84, 0xE6, 0x74, 0x3B, 0x6D, 0x71, 0xE2, 0x2D, 0x0C, 0x1B, 0xEE, 0x20, + 0xD5, 0xC9, 0x20, 0x1D, 0x63, 0x29, 0x2D, 0xCE, 0xEC, 0x5E, 0x4E, 0xC8, + 0x93, 0xF8, 0x21, 0x61, 0x9B, 0x34, 0xEB, 0x05, 0xC6, 0x5E, 0xEC, 0x5B, + 0x1A, 0xBC, 0xEB, 0xC9, 0xCF, 0xCD, 0xAC, 0x34, 0x40, 0x5F, 0xB1, 0x7A, + 0x66, 0xEE, 0x77, 0xC8, 0x48, 0xA8, 0x66, 0x57, 0x57, 0x9F, 0x54, 0x58, + 0x8E, 0x0C, 0x2B, 0xB7, 0x4F, 0xA7, 0x30, 0xD9, 0x56, 0xEE, 0xCA, 0x7B, + 0x5D, 0xE3, 0xAD, 0xC9, 0x4F, 0x5E, 0xE5, 0x35, 0xE7, 0x31, 0xCB, 0xDA, + 0x93, 0x5E, 0xDC, 0x8E, 0x8F, 0x80, 0xDA, 0xB6, 0x91, 0x98, 0x40, 0x90, + 0x79, 0xC3, 0x78, 0xC7, 0xB6, 0xB1, 0xC4, 0xB5, 0x6A, 0x18, 0x38, 0x03, + 0x10, 0x8D, 0xD8, 0xD4, 0x37, 0xA4, 0x2E, 0x05, 0x7D, 0x88, 0xF5, 0x82, + 0x3E, 0x10, 0x91, 0x70, 0xAB, 0x55, 0x82, 0x41, 0x32, 0xD7, 0xDB, 0x04, + 0x73, 0x2A, 0x6E, 0x91, 0x01, 0x7C, 0x21, 0x4C, 0xD4, 0xBC, 0xAE, 0x1B, + 0x03, 0x75, 0x5D, 0x78, 0x66, 0xD9, 0x3A, 0x31, 0x44, 0x9A, 0x33, 0x40, + 0xBF, 0x08, 0xD7, 0x5A, 0x49, 0xA4, 0xC2, 0xE6, 0xA9, 0xA0, 0x67, 0xDD, + 0xA4, 0x27, 0xBC, 0xA1, 0x4F, 0x39, 0xB5, 0x11, 0x58, 0x17, 0xF7, 0x24, + 0x5C, 0x46, 0x8F, 0x64, 0xF7, 0xC1, 0x69, 0x88, 0x76, 0x98, 0x76, 0x3D, + 0x59, 0x5D, 0x42, 0x76, 0x87, 0x89, 0x97, 0x69, 0x7A, 0x48, 0xF0, 0xE0, + 0xA2, 0x12, 0x1B, 0x66, 0x9A, 0x74, 0xCA, 0xDE, 0x4B, 0x1E, 0xE7, 0x0E, + 0x63, 0xAE, 0xE6, 0xD4, 0xEF, 0x92, 0x92, 0x3A, 0x9E, 0x3D, 0xDC, 0x00, + 0xE4, 0x45, 0x25, 0x89, 0xB6, 0x9A, 0x44, 0x19, 0x2B, 0x7E, 0xC0, 0x94, + 0xB4, 0xD2, 0x61, 0x6D, 0xEB, 0x33, 0xD9, 0xC5, 0xDF, 0x4B, 0x04, 0x00, + 0xCC, 0x7D, 0x1C, 0x95, 0xC3, 0x8F, 0xF7, 0x21, 0xB2, 0xB2, 0x11, 0xB7, + 0xBB, 0x7F, 0xF2, 0xD5, 0x8C, 0x70, 0x2C, 0x41, 0x60, 0xAA, 0xB1, 0x63, + 0x18, 0x44, 0x95, 0x1A, 0x76, 0x62, 0x7E, 0xF6, 0x80, 0xB0, 0xFB, 0xE8, + 0x64, 0xA6, 0x33, 0xD1, 0x89, 0x07, 0xE1, 0xBD, 0xB7, 0xE6, 0x43, 0xA4, + 0x18, 0xB8, 0xA6, 0x77, 0x01, 0xE1, 0x0F, 0x94, 0x0C, 0x21, 0x1D, 0xB2, + 0x54, 0x29, 0x25, 0x89, 0x6C, 0xE5, 0x0E, 0x52, 0x51, 0x47, 0x74, 0xBE, + 0x26, 0xAC, 0xB6, 0x41, 0x75, 0xDE, 0x7A, 0xAC, 0x5F, 0x8D, 0x3F, 0xC9, + 0xBC, 0xD3, 0x41, 0x11, 0x12, 0x5B, 0xE5, 0x10, 0x50, 0xEB, 0x31, 0xC5, + 0xCA, 0x72, 0x16, 0x22, 0x09, 0xDF, 0x7C, 0x4C, 0x75, 0x3F, 0x63, 0xEC, + 0x21, 0x5F, 0xC4, 0x20, 0x51, 0x6B, 0x6F, 0xB1, 0xAB, 0x86, 0x8B, 0x4F, + 0xC2, 0xD6, 0x45, 0x5F, 0x9D, 0x20, 0xFC, 0xA1, 0x1E, 0xC5, 0xC0, 0x8F, + 0xA2, 0xB1, 0x7E, 0x0A, 0x26, 0x99, 0xF5, 0xE4, 0x69, 0x2F, 0x98, 0x1D, + 0x2D, 0xF5, 0xD9, 0xA9, 0xB2, 0x1D, 0xE5, 0x1B +}; + +static const unsigned char TA91_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA92_DN[] = { + 0x30, 0x81, 0x85, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, + 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, + 0x6F, 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x11, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, 0x20, 0x43, 0x41, 0x20, + 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2B, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x43, 0x4F, 0x4D, 0x4F, 0x44, 0x4F, + 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, + 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA92_RSA_N[] = { + 0x91, 0xE8, 0x54, 0x92, 0xD2, 0x0A, 0x56, 0xB1, 0xAC, 0x0D, 0x24, 0xDD, + 0xC5, 0xCF, 0x44, 0x67, 0x74, 0x99, 0x2B, 0x37, 0xA3, 0x7D, 0x23, 0x70, + 0x00, 0x71, 0xBC, 0x53, 0xDF, 0xC4, 0xFA, 0x2A, 0x12, 0x8F, 0x4B, 0x7F, + 0x10, 0x56, 0xBD, 0x9F, 0x70, 0x72, 0xB7, 0x61, 0x7F, 0xC9, 0x4B, 0x0F, + 0x17, 0xA7, 0x3D, 0xE3, 0xB0, 0x04, 0x61, 0xEE, 0xFF, 0x11, 0x97, 0xC7, + 0xF4, 0x86, 0x3E, 0x0A, 0xFA, 0x3E, 0x5C, 0xF9, 0x93, 0xE6, 0x34, 0x7A, + 0xD9, 0x14, 0x6B, 0xE7, 0x9C, 0xB3, 0x85, 0xA0, 0x82, 0x7A, 0x76, 0xAF, + 0x71, 0x90, 0xD7, 0xEC, 0xFD, 0x0D, 0xFA, 0x9C, 0x6C, 0xFA, 0xDF, 0xB0, + 0x82, 0xF4, 0x14, 0x7E, 0xF9, 0xBE, 0xC4, 0xA6, 0x2F, 0x4F, 0x7F, 0x99, + 0x7F, 0xB5, 0xFC, 0x67, 0x43, 0x72, 0xBD, 0x0C, 0x00, 0xD6, 0x89, 0xEB, + 0x6B, 0x2C, 0xD3, 0xED, 0x8F, 0x98, 0x1C, 0x14, 0xAB, 0x7E, 0xE5, 0xE3, + 0x6E, 0xFC, 0xD8, 0xA8, 0xE4, 0x92, 0x24, 0xDA, 0x43, 0x6B, 0x62, 0xB8, + 0x55, 0xFD, 0xEA, 0xC1, 0xBC, 0x6C, 0xB6, 0x8B, 0xF3, 0x0E, 0x8D, 0x9A, + 0xE4, 0x9B, 0x6C, 0x69, 0x99, 0xF8, 0x78, 0x48, 0x30, 0x45, 0xD5, 0xAD, + 0xE1, 0x0D, 0x3C, 0x45, 0x60, 0xFC, 0x32, 0x96, 0x51, 0x27, 0xBC, 0x67, + 0xC3, 0xCA, 0x2E, 0xB6, 0x6B, 0xEA, 0x46, 0xC7, 0xC7, 0x20, 0xA0, 0xB1, + 0x1F, 0x65, 0xDE, 0x48, 0x08, 0xBA, 0xA4, 0x4E, 0xA9, 0xF2, 0x83, 0x46, + 0x37, 0x84, 0xEB, 0xE8, 0xCC, 0x81, 0x48, 0x43, 0x67, 0x4E, 0x72, 0x2A, + 0x9B, 0x5C, 0xBD, 0x4C, 0x1B, 0x28, 0x8A, 0x5C, 0x22, 0x7B, 0xB4, 0xAB, + 0x98, 0xD9, 0xEE, 0xE0, 0x51, 0x83, 0xC3, 0x09, 0x46, 0x4E, 0x6D, 0x3E, + 0x99, 0xFA, 0x95, 0x17, 0xDA, 0x7C, 0x33, 0x57, 0x41, 0x3C, 0x8D, 0x51, + 0xED, 0x0B, 0xB6, 0x5C, 0xAF, 0x2C, 0x63, 0x1A, 0xDF, 0x57, 0xC8, 0x3F, + 0xBC, 0xE9, 0x5D, 0xC4, 0x9B, 0xAF, 0x45, 0x99, 0xE2, 0xA3, 0x5A, 0x24, + 0xB4, 0xBA, 0xA9, 0x56, 0x3D, 0xCF, 0x6F, 0xAA, 0xFF, 0x49, 0x58, 0xBE, + 0xF0, 0xA8, 0xFF, 0xF4, 0xB8, 0xAD, 0xE9, 0x37, 0xFB, 0xBA, 0xB8, 0xF4, + 0x0B, 0x3A, 0xF9, 0xE8, 0x43, 0x42, 0x1E, 0x89, 0xD8, 0x84, 0xCB, 0x13, + 0xF1, 0xD9, 0xBB, 0xE1, 0x89, 0x60, 0xB8, 0x8C, 0x28, 0x56, 0xAC, 0x14, + 0x1D, 0x9C, 0x0A, 0xE7, 0x71, 0xEB, 0xCF, 0x0E, 0xDD, 0x3D, 0xA9, 0x96, + 0xA1, 0x48, 0xBD, 0x3C, 0xF7, 0xAF, 0xB5, 0x0D, 0x22, 0x4C, 0xC0, 0x11, + 0x81, 0xEC, 0x56, 0x3B, 0xF6, 0xD3, 0xA2, 0xE2, 0x5B, 0xB7, 0xB2, 0x04, + 0x22, 0x52, 0x95, 0x80, 0x93, 0x69, 0xE8, 0x8E, 0x4C, 0x65, 0xF1, 0x91, + 0x03, 0x2D, 0x70, 0x74, 0x02, 0xEA, 0x8B, 0x67, 0x15, 0x29, 0x69, 0x52, + 0x02, 0xBB, 0xD7, 0xDF, 0x50, 0x6A, 0x55, 0x46, 0xBF, 0xA0, 0xA3, 0x28, + 0x61, 0x7F, 0x70, 0xD0, 0xC3, 0xA2, 0xAA, 0x2C, 0x21, 0xAA, 0x47, 0xCE, + 0x28, 0x9C, 0x06, 0x45, 0x76, 0xBF, 0x82, 0x18, 0x27, 0xB4, 0xD5, 0xAE, + 0xB4, 0xCB, 0x50, 0xE6, 0x6B, 0xF4, 0x4C, 0x86, 0x71, 0x30, 0xE9, 0xA6, + 0xDF, 0x16, 0x86, 0xE0, 0xD8, 0xFF, 0x40, 0xDD, 0xFB, 0xD0, 0x42, 0x88, + 0x7F, 0xA3, 0x33, 0x3A, 0x2E, 0x5C, 0x1E, 0x41, 0x11, 0x81, 0x63, 0xCE, + 0x18, 0x71, 0x6B, 0x2B, 0xEC, 0xA6, 0x8A, 0xB7, 0x31, 0x5C, 0x3A, 0x6A, + 0x47, 0xE0, 0xC3, 0x79, 0x59, 0xD6, 0x20, 0x1A, 0xAF, 0xF2, 0x6A, 0x98, + 0xAA, 0x72, 0xBC, 0x57, 0x4A, 0xD2, 0x4B, 0x9D, 0xBB, 0x10, 0xFC, 0xB0, + 0x4C, 0x41, 0xE5, 0xED, 0x1D, 0x3D, 0x5E, 0x28, 0x9D, 0x9C, 0xCC, 0xBF, + 0xB3, 0x51, 0xDA, 0xA7, 0x47, 0xE5, 0x84, 0x53 +}; + +static const unsigned char TA92_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA93_DN[] = { + 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 0x4A, 0x65, 0x72, 0x73, 0x65, + 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0B, + 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x54, 0x68, + 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, + 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x2E, 0x30, 0x2C, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA93_RSA_N[] = { + 0x80, 0x12, 0x65, 0x17, 0x36, 0x0E, 0xC3, 0xDB, 0x08, 0xB3, 0xD0, 0xAC, + 0x57, 0x0D, 0x76, 0xED, 0xCD, 0x27, 0xD3, 0x4C, 0xAD, 0x50, 0x83, 0x61, + 0xE2, 0xAA, 0x20, 0x4D, 0x09, 0x2D, 0x64, 0x09, 0xDC, 0xCE, 0x89, 0x9F, + 0xCC, 0x3D, 0xA9, 0xEC, 0xF6, 0xCF, 0xC1, 0xDC, 0xF1, 0xD3, 0xB1, 0xD6, + 0x7B, 0x37, 0x28, 0x11, 0x2B, 0x47, 0xDA, 0x39, 0xC6, 0xBC, 0x3A, 0x19, + 0xB4, 0x5F, 0xA6, 0xBD, 0x7D, 0x9D, 0xA3, 0x63, 0x42, 0xB6, 0x76, 0xF2, + 0xA9, 0x3B, 0x2B, 0x91, 0xF8, 0xE2, 0x6F, 0xD0, 0xEC, 0x16, 0x20, 0x90, + 0x09, 0x3E, 0xE2, 0xE8, 0x74, 0xC9, 0x18, 0xB4, 0x91, 0xD4, 0x62, 0x64, + 0xDB, 0x7F, 0xA3, 0x06, 0xF1, 0x88, 0x18, 0x6A, 0x90, 0x22, 0x3C, 0xBC, + 0xFE, 0x13, 0xF0, 0x87, 0x14, 0x7B, 0xF6, 0xE4, 0x1F, 0x8E, 0xD4, 0xE4, + 0x51, 0xC6, 0x11, 0x67, 0x46, 0x08, 0x51, 0xCB, 0x86, 0x14, 0x54, 0x3F, + 0xBC, 0x33, 0xFE, 0x7E, 0x6C, 0x9C, 0xFF, 0x16, 0x9D, 0x18, 0xBD, 0x51, + 0x8E, 0x35, 0xA6, 0xA7, 0x66, 0xC8, 0x72, 0x67, 0xDB, 0x21, 0x66, 0xB1, + 0xD4, 0x9B, 0x78, 0x03, 0xC0, 0x50, 0x3A, 0xE8, 0xCC, 0xF0, 0xDC, 0xBC, + 0x9E, 0x4C, 0xFE, 0xAF, 0x05, 0x96, 0x35, 0x1F, 0x57, 0x5A, 0xB7, 0xFF, + 0xCE, 0xF9, 0x3D, 0xB7, 0x2C, 0xB6, 0xF6, 0x54, 0xDD, 0xC8, 0xE7, 0x12, + 0x3A, 0x4D, 0xAE, 0x4C, 0x8A, 0xB7, 0x5C, 0x9A, 0xB4, 0xB7, 0x20, 0x3D, + 0xCA, 0x7F, 0x22, 0x34, 0xAE, 0x7E, 0x3B, 0x68, 0x66, 0x01, 0x44, 0xE7, + 0x01, 0x4E, 0x46, 0x53, 0x9B, 0x33, 0x60, 0xF7, 0x94, 0xBE, 0x53, 0x37, + 0x90, 0x73, 0x43, 0xF3, 0x32, 0xC3, 0x53, 0xEF, 0xDB, 0xAA, 0xFE, 0x74, + 0x4E, 0x69, 0xC7, 0x6B, 0x8C, 0x60, 0x93, 0xDE, 0xC4, 0xC7, 0x0C, 0xDF, + 0xE1, 0x32, 0xAE, 0xCC, 0x93, 0x3B, 0x51, 0x78, 0x95, 0x67, 0x8B, 0xEE, + 0x3D, 0x56, 0xFE, 0x0C, 0xD0, 0x69, 0x0F, 0x1B, 0x0F, 0xF3, 0x25, 0x26, + 0x6B, 0x33, 0x6D, 0xF7, 0x6E, 0x47, 0xFA, 0x73, 0x43, 0xE5, 0x7E, 0x0E, + 0xA5, 0x66, 0xB1, 0x29, 0x7C, 0x32, 0x84, 0x63, 0x55, 0x89, 0xC4, 0x0D, + 0xC1, 0x93, 0x54, 0x30, 0x19, 0x13, 0xAC, 0xD3, 0x7D, 0x37, 0xA7, 0xEB, + 0x5D, 0x3A, 0x6C, 0x35, 0x5C, 0xDB, 0x41, 0xD7, 0x12, 0xDA, 0xA9, 0x49, + 0x0B, 0xDF, 0xD8, 0x80, 0x8A, 0x09, 0x93, 0x62, 0x8E, 0xB5, 0x66, 0xCF, + 0x25, 0x88, 0xCD, 0x84, 0xB8, 0xB1, 0x3F, 0xA4, 0x39, 0x0F, 0xD9, 0x02, + 0x9E, 0xEB, 0x12, 0x4C, 0x95, 0x7C, 0xF3, 0x6B, 0x05, 0xA9, 0x5E, 0x16, + 0x83, 0xCC, 0xB8, 0x67, 0xE2, 0xE8, 0x13, 0x9D, 0xCC, 0x5B, 0x82, 0xD3, + 0x4C, 0xB3, 0xED, 0x5B, 0xFF, 0xDE, 0xE5, 0x73, 0xAC, 0x23, 0x3B, 0x2D, + 0x00, 0xBF, 0x35, 0x55, 0x74, 0x09, 0x49, 0xD8, 0x49, 0x58, 0x1A, 0x7F, + 0x92, 0x36, 0xE6, 0x51, 0x92, 0x0E, 0xF3, 0x26, 0x7D, 0x1C, 0x4D, 0x17, + 0xBC, 0xC9, 0xEC, 0x43, 0x26, 0xD0, 0xBF, 0x41, 0x5F, 0x40, 0xA9, 0x44, + 0x44, 0xF4, 0x99, 0xE7, 0x57, 0x87, 0x9E, 0x50, 0x1F, 0x57, 0x54, 0xA8, + 0x3E, 0xFD, 0x74, 0x63, 0x2F, 0xB1, 0x50, 0x65, 0x09, 0xE6, 0x58, 0x42, + 0x2E, 0x43, 0x1A, 0x4C, 0xB4, 0xF0, 0x25, 0x47, 0x59, 0xFA, 0x04, 0x1E, + 0x93, 0xD4, 0x26, 0x46, 0x4A, 0x50, 0x81, 0xB2, 0xDE, 0xBE, 0x78, 0xB7, + 0xFC, 0x67, 0x15, 0xE1, 0xC9, 0x57, 0x84, 0x1E, 0x0F, 0x63, 0xD6, 0xE9, + 0x62, 0xBA, 0xD6, 0x5F, 0x55, 0x2E, 0xEA, 0x5C, 0xC6, 0x28, 0x08, 0x04, + 0x25, 0x39, 0xB8, 0x0E, 0x2B, 0xA9, 0xF2, 0x4C, 0x97, 0x1C, 0x07, 0x3F, + 0x0D, 0x52, 0xF5, 0xED, 0xEF, 0x2F, 0x82, 0x0F +}; + +static const unsigned char TA93_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA94_DN[] = { + 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 0x4A, 0x65, 0x72, 0x73, 0x65, + 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0B, + 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x54, 0x68, + 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, + 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x2E, 0x30, 0x2C, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x45, 0x43, 0x43, 0x20, 0x43, 0x65, 0x72, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79 +}; + +static const unsigned char TA94_EC_Q[] = { + 0x04, 0x1A, 0xAC, 0x54, 0x5A, 0xA9, 0xF9, 0x68, 0x23, 0xE7, 0x7A, 0xD5, + 0x24, 0x6F, 0x53, 0xC6, 0x5A, 0xD8, 0x4B, 0xAB, 0xC6, 0xD5, 0xB6, 0xD1, + 0xE6, 0x73, 0x71, 0xAE, 0xDD, 0x9C, 0xD6, 0x0C, 0x61, 0xFD, 0xDB, 0xA0, + 0x89, 0x03, 0xB8, 0x05, 0x14, 0xEC, 0x57, 0xCE, 0xEE, 0x5D, 0x3F, 0xE2, + 0x21, 0xB3, 0xCE, 0xF7, 0xD4, 0x8A, 0x79, 0xE0, 0xA3, 0x83, 0x7E, 0x2D, + 0x97, 0xD0, 0x61, 0xC4, 0xF1, 0x99, 0xDC, 0x25, 0x91, 0x63, 0xAB, 0x7F, + 0x30, 0xA3, 0xB4, 0x70, 0xE2, 0xC7, 0xA1, 0x33, 0x9C, 0xF3, 0xBF, 0x2E, + 0x5C, 0x53, 0xB1, 0x5F, 0xB3, 0x7D, 0x32, 0x7F, 0x8A, 0x34, 0xE3, 0x79, + 0x79 +}; + +static const unsigned char TA95_DN[] = { + 0x30, 0x50, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x1B, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x45, 0x43, 0x43, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, + 0x2D, 0x20, 0x52, 0x34, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0A, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, + 0x6E, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0A, + 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E +}; + +static const unsigned char TA95_EC_Q[] = { + 0x04, 0xB8, 0xC6, 0x79, 0xD3, 0x8F, 0x6C, 0x25, 0x0E, 0x9F, 0x2E, 0x39, + 0x19, 0x1C, 0x03, 0xA4, 0xAE, 0x9A, 0xE5, 0x39, 0x07, 0x09, 0x16, 0xCA, + 0x63, 0xB1, 0xB9, 0x86, 0xF8, 0x8A, 0x57, 0xC1, 0x57, 0xCE, 0x42, 0xFA, + 0x73, 0xA1, 0xF7, 0x65, 0x42, 0xFF, 0x1E, 0xC1, 0x00, 0xB2, 0x6E, 0x73, + 0x0E, 0xFF, 0xC7, 0x21, 0xE5, 0x18, 0xA4, 0xAA, 0xD9, 0x71, 0x3F, 0xA8, + 0xD4, 0xB9, 0xCE, 0x8C, 0x1D +}; + +static const unsigned char TA96_DN[] = { + 0x30, 0x50, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x1B, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x45, 0x43, 0x43, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, + 0x2D, 0x20, 0x52, 0x35, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0A, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, + 0x6E, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0A, + 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E +}; + +static const unsigned char TA96_EC_Q[] = { + 0x04, 0x47, 0x45, 0x0E, 0x96, 0xFB, 0x7D, 0x5D, 0xBF, 0xE9, 0x39, 0xD1, + 0x21, 0xF8, 0x9F, 0x0B, 0xB6, 0xD5, 0x7B, 0x1E, 0x92, 0x3A, 0x48, 0x59, + 0x1C, 0xF0, 0x62, 0x31, 0x2D, 0xC0, 0x7A, 0x28, 0xFE, 0x1A, 0xA7, 0x5C, + 0xB3, 0xB6, 0xCC, 0x97, 0xE7, 0x45, 0xD4, 0x58, 0xFA, 0xD1, 0x77, 0x6D, + 0x43, 0xA2, 0xC0, 0x87, 0x65, 0x34, 0x0A, 0x1F, 0x7A, 0xDD, 0xEB, 0x3C, + 0x33, 0xA1, 0xC5, 0x9D, 0x4D, 0xA4, 0x6F, 0x41, 0x95, 0x38, 0x7F, 0xC9, + 0x1E, 0x84, 0xEB, 0xD1, 0x9E, 0x49, 0x92, 0x87, 0x94, 0x87, 0x0C, 0x3A, + 0x85, 0x4A, 0x66, 0x9F, 0x9D, 0x59, 0x93, 0x4D, 0x97, 0x61, 0x06, 0x86, + 0x4A +}; + +static const unsigned char TA97_DN[] = { + 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4E, 0x4C, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x15, 0x53, 0x74, 0x61, 0x61, 0x74, 0x20, 0x64, 0x65, 0x72, 0x20, + 0x4E, 0x65, 0x64, 0x65, 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x65, 0x6E, 0x31, + 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x22, 0x53, 0x74, + 0x61, 0x61, 0x74, 0x20, 0x64, 0x65, 0x72, 0x20, 0x4E, 0x65, 0x64, 0x65, + 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x65, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x33 +}; + +static const unsigned char TA97_RSA_N[] = { + 0xBE, 0x32, 0xA2, 0x54, 0x0F, 0x70, 0xFB, 0x2C, 0x5C, 0x59, 0xEB, 0x6C, + 0xC4, 0xA4, 0x51, 0xE8, 0x85, 0x2A, 0xB3, 0xCC, 0x4A, 0x34, 0xF2, 0xB0, + 0x5F, 0xF3, 0x0E, 0xC7, 0x1C, 0x3D, 0x53, 0x1E, 0x88, 0x08, 0x68, 0xD8, + 0x6F, 0x3D, 0xAD, 0xC2, 0x9E, 0xCC, 0x82, 0x67, 0x07, 0x27, 0x87, 0x68, + 0x71, 0x3A, 0x9F, 0x75, 0x96, 0x22, 0x46, 0x05, 0xB0, 0xED, 0xAD, 0xC7, + 0x5B, 0x9E, 0x2A, 0xDE, 0x9C, 0xFC, 0x3A, 0xC6, 0x95, 0xA7, 0xF5, 0x17, + 0x67, 0x18, 0xE7, 0x2F, 0x49, 0x08, 0x0C, 0x5C, 0xCF, 0xE6, 0xCC, 0x34, + 0xED, 0x78, 0xFB, 0x50, 0xB1, 0xDC, 0x6B, 0x32, 0xF0, 0xA2, 0xFE, 0xB6, + 0x3C, 0xE4, 0xEC, 0x5A, 0x97, 0xC7, 0x3F, 0x1E, 0x70, 0x08, 0x30, 0xA0, + 0xDC, 0xC5, 0xB3, 0x6D, 0x6F, 0xD0, 0x82, 0x72, 0x11, 0xAB, 0xD2, 0x81, + 0x68, 0x59, 0x82, 0x17, 0xB7, 0x78, 0x92, 0x60, 0xFA, 0xCC, 0xDE, 0x3F, + 0x84, 0xEB, 0x8D, 0x38, 0x33, 0x90, 0x0A, 0x72, 0x23, 0xFA, 0x35, 0xCC, + 0x26, 0x71, 0x31, 0xD1, 0x72, 0x28, 0x92, 0xD9, 0x5B, 0x23, 0x6D, 0x66, + 0xB5, 0x6D, 0x07, 0x42, 0xEB, 0xA6, 0x33, 0xCE, 0x92, 0xDB, 0xC0, 0xF6, + 0x6C, 0x63, 0x78, 0xCD, 0xCA, 0x4E, 0x3D, 0xB5, 0xE5, 0x52, 0x9B, 0xF1, + 0xBE, 0x3B, 0xE6, 0x54, 0x60, 0xB0, 0x66, 0x1E, 0x09, 0xAB, 0x07, 0xFE, + 0x54, 0x89, 0x11, 0x42, 0xD1, 0xF7, 0x24, 0xBA, 0x60, 0x78, 0x1A, 0x98, + 0xF7, 0xC9, 0x11, 0xFD, 0x16, 0xC1, 0x35, 0x1A, 0x54, 0x75, 0xEF, 0x43, + 0xD3, 0xE5, 0xAE, 0x4E, 0xCE, 0xE7, 0x7B, 0xC3, 0xC6, 0x4E, 0x61, 0x51, + 0x4B, 0xAB, 0x9A, 0x45, 0x4B, 0xA1, 0x1F, 0x41, 0xBD, 0x48, 0x53, 0x15, + 0x71, 0x64, 0x0B, 0x86, 0xB3, 0xE5, 0x2E, 0xBE, 0xCE, 0xA4, 0x1B, 0xC1, + 0x29, 0x84, 0xA2, 0xB5, 0xCB, 0x08, 0x23, 0x76, 0x43, 0x22, 0x24, 0x1F, + 0x17, 0x04, 0xD4, 0x6E, 0x9C, 0xC6, 0xFC, 0x7F, 0x2B, 0x66, 0x1A, 0xEC, + 0x8A, 0xE5, 0xD6, 0xCF, 0x4D, 0xF5, 0x63, 0x09, 0xB7, 0x15, 0x39, 0xD6, + 0x7B, 0xAC, 0xEB, 0xE3, 0x7C, 0xE9, 0x4E, 0xFC, 0x75, 0x42, 0xC8, 0xED, + 0x58, 0x95, 0x0C, 0x06, 0x42, 0xA2, 0x9C, 0xF7, 0xE4, 0x70, 0xB3, 0xDF, + 0x72, 0x6F, 0x5A, 0x37, 0x40, 0x89, 0xD8, 0x85, 0xA4, 0xD7, 0xF1, 0x0B, + 0xDE, 0x43, 0x19, 0xD4, 0x4A, 0x58, 0x2C, 0x8C, 0x8A, 0x39, 0x9E, 0xBF, + 0x84, 0x87, 0xF1, 0x16, 0x3B, 0x36, 0x0C, 0xE9, 0xD3, 0xB4, 0xCA, 0x6C, + 0x19, 0x41, 0x52, 0x09, 0xA1, 0x1D, 0xB0, 0x6A, 0xBF, 0x82, 0xEF, 0x70, + 0x51, 0x21, 0x32, 0xDC, 0x05, 0x76, 0x8C, 0xCB, 0xF7, 0x64, 0xE4, 0x03, + 0x50, 0xAF, 0x8C, 0x91, 0x67, 0xAB, 0xC5, 0xF2, 0xEE, 0x58, 0xD8, 0xDE, + 0xBE, 0xF7, 0xE7, 0x31, 0xCF, 0x6C, 0xC9, 0x3B, 0x71, 0xC1, 0xD5, 0x88, + 0xB5, 0x65, 0xBC, 0xC0, 0xE8, 0x17, 0x17, 0x07, 0x12, 0xB5, 0x5C, 0xD2, + 0xAB, 0x20, 0x93, 0xB4, 0xE6, 0x82, 0x83, 0x70, 0x36, 0xC5, 0xCD, 0xA3, + 0x8D, 0xAD, 0x8B, 0xEC, 0xA3, 0xC1, 0x43, 0x87, 0xE6, 0x43, 0xE2, 0x34, + 0xBE, 0x95, 0x8B, 0x35, 0xED, 0x07, 0x39, 0xDA, 0xA8, 0x1D, 0x7A, 0x9F, + 0x36, 0x9E, 0x12, 0xB0, 0x0C, 0x65, 0x12, 0x90, 0x15, 0x60, 0xD9, 0x26, + 0x40, 0x44, 0xE3, 0x56, 0x60, 0xA5, 0x10, 0xD4, 0x6A, 0x3C, 0xFD, 0x41, + 0xDC, 0x0E, 0x5A, 0x47, 0xB6, 0xEF, 0x97, 0x61, 0x75, 0x4F, 0xD9, 0xFE, + 0xC7, 0xB2, 0x1D, 0xD4, 0xED, 0x5D, 0x49, 0xB3, 0xA9, 0x6A, 0xCB, 0x66, + 0x84, 0x13, 0xD5, 0x5C, 0xA0, 0xDC, 0xDF, 0x6E, 0x77, 0x06, 0xD1, 0x71, + 0x75, 0xC8, 0x57, 0x6F, 0xAF, 0x0F, 0x77, 0x5B +}; + +static const unsigned char TA97_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA98_DN[] = { + 0x30, 0x58, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4E, 0x4C, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x15, 0x53, 0x74, 0x61, 0x61, 0x74, 0x20, 0x64, 0x65, 0x72, 0x20, + 0x4E, 0x65, 0x64, 0x65, 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x65, 0x6E, 0x31, + 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x20, 0x53, 0x74, + 0x61, 0x61, 0x74, 0x20, 0x64, 0x65, 0x72, 0x20, 0x4E, 0x65, 0x64, 0x65, + 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x65, 0x6E, 0x20, 0x45, 0x56, 0x20, 0x52, + 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA98_RSA_N[] = { + 0xE3, 0xC7, 0x7E, 0x89, 0xF9, 0x24, 0x4B, 0x3A, 0xD2, 0x33, 0x83, 0x35, + 0x2C, 0x69, 0xEC, 0xDC, 0x09, 0xA4, 0xE3, 0x51, 0xA8, 0x25, 0x2B, 0x79, + 0xB8, 0x08, 0x3D, 0xE0, 0x91, 0xBA, 0x84, 0x85, 0xC6, 0x85, 0xA4, 0xCA, + 0xE6, 0xC9, 0x2E, 0x53, 0xA4, 0xC9, 0x24, 0x1E, 0xFD, 0x55, 0x66, 0x71, + 0x5D, 0x2C, 0xC5, 0x60, 0x68, 0x04, 0xB7, 0xD9, 0xC2, 0x52, 0x26, 0x38, + 0x88, 0xA4, 0xD6, 0x3B, 0x40, 0xA6, 0xC2, 0xCD, 0x3F, 0xCD, 0x98, 0x93, + 0xB3, 0x54, 0x14, 0x58, 0x96, 0x55, 0xD5, 0x50, 0xFE, 0x86, 0xAD, 0xA4, + 0x63, 0x7F, 0x5C, 0x87, 0xF6, 0x8E, 0xE6, 0x27, 0x92, 0x67, 0x17, 0x92, + 0x02, 0x03, 0x2C, 0xDC, 0xD6, 0x66, 0x74, 0xED, 0xDD, 0x67, 0xFF, 0xC1, + 0x61, 0x8D, 0x63, 0x4F, 0x0F, 0x9B, 0x6D, 0x17, 0x30, 0x26, 0xEF, 0xAB, + 0xD2, 0x1F, 0x10, 0xA0, 0xF9, 0xC5, 0x7F, 0x16, 0x69, 0x81, 0x03, 0x47, + 0xED, 0x1E, 0x68, 0x8D, 0x72, 0xA1, 0x4D, 0xB2, 0x26, 0xC6, 0xBA, 0x6C, + 0x5F, 0x6D, 0xD6, 0xAF, 0xD1, 0xB1, 0x13, 0x8E, 0xA9, 0xAD, 0xF3, 0x5E, + 0x69, 0x75, 0x26, 0x18, 0x3E, 0x41, 0x2B, 0x21, 0x7F, 0xEE, 0x8B, 0x5D, + 0x07, 0x06, 0x9D, 0x43, 0xC4, 0x29, 0x0A, 0x2B, 0xFC, 0x2A, 0x3E, 0x86, + 0xCB, 0x3C, 0x83, 0x3A, 0xF9, 0xC9, 0x0D, 0xDA, 0xC5, 0x99, 0xE2, 0xBC, + 0x78, 0x41, 0x33, 0x76, 0xE1, 0xBF, 0x2F, 0x5D, 0xE5, 0xA4, 0x98, 0x50, + 0x0C, 0x15, 0xDD, 0xE0, 0xFA, 0x9C, 0x7F, 0x38, 0x68, 0xD0, 0xB2, 0xA6, + 0x7A, 0xA7, 0xD1, 0x31, 0xBD, 0x7E, 0x8A, 0x58, 0x27, 0x43, 0xB3, 0xBA, + 0x33, 0x91, 0xD3, 0xA7, 0x98, 0x15, 0x5C, 0x9A, 0xE6, 0xD3, 0x0F, 0x75, + 0xD9, 0xFC, 0x41, 0x98, 0x97, 0x3E, 0xAA, 0x25, 0xDB, 0x8F, 0x92, 0x2E, + 0xB0, 0x7B, 0x0C, 0x5F, 0xF1, 0x63, 0xA9, 0x37, 0xF9, 0x9B, 0x75, 0x69, + 0x4C, 0x28, 0x26, 0x25, 0xDA, 0xD5, 0xF2, 0x12, 0x70, 0x45, 0x55, 0xE3, + 0xDF, 0x73, 0x5E, 0x37, 0xF5, 0x21, 0x6C, 0x90, 0x8E, 0x35, 0x5A, 0xC9, + 0xD3, 0x23, 0xEB, 0xD3, 0xC0, 0xBE, 0x78, 0xAC, 0x42, 0x28, 0x58, 0x66, + 0xA5, 0x46, 0x6D, 0x70, 0x02, 0xD7, 0x10, 0xF9, 0x4B, 0x54, 0xFC, 0x5D, + 0x86, 0x4A, 0x87, 0xCF, 0x7F, 0xCA, 0x45, 0xAC, 0x11, 0x5A, 0xB5, 0x20, + 0x51, 0x8D, 0x2F, 0x88, 0x47, 0x97, 0x39, 0xC0, 0xCF, 0xBA, 0xC0, 0x42, + 0x01, 0x40, 0x99, 0x48, 0x21, 0x0B, 0x6B, 0xA7, 0xD2, 0xFD, 0x96, 0xD5, + 0xD1, 0xBE, 0x46, 0x9D, 0x49, 0xE0, 0x0B, 0xA6, 0xA0, 0x22, 0x4E, 0x38, + 0xD0, 0xC1, 0x3C, 0x30, 0xBC, 0x70, 0x8F, 0x2C, 0x75, 0xCC, 0xD0, 0xC5, + 0x8C, 0x51, 0x3B, 0x3D, 0x94, 0x08, 0x64, 0x26, 0x61, 0x7D, 0xB9, 0xC3, + 0x65, 0x8F, 0x14, 0x9C, 0x21, 0xD0, 0xAA, 0xFD, 0x17, 0x72, 0x03, 0x8F, + 0xBD, 0x9B, 0x8C, 0xE6, 0x5E, 0x53, 0x9E, 0xB9, 0x9D, 0xEF, 0x82, 0xBB, + 0xE1, 0xBC, 0xE2, 0x72, 0x41, 0x5B, 0x21, 0x94, 0xD3, 0x45, 0x37, 0x94, + 0xD1, 0xDF, 0x09, 0x39, 0x5D, 0xE7, 0x23, 0xAA, 0x9A, 0x1D, 0xCA, 0x6D, + 0xA8, 0x0A, 0x86, 0x85, 0x8A, 0x82, 0xBE, 0x42, 0x07, 0xD6, 0xF2, 0x38, + 0x82, 0x73, 0xDA, 0x87, 0x5B, 0xE5, 0x3C, 0xD3, 0x9E, 0x3E, 0xA7, 0x3B, + 0x9E, 0xF4, 0x03, 0xB3, 0xF9, 0xF1, 0x7D, 0x13, 0x74, 0x02, 0xFF, 0xBB, + 0xA1, 0xE5, 0xFA, 0x00, 0x79, 0x1C, 0xA6, 0x66, 0x41, 0x88, 0x5C, 0x60, + 0x57, 0xA6, 0x2E, 0x09, 0xC4, 0xBA, 0xFD, 0x9A, 0xCF, 0xA7, 0x1F, 0x40, + 0xC3, 0xBB, 0xCC, 0x5A, 0x0A, 0x55, 0x4B, 0x3B, 0x38, 0x76, 0x51, 0xB8, + 0x63, 0x8B, 0x84, 0x94, 0x16, 0xE6, 0x56, 0xF3 +}; + +static const unsigned char TA98_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA99_DN[] = { + 0x30, 0x4A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x09, 0x49, 0x64, 0x65, 0x6E, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, + 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1E, 0x49, 0x64, + 0x65, 0x6E, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, + 0x43, 0x41, 0x20, 0x31 +}; + +static const unsigned char TA99_RSA_N[] = { + 0xA7, 0x50, 0x19, 0xDE, 0x3F, 0x99, 0x3D, 0xD4, 0x33, 0x46, 0xF1, 0x6F, + 0x51, 0x61, 0x82, 0xB2, 0xA9, 0x4F, 0x8F, 0x67, 0x89, 0x5D, 0x84, 0xD9, + 0x53, 0xDD, 0x0C, 0x28, 0xD9, 0xD7, 0xF0, 0xFF, 0xAE, 0x95, 0x43, 0x72, + 0x99, 0xF9, 0xB5, 0x5D, 0x7C, 0x8A, 0xC1, 0x42, 0xE1, 0x31, 0x50, 0x74, + 0xD1, 0x81, 0x0D, 0x7C, 0xCD, 0x9B, 0x21, 0xAB, 0x43, 0xE2, 0xAC, 0xAD, + 0x5E, 0x86, 0x6E, 0xF3, 0x09, 0x8A, 0x1F, 0x5A, 0x32, 0xBD, 0xA2, 0xEB, + 0x94, 0xF9, 0xE8, 0x5C, 0x0A, 0xEC, 0xFF, 0x98, 0xD2, 0xAF, 0x71, 0xB3, + 0xB4, 0x53, 0x9F, 0x4E, 0x87, 0xEF, 0x92, 0xBC, 0xBD, 0xEC, 0x4F, 0x32, + 0x30, 0x88, 0x4B, 0x17, 0x5E, 0x57, 0xC4, 0x53, 0xC2, 0xF6, 0x02, 0x97, + 0x8D, 0xD9, 0x62, 0x2B, 0xBF, 0x24, 0x1F, 0x62, 0x8D, 0xDF, 0xC3, 0xB8, + 0x29, 0x4B, 0x49, 0x78, 0x3C, 0x93, 0x60, 0x88, 0x22, 0xFC, 0x99, 0xDA, + 0x36, 0xC8, 0xC2, 0xA2, 0xD4, 0x2C, 0x54, 0x00, 0x67, 0x35, 0x6E, 0x73, + 0xBF, 0x02, 0x58, 0xF0, 0xA4, 0xDD, 0xE5, 0xB0, 0xA2, 0x26, 0x7A, 0xCA, + 0xE0, 0x36, 0xA5, 0x19, 0x16, 0xF5, 0xFD, 0xB7, 0xEF, 0xAE, 0x3F, 0x40, + 0xF5, 0x6D, 0x5A, 0x04, 0xFD, 0xCE, 0x34, 0xCA, 0x24, 0xDC, 0x74, 0x23, + 0x1B, 0x5D, 0x33, 0x13, 0x12, 0x5D, 0xC4, 0x01, 0x25, 0xF6, 0x30, 0xDD, + 0x02, 0x5D, 0x9F, 0xE0, 0xD5, 0x47, 0xBD, 0xB4, 0xEB, 0x1B, 0xA1, 0xBB, + 0x49, 0x49, 0xD8, 0x9F, 0x5B, 0x02, 0xF3, 0x8A, 0xE4, 0x24, 0x90, 0xE4, + 0x62, 0x4F, 0x4F, 0xC1, 0xAF, 0x8B, 0x0E, 0x74, 0x17, 0xA8, 0xD1, 0x72, + 0x88, 0x6A, 0x7A, 0x01, 0x49, 0xCC, 0xB4, 0x46, 0x79, 0xC6, 0x17, 0xB1, + 0xDA, 0x98, 0x1E, 0x07, 0x59, 0xFA, 0x75, 0x21, 0x85, 0x65, 0xDD, 0x90, + 0x56, 0xCE, 0xFB, 0xAB, 0xA5, 0x60, 0x9D, 0xC4, 0x9D, 0xF9, 0x52, 0xB0, + 0x8B, 0xBD, 0x87, 0xF9, 0x8F, 0x2B, 0x23, 0x0A, 0x23, 0x76, 0x3B, 0xF7, + 0x33, 0xE1, 0xC9, 0x00, 0xF3, 0x69, 0xF9, 0x4B, 0xA2, 0xE0, 0x4E, 0xBC, + 0x7E, 0x93, 0x39, 0x84, 0x07, 0xF7, 0x44, 0x70, 0x7E, 0xFE, 0x07, 0x5A, + 0xE5, 0xB1, 0xAC, 0xD1, 0x18, 0xCC, 0xF2, 0x35, 0xE5, 0x49, 0x49, 0x08, + 0xCA, 0x56, 0xC9, 0x3D, 0xFB, 0x0F, 0x18, 0x7D, 0x8B, 0x3B, 0xC1, 0x13, + 0xC2, 0x4D, 0x8F, 0xC9, 0x4F, 0x0E, 0x37, 0xE9, 0x1F, 0xA1, 0x0E, 0x6A, + 0xDF, 0x62, 0x2E, 0xCB, 0x35, 0x06, 0x51, 0x79, 0x2C, 0xC8, 0x25, 0x38, + 0xF4, 0xFA, 0x4B, 0xA7, 0x89, 0x5C, 0x9C, 0xD2, 0xE3, 0x0D, 0x39, 0x86, + 0x4A, 0x74, 0x7C, 0xD5, 0x59, 0x87, 0xC2, 0x3F, 0x4E, 0x0C, 0x5C, 0x52, + 0xF4, 0x3D, 0xF7, 0x52, 0x82, 0xF1, 0xEA, 0xA3, 0xAC, 0xFD, 0x49, 0x34, + 0x1A, 0x28, 0xF3, 0x41, 0x88, 0x3A, 0x13, 0xEE, 0xE8, 0xDE, 0xFF, 0x99, + 0x1D, 0x5F, 0xBA, 0xCB, 0xE8, 0x1E, 0xF2, 0xB9, 0x50, 0x60, 0xC0, 0x31, + 0xD3, 0x73, 0xE5, 0xEF, 0xBE, 0xA0, 0xED, 0x33, 0x0B, 0x74, 0xBE, 0x20, + 0x20, 0xC4, 0x67, 0x6C, 0xF0, 0x08, 0x03, 0x7A, 0x55, 0x80, 0x7F, 0x46, + 0x4E, 0x96, 0xA7, 0xF4, 0x1E, 0x3E, 0xE1, 0xF6, 0xD8, 0x09, 0xE1, 0x33, + 0x64, 0x2B, 0x63, 0xD7, 0x32, 0x5E, 0x9F, 0xF9, 0xC0, 0x7B, 0x0F, 0x78, + 0x6F, 0x97, 0xBC, 0x93, 0x9A, 0xF9, 0x9C, 0x12, 0x90, 0x78, 0x7A, 0x80, + 0x87, 0x15, 0xD7, 0x72, 0x74, 0x9C, 0x55, 0x74, 0x78, 0xB1, 0xBA, 0xE1, + 0x6E, 0x70, 0x04, 0xBA, 0x4F, 0xA0, 0xBA, 0x68, 0xC3, 0x7B, 0xFF, 0x31, + 0xF0, 0x73, 0x3D, 0x3D, 0x94, 0x2A, 0xB1, 0x0B, 0x41, 0x0E, 0xA0, 0xFE, + 0x4D, 0x88, 0x65, 0x6B, 0x79, 0x33, 0xB4, 0xD7 +}; + +static const unsigned char TA99_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA100_DN[] = { + 0x30, 0x4D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x09, 0x49, 0x64, 0x65, 0x6E, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, + 0x2A, 0x30, 0x28, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x49, 0x64, + 0x65, 0x6E, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x50, 0x75, 0x62, 0x6C, + 0x69, 0x63, 0x20, 0x53, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31 +}; + +static const unsigned char TA100_RSA_N[] = { + 0xB6, 0x22, 0x94, 0xFC, 0xA4, 0x48, 0xAF, 0xE8, 0x47, 0x6B, 0x0A, 0xFB, + 0x27, 0x76, 0xE4, 0xF2, 0x3F, 0x8A, 0x3B, 0x7A, 0x4A, 0x2C, 0x31, 0x2A, + 0x8C, 0x8D, 0xB0, 0xA9, 0xC3, 0x31, 0x6B, 0xA8, 0x77, 0x76, 0x84, 0x26, + 0xB6, 0xAC, 0x81, 0x42, 0x0D, 0x08, 0xEB, 0x55, 0x58, 0xBB, 0x7A, 0xF8, + 0xBC, 0x65, 0x7D, 0xF2, 0xA0, 0x6D, 0x8B, 0xA8, 0x47, 0xE9, 0x62, 0x76, + 0x1E, 0x11, 0xEE, 0x08, 0x14, 0xD1, 0xB2, 0x44, 0x16, 0xF4, 0xEA, 0xD0, + 0xFA, 0x1E, 0x2F, 0x5E, 0xDB, 0xCB, 0x73, 0x41, 0xAE, 0xBC, 0x00, 0xB0, + 0x4A, 0x2B, 0x40, 0xB2, 0xAC, 0xE1, 0x3B, 0x4B, 0xC2, 0x2D, 0x9D, 0xE4, + 0xA1, 0x9B, 0xEC, 0x1A, 0x3A, 0x1E, 0xF0, 0x08, 0xB3, 0xD0, 0xE4, 0x24, + 0x35, 0x07, 0x9F, 0x9C, 0xB4, 0xC9, 0x52, 0x6D, 0xDB, 0x07, 0xCA, 0x8F, + 0xB5, 0x5B, 0xF0, 0x83, 0xF3, 0x4F, 0xC7, 0x2D, 0xA5, 0xC8, 0xAD, 0xCB, + 0x95, 0x20, 0xA4, 0x31, 0x28, 0x57, 0x58, 0x5A, 0xE4, 0x8D, 0x1B, 0x9A, + 0xAB, 0x9E, 0x0D, 0x0C, 0xF2, 0x0A, 0x33, 0x39, 0x22, 0x39, 0x0A, 0x97, + 0x2E, 0xF3, 0x53, 0x77, 0xB9, 0x44, 0x45, 0xFD, 0x84, 0xCB, 0x36, 0x20, + 0x81, 0x59, 0x2D, 0x9A, 0x6F, 0x6D, 0x48, 0x48, 0x61, 0xCA, 0x4C, 0xDF, + 0x53, 0xD1, 0xAF, 0x52, 0xBC, 0x44, 0x9F, 0xAB, 0x2F, 0x6B, 0x83, 0x72, + 0xEF, 0x75, 0x80, 0xDA, 0x06, 0x33, 0x1B, 0x5D, 0xC8, 0xDA, 0x63, 0xC6, + 0x4D, 0xCD, 0xAC, 0x66, 0x31, 0xCD, 0xD1, 0xDE, 0x3E, 0x87, 0x10, 0x36, + 0xE1, 0xB9, 0xA4, 0x7A, 0xEF, 0x60, 0x50, 0xB2, 0xCB, 0xCA, 0xA6, 0x56, + 0xE0, 0x37, 0xAF, 0xAB, 0x34, 0x13, 0x39, 0x25, 0xE8, 0x39, 0x66, 0xE4, + 0x98, 0x7A, 0xAA, 0x12, 0x98, 0x9C, 0x59, 0x66, 0x86, 0x3E, 0xAD, 0xF1, + 0xB0, 0xCA, 0x3E, 0x06, 0x0F, 0x7B, 0xF0, 0x11, 0x4B, 0x37, 0xA0, 0x44, + 0x6D, 0x7B, 0xCB, 0xA8, 0x8C, 0x71, 0xF4, 0xD5, 0xB5, 0x91, 0x36, 0xCC, + 0xF0, 0x15, 0xC6, 0x2B, 0xDE, 0x51, 0x17, 0xB1, 0x97, 0x4C, 0x50, 0x3D, + 0xB1, 0x95, 0x59, 0x7C, 0x05, 0x7D, 0x2D, 0x21, 0xD5, 0x00, 0xBF, 0x01, + 0x67, 0xA2, 0x5E, 0x7B, 0xA6, 0x5C, 0xF2, 0xF7, 0x22, 0xF1, 0x90, 0x0D, + 0x93, 0xDB, 0xAA, 0x44, 0x51, 0x66, 0xCC, 0x7D, 0x76, 0x03, 0xEB, 0x6A, + 0xA8, 0x2A, 0x38, 0x19, 0x97, 0x76, 0x0D, 0x6B, 0x8A, 0x61, 0xF9, 0xBC, + 0xF6, 0xEE, 0x76, 0xFD, 0x70, 0x2B, 0xDD, 0x29, 0x3C, 0xF8, 0x0A, 0x1E, + 0x5B, 0x42, 0x1C, 0x8B, 0x56, 0x2F, 0x55, 0x1B, 0x1C, 0xA1, 0x2E, 0xB5, + 0xC7, 0x16, 0xE6, 0xF8, 0xAA, 0x3C, 0x92, 0x8E, 0x69, 0xB6, 0x01, 0xC1, + 0xB5, 0x86, 0x9D, 0x89, 0x0F, 0x0B, 0x38, 0x94, 0x54, 0xE8, 0xEA, 0xDC, + 0x9E, 0x3D, 0x25, 0xBC, 0x53, 0x26, 0xED, 0xD5, 0xAB, 0x39, 0xAA, 0xC5, + 0x40, 0x4C, 0x54, 0xAB, 0xB2, 0xB4, 0xD9, 0xD9, 0xF8, 0xD7, 0x72, 0xDB, + 0x1C, 0xBC, 0x6D, 0xBD, 0x65, 0x5F, 0xEF, 0x88, 0x35, 0x2A, 0x66, 0x2F, + 0xEE, 0xF6, 0xB3, 0x65, 0xF0, 0x33, 0x8D, 0x7C, 0x98, 0x41, 0x69, 0x46, + 0x0F, 0x43, 0x1C, 0x69, 0xFA, 0x9B, 0xB5, 0xD0, 0x61, 0x6A, 0xCD, 0xCA, + 0x4B, 0xD9, 0x4C, 0x90, 0x46, 0xAB, 0x15, 0x59, 0xA1, 0x47, 0x54, 0x29, + 0x2E, 0x83, 0x28, 0x5F, 0x1C, 0xC2, 0xA2, 0xAB, 0x72, 0x17, 0x00, 0x06, + 0x8E, 0x45, 0xEC, 0x8B, 0xE2, 0x33, 0x3D, 0x7F, 0xDA, 0x19, 0x44, 0xE4, + 0x62, 0x72, 0xC3, 0xDF, 0x22, 0xC6, 0xF2, 0x56, 0xD4, 0xDD, 0x5F, 0x95, + 0x72, 0xED, 0x6D, 0x5F, 0xF7, 0x48, 0x03, 0x5B, 0xFD, 0xC5, 0x2A, 0xA0, + 0xF6, 0x73, 0x23, 0x84, 0x10, 0x1B, 0x01, 0xE7 +}; + +static const unsigned char TA100_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA101_DN[] = { + 0x30, 0x81, 0xBE, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0D, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, + 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x1F, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2E, 0x65, + 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x6C, + 0x65, 0x67, 0x61, 0x6C, 0x2D, 0x74, 0x65, 0x72, 0x6D, 0x73, 0x31, 0x39, + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x30, 0x28, 0x63, 0x29, + 0x20, 0x32, 0x30, 0x30, 0x39, 0x20, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x66, 0x6F, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x31, 0x32, 0x30, + 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x45, 0x6E, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x47, + 0x32 +}; + +static const unsigned char TA101_RSA_N[] = { + 0xBA, 0x84, 0xB6, 0x72, 0xDB, 0x9E, 0x0C, 0x6B, 0xE2, 0x99, 0xE9, 0x30, + 0x01, 0xA7, 0x76, 0xEA, 0x32, 0xB8, 0x95, 0x41, 0x1A, 0xC9, 0xDA, 0x61, + 0x4E, 0x58, 0x72, 0xCF, 0xFE, 0xF6, 0x82, 0x79, 0xBF, 0x73, 0x61, 0x06, + 0x0A, 0xA5, 0x27, 0xD8, 0xB3, 0x5F, 0xD3, 0x45, 0x4E, 0x1C, 0x72, 0xD6, + 0x4E, 0x32, 0xF2, 0x72, 0x8A, 0x0F, 0xF7, 0x83, 0x19, 0xD0, 0x6A, 0x80, + 0x80, 0x00, 0x45, 0x1E, 0xB0, 0xC7, 0xE7, 0x9A, 0xBF, 0x12, 0x57, 0x27, + 0x1C, 0xA3, 0x68, 0x2F, 0x0A, 0x87, 0xBD, 0x6A, 0x6B, 0x0E, 0x5E, 0x65, + 0xF3, 0x1C, 0x77, 0xD5, 0xD4, 0x85, 0x8D, 0x70, 0x21, 0xB4, 0xB3, 0x32, + 0xE7, 0x8B, 0xA2, 0xD5, 0x86, 0x39, 0x02, 0xB1, 0xB8, 0xD2, 0x47, 0xCE, + 0xE4, 0xC9, 0x49, 0xC4, 0x3B, 0xA7, 0xDE, 0xFB, 0x54, 0x7D, 0x57, 0xBE, + 0xF0, 0xE8, 0x6E, 0xC2, 0x79, 0xB2, 0x3A, 0x0B, 0x55, 0xE2, 0x50, 0x98, + 0x16, 0x32, 0x13, 0x5C, 0x2F, 0x78, 0x56, 0xC1, 0xC2, 0x94, 0xB3, 0xF2, + 0x5A, 0xE4, 0x27, 0x9A, 0x9F, 0x24, 0xD7, 0xC6, 0xEC, 0xD0, 0x9B, 0x25, + 0x82, 0xE3, 0xCC, 0xC2, 0xC4, 0x45, 0xC5, 0x8C, 0x97, 0x7A, 0x06, 0x6B, + 0x2A, 0x11, 0x9F, 0xA9, 0x0A, 0x6E, 0x48, 0x3B, 0x6F, 0xDB, 0xD4, 0x11, + 0x19, 0x42, 0xF7, 0x8F, 0x07, 0xBF, 0xF5, 0x53, 0x5F, 0x9C, 0x3E, 0xF4, + 0x17, 0x2C, 0xE6, 0x69, 0xAC, 0x4E, 0x32, 0x4C, 0x62, 0x77, 0xEA, 0xB7, + 0xE8, 0xE5, 0xBB, 0x34, 0xBC, 0x19, 0x8B, 0xAE, 0x9C, 0x51, 0xE7, 0xB7, + 0x7E, 0xB5, 0x53, 0xB1, 0x33, 0x22, 0xE5, 0x6D, 0xCF, 0x70, 0x3C, 0x1A, + 0xFA, 0xE2, 0x9B, 0x67, 0xB6, 0x83, 0xF4, 0x8D, 0xA5, 0xAF, 0x62, 0x4C, + 0x4D, 0xE0, 0x58, 0xAC, 0x64, 0x34, 0x12, 0x03, 0xF8, 0xB6, 0x8D, 0x94, + 0x63, 0x24, 0xA4, 0x71 +}; + +static const unsigned char TA101_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA102_DN[] = { + 0x30, 0x81, 0xBF, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x0D, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2C, 0x20, + 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x1F, 0x53, 0x65, 0x65, 0x20, 0x77, 0x77, 0x77, 0x2E, 0x65, + 0x6E, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x6E, 0x65, 0x74, 0x2F, 0x6C, + 0x65, 0x67, 0x61, 0x6C, 0x2D, 0x74, 0x65, 0x72, 0x6D, 0x73, 0x31, 0x39, + 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x30, 0x28, 0x63, 0x29, + 0x20, 0x32, 0x30, 0x31, 0x32, 0x20, 0x45, 0x6E, 0x74, 0x72, 0x75, 0x73, + 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x20, 0x2D, 0x20, 0x66, 0x6F, + 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x64, + 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x31, 0x33, 0x30, + 0x31, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2A, 0x45, 0x6E, 0x74, 0x72, + 0x75, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x45, + 0x43, 0x31 +}; + +static const unsigned char TA102_EC_Q[] = { + 0x04, 0x84, 0x13, 0xC9, 0xD0, 0xBA, 0x6D, 0x41, 0x7B, 0xE2, 0x6C, 0xD0, + 0xEB, 0x55, 0x5F, 0x66, 0x02, 0x1A, 0x24, 0xF4, 0x5B, 0x89, 0x69, 0x47, + 0xE3, 0xB8, 0xC2, 0x7D, 0xF1, 0xF2, 0x02, 0xC5, 0x9F, 0xA0, 0xF6, 0x5B, + 0xD5, 0x8B, 0x06, 0x19, 0x86, 0x4F, 0x53, 0x10, 0x6D, 0x07, 0x24, 0x27, + 0xA1, 0xA0, 0xF8, 0xD5, 0x47, 0x19, 0x61, 0x4C, 0x7D, 0xCA, 0x93, 0x27, + 0xEA, 0x74, 0x0C, 0xEF, 0x6F, 0x96, 0x09, 0xFE, 0x63, 0xEC, 0x70, 0x5D, + 0x36, 0xAD, 0x67, 0x77, 0xAE, 0xC9, 0x9D, 0x7C, 0x55, 0x44, 0x3A, 0xA2, + 0x63, 0x51, 0x1F, 0xF5, 0xE3, 0x62, 0xD4, 0xA9, 0x47, 0x07, 0x3E, 0xCC, + 0x20 +}; + +static const unsigned char TA103_DN[] = { + 0x30, 0x56, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x4E, 0x31, 0x30, 0x30, 0x2E, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x27, 0x43, 0x68, 0x69, 0x6E, 0x61, 0x20, 0x46, 0x69, 0x6E, 0x61, + 0x6E, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x0C, 0x0C, 0x43, 0x46, 0x43, 0x41, 0x20, 0x45, 0x56, 0x20, + 0x52, 0x4F, 0x4F, 0x54 +}; + +static const unsigned char TA103_RSA_N[] = { + 0xD7, 0x5D, 0x6B, 0xCD, 0x10, 0x3F, 0x1F, 0x05, 0x59, 0xD5, 0x05, 0x4D, + 0x37, 0xB1, 0x0E, 0xEC, 0x98, 0x2B, 0x8E, 0x15, 0x1D, 0xFA, 0x93, 0x4B, + 0x17, 0x82, 0x21, 0x71, 0x10, 0x52, 0xD7, 0x51, 0x64, 0x70, 0x16, 0xC2, + 0x55, 0x69, 0x4D, 0x8E, 0x15, 0x6D, 0x9F, 0xBF, 0x0C, 0x1B, 0xC2, 0xE0, + 0xA3, 0x67, 0xD6, 0x0C, 0xAC, 0xCF, 0x22, 0xAE, 0xAF, 0x77, 0x54, 0x2A, + 0x4B, 0x4C, 0x8A, 0x53, 0x52, 0x7A, 0xC3, 0xEE, 0x2E, 0xDE, 0xB3, 0x71, + 0x25, 0xC1, 0xE9, 0x5D, 0x3D, 0xEE, 0xA1, 0x2F, 0xA3, 0xF7, 0x2A, 0x3C, + 0xC9, 0x23, 0x1D, 0x6A, 0xAB, 0x1D, 0xA1, 0xA7, 0xF1, 0xF3, 0xEC, 0xA0, + 0xD5, 0x44, 0xCF, 0x15, 0xCF, 0x72, 0x2F, 0x1D, 0x63, 0x97, 0xE8, 0x99, + 0xF9, 0xFD, 0x93, 0xA4, 0x54, 0x80, 0x4C, 0x52, 0xD4, 0x52, 0xAB, 0x2E, + 0x49, 0xDF, 0x90, 0xCD, 0xB8, 0x5F, 0xBE, 0x3F, 0xDE, 0xA1, 0xCA, 0x4D, + 0x20, 0xD4, 0x25, 0xE8, 0x84, 0x29, 0x53, 0xB7, 0xB1, 0x88, 0x1F, 0xFF, + 0xFA, 0xDA, 0x90, 0x9F, 0x0A, 0xA9, 0x2D, 0x41, 0x3F, 0xB1, 0xF1, 0x18, + 0x29, 0xEE, 0x16, 0x59, 0x2C, 0x34, 0x49, 0x1A, 0xA8, 0x06, 0xD7, 0xA8, + 0x88, 0xD2, 0x03, 0x72, 0x7A, 0x32, 0xE2, 0xEA, 0x68, 0x4D, 0x6E, 0x2C, + 0x96, 0x65, 0x7B, 0xCA, 0x59, 0xFA, 0xF2, 0xE2, 0xDD, 0xEE, 0x30, 0x2C, + 0xFB, 0xCC, 0x46, 0xAC, 0xC4, 0x63, 0xEB, 0x6F, 0x7F, 0x36, 0x2B, 0x34, + 0x73, 0x12, 0x94, 0x7F, 0xDF, 0xCC, 0x26, 0x9E, 0xF1, 0x72, 0x5D, 0x50, + 0x65, 0x59, 0x8F, 0x69, 0xB3, 0x87, 0x5E, 0x32, 0x6F, 0xC3, 0x18, 0x8A, + 0xB5, 0x95, 0x8F, 0xB0, 0x7A, 0x37, 0xDE, 0x5A, 0x45, 0x3B, 0xC7, 0x36, + 0xE1, 0xEF, 0x67, 0xD1, 0x39, 0xD3, 0x97, 0x5B, 0x73, 0x62, 0x19, 0x48, + 0x2D, 0x87, 0x1C, 0x06, 0xFB, 0x74, 0x98, 0x20, 0x49, 0x73, 0xF0, 0x05, + 0xD2, 0x1B, 0xB1, 0xA0, 0xA3, 0xB7, 0x1B, 0x70, 0xD3, 0x88, 0x69, 0xB9, + 0x5A, 0xD6, 0x38, 0xF4, 0x62, 0xDC, 0x25, 0x8B, 0x78, 0xBF, 0xF8, 0xE8, + 0x7E, 0xB8, 0x5C, 0xC9, 0x95, 0x4F, 0x5F, 0xA7, 0x2D, 0xB9, 0x20, 0x6B, + 0xCF, 0x6B, 0xDD, 0xF5, 0x0D, 0xF4, 0x82, 0xB7, 0xF4, 0xB2, 0x66, 0x2E, + 0x10, 0x28, 0xF6, 0x97, 0x5A, 0x7B, 0x96, 0x16, 0x8F, 0x01, 0x19, 0x2D, + 0x6C, 0x6E, 0x7F, 0x39, 0x58, 0x06, 0x64, 0x83, 0x01, 0x83, 0x83, 0xC3, + 0x4D, 0x92, 0xDD, 0x32, 0xC6, 0x87, 0xA4, 0x37, 0xE9, 0x16, 0xCE, 0xAA, + 0x2D, 0x68, 0xAF, 0x0A, 0x81, 0x65, 0x3A, 0x70, 0xC1, 0x9B, 0xAD, 0x4D, + 0x6D, 0x54, 0xCA, 0x2A, 0x2D, 0x4B, 0x85, 0x1B, 0xB3, 0x80, 0xE6, 0x70, + 0x45, 0x0D, 0x6B, 0x5E, 0x35, 0xF0, 0x7F, 0x3B, 0xB8, 0x9C, 0xE4, 0x04, + 0x70, 0x89, 0x12, 0x25, 0x93, 0xDA, 0x0A, 0x99, 0x22, 0x60, 0x6A, 0x63, + 0x60, 0x4E, 0x76, 0x06, 0x98, 0x4E, 0xBD, 0x83, 0xAD, 0x1D, 0x58, 0x8A, + 0x25, 0x85, 0xD2, 0xC7, 0x65, 0x1E, 0x2D, 0x8E, 0xC6, 0xDF, 0xB6, 0xC6, + 0xE1, 0x7F, 0x8A, 0x04, 0x21, 0x15, 0x29, 0x74, 0xF0, 0x3E, 0x9C, 0x90, + 0x9D, 0x0C, 0x2E, 0xF1, 0x8A, 0x3E, 0x5A, 0xAA, 0x0C, 0x09, 0x1E, 0xC7, + 0xD5, 0x3C, 0xA3, 0xED, 0x97, 0xC3, 0x1E, 0x34, 0xFA, 0x38, 0xF9, 0x08, + 0x0E, 0xE3, 0xC0, 0x5D, 0x2B, 0x83, 0xD1, 0x56, 0x6A, 0xC9, 0xB6, 0xA8, + 0x54, 0x53, 0x2E, 0x78, 0x32, 0x67, 0x3D, 0x82, 0x7F, 0x74, 0xD0, 0xFB, + 0xE1, 0xB6, 0x05, 0x60, 0xB9, 0x70, 0xDB, 0x8E, 0x0B, 0xF9, 0x13, 0x58, + 0x6F, 0x71, 0x60, 0x10, 0x52, 0x10, 0xB9, 0xC1, 0x41, 0x09, 0xEF, 0x72, + 0x1F, 0x67, 0x31, 0x78, 0xFF, 0x96, 0x05, 0x8D +}; + +static const unsigned char TA103_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA104_DN[] = { + 0x30, 0x6D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x48, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x07, 0x57, 0x49, 0x53, 0x65, 0x4B, 0x65, 0x79, 0x31, 0x22, 0x30, + 0x20, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x19, 0x4F, 0x49, 0x53, 0x54, + 0x45, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x20, 0x45, 0x6E, 0x64, 0x6F, 0x72, 0x73, 0x65, 0x64, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1F, 0x4F, 0x49, 0x53, 0x54, + 0x45, 0x20, 0x57, 0x49, 0x53, 0x65, 0x4B, 0x65, 0x79, 0x20, 0x47, 0x6C, + 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x47, 0x42, + 0x20, 0x43, 0x41 +}; + +static const unsigned char TA104_RSA_N[] = { + 0xD8, 0x17, 0xB7, 0x1C, 0x4A, 0x24, 0x2A, 0xD6, 0x97, 0xB1, 0xCA, 0xE2, + 0x1E, 0xFB, 0x7D, 0x38, 0xEF, 0x98, 0xF5, 0xB2, 0x39, 0x98, 0x4E, 0x27, + 0xB8, 0x11, 0x5D, 0x7B, 0xD2, 0x25, 0x94, 0x88, 0x82, 0x15, 0x26, 0x6A, + 0x1B, 0x31, 0xBB, 0xA8, 0x5B, 0x21, 0x21, 0x2B, 0xD8, 0x0F, 0x4E, 0x9F, + 0x5A, 0xF1, 0xB1, 0x5A, 0xE4, 0x79, 0xD6, 0x32, 0x23, 0x2B, 0xE1, 0x53, + 0xCC, 0x99, 0x45, 0x5C, 0x7B, 0x4F, 0xAD, 0xBC, 0xBF, 0x87, 0x4A, 0x0B, + 0x4B, 0x97, 0x5A, 0xA8, 0xF6, 0x48, 0xEC, 0x7D, 0x7B, 0x0D, 0xCD, 0x21, + 0x06, 0xDF, 0x9E, 0x15, 0xFD, 0x41, 0x8A, 0x48, 0xB7, 0x20, 0xF4, 0xA1, + 0x7A, 0x1B, 0x57, 0xD4, 0x5D, 0x50, 0xFF, 0xBA, 0x67, 0xD8, 0x23, 0x99, + 0x1F, 0xC8, 0x3F, 0xE3, 0xDE, 0xFF, 0x6F, 0x5B, 0x77, 0xB1, 0x6B, 0x6E, + 0xB8, 0xC9, 0x64, 0xF7, 0xE1, 0xCA, 0x41, 0x46, 0x0E, 0x29, 0x71, 0xD0, + 0xB9, 0x23, 0xFC, 0xC9, 0x81, 0x5F, 0x4E, 0xF7, 0x6F, 0xDF, 0xBF, 0x84, + 0xAD, 0x73, 0x64, 0xBB, 0xB7, 0x42, 0x8E, 0x69, 0xF6, 0xD4, 0x76, 0x1D, + 0x7E, 0x9D, 0xA7, 0xB8, 0x57, 0x8A, 0x51, 0x67, 0x72, 0xD7, 0xD4, 0xA8, + 0xB8, 0x95, 0x54, 0x40, 0x73, 0x03, 0xF6, 0xEA, 0xF4, 0xEB, 0xFE, 0x28, + 0x42, 0x77, 0x3F, 0x9D, 0x23, 0x1B, 0xB2, 0xB6, 0x3D, 0x80, 0x14, 0x07, + 0x4C, 0x2E, 0x4F, 0xF7, 0xD5, 0x0A, 0x16, 0x0D, 0xBD, 0x66, 0x43, 0x37, + 0x7E, 0x23, 0x43, 0x79, 0xC3, 0x40, 0x86, 0xF5, 0x4C, 0x29, 0xDA, 0x8E, + 0x9A, 0xAD, 0x0D, 0xA5, 0x04, 0x87, 0x88, 0x1E, 0x85, 0xE3, 0xE9, 0x53, + 0xD5, 0x9B, 0xC8, 0x8B, 0x03, 0x63, 0x78, 0xEB, 0xE0, 0x19, 0x4A, 0x6E, + 0xBB, 0x2F, 0x6B, 0x33, 0x64, 0x58, 0x93, 0xAD, 0x69, 0xBF, 0x8F, 0x1B, + 0xEF, 0x82, 0x48, 0xC7 +}; + +static const unsigned char TA104_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA105_DN[] = { + 0x30, 0x51, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x50, 0x4C, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x1F, 0x4B, 0x72, 0x61, 0x6A, 0x6F, 0x77, 0x61, 0x20, 0x49, 0x7A, + 0x62, 0x61, 0x20, 0x52, 0x6F, 0x7A, 0x6C, 0x69, 0x63, 0x7A, 0x65, 0x6E, + 0x69, 0x6F, 0x77, 0x61, 0x20, 0x53, 0x2E, 0x41, 0x2E, 0x31, 0x18, 0x30, + 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x53, 0x5A, 0x41, 0x46, + 0x49, 0x52, 0x20, 0x52, 0x4F, 0x4F, 0x54, 0x20, 0x43, 0x41, 0x32 +}; + +static const unsigned char TA105_RSA_N[] = { + 0xB7, 0xBC, 0x3E, 0x50, 0xA8, 0x4B, 0xCD, 0x40, 0xB5, 0xCE, 0x61, 0xE7, + 0x96, 0xCA, 0xB4, 0xA1, 0xDA, 0x0C, 0x22, 0xB0, 0xFA, 0xB5, 0x7B, 0x76, + 0x00, 0x77, 0x8C, 0x0B, 0xCF, 0x7D, 0xA8, 0x86, 0xCC, 0x26, 0x51, 0xE4, + 0x20, 0x3D, 0x85, 0x0C, 0xD6, 0x58, 0xE3, 0xE7, 0xF4, 0x2A, 0x18, 0x9D, + 0xDA, 0xD1, 0xAE, 0x26, 0xEE, 0xEB, 0x53, 0xDC, 0xF4, 0x90, 0xD6, 0x13, + 0x4A, 0x0C, 0x90, 0x3C, 0xC3, 0xF4, 0xDA, 0xD2, 0x8E, 0x0D, 0x92, 0x3A, + 0xDC, 0xB1, 0xB1, 0xFF, 0x38, 0xDE, 0xC3, 0xBA, 0x2D, 0x5F, 0x80, 0xB9, + 0x02, 0xBD, 0x4A, 0x9D, 0x1B, 0x0F, 0xB4, 0xC3, 0xC2, 0xC1, 0x67, 0x03, + 0xDD, 0xDC, 0x1B, 0x9C, 0x3D, 0xB3, 0xB0, 0xDE, 0x00, 0x1E, 0xA8, 0x34, + 0x47, 0xBB, 0x9A, 0xEB, 0xFE, 0x0B, 0x14, 0xBD, 0x36, 0x84, 0xDA, 0x0D, + 0x20, 0xBF, 0xFA, 0x5B, 0xCB, 0xA9, 0x16, 0x20, 0xAD, 0x39, 0x60, 0xEE, + 0x2F, 0x75, 0xB6, 0xE7, 0x97, 0x9C, 0xF9, 0x3E, 0xFD, 0x7E, 0x4D, 0x6F, + 0x4D, 0x2F, 0xEF, 0x88, 0x0D, 0x6A, 0xFA, 0xDD, 0xF1, 0x3D, 0x6E, 0x20, + 0xA5, 0xA0, 0x12, 0xB4, 0x4D, 0x70, 0xB9, 0xCE, 0xD7, 0x72, 0x3B, 0x89, + 0x93, 0xA7, 0x80, 0x84, 0x1C, 0x27, 0x49, 0x72, 0x49, 0xB5, 0xFF, 0x3B, + 0x95, 0x9E, 0xC1, 0xCC, 0xC8, 0x01, 0xEC, 0xE8, 0x0E, 0x8A, 0x0A, 0x96, + 0xE7, 0xB3, 0xA6, 0x87, 0xE5, 0xD6, 0xF9, 0x05, 0x2B, 0x0D, 0x97, 0x40, + 0x70, 0x3C, 0xBA, 0xAC, 0x75, 0x5A, 0x9C, 0xD5, 0x4D, 0x9D, 0x02, 0x0A, + 0xD2, 0x4B, 0x9B, 0x66, 0x4B, 0x46, 0x07, 0x17, 0x65, 0xAD, 0x9F, 0x6C, + 0x88, 0x00, 0xDC, 0x22, 0x89, 0xE0, 0xE1, 0x64, 0xD4, 0x67, 0xBC, 0x31, + 0x79, 0x61, 0x3C, 0xBB, 0xCA, 0x41, 0xCD, 0x5C, 0x6A, 0x00, 0xC8, 0x3C, + 0x38, 0x8E, 0x58, 0xAF +}; + +static const unsigned char TA105_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA106_DN[] = { + 0x30, 0x81, 0x80, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x50, 0x4C, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, + 0x0A, 0x13, 0x19, 0x55, 0x6E, 0x69, 0x7A, 0x65, 0x74, 0x6F, 0x20, 0x54, + 0x65, 0x63, 0x68, 0x6E, 0x6F, 0x6C, 0x6F, 0x67, 0x69, 0x65, 0x73, 0x20, + 0x53, 0x2E, 0x41, 0x2E, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, + 0x0B, 0x13, 0x1E, 0x43, 0x65, 0x72, 0x74, 0x75, 0x6D, 0x20, 0x43, 0x65, + 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x24, 0x30, + 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x43, 0x65, 0x72, 0x74, + 0x75, 0x6D, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x4E, + 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x43, 0x41, 0x20, 0x32 +}; + +static const unsigned char TA106_RSA_N[] = { + 0xBD, 0xF9, 0x78, 0xF8, 0xE6, 0xD5, 0x80, 0x0C, 0x64, 0x9D, 0x86, 0x1B, + 0x96, 0x64, 0x67, 0x3F, 0x22, 0x3A, 0x1E, 0x75, 0x01, 0x7D, 0xEF, 0xFB, + 0x5C, 0x67, 0x8C, 0xC9, 0xCC, 0x5C, 0x6B, 0xA9, 0x91, 0xE6, 0xB9, 0x42, + 0xE5, 0x20, 0x4B, 0x9B, 0xDA, 0x9B, 0x7B, 0xB9, 0x99, 0x5D, 0xD9, 0x9B, + 0x80, 0x4B, 0xD7, 0x84, 0x40, 0x2B, 0x27, 0xD3, 0xE8, 0xBA, 0x30, 0xBB, + 0x3E, 0x09, 0x1A, 0xA7, 0x49, 0x95, 0xEF, 0x2B, 0x40, 0x24, 0xC2, 0x97, + 0xC7, 0xA7, 0xEE, 0x9B, 0x25, 0xEF, 0xA8, 0x0A, 0x00, 0x97, 0x85, 0x5A, + 0xAA, 0x9D, 0xDC, 0x29, 0xC9, 0xE2, 0x35, 0x07, 0xEB, 0x70, 0x4D, 0x4A, + 0xD6, 0xC1, 0xB3, 0x56, 0xB8, 0xA1, 0x41, 0x38, 0x9B, 0xD1, 0xFB, 0x31, + 0x7F, 0x8F, 0xE0, 0x5F, 0xE1, 0xB1, 0x3F, 0x0F, 0x8E, 0x16, 0x49, 0x60, + 0xD7, 0x06, 0x8D, 0x18, 0xF9, 0xAA, 0x26, 0x10, 0xAB, 0x2A, 0xD3, 0xD0, + 0xD1, 0x67, 0x8D, 0x1B, 0x46, 0xBE, 0x47, 0x30, 0xD5, 0x2E, 0x72, 0xD1, + 0xC5, 0x63, 0xDA, 0xE7, 0x63, 0x79, 0x44, 0x7E, 0x4B, 0x63, 0x24, 0x89, + 0x86, 0x2E, 0x34, 0x3F, 0x29, 0x4C, 0x52, 0x8B, 0x2A, 0xA7, 0xC0, 0xE2, + 0x91, 0x28, 0x89, 0xB9, 0xC0, 0x5B, 0xF9, 0x1D, 0xD9, 0xE7, 0x27, 0xAD, + 0xFF, 0x9A, 0x02, 0x97, 0xC1, 0xC6, 0x50, 0x92, 0x9B, 0x02, 0x2C, 0xBD, + 0xA9, 0xB9, 0x34, 0x59, 0x0A, 0xBF, 0x84, 0x4A, 0xFF, 0xDF, 0xFE, 0xB3, + 0x9F, 0xEB, 0xD9, 0x9E, 0xE0, 0x98, 0x23, 0xEC, 0xA6, 0x6B, 0x77, 0x16, + 0x2A, 0xDB, 0xCC, 0xAD, 0x3B, 0x1C, 0xA4, 0x87, 0xDC, 0x46, 0x73, 0x5E, + 0x19, 0x62, 0x68, 0x45, 0x57, 0xE4, 0x90, 0x82, 0x42, 0xBB, 0x42, 0xD6, + 0xF0, 0x61, 0xE0, 0xC1, 0xA3, 0x3D, 0x66, 0xA3, 0x5D, 0xF4, 0x18, 0xEE, + 0x88, 0xC9, 0x8D, 0x17, 0x45, 0x29, 0x99, 0x32, 0x75, 0x02, 0x31, 0xEE, + 0x29, 0x26, 0xC8, 0x6B, 0x02, 0xE6, 0xB5, 0x62, 0x45, 0x7F, 0x37, 0x15, + 0x5A, 0x23, 0x68, 0x89, 0xD4, 0x3E, 0xDE, 0x4E, 0x27, 0xB0, 0xF0, 0x40, + 0x0C, 0xBC, 0x4D, 0x17, 0xCB, 0x4D, 0xA2, 0xB3, 0x1E, 0xD0, 0x06, 0x5A, + 0xDD, 0xF6, 0x93, 0xCF, 0x57, 0x75, 0x99, 0xF5, 0xFA, 0x86, 0x1A, 0x67, + 0x78, 0xB3, 0xBF, 0x96, 0xFE, 0x34, 0xDC, 0xBD, 0xE7, 0x52, 0x56, 0xE5, + 0xB3, 0xE5, 0x75, 0x7B, 0xD7, 0x41, 0x91, 0x05, 0xDC, 0x5D, 0x69, 0xE3, + 0x95, 0x0D, 0x43, 0xB9, 0xFC, 0x83, 0x96, 0x39, 0x95, 0x7B, 0x6C, 0x80, + 0x5A, 0x4F, 0x13, 0x72, 0xC6, 0xD7, 0x7D, 0x29, 0x7A, 0x44, 0xBA, 0x52, + 0xA4, 0x2A, 0xD5, 0x41, 0x46, 0x09, 0x20, 0xFE, 0x22, 0xA0, 0xB6, 0x5B, + 0x30, 0x8D, 0xBC, 0x89, 0x0C, 0xD5, 0xD7, 0x70, 0xF8, 0x87, 0x52, 0xFD, + 0xDA, 0xEF, 0xAC, 0x51, 0x2E, 0x07, 0xB3, 0x4E, 0xFE, 0xD0, 0x09, 0xDA, + 0x70, 0xEF, 0x98, 0xFA, 0x56, 0xE6, 0x6D, 0xDB, 0xB5, 0x57, 0x4B, 0xDC, + 0xE5, 0x2C, 0x25, 0x15, 0xC8, 0x9E, 0x2E, 0x78, 0x4E, 0xF8, 0xDA, 0x9C, + 0x9E, 0x86, 0x2C, 0xCA, 0x57, 0xF3, 0x1A, 0xE5, 0xC8, 0x92, 0x8B, 0x1A, + 0x82, 0x96, 0x7A, 0xC3, 0xBC, 0x50, 0x12, 0x69, 0xD8, 0x0E, 0x5A, 0x46, + 0x8B, 0x3A, 0xEB, 0x26, 0xFA, 0x23, 0xC9, 0xB6, 0xB0, 0x81, 0xBE, 0x42, + 0x00, 0xA4, 0xF8, 0xD6, 0xFE, 0x30, 0x2E, 0xC7, 0xD2, 0x46, 0xF6, 0xE5, + 0x8E, 0x75, 0xFD, 0xF2, 0xCC, 0xB9, 0xD0, 0x87, 0x5B, 0xCC, 0x06, 0x10, + 0x60, 0xBB, 0x83, 0x35, 0xB7, 0x5E, 0x67, 0xDE, 0x47, 0xEC, 0x99, 0x48, + 0xF1, 0xA4, 0xA1, 0x15, 0xFE, 0xAD, 0x8C, 0x62, 0x8E, 0x39, 0x55, 0x4F, + 0x39, 0x16, 0xB9, 0xB1, 0x63, 0x9D, 0xFF, 0xB7 +}; + +static const unsigned char TA106_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA107_DN[] = { + 0x30, 0x81, 0xA6, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x47, 0x52, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x06, 0x41, 0x74, 0x68, 0x65, 0x6E, 0x73, 0x31, 0x44, 0x30, + 0x42, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x3B, 0x48, 0x65, 0x6C, 0x6C, + 0x65, 0x6E, 0x69, 0x63, 0x20, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6D, 0x69, + 0x63, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x20, 0x49, 0x6E, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, + 0x6F, 0x6E, 0x73, 0x20, 0x43, 0x65, 0x72, 0x74, 0x2E, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x40, 0x30, 0x3E, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x37, 0x48, 0x65, 0x6C, 0x6C, 0x65, 0x6E, + 0x69, 0x63, 0x20, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6D, 0x69, 0x63, 0x20, + 0x61, 0x6E, 0x64, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x20, 0x49, 0x6E, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, + 0x73, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x20, 0x32, 0x30, 0x31, + 0x35 +}; + +static const unsigned char TA107_RSA_N[] = { + 0xC2, 0xF8, 0xA9, 0x3F, 0x1B, 0x89, 0xFC, 0x3C, 0x3C, 0x04, 0x5D, 0x3D, + 0x90, 0x36, 0xB0, 0x91, 0x3A, 0x79, 0x3C, 0x66, 0x5A, 0xEF, 0x6D, 0x39, + 0x01, 0x49, 0x1A, 0xB4, 0xB7, 0xCF, 0x7F, 0x4D, 0x23, 0x53, 0xB7, 0x90, + 0x00, 0xE3, 0x13, 0x2A, 0x28, 0xA6, 0x31, 0xF1, 0x91, 0x00, 0xE3, 0x28, + 0xEC, 0xAE, 0x21, 0x41, 0xCE, 0x1F, 0xDA, 0xFD, 0x7D, 0x12, 0x5B, 0x01, + 0x83, 0x0F, 0xB9, 0xB0, 0x5F, 0x99, 0xE1, 0xF2, 0x12, 0x83, 0x80, 0x4D, + 0x06, 0x3E, 0xDF, 0xAC, 0xAF, 0xE7, 0xA1, 0x88, 0x6B, 0x31, 0xAF, 0xF0, + 0x8B, 0xD0, 0x18, 0x33, 0xB8, 0xDB, 0x45, 0x6A, 0x34, 0xF4, 0x02, 0x80, + 0x24, 0x28, 0x0A, 0x02, 0x15, 0x95, 0x5E, 0x76, 0x2A, 0x0D, 0x99, 0x3A, + 0x14, 0x5B, 0xF6, 0xCB, 0xCB, 0x53, 0xBC, 0x13, 0x4D, 0x01, 0x88, 0x37, + 0x94, 0x25, 0x1B, 0x42, 0xBC, 0x22, 0xD8, 0x8E, 0xA3, 0x96, 0x5E, 0x3A, + 0xD9, 0x32, 0xDB, 0x3E, 0xE8, 0xF0, 0x10, 0x65, 0xED, 0x74, 0xE1, 0x2F, + 0xA7, 0x7C, 0xAF, 0x27, 0x34, 0xBB, 0x29, 0x7D, 0x9B, 0xB6, 0xCF, 0x09, + 0xC8, 0xE5, 0xD3, 0x0A, 0xFC, 0x88, 0x65, 0x65, 0x74, 0x0A, 0xDC, 0x73, + 0x1C, 0x5C, 0xCD, 0x40, 0xB1, 0x1C, 0xD4, 0xB6, 0x84, 0x8C, 0x4C, 0x50, + 0xCF, 0x68, 0x8E, 0xA8, 0x59, 0xAE, 0xC2, 0x27, 0x4E, 0x82, 0xA2, 0x35, + 0xDD, 0x14, 0xF4, 0x1F, 0xFF, 0xB2, 0x77, 0xD5, 0x87, 0x2F, 0xAA, 0x6E, + 0x7D, 0x24, 0x27, 0xE7, 0xC6, 0xCB, 0x26, 0xE6, 0xE5, 0xFE, 0x67, 0x07, + 0x63, 0xD8, 0x45, 0x0D, 0xDD, 0x3A, 0x59, 0x65, 0x39, 0x58, 0x7A, 0x92, + 0x99, 0x72, 0x3D, 0x9C, 0x84, 0x5E, 0x88, 0x21, 0xB8, 0xD5, 0xF4, 0x2C, + 0xFC, 0xD9, 0x70, 0x52, 0x4F, 0x78, 0xB8, 0xBD, 0x3C, 0x2B, 0x8B, 0x95, + 0x98, 0xF5, 0xB3, 0xD1, 0x68, 0xCF, 0x20, 0x14, 0x7E, 0x4C, 0x5C, 0x5F, + 0xE7, 0x8B, 0xE5, 0xF5, 0x35, 0x81, 0x19, 0x37, 0xD7, 0x11, 0x08, 0xB7, + 0x66, 0xBE, 0xD3, 0x4A, 0xCE, 0x83, 0x57, 0x00, 0x3A, 0xC3, 0x81, 0xF8, + 0x17, 0xCB, 0x92, 0x36, 0x5D, 0xD1, 0xA3, 0xD8, 0x75, 0x1B, 0xE1, 0x8B, + 0x27, 0xEA, 0x7A, 0x48, 0x41, 0xFD, 0x45, 0x19, 0x06, 0xAD, 0x27, 0x99, + 0x4E, 0xC1, 0x70, 0x47, 0xDD, 0xB5, 0x9F, 0x81, 0x53, 0x12, 0xE5, 0xB1, + 0x8C, 0x48, 0x5D, 0x31, 0x43, 0x17, 0xE3, 0x8C, 0xC6, 0x7A, 0x63, 0x96, + 0x4B, 0x29, 0x30, 0x4E, 0x84, 0x4E, 0x62, 0x19, 0x5E, 0x3C, 0xCE, 0x97, + 0x90, 0xA5, 0x7F, 0x01, 0xEB, 0x9D, 0xE0, 0xF8, 0x8B, 0x89, 0xDD, 0x25, + 0x98, 0x3D, 0x92, 0xB6, 0x7E, 0xEF, 0xD9, 0xF1, 0x51, 0x51, 0x7D, 0x2D, + 0x26, 0xC8, 0x69, 0x59, 0x61, 0xE0, 0xAC, 0x6A, 0xB8, 0x2A, 0x36, 0x11, + 0x04, 0x7A, 0x50, 0xBD, 0x32, 0x84, 0xBE, 0x2F, 0xDC, 0x72, 0xD5, 0xD7, + 0x1D, 0x16, 0x47, 0xE4, 0x47, 0x66, 0x20, 0x3F, 0xF4, 0x96, 0xC5, 0xAF, + 0x8E, 0x01, 0x7A, 0xA5, 0x0F, 0x7A, 0x64, 0xF5, 0x0D, 0x18, 0x87, 0xD9, + 0xAE, 0x88, 0xD5, 0xFA, 0x84, 0xC1, 0x3A, 0xC0, 0x69, 0x28, 0x2D, 0xF2, + 0x0D, 0x68, 0x51, 0xAA, 0xE3, 0xA5, 0x77, 0xC6, 0xA4, 0x90, 0x0E, 0xA1, + 0x37, 0x8B, 0x31, 0x23, 0x47, 0xC1, 0x09, 0x08, 0xEB, 0x6E, 0xF7, 0x78, + 0x9B, 0xD7, 0x82, 0xFC, 0x84, 0x20, 0x99, 0x49, 0x19, 0xB6, 0x12, 0x46, + 0xB1, 0xFB, 0x45, 0x55, 0x16, 0xA9, 0xA3, 0x65, 0xAC, 0x9C, 0x07, 0x0F, + 0xEA, 0x6B, 0xDC, 0x1F, 0x2E, 0x06, 0x72, 0xEC, 0x86, 0x88, 0x12, 0xE4, + 0x2D, 0xDB, 0x5F, 0x05, 0x2F, 0xE4, 0xF0, 0x03, 0xD3, 0x26, 0x33, 0xE7, + 0x80, 0xC2, 0xCD, 0x42, 0xA1, 0x17, 0x34, 0x0B +}; + +static const unsigned char TA107_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA108_DN[] = { + 0x30, 0x81, 0xAA, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x47, 0x52, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x06, 0x41, 0x74, 0x68, 0x65, 0x6E, 0x73, 0x31, 0x44, 0x30, + 0x42, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x3B, 0x48, 0x65, 0x6C, 0x6C, + 0x65, 0x6E, 0x69, 0x63, 0x20, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6D, 0x69, + 0x63, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x20, 0x49, 0x6E, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, + 0x6F, 0x6E, 0x73, 0x20, 0x43, 0x65, 0x72, 0x74, 0x2E, 0x20, 0x41, 0x75, + 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x31, 0x44, 0x30, 0x42, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x3B, 0x48, 0x65, 0x6C, 0x6C, 0x65, 0x6E, + 0x69, 0x63, 0x20, 0x41, 0x63, 0x61, 0x64, 0x65, 0x6D, 0x69, 0x63, 0x20, + 0x61, 0x6E, 0x64, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x20, 0x49, 0x6E, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x69, 0x6F, 0x6E, + 0x73, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, + 0x20, 0x32, 0x30, 0x31, 0x35 +}; + +static const unsigned char TA108_EC_Q[] = { + 0x04, 0x92, 0xA0, 0x41, 0xE8, 0x4B, 0x82, 0x84, 0x5C, 0xE2, 0xF8, 0x31, + 0x11, 0x99, 0x86, 0x64, 0x4E, 0x09, 0x25, 0x2F, 0x9D, 0x41, 0x2F, 0x0A, + 0xAE, 0x35, 0x4F, 0x74, 0x95, 0xB2, 0x51, 0x64, 0x6B, 0x8D, 0x6B, 0xE6, + 0x3F, 0x70, 0x95, 0xF0, 0x05, 0x44, 0x47, 0xA6, 0x72, 0x38, 0x50, 0x76, + 0x95, 0x02, 0x5A, 0x8E, 0xAE, 0x28, 0x9E, 0xF9, 0x2D, 0x4E, 0x99, 0xEF, + 0x2C, 0x48, 0x6F, 0x4C, 0x25, 0x29, 0xE8, 0xD1, 0x71, 0x5B, 0xDF, 0x1D, + 0xC1, 0x75, 0x37, 0xB4, 0xD7, 0xFA, 0x7B, 0x7A, 0x42, 0x9C, 0x6A, 0x0A, + 0x56, 0x5A, 0x7C, 0x69, 0x0B, 0xAA, 0x80, 0x09, 0x24, 0x6C, 0x7E, 0xC1, + 0x46 +}; + +static const unsigned char TA109_DN[] = { + 0x30, 0x4F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x53, + 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x65, 0x73, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x31, 0x15, + 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0C, 0x49, 0x53, 0x52, + 0x47, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x58, 0x31 +}; + +static const unsigned char TA109_RSA_N[] = { + 0xAD, 0xE8, 0x24, 0x73, 0xF4, 0x14, 0x37, 0xF3, 0x9B, 0x9E, 0x2B, 0x57, + 0x28, 0x1C, 0x87, 0xBE, 0xDC, 0xB7, 0xDF, 0x38, 0x90, 0x8C, 0x6E, 0x3C, + 0xE6, 0x57, 0xA0, 0x78, 0xF7, 0x75, 0xC2, 0xA2, 0xFE, 0xF5, 0x6A, 0x6E, + 0xF6, 0x00, 0x4F, 0x28, 0xDB, 0xDE, 0x68, 0x86, 0x6C, 0x44, 0x93, 0xB6, + 0xB1, 0x63, 0xFD, 0x14, 0x12, 0x6B, 0xBF, 0x1F, 0xD2, 0xEA, 0x31, 0x9B, + 0x21, 0x7E, 0xD1, 0x33, 0x3C, 0xBA, 0x48, 0xF5, 0xDD, 0x79, 0xDF, 0xB3, + 0xB8, 0xFF, 0x12, 0xF1, 0x21, 0x9A, 0x4B, 0xC1, 0x8A, 0x86, 0x71, 0x69, + 0x4A, 0x66, 0x66, 0x6C, 0x8F, 0x7E, 0x3C, 0x70, 0xBF, 0xAD, 0x29, 0x22, + 0x06, 0xF3, 0xE4, 0xC0, 0xE6, 0x80, 0xAE, 0xE2, 0x4B, 0x8F, 0xB7, 0x99, + 0x7E, 0x94, 0x03, 0x9F, 0xD3, 0x47, 0x97, 0x7C, 0x99, 0x48, 0x23, 0x53, + 0xE8, 0x38, 0xAE, 0x4F, 0x0A, 0x6F, 0x83, 0x2E, 0xD1, 0x49, 0x57, 0x8C, + 0x80, 0x74, 0xB6, 0xDA, 0x2F, 0xD0, 0x38, 0x8D, 0x7B, 0x03, 0x70, 0x21, + 0x1B, 0x75, 0xF2, 0x30, 0x3C, 0xFA, 0x8F, 0xAE, 0xDD, 0xDA, 0x63, 0xAB, + 0xEB, 0x16, 0x4F, 0xC2, 0x8E, 0x11, 0x4B, 0x7E, 0xCF, 0x0B, 0xE8, 0xFF, + 0xB5, 0x77, 0x2E, 0xF4, 0xB2, 0x7B, 0x4A, 0xE0, 0x4C, 0x12, 0x25, 0x0C, + 0x70, 0x8D, 0x03, 0x29, 0xA0, 0xE1, 0x53, 0x24, 0xEC, 0x13, 0xD9, 0xEE, + 0x19, 0xBF, 0x10, 0xB3, 0x4A, 0x8C, 0x3F, 0x89, 0xA3, 0x61, 0x51, 0xDE, + 0xAC, 0x87, 0x07, 0x94, 0xF4, 0x63, 0x71, 0xEC, 0x2E, 0xE2, 0x6F, 0x5B, + 0x98, 0x81, 0xE1, 0x89, 0x5C, 0x34, 0x79, 0x6C, 0x76, 0xEF, 0x3B, 0x90, + 0x62, 0x79, 0xE6, 0xDB, 0xA4, 0x9A, 0x2F, 0x26, 0xC5, 0xD0, 0x10, 0xE1, + 0x0E, 0xDE, 0xD9, 0x10, 0x8E, 0x16, 0xFB, 0xB7, 0xF7, 0xA8, 0xF7, 0xC7, + 0xE5, 0x02, 0x07, 0x98, 0x8F, 0x36, 0x08, 0x95, 0xE7, 0xE2, 0x37, 0x96, + 0x0D, 0x36, 0x75, 0x9E, 0xFB, 0x0E, 0x72, 0xB1, 0x1D, 0x9B, 0xBC, 0x03, + 0xF9, 0x49, 0x05, 0xD8, 0x81, 0xDD, 0x05, 0xB4, 0x2A, 0xD6, 0x41, 0xE9, + 0xAC, 0x01, 0x76, 0x95, 0x0A, 0x0F, 0xD8, 0xDF, 0xD5, 0xBD, 0x12, 0x1F, + 0x35, 0x2F, 0x28, 0x17, 0x6C, 0xD2, 0x98, 0xC1, 0xA8, 0x09, 0x64, 0x77, + 0x6E, 0x47, 0x37, 0xBA, 0xCE, 0xAC, 0x59, 0x5E, 0x68, 0x9D, 0x7F, 0x72, + 0xD6, 0x89, 0xC5, 0x06, 0x41, 0x29, 0x3E, 0x59, 0x3E, 0xDD, 0x26, 0xF5, + 0x24, 0xC9, 0x11, 0xA7, 0x5A, 0xA3, 0x4C, 0x40, 0x1F, 0x46, 0xA1, 0x99, + 0xB5, 0xA7, 0x3A, 0x51, 0x6E, 0x86, 0x3B, 0x9E, 0x7D, 0x72, 0xA7, 0x12, + 0x05, 0x78, 0x59, 0xED, 0x3E, 0x51, 0x78, 0x15, 0x0B, 0x03, 0x8F, 0x8D, + 0xD0, 0x2F, 0x05, 0xB2, 0x3E, 0x7B, 0x4A, 0x1C, 0x4B, 0x73, 0x05, 0x12, + 0xFC, 0xC6, 0xEA, 0xE0, 0x50, 0x13, 0x7C, 0x43, 0x93, 0x74, 0xB3, 0xCA, + 0x74, 0xE7, 0x8E, 0x1F, 0x01, 0x08, 0xD0, 0x30, 0xD4, 0x5B, 0x71, 0x36, + 0xB4, 0x07, 0xBA, 0xC1, 0x30, 0x30, 0x5C, 0x48, 0xB7, 0x82, 0x3B, 0x98, + 0xA6, 0x7D, 0x60, 0x8A, 0xA2, 0xA3, 0x29, 0x82, 0xCC, 0xBA, 0xBD, 0x83, + 0x04, 0x1B, 0xA2, 0x83, 0x03, 0x41, 0xA1, 0xD6, 0x05, 0xF1, 0x1B, 0xC2, + 0xB6, 0xF0, 0xA8, 0x7C, 0x86, 0x3B, 0x46, 0xA8, 0x48, 0x2A, 0x88, 0xDC, + 0x76, 0x9A, 0x76, 0xBF, 0x1F, 0x6A, 0xA5, 0x3D, 0x19, 0x8F, 0xEB, 0x38, + 0xF3, 0x64, 0xDE, 0xC8, 0x2B, 0x0D, 0x0A, 0x28, 0xFF, 0xF7, 0xDB, 0xE2, + 0x15, 0x42, 0xD4, 0x22, 0xD0, 0x27, 0x5D, 0xE1, 0x79, 0xFE, 0x18, 0xE7, + 0x70, 0x88, 0xAD, 0x4E, 0xE6, 0xD9, 0x8B, 0x3A, 0xC6, 0xDD, 0x27, 0x51, + 0x6E, 0xFF, 0xBC, 0x64, 0xF5, 0x33, 0x43, 0x4F +}; + +static const unsigned char TA109_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA110_DN[] = { + 0x30, 0x3B, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x45, 0x53, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x08, 0x46, 0x4E, 0x4D, 0x54, 0x2D, 0x52, 0x43, 0x4D, 0x31, 0x19, + 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x41, 0x43, 0x20, + 0x52, 0x41, 0x49, 0x5A, 0x20, 0x46, 0x4E, 0x4D, 0x54, 0x2D, 0x52, 0x43, + 0x4D +}; + +static const unsigned char TA110_RSA_N[] = { + 0xBA, 0x71, 0x80, 0x7A, 0x4C, 0x86, 0x6E, 0x7F, 0xC8, 0x13, 0x6D, 0xC0, + 0xC6, 0x7D, 0x1C, 0x00, 0x97, 0x8F, 0x2C, 0x0C, 0x23, 0xBB, 0x10, 0x9A, + 0x40, 0xA9, 0x1A, 0xB7, 0x87, 0x88, 0xF8, 0x9B, 0x56, 0x6A, 0xFB, 0xE6, + 0x7B, 0x8E, 0x8B, 0x92, 0x8E, 0xA7, 0x25, 0x5D, 0x59, 0x11, 0xDB, 0x36, + 0x2E, 0xB7, 0x51, 0x17, 0x1F, 0xA9, 0x08, 0x1F, 0x04, 0x17, 0x24, 0x58, + 0xAA, 0x37, 0x4A, 0x18, 0xDF, 0xE5, 0x39, 0xD4, 0x57, 0xFD, 0xD7, 0xC1, + 0x2C, 0x91, 0x01, 0x91, 0xE2, 0x22, 0xD4, 0x03, 0xC0, 0x58, 0xFC, 0x77, + 0x47, 0xEC, 0x8F, 0x3E, 0x74, 0x43, 0xBA, 0xAC, 0x34, 0x8D, 0x4D, 0x38, + 0x76, 0x67, 0x8E, 0xB0, 0xC8, 0x6F, 0x30, 0x33, 0x58, 0x71, 0x5C, 0xB4, + 0xF5, 0x6B, 0x6E, 0xD4, 0x01, 0x50, 0xB8, 0x13, 0x7E, 0x6C, 0x4A, 0xA3, + 0x49, 0xD1, 0x20, 0x19, 0xEE, 0xBC, 0xC0, 0x29, 0x18, 0x65, 0xA7, 0xDE, + 0xFE, 0xEF, 0xDD, 0x0A, 0x90, 0x21, 0xE7, 0x1A, 0x67, 0x92, 0x42, 0x10, + 0x98, 0x5F, 0x4F, 0x30, 0xBC, 0x3E, 0x1C, 0x45, 0xB4, 0x10, 0xD7, 0x68, + 0x40, 0x14, 0xC0, 0x40, 0xFA, 0xE7, 0x77, 0x17, 0x7A, 0xE6, 0x0B, 0x8F, + 0x65, 0x5B, 0x3C, 0xD9, 0x9A, 0x52, 0xDB, 0xB5, 0xBD, 0x9E, 0x46, 0xCF, + 0x3D, 0xEB, 0x91, 0x05, 0x02, 0xC0, 0x96, 0xB2, 0x76, 0x4C, 0x4D, 0x10, + 0x96, 0x3B, 0x92, 0xFA, 0x9C, 0x7F, 0x0F, 0x99, 0xDF, 0xBE, 0x23, 0x35, + 0x45, 0x1E, 0x02, 0x5C, 0xFE, 0xB5, 0xA8, 0x9B, 0x99, 0x25, 0xDA, 0x5E, + 0xF3, 0x22, 0xC3, 0x39, 0xF5, 0xE4, 0x2A, 0x2E, 0xD3, 0xC6, 0x1F, 0xC4, + 0x6C, 0xAA, 0xC5, 0x1C, 0x6A, 0x01, 0x05, 0x4A, 0x2F, 0xD2, 0xC5, 0xC1, + 0xA8, 0x34, 0x26, 0x5D, 0x66, 0xA5, 0xD2, 0x02, 0x21, 0xF9, 0x18, 0xB7, + 0x06, 0xF5, 0x4E, 0x99, 0x6F, 0xA8, 0xAB, 0x4C, 0x51, 0xE8, 0xCF, 0x50, + 0x18, 0xC5, 0x77, 0xC8, 0x39, 0x09, 0x2C, 0x49, 0x92, 0x32, 0x99, 0xA8, + 0xBB, 0x17, 0x17, 0x79, 0xB0, 0x5A, 0xC5, 0xE6, 0xA3, 0xC4, 0x59, 0x65, + 0x47, 0x35, 0x83, 0x5E, 0xA9, 0xE8, 0x35, 0x0B, 0x99, 0xBB, 0xE4, 0xCD, + 0x20, 0xC6, 0x9B, 0x4A, 0x06, 0x39, 0xB5, 0x68, 0xFC, 0x22, 0xBA, 0xEE, + 0x55, 0x8C, 0x2B, 0x4E, 0xEA, 0xF3, 0xB1, 0xE3, 0xFC, 0xB6, 0x99, 0x9A, + 0xD5, 0x42, 0xFA, 0x71, 0x4D, 0x08, 0xCF, 0x87, 0x1E, 0x6A, 0x71, 0x7D, + 0xF9, 0xD3, 0xB4, 0xE9, 0xA5, 0x71, 0x81, 0x7B, 0xC2, 0x4E, 0x47, 0x96, + 0xA5, 0xF6, 0x76, 0x85, 0xA3, 0x28, 0x8F, 0xE9, 0x80, 0x6E, 0x81, 0x53, + 0xA5, 0x6D, 0x5F, 0xB8, 0x48, 0xF9, 0xC2, 0xF9, 0x36, 0xA6, 0x2E, 0x49, + 0xFF, 0xB8, 0x96, 0xC2, 0x8C, 0x07, 0xB3, 0x9B, 0x88, 0x58, 0xFC, 0xEB, + 0x1B, 0x1C, 0xDE, 0x2D, 0x70, 0xE2, 0x97, 0x92, 0x30, 0xA1, 0x89, 0xE3, + 0xBC, 0x55, 0xA8, 0x27, 0xD6, 0x4B, 0xED, 0x90, 0xAD, 0x8B, 0xFA, 0x63, + 0x25, 0x59, 0x2D, 0xA8, 0x35, 0xDD, 0xCA, 0x97, 0x33, 0xBC, 0xE5, 0xCD, + 0xC7, 0x9D, 0xD1, 0xEC, 0xEF, 0x5E, 0x0E, 0x4A, 0x90, 0x06, 0x26, 0x63, + 0xAD, 0xB9, 0xD9, 0x35, 0x2D, 0x07, 0xBA, 0x76, 0x65, 0x2C, 0xAC, 0x57, + 0x8F, 0x7D, 0xF4, 0x07, 0x94, 0xD7, 0x81, 0x02, 0x96, 0x5D, 0xA3, 0x07, + 0x49, 0xD5, 0x7A, 0xD0, 0x57, 0xF9, 0x1B, 0xE7, 0x53, 0x46, 0x75, 0xAA, + 0xB0, 0x79, 0x42, 0xCB, 0x68, 0x71, 0x08, 0xE9, 0x60, 0xBD, 0x39, 0x69, + 0xCE, 0xF4, 0xAF, 0xC3, 0x56, 0x40, 0xC7, 0xAD, 0x52, 0xA2, 0x09, 0xE4, + 0x6F, 0x86, 0x47, 0x8A, 0x1F, 0xEB, 0x28, 0x27, 0x5D, 0x83, 0x20, 0xAF, + 0x04, 0xC9, 0x6C, 0x56, 0x9A, 0x8B, 0x46, 0xF5 +}; + +static const unsigned char TA110_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA111_DN[] = { + 0x30, 0x39, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x06, 0x41, 0x6D, 0x61, 0x7A, 0x6F, 0x6E, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6D, 0x61, 0x7A, 0x6F, + 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31 +}; + +static const unsigned char TA111_RSA_N[] = { + 0xB2, 0x78, 0x80, 0x71, 0xCA, 0x78, 0xD5, 0xE3, 0x71, 0xAF, 0x47, 0x80, + 0x50, 0x74, 0x7D, 0x6E, 0xD8, 0xD7, 0x88, 0x76, 0xF4, 0x99, 0x68, 0xF7, + 0x58, 0x21, 0x60, 0xF9, 0x74, 0x84, 0x01, 0x2F, 0xAC, 0x02, 0x2D, 0x86, + 0xD3, 0xA0, 0x43, 0x7A, 0x4E, 0xB2, 0xA4, 0xD0, 0x36, 0xBA, 0x01, 0xBE, + 0x8D, 0xDB, 0x48, 0xC8, 0x07, 0x17, 0x36, 0x4C, 0xF4, 0xEE, 0x88, 0x23, + 0xC7, 0x3E, 0xEB, 0x37, 0xF5, 0xB5, 0x19, 0xF8, 0x49, 0x68, 0xB0, 0xDE, + 0xD7, 0xB9, 0x76, 0x38, 0x1D, 0x61, 0x9E, 0xA4, 0xFE, 0x82, 0x36, 0xA5, + 0xE5, 0x4A, 0x56, 0xE4, 0x45, 0xE1, 0xF9, 0xFD, 0xB4, 0x16, 0xFA, 0x74, + 0xDA, 0x9C, 0x9B, 0x35, 0x39, 0x2F, 0xFA, 0xB0, 0x20, 0x50, 0x06, 0x6C, + 0x7A, 0xD0, 0x80, 0xB2, 0xA6, 0xF9, 0xAF, 0xEC, 0x47, 0x19, 0x8F, 0x50, + 0x38, 0x07, 0xDC, 0xA2, 0x87, 0x39, 0x58, 0xF8, 0xBA, 0xD5, 0xA9, 0xF9, + 0x48, 0x67, 0x30, 0x96, 0xEE, 0x94, 0x78, 0x5E, 0x6F, 0x89, 0xA3, 0x51, + 0xC0, 0x30, 0x86, 0x66, 0xA1, 0x45, 0x66, 0xBA, 0x54, 0xEB, 0xA3, 0xC3, + 0x91, 0xF9, 0x48, 0xDC, 0xFF, 0xD1, 0xE8, 0x30, 0x2D, 0x7D, 0x2D, 0x74, + 0x70, 0x35, 0xD7, 0x88, 0x24, 0xF7, 0x9E, 0xC4, 0x59, 0x6E, 0xBB, 0x73, + 0x87, 0x17, 0xF2, 0x32, 0x46, 0x28, 0xB8, 0x43, 0xFA, 0xB7, 0x1D, 0xAA, + 0xCA, 0xB4, 0xF2, 0x9F, 0x24, 0x0E, 0x2D, 0x4B, 0xF7, 0x71, 0x5C, 0x5E, + 0x69, 0xFF, 0xEA, 0x95, 0x02, 0xCB, 0x38, 0x8A, 0xAE, 0x50, 0x38, 0x6F, + 0xDB, 0xFB, 0x2D, 0x62, 0x1B, 0xC5, 0xC7, 0x1E, 0x54, 0xE1, 0x77, 0xE0, + 0x67, 0xC8, 0x0F, 0x9C, 0x87, 0x23, 0xD6, 0x3F, 0x40, 0x20, 0x7F, 0x20, + 0x80, 0xC4, 0x80, 0x4C, 0x3E, 0x3B, 0x24, 0x26, 0x8E, 0x04, 0xAE, 0x6C, + 0x9A, 0xC8, 0xAA, 0x0D +}; + +static const unsigned char TA111_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA112_DN[] = { + 0x30, 0x39, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x06, 0x41, 0x6D, 0x61, 0x7A, 0x6F, 0x6E, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6D, 0x61, 0x7A, 0x6F, + 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x32 +}; + +static const unsigned char TA112_RSA_N[] = { + 0xAD, 0x96, 0x9F, 0x2D, 0x9C, 0x4A, 0x4C, 0x4A, 0x81, 0x79, 0x51, 0x99, + 0xEC, 0x8A, 0xCB, 0x6B, 0x60, 0x51, 0x13, 0xBC, 0x4D, 0x6D, 0x06, 0xFC, + 0xB0, 0x08, 0x8D, 0xDD, 0x19, 0x10, 0x6A, 0xC7, 0x26, 0x0C, 0x35, 0xD8, + 0xC0, 0x6F, 0x20, 0x84, 0xE9, 0x94, 0xB1, 0x9B, 0x85, 0x03, 0xC3, 0x5B, + 0xDB, 0x4A, 0xE8, 0xC8, 0xF8, 0x90, 0x76, 0xD9, 0x5B, 0x4F, 0xE3, 0x4C, + 0xE8, 0x06, 0x36, 0x4D, 0xCC, 0x9A, 0xAC, 0x3D, 0x0C, 0x90, 0x2B, 0x92, + 0xD4, 0x06, 0x19, 0x60, 0xAC, 0x37, 0x44, 0x79, 0x85, 0x81, 0x82, 0xAD, + 0x5A, 0x37, 0xE0, 0x0D, 0xCC, 0x9D, 0xA6, 0x4C, 0x52, 0x76, 0xEA, 0x43, + 0x9D, 0xB7, 0x04, 0xD1, 0x50, 0xF6, 0x55, 0xE0, 0xD5, 0xD2, 0xA6, 0x49, + 0x85, 0xE9, 0x37, 0xE9, 0xCA, 0x7E, 0xAE, 0x5C, 0x95, 0x4D, 0x48, 0x9A, + 0x3F, 0xAE, 0x20, 0x5A, 0x6D, 0x88, 0x95, 0xD9, 0x34, 0xB8, 0x52, 0x1A, + 0x43, 0x90, 0xB0, 0xBF, 0x6C, 0x05, 0xB9, 0xB6, 0x78, 0xB7, 0xEA, 0xD0, + 0xE4, 0x3A, 0x3C, 0x12, 0x53, 0x62, 0xFF, 0x4A, 0xF2, 0x7B, 0xBE, 0x35, + 0x05, 0xA9, 0x12, 0x34, 0xE3, 0xF3, 0x64, 0x74, 0x62, 0x2C, 0x3D, 0x00, + 0x49, 0x5A, 0x28, 0xFE, 0x32, 0x44, 0xBB, 0x87, 0xDD, 0x65, 0x27, 0x02, + 0x71, 0x3B, 0xDA, 0x4A, 0xF7, 0x1F, 0xDA, 0xCD, 0xF7, 0x21, 0x55, 0x90, + 0x4F, 0x0F, 0xEC, 0xAE, 0x82, 0xE1, 0x9F, 0x6B, 0xD9, 0x45, 0xD3, 0xBB, + 0xF0, 0x5F, 0x87, 0xED, 0x3C, 0x2C, 0x39, 0x86, 0xDA, 0x3F, 0xDE, 0xEC, + 0x72, 0x55, 0xEB, 0x79, 0xA3, 0xAD, 0xDB, 0xDD, 0x7C, 0xB0, 0xBA, 0x1C, + 0xCE, 0xFC, 0xDE, 0x4F, 0x35, 0x76, 0xCF, 0x0F, 0xF8, 0x78, 0x1F, 0x6A, + 0x36, 0x51, 0x46, 0x27, 0x61, 0x5B, 0xE9, 0x9E, 0xCF, 0xF0, 0xA2, 0x55, + 0x7D, 0x7C, 0x25, 0x8A, 0x6F, 0x2F, 0xB4, 0xC5, 0xCF, 0x84, 0x2E, 0x2B, + 0xFD, 0x0D, 0x51, 0x10, 0x6C, 0xFB, 0x5F, 0x1B, 0xBC, 0x1B, 0x7E, 0xC5, + 0xAE, 0x3B, 0x98, 0x01, 0x31, 0x92, 0xFF, 0x0B, 0x57, 0xF4, 0x9A, 0xB2, + 0xB9, 0x57, 0xE9, 0xAB, 0xEF, 0x0D, 0x76, 0xD1, 0xF0, 0xEE, 0xF4, 0xCE, + 0x86, 0xA7, 0xE0, 0x6E, 0xE9, 0xB4, 0x69, 0xA1, 0xDF, 0x69, 0xF6, 0x33, + 0xC6, 0x69, 0x2E, 0x97, 0x13, 0x9E, 0xA5, 0x87, 0xB0, 0x57, 0x10, 0x81, + 0x37, 0xC9, 0x53, 0xB3, 0xBB, 0x7F, 0xF6, 0x92, 0xD1, 0x9C, 0xD0, 0x18, + 0xF4, 0x92, 0x6E, 0xDA, 0x83, 0x4F, 0xA6, 0x63, 0x99, 0x4C, 0xA5, 0xFB, + 0x5E, 0xEF, 0x21, 0x64, 0x7A, 0x20, 0x5F, 0x6C, 0x64, 0x85, 0x15, 0xCB, + 0x37, 0xE9, 0x62, 0x0C, 0x0B, 0x2A, 0x16, 0xDC, 0x01, 0x2E, 0x32, 0xDA, + 0x3E, 0x4B, 0xF5, 0x9E, 0x3A, 0xF6, 0x17, 0x40, 0x94, 0xEF, 0x9E, 0x91, + 0x08, 0x86, 0xFA, 0xBE, 0x63, 0xA8, 0x5A, 0x33, 0xEC, 0xCB, 0x74, 0x43, + 0x95, 0xF9, 0x6C, 0x69, 0x52, 0x36, 0xC7, 0x29, 0x6F, 0xFC, 0x55, 0x03, + 0x5C, 0x1F, 0xFB, 0x9F, 0xBD, 0x47, 0xEB, 0xE7, 0x49, 0x47, 0x95, 0x0B, + 0x4E, 0x89, 0x22, 0x09, 0x49, 0xE0, 0xF5, 0x61, 0x1E, 0xF1, 0xBF, 0x2E, + 0x8A, 0x72, 0x6E, 0x80, 0x59, 0xFF, 0x57, 0x3A, 0xF9, 0x75, 0x32, 0xA3, + 0x4E, 0x5F, 0xEC, 0xED, 0x28, 0x62, 0xD9, 0x4D, 0x73, 0xF2, 0xCC, 0x81, + 0x17, 0x60, 0xED, 0xCD, 0xEB, 0xDC, 0xDB, 0xA7, 0xCA, 0xC5, 0x7E, 0x02, + 0xBD, 0xF2, 0x54, 0x08, 0x54, 0xFD, 0xB4, 0x2D, 0x09, 0x2C, 0x17, 0x54, + 0x4A, 0x98, 0xD1, 0x54, 0xE1, 0x51, 0x67, 0x08, 0xD2, 0xED, 0x6E, 0x7E, + 0x6F, 0x3F, 0xD2, 0x2D, 0x81, 0x59, 0x29, 0x66, 0xCB, 0x90, 0x39, 0x95, + 0x11, 0x1E, 0x74, 0x27, 0xFE, 0xDD, 0xEB, 0xAF +}; + +static const unsigned char TA112_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA113_DN[] = { + 0x30, 0x39, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x06, 0x41, 0x6D, 0x61, 0x7A, 0x6F, 0x6E, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6D, 0x61, 0x7A, 0x6F, + 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33 +}; + +static const unsigned char TA113_EC_Q[] = { + 0x04, 0x29, 0x97, 0xA7, 0xC6, 0x41, 0x7F, 0xC0, 0x0D, 0x9B, 0xE8, 0x01, + 0x1B, 0x56, 0xC6, 0xF2, 0x52, 0xA5, 0xBA, 0x2D, 0xB2, 0x12, 0xE8, 0xD2, + 0x2E, 0xD7, 0xFA, 0xC9, 0xC5, 0xD8, 0xAA, 0x6D, 0x1F, 0x73, 0x81, 0x3B, + 0x3B, 0x98, 0x6B, 0x39, 0x7C, 0x33, 0xA5, 0xC5, 0x4E, 0x86, 0x8E, 0x80, + 0x17, 0x68, 0x62, 0x45, 0x57, 0x7D, 0x44, 0x58, 0x1D, 0xB3, 0x37, 0xE5, + 0x67, 0x08, 0xEB, 0x66, 0xDE +}; + +static const unsigned char TA114_DN[] = { + 0x30, 0x39, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x06, 0x41, 0x6D, 0x61, 0x7A, 0x6F, 0x6E, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6D, 0x61, 0x7A, 0x6F, + 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x34 +}; + +static const unsigned char TA114_EC_Q[] = { + 0x04, 0xD2, 0xAB, 0x8A, 0x37, 0x4F, 0xA3, 0x53, 0x0D, 0xFE, 0xC1, 0x8A, + 0x7B, 0x4B, 0xA8, 0x7B, 0x46, 0x4B, 0x63, 0xB0, 0x62, 0xF6, 0x2D, 0x1B, + 0xDB, 0x08, 0x71, 0x21, 0xD2, 0x00, 0xE8, 0x63, 0xBD, 0x9A, 0x27, 0xFB, + 0xF0, 0x39, 0x6E, 0x5D, 0xEA, 0x3D, 0xA5, 0xC9, 0x81, 0xAA, 0xA3, 0x5B, + 0x20, 0x98, 0x45, 0x5D, 0x16, 0xDB, 0xFD, 0xE8, 0x10, 0x6D, 0xE3, 0x9C, + 0xE0, 0xE3, 0xBD, 0x5F, 0x84, 0x62, 0xF3, 0x70, 0x64, 0x33, 0xA0, 0xCB, + 0x24, 0x2F, 0x70, 0xBA, 0x88, 0xA1, 0x2A, 0xA0, 0x75, 0xF8, 0x81, 0xAE, + 0x62, 0x06, 0xC4, 0x81, 0xDB, 0x39, 0x6E, 0x29, 0xB0, 0x1E, 0xFA, 0x2E, + 0x5C +}; + +static const unsigned char TA115_DN[] = { + 0x30, 0x46, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x4C, 0x55, 0x31, 0x16, 0x30, 0x14, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x0D, 0x4C, 0x75, 0x78, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, + 0x2E, 0x41, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x16, 0x4C, 0x75, 0x78, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, + 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x32 +}; + +static const unsigned char TA115_RSA_N[] = { + 0xD7, 0x85, 0x97, 0xBF, 0x11, 0x98, 0xE9, 0xF0, 0x62, 0x83, 0x4C, 0x3C, + 0x87, 0xF9, 0x53, 0x6A, 0x37, 0x0B, 0xF2, 0x0F, 0x3C, 0x87, 0xCE, 0x6F, + 0xDC, 0x26, 0x29, 0xBD, 0xC5, 0x89, 0xBA, 0xC9, 0x83, 0x3D, 0xF7, 0xEE, + 0xCA, 0x5B, 0xC6, 0x6D, 0x49, 0x73, 0xB4, 0xC9, 0x46, 0xA3, 0x1B, 0x34, + 0x13, 0x3F, 0xC1, 0x89, 0x45, 0x57, 0xF4, 0xD9, 0xB1, 0xFB, 0x36, 0x65, + 0x4B, 0xFB, 0x08, 0xE2, 0x48, 0x71, 0x11, 0xC8, 0x6E, 0x3B, 0x9E, 0x9D, + 0xDF, 0x89, 0x65, 0x37, 0xA6, 0x85, 0xF6, 0x3B, 0x44, 0x18, 0xB6, 0xC6, + 0x37, 0x30, 0x62, 0x44, 0x92, 0x97, 0x69, 0x7D, 0x42, 0x30, 0x24, 0xE4, + 0x0D, 0x0C, 0x89, 0x6B, 0x63, 0xDE, 0xC5, 0xE1, 0xDF, 0x4E, 0xA9, 0x14, + 0x6C, 0x53, 0xE0, 0x61, 0xCE, 0xF6, 0x17, 0x2F, 0x1D, 0x3C, 0xBD, 0xE6, + 0x22, 0x4C, 0x1D, 0x93, 0xF5, 0x10, 0xC4, 0xA1, 0x76, 0xEC, 0x6A, 0xDE, + 0xC5, 0x6C, 0xDF, 0x96, 0xB4, 0x56, 0x40, 0x42, 0xC0, 0x62, 0x92, 0x30, + 0xA1, 0x2D, 0x15, 0x94, 0xA0, 0xD2, 0x20, 0x06, 0x09, 0x6E, 0x6A, 0x6D, + 0xE5, 0xEB, 0xB7, 0xBE, 0xD4, 0xF0, 0xF1, 0x15, 0x7C, 0x8B, 0xE6, 0x4E, + 0xBA, 0x13, 0xCC, 0x4B, 0x27, 0x5E, 0x99, 0x3C, 0x17, 0x5D, 0x8F, 0x81, + 0x7F, 0x33, 0x3D, 0x4F, 0xD3, 0x3F, 0x1B, 0xEC, 0x5C, 0x3F, 0xF0, 0x3C, + 0x4C, 0x75, 0x6E, 0xF2, 0xA6, 0xD5, 0x9D, 0xDA, 0x2D, 0x07, 0x63, 0x02, + 0xC6, 0x72, 0xE9, 0x94, 0xBC, 0x4C, 0x49, 0x95, 0x4F, 0x88, 0x52, 0xC8, + 0xDB, 0xE8, 0x69, 0x82, 0xF8, 0xCC, 0x34, 0x5B, 0x22, 0xF0, 0x86, 0xA7, + 0x89, 0xBD, 0x48, 0x0A, 0x6D, 0x66, 0x81, 0x6D, 0xC8, 0xC8, 0x64, 0xFB, + 0x01, 0xE1, 0xF4, 0xE1, 0xDE, 0xD9, 0x9E, 0xDD, 0xDB, 0x5B, 0xD4, 0x2A, + 0x99, 0x26, 0x15, 0x1B, 0x1E, 0x4C, 0x92, 0x29, 0x82, 0x9E, 0xD5, 0x92, + 0x81, 0x92, 0x41, 0x70, 0x19, 0xF7, 0xA4, 0xE5, 0x93, 0x4B, 0xBC, 0x77, + 0x67, 0x31, 0xDD, 0x1C, 0xFD, 0x31, 0x70, 0x0D, 0x17, 0x99, 0x0C, 0xF9, + 0x0C, 0x39, 0x19, 0x2A, 0x17, 0xB5, 0x30, 0x71, 0x55, 0xD5, 0x0F, 0xAE, + 0x58, 0xE1, 0x3D, 0x2F, 0x34, 0x9B, 0xCF, 0x9F, 0xF6, 0x78, 0x85, 0xC2, + 0x93, 0x7A, 0x72, 0x3E, 0x66, 0x8F, 0x9C, 0x16, 0x11, 0x60, 0x8F, 0x9E, + 0x89, 0x6F, 0x67, 0xBE, 0xE0, 0x47, 0x5A, 0x3B, 0x0C, 0x9A, 0x67, 0x8B, + 0xCF, 0x46, 0xC6, 0xAE, 0x38, 0xA3, 0xF2, 0xA7, 0xBC, 0xE6, 0xD6, 0x85, + 0x6B, 0x33, 0x24, 0x70, 0x22, 0x4B, 0xCB, 0x08, 0x9B, 0xBB, 0xC8, 0xF8, + 0x02, 0x29, 0x1D, 0xBE, 0x20, 0x0C, 0x46, 0xBF, 0x6B, 0x87, 0x9B, 0xB3, + 0x2A, 0x66, 0x42, 0x35, 0x46, 0x6C, 0xAA, 0xBA, 0xAD, 0xF9, 0x98, 0x7B, + 0xE9, 0x50, 0x55, 0x14, 0x31, 0xBF, 0xB1, 0xDA, 0x2D, 0xED, 0x80, 0xAD, + 0x68, 0x24, 0xFB, 0x69, 0xAB, 0xD8, 0x71, 0x13, 0x30, 0xE6, 0x67, 0xB3, + 0x87, 0x40, 0xFD, 0x89, 0x7E, 0xF2, 0x43, 0xD1, 0x11, 0xDF, 0x2F, 0x65, + 0x2F, 0x64, 0xCE, 0x5F, 0x14, 0xB9, 0xB1, 0xBF, 0x31, 0xBD, 0x87, 0x78, + 0x5A, 0x59, 0x65, 0x88, 0xAA, 0xFC, 0x59, 0x32, 0x48, 0x86, 0xD6, 0x4C, + 0xB9, 0x29, 0x4B, 0x95, 0xD3, 0x76, 0xF3, 0x77, 0x25, 0x6D, 0x42, 0x1C, + 0x38, 0x83, 0x4D, 0xFD, 0xA3, 0x5F, 0x9B, 0x7F, 0x2D, 0xAC, 0x79, 0x1B, + 0x0E, 0x42, 0x31, 0x97, 0x63, 0xA4, 0xFB, 0x8A, 0x69, 0xD5, 0x22, 0x0D, + 0x34, 0x90, 0x30, 0x2E, 0xA8, 0xB4, 0xE0, 0x6D, 0xB6, 0x94, 0xAC, 0xBC, + 0x8B, 0x4E, 0xD7, 0x70, 0xFC, 0xC5, 0x38, 0x8E, 0x64, 0x25, 0xE1, 0x4D, + 0x39, 0x90, 0xCE, 0xC9, 0x87, 0x84, 0x58, 0x71 +}; + +static const unsigned char TA115_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA116_DN[] = { + 0x30, 0x81, 0xD2, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x54, 0x52, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x0F, 0x47, 0x65, 0x62, 0x7A, 0x65, 0x20, 0x2D, 0x20, 0x4B, + 0x6F, 0x63, 0x61, 0x65, 0x6C, 0x69, 0x31, 0x42, 0x30, 0x40, 0x06, 0x03, + 0x55, 0x04, 0x0A, 0x13, 0x39, 0x54, 0x75, 0x72, 0x6B, 0x69, 0x79, 0x65, + 0x20, 0x42, 0x69, 0x6C, 0x69, 0x6D, 0x73, 0x65, 0x6C, 0x20, 0x76, 0x65, + 0x20, 0x54, 0x65, 0x6B, 0x6E, 0x6F, 0x6C, 0x6F, 0x6A, 0x69, 0x6B, 0x20, + 0x41, 0x72, 0x61, 0x73, 0x74, 0x69, 0x72, 0x6D, 0x61, 0x20, 0x4B, 0x75, + 0x72, 0x75, 0x6D, 0x75, 0x20, 0x2D, 0x20, 0x54, 0x55, 0x42, 0x49, 0x54, + 0x41, 0x4B, 0x31, 0x2D, 0x30, 0x2B, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x24, 0x4B, 0x61, 0x6D, 0x75, 0x20, 0x53, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x6B, 0x61, 0x73, 0x79, 0x6F, 0x6E, 0x20, 0x4D, 0x65, 0x72, 0x6B, + 0x65, 0x7A, 0x69, 0x20, 0x2D, 0x20, 0x4B, 0x61, 0x6D, 0x75, 0x20, 0x53, + 0x4D, 0x31, 0x36, 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2D, + 0x54, 0x55, 0x42, 0x49, 0x54, 0x41, 0x4B, 0x20, 0x4B, 0x61, 0x6D, 0x75, + 0x20, 0x53, 0x4D, 0x20, 0x53, 0x53, 0x4C, 0x20, 0x4B, 0x6F, 0x6B, 0x20, + 0x53, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x6B, 0x61, 0x73, 0x69, 0x20, + 0x2D, 0x20, 0x53, 0x75, 0x72, 0x75, 0x6D, 0x20, 0x31 +}; + +static const unsigned char TA116_RSA_N[] = { + 0xAF, 0x75, 0x30, 0x33, 0xAA, 0xBB, 0x6B, 0xD3, 0x99, 0x2C, 0x12, 0x37, + 0x84, 0xD9, 0x8D, 0x7B, 0x97, 0x80, 0xD3, 0x6E, 0xE7, 0xFF, 0x9B, 0x50, + 0x95, 0x3E, 0x90, 0x95, 0x56, 0x42, 0xD7, 0x19, 0x7C, 0x26, 0x84, 0x8D, + 0x92, 0xFA, 0x01, 0x1D, 0x3A, 0x0F, 0xE2, 0x64, 0x38, 0xB7, 0x8C, 0xBC, + 0xE8, 0x88, 0xF9, 0x8B, 0x24, 0xAB, 0x2E, 0xA3, 0xF5, 0x37, 0xE4, 0x40, + 0x8E, 0x18, 0x25, 0x79, 0x83, 0x75, 0x1F, 0x3B, 0xFF, 0x6C, 0xA8, 0xC5, + 0xC6, 0x56, 0xF8, 0xB4, 0xED, 0x8A, 0x44, 0xA3, 0xAB, 0x6C, 0x4C, 0xFC, + 0x1D, 0xD0, 0xDC, 0xEF, 0x68, 0xBD, 0xCF, 0xE4, 0xAA, 0xCE, 0xF0, 0x55, + 0xF7, 0xA2, 0x34, 0xD4, 0x83, 0x6B, 0x37, 0x7C, 0x1C, 0xC2, 0xFE, 0xB5, + 0x03, 0xEC, 0x57, 0xCE, 0xBC, 0xB4, 0xB5, 0xC5, 0xED, 0x00, 0x0F, 0x53, + 0x37, 0x2A, 0x4D, 0xF4, 0x4F, 0x0C, 0x83, 0xFB, 0x86, 0xCF, 0xCB, 0xFE, + 0x8C, 0x4E, 0xBD, 0x87, 0xF9, 0xA7, 0x8B, 0x21, 0x57, 0x9C, 0x7A, 0xDF, + 0x03, 0x67, 0x89, 0x2C, 0x9D, 0x97, 0x61, 0xA7, 0x10, 0xB8, 0x55, 0x90, + 0x7F, 0x0E, 0x2D, 0x27, 0x38, 0x74, 0xDF, 0xE7, 0xFD, 0xDA, 0x4E, 0x12, + 0xE3, 0x4D, 0x15, 0x22, 0x02, 0xC8, 0xE0, 0xE0, 0xFC, 0x0F, 0xAD, 0x8A, + 0xD7, 0xC9, 0x54, 0x50, 0xCC, 0x3B, 0x0F, 0xCA, 0x16, 0x80, 0x84, 0xD0, + 0x51, 0x56, 0xC3, 0x8E, 0x56, 0x7F, 0x89, 0x22, 0x33, 0x2F, 0xE6, 0x85, + 0x0A, 0xBD, 0xA5, 0xA8, 0x1B, 0x36, 0xDE, 0xD3, 0xDC, 0x2C, 0x6D, 0x3B, + 0xC7, 0x13, 0xBD, 0x59, 0x23, 0x2C, 0xE6, 0xE5, 0xA4, 0xF7, 0xD8, 0x0B, + 0xED, 0xEA, 0x90, 0x40, 0x44, 0xA8, 0x95, 0xBB, 0x93, 0xD5, 0xD0, 0x80, + 0x34, 0xB6, 0x46, 0x78, 0x0E, 0x1F, 0x00, 0x93, 0x46, 0xE1, 0xEE, 0xE9, + 0xF9, 0xEC, 0x4F, 0x17 +}; + +static const unsigned char TA116_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA117_DN[] = { + 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x4E, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x29, 0x47, 0x55, 0x41, 0x4E, 0x47, 0x20, 0x44, 0x4F, 0x4E, 0x47, + 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, + 0x20, 0x41, 0x55, 0x54, 0x48, 0x4F, 0x52, 0x49, 0x54, 0x59, 0x20, 0x43, + 0x4F, 0x2E, 0x2C, 0x4C, 0x54, 0x44, 0x2E, 0x31, 0x1F, 0x30, 0x1D, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x0C, 0x16, 0x47, 0x44, 0x43, 0x41, 0x20, 0x54, + 0x72, 0x75, 0x73, 0x74, 0x41, 0x55, 0x54, 0x48, 0x20, 0x52, 0x35, 0x20, + 0x52, 0x4F, 0x4F, 0x54 +}; + +static const unsigned char TA117_RSA_N[] = { + 0xD9, 0xA3, 0x16, 0xF0, 0xC8, 0x74, 0x74, 0x77, 0x9B, 0xEF, 0x33, 0x0D, + 0x3B, 0x06, 0x7E, 0x55, 0xFC, 0xB5, 0x60, 0x8F, 0x76, 0x86, 0x12, 0x42, + 0x7D, 0x56, 0x66, 0x3E, 0x88, 0x82, 0xED, 0x72, 0x63, 0x0E, 0x9E, 0x8B, + 0xDD, 0x34, 0x2C, 0x02, 0x51, 0x51, 0xC3, 0x19, 0xFD, 0x59, 0x54, 0x84, + 0xC9, 0xF1, 0x6B, 0xB3, 0x4C, 0xB0, 0xE9, 0xE8, 0x46, 0x5D, 0x38, 0xC6, + 0xA2, 0xA7, 0x2E, 0x11, 0x57, 0xBA, 0x82, 0x15, 0xA2, 0x9C, 0x8F, 0x6D, + 0xB0, 0x99, 0x4A, 0x0A, 0xF2, 0xEB, 0x89, 0x70, 0x63, 0x4E, 0x79, 0xC4, + 0xB7, 0x5B, 0xBD, 0xA2, 0x5D, 0xB1, 0xF2, 0x41, 0x02, 0x2B, 0xAD, 0xA9, + 0x3A, 0xA3, 0xEC, 0x79, 0x0A, 0xEC, 0x5F, 0x3A, 0xE3, 0xFD, 0xEF, 0x80, + 0x3C, 0xAD, 0x34, 0x9B, 0x1A, 0xAB, 0x88, 0x26, 0x7B, 0x56, 0xA2, 0x82, + 0x86, 0x1F, 0xEB, 0x35, 0x89, 0x83, 0x7F, 0x5F, 0xAE, 0x29, 0x4E, 0x3D, + 0xB6, 0x6E, 0xEC, 0xAE, 0xC1, 0xF0, 0x27, 0x9B, 0xAE, 0xE3, 0xF4, 0xEC, + 0xEF, 0xAE, 0x7F, 0xF7, 0x86, 0x3D, 0x72, 0x7A, 0xEB, 0xA5, 0xFB, 0x59, + 0x4E, 0xA7, 0xEB, 0x95, 0x8C, 0x22, 0x39, 0x79, 0xE1, 0x2D, 0x08, 0x8F, + 0xCC, 0xBC, 0x91, 0xB8, 0x41, 0xF7, 0x14, 0xC1, 0x23, 0xA9, 0xC3, 0xAD, + 0x9A, 0x45, 0x44, 0xB3, 0xB2, 0xD7, 0x2C, 0xCD, 0xC6, 0x29, 0xE2, 0x50, + 0x10, 0xAE, 0x5C, 0xCB, 0x82, 0x8E, 0x17, 0x18, 0x36, 0x7D, 0x97, 0xE6, + 0x88, 0x9A, 0xB0, 0x4D, 0x34, 0x09, 0xF4, 0x2C, 0xB9, 0x5A, 0x66, 0x2A, + 0xB0, 0x17, 0x9B, 0x9E, 0x1E, 0x76, 0x9D, 0x4A, 0x66, 0x31, 0x41, 0xDF, + 0x3F, 0xFB, 0xC5, 0x06, 0xEF, 0x1B, 0xB6, 0x7E, 0x1A, 0x46, 0x36, 0xF7, + 0x64, 0x63, 0x3B, 0xE3, 0x39, 0x18, 0x23, 0xE7, 0x67, 0x75, 0x14, 0xD5, + 0x75, 0x57, 0x92, 0x37, 0xBD, 0xBE, 0x6A, 0x1B, 0x26, 0x50, 0xF2, 0x36, + 0x26, 0x06, 0x90, 0xC5, 0x70, 0x01, 0x64, 0x6D, 0x76, 0x66, 0xE1, 0x91, + 0xDB, 0x6E, 0x07, 0xC0, 0x61, 0x80, 0x2E, 0xB2, 0x2E, 0x2F, 0x8C, 0x70, + 0xA7, 0xD1, 0x3B, 0x3C, 0xB3, 0x91, 0xE4, 0x6E, 0xB6, 0xC4, 0x3B, 0x70, + 0xF2, 0x6C, 0x92, 0x97, 0x09, 0xCD, 0x47, 0x7D, 0x18, 0xC0, 0xF3, 0xBB, + 0x9E, 0x0F, 0xD6, 0x8B, 0xAE, 0x07, 0xB6, 0x5A, 0x0F, 0xCE, 0x0B, 0x0C, + 0x47, 0xA7, 0xE5, 0x3E, 0xB8, 0xBD, 0x7D, 0xC7, 0x9B, 0x35, 0xA0, 0x61, + 0x97, 0x3A, 0x41, 0x75, 0x17, 0xCC, 0x2B, 0x96, 0x77, 0x2A, 0x92, 0x21, + 0x1E, 0xD9, 0x95, 0x76, 0x20, 0x67, 0x68, 0xCF, 0x0D, 0xBD, 0xDF, 0xD6, + 0x1F, 0x09, 0x6A, 0x9A, 0xE2, 0xCC, 0x73, 0x71, 0xA4, 0x2F, 0x7D, 0x12, + 0x80, 0xB7, 0x53, 0x30, 0x46, 0x5E, 0x4B, 0x54, 0x99, 0x0F, 0x67, 0xC9, + 0xA5, 0xC8, 0xF2, 0x20, 0xC1, 0x82, 0xEC, 0x9D, 0x11, 0xDF, 0xC2, 0x02, + 0xFB, 0x1A, 0x3B, 0xD1, 0xED, 0x20, 0x9A, 0xEF, 0x65, 0x64, 0x92, 0x10, + 0x0D, 0x2A, 0xE2, 0xDE, 0x70, 0xF1, 0x18, 0x67, 0x82, 0x8C, 0x61, 0xDE, + 0xB8, 0xBC, 0xD1, 0x2F, 0x9C, 0xFB, 0x0F, 0xD0, 0x2B, 0xED, 0x1B, 0x76, + 0xB9, 0xE4, 0x39, 0x55, 0xF8, 0xF8, 0xA1, 0x1D, 0xB8, 0xAA, 0x80, 0x00, + 0x4C, 0x82, 0xE7, 0xB2, 0x7F, 0x09, 0xB8, 0xBC, 0x30, 0xA0, 0x2F, 0x0D, + 0xF5, 0x52, 0x9E, 0x8E, 0xF7, 0x92, 0xB3, 0x0A, 0x00, 0x1D, 0x00, 0x54, + 0x97, 0x06, 0xE0, 0xB1, 0x07, 0xD9, 0xC7, 0x0F, 0x5C, 0x65, 0x7D, 0x3C, + 0x6D, 0x59, 0x57, 0xE4, 0xED, 0xA5, 0x8D, 0xE9, 0x40, 0x53, 0x9F, 0x15, + 0x4B, 0xA0, 0x71, 0xF6, 0x1A, 0x21, 0xE3, 0xDA, 0x70, 0x06, 0x21, 0x58, + 0x14, 0x87, 0x85, 0x77, 0x79, 0xAA, 0x82, 0x79 +}; + +static const unsigned char TA117_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA118_DN[] = { + 0x30, 0x81, 0xA4, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x50, 0x41, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x0C, 0x06, 0x50, 0x61, 0x6E, 0x61, 0x6D, 0x61, 0x31, 0x14, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x0B, 0x50, 0x61, 0x6E, 0x61, + 0x6D, 0x61, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x1B, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, + 0x6F, 0x72, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x53, + 0x2E, 0x20, 0x64, 0x65, 0x20, 0x52, 0x2E, 0x4C, 0x2E, 0x31, 0x27, 0x30, + 0x25, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x1E, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x43, 0x6F, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, + 0x74, 0x79, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x16, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x6F, 0x72, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x65, 0x72, 0x74, 0x20, 0x43, 0x41, 0x2D, 0x31 +}; + +static const unsigned char TA118_RSA_N[] = { + 0xBF, 0x8E, 0xB7, 0x95, 0xE2, 0xC2, 0x26, 0x12, 0x6B, 0x33, 0x19, 0xC7, + 0x40, 0x58, 0x0A, 0xAB, 0x59, 0xAA, 0x8D, 0x00, 0xA3, 0xFC, 0x80, 0xC7, + 0x50, 0x7B, 0x8E, 0xD4, 0x20, 0x26, 0xBA, 0x32, 0x12, 0xD8, 0x23, 0x54, + 0x49, 0x25, 0x10, 0x22, 0x98, 0x9D, 0x46, 0xD2, 0xC1, 0xC9, 0x9E, 0x4E, + 0x1B, 0x2E, 0x2C, 0x0E, 0x38, 0xF3, 0x1A, 0x25, 0x68, 0x1C, 0xA6, 0x5A, + 0x05, 0xE6, 0x1E, 0x8B, 0x48, 0xBF, 0x98, 0x96, 0x74, 0x3E, 0x69, 0xCA, + 0xE9, 0xB5, 0x78, 0xA5, 0x06, 0xBC, 0xD5, 0x00, 0x5E, 0x09, 0x0A, 0xF2, + 0x27, 0x7A, 0x52, 0xFC, 0x2D, 0xD5, 0xB1, 0xEA, 0xB4, 0x89, 0x61, 0x24, + 0xF3, 0x1A, 0x13, 0xDB, 0xA9, 0xCF, 0x52, 0xED, 0x0C, 0x24, 0xBA, 0xB9, + 0x9E, 0xEC, 0x7E, 0x00, 0x74, 0xFA, 0x93, 0xAD, 0x6C, 0x29, 0x92, 0xAE, + 0x51, 0xB4, 0xBB, 0xD3, 0x57, 0xBF, 0xB3, 0xF3, 0xA8, 0x8D, 0x9C, 0xF4, + 0x24, 0x4B, 0x2A, 0xD6, 0x99, 0x9E, 0xF4, 0x9E, 0xFE, 0xC0, 0x7E, 0x42, + 0x3A, 0xE7, 0x0B, 0x95, 0x53, 0xDA, 0xB7, 0x68, 0x0E, 0x90, 0x4C, 0xFB, + 0x70, 0x3F, 0x8F, 0x4A, 0x2C, 0x94, 0xF3, 0x26, 0xDD, 0x63, 0x69, 0xA9, + 0x94, 0xD8, 0x10, 0x4E, 0xC5, 0x47, 0x08, 0x90, 0x99, 0x1B, 0x17, 0x4D, + 0xB9, 0x6C, 0x6E, 0xEF, 0x60, 0x95, 0x11, 0x8E, 0x21, 0x80, 0xB5, 0xBD, + 0xA0, 0x73, 0xD8, 0xD0, 0xB2, 0x77, 0xC4, 0x45, 0xEA, 0x5A, 0x26, 0xFB, + 0x66, 0x76, 0x76, 0xF8, 0x06, 0x1F, 0x61, 0x6D, 0x0F, 0x55, 0xC5, 0x83, + 0xB7, 0x10, 0x56, 0x72, 0x06, 0x07, 0xA5, 0xF3, 0xB1, 0x1A, 0x03, 0x05, + 0x64, 0x0E, 0x9D, 0x5A, 0x8A, 0xD6, 0x86, 0x70, 0x1B, 0x24, 0xDE, 0xFE, + 0x28, 0x8A, 0x2B, 0xD0, 0x6A, 0xB0, 0xFC, 0x7A, 0xA2, 0xDC, 0xB2, 0x79, + 0x0E, 0x8B, 0x65, 0x0F +}; + +static const unsigned char TA118_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA119_DN[] = { + 0x30, 0x81, 0xA4, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x50, 0x41, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x0C, 0x06, 0x50, 0x61, 0x6E, 0x61, 0x6D, 0x61, 0x31, 0x14, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x0B, 0x50, 0x61, 0x6E, 0x61, + 0x6D, 0x61, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x1B, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, + 0x6F, 0x72, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x53, + 0x2E, 0x20, 0x64, 0x65, 0x20, 0x52, 0x2E, 0x4C, 0x2E, 0x31, 0x27, 0x30, + 0x25, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x1E, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x43, 0x6F, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, + 0x74, 0x79, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x16, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x6F, 0x72, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x65, 0x72, 0x74, 0x20, 0x43, 0x41, 0x2D, 0x32 +}; + +static const unsigned char TA119_RSA_N[] = { + 0xA7, 0x20, 0x6E, 0xC2, 0x2A, 0xA2, 0x62, 0x24, 0x95, 0x90, 0x76, 0xC8, + 0x38, 0x7E, 0x80, 0xD2, 0xAB, 0xC1, 0x9B, 0x65, 0x05, 0x94, 0xF4, 0xC1, + 0x0A, 0x10, 0xD5, 0x02, 0xAC, 0xED, 0x9F, 0x93, 0xC7, 0x87, 0xC8, 0xB0, + 0x27, 0x2B, 0x42, 0x0C, 0x3D, 0x0A, 0x3E, 0x41, 0x5A, 0x9E, 0x75, 0xDD, + 0x8D, 0xCA, 0xE0, 0x9B, 0xEC, 0x68, 0x32, 0xA4, 0x69, 0x92, 0x68, 0x8C, + 0x0B, 0x81, 0x0E, 0x56, 0xA0, 0x3E, 0x1A, 0xDD, 0x2C, 0x25, 0x14, 0x82, + 0x2F, 0x97, 0xD3, 0x64, 0x46, 0xF4, 0x54, 0xA9, 0xDC, 0x3A, 0x54, 0x2D, + 0x31, 0x2B, 0x99, 0x82, 0xF2, 0xD9, 0x2A, 0xD7, 0xEF, 0x71, 0x00, 0xB8, + 0x31, 0xA4, 0xBE, 0x7A, 0x24, 0x07, 0xC3, 0x42, 0x20, 0xF2, 0x8A, 0xD4, + 0x92, 0x04, 0x1B, 0x65, 0x56, 0x4C, 0x6C, 0xD4, 0xFB, 0xB6, 0x61, 0x5A, + 0x47, 0x23, 0xB4, 0xD8, 0x69, 0xB4, 0xB7, 0x3A, 0xD0, 0x74, 0x3C, 0x0C, + 0x75, 0xA1, 0x8C, 0x4E, 0x76, 0xA1, 0xE9, 0xDB, 0x2A, 0xA5, 0x3B, 0xFA, + 0xCE, 0xB0, 0xFF, 0x7E, 0x6A, 0x28, 0xFD, 0x27, 0x1C, 0xC8, 0xB1, 0xE9, + 0x29, 0xF1, 0x57, 0x6E, 0x64, 0xB4, 0xD0, 0xC1, 0x15, 0x6D, 0x0E, 0xBE, + 0x2E, 0x0E, 0x46, 0xC8, 0x5E, 0xF4, 0x51, 0xFE, 0xEF, 0x0E, 0x63, 0x3A, + 0x3B, 0x71, 0xBA, 0xCF, 0x6F, 0x59, 0xCA, 0x0C, 0xE3, 0x9B, 0x5D, 0x49, + 0xB8, 0x4C, 0xE2, 0x57, 0xB1, 0x98, 0x8A, 0x42, 0x57, 0x9C, 0x76, 0xEF, + 0xEF, 0xBD, 0xD1, 0x68, 0xA8, 0xD2, 0xF4, 0x09, 0xBB, 0x77, 0x35, 0xBE, + 0x25, 0x82, 0x08, 0xC4, 0x16, 0x2C, 0x44, 0x20, 0x56, 0xA9, 0x44, 0x11, + 0x77, 0xEF, 0x5D, 0xB4, 0x1D, 0xAA, 0x5E, 0x6B, 0x3E, 0x8B, 0x32, 0xF6, + 0x07, 0x2F, 0x57, 0x04, 0x92, 0xCA, 0xF5, 0xFE, 0x9D, 0xC2, 0xE9, 0xE8, + 0xB3, 0x8E, 0x4C, 0x4B, 0x02, 0x31, 0xD9, 0xE4, 0x3C, 0x48, 0x82, 0x27, + 0xF7, 0x18, 0x82, 0x76, 0x48, 0x3A, 0x71, 0xB1, 0x13, 0xA1, 0x39, 0xD5, + 0x2E, 0xC5, 0x34, 0xC2, 0x1D, 0x62, 0x85, 0xDF, 0x03, 0xFE, 0x4D, 0xF4, + 0xAF, 0x3D, 0xDF, 0x5C, 0x5B, 0x8D, 0xFA, 0x70, 0xE1, 0xA5, 0x7E, 0x27, + 0xC7, 0x86, 0x2E, 0x6A, 0x8F, 0x12, 0xC6, 0x84, 0x5E, 0x43, 0x51, 0x50, + 0x9C, 0x19, 0x9B, 0x78, 0xE6, 0xFC, 0xF6, 0xED, 0x47, 0x7E, 0x7B, 0x3D, + 0x66, 0xEF, 0x13, 0x13, 0x88, 0x5F, 0x3C, 0xA1, 0x63, 0xFB, 0xF9, 0xAC, + 0x87, 0x35, 0x9F, 0xF3, 0x82, 0x9E, 0xA4, 0x3F, 0x0A, 0x9C, 0x31, 0x69, + 0x8B, 0x99, 0xA4, 0x88, 0x4A, 0x8E, 0x6E, 0x66, 0x4D, 0xEF, 0x16, 0xC4, + 0x0F, 0x79, 0x28, 0x21, 0x60, 0x0D, 0x85, 0x16, 0x7D, 0xD7, 0x54, 0x38, + 0xF1, 0x92, 0x56, 0xFD, 0xB5, 0x33, 0x4C, 0x83, 0xDC, 0xD7, 0x10, 0x9F, + 0x4B, 0xFD, 0xC6, 0xF8, 0x42, 0xBD, 0xBA, 0x7C, 0x73, 0x02, 0xE0, 0xFF, + 0x7D, 0xCD, 0x5B, 0xE1, 0xD4, 0xAC, 0x61, 0x7B, 0x57, 0xD5, 0x4A, 0x7B, + 0x5B, 0xD4, 0x85, 0x58, 0x27, 0x5D, 0xBF, 0xF8, 0x2B, 0x60, 0xAC, 0xA0, + 0x26, 0xAE, 0x14, 0x21, 0x27, 0xC6, 0x77, 0x9A, 0x33, 0x80, 0x3C, 0x5E, + 0x46, 0x3F, 0xF7, 0xC3, 0xB1, 0xA3, 0x86, 0x33, 0xC6, 0xE8, 0x5E, 0x0D, + 0xB9, 0x35, 0x2C, 0xAA, 0x46, 0xC1, 0x85, 0x02, 0x75, 0x80, 0xA0, 0xEB, + 0x24, 0xFB, 0x15, 0xAA, 0xE4, 0x67, 0x7F, 0x6E, 0x77, 0x3F, 0xF4, 0x04, + 0x8A, 0x2F, 0x7C, 0x7B, 0xE3, 0x17, 0x61, 0xF0, 0xDD, 0x09, 0xA9, 0x20, + 0xC8, 0xBE, 0x09, 0xA4, 0xD0, 0x7E, 0x44, 0xC3, 0xB2, 0x30, 0x4A, 0x38, + 0xAA, 0xA9, 0xEC, 0x18, 0x9A, 0x07, 0x82, 0x2B, 0xDB, 0xB8, 0x9C, 0x18, + 0xAD, 0xDA, 0xE0, 0x46, 0x17, 0xAC, 0xCF, 0x5D +}; + +static const unsigned char TA119_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA120_DN[] = { + 0x30, 0x81, 0x9C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x50, 0x41, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x0C, 0x06, 0x50, 0x61, 0x6E, 0x61, 0x6D, 0x61, 0x31, 0x14, 0x30, + 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x0B, 0x50, 0x61, 0x6E, 0x61, + 0x6D, 0x61, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x24, 0x30, 0x22, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x1B, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, + 0x6F, 0x72, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x53, + 0x2E, 0x20, 0x64, 0x65, 0x20, 0x52, 0x2E, 0x4C, 0x2E, 0x31, 0x27, 0x30, + 0x25, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x1E, 0x54, 0x72, 0x75, 0x73, + 0x74, 0x43, 0x6F, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, + 0x74, 0x79, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, + 0x0E, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x6F, 0x72, 0x20, 0x45, 0x43, + 0x41, 0x2D, 0x31 +}; + +static const unsigned char TA120_RSA_N[] = { + 0xCF, 0x8F, 0xE0, 0x11, 0xB5, 0x9F, 0xA8, 0x76, 0x76, 0xDB, 0xDF, 0x0F, + 0x54, 0xEF, 0x73, 0x63, 0x29, 0x82, 0xAD, 0x47, 0xC6, 0xA3, 0x6B, 0xED, + 0xFE, 0x5F, 0x33, 0xF8, 0x43, 0x51, 0xE9, 0x1A, 0x33, 0x91, 0x31, 0x17, + 0xA0, 0x74, 0xC4, 0xD4, 0xA7, 0x01, 0xE6, 0xB2, 0x92, 0x3E, 0x6A, 0x9D, + 0xED, 0x0E, 0xF9, 0x74, 0x98, 0x40, 0xD3, 0x3F, 0x03, 0x80, 0x06, 0x82, + 0x40, 0xE8, 0xB1, 0xE2, 0xA7, 0x51, 0xA7, 0x1D, 0x83, 0x26, 0x6B, 0xAB, + 0xDE, 0xFA, 0x17, 0x91, 0x2B, 0xD8, 0xC6, 0xAC, 0x1E, 0xB1, 0x9E, 0x19, + 0x01, 0xD5, 0x97, 0xA6, 0xEA, 0x0D, 0xB7, 0xC4, 0x55, 0x1F, 0x27, 0x7C, + 0xD2, 0x08, 0xD5, 0x76, 0x1F, 0x29, 0x15, 0x87, 0x40, 0x39, 0xDD, 0x38, + 0x45, 0x11, 0x75, 0xD0, 0x9A, 0xA7, 0x34, 0xE0, 0xBF, 0xCD, 0xC8, 0x52, + 0x1D, 0xB9, 0x47, 0x7E, 0x0D, 0xB8, 0xBB, 0xC6, 0x0C, 0xF6, 0x73, 0x57, + 0x16, 0x5A, 0x7E, 0x43, 0x91, 0x1F, 0x55, 0x3A, 0xC6, 0x6D, 0x44, 0x04, + 0xAA, 0x9C, 0xA9, 0x9C, 0xA7, 0x4C, 0x89, 0x17, 0x83, 0xAE, 0xA3, 0x04, + 0x5E, 0x52, 0x80, 0x8B, 0x1E, 0x12, 0x25, 0x11, 0x19, 0xD7, 0x0C, 0x7D, + 0x7D, 0x31, 0x44, 0x41, 0xEA, 0xDB, 0xAF, 0xB0, 0x1C, 0xEF, 0x81, 0xD0, + 0x2C, 0xC5, 0x9A, 0x21, 0x9B, 0x3D, 0xED, 0x42, 0x3B, 0x50, 0x26, 0xF2, + 0xEC, 0xCE, 0x71, 0x61, 0x06, 0x62, 0x21, 0x54, 0x4E, 0x7F, 0xC1, 0x9D, + 0x3E, 0x7F, 0x20, 0x8C, 0x80, 0xCB, 0x2A, 0xD8, 0x97, 0x62, 0xC8, 0x83, + 0x33, 0x91, 0x7D, 0xB0, 0xA2, 0x5A, 0x0F, 0x57, 0xE8, 0x3B, 0xCC, 0xF2, + 0x25, 0xB2, 0xD4, 0x7C, 0x2F, 0xEC, 0x4D, 0xC6, 0xA1, 0x3A, 0x15, 0x7A, + 0xE7, 0xB6, 0x5D, 0x35, 0xF5, 0xF6, 0x48, 0x4A, 0x36, 0x45, 0x66, 0xD4, + 0xBA, 0x98, 0x58, 0xC1 +}; + +static const unsigned char TA120_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA121_DN[] = { + 0x30, 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x0C, 0x05, 0x54, 0x65, 0x78, 0x61, 0x73, 0x31, 0x10, 0x30, 0x0E, 0x06, + 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x48, 0x6F, 0x75, 0x73, 0x74, 0x6F, + 0x6E, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0F, + 0x53, 0x53, 0x4C, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x31, 0x31, 0x30, 0x2F, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x28, 0x53, 0x53, 0x4C, 0x2E, 0x63, 0x6F, 0x6D, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, + 0x74, 0x79, 0x20, 0x52, 0x53, 0x41 +}; + +static const unsigned char TA121_RSA_N[] = { + 0xF9, 0x0F, 0xDD, 0xA3, 0x2B, 0x7D, 0xCB, 0xD0, 0x2A, 0xFE, 0xEC, 0x67, + 0x85, 0xA6, 0xE7, 0x2E, 0x1B, 0xBA, 0x77, 0xE1, 0xE3, 0xF5, 0xAF, 0xA4, + 0xEC, 0xFA, 0x4A, 0x5D, 0x91, 0xC4, 0x57, 0x47, 0x6B, 0x18, 0x77, 0x6B, + 0x76, 0xF2, 0xFD, 0x93, 0xE4, 0x3D, 0x0F, 0xC2, 0x16, 0x9E, 0x0B, 0x66, + 0xC3, 0x56, 0x94, 0x9E, 0x17, 0x83, 0x85, 0xCE, 0x56, 0xEF, 0xF2, 0x16, + 0xFD, 0x00, 0x62, 0xF5, 0x22, 0x09, 0x54, 0xE8, 0x65, 0x17, 0x4E, 0x41, + 0xB9, 0xE0, 0x4F, 0x46, 0x97, 0xAA, 0x1B, 0xC8, 0xB8, 0x6E, 0x62, 0x5E, + 0x69, 0xB1, 0x5F, 0xDB, 0x2A, 0x02, 0x7E, 0xFC, 0x6C, 0xCA, 0xF3, 0x41, + 0xD8, 0xED, 0xD0, 0xE8, 0xFC, 0x3F, 0x61, 0x48, 0xED, 0xB0, 0x03, 0x14, + 0x1D, 0x10, 0x0E, 0x4B, 0x19, 0xE0, 0xBB, 0x4E, 0xEC, 0x86, 0x65, 0xFF, + 0x36, 0xF3, 0x5E, 0x67, 0x02, 0x0B, 0x9D, 0x86, 0x55, 0x61, 0xFD, 0x7A, + 0x38, 0xED, 0xFE, 0xE2, 0x19, 0x00, 0xB7, 0x6F, 0xA1, 0x50, 0x62, 0x75, + 0x74, 0x3C, 0xA0, 0xFA, 0xC8, 0x25, 0x92, 0xB4, 0x6E, 0x7A, 0x22, 0xC7, + 0xF8, 0x1E, 0xA1, 0xE3, 0xB2, 0xDD, 0x91, 0x31, 0xAB, 0x2B, 0x1D, 0x04, + 0xFF, 0xA5, 0x4A, 0x04, 0x37, 0xE9, 0x85, 0xA4, 0x33, 0x2B, 0xFD, 0xE2, + 0xD6, 0x55, 0x34, 0x7C, 0x19, 0xA4, 0x4A, 0x68, 0xC7, 0xB2, 0xA8, 0xD3, + 0xB7, 0xCA, 0xA1, 0x93, 0x88, 0xEB, 0xC1, 0x97, 0xBC, 0x8C, 0xF9, 0x1D, + 0xD9, 0x22, 0x84, 0x24, 0x74, 0xC7, 0x04, 0x3D, 0x6A, 0xA9, 0x29, 0x93, + 0xCC, 0xEB, 0xB8, 0x5B, 0xE1, 0xFE, 0x5F, 0x25, 0xAA, 0x34, 0x58, 0xC8, + 0xC1, 0x23, 0x54, 0x9D, 0x1B, 0x98, 0x11, 0xC3, 0x38, 0x9C, 0x7E, 0x3D, + 0x86, 0x6C, 0xA5, 0x0F, 0x40, 0x86, 0x7C, 0x02, 0xF4, 0x5C, 0x02, 0x4F, + 0x28, 0xCB, 0xAE, 0x71, 0x9F, 0x0F, 0x3A, 0xC8, 0x33, 0xFE, 0x11, 0x25, + 0x35, 0xEA, 0xFC, 0xBA, 0xC5, 0x60, 0x3D, 0xD9, 0x7C, 0x18, 0xD5, 0xB2, + 0xA9, 0xD3, 0x75, 0x78, 0x03, 0x72, 0x22, 0xCA, 0x3A, 0xC3, 0x1F, 0xEF, + 0x2C, 0xE5, 0x2E, 0xA9, 0xFA, 0x9E, 0x2C, 0xB6, 0x51, 0x46, 0xFD, 0xAF, + 0x03, 0xD6, 0xEA, 0x60, 0x68, 0xEA, 0x85, 0x16, 0x36, 0x6B, 0x85, 0xE9, + 0x1E, 0xC0, 0xB3, 0xDD, 0xC4, 0x24, 0xDC, 0x80, 0x2A, 0x81, 0x41, 0x6D, + 0x94, 0x3E, 0xC8, 0xE0, 0xC9, 0x81, 0x41, 0x00, 0x9E, 0x5E, 0xBF, 0x7F, + 0xC5, 0x08, 0x98, 0xA2, 0x18, 0x2C, 0x42, 0x40, 0xB3, 0xF9, 0x6F, 0x38, + 0x27, 0x4B, 0x4E, 0x80, 0xF4, 0x3D, 0x81, 0x47, 0xE0, 0x88, 0x7C, 0xEA, + 0x1C, 0xCE, 0xB5, 0x75, 0x5C, 0x51, 0x2E, 0x1C, 0x2B, 0x7F, 0x1A, 0x72, + 0x28, 0xE7, 0x00, 0xB5, 0xD1, 0x74, 0xC6, 0xD7, 0xE4, 0x9F, 0xAD, 0x07, + 0x93, 0xB6, 0x53, 0x35, 0x35, 0xFC, 0x37, 0xE4, 0xC3, 0xF6, 0x5D, 0x16, + 0xBE, 0x21, 0x73, 0xDE, 0x92, 0x0A, 0xF8, 0xA0, 0x63, 0x6A, 0xBC, 0x96, + 0x92, 0x6A, 0x3E, 0xF8, 0xBC, 0x65, 0x55, 0x9B, 0xDE, 0xF5, 0x0D, 0x89, + 0x26, 0x04, 0xFC, 0x25, 0x1A, 0xA6, 0x25, 0x69, 0xCB, 0xC2, 0x6D, 0xCA, + 0x7C, 0xE2, 0x59, 0x5F, 0x97, 0xAC, 0xEB, 0xEF, 0x2E, 0xC8, 0xBC, 0xD7, + 0x1B, 0x59, 0x3C, 0x2B, 0xCC, 0xF2, 0x19, 0xC8, 0x93, 0x6B, 0x27, 0x63, + 0x19, 0xCF, 0xFC, 0xE9, 0x26, 0xF8, 0xCA, 0x71, 0x9B, 0x7F, 0x93, 0xFE, + 0x34, 0x67, 0x84, 0x4E, 0x99, 0xEB, 0xFC, 0xB3, 0x78, 0x09, 0x33, 0x70, + 0xBA, 0x66, 0xA6, 0x76, 0xED, 0x1B, 0x73, 0xEB, 0x1A, 0xA5, 0x0D, 0xC4, + 0x22, 0x13, 0x20, 0x94, 0x56, 0x0A, 0x4E, 0x2C, 0x6C, 0x4E, 0xB1, 0xFD, + 0xCF, 0x9C, 0x09, 0xBA, 0xA2, 0x33, 0xED, 0x87 +}; + +static const unsigned char TA121_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA122_DN[] = { + 0x30, 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x0C, 0x05, 0x54, 0x65, 0x78, 0x61, 0x73, 0x31, 0x10, 0x30, 0x0E, 0x06, + 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x48, 0x6F, 0x75, 0x73, 0x74, 0x6F, + 0x6E, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0F, + 0x53, 0x53, 0x4C, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x31, 0x31, 0x30, 0x2F, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x28, 0x53, 0x53, 0x4C, 0x2E, 0x63, 0x6F, 0x6D, 0x20, 0x52, 0x6F, + 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, + 0x74, 0x79, 0x20, 0x45, 0x43, 0x43 +}; + +static const unsigned char TA122_EC_Q[] = { + 0x04, 0x45, 0x6E, 0xA9, 0x50, 0xC4, 0xA6, 0x23, 0x36, 0x9E, 0x5F, 0x28, + 0x8D, 0x17, 0xCB, 0x96, 0x22, 0x64, 0x3F, 0xDC, 0x7A, 0x8E, 0x1D, 0xCC, + 0x08, 0xB3, 0xA2, 0x71, 0x24, 0xBA, 0x8E, 0x49, 0xB9, 0x04, 0x1B, 0x47, + 0x96, 0x58, 0xAB, 0x2D, 0x95, 0xC8, 0xED, 0x9E, 0x08, 0x35, 0xC8, 0x27, + 0xEB, 0x89, 0x8C, 0x53, 0x58, 0xEB, 0x62, 0x8A, 0xFE, 0xF0, 0x5B, 0x0F, + 0x6B, 0x31, 0x52, 0x63, 0x41, 0x3B, 0x89, 0xCD, 0xEC, 0xEC, 0xB6, 0x8D, + 0x19, 0xD3, 0x34, 0x07, 0xDC, 0xBB, 0xC6, 0x06, 0x7F, 0xC2, 0x45, 0x95, + 0xEC, 0xCB, 0x7F, 0xA8, 0x23, 0xE0, 0x09, 0xE9, 0x81, 0xFA, 0xF3, 0x47, + 0xD3 +}; + +static const unsigned char TA123_DN[] = { + 0x30, 0x81, 0x82, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, + 0x13, 0x02, 0x55, 0x53, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x0C, 0x05, 0x54, 0x65, 0x78, 0x61, 0x73, 0x31, 0x10, 0x30, 0x0E, + 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x48, 0x6F, 0x75, 0x73, 0x74, + 0x6F, 0x6E, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, + 0x0F, 0x53, 0x53, 0x4C, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, + 0x03, 0x0C, 0x2E, 0x53, 0x53, 0x4C, 0x2E, 0x63, 0x6F, 0x6D, 0x20, 0x45, + 0x56, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, + 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x53, 0x41, 0x20, 0x52, + 0x32 +}; + +static const unsigned char TA123_RSA_N[] = { + 0x8F, 0x36, 0x65, 0x40, 0xE1, 0xD6, 0x4D, 0xC0, 0xD7, 0xB4, 0xE9, 0x46, + 0xDA, 0x6B, 0xEA, 0x33, 0x47, 0xCD, 0x4C, 0xF9, 0x7D, 0x7D, 0xBE, 0xBD, + 0x2D, 0x3D, 0xF0, 0xDB, 0x78, 0xE1, 0x86, 0xA5, 0xD9, 0xBA, 0x09, 0x57, + 0x68, 0xED, 0x57, 0x3E, 0xA0, 0xD0, 0x08, 0x41, 0x83, 0xE7, 0x28, 0x41, + 0x24, 0x1F, 0xE3, 0x72, 0x15, 0xD0, 0x01, 0x1A, 0xFB, 0x5E, 0x70, 0x23, + 0xB2, 0xCB, 0x9F, 0x39, 0xE3, 0xCF, 0xC5, 0x4E, 0xC6, 0x92, 0x6D, 0x26, + 0xC6, 0x7B, 0xBB, 0xB3, 0xDA, 0x27, 0x9D, 0x0A, 0x86, 0xE9, 0x81, 0x37, + 0x05, 0xFE, 0xF0, 0x71, 0x71, 0xEC, 0xC3, 0x1C, 0xE9, 0x63, 0xA2, 0x17, + 0x14, 0x9D, 0xEF, 0x1B, 0x67, 0xD3, 0x85, 0x55, 0x02, 0x02, 0xD6, 0x49, + 0xC9, 0xCC, 0x5A, 0xE1, 0xB1, 0xF7, 0x6F, 0x32, 0x9F, 0xC9, 0xD4, 0x3B, + 0x88, 0x41, 0xA8, 0x9C, 0xBD, 0xCB, 0xAB, 0xDB, 0x6D, 0x7B, 0x09, 0x1F, + 0xA2, 0x4C, 0x72, 0x90, 0xDA, 0x2B, 0x08, 0xFC, 0xCF, 0x3C, 0x54, 0xCE, + 0x67, 0x0F, 0xA8, 0xCF, 0x5D, 0x96, 0x19, 0x0B, 0xC4, 0xE3, 0x72, 0xEB, + 0xAD, 0xD1, 0x7D, 0x1D, 0x27, 0xEF, 0x92, 0xEB, 0x10, 0xBF, 0x5B, 0xEB, + 0x3B, 0xAF, 0xCF, 0x80, 0xDD, 0xC1, 0xD2, 0x96, 0x04, 0x5B, 0x7A, 0x7E, + 0xA4, 0xA9, 0x3C, 0x38, 0x76, 0xA4, 0x62, 0x8E, 0xA0, 0x39, 0x5E, 0xEA, + 0x77, 0xCF, 0x5D, 0x00, 0x59, 0x8F, 0x66, 0x2C, 0x3E, 0x07, 0xA2, 0xA3, + 0x05, 0x26, 0x11, 0x69, 0x97, 0xEA, 0x85, 0xB7, 0x0F, 0x96, 0x0B, 0x4B, + 0xC8, 0x40, 0xE1, 0x50, 0xBA, 0x2E, 0x8A, 0xCB, 0xF7, 0x0F, 0x9A, 0x22, + 0xE7, 0x7F, 0x9A, 0x37, 0x13, 0xCD, 0xF2, 0x4D, 0x13, 0x6B, 0x21, 0xD1, + 0xC0, 0xCC, 0x22, 0xF2, 0xA1, 0x46, 0xF6, 0x44, 0x69, 0x9C, 0xCA, 0x61, + 0x35, 0x07, 0x00, 0x6F, 0xD6, 0x61, 0x08, 0x11, 0xEA, 0xBA, 0xB8, 0xF6, + 0xE9, 0xB3, 0x60, 0xE5, 0x4D, 0xB9, 0xEC, 0x9F, 0x14, 0x66, 0xC9, 0x57, + 0x58, 0xDB, 0xCD, 0x87, 0x69, 0xF8, 0x8A, 0x86, 0x12, 0x03, 0x47, 0xBF, + 0x66, 0x13, 0x76, 0xAC, 0x77, 0x7D, 0x34, 0x24, 0x85, 0x83, 0xCD, 0xD7, + 0xAA, 0x9C, 0x90, 0x1A, 0x9F, 0x21, 0x2C, 0x7F, 0x78, 0xB7, 0x64, 0xB8, + 0xD8, 0xE8, 0xA6, 0xF4, 0x78, 0xB3, 0x55, 0xCB, 0x84, 0xD2, 0x32, 0xC4, + 0x78, 0xAE, 0xA3, 0x8F, 0x61, 0xDD, 0xCE, 0x08, 0x53, 0xAD, 0xEC, 0x88, + 0xFC, 0x15, 0xE4, 0x9A, 0x0D, 0xE6, 0x9F, 0x1A, 0x77, 0xCE, 0x4C, 0x8F, + 0xB8, 0x14, 0x15, 0x3D, 0x62, 0x9C, 0x86, 0x38, 0x06, 0x00, 0x66, 0x12, + 0xE4, 0x59, 0x76, 0x5A, 0x53, 0xC0, 0x02, 0x98, 0xA2, 0x10, 0x2B, 0x68, + 0x44, 0x7B, 0x8E, 0x79, 0xCE, 0x33, 0x4A, 0x76, 0xAA, 0x5B, 0x81, 0x16, + 0x1B, 0xB5, 0x8A, 0xD8, 0xD0, 0x00, 0x7B, 0x5E, 0x62, 0xB4, 0x09, 0xD6, + 0x86, 0x63, 0x0E, 0xA6, 0x05, 0x95, 0x49, 0xBA, 0x28, 0x8B, 0x88, 0x93, + 0xB2, 0x34, 0x1C, 0xD8, 0xA4, 0x55, 0x6E, 0xB7, 0x1C, 0xD0, 0xDE, 0x99, + 0x55, 0x3B, 0x23, 0xF4, 0x22, 0xE0, 0xF9, 0x29, 0x66, 0x26, 0xEC, 0x20, + 0x50, 0x77, 0xDB, 0x4A, 0x0B, 0x8F, 0xBE, 0xE5, 0x02, 0x60, 0x70, 0x41, + 0x5E, 0xD4, 0xAE, 0x50, 0x39, 0x22, 0x14, 0x26, 0xCB, 0xB2, 0x3B, 0x73, + 0x74, 0x55, 0x47, 0x07, 0x79, 0x81, 0x39, 0xA8, 0x30, 0x13, 0x44, 0xE5, + 0x04, 0x8A, 0xAE, 0x96, 0x13, 0x25, 0x42, 0x0F, 0xB9, 0x53, 0xC4, 0x9B, + 0xFC, 0xCD, 0xE4, 0x1C, 0xDE, 0x3C, 0xFA, 0xAB, 0xD6, 0x06, 0x4A, 0x1F, + 0x67, 0xA6, 0x98, 0x30, 0x1C, 0xDD, 0x2C, 0xDB, 0xDC, 0x18, 0x95, 0x57, + 0x66, 0xC6, 0xFF, 0x5C, 0x8B, 0x56, 0xF5, 0x77 +}; + +static const unsigned char TA123_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA124_DN[] = { + 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x0C, 0x05, 0x54, 0x65, 0x78, 0x61, 0x73, 0x31, 0x10, 0x30, 0x0E, 0x06, + 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x48, 0x6F, 0x75, 0x73, 0x74, 0x6F, + 0x6E, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0F, + 0x53, 0x53, 0x4C, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x0C, 0x2B, 0x53, 0x53, 0x4C, 0x2E, 0x63, 0x6F, 0x6D, 0x20, 0x45, 0x56, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, + 0x6F, 0x72, 0x69, 0x74, 0x79, 0x20, 0x45, 0x43, 0x43 +}; + +static const unsigned char TA124_EC_Q[] = { + 0x04, 0xAA, 0x12, 0x47, 0x90, 0x98, 0x1B, 0xFB, 0xEF, 0xC3, 0x40, 0x07, + 0x83, 0x20, 0x4E, 0xF1, 0x30, 0x82, 0xA2, 0x06, 0xD1, 0xF2, 0x92, 0x86, + 0x61, 0xF2, 0xF6, 0x21, 0x68, 0xCA, 0x00, 0xC4, 0xC7, 0xEA, 0x43, 0x00, + 0x54, 0x86, 0xDC, 0xFD, 0x1F, 0xDF, 0x00, 0xB8, 0x41, 0x62, 0x5C, 0xDC, + 0x70, 0x16, 0x32, 0xDE, 0x1F, 0x99, 0xD4, 0xCC, 0xC5, 0x07, 0xC8, 0x08, + 0x1F, 0x61, 0x16, 0x07, 0x51, 0x3D, 0x7D, 0x5C, 0x07, 0x53, 0xE3, 0x35, + 0x38, 0x8C, 0xDF, 0xCD, 0x9F, 0xD9, 0x2E, 0x0D, 0x4A, 0xB6, 0x19, 0x2E, + 0x5A, 0x70, 0x5A, 0x06, 0xED, 0xBE, 0xF0, 0xA1, 0xB0, 0xCA, 0xD0, 0x09, + 0x29 +}; + +static const unsigned char TA125_DN[] = { + 0x30, 0x4C, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, + 0x17, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x20, + 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x52, 0x36, + 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0A, 0x47, + 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0A, 0x47, 0x6C, 0x6F, 0x62, + 0x61, 0x6C, 0x53, 0x69, 0x67, 0x6E +}; + +static const unsigned char TA125_RSA_N[] = { + 0x95, 0x07, 0xE8, 0x73, 0xCA, 0x66, 0xF9, 0xEC, 0x14, 0xCA, 0x7B, 0x3C, + 0xF7, 0x0D, 0x08, 0xF1, 0xB4, 0x45, 0x0B, 0x2C, 0x82, 0xB4, 0x48, 0xC6, + 0xEB, 0x5B, 0x3C, 0xAE, 0x83, 0xB8, 0x41, 0x92, 0x33, 0x14, 0xA4, 0x6F, + 0x7F, 0xE9, 0x2A, 0xCC, 0xC6, 0xB0, 0x88, 0x6B, 0xC5, 0xB6, 0x89, 0xD1, + 0xC6, 0xB2, 0xFF, 0x14, 0xCE, 0x51, 0x14, 0x21, 0xEC, 0x4A, 0xDD, 0x1B, + 0x5A, 0xC6, 0xD6, 0x87, 0xEE, 0x4D, 0x3A, 0x15, 0x06, 0xED, 0x64, 0x66, + 0x0B, 0x92, 0x80, 0xCA, 0x44, 0xDE, 0x73, 0x94, 0x4E, 0xF3, 0xA7, 0x89, + 0x7F, 0x4F, 0x78, 0x63, 0x08, 0xC8, 0x12, 0x50, 0x6D, 0x42, 0x66, 0x2F, + 0x4D, 0xB9, 0x79, 0x28, 0x4D, 0x52, 0x1A, 0x8A, 0x1A, 0x80, 0xB7, 0x19, + 0x81, 0x0E, 0x7E, 0xC4, 0x8A, 0xBC, 0x64, 0x4C, 0x21, 0x1C, 0x43, 0x68, + 0xD7, 0x3D, 0x3C, 0x8A, 0xC5, 0xB2, 0x66, 0xD5, 0x90, 0x9A, 0xB7, 0x31, + 0x06, 0xC5, 0xBE, 0xE2, 0x6D, 0x32, 0x06, 0xA6, 0x1E, 0xF9, 0xB9, 0xEB, + 0xAA, 0xA3, 0xB8, 0xBF, 0xBE, 0x82, 0x63, 0x50, 0xD0, 0xF0, 0x18, 0x89, + 0xDF, 0xE4, 0x0F, 0x79, 0xF5, 0xEA, 0xA2, 0x1F, 0x2A, 0xD2, 0x70, 0x2E, + 0x7B, 0xE7, 0xBC, 0x93, 0xBB, 0x6D, 0x53, 0xE2, 0x48, 0x7C, 0x8C, 0x10, + 0x07, 0x38, 0xFF, 0x66, 0xB2, 0x77, 0x61, 0x7E, 0xE0, 0xEA, 0x8C, 0x3C, + 0xAA, 0xB4, 0xA4, 0xF6, 0xF3, 0x95, 0x4A, 0x12, 0x07, 0x6D, 0xFD, 0x8C, + 0xB2, 0x89, 0xCF, 0xD0, 0xA0, 0x61, 0x77, 0xC8, 0x58, 0x74, 0xB0, 0xD4, + 0x23, 0x3A, 0xF7, 0x5D, 0x3A, 0xCA, 0xA2, 0xDB, 0x9D, 0x09, 0xDE, 0x5D, + 0x44, 0x2D, 0x90, 0xF1, 0x81, 0xCD, 0x57, 0x92, 0xFA, 0x7E, 0xBC, 0x50, + 0x04, 0x63, 0x34, 0xDF, 0x6B, 0x93, 0x18, 0xBE, 0x6B, 0x36, 0xB2, 0x39, + 0xE4, 0xAC, 0x24, 0x36, 0xB7, 0xF0, 0xEF, 0xB6, 0x1C, 0x13, 0x57, 0x93, + 0xB6, 0xDE, 0xB2, 0xF8, 0xE2, 0x85, 0xB7, 0x73, 0xA2, 0xB8, 0x35, 0xAA, + 0x45, 0xF2, 0xE0, 0x9D, 0x36, 0xA1, 0x6F, 0x54, 0x8A, 0xF1, 0x72, 0x56, + 0x6E, 0x2E, 0x88, 0xC5, 0x51, 0x42, 0x44, 0x15, 0x94, 0xEE, 0xA3, 0xC5, + 0x38, 0x96, 0x9B, 0x4E, 0x4E, 0x5A, 0x0B, 0x47, 0xF3, 0x06, 0x36, 0x49, + 0x77, 0x30, 0xBC, 0x71, 0x37, 0xE5, 0xA6, 0xEC, 0x21, 0x08, 0x75, 0xFC, + 0xE6, 0x61, 0x16, 0x3F, 0x77, 0xD5, 0xD9, 0x91, 0x97, 0x84, 0x0A, 0x6C, + 0xD4, 0x02, 0x4D, 0x74, 0xC0, 0x14, 0xED, 0xFD, 0x39, 0xFB, 0x83, 0xF2, + 0x5E, 0x14, 0xA1, 0x04, 0xB0, 0x0B, 0xE9, 0xFE, 0xEE, 0x8F, 0xE1, 0x6E, + 0x0B, 0xB2, 0x08, 0xB3, 0x61, 0x66, 0x09, 0x6A, 0xB1, 0x06, 0x3A, 0x65, + 0x96, 0x59, 0xC0, 0xF0, 0x35, 0xFD, 0xC9, 0xDA, 0x28, 0x8D, 0x1A, 0x11, + 0x87, 0x70, 0x81, 0x0A, 0xA8, 0x9A, 0x75, 0x1D, 0x9E, 0x3A, 0x86, 0x05, + 0x00, 0x9E, 0xDB, 0x80, 0xD6, 0x25, 0xF9, 0xDC, 0x05, 0x9E, 0x27, 0x59, + 0x4C, 0x76, 0x39, 0x5B, 0xEA, 0xF9, 0xA5, 0xA1, 0xD8, 0x83, 0x0F, 0xD1, + 0xFF, 0xDF, 0x30, 0x11, 0xF9, 0x85, 0xCF, 0x33, 0x48, 0xF5, 0xCA, 0x6D, + 0x64, 0x14, 0x2C, 0x7A, 0x58, 0x4F, 0xD3, 0x4B, 0x08, 0x49, 0xC5, 0x95, + 0x64, 0x1A, 0x63, 0x0E, 0x79, 0x3D, 0xF5, 0xB3, 0x8C, 0xCA, 0x58, 0xAD, + 0x9C, 0x42, 0x45, 0x79, 0x6E, 0x0E, 0x87, 0x19, 0x5C, 0x54, 0xB1, 0x65, + 0xB6, 0xBF, 0x8C, 0x9B, 0xDC, 0x13, 0xE9, 0x0D, 0x6F, 0xB8, 0x2E, 0xDC, + 0x67, 0x6E, 0xC9, 0x8B, 0x11, 0xB5, 0x84, 0x14, 0x8A, 0x00, 0x19, 0x70, + 0x83, 0x79, 0x91, 0x97, 0x91, 0xD4, 0x1A, 0x27, 0xBF, 0x37, 0x1E, 0x32, + 0x07, 0xD8, 0x14, 0x63, 0x3C, 0x28, 0x4C, 0xAF +}; + +static const unsigned char TA125_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA126_DN[] = { + 0x30, 0x6D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x48, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x07, 0x57, 0x49, 0x53, 0x65, 0x4B, 0x65, 0x79, 0x31, 0x22, 0x30, + 0x20, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x19, 0x4F, 0x49, 0x53, 0x54, + 0x45, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x20, 0x45, 0x6E, 0x64, 0x6F, 0x72, 0x73, 0x65, 0x64, 0x31, 0x28, 0x30, + 0x26, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1F, 0x4F, 0x49, 0x53, 0x54, + 0x45, 0x20, 0x57, 0x49, 0x53, 0x65, 0x4B, 0x65, 0x79, 0x20, 0x47, 0x6C, + 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x47, 0x43, + 0x20, 0x43, 0x41 +}; + +static const unsigned char TA126_EC_Q[] = { + 0x04, 0x4C, 0xE9, 0x50, 0xC0, 0xC6, 0x0F, 0x72, 0x18, 0xBC, 0xD8, 0xF1, + 0xBA, 0xB3, 0x89, 0xE2, 0x79, 0x4A, 0xA3, 0x16, 0xA7, 0x6B, 0x54, 0x24, + 0xDB, 0x51, 0xFF, 0xEA, 0xF4, 0x09, 0x24, 0xC3, 0x0B, 0x22, 0x9F, 0xCB, + 0x6A, 0x27, 0x82, 0x81, 0x0D, 0xD2, 0xC0, 0xAF, 0x31, 0xE4, 0x74, 0x82, + 0x6E, 0xCA, 0x25, 0xD9, 0x8C, 0x75, 0x9D, 0xF1, 0xDB, 0xD0, 0x9A, 0xA2, + 0x4B, 0x21, 0x7E, 0x16, 0xA7, 0x63, 0x90, 0xD2, 0x39, 0xD4, 0xB1, 0x87, + 0x78, 0x5F, 0x18, 0x96, 0x0F, 0x50, 0x1B, 0x35, 0x37, 0x0F, 0x6A, 0xC6, + 0xDC, 0xD9, 0x13, 0x4D, 0xA4, 0x8E, 0x90, 0x37, 0xE6, 0xBD, 0x5B, 0x31, + 0x91 +}; + +static const unsigned char TA127_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x19, 0x47, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x4C, 0x4C, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x0B, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x52, + 0x31 +}; + +static const unsigned char TA127_RSA_N[] = { + 0xB6, 0x11, 0x02, 0x8B, 0x1E, 0xE3, 0xA1, 0x77, 0x9B, 0x3B, 0xDC, 0xBF, + 0x94, 0x3E, 0xB7, 0x95, 0xA7, 0x40, 0x3C, 0xA1, 0xFD, 0x82, 0xF9, 0x7D, + 0x32, 0x06, 0x82, 0x71, 0xF6, 0xF6, 0x8C, 0x7F, 0xFB, 0xE8, 0xDB, 0xBC, + 0x6A, 0x2E, 0x97, 0x97, 0xA3, 0x8C, 0x4B, 0xF9, 0x2B, 0xF6, 0xB1, 0xF9, + 0xCE, 0x84, 0x1D, 0xB1, 0xF9, 0xC5, 0x97, 0xDE, 0xEF, 0xB9, 0xF2, 0xA3, + 0xE9, 0xBC, 0x12, 0x89, 0x5E, 0xA7, 0xAA, 0x52, 0xAB, 0xF8, 0x23, 0x27, + 0xCB, 0xA4, 0xB1, 0x9C, 0x63, 0xDB, 0xD7, 0x99, 0x7E, 0xF0, 0x0A, 0x5E, + 0xEB, 0x68, 0xA6, 0xF4, 0xC6, 0x5A, 0x47, 0x0D, 0x4D, 0x10, 0x33, 0xE3, + 0x4E, 0xB1, 0x13, 0xA3, 0xC8, 0x18, 0x6C, 0x4B, 0xEC, 0xFC, 0x09, 0x90, + 0xDF, 0x9D, 0x64, 0x29, 0x25, 0x23, 0x07, 0xA1, 0xB4, 0xD2, 0x3D, 0x2E, + 0x60, 0xE0, 0xCF, 0xD2, 0x09, 0x87, 0xBB, 0xCD, 0x48, 0xF0, 0x4D, 0xC2, + 0xC2, 0x7A, 0x88, 0x8A, 0xBB, 0xBA, 0xCF, 0x59, 0x19, 0xD6, 0xAF, 0x8F, + 0xB0, 0x07, 0xB0, 0x9E, 0x31, 0xF1, 0x82, 0xC1, 0xC0, 0xDF, 0x2E, 0xA6, + 0x6D, 0x6C, 0x19, 0x0E, 0xB5, 0xD8, 0x7E, 0x26, 0x1A, 0x45, 0x03, 0x3D, + 0xB0, 0x79, 0xA4, 0x94, 0x28, 0xAD, 0x0F, 0x7F, 0x26, 0xE5, 0xA8, 0x08, + 0xFE, 0x96, 0xE8, 0x3C, 0x68, 0x94, 0x53, 0xEE, 0x83, 0x3A, 0x88, 0x2B, + 0x15, 0x96, 0x09, 0xB2, 0xE0, 0x7A, 0x8C, 0x2E, 0x75, 0xD6, 0x9C, 0xEB, + 0xA7, 0x56, 0x64, 0x8F, 0x96, 0x4F, 0x68, 0xAE, 0x3D, 0x97, 0xC2, 0x84, + 0x8F, 0xC0, 0xBC, 0x40, 0xC0, 0x0B, 0x5C, 0xBD, 0xF6, 0x87, 0xB3, 0x35, + 0x6C, 0xAC, 0x18, 0x50, 0x7F, 0x84, 0xE0, 0x4C, 0xCD, 0x92, 0xD3, 0x20, + 0xE9, 0x33, 0xBC, 0x52, 0x99, 0xAF, 0x32, 0xB5, 0x29, 0xB3, 0x25, 0x2A, + 0xB4, 0x48, 0xF9, 0x72, 0xE1, 0xCA, 0x64, 0xF7, 0xE6, 0x82, 0x10, 0x8D, + 0xE8, 0x9D, 0xC2, 0x8A, 0x88, 0xFA, 0x38, 0x66, 0x8A, 0xFC, 0x63, 0xF9, + 0x01, 0xF9, 0x78, 0xFD, 0x7B, 0x5C, 0x77, 0xFA, 0x76, 0x87, 0xFA, 0xEC, + 0xDF, 0xB1, 0x0E, 0x79, 0x95, 0x57, 0xB4, 0xBD, 0x26, 0xEF, 0xD6, 0x01, + 0xD1, 0xEB, 0x16, 0x0A, 0xBB, 0x8E, 0x0B, 0xB5, 0xC5, 0xC5, 0x8A, 0x55, + 0xAB, 0xD3, 0xAC, 0xEA, 0x91, 0x4B, 0x29, 0xCC, 0x19, 0xA4, 0x32, 0x25, + 0x4E, 0x2A, 0xF1, 0x65, 0x44, 0xD0, 0x02, 0xCE, 0xAA, 0xCE, 0x49, 0xB4, + 0xEA, 0x9F, 0x7C, 0x83, 0xB0, 0x40, 0x7B, 0xE7, 0x43, 0xAB, 0xA7, 0x6C, + 0xA3, 0x8F, 0x7D, 0x89, 0x81, 0xFA, 0x4C, 0xA5, 0xFF, 0xD5, 0x8E, 0xC3, + 0xCE, 0x4B, 0xE0, 0xB5, 0xD8, 0xB3, 0x8E, 0x45, 0xCF, 0x76, 0xC0, 0xED, + 0x40, 0x2B, 0xFD, 0x53, 0x0F, 0xB0, 0xA7, 0xD5, 0x3B, 0x0D, 0xB1, 0x8A, + 0xA2, 0x03, 0xDE, 0x31, 0xAD, 0xCC, 0x77, 0xEA, 0x6F, 0x7B, 0x3E, 0xD6, + 0xDF, 0x91, 0x22, 0x12, 0xE6, 0xBE, 0xFA, 0xD8, 0x32, 0xFC, 0x10, 0x63, + 0x14, 0x51, 0x72, 0xDE, 0x5D, 0xD6, 0x16, 0x93, 0xBD, 0x29, 0x68, 0x33, + 0xEF, 0x3A, 0x66, 0xEC, 0x07, 0x8A, 0x26, 0xDF, 0x13, 0xD7, 0x57, 0x65, + 0x78, 0x27, 0xDE, 0x5E, 0x49, 0x14, 0x00, 0xA2, 0x00, 0x7F, 0x9A, 0xA8, + 0x21, 0xB6, 0xA9, 0xB1, 0x95, 0xB0, 0xA5, 0xB9, 0x0D, 0x16, 0x11, 0xDA, + 0xC7, 0x6C, 0x48, 0x3C, 0x40, 0xE0, 0x7E, 0x0D, 0x5A, 0xCD, 0x56, 0x3C, + 0xD1, 0x97, 0x05, 0xB9, 0xCB, 0x4B, 0xED, 0x39, 0x4B, 0x9C, 0xC4, 0x3F, + 0xD2, 0x55, 0x13, 0x6E, 0x24, 0xB0, 0xD6, 0x71, 0xFA, 0xF4, 0xC1, 0xBA, + 0xCC, 0xED, 0x1B, 0xF5, 0xFE, 0x81, 0x41, 0xD8, 0x00, 0x98, 0x3D, 0x3A, + 0xC8, 0xAE, 0x7A, 0x98, 0x37, 0x18, 0x05, 0x95 +}; + +static const unsigned char TA127_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA128_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x19, 0x47, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x4C, 0x4C, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x0B, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x52, + 0x32 +}; + +static const unsigned char TA128_RSA_N[] = { + 0xCE, 0xDE, 0xFD, 0xA6, 0xFB, 0xEC, 0xEC, 0x14, 0x34, 0x3C, 0x07, 0x06, + 0x5A, 0x6C, 0x59, 0xF7, 0x19, 0x35, 0xDD, 0xF7, 0xC1, 0x9D, 0x55, 0xAA, + 0xD3, 0xCD, 0x3B, 0xA4, 0x93, 0x72, 0xEF, 0x0A, 0xFA, 0x6D, 0x9D, 0xF6, + 0xF0, 0x85, 0x80, 0x5B, 0xA1, 0x48, 0x52, 0x9F, 0x39, 0xC5, 0xB7, 0xEE, + 0x28, 0xAC, 0xEF, 0xCB, 0x76, 0x68, 0x14, 0xB9, 0xDF, 0xAD, 0x01, 0x6C, + 0x99, 0x1F, 0xC4, 0x22, 0x1D, 0x9F, 0xFE, 0x72, 0x77, 0xE0, 0x2C, 0x5B, + 0xAF, 0xE4, 0x04, 0xBF, 0x4F, 0x72, 0xA0, 0x1A, 0x34, 0x98, 0xE8, 0x39, + 0x68, 0xEC, 0x95, 0x25, 0x7B, 0x76, 0xA1, 0xE6, 0x69, 0xB9, 0x85, 0x19, + 0xBD, 0x89, 0x8C, 0xFE, 0xAD, 0xED, 0x36, 0xEA, 0x73, 0xBC, 0xFF, 0x83, + 0xE2, 0xCB, 0x7D, 0xC1, 0xD2, 0xCE, 0x4A, 0xB3, 0x8D, 0x05, 0x9E, 0x8B, + 0x49, 0x93, 0xDF, 0xC1, 0x5B, 0xD0, 0x6E, 0x5E, 0xF0, 0x2E, 0x30, 0x2E, + 0x82, 0xFC, 0xFA, 0xBC, 0xB4, 0x17, 0x0A, 0x48, 0xE5, 0x88, 0x9B, 0xC5, + 0x9B, 0x6B, 0xDE, 0xB0, 0xCA, 0xB4, 0x03, 0xF0, 0xDA, 0xF4, 0x90, 0xB8, + 0x65, 0x64, 0xF7, 0x5C, 0x4C, 0xAD, 0xE8, 0x7E, 0x66, 0x5E, 0x99, 0xD7, + 0xB8, 0xC2, 0x3E, 0xC8, 0xD0, 0x13, 0x9D, 0xAD, 0xEE, 0xE4, 0x45, 0x7B, + 0x89, 0x55, 0xF7, 0x8A, 0x1F, 0x62, 0x52, 0x84, 0x12, 0xB3, 0xC2, 0x40, + 0x97, 0xE3, 0x8A, 0x1F, 0x47, 0x91, 0xA6, 0x74, 0x5A, 0xD2, 0xF8, 0xB1, + 0x63, 0x28, 0x10, 0xB8, 0xB3, 0x09, 0xB8, 0x56, 0x77, 0x40, 0xA2, 0x26, + 0x98, 0x79, 0xC6, 0xFE, 0xDF, 0x25, 0xEE, 0x3E, 0xE5, 0xA0, 0x7F, 0xD4, + 0x61, 0x0F, 0x51, 0x4B, 0x3C, 0x3F, 0x8C, 0xDA, 0xE1, 0x70, 0x74, 0xD8, + 0xC2, 0x68, 0xA1, 0xF9, 0xC1, 0x0C, 0xE9, 0xA1, 0xE2, 0x7F, 0xBB, 0x55, + 0x3C, 0x76, 0x06, 0xEE, 0x6A, 0x4E, 0xCC, 0x92, 0x88, 0x30, 0x4D, 0x9A, + 0xBD, 0x4F, 0x0B, 0x48, 0x9A, 0x84, 0xB5, 0x98, 0xA3, 0xD5, 0xFB, 0x73, + 0xC1, 0x57, 0x61, 0xDD, 0x28, 0x56, 0x75, 0x13, 0xAE, 0x87, 0x8E, 0xE7, + 0x0C, 0x51, 0x09, 0x10, 0x75, 0x88, 0x4C, 0xBC, 0x8D, 0xF9, 0x7B, 0x3C, + 0xD4, 0x22, 0x48, 0x1F, 0x2A, 0xDC, 0xEB, 0x6B, 0xBB, 0x44, 0xB1, 0xCB, + 0x33, 0x71, 0x32, 0x46, 0xAF, 0xAD, 0x4A, 0xF1, 0x8C, 0xE8, 0x74, 0x3A, + 0xAC, 0xE7, 0x1A, 0x22, 0x73, 0x80, 0xD2, 0x30, 0xF7, 0x25, 0x42, 0xC7, + 0x22, 0x3B, 0x3B, 0x12, 0xAD, 0x96, 0x2E, 0xC6, 0xC3, 0x76, 0x07, 0xAA, + 0x20, 0xB7, 0x35, 0x49, 0x57, 0xE9, 0x92, 0x49, 0xE8, 0x76, 0x16, 0x72, + 0x31, 0x67, 0x2B, 0x96, 0x7E, 0x8A, 0xA3, 0xC7, 0x94, 0x56, 0x22, 0xBF, + 0x6A, 0x4B, 0x7E, 0x01, 0x21, 0xB2, 0x23, 0x32, 0xDF, 0xE4, 0x9A, 0x44, + 0x6D, 0x59, 0x5B, 0x5D, 0xF5, 0x00, 0xA0, 0x1C, 0x9B, 0xC6, 0x78, 0x97, + 0x8D, 0x90, 0xFF, 0x9B, 0xC8, 0xAA, 0xB4, 0xAF, 0x11, 0x51, 0x39, 0x5E, + 0xD9, 0xFB, 0x67, 0xAD, 0xD5, 0x5B, 0x11, 0x9D, 0x32, 0x9A, 0x1B, 0xBD, + 0xD5, 0xBA, 0x5B, 0xA5, 0xC9, 0xCB, 0x25, 0x69, 0x53, 0x55, 0x27, 0x5C, + 0xE0, 0xCA, 0x36, 0xCB, 0x88, 0x61, 0xFB, 0x1E, 0xB7, 0xD0, 0xCB, 0xEE, + 0x16, 0xFB, 0xD3, 0xA6, 0x4C, 0xDE, 0x92, 0xA5, 0xD4, 0xE2, 0xDF, 0xF5, + 0x06, 0x54, 0xDE, 0x2E, 0x9D, 0x4B, 0xB4, 0x93, 0x30, 0xAA, 0x81, 0xCE, + 0xDD, 0x1A, 0xDC, 0x51, 0x73, 0x0D, 0x4F, 0x70, 0xE9, 0xE5, 0xB6, 0x16, + 0x21, 0x19, 0x79, 0xB2, 0xE6, 0x89, 0x0B, 0x75, 0x64, 0xCA, 0xD5, 0xAB, + 0xBC, 0x09, 0xC1, 0x18, 0xA1, 0xFF, 0xD4, 0x54, 0xA1, 0x85, 0x3C, 0xFD, + 0x14, 0x24, 0x03, 0xB2, 0x87, 0xD3, 0xA4, 0xB7 +}; + +static const unsigned char TA128_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA129_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x19, 0x47, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x4C, 0x4C, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x0B, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x52, + 0x33 +}; + +static const unsigned char TA129_EC_Q[] = { + 0x04, 0x1F, 0x4F, 0x33, 0x87, 0x33, 0x29, 0x8A, 0xA1, 0x84, 0xDE, 0xCB, + 0xC7, 0x21, 0x58, 0x41, 0x89, 0xEA, 0x56, 0x9D, 0x2B, 0x4B, 0x85, 0xC6, + 0x1D, 0x4C, 0x27, 0xBC, 0x7F, 0x26, 0x51, 0x72, 0x6F, 0xE2, 0x9F, 0xD6, + 0xA3, 0xCA, 0xCC, 0x45, 0x14, 0x46, 0x8B, 0xAD, 0xEF, 0x7E, 0x86, 0x8C, + 0xEC, 0xB1, 0x7E, 0x2F, 0xFF, 0xA9, 0x71, 0x9D, 0x18, 0x84, 0x45, 0x04, + 0x41, 0x55, 0x6E, 0x2B, 0xEA, 0x26, 0x7F, 0xBB, 0x90, 0x01, 0xE3, 0x4B, + 0x19, 0xBA, 0xE4, 0x54, 0x96, 0x45, 0x09, 0xB1, 0xD5, 0x6C, 0x91, 0x44, + 0xAD, 0x84, 0x13, 0x8E, 0x9A, 0x8C, 0x0D, 0x80, 0x0C, 0x32, 0xF6, 0xE0, + 0x27 +}; + +static const unsigned char TA130_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x13, 0x19, 0x47, 0x6F, 0x6F, 0x67, 0x6C, 0x65, 0x20, 0x54, 0x72, 0x75, + 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, + 0x4C, 0x4C, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x0B, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x52, + 0x34 +}; + +static const unsigned char TA130_EC_Q[] = { + 0x04, 0xF3, 0x74, 0x73, 0xA7, 0x68, 0x8B, 0x60, 0xAE, 0x43, 0xB8, 0x35, + 0xC5, 0x81, 0x30, 0x7B, 0x4B, 0x49, 0x9D, 0xFB, 0xC1, 0x61, 0xCE, 0xE6, + 0xDE, 0x46, 0xBD, 0x6B, 0xD5, 0x61, 0x18, 0x35, 0xAE, 0x40, 0xDD, 0x73, + 0xF7, 0x89, 0x91, 0x30, 0x5A, 0xEB, 0x3C, 0xEE, 0x85, 0x7C, 0xA2, 0x40, + 0x76, 0x3B, 0xA9, 0xC6, 0xB8, 0x47, 0xD8, 0x2A, 0xE7, 0x92, 0x91, 0x6A, + 0x73, 0xE9, 0xB1, 0x72, 0x39, 0x9F, 0x29, 0x9F, 0xA2, 0x98, 0xD3, 0x5F, + 0x5E, 0x58, 0x86, 0x65, 0x0F, 0xA1, 0x84, 0x65, 0x06, 0xD1, 0xDC, 0x8B, + 0xC9, 0xC7, 0x73, 0xC8, 0x8C, 0x6A, 0x2F, 0xE5, 0xC4, 0xAB, 0xD1, 0x1D, + 0x8A +}; + +static const unsigned char TA131_DN[] = { + 0x30, 0x3D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x4E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x08, 0x55, 0x6E, 0x69, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x1B, + 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x12, 0x55, 0x43, 0x41, + 0x20, 0x47, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x47, 0x32, 0x20, 0x52, + 0x6F, 0x6F, 0x74 +}; + +static const unsigned char TA131_RSA_N[] = { + 0xC5, 0xE6, 0x2B, 0x6F, 0x7C, 0xEF, 0x26, 0x05, 0x27, 0xA3, 0x81, 0x24, + 0xDA, 0x6F, 0xCB, 0x01, 0xF9, 0x99, 0x9A, 0xA9, 0x32, 0xC2, 0x22, 0x87, + 0x61, 0x41, 0x91, 0x3B, 0xCB, 0xC3, 0x68, 0x1B, 0x06, 0xC5, 0x4C, 0xA9, + 0x2B, 0xC1, 0x67, 0x17, 0x22, 0x1D, 0x2B, 0xED, 0xF9, 0x29, 0x89, 0x93, + 0xA2, 0x78, 0xBD, 0x92, 0x6B, 0xA0, 0xA3, 0x0D, 0xA2, 0x7E, 0xCA, 0x93, + 0xB3, 0xA6, 0xD1, 0x8C, 0x35, 0xD5, 0x75, 0xF9, 0x17, 0xF6, 0xCF, 0x45, + 0xC5, 0xE5, 0x7A, 0xEC, 0x77, 0x93, 0xA0, 0x8F, 0x23, 0xAE, 0x0E, 0x1A, + 0x03, 0x7F, 0xBE, 0xD4, 0xD0, 0xED, 0x2E, 0x7B, 0xAB, 0x46, 0x23, 0x5B, + 0xFF, 0x2C, 0xE6, 0x54, 0x7A, 0x94, 0xC0, 0x2A, 0x15, 0xF0, 0xC9, 0x8D, + 0xB0, 0x7A, 0x3B, 0x24, 0xE1, 0xD7, 0x68, 0xE2, 0x31, 0x3C, 0x06, 0x33, + 0x46, 0xB6, 0x54, 0x11, 0xA6, 0xA5, 0x2F, 0x22, 0x54, 0x2A, 0x58, 0x0D, + 0x01, 0x02, 0xF1, 0xFA, 0x15, 0x51, 0x67, 0x6C, 0xC0, 0xFA, 0xD7, 0xB6, + 0x1B, 0x7F, 0xD1, 0x56, 0x88, 0x2F, 0x1A, 0x3A, 0x8D, 0x3B, 0xBB, 0x82, + 0x11, 0xE0, 0x47, 0x00, 0xD0, 0x52, 0x87, 0xAB, 0xFB, 0x86, 0x7E, 0x0F, + 0x24, 0x6B, 0x40, 0x9D, 0x34, 0x67, 0xBC, 0x8D, 0xC7, 0x2D, 0x86, 0x6F, + 0x79, 0x3E, 0x8E, 0xA9, 0x3C, 0x17, 0x4B, 0x7F, 0xB0, 0x99, 0xE3, 0xB0, + 0x71, 0x60, 0xDC, 0x0B, 0xF5, 0x64, 0xC3, 0xCE, 0x43, 0xBC, 0x6D, 0x71, + 0xB9, 0xD2, 0xDE, 0x27, 0x5B, 0x8A, 0xE8, 0xD8, 0xC6, 0xAE, 0xE1, 0x59, + 0x7D, 0xCF, 0x28, 0x2D, 0x35, 0xB8, 0x95, 0x56, 0x1A, 0xF1, 0xB2, 0x58, + 0x4B, 0xB7, 0x12, 0x37, 0xC8, 0x7C, 0xB3, 0xED, 0x4B, 0x80, 0xE1, 0x8D, + 0xFA, 0x32, 0x23, 0xB6, 0x6F, 0xB7, 0x48, 0x95, 0x08, 0xB1, 0x44, 0x4E, + 0x85, 0x8C, 0x3A, 0x02, 0x54, 0x20, 0x2F, 0xDF, 0xBF, 0x57, 0x4F, 0x3B, + 0x3A, 0x90, 0x21, 0xD7, 0xC1, 0x26, 0x35, 0x54, 0x20, 0xEC, 0xC7, 0x3F, + 0x47, 0xEC, 0xEF, 0x5A, 0xBF, 0x4B, 0x7A, 0xC1, 0xAD, 0x3B, 0x17, 0x50, + 0x5C, 0x62, 0xD8, 0x0F, 0x4B, 0x4A, 0xDC, 0x2B, 0xFA, 0x6E, 0xBC, 0x73, + 0x92, 0xCD, 0xEC, 0xC7, 0x50, 0xE8, 0x41, 0x96, 0xD7, 0xA9, 0x7E, 0x6D, + 0xD8, 0xE9, 0x1D, 0x8F, 0x8A, 0xB5, 0xB9, 0x58, 0x92, 0xBA, 0x4A, 0x92, + 0x2B, 0x0C, 0x56, 0xFD, 0x80, 0xEB, 0x08, 0xF0, 0x5E, 0x29, 0x6E, 0x1B, + 0x1C, 0x0C, 0xAF, 0x8F, 0x93, 0x89, 0xAD, 0xDB, 0xBD, 0xA3, 0x9E, 0x21, + 0xCA, 0x89, 0x19, 0xEC, 0xDF, 0xB5, 0xC3, 0x1A, 0xEB, 0x16, 0xFE, 0x78, + 0x36, 0x4C, 0xD6, 0x6E, 0xD0, 0x3E, 0x17, 0x1C, 0x90, 0x17, 0x6B, 0x26, + 0xBA, 0xFB, 0x7A, 0x2F, 0xBF, 0x11, 0x1C, 0x18, 0x0E, 0x2D, 0x73, 0x03, + 0x8F, 0xA0, 0xE5, 0x35, 0xA0, 0x5A, 0xE2, 0x4C, 0x75, 0x1D, 0x71, 0xE1, + 0x39, 0x38, 0x53, 0x78, 0x40, 0xCC, 0x83, 0x93, 0xD7, 0x0A, 0x9E, 0x9D, + 0x5B, 0x8F, 0x8A, 0xE4, 0xE5, 0xE0, 0x48, 0xE4, 0x48, 0xB2, 0x47, 0xCD, + 0x4E, 0x2A, 0x75, 0x2A, 0x7B, 0xF2, 0x22, 0xF6, 0xC9, 0xBE, 0x09, 0x91, + 0x96, 0x57, 0x7A, 0x88, 0x88, 0xAC, 0xEE, 0x70, 0xAC, 0xF9, 0xDC, 0x29, + 0xE3, 0x0C, 0x1C, 0x3B, 0x12, 0x4E, 0x44, 0xD6, 0xA7, 0x4E, 0xB0, 0x26, + 0xC8, 0xF3, 0xD9, 0x1A, 0x97, 0x91, 0x68, 0xEA, 0xEF, 0x8D, 0x46, 0x06, + 0xD2, 0x56, 0x45, 0x58, 0x9A, 0x3C, 0x0C, 0x0F, 0x83, 0xB8, 0x05, 0x25, + 0xC3, 0x39, 0xCF, 0x3B, 0xA4, 0x34, 0x89, 0xB7, 0x79, 0x12, 0x2F, 0x47, + 0xC5, 0xE7, 0xA9, 0x97, 0x69, 0xFC, 0xA6, 0x77, 0x67, 0xB5, 0xDF, 0x7B, + 0xF1, 0x7A, 0x65, 0x15, 0xE4, 0x61, 0x56, 0x65 +}; + +static const unsigned char TA131_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA132_DN[] = { + 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x43, 0x4E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x08, 0x55, 0x6E, 0x69, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x25, + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x1C, 0x55, 0x43, 0x41, + 0x20, 0x45, 0x78, 0x74, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x56, 0x61, + 0x6C, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, + 0x74 +}; + +static const unsigned char TA132_RSA_N[] = { + 0xA9, 0x09, 0x07, 0x28, 0x13, 0x02, 0xB0, 0x99, 0xE0, 0x64, 0xAA, 0x1E, + 0x43, 0x16, 0x7A, 0x73, 0xB1, 0x91, 0xA0, 0x75, 0x3E, 0xA8, 0xFA, 0xE3, + 0x38, 0x00, 0x7A, 0xEC, 0x89, 0x6A, 0x20, 0x0F, 0x8B, 0xC5, 0xB0, 0x9B, + 0x33, 0x03, 0x5A, 0x86, 0xC6, 0x58, 0x86, 0xD5, 0xC1, 0x85, 0xBB, 0x4F, + 0xC6, 0x9C, 0x40, 0x4D, 0xCA, 0xBE, 0xEE, 0x69, 0x96, 0xB8, 0xAD, 0x81, + 0x30, 0x9A, 0x7C, 0x92, 0x05, 0xEB, 0x05, 0x2B, 0x9A, 0x48, 0xD0, 0xB8, + 0x76, 0x3E, 0x96, 0xC8, 0x20, 0xBB, 0xD2, 0xB0, 0xF1, 0x8F, 0xD8, 0xAC, + 0x45, 0x46, 0xFF, 0xAA, 0x67, 0x60, 0xB4, 0x77, 0x7E, 0x6A, 0x1F, 0x3C, + 0x1A, 0x52, 0x7A, 0x04, 0x3D, 0x07, 0x3C, 0x85, 0x0D, 0x84, 0xD0, 0x1F, + 0x76, 0x0A, 0xF7, 0x6A, 0x14, 0xDF, 0x72, 0xE3, 0x34, 0x7C, 0x57, 0x4E, + 0x56, 0x01, 0x3E, 0x79, 0xF1, 0xAA, 0x29, 0x3B, 0x6C, 0xFA, 0xF8, 0x8F, + 0x6D, 0x4D, 0xC8, 0x35, 0xDF, 0xAE, 0xEB, 0xDC, 0x24, 0xEE, 0x79, 0x45, + 0xA7, 0x85, 0xB6, 0x05, 0x88, 0xDE, 0x88, 0x5D, 0x25, 0x7C, 0x97, 0x64, + 0x67, 0x09, 0xD9, 0xBF, 0x5A, 0x15, 0x05, 0x86, 0xF3, 0x09, 0x1E, 0xEC, + 0x58, 0x32, 0x33, 0x11, 0xF3, 0x77, 0x64, 0xB0, 0x76, 0x1F, 0xE4, 0x10, + 0x35, 0x17, 0x1B, 0xF2, 0x0E, 0xB1, 0x6C, 0xA4, 0x2A, 0xA3, 0x73, 0xFC, + 0x09, 0x1F, 0x1E, 0x32, 0x19, 0x53, 0x11, 0xE7, 0xD9, 0xB3, 0x2C, 0x2E, + 0x76, 0x2E, 0xA1, 0xA3, 0xDE, 0x7E, 0x6A, 0x88, 0x09, 0xE8, 0xF2, 0x07, + 0x8A, 0xF8, 0xB2, 0xCD, 0x10, 0xE7, 0xE2, 0x73, 0x40, 0x93, 0xBB, 0x08, + 0xD1, 0x3F, 0xE1, 0xFC, 0x0B, 0x94, 0xB3, 0x25, 0xEF, 0x7C, 0xA6, 0xD7, + 0xD1, 0xAF, 0x9F, 0xFF, 0x96, 0x9A, 0xF5, 0x91, 0x7B, 0x98, 0x0B, 0x77, + 0xD4, 0x7E, 0xE8, 0x07, 0xD2, 0x62, 0xB5, 0x95, 0x39, 0xE3, 0xF3, 0xF1, + 0x6D, 0x0F, 0x0E, 0x65, 0x84, 0x8A, 0x63, 0x54, 0xC5, 0x80, 0xB6, 0xE0, + 0x9E, 0x4B, 0x7D, 0x47, 0x26, 0xA7, 0x01, 0x08, 0x5D, 0xD1, 0x88, 0x9E, + 0xD7, 0xC3, 0x32, 0x44, 0xFA, 0x82, 0x4A, 0x0A, 0x68, 0x54, 0x7F, 0x38, + 0x53, 0x03, 0xCC, 0xA4, 0x00, 0x33, 0x64, 0x51, 0x59, 0x0B, 0xA3, 0x82, + 0x91, 0x7A, 0x5E, 0xEC, 0x16, 0xC2, 0xF3, 0x2A, 0xE6, 0x62, 0xDA, 0x2A, + 0xDB, 0x59, 0x62, 0x10, 0x25, 0x4A, 0x2A, 0x81, 0x0B, 0x47, 0x07, 0x43, + 0x06, 0x70, 0x87, 0xD2, 0xFA, 0x93, 0x11, 0x29, 0x7A, 0x48, 0x4D, 0xEB, + 0x94, 0xC7, 0x70, 0x4D, 0xAF, 0x67, 0xD5, 0x51, 0xB1, 0x80, 0x20, 0x01, + 0x01, 0xB4, 0x7A, 0x08, 0xA6, 0x90, 0x7F, 0x4E, 0xE0, 0xEF, 0x07, 0x41, + 0x87, 0xAF, 0x6A, 0xA5, 0x5E, 0x8B, 0xFB, 0xCF, 0x50, 0xB2, 0x9A, 0x54, + 0xAF, 0xC3, 0x89, 0xBA, 0x58, 0x2D, 0xF5, 0x30, 0x98, 0xB1, 0x36, 0x72, + 0x39, 0x7E, 0x49, 0x04, 0xFD, 0x29, 0xA7, 0x4C, 0x79, 0xE4, 0x05, 0x57, + 0xDB, 0x94, 0xB9, 0x16, 0x53, 0x8D, 0x46, 0xB3, 0x1D, 0x95, 0x61, 0x57, + 0x56, 0x7F, 0xAF, 0xF0, 0x16, 0x5B, 0x61, 0x58, 0x6F, 0x36, 0x50, 0x11, + 0x0B, 0xD8, 0xAC, 0x2B, 0x95, 0x16, 0x1A, 0x0E, 0x1F, 0x08, 0xCD, 0x36, + 0x34, 0x65, 0x10, 0x62, 0x66, 0xD5, 0x80, 0x5F, 0x14, 0x20, 0x5F, 0x2D, + 0x0C, 0xA0, 0x78, 0x0A, 0x68, 0xD6, 0x2C, 0xD7, 0xE9, 0x6F, 0x2B, 0xD2, + 0x4A, 0x05, 0x93, 0xFC, 0x9E, 0x6F, 0x6B, 0x67, 0xFF, 0x88, 0xF1, 0x4E, + 0xA5, 0x69, 0x4A, 0x52, 0x37, 0x05, 0xEA, 0xC6, 0x16, 0x8D, 0xD2, 0xC4, + 0x99, 0xD1, 0x82, 0x2B, 0x3B, 0xBA, 0x35, 0x75, 0xF7, 0x51, 0x51, 0x58, + 0xF3, 0xC8, 0x07, 0xDD, 0xE4, 0xB4, 0x03, 0x7F +}; + +static const unsigned char TA132_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA133_DN[] = { + 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x46, 0x52, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0A, + 0x0C, 0x09, 0x44, 0x68, 0x69, 0x6D, 0x79, 0x6F, 0x74, 0x69, 0x73, 0x31, + 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x13, 0x30, 0x30, + 0x30, 0x32, 0x20, 0x34, 0x38, 0x31, 0x34, 0x36, 0x33, 0x30, 0x38, 0x31, + 0x30, 0x30, 0x30, 0x33, 0x36, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, + 0x04, 0x03, 0x0C, 0x10, 0x43, 0x65, 0x72, 0x74, 0x69, 0x67, 0x6E, 0x61, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41 +}; + +static const unsigned char TA133_RSA_N[] = { + 0xCD, 0x18, 0x39, 0x65, 0x1A, 0x59, 0xB1, 0xEA, 0x64, 0x16, 0x0E, 0x8C, + 0x94, 0x24, 0x95, 0x7C, 0x83, 0xD3, 0xC5, 0x39, 0x26, 0xDC, 0x0C, 0xEF, + 0x16, 0x57, 0x8D, 0xD7, 0xD8, 0xAC, 0xA3, 0x42, 0x7F, 0x82, 0xCA, 0xED, + 0xCD, 0x5B, 0xDB, 0x0E, 0xB7, 0x2D, 0xED, 0x45, 0x08, 0x17, 0xB2, 0xD9, + 0xB3, 0xCB, 0xD6, 0x17, 0x52, 0x72, 0x28, 0xDB, 0x8E, 0x4E, 0x9E, 0x8A, + 0xB6, 0x0B, 0xF9, 0x9E, 0x84, 0x9A, 0x4D, 0x76, 0xDE, 0x22, 0x29, 0x5C, + 0xD2, 0xB3, 0xD2, 0x06, 0x3E, 0x30, 0x39, 0xA9, 0x74, 0xA3, 0x92, 0x56, + 0x1C, 0xA1, 0x6F, 0x4C, 0x0A, 0x20, 0x6D, 0x9F, 0x23, 0x7A, 0xB4, 0xC6, + 0xDA, 0x2C, 0xE4, 0x1D, 0x2C, 0xDC, 0xB3, 0x28, 0xD0, 0x13, 0xF2, 0x4C, + 0x4E, 0x02, 0x49, 0xA1, 0x54, 0x40, 0x9E, 0xE6, 0xE5, 0x05, 0xA0, 0x2D, + 0x84, 0xC8, 0xFF, 0x98, 0x6C, 0xD0, 0xEB, 0x8A, 0x1A, 0x84, 0x08, 0x1E, + 0xB7, 0x68, 0x23, 0xEE, 0x23, 0xD5, 0x70, 0xCE, 0x6D, 0x51, 0x69, 0x10, + 0xEE, 0xA1, 0x7A, 0xC2, 0xD1, 0x22, 0x31, 0xC2, 0x82, 0x85, 0xD2, 0xF2, + 0x55, 0x76, 0x50, 0x7C, 0x25, 0x7A, 0xC9, 0x84, 0x5C, 0x0B, 0xAC, 0xDD, + 0x42, 0x4E, 0x2B, 0xE7, 0x82, 0xA2, 0x24, 0x89, 0xCB, 0x90, 0xB2, 0xD0, + 0xEE, 0x23, 0xBA, 0x66, 0x4C, 0xBB, 0x62, 0xA4, 0xF9, 0x53, 0x5A, 0x64, + 0x7B, 0x7C, 0x98, 0xFA, 0xA3, 0x48, 0x9E, 0x0F, 0x95, 0xAE, 0xA7, 0x18, + 0xF4, 0x6A, 0xEC, 0x2E, 0x03, 0x45, 0xAF, 0xF0, 0x74, 0xF8, 0x2A, 0xCD, + 0x7A, 0x5D, 0xD1, 0xBE, 0x44, 0x26, 0x32, 0x29, 0xF1, 0xF1, 0xF5, 0x6C, + 0xCC, 0x7E, 0x02, 0x21, 0x0B, 0x9F, 0x6F, 0xA4, 0x3F, 0xBE, 0x9D, 0x53, + 0xE2, 0xCF, 0x7D, 0xA9, 0x2C, 0x7C, 0x58, 0x1A, 0x97, 0xE1, 0x3D, 0x37, + 0x37, 0x18, 0x66, 0x28, 0xD2, 0x40, 0xC5, 0x51, 0x8A, 0x8C, 0xC3, 0x2D, + 0xCE, 0x53, 0x88, 0x24, 0x58, 0x64, 0x30, 0x16, 0xC5, 0xAA, 0xE0, 0xD6, + 0x0A, 0xA6, 0x40, 0xDF, 0x78, 0xF6, 0xF5, 0x04, 0x7C, 0x69, 0x13, 0x84, + 0xBC, 0xD1, 0xD1, 0xA7, 0x06, 0xCF, 0x01, 0xF7, 0x68, 0xC0, 0xA8, 0x57, + 0xBB, 0x3A, 0x61, 0xAD, 0x04, 0x8C, 0x93, 0xE3, 0xAD, 0xFC, 0xF0, 0xDB, + 0x44, 0x6D, 0x59, 0xDC, 0x49, 0x59, 0xAE, 0xAC, 0x9A, 0x99, 0x36, 0x30, + 0x41, 0x7B, 0x76, 0x33, 0x22, 0x87, 0xA3, 0xC2, 0x92, 0x86, 0x6E, 0xF9, + 0x70, 0xEE, 0xAE, 0x87, 0x87, 0x95, 0x1B, 0xC4, 0x7A, 0xBD, 0x31, 0xF3, + 0xD4, 0xD2, 0xE5, 0x99, 0xFF, 0xBE, 0x48, 0xEC, 0x75, 0xF5, 0x78, 0x16, + 0x1D, 0xA6, 0x70, 0xC1, 0x7F, 0x3C, 0x1B, 0xA1, 0x92, 0xFB, 0xCF, 0xC8, + 0x3C, 0xD6, 0xC5, 0x93, 0x0A, 0x8F, 0xF5, 0x55, 0x3A, 0x76, 0x95, 0xCE, + 0x59, 0x98, 0x8A, 0x09, 0x95, 0x77, 0x32, 0x9A, 0x83, 0xBA, 0x2C, 0x04, + 0x3A, 0x97, 0xBD, 0xD4, 0x2F, 0xBE, 0xD7, 0x6C, 0x9B, 0xA2, 0xCA, 0x7D, + 0x6D, 0x26, 0xC9, 0x55, 0xD5, 0xCF, 0xC3, 0x79, 0x52, 0x08, 0x09, 0x99, + 0x07, 0x24, 0x2D, 0x64, 0x25, 0x6B, 0xA6, 0x21, 0x69, 0x9B, 0x6A, 0xDD, + 0x74, 0x4D, 0x6B, 0x97, 0x7A, 0x41, 0xBD, 0xAB, 0x17, 0xF9, 0x90, 0x17, + 0x48, 0x8F, 0x36, 0xF9, 0x2D, 0xD5, 0xC5, 0xDB, 0xEE, 0xAA, 0x85, 0x45, + 0x41, 0xFA, 0xCD, 0x3A, 0x45, 0xB1, 0x68, 0xE6, 0x36, 0x4C, 0x9B, 0x90, + 0x57, 0xEC, 0x23, 0xB9, 0x87, 0x08, 0xC2, 0xC4, 0x09, 0xF1, 0x97, 0x86, + 0x2A, 0x28, 0x4D, 0xE2, 0x74, 0xC0, 0xDA, 0xC4, 0x8C, 0xDB, 0xDF, 0xE2, + 0xA1, 0x17, 0x59, 0xCE, 0x24, 0x59, 0x74, 0x31, 0xDA, 0x7F, 0xFD, 0x30, + 0x6D, 0xD9, 0xDC, 0xE1, 0x6A, 0xE1, 0xFC, 0x5F +}; + +static const unsigned char TA133_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA134_DN[] = { + 0x30, 0x67, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x49, 0x4E, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x0A, 0x65, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x50, 0x4B, 0x49, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x1C, 0x65, + 0x4D, 0x75, 0x64, 0x68, 0x72, 0x61, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6E, + 0x6F, 0x6C, 0x6F, 0x67, 0x69, 0x65, 0x73, 0x20, 0x4C, 0x69, 0x6D, 0x69, + 0x74, 0x65, 0x64, 0x31, 0x1C, 0x30, 0x1A, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x13, 0x65, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, 0x31 +}; + +static const unsigned char TA134_RSA_N[] = { + 0x93, 0x4B, 0xBB, 0xE9, 0x66, 0x8A, 0xEE, 0x9D, 0x5B, 0xD5, 0x34, 0x93, + 0xD0, 0x1B, 0x1E, 0xC3, 0xE7, 0x9E, 0xB8, 0x64, 0x33, 0x7F, 0x63, 0x78, + 0x68, 0xB4, 0xCD, 0x2E, 0x71, 0x75, 0xD7, 0x9B, 0x20, 0xC6, 0x4D, 0x29, + 0xBC, 0xB6, 0x68, 0x60, 0x8A, 0xF7, 0x21, 0x9A, 0x56, 0x35, 0x5A, 0xF3, + 0x76, 0xBD, 0xD8, 0xCD, 0x9A, 0xFF, 0x93, 0x56, 0x4B, 0xA5, 0x59, 0x06, + 0xA1, 0x93, 0x34, 0x29, 0xDD, 0x16, 0x34, 0x75, 0x4E, 0xF2, 0x81, 0xB4, + 0xC7, 0x96, 0x4E, 0xAD, 0x19, 0x15, 0x52, 0x4A, 0xFE, 0x3C, 0x70, 0x75, + 0x70, 0xCD, 0xAF, 0x2B, 0xAB, 0x15, 0x9A, 0x33, 0x3C, 0xAA, 0xB3, 0x8B, + 0xAA, 0xCD, 0x43, 0xFD, 0xF5, 0xEA, 0x70, 0xFF, 0xED, 0xCF, 0x11, 0x3B, + 0x94, 0xCE, 0x4E, 0x32, 0x16, 0xD3, 0x23, 0x40, 0x2A, 0x77, 0xB3, 0xAF, + 0x3C, 0x01, 0x2C, 0x6C, 0xED, 0x99, 0x2C, 0x8B, 0xD9, 0x4E, 0x69, 0x98, + 0xB2, 0xF7, 0x8F, 0x41, 0xB0, 0x32, 0x78, 0x61, 0xD6, 0x0D, 0x5F, 0xC3, + 0xFA, 0xA2, 0x40, 0x92, 0x1D, 0x5C, 0x17, 0xE6, 0x70, 0x3E, 0x35, 0xE7, + 0xA2, 0xB7, 0xC2, 0x62, 0xE2, 0xAB, 0xA4, 0x38, 0x4C, 0xB5, 0x39, 0x35, + 0x6F, 0xEA, 0x03, 0x69, 0xFA, 0x3A, 0x54, 0x68, 0x85, 0x6D, 0xD6, 0xF2, + 0x2F, 0x43, 0x55, 0x1E, 0x91, 0x0D, 0x0E, 0xD8, 0xD5, 0x6A, 0xA4, 0x96, + 0xD1, 0x13, 0x3C, 0x2C, 0x78, 0x50, 0xE8, 0x3A, 0x92, 0xD2, 0x17, 0x56, + 0xE5, 0x35, 0x1A, 0x40, 0x1C, 0x3E, 0x8D, 0x2C, 0xED, 0x39, 0xDF, 0x42, + 0xE0, 0x83, 0x41, 0x74, 0xDF, 0xA3, 0xCD, 0xC2, 0x86, 0x60, 0x48, 0x68, + 0xE3, 0x69, 0x0B, 0x54, 0x00, 0x8B, 0xE4, 0x76, 0x69, 0x21, 0x0D, 0x79, + 0x4E, 0x34, 0x08, 0x5E, 0x14, 0xC2, 0xCC, 0xB1, 0xB7, 0xAD, 0xD7, 0x7C, + 0x70, 0x8A, 0xC7, 0x85 +}; + +static const unsigned char TA134_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA135_DN[] = { + 0x30, 0x6B, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x49, 0x4E, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x0A, 0x65, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x50, 0x4B, 0x49, + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x1C, 0x65, + 0x4D, 0x75, 0x64, 0x68, 0x72, 0x61, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6E, + 0x6F, 0x6C, 0x6F, 0x67, 0x69, 0x65, 0x73, 0x20, 0x4C, 0x69, 0x6D, 0x69, + 0x74, 0x65, 0x64, 0x31, 0x20, 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x17, 0x65, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x45, 0x43, 0x43, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x47, + 0x33 +}; + +static const unsigned char TA135_EC_Q[] = { + 0x04, 0x23, 0xA5, 0x0C, 0xB8, 0x2D, 0x12, 0xF5, 0x28, 0xF3, 0xB1, 0xB2, + 0xDD, 0xE2, 0x02, 0x12, 0x80, 0x9E, 0x39, 0x5F, 0x49, 0x4D, 0x9F, 0xC9, + 0x25, 0x34, 0x59, 0x74, 0xEC, 0xBB, 0x06, 0x1C, 0xE7, 0xC0, 0x72, 0xAF, + 0xE8, 0xAE, 0x2F, 0xE1, 0x41, 0x54, 0x87, 0x14, 0xA8, 0x4A, 0xB2, 0xE8, + 0x7C, 0x82, 0xE6, 0x5B, 0x6A, 0xB5, 0xDC, 0xB3, 0x75, 0xCE, 0x8B, 0x06, + 0xD0, 0x86, 0x23, 0xBF, 0x46, 0xD5, 0x8E, 0x0F, 0x3F, 0x04, 0xF4, 0xD7, + 0x1C, 0x92, 0x7E, 0xF6, 0xA5, 0x63, 0xC2, 0xF5, 0x5F, 0x8E, 0x2E, 0x4F, + 0xA1, 0x18, 0x19, 0x02, 0x2B, 0x32, 0x0A, 0x82, 0x64, 0x7D, 0x16, 0x93, + 0xD1 +}; + +static const unsigned char TA136_DN[] = { + 0x30, 0x56, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x0A, 0x65, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x50, 0x4B, 0x49, + 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0B, 0x65, + 0x4D, 0x75, 0x64, 0x68, 0x72, 0x61, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x1C, + 0x30, 0x1A, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x13, 0x65, 0x6D, 0x53, + 0x69, 0x67, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x20, + 0x2D, 0x20, 0x43, 0x31 +}; + +static const unsigned char TA136_RSA_N[] = { + 0xCF, 0xEB, 0xA9, 0xB9, 0xF1, 0x99, 0x05, 0xCC, 0xD8, 0x28, 0x21, 0x4A, + 0xF3, 0x73, 0x34, 0x51, 0x84, 0x56, 0x10, 0xF5, 0xA0, 0x4F, 0x2C, 0x12, + 0xE3, 0xFA, 0x13, 0x9A, 0x27, 0xD0, 0xCF, 0xF9, 0x79, 0x1A, 0x74, 0x5F, + 0x1D, 0x79, 0x39, 0xFC, 0x5B, 0xF8, 0x70, 0x8E, 0xE0, 0x92, 0x52, 0xF7, + 0xE4, 0x25, 0xF9, 0x54, 0x83, 0xD9, 0x1D, 0xD3, 0xC8, 0x5A, 0x85, 0x3F, + 0x5E, 0xC7, 0xB6, 0x07, 0xEE, 0x3E, 0xC0, 0xCE, 0x9A, 0xAF, 0xAC, 0x56, + 0x42, 0x2A, 0x39, 0x25, 0x70, 0xD6, 0xBF, 0xB5, 0x7B, 0x36, 0xAD, 0xAC, + 0xF6, 0x73, 0xDC, 0xCD, 0xD7, 0x1D, 0x8A, 0x83, 0xA5, 0xFB, 0x2B, 0x90, + 0x15, 0x37, 0x6B, 0x1C, 0x26, 0x47, 0xDC, 0x3B, 0x29, 0x56, 0x93, 0x6A, + 0xB3, 0xC1, 0x6A, 0x3A, 0x9D, 0x3D, 0xF5, 0xC1, 0x97, 0x38, 0x58, 0x05, + 0x8B, 0x1C, 0x11, 0xE3, 0xE4, 0xB4, 0xB8, 0x5D, 0x85, 0x1D, 0x83, 0xFE, + 0x78, 0x5F, 0x0B, 0x45, 0x68, 0x18, 0x48, 0xA5, 0x46, 0x73, 0x34, 0x3B, + 0xFE, 0x0F, 0xC8, 0x76, 0xBB, 0xC7, 0x18, 0xF3, 0x05, 0xD1, 0x86, 0xF3, + 0x85, 0xED, 0xE7, 0xB9, 0xD9, 0x32, 0xAD, 0x55, 0x88, 0xCE, 0xA6, 0xB6, + 0x91, 0xB0, 0x4F, 0xAC, 0x7E, 0x15, 0x23, 0x96, 0xF6, 0x3F, 0xF0, 0x20, + 0x34, 0x16, 0xDE, 0x0A, 0xC6, 0xC4, 0x04, 0x45, 0x79, 0x7F, 0xA7, 0xFD, + 0xBE, 0xD2, 0xA9, 0xA5, 0xAF, 0x9C, 0xC5, 0x23, 0x2A, 0xF7, 0x3C, 0x21, + 0x6C, 0xBD, 0xAF, 0x8F, 0x4E, 0xC5, 0x3A, 0xB2, 0xF3, 0x34, 0x12, 0xFC, + 0xDF, 0x80, 0x1A, 0x49, 0xA4, 0xD4, 0xA9, 0x95, 0xF7, 0x9E, 0x89, 0x5E, + 0xA2, 0x89, 0xAC, 0x94, 0xCB, 0xA8, 0x68, 0x9B, 0xAF, 0x8A, 0x65, 0x27, + 0xCD, 0x89, 0xEE, 0xDD, 0x8C, 0xB5, 0x6B, 0x29, 0x70, 0x43, 0xA0, 0x69, + 0x0B, 0xE4, 0xB9, 0x0F +}; + +static const unsigned char TA136_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const unsigned char TA137_DN[] = { + 0x30, 0x5A, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, + 0x13, 0x0A, 0x65, 0x6D, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x50, 0x4B, 0x49, + 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0B, 0x65, + 0x4D, 0x75, 0x64, 0x68, 0x72, 0x61, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x20, + 0x30, 0x1E, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x65, 0x6D, 0x53, + 0x69, 0x67, 0x6E, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41, 0x20, 0x2D, 0x20, 0x43, 0x33 +}; + +static const unsigned char TA137_EC_Q[] = { + 0x04, 0xFD, 0xA5, 0x61, 0xAE, 0x7B, 0x26, 0x10, 0x1D, 0xE9, 0xB7, 0x22, + 0x30, 0xAE, 0x06, 0xF4, 0x81, 0xB3, 0xB1, 0x42, 0x71, 0x95, 0x39, 0xBC, + 0xD3, 0x52, 0xE3, 0xAF, 0xAF, 0xF9, 0xF2, 0x97, 0x35, 0x92, 0x36, 0x46, + 0x0E, 0x87, 0x95, 0x8D, 0xB9, 0x39, 0x5A, 0xE9, 0xBB, 0xDF, 0xD0, 0xFE, + 0xC8, 0x07, 0x41, 0x3C, 0xBB, 0x55, 0x6F, 0x83, 0xA3, 0x6A, 0xFB, 0x62, + 0xB0, 0x81, 0x89, 0x02, 0x70, 0x7D, 0x48, 0xC5, 0x4A, 0xE3, 0xE9, 0x22, + 0x54, 0x22, 0x4D, 0x93, 0xBB, 0x42, 0x0C, 0xAF, 0x77, 0x9C, 0x23, 0xA6, + 0x7D, 0xD7, 0x61, 0x11, 0xCE, 0x65, 0xC7, 0xF8, 0x7F, 0xFE, 0xF5, 0xF2, + 0xA9 +}; + +static const unsigned char TA138_DN[] = { + 0x30, 0x6F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x48, 0x4B, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x08, + 0x13, 0x09, 0x48, 0x6F, 0x6E, 0x67, 0x20, 0x4B, 0x6F, 0x6E, 0x67, 0x31, + 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x48, 0x6F, + 0x6E, 0x67, 0x20, 0x4B, 0x6F, 0x6E, 0x67, 0x31, 0x16, 0x30, 0x14, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0D, 0x48, 0x6F, 0x6E, 0x67, 0x6B, 0x6F, + 0x6E, 0x67, 0x20, 0x50, 0x6F, 0x73, 0x74, 0x31, 0x20, 0x30, 0x1E, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x48, 0x6F, 0x6E, 0x67, 0x6B, 0x6F, + 0x6E, 0x67, 0x20, 0x50, 0x6F, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41, 0x20, 0x33 +}; + +static const unsigned char TA138_RSA_N[] = { + 0xB3, 0x88, 0xD7, 0xEA, 0xCE, 0x0F, 0x20, 0x4E, 0xBE, 0xE6, 0xD6, 0x03, + 0x6D, 0xEE, 0x59, 0xFC, 0xC2, 0x57, 0xDF, 0x29, 0x68, 0xA1, 0x83, 0x0E, + 0x3E, 0x68, 0xC7, 0x68, 0x58, 0x9C, 0x1C, 0x60, 0x4B, 0x89, 0x43, 0x0C, + 0xB9, 0xD4, 0x15, 0xB2, 0xEE, 0xC1, 0x4E, 0x75, 0xE9, 0xB5, 0xA7, 0xEF, + 0xE5, 0xE9, 0x35, 0x99, 0xE4, 0xCC, 0x1C, 0xE7, 0x4B, 0x5F, 0x8D, 0x33, + 0x30, 0x20, 0x33, 0x53, 0xD9, 0xA6, 0xBB, 0xD5, 0x3E, 0x13, 0x8E, 0xE9, + 0x1F, 0x87, 0x49, 0xAD, 0x50, 0x2D, 0x50, 0xCA, 0x18, 0xBE, 0x01, 0x58, + 0xA2, 0x13, 0x70, 0x96, 0xBB, 0x89, 0x88, 0x56, 0x80, 0x5C, 0xF8, 0xBD, + 0x2C, 0x3C, 0xE1, 0x4C, 0x57, 0x88, 0xBB, 0xD3, 0xB9, 0x95, 0xEF, 0xCB, + 0xC7, 0xF6, 0xDA, 0x31, 0x74, 0x28, 0xA6, 0xE6, 0x54, 0x89, 0xF5, 0x41, + 0x31, 0xCA, 0xE5, 0x26, 0x1A, 0xCD, 0x82, 0xE0, 0x70, 0xDA, 0x3B, 0x29, + 0xBB, 0xD5, 0x03, 0xF5, 0x99, 0xBA, 0x55, 0xF5, 0x64, 0xD1, 0x60, 0x0E, + 0xB3, 0x89, 0x49, 0xB8, 0x8A, 0x2F, 0x05, 0xD2, 0x84, 0x45, 0x28, 0x7C, + 0x8F, 0x68, 0x50, 0x12, 0x78, 0xFC, 0x0B, 0xB5, 0x53, 0xCB, 0xC2, 0x98, + 0x1C, 0x84, 0xA3, 0x9E, 0xB0, 0xBE, 0x23, 0xA4, 0xDA, 0xDC, 0xC8, 0x2B, + 0x1E, 0xDA, 0x6E, 0x45, 0x1E, 0x89, 0x98, 0xDA, 0xF9, 0x00, 0x2E, 0x06, + 0xE9, 0x0C, 0x3B, 0x70, 0xD5, 0x50, 0x25, 0x88, 0x99, 0xCB, 0xCD, 0x73, + 0x60, 0xF7, 0xD5, 0xFF, 0x35, 0x67, 0xC5, 0xA1, 0xBC, 0x5E, 0xAB, 0xCD, + 0x4A, 0xB8, 0x45, 0xEB, 0xC8, 0x68, 0x1E, 0x0D, 0x0D, 0x14, 0x46, 0x12, + 0xE3, 0xD2, 0x64, 0x62, 0x8A, 0x42, 0x98, 0xBC, 0xB4, 0xC6, 0x08, 0x08, + 0xF8, 0xFD, 0xA8, 0x4C, 0x64, 0x9C, 0x76, 0x01, 0xBD, 0x2F, 0xA9, 0x6C, + 0x33, 0x0F, 0xD8, 0x3F, 0x28, 0xB8, 0x3C, 0x69, 0x01, 0x42, 0x86, 0x7E, + 0x69, 0xC1, 0xC9, 0x06, 0xCA, 0xE5, 0x7A, 0x46, 0x65, 0xE9, 0xC2, 0xD6, + 0x50, 0x41, 0x2E, 0x3F, 0xB7, 0xE4, 0xED, 0x6C, 0xD7, 0xBF, 0x26, 0x01, + 0x11, 0xA2, 0x16, 0x29, 0x4A, 0x6B, 0x34, 0x06, 0x90, 0xEC, 0x13, 0xD2, + 0xB6, 0xFB, 0x6A, 0x76, 0xD2, 0x3C, 0xED, 0xF0, 0xD6, 0x2D, 0xDD, 0xE1, + 0x15, 0xEC, 0xA3, 0x9B, 0x2F, 0x2C, 0xC9, 0x3E, 0x2B, 0xE4, 0x69, 0x3B, + 0xFF, 0x72, 0x25, 0xB1, 0x36, 0x86, 0x5B, 0xC7, 0x7F, 0x6B, 0x8B, 0x55, + 0x1B, 0x4A, 0xC5, 0x20, 0x61, 0x3D, 0xAE, 0xCB, 0x50, 0xE1, 0x08, 0x3A, + 0xBE, 0xB0, 0x8F, 0x63, 0x41, 0x53, 0x30, 0x08, 0x59, 0x3C, 0x98, 0x1D, + 0x77, 0xBA, 0x63, 0x91, 0x7A, 0xCA, 0x10, 0x50, 0x60, 0xBF, 0xF0, 0xD7, + 0xBC, 0x95, 0x87, 0x8F, 0x97, 0xC5, 0xFE, 0x97, 0x6A, 0x01, 0x94, 0xA3, + 0x7C, 0x5B, 0x85, 0x1D, 0x2A, 0x39, 0x3A, 0xD0, 0x54, 0xA1, 0xD1, 0x39, + 0x71, 0x9D, 0xFD, 0x21, 0xF9, 0xB5, 0x7B, 0xF0, 0xE2, 0xE0, 0x02, 0x8F, + 0x6E, 0x96, 0x24, 0x25, 0x2C, 0xA0, 0x1E, 0x2C, 0xA8, 0xC4, 0x89, 0xA7, + 0xEF, 0xED, 0x99, 0x06, 0x2F, 0xB6, 0x0A, 0x4C, 0x4F, 0xDB, 0xA2, 0xCC, + 0x37, 0x1A, 0xAF, 0x47, 0x85, 0x2D, 0x8A, 0x5F, 0xC4, 0x34, 0x34, 0x4C, + 0x00, 0xFD, 0x18, 0x93, 0x67, 0x13, 0xD1, 0x37, 0xE6, 0x48, 0xB4, 0x8B, + 0x06, 0xC5, 0x57, 0x7B, 0x19, 0x86, 0x0A, 0x79, 0xCB, 0x00, 0xC9, 0x52, + 0xAF, 0x42, 0xFF, 0x37, 0x8F, 0xE1, 0xA3, 0x1E, 0x7A, 0x3D, 0x50, 0xAB, + 0x63, 0x06, 0xE7, 0x15, 0xB5, 0x3F, 0xB6, 0x45, 0x37, 0x94, 0x37, 0xB1, + 0x7E, 0xF2, 0x48, 0xC3, 0x7F, 0xC5, 0x75, 0xFE, 0x97, 0x8D, 0x45, 0x8F, + 0x1A, 0xA7, 0x1A, 0x72, 0x28, 0x1A, 0x40, 0x0F +}; + +static const unsigned char TA138_RSA_E[] = { + 0x01, 0x00, 0x01 +}; + +static const br_x509_trust_anchor TAs[139] = { + { + { (unsigned char *)TA0_DN, sizeof TA0_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA0_RSA_N, sizeof TA0_RSA_N, + (unsigned char *)TA0_RSA_E, sizeof TA0_RSA_E, + } } + } + }, + { + { (unsigned char *)TA1_DN, sizeof TA1_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA1_RSA_N, sizeof TA1_RSA_N, + (unsigned char *)TA1_RSA_E, sizeof TA1_RSA_E, + } } + } + }, + { + { (unsigned char *)TA2_DN, sizeof TA2_DN }, + 0, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA2_RSA_N, sizeof TA2_RSA_N, + (unsigned char *)TA2_RSA_E, sizeof TA2_RSA_E, + } } + } + }, + { + { (unsigned char *)TA3_DN, sizeof TA3_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA3_RSA_N, sizeof TA3_RSA_N, + (unsigned char *)TA3_RSA_E, sizeof TA3_RSA_E, + } } + } + }, + { + { (unsigned char *)TA4_DN, sizeof TA4_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA4_RSA_N, sizeof TA4_RSA_N, + (unsigned char *)TA4_RSA_E, sizeof TA4_RSA_E, + } } + } + }, + { + { (unsigned char *)TA5_DN, sizeof TA5_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA5_RSA_N, sizeof TA5_RSA_N, + (unsigned char *)TA5_RSA_E, sizeof TA5_RSA_E, + } } + } + }, + { + { (unsigned char *)TA6_DN, sizeof TA6_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA6_RSA_N, sizeof TA6_RSA_N, + (unsigned char *)TA6_RSA_E, sizeof TA6_RSA_E, + } } + } + }, + { + { (unsigned char *)TA7_DN, sizeof TA7_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA7_RSA_N, sizeof TA7_RSA_N, + (unsigned char *)TA7_RSA_E, sizeof TA7_RSA_E, + } } + } + }, + { + { (unsigned char *)TA8_DN, sizeof TA8_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA8_RSA_N, sizeof TA8_RSA_N, + (unsigned char *)TA8_RSA_E, sizeof TA8_RSA_E, + } } + } + }, + { + { (unsigned char *)TA9_DN, sizeof TA9_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA9_RSA_N, sizeof TA9_RSA_N, + (unsigned char *)TA9_RSA_E, sizeof TA9_RSA_E, + } } + } + }, + { + { (unsigned char *)TA10_DN, sizeof TA10_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA10_RSA_N, sizeof TA10_RSA_N, + (unsigned char *)TA10_RSA_E, sizeof TA10_RSA_E, + } } + } + }, + { + { (unsigned char *)TA11_DN, sizeof TA11_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA11_RSA_N, sizeof TA11_RSA_N, + (unsigned char *)TA11_RSA_E, sizeof TA11_RSA_E, + } } + } + }, + { + { (unsigned char *)TA12_DN, sizeof TA12_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA12_RSA_N, sizeof TA12_RSA_N, + (unsigned char *)TA12_RSA_E, sizeof TA12_RSA_E, + } } + } + }, + { + { (unsigned char *)TA13_DN, sizeof TA13_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA13_RSA_N, sizeof TA13_RSA_N, + (unsigned char *)TA13_RSA_E, sizeof TA13_RSA_E, + } } + } + }, + { + { (unsigned char *)TA14_DN, sizeof TA14_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA14_RSA_N, sizeof TA14_RSA_N, + (unsigned char *)TA14_RSA_E, sizeof TA14_RSA_E, + } } + } + }, + { + { (unsigned char *)TA15_DN, sizeof TA15_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA15_RSA_N, sizeof TA15_RSA_N, + (unsigned char *)TA15_RSA_E, sizeof TA15_RSA_E, + } } + } + }, + { + { (unsigned char *)TA16_DN, sizeof TA16_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA16_RSA_N, sizeof TA16_RSA_N, + (unsigned char *)TA16_RSA_E, sizeof TA16_RSA_E, + } } + } + }, + { + { (unsigned char *)TA17_DN, sizeof TA17_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA17_RSA_N, sizeof TA17_RSA_N, + (unsigned char *)TA17_RSA_E, sizeof TA17_RSA_E, + } } + } + }, + { + { (unsigned char *)TA18_DN, sizeof TA18_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA18_RSA_N, sizeof TA18_RSA_N, + (unsigned char *)TA18_RSA_E, sizeof TA18_RSA_E, + } } + } + }, + { + { (unsigned char *)TA19_DN, sizeof TA19_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA19_RSA_N, sizeof TA19_RSA_N, + (unsigned char *)TA19_RSA_E, sizeof TA19_RSA_E, + } } + } + }, + { + { (unsigned char *)TA20_DN, sizeof TA20_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA20_RSA_N, sizeof TA20_RSA_N, + (unsigned char *)TA20_RSA_E, sizeof TA20_RSA_E, + } } + } + }, + { + { (unsigned char *)TA21_DN, sizeof TA21_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA21_RSA_N, sizeof TA21_RSA_N, + (unsigned char *)TA21_RSA_E, sizeof TA21_RSA_E, + } } + } + }, + { + { (unsigned char *)TA22_DN, sizeof TA22_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA22_RSA_N, sizeof TA22_RSA_N, + (unsigned char *)TA22_RSA_E, sizeof TA22_RSA_E, + } } + } + }, + { + { (unsigned char *)TA23_DN, sizeof TA23_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA23_RSA_N, sizeof TA23_RSA_N, + (unsigned char *)TA23_RSA_E, sizeof TA23_RSA_E, + } } + } + }, + { + { (unsigned char *)TA24_DN, sizeof TA24_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA24_RSA_N, sizeof TA24_RSA_N, + (unsigned char *)TA24_RSA_E, sizeof TA24_RSA_E, + } } + } + }, + { + { (unsigned char *)TA25_DN, sizeof TA25_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA25_RSA_N, sizeof TA25_RSA_N, + (unsigned char *)TA25_RSA_E, sizeof TA25_RSA_E, + } } + } + }, + { + { (unsigned char *)TA26_DN, sizeof TA26_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA26_RSA_N, sizeof TA26_RSA_N, + (unsigned char *)TA26_RSA_E, sizeof TA26_RSA_E, + } } + } + }, + { + { (unsigned char *)TA27_DN, sizeof TA27_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA27_RSA_N, sizeof TA27_RSA_N, + (unsigned char *)TA27_RSA_E, sizeof TA27_RSA_E, + } } + } + }, + { + { (unsigned char *)TA28_DN, sizeof TA28_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA28_RSA_N, sizeof TA28_RSA_N, + (unsigned char *)TA28_RSA_E, sizeof TA28_RSA_E, + } } + } + }, + { + { (unsigned char *)TA29_DN, sizeof TA29_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA29_RSA_N, sizeof TA29_RSA_N, + (unsigned char *)TA29_RSA_E, sizeof TA29_RSA_E, + } } + } + }, + { + { (unsigned char *)TA30_DN, sizeof TA30_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA30_RSA_N, sizeof TA30_RSA_N, + (unsigned char *)TA30_RSA_E, sizeof TA30_RSA_E, + } } + } + }, + { + { (unsigned char *)TA31_DN, sizeof TA31_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA31_RSA_N, sizeof TA31_RSA_N, + (unsigned char *)TA31_RSA_E, sizeof TA31_RSA_E, + } } + } + }, + { + { (unsigned char *)TA32_DN, sizeof TA32_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA32_RSA_N, sizeof TA32_RSA_N, + (unsigned char *)TA32_RSA_E, sizeof TA32_RSA_E, + } } + } + }, + { + { (unsigned char *)TA33_DN, sizeof TA33_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA33_RSA_N, sizeof TA33_RSA_N, + (unsigned char *)TA33_RSA_E, sizeof TA33_RSA_E, + } } + } + }, + { + { (unsigned char *)TA34_DN, sizeof TA34_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA34_EC_Q, sizeof TA34_EC_Q, + } } + } + }, + { + { (unsigned char *)TA35_DN, sizeof TA35_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA35_RSA_N, sizeof TA35_RSA_N, + (unsigned char *)TA35_RSA_E, sizeof TA35_RSA_E, + } } + } + }, + { + { (unsigned char *)TA36_DN, sizeof TA36_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA36_RSA_N, sizeof TA36_RSA_N, + (unsigned char *)TA36_RSA_E, sizeof TA36_RSA_E, + } } + } + }, + { + { (unsigned char *)TA37_DN, sizeof TA37_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA37_RSA_N, sizeof TA37_RSA_N, + (unsigned char *)TA37_RSA_E, sizeof TA37_RSA_E, + } } + } + }, + { + { (unsigned char *)TA38_DN, sizeof TA38_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA38_RSA_N, sizeof TA38_RSA_N, + (unsigned char *)TA38_RSA_E, sizeof TA38_RSA_E, + } } + } + }, + { + { (unsigned char *)TA39_DN, sizeof TA39_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA39_RSA_N, sizeof TA39_RSA_N, + (unsigned char *)TA39_RSA_E, sizeof TA39_RSA_E, + } } + } + }, + { + { (unsigned char *)TA40_DN, sizeof TA40_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA40_RSA_N, sizeof TA40_RSA_N, + (unsigned char *)TA40_RSA_E, sizeof TA40_RSA_E, + } } + } + }, + { + { (unsigned char *)TA41_DN, sizeof TA41_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA41_RSA_N, sizeof TA41_RSA_N, + (unsigned char *)TA41_RSA_E, sizeof TA41_RSA_E, + } } + } + }, + { + { (unsigned char *)TA42_DN, sizeof TA42_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA42_EC_Q, sizeof TA42_EC_Q, + } } + } + }, + { + { (unsigned char *)TA43_DN, sizeof TA43_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA43_RSA_N, sizeof TA43_RSA_N, + (unsigned char *)TA43_RSA_E, sizeof TA43_RSA_E, + } } + } + }, + { + { (unsigned char *)TA44_DN, sizeof TA44_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA44_EC_Q, sizeof TA44_EC_Q, + } } + } + }, + { + { (unsigned char *)TA45_DN, sizeof TA45_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA45_RSA_N, sizeof TA45_RSA_N, + (unsigned char *)TA45_RSA_E, sizeof TA45_RSA_E, + } } + } + }, + { + { (unsigned char *)TA46_DN, sizeof TA46_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA46_EC_Q, sizeof TA46_EC_Q, + } } + } + }, + { + { (unsigned char *)TA47_DN, sizeof TA47_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA47_RSA_N, sizeof TA47_RSA_N, + (unsigned char *)TA47_RSA_E, sizeof TA47_RSA_E, + } } + } + }, + { + { (unsigned char *)TA48_DN, sizeof TA48_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA48_RSA_N, sizeof TA48_RSA_N, + (unsigned char *)TA48_RSA_E, sizeof TA48_RSA_E, + } } + } + }, + { + { (unsigned char *)TA49_DN, sizeof TA49_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA49_RSA_N, sizeof TA49_RSA_N, + (unsigned char *)TA49_RSA_E, sizeof TA49_RSA_E, + } } + } + }, + { + { (unsigned char *)TA50_DN, sizeof TA50_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA50_RSA_N, sizeof TA50_RSA_N, + (unsigned char *)TA50_RSA_E, sizeof TA50_RSA_E, + } } + } + }, + { + { (unsigned char *)TA51_DN, sizeof TA51_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA51_RSA_N, sizeof TA51_RSA_N, + (unsigned char *)TA51_RSA_E, sizeof TA51_RSA_E, + } } + } + }, + { + { (unsigned char *)TA52_DN, sizeof TA52_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA52_RSA_N, sizeof TA52_RSA_N, + (unsigned char *)TA52_RSA_E, sizeof TA52_RSA_E, + } } + } + }, + { + { (unsigned char *)TA53_DN, sizeof TA53_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA53_RSA_N, sizeof TA53_RSA_N, + (unsigned char *)TA53_RSA_E, sizeof TA53_RSA_E, + } } + } + }, + { + { (unsigned char *)TA54_DN, sizeof TA54_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA54_RSA_N, sizeof TA54_RSA_N, + (unsigned char *)TA54_RSA_E, sizeof TA54_RSA_E, + } } + } + }, + { + { (unsigned char *)TA55_DN, sizeof TA55_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA55_RSA_N, sizeof TA55_RSA_N, + (unsigned char *)TA55_RSA_E, sizeof TA55_RSA_E, + } } + } + }, + { + { (unsigned char *)TA56_DN, sizeof TA56_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA56_RSA_N, sizeof TA56_RSA_N, + (unsigned char *)TA56_RSA_E, sizeof TA56_RSA_E, + } } + } + }, + { + { (unsigned char *)TA57_DN, sizeof TA57_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA57_RSA_N, sizeof TA57_RSA_N, + (unsigned char *)TA57_RSA_E, sizeof TA57_RSA_E, + } } + } + }, + { + { (unsigned char *)TA58_DN, sizeof TA58_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA58_RSA_N, sizeof TA58_RSA_N, + (unsigned char *)TA58_RSA_E, sizeof TA58_RSA_E, + } } + } + }, + { + { (unsigned char *)TA59_DN, sizeof TA59_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA59_RSA_N, sizeof TA59_RSA_N, + (unsigned char *)TA59_RSA_E, sizeof TA59_RSA_E, + } } + } + }, + { + { (unsigned char *)TA60_DN, sizeof TA60_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA60_RSA_N, sizeof TA60_RSA_N, + (unsigned char *)TA60_RSA_E, sizeof TA60_RSA_E, + } } + } + }, + { + { (unsigned char *)TA61_DN, sizeof TA61_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA61_RSA_N, sizeof TA61_RSA_N, + (unsigned char *)TA61_RSA_E, sizeof TA61_RSA_E, + } } + } + }, + { + { (unsigned char *)TA62_DN, sizeof TA62_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA62_RSA_N, sizeof TA62_RSA_N, + (unsigned char *)TA62_RSA_E, sizeof TA62_RSA_E, + } } + } + }, + { + { (unsigned char *)TA63_DN, sizeof TA63_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA63_EC_Q, sizeof TA63_EC_Q, + } } + } + }, + { + { (unsigned char *)TA64_DN, sizeof TA64_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA64_RSA_N, sizeof TA64_RSA_N, + (unsigned char *)TA64_RSA_E, sizeof TA64_RSA_E, + } } + } + }, + { + { (unsigned char *)TA65_DN, sizeof TA65_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA65_RSA_N, sizeof TA65_RSA_N, + (unsigned char *)TA65_RSA_E, sizeof TA65_RSA_E, + } } + } + }, + { + { (unsigned char *)TA66_DN, sizeof TA66_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA66_RSA_N, sizeof TA66_RSA_N, + (unsigned char *)TA66_RSA_E, sizeof TA66_RSA_E, + } } + } + }, + { + { (unsigned char *)TA67_DN, sizeof TA67_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA67_RSA_N, sizeof TA67_RSA_N, + (unsigned char *)TA67_RSA_E, sizeof TA67_RSA_E, + } } + } + }, + { + { (unsigned char *)TA68_DN, sizeof TA68_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA68_RSA_N, sizeof TA68_RSA_N, + (unsigned char *)TA68_RSA_E, sizeof TA68_RSA_E, + } } + } + }, + { + { (unsigned char *)TA69_DN, sizeof TA69_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA69_RSA_N, sizeof TA69_RSA_N, + (unsigned char *)TA69_RSA_E, sizeof TA69_RSA_E, + } } + } + }, + { + { (unsigned char *)TA70_DN, sizeof TA70_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA70_RSA_N, sizeof TA70_RSA_N, + (unsigned char *)TA70_RSA_E, sizeof TA70_RSA_E, + } } + } + }, + { + { (unsigned char *)TA71_DN, sizeof TA71_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA71_RSA_N, sizeof TA71_RSA_N, + (unsigned char *)TA71_RSA_E, sizeof TA71_RSA_E, + } } + } + }, + { + { (unsigned char *)TA72_DN, sizeof TA72_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA72_RSA_N, sizeof TA72_RSA_N, + (unsigned char *)TA72_RSA_E, sizeof TA72_RSA_E, + } } + } + }, + { + { (unsigned char *)TA73_DN, sizeof TA73_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA73_RSA_N, sizeof TA73_RSA_N, + (unsigned char *)TA73_RSA_E, sizeof TA73_RSA_E, + } } + } + }, + { + { (unsigned char *)TA74_DN, sizeof TA74_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA74_RSA_N, sizeof TA74_RSA_N, + (unsigned char *)TA74_RSA_E, sizeof TA74_RSA_E, + } } + } + }, + { + { (unsigned char *)TA75_DN, sizeof TA75_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA75_RSA_N, sizeof TA75_RSA_N, + (unsigned char *)TA75_RSA_E, sizeof TA75_RSA_E, + } } + } + }, + { + { (unsigned char *)TA76_DN, sizeof TA76_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA76_RSA_N, sizeof TA76_RSA_N, + (unsigned char *)TA76_RSA_E, sizeof TA76_RSA_E, + } } + } + }, + { + { (unsigned char *)TA77_DN, sizeof TA77_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA77_RSA_N, sizeof TA77_RSA_N, + (unsigned char *)TA77_RSA_E, sizeof TA77_RSA_E, + } } + } + }, + { + { (unsigned char *)TA78_DN, sizeof TA78_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA78_RSA_N, sizeof TA78_RSA_N, + (unsigned char *)TA78_RSA_E, sizeof TA78_RSA_E, + } } + } + }, + { + { (unsigned char *)TA79_DN, sizeof TA79_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA79_RSA_N, sizeof TA79_RSA_N, + (unsigned char *)TA79_RSA_E, sizeof TA79_RSA_E, + } } + } + }, + { + { (unsigned char *)TA80_DN, sizeof TA80_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA80_RSA_N, sizeof TA80_RSA_N, + (unsigned char *)TA80_RSA_E, sizeof TA80_RSA_E, + } } + } + }, + { + { (unsigned char *)TA81_DN, sizeof TA81_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA81_RSA_N, sizeof TA81_RSA_N, + (unsigned char *)TA81_RSA_E, sizeof TA81_RSA_E, + } } + } + }, + { + { (unsigned char *)TA82_DN, sizeof TA82_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA82_RSA_N, sizeof TA82_RSA_N, + (unsigned char *)TA82_RSA_E, sizeof TA82_RSA_E, + } } + } + }, + { + { (unsigned char *)TA83_DN, sizeof TA83_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA83_RSA_N, sizeof TA83_RSA_N, + (unsigned char *)TA83_RSA_E, sizeof TA83_RSA_E, + } } + } + }, + { + { (unsigned char *)TA84_DN, sizeof TA84_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA84_RSA_N, sizeof TA84_RSA_N, + (unsigned char *)TA84_RSA_E, sizeof TA84_RSA_E, + } } + } + }, + { + { (unsigned char *)TA85_DN, sizeof TA85_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA85_RSA_N, sizeof TA85_RSA_N, + (unsigned char *)TA85_RSA_E, sizeof TA85_RSA_E, + } } + } + }, + { + { (unsigned char *)TA86_DN, sizeof TA86_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA86_RSA_N, sizeof TA86_RSA_N, + (unsigned char *)TA86_RSA_E, sizeof TA86_RSA_E, + } } + } + }, + { + { (unsigned char *)TA87_DN, sizeof TA87_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA87_RSA_N, sizeof TA87_RSA_N, + (unsigned char *)TA87_RSA_E, sizeof TA87_RSA_E, + } } + } + }, + { + { (unsigned char *)TA88_DN, sizeof TA88_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA88_EC_Q, sizeof TA88_EC_Q, + } } + } + }, + { + { (unsigned char *)TA89_DN, sizeof TA89_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA89_RSA_N, sizeof TA89_RSA_N, + (unsigned char *)TA89_RSA_E, sizeof TA89_RSA_E, + } } + } + }, + { + { (unsigned char *)TA90_DN, sizeof TA90_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA90_EC_Q, sizeof TA90_EC_Q, + } } + } + }, + { + { (unsigned char *)TA91_DN, sizeof TA91_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA91_RSA_N, sizeof TA91_RSA_N, + (unsigned char *)TA91_RSA_E, sizeof TA91_RSA_E, + } } + } + }, + { + { (unsigned char *)TA92_DN, sizeof TA92_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA92_RSA_N, sizeof TA92_RSA_N, + (unsigned char *)TA92_RSA_E, sizeof TA92_RSA_E, + } } + } + }, + { + { (unsigned char *)TA93_DN, sizeof TA93_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA93_RSA_N, sizeof TA93_RSA_N, + (unsigned char *)TA93_RSA_E, sizeof TA93_RSA_E, + } } + } + }, + { + { (unsigned char *)TA94_DN, sizeof TA94_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA94_EC_Q, sizeof TA94_EC_Q, + } } + } + }, + { + { (unsigned char *)TA95_DN, sizeof TA95_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp256r1, + (unsigned char *)TA95_EC_Q, sizeof TA95_EC_Q, + } } + } + }, + { + { (unsigned char *)TA96_DN, sizeof TA96_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA96_EC_Q, sizeof TA96_EC_Q, + } } + } + }, + { + { (unsigned char *)TA97_DN, sizeof TA97_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA97_RSA_N, sizeof TA97_RSA_N, + (unsigned char *)TA97_RSA_E, sizeof TA97_RSA_E, + } } + } + }, + { + { (unsigned char *)TA98_DN, sizeof TA98_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA98_RSA_N, sizeof TA98_RSA_N, + (unsigned char *)TA98_RSA_E, sizeof TA98_RSA_E, + } } + } + }, + { + { (unsigned char *)TA99_DN, sizeof TA99_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA99_RSA_N, sizeof TA99_RSA_N, + (unsigned char *)TA99_RSA_E, sizeof TA99_RSA_E, + } } + } + }, + { + { (unsigned char *)TA100_DN, sizeof TA100_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA100_RSA_N, sizeof TA100_RSA_N, + (unsigned char *)TA100_RSA_E, sizeof TA100_RSA_E, + } } + } + }, + { + { (unsigned char *)TA101_DN, sizeof TA101_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA101_RSA_N, sizeof TA101_RSA_N, + (unsigned char *)TA101_RSA_E, sizeof TA101_RSA_E, + } } + } + }, + { + { (unsigned char *)TA102_DN, sizeof TA102_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA102_EC_Q, sizeof TA102_EC_Q, + } } + } + }, + { + { (unsigned char *)TA103_DN, sizeof TA103_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA103_RSA_N, sizeof TA103_RSA_N, + (unsigned char *)TA103_RSA_E, sizeof TA103_RSA_E, + } } + } + }, + { + { (unsigned char *)TA104_DN, sizeof TA104_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA104_RSA_N, sizeof TA104_RSA_N, + (unsigned char *)TA104_RSA_E, sizeof TA104_RSA_E, + } } + } + }, + { + { (unsigned char *)TA105_DN, sizeof TA105_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA105_RSA_N, sizeof TA105_RSA_N, + (unsigned char *)TA105_RSA_E, sizeof TA105_RSA_E, + } } + } + }, + { + { (unsigned char *)TA106_DN, sizeof TA106_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA106_RSA_N, sizeof TA106_RSA_N, + (unsigned char *)TA106_RSA_E, sizeof TA106_RSA_E, + } } + } + }, + { + { (unsigned char *)TA107_DN, sizeof TA107_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA107_RSA_N, sizeof TA107_RSA_N, + (unsigned char *)TA107_RSA_E, sizeof TA107_RSA_E, + } } + } + }, + { + { (unsigned char *)TA108_DN, sizeof TA108_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA108_EC_Q, sizeof TA108_EC_Q, + } } + } + }, + { + { (unsigned char *)TA109_DN, sizeof TA109_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA109_RSA_N, sizeof TA109_RSA_N, + (unsigned char *)TA109_RSA_E, sizeof TA109_RSA_E, + } } + } + }, + { + { (unsigned char *)TA110_DN, sizeof TA110_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA110_RSA_N, sizeof TA110_RSA_N, + (unsigned char *)TA110_RSA_E, sizeof TA110_RSA_E, + } } + } + }, + { + { (unsigned char *)TA111_DN, sizeof TA111_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA111_RSA_N, sizeof TA111_RSA_N, + (unsigned char *)TA111_RSA_E, sizeof TA111_RSA_E, + } } + } + }, + { + { (unsigned char *)TA112_DN, sizeof TA112_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA112_RSA_N, sizeof TA112_RSA_N, + (unsigned char *)TA112_RSA_E, sizeof TA112_RSA_E, + } } + } + }, + { + { (unsigned char *)TA113_DN, sizeof TA113_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp256r1, + (unsigned char *)TA113_EC_Q, sizeof TA113_EC_Q, + } } + } + }, + { + { (unsigned char *)TA114_DN, sizeof TA114_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA114_EC_Q, sizeof TA114_EC_Q, + } } + } + }, + { + { (unsigned char *)TA115_DN, sizeof TA115_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA115_RSA_N, sizeof TA115_RSA_N, + (unsigned char *)TA115_RSA_E, sizeof TA115_RSA_E, + } } + } + }, + { + { (unsigned char *)TA116_DN, sizeof TA116_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA116_RSA_N, sizeof TA116_RSA_N, + (unsigned char *)TA116_RSA_E, sizeof TA116_RSA_E, + } } + } + }, + { + { (unsigned char *)TA117_DN, sizeof TA117_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA117_RSA_N, sizeof TA117_RSA_N, + (unsigned char *)TA117_RSA_E, sizeof TA117_RSA_E, + } } + } + }, + { + { (unsigned char *)TA118_DN, sizeof TA118_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA118_RSA_N, sizeof TA118_RSA_N, + (unsigned char *)TA118_RSA_E, sizeof TA118_RSA_E, + } } + } + }, + { + { (unsigned char *)TA119_DN, sizeof TA119_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA119_RSA_N, sizeof TA119_RSA_N, + (unsigned char *)TA119_RSA_E, sizeof TA119_RSA_E, + } } + } + }, + { + { (unsigned char *)TA120_DN, sizeof TA120_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA120_RSA_N, sizeof TA120_RSA_N, + (unsigned char *)TA120_RSA_E, sizeof TA120_RSA_E, + } } + } + }, + { + { (unsigned char *)TA121_DN, sizeof TA121_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA121_RSA_N, sizeof TA121_RSA_N, + (unsigned char *)TA121_RSA_E, sizeof TA121_RSA_E, + } } + } + }, + { + { (unsigned char *)TA122_DN, sizeof TA122_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA122_EC_Q, sizeof TA122_EC_Q, + } } + } + }, + { + { (unsigned char *)TA123_DN, sizeof TA123_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA123_RSA_N, sizeof TA123_RSA_N, + (unsigned char *)TA123_RSA_E, sizeof TA123_RSA_E, + } } + } + }, + { + { (unsigned char *)TA124_DN, sizeof TA124_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA124_EC_Q, sizeof TA124_EC_Q, + } } + } + }, + { + { (unsigned char *)TA125_DN, sizeof TA125_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA125_RSA_N, sizeof TA125_RSA_N, + (unsigned char *)TA125_RSA_E, sizeof TA125_RSA_E, + } } + } + }, + { + { (unsigned char *)TA126_DN, sizeof TA126_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA126_EC_Q, sizeof TA126_EC_Q, + } } + } + }, + { + { (unsigned char *)TA127_DN, sizeof TA127_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA127_RSA_N, sizeof TA127_RSA_N, + (unsigned char *)TA127_RSA_E, sizeof TA127_RSA_E, + } } + } + }, + { + { (unsigned char *)TA128_DN, sizeof TA128_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA128_RSA_N, sizeof TA128_RSA_N, + (unsigned char *)TA128_RSA_E, sizeof TA128_RSA_E, + } } + } + }, + { + { (unsigned char *)TA129_DN, sizeof TA129_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA129_EC_Q, sizeof TA129_EC_Q, + } } + } + }, + { + { (unsigned char *)TA130_DN, sizeof TA130_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA130_EC_Q, sizeof TA130_EC_Q, + } } + } + }, + { + { (unsigned char *)TA131_DN, sizeof TA131_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA131_RSA_N, sizeof TA131_RSA_N, + (unsigned char *)TA131_RSA_E, sizeof TA131_RSA_E, + } } + } + }, + { + { (unsigned char *)TA132_DN, sizeof TA132_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA132_RSA_N, sizeof TA132_RSA_N, + (unsigned char *)TA132_RSA_E, sizeof TA132_RSA_E, + } } + } + }, + { + { (unsigned char *)TA133_DN, sizeof TA133_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA133_RSA_N, sizeof TA133_RSA_N, + (unsigned char *)TA133_RSA_E, sizeof TA133_RSA_E, + } } + } + }, + { + { (unsigned char *)TA134_DN, sizeof TA134_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA134_RSA_N, sizeof TA134_RSA_N, + (unsigned char *)TA134_RSA_E, sizeof TA134_RSA_E, + } } + } + }, + { + { (unsigned char *)TA135_DN, sizeof TA135_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA135_EC_Q, sizeof TA135_EC_Q, + } } + } + }, + { + { (unsigned char *)TA136_DN, sizeof TA136_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA136_RSA_N, sizeof TA136_RSA_N, + (unsigned char *)TA136_RSA_E, sizeof TA136_RSA_E, + } } + } + }, + { + { (unsigned char *)TA137_DN, sizeof TA137_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_EC, + { .ec = { + BR_EC_secp384r1, + (unsigned char *)TA137_EC_Q, sizeof TA137_EC_Q, + } } + } + }, + { + { (unsigned char *)TA138_DN, sizeof TA138_DN }, + BR_X509_TA_CA, + { + BR_KEYTYPE_RSA, + { .rsa = { + (unsigned char *)TA138_RSA_N, sizeof TA138_RSA_N, + (unsigned char *)TA138_RSA_E, sizeof TA138_RSA_E, + } } + } + } +}; + +#define TAs_NUM 139 diff --git a/bearssl/decls.nim b/bearssl/decls.nim new file mode 100644 index 0000000..b536f0f --- /dev/null +++ b/bearssl/decls.nim @@ -0,0 +1,3763 @@ +## Nim-BearSSL +## Copyright (c) 2018 Status Research & Development GmbH +## Licensed under either of +## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) +## * MIT license ([LICENSE-MIT](LICENSE-MIT)) +## at your option. +## This file may not be copied, modified, or distributed except according to +## those terms. +## This module implements interface with BearSSL library sources. +import strutils +from os import DirSep + +const + bearPath = currentSourcePath.rsplit(DirSep, 1)[0] & DirSep & + "csources" & DirSep + + bearSrcPath = bearPath & "src" + bearIncPath = bearPath & "inc" + bearIntPath = bearSrcPath & DirSep & "int" & DirSep + bearCodecPath = bearSrcPath & DirSep & "codec" & DirSep + bearRandPath = bearSrcPath & DirSep & "rand" & DirSep + bearRsaPath = bearSrcPath & DirSep & "rsa" & DirSep + bearEcPath = bearSrcPath & DirSep & "ec" & DirSep + bearX509Path = bearSrcPath & DirSep & "x509" & DirSep + bearSslPath = bearSrcPath & DirSep & "ssl" & DirSep + bearMacPath = bearSrcPath & DirSep & "mac" & DirSep + bearKdfPath = bearSrcPath & DirSep & "kdf" & DirSep + bearHashPath = bearSrcPath & DirSep & "hash" & DirSep + bearSymcPath = bearSrcPath & DirSep & "symcipher" & DirSep + bearAeadPath = bearSrcPath & DirSep & "aead" & DirSep + bearToolsPath = bearPath & "tools" & DirSep + bearRootPath = bearSrcPath & DirSep + +{.passC: "-I" & bearSrcPath} +{.passC: "-I" & bearIncPath} +{.passC: "-I" & bearPath & "tools"} + +when defined(windows): + {.passC: "-DBR_USE_WIN32_TIME=1".} + {.passC: "-DBR_USE_WIN32_RAND=1".} +else: + {.passC: "-DBR_USE_UNIX_TIME=1".} + {.passC: "-DBR_USE_URANDOM=1".} + +when system.cpuEndian == bigEndian: + {.passC: "-DBR_BE_UNALIGNED=1".} +else: + {.passC: "-DBR_LE_UNALIGNED=1".} + +when sizeof(int) == 8: + {.passC: "-DBR_64=1".} + {.passC:" -DBR_amd64=1".} + when defined(vcc): + {.passC: "-DBR_UMUL128=1".} + else: + {.passC: "-DBR_INT128=1".} + +{.compile: bearCodecPath & "ccopy.c".} +{.compile: bearCodecPath & "dec16be.c".} +{.compile: bearCodecPath & "dec16le.c".} +{.compile: bearCodecPath & "dec32be.c".} +{.compile: bearCodecPath & "dec32le.c".} +{.compile: bearCodecPath & "dec64be.c".} +{.compile: bearCodecPath & "dec64le.c".} +{.compile: bearCodecPath & "enc16be.c".} +{.compile: bearCodecPath & "enc16le.c".} +{.compile: bearCodecPath & "enc32be.c".} +{.compile: bearCodecPath & "enc32le.c".} +{.compile: bearCodecPath & "enc64be.c".} +{.compile: bearCodecPath & "enc64le.c".} +{.compile: bearCodecPath & "pemdec.c".} +{.compile: bearCodecPath & "pemenc.c".} + +{.compile: bearEcPath & "ecdsa_atr.c".} +{.compile: bearEcPath & "ecdsa_default_sign_asn1.c".} +{.compile: bearEcPath & "ecdsa_default_sign_raw.c".} +{.compile: bearEcPath & "ecdsa_default_vrfy_asn1.c".} +{.compile: bearEcPath & "ecdsa_default_vrfy_raw.c".} +{.compile: bearEcPath & "ecdsa_i15_bits.c".} +{.compile: bearEcPath & "ecdsa_i15_sign_asn1.c".} +{.compile: bearEcPath & "ecdsa_i15_sign_raw.c".} +{.compile: bearEcPath & "ecdsa_i15_vrfy_asn1.c".} +{.compile: bearEcPath & "ecdsa_i15_vrfy_raw.c".} +{.compile: bearEcPath & "ecdsa_i31_bits.c".} +{.compile: bearEcPath & "ecdsa_i31_sign_asn1.c".} +{.compile: bearEcPath & "ecdsa_i31_sign_raw.c".} +{.compile: bearEcPath & "ecdsa_i31_vrfy_asn1.c".} +{.compile: bearEcPath & "ecdsa_i31_vrfy_raw.c".} +{.compile: bearEcPath & "ecdsa_rta.c".} +{.compile: bearEcPath & "ec_all_m15.c".} +{.compile: bearEcPath & "ec_all_m31.c".} +{.compile: bearEcPath & "ec_c25519_i15.c".} +{.compile: bearEcPath & "ec_c25519_i31.c".} +{.compile: bearEcPath & "ec_c25519_m15.c".} +{.compile: bearEcPath & "ec_c25519_m31.c".} +{.compile: bearEcPath & "ec_c25519_m62.c".} +{.compile: bearEcPath & "ec_c25519_m64.c".} +{.compile: bearEcPath & "ec_curve25519.c".} +{.compile: bearEcPath & "ec_default.c".} +{.compile: bearEcPath & "ec_keygen.c".} +{.compile: bearEcPath & "ec_p256_m15.c".} +{.compile: bearEcPath & "ec_p256_m31.c".} +{.compile: bearEcPath & "ec_p256_m62.c".} +{.compile: bearEcPath & "ec_p256_m64.c".} +{.compile: bearEcPath & "ec_prime_i15.c".} +{.compile: bearEcPath & "ec_prime_i31.c".} +{.compile: bearEcPath & "ec_pubkey.c".} +{.compile: bearEcPath & "ec_secp256r1.c".} +{.compile: bearEcPath & "ec_secp384r1.c".} +{.compile: bearEcPath & "ec_secp521r1.c".} + +{.compile: bearHashPath & "dig_oid.c".} +{.compile: bearHashPath & "dig_size.c".} +{.compile: bearHashPath & "ghash_ctmul.c".} +{.compile: bearHashPath & "ghash_ctmul32.c".} +{.compile: bearHashPath & "ghash_ctmul64.c".} +{.compile: bearHashPath & "ghash_pclmul.c".} +{.compile: bearHashPath & "ghash_pwr8.c".} +{.compile: bearHashPath & "md5.c".} +{.compile: bearHashPath & "md5sha1.c".} +{.compile: bearHashPath & "mgf1.c".} +{.compile: bearHashPath & "multihash.c".} +{.compile: bearHashPath & "sha1.c".} +{.compile: bearHashPath & "sha2big.c".} +{.compile: bearHashPath & "sha2small.c".} + +{.compile: bearIntPath & "i15_add.c".} +{.compile: bearIntPath & "i15_bitlen.c".} +{.compile: bearIntPath & "i15_decmod.c".} +{.compile: bearIntPath & "i15_decode.c".} +{.compile: bearIntPath & "i15_decred.c".} +{.compile: bearIntPath & "i15_encode.c".} +{.compile: bearIntPath & "i15_fmont.c".} +{.compile: bearIntPath & "i15_iszero.c".} +{.compile: bearIntPath & "i15_moddiv.c".} +{.compile: bearIntPath & "i15_modpow.c".} +{.compile: bearIntPath & "i15_modpow2.c".} +{.compile: bearIntPath & "i15_montmul.c".} +{.compile: bearIntPath & "i15_mulacc.c".} +{.compile: bearIntPath & "i15_muladd.c".} +{.compile: bearIntPath & "i15_ninv15.c".} +{.compile: bearIntPath & "i15_reduce.c".} +{.compile: bearIntPath & "i15_rshift.c".} +{.compile: bearIntPath & "i15_sub.c".} +{.compile: bearIntPath & "i15_tmont.c".} +{.compile: bearIntPath & "i31_add.c".} +{.compile: bearIntPath & "i31_bitlen.c".} +{.compile: bearIntPath & "i31_decmod.c".} +{.compile: bearIntPath & "i31_decode.c".} +{.compile: bearIntPath & "i31_decred.c".} +{.compile: bearIntPath & "i31_encode.c".} +{.compile: bearIntPath & "i31_fmont.c".} +{.compile: bearIntPath & "i31_iszero.c".} +{.compile: bearIntPath & "i31_moddiv.c".} +{.compile: bearIntPath & "i31_modpow.c".} +{.compile: bearIntPath & "i31_modpow2.c".} +{.compile: bearIntPath & "i31_montmul.c".} +{.compile: bearIntPath & "i31_mulacc.c".} +{.compile: bearIntPath & "i31_muladd.c".} +{.compile: bearIntPath & "i31_ninv31.c".} +{.compile: bearIntPath & "i31_reduce.c".} +{.compile: bearIntPath & "i31_rshift.c".} +{.compile: bearIntPath & "i31_sub.c".} +{.compile: bearIntPath & "i31_tmont.c".} +{.compile: bearIntPath & "i32_add.c".} +{.compile: bearIntPath & "i32_bitlen.c".} +{.compile: bearIntPath & "i32_decmod.c".} +{.compile: bearIntPath & "i32_decode.c".} +{.compile: bearIntPath & "i32_decred.c".} +{.compile: bearIntPath & "i32_div32.c".} +{.compile: bearIntPath & "i32_encode.c".} +{.compile: bearIntPath & "i32_fmont.c".} +{.compile: bearIntPath & "i32_iszero.c".} +{.compile: bearIntPath & "i32_modpow.c".} +{.compile: bearIntPath & "i32_montmul.c".} +{.compile: bearIntPath & "i32_mulacc.c".} +{.compile: bearIntPath & "i32_muladd.c".} +{.compile: bearIntPath & "i32_ninv32.c".} +{.compile: bearIntPath & "i32_reduce.c".} +{.compile: bearIntPath & "i32_sub.c".} +{.compile: bearIntPath & "i32_tmont.c".} +{.compile: bearIntPath & "i62_modpow2.c".} + +{.compile: bearKdfPath & "hkdf.c".} +{.compile: bearKdfPath & "shake.c".} + +{.compile: bearMacPath & "hmac.c".} +{.compile: bearMacPath & "hmac_ct.c".} + +{.compile: bearRandPath & "aesctr_drbg.c".} +{.compile: bearRandPath & "hmac_drbg.c".} +{.compile: bearRandPath & "sysrng.c".} + +{.compile: bearRsaPath & "rsa_default_keygen.c".} +{.compile: bearRsaPath & "rsa_default_modulus.c".} +{.compile: bearRsaPath & "rsa_default_oaep_decrypt.c".} +{.compile: bearRsaPath & "rsa_default_oaep_encrypt.c".} +{.compile: bearRsaPath & "rsa_default_pkcs1_sign.c".} +{.compile: bearRsaPath & "rsa_default_pkcs1_vrfy.c".} +{.compile: bearRsaPath & "rsa_default_priv.c".} +{.compile: bearRsaPath & "rsa_default_privexp.c".} +{.compile: bearRsaPath & "rsa_default_pss_sign.c".} +{.compile: bearRsaPath & "rsa_default_pss_vrfy.c".} +{.compile: bearRsaPath & "rsa_default_pub.c".} +{.compile: bearRsaPath & "rsa_default_pubexp.c".} +{.compile: bearRsaPath & "rsa_i15_keygen.c".} +{.compile: bearRsaPath & "rsa_i15_modulus.c".} +{.compile: bearRsaPath & "rsa_i15_oaep_decrypt.c".} +{.compile: bearRsaPath & "rsa_i15_oaep_encrypt.c".} +{.compile: bearRsaPath & "rsa_i15_pkcs1_sign.c".} +{.compile: bearRsaPath & "rsa_i15_pkcs1_vrfy.c".} +{.compile: bearRsaPath & "rsa_i15_priv.c".} +{.compile: bearRsaPath & "rsa_i15_privexp.c".} +{.compile: bearRsaPath & "rsa_i15_pss_sign.c".} +{.compile: bearRsaPath & "rsa_i15_pss_vrfy.c".} +{.compile: bearRsaPath & "rsa_i15_pub.c".} +{.compile: bearRsaPath & "rsa_i15_pubexp.c".} +{.compile: bearRsaPath & "rsa_i31_keygen.c".} +{.compile: bearRsaPath & "rsa_i31_keygen_inner.c".} +{.compile: bearRsaPath & "rsa_i31_modulus.c".} +{.compile: bearRsaPath & "rsa_i31_oaep_decrypt.c".} +{.compile: bearRsaPath & "rsa_i31_oaep_encrypt.c".} +{.compile: bearRsaPath & "rsa_i31_pkcs1_sign.c".} +{.compile: bearRsaPath & "rsa_i31_pkcs1_vrfy.c".} +{.compile: bearRsaPath & "rsa_i31_priv.c".} +{.compile: bearRsaPath & "rsa_i31_privexp.c".} +{.compile: bearRsaPath & "rsa_i31_pss_sign.c".} +{.compile: bearRsaPath & "rsa_i31_pss_vrfy.c".} +{.compile: bearRsaPath & "rsa_i31_pub.c".} +{.compile: bearRsaPath & "rsa_i31_pubexp.c".} +{.compile: bearRsaPath & "rsa_i32_oaep_decrypt.c".} +{.compile: bearRsaPath & "rsa_i32_oaep_encrypt.c".} +{.compile: bearRsaPath & "rsa_i32_pkcs1_sign.c".} +{.compile: bearRsaPath & "rsa_i32_pkcs1_vrfy.c".} +{.compile: bearRsaPath & "rsa_i32_priv.c".} +{.compile: bearRsaPath & "rsa_i32_pss_sign.c".} +{.compile: bearRsaPath & "rsa_i32_pss_vrfy.c".} +{.compile: bearRsaPath & "rsa_i32_pub.c".} +{.compile: bearRsaPath & "rsa_i62_keygen.c".} +{.compile: bearRsaPath & "rsa_i62_oaep_decrypt.c".} +{.compile: bearRsaPath & "rsa_i62_oaep_encrypt.c".} +{.compile: bearRsaPath & "rsa_i62_pkcs1_sign.c".} +{.compile: bearRsaPath & "rsa_i62_pkcs1_vrfy.c".} +{.compile: bearRsaPath & "rsa_i62_priv.c".} +{.compile: bearRsaPath & "rsa_i62_pss_sign.c".} +{.compile: bearRsaPath & "rsa_i62_pss_vrfy.c".} +{.compile: bearRsaPath & "rsa_i62_pub.c".} +{.compile: bearRsaPath & "rsa_oaep_pad.c".} +{.compile: bearRsaPath & "rsa_oaep_unpad.c".} +{.compile: bearRsaPath & "rsa_pkcs1_sig_pad.c".} +{.compile: bearRsaPath & "rsa_pkcs1_sig_unpad.c".} +{.compile: bearRsaPath & "rsa_pss_sig_pad.c".} +{.compile: bearRsaPath & "rsa_pss_sig_unpad.c".} +{.compile: bearRsaPath & "rsa_ssl_decrypt.c".} + +{.compile: bearSslPath & "prf.c".} +{.compile: bearSslPath & "prf_md5sha1.c".} +{.compile: bearSslPath & "prf_sha256.c".} +{.compile: bearSslPath & "prf_sha384.c".} +{.compile: bearSslPath & "ssl_ccert_single_ec.c".} +{.compile: bearSslPath & "ssl_ccert_single_rsa.c".} +{.compile: bearSslPath & "ssl_client.c".} +{.compile: bearSslPath & "ssl_client_default_rsapub.c".} +{.compile: bearSslPath & "ssl_client_full.c".} +{.compile: bearSslPath & "ssl_engine.c".} +{.compile: bearSslPath & "ssl_engine_default_aescbc.c".} +{.compile: bearSslPath & "ssl_engine_default_aesccm.c".} +{.compile: bearSslPath & "ssl_engine_default_aesgcm.c".} +{.compile: bearSslPath & "ssl_engine_default_chapol.c".} +{.compile: bearSslPath & "ssl_engine_default_descbc.c".} +{.compile: bearSslPath & "ssl_engine_default_ec.c".} +{.compile: bearSslPath & "ssl_engine_default_ecdsa.c".} +{.compile: bearSslPath & "ssl_engine_default_rsavrfy.c".} +{.compile: bearSslPath & "ssl_hashes.c".} +{.compile: bearSslPath & "ssl_hs_client.c".} +{.compile: bearSslPath & "ssl_hs_server.c".} +{.compile: bearSslPath & "ssl_io.c".} +{.compile: bearSslPath & "ssl_keyexport.c".} +{.compile: bearSslPath & "ssl_lru.c".} +{.compile: bearSslPath & "ssl_rec_cbc.c".} +{.compile: bearSslPath & "ssl_rec_ccm.c".} +{.compile: bearSslPath & "ssl_rec_chapol.c".} +{.compile: bearSslPath & "ssl_rec_gcm.c".} +{.compile: bearSslPath & "ssl_scert_single_ec.c".} +{.compile: bearSslPath & "ssl_scert_single_rsa.c".} +{.compile: bearSslPath & "ssl_server.c".} +{.compile: bearSslPath & "ssl_server_full_ec.c".} +{.compile: bearSslPath & "ssl_server_full_rsa.c".} +{.compile: bearSslPath & "ssl_server_mine2c.c".} +{.compile: bearSslPath & "ssl_server_mine2g.c".} +{.compile: bearSslPath & "ssl_server_minf2c.c".} +{.compile: bearSslPath & "ssl_server_minf2g.c".} +{.compile: bearSslPath & "ssl_server_minr2g.c".} +{.compile: bearSslPath & "ssl_server_minu2g.c".} +{.compile: bearSslPath & "ssl_server_minv2g.c".} + +{.compile: bearSymcPath & "aes_big_cbcdec.c".} +{.compile: bearSymcPath & "aes_big_cbcenc.c".} +{.compile: bearSymcPath & "aes_big_ctr.c".} +{.compile: bearSymcPath & "aes_big_ctrcbc.c".} +{.compile: bearSymcPath & "aes_big_dec.c".} +{.compile: bearSymcPath & "aes_big_enc.c".} +{.compile: bearSymcPath & "aes_common.c".} +{.compile: bearSymcPath & "aes_ct.c".} +{.compile: bearSymcPath & "aes_ct64.c".} +{.compile: bearSymcPath & "aes_ct64_cbcdec.c".} +{.compile: bearSymcPath & "aes_ct64_cbcenc.c".} +{.compile: bearSymcPath & "aes_ct64_ctr.c".} +{.compile: bearSymcPath & "aes_ct64_ctrcbc.c".} +{.compile: bearSymcPath & "aes_ct64_dec.c".} +{.compile: bearSymcPath & "aes_ct64_enc.c".} +{.compile: bearSymcPath & "aes_ct_cbcdec.c".} +{.compile: bearSymcPath & "aes_ct_cbcenc.c".} +{.compile: bearSymcPath & "aes_ct_ctr.c".} +{.compile: bearSymcPath & "aes_ct_ctrcbc.c".} +{.compile: bearSymcPath & "aes_ct_dec.c".} +{.compile: bearSymcPath & "aes_ct_enc.c".} +{.compile: bearSymcPath & "aes_pwr8.c".} +{.compile: bearSymcPath & "aes_pwr8_cbcdec.c".} +{.compile: bearSymcPath & "aes_pwr8_cbcenc.c".} +{.compile: bearSymcPath & "aes_pwr8_ctr.c".} +{.compile: bearSymcPath & "aes_pwr8_ctrcbc.c".} +{.compile: bearSymcPath & "aes_small_cbcdec.c".} +{.compile: bearSymcPath & "aes_small_cbcenc.c".} +{.compile: bearSymcPath & "aes_small_ctr.c".} +{.compile: bearSymcPath & "aes_small_ctrcbc.c".} +{.compile: bearSymcPath & "aes_small_dec.c".} +{.compile: bearSymcPath & "aes_small_enc.c".} +{.compile: bearSymcPath & "aes_x86ni.c".} +{.compile: bearSymcPath & "aes_x86ni_cbcdec.c".} +{.compile: bearSymcPath & "aes_x86ni_cbcenc.c".} +{.compile: bearSymcPath & "aes_x86ni_ctr.c".} +{.compile: bearSymcPath & "aes_x86ni_ctrcbc.c".} +{.compile: bearSymcPath & "chacha20_ct.c".} +{.compile: bearSymcPath & "chacha20_sse2.c".} +{.compile: bearSymcPath & "des_ct.c".} +{.compile: bearSymcPath & "des_ct_cbcdec.c".} +{.compile: bearSymcPath & "des_ct_cbcenc.c".} +{.compile: bearSymcPath & "des_support.c".} +{.compile: bearSymcPath & "des_tab.c".} +{.compile: bearSymcPath & "des_tab_cbcdec.c".} +{.compile: bearSymcPath & "des_tab_cbcenc.c".} +{.compile: bearSymcPath & "poly1305_ctmul.c".} +{.compile: bearSymcPath & "poly1305_ctmul32.c".} +{.compile: bearSymcPath & "poly1305_ctmulq.c".} +{.compile: bearSymcPath & "poly1305_i15.c".} + +{.compile: bearAeadPath & "ccm.c".} +{.compile: bearAeadPath & "eax.c".} +{.compile: bearAeadPath & "gcm.c".} + +{.compile: bearX509Path & "asn1enc.c".} +{.compile: bearX509Path & "encode_ec_pk8der.c".} +{.compile: bearX509Path & "encode_ec_rawder.c".} +{.compile: bearX509Path & "encode_rsa_pk8der.c".} +{.compile: bearX509Path & "encode_rsa_rawder.c".} +{.compile: bearX509Path & "skey_decoder.c".} +{.compile: bearX509Path & "x509_decoder.c".} +{.compile: bearX509Path & "x509_knownkey.c".} +{.compile: bearX509Path & "x509_minimal.c".} +{.compile: bearX509Path & "x509_minimal_full.c".} + +{.compile: bearRootPath & "settings.c".} + +# This modules must be reimplemented using Nim, because it can be changed +# freely. +{.compile: bearToolsPath & "xmem.c".} +{.compile: bearToolsPath & "vector.c".} +{.compile: bearToolsPath & "names.c".} +{.compile: bearToolsPath & "certs.c".} +{.compile: bearToolsPath & "files.c".} + +type + HashClass* {.importc: "br_hash_class", header: "bearssl_hash.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + desc* {.importc: "desc".}: uint32 + init* {.importc: "init".}: proc (ctx: ptr ptr HashClass) {.cdecl.} + update* {.importc: "update".}: proc (ctx: ptr ptr HashClass; data: pointer; len: int) {. + cdecl.} + output* {.importc: "out".}: proc (ctx: ptr ptr HashClass; dst: pointer) {.cdecl.} + state* {.importc: "state".}: proc (ctx: ptr ptr HashClass; dst: pointer): uint64 {. + cdecl.} + setState* {.importc: "set_state".}: proc (ctx: ptr ptr HashClass; stb: pointer; + count: uint64) {.cdecl.} + +template hashdesc_Id*(id: untyped): untyped = + ((uint32)(id) shl hashdesc_Id_Off) + +const + HASHDESC_ID_OFF* = 0 + HASHDESC_ID_MASK* = 0x000000FF + +template hashdesc_Out*(size: untyped): untyped = + ((uint32)(size) shl hashdesc_Out_Off) + +const + HASHDESC_OUT_OFF* = 8 + HASHDESC_OUT_MASK* = 0x0000007F + +template hashdesc_State*(size: untyped): untyped = + ((uint32)(size) shl hashdesc_State_Off) + +const + HASHDESC_STATE_OFF* = 15 + HASHDESC_STATE_MASK* = 0x000000FF + +template hashdesc_Lblen*(ls: untyped): untyped = + ((uint32)(ls) shl hashdesc_Lblen_Off) + +const + HASHDESC_LBLEN_OFF* = 23 + HASHDESC_LBLEN_MASK* = 0x0000000F + HASHDESC_MD_PADDING* = (1'u32 shl 28) + HASHDESC_MD_PADDING_128* = (1'u32 shl 29) + HASHDESC_MD_PADDING_BE* = (1'u32 shl 30) + +const + md5ID* = 1 + +const + md5SIZE* = 16 + +var md5Vtable* {.importc: "br_md5_vtable", header: "bearssl_hash.h".}: HashClass + +type + Md5Context* {.importc: "br_md5_context", header: "bearssl_hash.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr HashClass + buf* {.importc: "buf".}: array[64, cuchar] + count* {.importc: "count".}: uint64 + val* {.importc: "val".}: array[4, uint32] + + +proc md5Init*(ctx: ptr Md5Context) {.cdecl, importc: "br_md5_init", + header: "bearssl_hash.h".} + +proc md5Update*(ctx: ptr Md5Context; data: pointer; len: int) {.cdecl, + importc: "br_md5_update", header: "bearssl_hash.h".} + +proc md5Out*(ctx: ptr Md5Context; `out`: pointer) {.cdecl, importc: "br_md5_out", + header: "bearssl_hash.h".} + +proc md5State*(ctx: ptr Md5Context; `out`: pointer): uint64 {.cdecl, + importc: "br_md5_state", header: "bearssl_hash.h".} + +proc md5SetState*(ctx: ptr Md5Context; stb: pointer; count: uint64) {.cdecl, + importc: "br_md5_set_state", header: "bearssl_hash.h".} + +const + sha1ID* = 2 + +const + sha1SIZE* = 20 + +var sha1Vtable* {.importc: "br_sha1_vtable", header: "bearssl_hash.h".}: HashClass + +type + Sha1Context* {.importc: "br_sha1_context", header: "bearssl_hash.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr HashClass + buf* {.importc: "buf".}: array[64, cuchar] + count* {.importc: "count".}: uint64 + val* {.importc: "val".}: array[5, uint32] + + +proc sha1Init*(ctx: ptr Sha1Context) {.cdecl, importc: "br_sha1_init", + header: "bearssl_hash.h".} + +proc sha1Update*(ctx: ptr Sha1Context; data: pointer; len: int) {.cdecl, + importc: "br_sha1_update", header: "bearssl_hash.h".} + +proc sha1Out*(ctx: ptr Sha1Context; `out`: pointer) {.cdecl, importc: "br_sha1_out", + header: "bearssl_hash.h".} + +proc sha1State*(ctx: ptr Sha1Context; `out`: pointer): uint64 {.cdecl, + importc: "br_sha1_state", header: "bearssl_hash.h".} + +proc sha1SetState*(ctx: ptr Sha1Context; stb: pointer; count: uint64) {.cdecl, + importc: "br_sha1_set_state", header: "bearssl_hash.h".} + +const + sha224ID* = 3 + +const + sha224SIZE* = 28 + +var sha224Vtable* {.importc: "br_sha224_vtable", header: "bearssl_hash.h".}: HashClass + +type + Sha256Context* = Sha224Context + Sha224Context* {.importc: "br_sha224_context", header: "bearssl_hash.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr HashClass + buf* {.importc: "buf".}: array[64, cuchar] + count* {.importc: "count".}: uint64 + val* {.importc: "val".}: array[8, uint32] + + +proc sha224Init*(ctx: ptr Sha224Context) {.cdecl, importc: "br_sha224_init", + header: "bearssl_hash.h".} + +proc sha224Update*(ctx: ptr Sha224Context; data: pointer; len: int) {.cdecl, + importc: "br_sha224_update", header: "bearssl_hash.h".} + +proc sha224Out*(ctx: ptr Sha224Context; `out`: pointer) {.cdecl, + importc: "br_sha224_out", header: "bearssl_hash.h".} + +proc sha224State*(ctx: ptr Sha224Context; `out`: pointer): uint64 {.cdecl, + importc: "br_sha224_state", header: "bearssl_hash.h".} + +proc sha224SetState*(ctx: ptr Sha224Context; stb: pointer; count: uint64) {.cdecl, + importc: "br_sha224_set_state", header: "bearssl_hash.h".} + +const + sha256ID* = 4 + +const + sha256SIZE* = 32 + +var sha256Vtable* {.importc: "br_sha256_vtable", header: "bearssl_hash.h".}: HashClass + +proc sha256Init*(ctx: ptr Sha256Context) {.cdecl, importc: "br_sha256_init", + header: "bearssl_hash.h".} + +proc sha256Out*(ctx: ptr Sha256Context; `out`: pointer) {.cdecl, + importc: "br_sha256_out", header: "bearssl_hash.h".} +when false: + proc sha256State*(ctx: ptr Sha256Context; `out`: pointer): uint64 {.cdecl, + importc: "br_sha256_state", header: "bearssl_hash.h".} +else: + const + sha256State* = sha224State +when false: + proc sha256SetState*(ctx: ptr Sha256Context; stb: pointer; count: uint64) {.cdecl, + importc: "br_sha256_set_state", header: "bearssl_hash.h".} +else: + const + sha256SetState* = sha224SetState + +const + sha384ID* = 5 + +const + sha384SIZE* = 48 + +var sha384Vtable* {.importc: "br_sha384_vtable", header: "bearssl_hash.h".}: HashClass + +type + Sha384Context* {.importc: "br_sha384_context", header: "bearssl_hash.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr HashClass + buf* {.importc: "buf".}: array[128, cuchar] + count* {.importc: "count".}: uint64 + val* {.importc: "val".}: array[8, uint64] + + +proc sha384Init*(ctx: ptr Sha384Context) {.cdecl, importc: "br_sha384_init", + header: "bearssl_hash.h".} + +proc sha384Update*(ctx: ptr Sha384Context; data: pointer; len: int) {.cdecl, + importc: "br_sha384_update", header: "bearssl_hash.h".} + +proc sha384Out*(ctx: ptr Sha384Context; `out`: pointer) {.cdecl, + importc: "br_sha384_out", header: "bearssl_hash.h".} + +proc sha384State*(ctx: ptr Sha384Context; `out`: pointer): uint64 {.cdecl, + importc: "br_sha384_state", header: "bearssl_hash.h".} + +proc sha384SetState*(ctx: ptr Sha384Context; stb: pointer; count: uint64) {.cdecl, + importc: "br_sha384_set_state", header: "bearssl_hash.h".} + +const + sha512ID* = 6 + +const + sha512SIZE* = 64 + +var sha512Vtable* {.importc: "br_sha512_vtable", header: "bearssl_hash.h".}: HashClass + +type + Sha512Context* = Sha384Context + +proc sha512Init*(ctx: ptr Sha512Context) {.cdecl, importc: "br_sha512_init", + header: "bearssl_hash.h".} +const + sha512Update* = sha384Update + +proc sha512Out*(ctx: ptr Sha512Context; `out`: pointer) {.cdecl, + importc: "br_sha512_out", header: "bearssl_hash.h".} + +const + md5sha1ID* = 0 + +const + md5sha1SIZE* = 36 + +var md5sha1Vtable* {.importc: "br_md5sha1_vtable", header: "bearssl_hash.h".}: HashClass + +type + Md5sha1Context* {.importc: "br_md5sha1_context", header: "bearssl_hash.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr HashClass + buf* {.importc: "buf".}: array[64, cuchar] + count* {.importc: "count".}: uint64 + valMd5* {.importc: "val_md5".}: array[4, uint32] + valSha1* {.importc: "val_sha1".}: array[5, uint32] + + +proc md5sha1Init*(ctx: ptr Md5sha1Context) {.cdecl, importc: "br_md5sha1_init", + header: "bearssl_hash.h".} + +proc md5sha1Update*(ctx: ptr Md5sha1Context; data: pointer; len: int) {.cdecl, + importc: "br_md5sha1_update", header: "bearssl_hash.h".} + +proc md5sha1Out*(ctx: ptr Md5sha1Context; `out`: pointer) {.cdecl, + importc: "br_md5sha1_out", header: "bearssl_hash.h".} + +proc md5sha1State*(ctx: ptr Md5sha1Context; `out`: pointer): uint64 {.cdecl, + importc: "br_md5sha1_state", header: "bearssl_hash.h".} + +proc md5sha1SetState*(ctx: ptr Md5sha1Context; stb: pointer; count: uint64) {.cdecl, + importc: "br_md5sha1_set_state", header: "bearssl_hash.h".} + +type + HashCompatContext* {.importc: "br_hash_compat_context", header: "bearssl_hash.h", + bycopy.} = object {.union.} + vtable* {.importc: "vtable".}: ptr HashClass + md5* {.importc: "md5".}: Md5Context + sha1* {.importc: "sha1".}: Sha1Context + sha224* {.importc: "sha224".}: Sha224Context + sha256* {.importc: "sha256".}: Sha256Context + sha384* {.importc: "sha384".}: Sha384Context + sha512* {.importc: "sha512".}: Sha512Context + md5sha1* {.importc: "md5sha1".}: Md5sha1Context + + +type + MultihashContext* {.importc: "br_multihash_context", header: "bearssl_hash.h", + bycopy.} = object + buf* {.importc: "buf".}: array[128, cuchar] + count* {.importc: "count".}: uint64 + val32* {.importc: "val_32".}: array[25, uint32] + val64* {.importc: "val_64".}: array[16, uint64] + impl* {.importc: "impl".}: array[6, ptr HashClass] + + +proc multihashZero*(ctx: ptr MultihashContext) {.cdecl, importc: "br_multihash_zero", + header: "bearssl_hash.h".} + +proc multihashSetimpl*(ctx: ptr MultihashContext; id: cint; impl: ptr HashClass) {. + inline.} = + ctx.impl[id - 1] = impl + +proc multihashGetimpl*(ctx: ptr MultihashContext; id: cint): ptr HashClass {.inline, + cdecl.} = + return ctx.impl[id - 1] + +proc multihashInit*(ctx: ptr MultihashContext) {.cdecl, importc: "br_multihash_init", + header: "bearssl_hash.h".} + +proc multihashUpdate*(ctx: ptr MultihashContext; data: pointer; len: int) {.cdecl, + importc: "br_multihash_update", header: "bearssl_hash.h".} + +proc multihashOut*(ctx: ptr MultihashContext; id: cint; dst: pointer): int {.cdecl, + importc: "br_multihash_out", header: "bearssl_hash.h".} + +type + Ghash* = proc (y: pointer; h: pointer; data: pointer; len: int) {.cdecl.} + +proc ghashCtmul*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, + importc: "br_ghash_ctmul", header: "bearssl_hash.h".} + +proc ghashCtmul32*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, + importc: "br_ghash_ctmul32", header: "bearssl_hash.h".} + +proc ghashCtmul64*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, + importc: "br_ghash_ctmul64", header: "bearssl_hash.h".} + +proc ghashPclmul*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, + importc: "br_ghash_pclmul", header: "bearssl_hash.h".} + +proc ghashPclmulGet*(): Ghash {.cdecl, importc: "br_ghash_pclmul_get", + header: "bearssl_hash.h".} + +proc ghashPwr8*(y: pointer; h: pointer; data: pointer; len: int) {.cdecl, + importc: "br_ghash_pwr8", header: "bearssl_hash.h".} + +proc ghashPwr8Get*(): Ghash {.cdecl, importc: "br_ghash_pwr8_get", + header: "bearssl_hash.h".} + +type + HmacKeyContext* {.importc: "br_hmac_key_context", header: "bearssl_hmac.h", bycopy.} = object + digVtable* {.importc: "dig_vtable".}: ptr HashClass + ksi* {.importc: "ksi".}: array[64, cuchar] + kso* {.importc: "kso".}: array[64, cuchar] + + +proc hmacKeyInit*(kc: ptr HmacKeyContext; digestVtable: ptr HashClass; key: pointer; + keyLen: int) {.cdecl, importc: "br_hmac_key_init", + header: "bearssl_hmac.h".} + +type + HmacContext* {.importc: "br_hmac_context", header: "bearssl_hmac.h", bycopy.} = object + dig* {.importc: "dig".}: HashCompatContext + kso* {.importc: "kso".}: array[64, cuchar] + outLen* {.importc: "out_len".}: int + + +proc hmacInit*(ctx: ptr HmacContext; kc: ptr HmacKeyContext; outLen: int) {.cdecl, + importc: "br_hmac_init", header: "bearssl_hmac.h".} + +proc hmacSize*(ctx: ptr HmacContext): int {.inline.} = + return ctx.outLen + +proc hmacUpdate*(ctx: ptr HmacContext; data: pointer; len: int) {.cdecl, + importc: "br_hmac_update", header: "bearssl_hmac.h".} + +proc hmacOut*(ctx: ptr HmacContext; `out`: pointer): int {.cdecl, + importc: "br_hmac_out", header: "bearssl_hmac.h".} + +proc hmacOutCT*(ctx: ptr HmacContext; data: pointer; len: int; minLen: int; + maxLen: int; `out`: pointer): int {.cdecl, + importc: "br_hmac_outCT", header: "bearssl_hmac.h".} + +type + PrngClass* {.importc: "br_prng_class", header: "bearssl_rand.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + init* {.importc: "init".}: proc (ctx: ptr ptr PrngClass; params: pointer; + seed: pointer; seedLen: int) {.cdecl.} + generate* {.importc: "generate".}: proc (ctx: ptr ptr PrngClass; `out`: pointer; + len: int) {.cdecl.} + update* {.importc: "update".}: proc (ctx: ptr ptr PrngClass; seed: pointer; + seedLen: int) {.cdecl.} + + +type + HmacDrbgContext* {.importc: "br_hmac_drbg_context", header: "bearssl_rand.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr PrngClass + k* {.importc: "K".}: array[64, cuchar] + v* {.importc: "V".}: array[64, cuchar] + digestClass* {.importc: "digest_class".}: ptr HashClass + + +var hmacDrbgVtable* {.importc: "br_hmac_drbg_vtable", header: "bearssl_rand.h".}: PrngClass + +proc hmacDrbgInit*(ctx: ptr HmacDrbgContext; digestClass: ptr HashClass; seed: pointer; + seedLen: int) {.cdecl, importc: "br_hmac_drbg_init", + header: "bearssl_rand.h".} + +proc hmacDrbgGenerate*(ctx: ptr HmacDrbgContext; `out`: pointer; len: int) {.cdecl, + importc: "br_hmac_drbg_generate", header: "bearssl_rand.h".} + +proc hmacDrbgUpdate*(ctx: ptr HmacDrbgContext; seed: pointer; seedLen: int) {.cdecl, + importc: "br_hmac_drbg_update", header: "bearssl_rand.h".} + +proc hmacDrbgGetHash*(ctx: ptr HmacDrbgContext): ptr HashClass {.inline.} = + return ctx.digestClass + +type + PrngSeeder* = proc (ctx: ptr ptr PrngClass): cint {.cdecl.} + +proc prngSeederSystem*(name: cstringArray): PrngSeeder {.cdecl, + importc: "br_prng_seeder_system", header: "bearssl_rand.h".} + +type + TlsPrfSeedChunk* {.importc: "br_tls_prf_seed_chunk", header: "bearssl_prf.h", + bycopy.} = object + data* {.importc: "data".}: pointer + len* {.importc: "len".}: int + + +proc tls10Prf*(dst: pointer; len: int; secret: pointer; secretLen: int; + label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl, + importc: "br_tls10_prf", header: "bearssl_prf.h".} + +proc tls12Sha256Prf*(dst: pointer; len: int; secret: pointer; secretLen: int; + label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl, + importc: "br_tls12_sha256_prf", header: "bearssl_prf.h".} + +proc tls12Sha384Prf*(dst: pointer; len: int; secret: pointer; secretLen: int; + label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl, + importc: "br_tls12_sha384_prf", header: "bearssl_prf.h".} + +type + TlsPrfImpl* = proc (dst: pointer; len: int; secret: pointer; secretLen: int; + label: cstring; seedNum: int; seed: ptr TlsPrfSeedChunk) {.cdecl.} + +type + BlockCbcencClass* {.importc: "br_block_cbcenc_class", header: "bearssl_block.h", + bycopy.} = object + contextSize* {.importc: "context_size".}: int + blockSize* {.importc: "block_size".}: cuint + logBlockSize* {.importc: "log_block_size".}: cuint + init* {.importc: "init".}: proc (ctx: ptr ptr BlockCbcencClass; key: pointer; + keyLen: int) {.cdecl.} + run* {.importc: "run".}: proc (ctx: ptr ptr BlockCbcencClass; iv: pointer; + data: pointer; len: int) {.cdecl.} + + +type + BlockCbcdecClass* {.importc: "br_block_cbcdec_class", header: "bearssl_block.h", + bycopy.} = object + contextSize* {.importc: "context_size".}: int + blockSize* {.importc: "block_size".}: cuint + logBlockSize* {.importc: "log_block_size".}: cuint + init* {.importc: "init".}: proc (ctx: ptr ptr BlockCbcdecClass; key: pointer; + keyLen: int) {.cdecl.} + run* {.importc: "run".}: proc (ctx: ptr ptr BlockCbcdecClass; iv: pointer; + data: pointer; len: int) {.cdecl.} + + +type + BlockCtrClass* {.importc: "br_block_ctr_class", header: "bearssl_block.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + blockSize* {.importc: "block_size".}: cuint + logBlockSize* {.importc: "log_block_size".}: cuint + init* {.importc: "init".}: proc (ctx: ptr ptr BlockCtrClass; key: pointer; + keyLen: int) {.cdecl.} + run* {.importc: "run".}: proc (ctx: ptr ptr BlockCtrClass; iv: pointer; cc: uint32; + data: pointer; len: int): uint32 {.cdecl.} + + +type + BlockCtrcbcClass* {.importc: "br_block_ctrcbc_class", header: "bearssl_block.h", + bycopy.} = object + contextSize* {.importc: "context_size".}: int + blockSize* {.importc: "block_size".}: cuint + logBlockSize* {.importc: "log_block_size".}: cuint + init* {.importc: "init".}: proc (ctx: ptr ptr BlockCtrcbcClass; key: pointer; + keyLen: int) {.cdecl.} + encrypt* {.importc: "encrypt".}: proc (ctx: ptr ptr BlockCtrcbcClass; ctr: pointer; + cbcmac: pointer; data: pointer; len: int) {. + cdecl.} + decrypt* {.importc: "decrypt".}: proc (ctx: ptr ptr BlockCtrcbcClass; ctr: pointer; + cbcmac: pointer; data: pointer; len: int) {. + cdecl.} + ctr* {.importc: "ctr".}: proc (ctx: ptr ptr BlockCtrcbcClass; ctr: pointer; + data: pointer; len: int) {.cdecl.} + mac* {.importc: "mac".}: proc (ctx: ptr ptr BlockCtrcbcClass; cbcmac: pointer; + data: pointer; len: int) {.cdecl.} + + +const + aesBigBLOCK_SIZE* = 16 + +type + AesBigCbcencKeys* {.importc: "br_aes_big_cbcenc_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesBigCbcdecKeys* {.importc: "br_aes_big_cbcdec_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesBigCtrKeys* {.importc: "br_aes_big_ctr_keys", header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesBigCtrcbcKeys* {.importc: "br_aes_big_ctrcbc_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +var aesBigCbcencVtable* {.importc: "br_aes_big_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var aesBigCbcdecVtable* {.importc: "br_aes_big_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +var aesBigCtrVtable* {.importc: "br_aes_big_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass + +var aesBigCtrcbcVtable* {.importc: "br_aes_big_ctrcbc_vtable", + header: "bearssl_block.h".}: BlockCtrcbcClass + +proc aesBigCbcencInit*(ctx: ptr AesBigCbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_big_cbcenc_init", header: "bearssl_block.h".} + +proc aesBigCbcdecInit*(ctx: ptr AesBigCbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_big_cbcdec_init", header: "bearssl_block.h".} + +proc aesBigCtrInit*(ctx: ptr AesBigCtrKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_big_ctr_init", header: "bearssl_block.h".} + +proc aesBigCtrcbcInit*(ctx: ptr AesBigCtrcbcKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_big_ctrcbc_init", header: "bearssl_block.h".} + +proc aesBigCbcencRun*(ctx: ptr AesBigCbcencKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_aes_big_cbcenc_run", header: "bearssl_block.h".} + +proc aesBigCbcdecRun*(ctx: ptr AesBigCbcdecKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_aes_big_cbcdec_run", header: "bearssl_block.h".} + +proc aesBigCtrRun*(ctx: ptr AesBigCtrKeys; iv: pointer; cc: uint32; data: pointer; + len: int): uint32 {.cdecl, importc: "br_aes_big_ctr_run", + header: "bearssl_block.h".} + +proc aesBigCtrcbcEncrypt*(ctx: ptr AesBigCtrcbcKeys; ctr: pointer; cbcmac: pointer; + data: pointer; len: int) {.cdecl, + importc: "br_aes_big_ctrcbc_encrypt", header: "bearssl_block.h".} + +proc aesBigCtrcbcDecrypt*(ctx: ptr AesBigCtrcbcKeys; ctr: pointer; cbcmac: pointer; + data: pointer; len: int) {.cdecl, + importc: "br_aes_big_ctrcbc_decrypt", header: "bearssl_block.h".} + +proc aesBigCtrcbcCtr*(ctx: ptr AesBigCtrcbcKeys; ctr: pointer; data: pointer; len: int) {. + cdecl, importc: "br_aes_big_ctrcbc_ctr", header: "bearssl_block.h".} + +proc aesBigCtrcbcMac*(ctx: ptr AesBigCtrcbcKeys; cbcmac: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_big_ctrcbc_mac", + header: "bearssl_block.h".} + +const + aesSmallBLOCK_SIZE* = 16 + +type + AesSmallCbcencKeys* {.importc: "br_aes_small_cbcenc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesSmallCbcdecKeys* {.importc: "br_aes_small_cbcdec_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesSmallCtrKeys* {.importc: "br_aes_small_ctr_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesSmallCtrcbcKeys* {.importc: "br_aes_small_ctrcbc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +var aesSmallCbcencVtable* {.importc: "br_aes_small_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var aesSmallCbcdecVtable* {.importc: "br_aes_small_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +var aesSmallCtrVtable* {.importc: "br_aes_small_ctr_vtable", + header: "bearssl_block.h".}: BlockCtrClass + +var aesSmallCtrcbcVtable* {.importc: "br_aes_small_ctrcbc_vtable", + header: "bearssl_block.h".}: BlockCtrcbcClass + +proc aesSmallCbcencInit*(ctx: ptr AesSmallCbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_small_cbcenc_init", header: "bearssl_block.h".} + +proc aesSmallCbcdecInit*(ctx: ptr AesSmallCbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_small_cbcdec_init", header: "bearssl_block.h".} + +proc aesSmallCtrInit*(ctx: ptr AesSmallCtrKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_small_ctr_init", header: "bearssl_block.h".} + +proc aesSmallCtrcbcInit*(ctx: ptr AesSmallCtrcbcKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_small_ctrcbc_init", header: "bearssl_block.h".} + +proc aesSmallCbcencRun*(ctx: ptr AesSmallCbcencKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_small_cbcenc_run", + header: "bearssl_block.h".} + +proc aesSmallCbcdecRun*(ctx: ptr AesSmallCbcdecKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_small_cbcdec_run", + header: "bearssl_block.h".} + +proc aesSmallCtrRun*(ctx: ptr AesSmallCtrKeys; iv: pointer; cc: uint32; data: pointer; + len: int): uint32 {.cdecl, importc: "br_aes_small_ctr_run", + header: "bearssl_block.h".} + +proc aesSmallCtrcbcEncrypt*(ctx: ptr AesSmallCtrcbcKeys; ctr: pointer; + cbcmac: pointer; data: pointer; len: int) {.cdecl, + importc: "br_aes_small_ctrcbc_encrypt", header: "bearssl_block.h".} + +proc aesSmallCtrcbcDecrypt*(ctx: ptr AesSmallCtrcbcKeys; ctr: pointer; + cbcmac: pointer; data: pointer; len: int) {.cdecl, + importc: "br_aes_small_ctrcbc_decrypt", header: "bearssl_block.h".} + +proc aesSmallCtrcbcCtr*(ctx: ptr AesSmallCtrcbcKeys; ctr: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_small_ctrcbc_ctr", + header: "bearssl_block.h".} + +proc aesSmallCtrcbcMac*(ctx: ptr AesSmallCtrcbcKeys; cbcmac: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_small_ctrcbc_mac", + header: "bearssl_block.h".} + +const + aesCtBLOCK_SIZE* = 16 + +type + AesCtCbcencKeys* {.importc: "br_aes_ct_cbcenc_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesCtCbcdecKeys* {.importc: "br_aes_ct_cbcdec_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesCtCtrKeys* {.importc: "br_aes_ct_ctr_keys", header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesCtCtrcbcKeys* {.importc: "br_aes_ct_ctrcbc_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass + skey* {.importc: "skey".}: array[60, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +var aesCtCbcencVtable* {.importc: "br_aes_ct_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var aesCtCbcdecVtable* {.importc: "br_aes_ct_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +var aesCtCtrVtable* {.importc: "br_aes_ct_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass + +var aesCtCtrcbcVtable* {.importc: "br_aes_ct_ctrcbc_vtable", + header: "bearssl_block.h".}: BlockCtrcbcClass + +proc aesCtCbcencInit*(ctx: ptr AesCtCbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct_cbcenc_init", header: "bearssl_block.h".} + +proc aesCtCbcdecInit*(ctx: ptr AesCtCbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct_cbcdec_init", header: "bearssl_block.h".} + +proc aesCtCtrInit*(ctx: ptr AesCtCtrKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct_ctr_init", header: "bearssl_block.h".} + +proc aesCtCtrcbcInit*(ctx: ptr AesCtCtrcbcKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct_ctrcbc_init", header: "bearssl_block.h".} + +proc aesCtCbcencRun*(ctx: ptr AesCtCbcencKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_aes_ct_cbcenc_run", header: "bearssl_block.h".} + +proc aesCtCbcdecRun*(ctx: ptr AesCtCbcdecKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_aes_ct_cbcdec_run", header: "bearssl_block.h".} + +proc aesCtCtrRun*(ctx: ptr AesCtCtrKeys; iv: pointer; cc: uint32; data: pointer; + len: int): uint32 {.cdecl, importc: "br_aes_ct_ctr_run", + header: "bearssl_block.h".} + +proc aesCtCtrcbcEncrypt*(ctx: ptr AesCtCtrcbcKeys; ctr: pointer; cbcmac: pointer; + data: pointer; len: int) {.cdecl, + importc: "br_aes_ct_ctrcbc_encrypt", header: "bearssl_block.h".} + +proc aesCtCtrcbcDecrypt*(ctx: ptr AesCtCtrcbcKeys; ctr: pointer; cbcmac: pointer; + data: pointer; len: int) {.cdecl, + importc: "br_aes_ct_ctrcbc_decrypt", header: "bearssl_block.h".} + +proc aesCtCtrcbcCtr*(ctx: ptr AesCtCtrcbcKeys; ctr: pointer; data: pointer; len: int) {. + cdecl, importc: "br_aes_ct_ctrcbc_ctr", header: "bearssl_block.h".} + +proc aesCtCtrcbcMac*(ctx: ptr AesCtCtrcbcKeys; cbcmac: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_ct_ctrcbc_mac", + header: "bearssl_block.h".} + +const + aesCt64BLOCK_SIZE* = 16 + +type + AesCt64CbcencKeys* {.importc: "br_aes_ct64_cbcenc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: array[30, uint64] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesCt64CbcdecKeys* {.importc: "br_aes_ct64_cbcdec_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: array[30, uint64] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesCt64CtrKeys* {.importc: "br_aes_ct64_ctr_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrClass + skey* {.importc: "skey".}: array[30, uint64] + numRounds* {.importc: "num_rounds".}: cuint + + +type + AesCt64CtrcbcKeys* {.importc: "br_aes_ct64_ctrcbc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass + skey* {.importc: "skey".}: array[30, uint64] + numRounds* {.importc: "num_rounds".}: cuint + + +var aesCt64CbcencVtable* {.importc: "br_aes_ct64_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var aesCt64CbcdecVtable* {.importc: "br_aes_ct64_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +var aesCt64CtrVtable* {.importc: "br_aes_ct64_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass + +var aesCt64CtrcbcVtable* {.importc: "br_aes_ct64_ctrcbc_vtable", + header: "bearssl_block.h".}: BlockCtrcbcClass + +proc aesCt64CbcencInit*(ctx: ptr AesCt64CbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct64_cbcenc_init", header: "bearssl_block.h".} + +proc aesCt64CbcdecInit*(ctx: ptr AesCt64CbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct64_cbcdec_init", header: "bearssl_block.h".} + +proc aesCt64CtrInit*(ctx: ptr AesCt64CtrKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct64_ctr_init", header: "bearssl_block.h".} + +proc aesCt64CtrcbcInit*(ctx: ptr AesCt64CtrcbcKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_ct64_ctrcbc_init", header: "bearssl_block.h".} + +proc aesCt64CbcencRun*(ctx: ptr AesCt64CbcencKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_ct64_cbcenc_run", + header: "bearssl_block.h".} + +proc aesCt64CbcdecRun*(ctx: ptr AesCt64CbcdecKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_ct64_cbcdec_run", + header: "bearssl_block.h".} + +proc aesCt64CtrRun*(ctx: ptr AesCt64CtrKeys; iv: pointer; cc: uint32; data: pointer; + len: int): uint32 {.cdecl, importc: "br_aes_ct64_ctr_run", + header: "bearssl_block.h".} + +proc aesCt64CtrcbcEncrypt*(ctx: ptr AesCt64CtrcbcKeys; ctr: pointer; cbcmac: pointer; + data: pointer; len: int) {.cdecl, + importc: "br_aes_ct64_ctrcbc_encrypt", header: "bearssl_block.h".} + +proc aesCt64CtrcbcDecrypt*(ctx: ptr AesCt64CtrcbcKeys; ctr: pointer; cbcmac: pointer; + data: pointer; len: int) {.cdecl, + importc: "br_aes_ct64_ctrcbc_decrypt", header: "bearssl_block.h".} + +proc aesCt64CtrcbcCtr*(ctx: ptr AesCt64CtrcbcKeys; ctr: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_ct64_ctrcbc_ctr", + header: "bearssl_block.h".} + +proc aesCt64CtrcbcMac*(ctx: ptr AesCt64CtrcbcKeys; cbcmac: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_ct64_ctrcbc_mac", + header: "bearssl_block.h".} + +const + aesX86niBLOCK_SIZE* = 16 + +type + INNER_C_UNION_1159666335* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesX86niCbcencKeys* {.importc: "br_aes_x86ni_cbcenc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: INNER_C_UNION_1159666335 + numRounds* {.importc: "num_rounds".}: cuint + + +type + INNER_C_UNION_3830826214* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesX86niCbcdecKeys* {.importc: "br_aes_x86ni_cbcdec_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: INNER_C_UNION_3830826214 + numRounds* {.importc: "num_rounds".}: cuint + + +type + INNER_C_UNION_1063979105* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesX86niCtrKeys* {.importc: "br_aes_x86ni_ctr_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrClass + skey* {.importc: "skey".}: INNER_C_UNION_1063979105 + numRounds* {.importc: "num_rounds".}: cuint + + +type + INNER_C_UNION_220758887* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesX86niCtrcbcKeys* {.importc: "br_aes_x86ni_ctrcbc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass + skey* {.importc: "skey".}: INNER_C_UNION_220758887 + numRounds* {.importc: "num_rounds".}: cuint + + +var aesX86niCbcencVtable* {.importc: "br_aes_x86ni_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var aesX86niCbcdecVtable* {.importc: "br_aes_x86ni_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +var aesX86niCtrVtable* {.importc: "br_aes_x86ni_ctr_vtable", + header: "bearssl_block.h".}: BlockCtrClass + +var aesX86niCtrcbcVtable* {.importc: "br_aes_x86ni_ctrcbc_vtable", + header: "bearssl_block.h".}: BlockCtrcbcClass + +proc aesX86niCbcencInit*(ctx: ptr AesX86niCbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_x86ni_cbcenc_init", header: "bearssl_block.h".} + +proc aesX86niCbcdecInit*(ctx: ptr AesX86niCbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_x86ni_cbcdec_init", header: "bearssl_block.h".} + +proc aesX86niCtrInit*(ctx: ptr AesX86niCtrKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_x86ni_ctr_init", header: "bearssl_block.h".} + +proc aesX86niCtrcbcInit*(ctx: ptr AesX86niCtrcbcKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_x86ni_ctrcbc_init", header: "bearssl_block.h".} + +proc aesX86niCbcencRun*(ctx: ptr AesX86niCbcencKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_x86ni_cbcenc_run", + header: "bearssl_block.h".} + +proc aesX86niCbcdecRun*(ctx: ptr AesX86niCbcdecKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_x86ni_cbcdec_run", + header: "bearssl_block.h".} + +proc aesX86niCtrRun*(ctx: ptr AesX86niCtrKeys; iv: pointer; cc: uint32; data: pointer; + len: int): uint32 {.cdecl, importc: "br_aes_x86ni_ctr_run", + header: "bearssl_block.h".} + +proc aesX86niCtrcbcEncrypt*(ctx: ptr AesX86niCtrcbcKeys; ctr: pointer; + cbcmac: pointer; data: pointer; len: int) {.cdecl, + importc: "br_aes_x86ni_ctrcbc_encrypt", header: "bearssl_block.h".} + +proc aesX86niCtrcbcDecrypt*(ctx: ptr AesX86niCtrcbcKeys; ctr: pointer; + cbcmac: pointer; data: pointer; len: int) {.cdecl, + importc: "br_aes_x86ni_ctrcbc_decrypt", header: "bearssl_block.h".} + +proc aesX86niCtrcbcCtr*(ctx: ptr AesX86niCtrcbcKeys; ctr: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_x86ni_ctrcbc_ctr", + header: "bearssl_block.h".} + +proc aesX86niCtrcbcMac*(ctx: ptr AesX86niCtrcbcKeys; cbcmac: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_x86ni_ctrcbc_mac", + header: "bearssl_block.h".} + +proc aesX86niCbcencGetVtable*(): ptr BlockCbcencClass {.cdecl, + importc: "br_aes_x86ni_cbcenc_get_vtable", header: "bearssl_block.h".} + +proc aesX86niCbcdecGetVtable*(): ptr BlockCbcdecClass {.cdecl, + importc: "br_aes_x86ni_cbcdec_get_vtable", header: "bearssl_block.h".} + +proc aesX86niCtrGetVtable*(): ptr BlockCtrClass {.cdecl, + importc: "br_aes_x86ni_ctr_get_vtable", header: "bearssl_block.h".} + +proc aesX86niCtrcbcGetVtable*(): ptr BlockCtrcbcClass {.cdecl, + importc: "br_aes_x86ni_ctrcbc_get_vtable", header: "bearssl_block.h".} + +const + aesPwr8BLOCK_SIZE* = 16 + +type + INNER_C_UNION_2338321047* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesPwr8CbcencKeys* {.importc: "br_aes_pwr8_cbcenc_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: INNER_C_UNION_2338321047 + numRounds* {.importc: "num_rounds".}: cuint + + +type + INNER_C_UNION_714513630* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesPwr8CbcdecKeys* {.importc: "br_aes_pwr8_cbcdec_keys", + header: "bearssl_block.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: INNER_C_UNION_714513630 + numRounds* {.importc: "num_rounds".}: cuint + + +type + INNER_C_UNION_4166260708* {.importc: "no_name", header: "bearssl_block.h", bycopy.} = object {. + union.} + skni* {.importc: "skni".}: array[16 * 15, cuchar] + + AesPwr8CtrKeys* {.importc: "br_aes_pwr8_ctr_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCtrClass + skey* {.importc: "skey".}: INNER_C_UNION_4166260708 + numRounds* {.importc: "num_rounds".}: cuint + + +var aesPwr8CbcencVtable* {.importc: "br_aes_pwr8_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var aesPwr8CbcdecVtable* {.importc: "br_aes_pwr8_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +var aesPwr8CtrVtable* {.importc: "br_aes_pwr8_ctr_vtable", header: "bearssl_block.h".}: BlockCtrClass + +proc aesPwr8CbcencInit*(ctx: ptr AesPwr8CbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_pwr8_cbcenc_init", header: "bearssl_block.h".} + +proc aesPwr8CbcdecInit*(ctx: ptr AesPwr8CbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_pwr8_cbcdec_init", header: "bearssl_block.h".} + +proc aesPwr8CtrInit*(ctx: ptr AesPwr8CtrKeys; key: pointer; len: int) {.cdecl, + importc: "br_aes_pwr8_ctr_init", header: "bearssl_block.h".} + +proc aesPwr8CbcencRun*(ctx: ptr AesPwr8CbcencKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_pwr8_cbcenc_run", + header: "bearssl_block.h".} + +proc aesPwr8CbcdecRun*(ctx: ptr AesPwr8CbcdecKeys; iv: pointer; data: pointer; + len: int) {.cdecl, importc: "br_aes_pwr8_cbcdec_run", + header: "bearssl_block.h".} + +proc aesPwr8CtrRun*(ctx: ptr AesPwr8CtrKeys; iv: pointer; cc: uint32; data: pointer; + len: int): uint32 {.cdecl, importc: "br_aes_pwr8_ctr_run", + header: "bearssl_block.h".} + +proc aesPwr8CbcencGetVtable*(): ptr BlockCbcencClass {.cdecl, + importc: "br_aes_pwr8_cbcenc_get_vtable", header: "bearssl_block.h".} + +proc aesPwr8CbcdecGetVtable*(): ptr BlockCbcdecClass {.cdecl, + importc: "br_aes_pwr8_cbcdec_get_vtable", header: "bearssl_block.h".} + +proc aesPwr8CtrGetVtable*(): ptr BlockCtrClass {.cdecl, + importc: "br_aes_pwr8_ctr_get_vtable", header: "bearssl_block.h".} + +type + AesGenCbcencKeys* {.importc: "br_aes_gen_cbcenc_keys", header: "bearssl_block.h", + bycopy.} = object {.union.} + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + cBig* {.importc: "c_big".}: AesBigCbcencKeys + cSmall* {.importc: "c_small".}: AesSmallCbcencKeys + cCt* {.importc: "c_ct".}: AesCtCbcencKeys + cCt64* {.importc: "c_ct64".}: AesCt64CbcencKeys + cX86ni* {.importc: "c_x86ni".}: AesX86niCbcencKeys + cPwr8* {.importc: "c_pwr8".}: AesPwr8CbcencKeys + + +type + AesGenCbcdecKeys* {.importc: "br_aes_gen_cbcdec_keys", header: "bearssl_block.h", + bycopy.} = object {.union.} + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + cBig* {.importc: "c_big".}: AesBigCbcdecKeys + cSmall* {.importc: "c_small".}: AesSmallCbcdecKeys + cCt* {.importc: "c_ct".}: AesCtCbcdecKeys + cCt64* {.importc: "c_ct64".}: AesCt64CbcdecKeys + cX86ni* {.importc: "c_x86ni".}: AesX86niCbcdecKeys + cPwr8* {.importc: "c_pwr8".}: AesPwr8CbcdecKeys + + +type + AesGenCtrKeys* {.importc: "br_aes_gen_ctr_keys", header: "bearssl_block.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr BlockCtrClass + cBig* {.importc: "c_big".}: AesBigCtrKeys + cSmall* {.importc: "c_small".}: AesSmallCtrKeys + cCt* {.importc: "c_ct".}: AesCtCtrKeys + cCt64* {.importc: "c_ct64".}: AesCt64CtrKeys + cX86ni* {.importc: "c_x86ni".}: AesX86niCtrKeys + cPwr8* {.importc: "c_pwr8".}: AesPwr8CtrKeys + + +type + AesGenCtrcbcKeys* {.importc: "br_aes_gen_ctrcbc_keys", header: "bearssl_block.h", + bycopy.} = object {.union.} + vtable* {.importc: "vtable".}: ptr BlockCtrcbcClass + cBig* {.importc: "c_big".}: AesBigCtrcbcKeys + cSmall* {.importc: "c_small".}: AesSmallCtrcbcKeys + cCt* {.importc: "c_ct".}: AesCtCtrcbcKeys + cCt64* {.importc: "c_ct64".}: AesCt64CtrcbcKeys + + +const + desTabBLOCK_SIZE* = 8 + +type + DesTabCbcencKeys* {.importc: "br_des_tab_cbcenc_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: array[96, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + DesTabCbcdecKeys* {.importc: "br_des_tab_cbcdec_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: array[96, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +var desTabCbcencVtable* {.importc: "br_des_tab_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var desTabCbcdecVtable* {.importc: "br_des_tab_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +proc desTabCbcencInit*(ctx: ptr DesTabCbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_des_tab_cbcenc_init", header: "bearssl_block.h".} + +proc desTabCbcdecInit*(ctx: ptr DesTabCbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_des_tab_cbcdec_init", header: "bearssl_block.h".} + +proc desTabCbcencRun*(ctx: ptr DesTabCbcencKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_des_tab_cbcenc_run", header: "bearssl_block.h".} + +proc desTabCbcdecRun*(ctx: ptr DesTabCbcdecKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_des_tab_cbcdec_run", header: "bearssl_block.h".} + +const + desCtBLOCK_SIZE* = 8 + +type + DesCtCbcencKeys* {.importc: "br_des_ct_cbcenc_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + skey* {.importc: "skey".}: array[96, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +type + DesCtCbcdecKeys* {.importc: "br_des_ct_cbcdec_keys", header: "bearssl_block.h", + bycopy.} = object + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + skey* {.importc: "skey".}: array[96, uint32] + numRounds* {.importc: "num_rounds".}: cuint + + +var desCtCbcencVtable* {.importc: "br_des_ct_cbcenc_vtable", + header: "bearssl_block.h".}: BlockCbcencClass + +var desCtCbcdecVtable* {.importc: "br_des_ct_cbcdec_vtable", + header: "bearssl_block.h".}: BlockCbcdecClass + +proc desCtCbcencInit*(ctx: ptr DesCtCbcencKeys; key: pointer; len: int) {.cdecl, + importc: "br_des_ct_cbcenc_init", header: "bearssl_block.h".} + +proc desCtCbcdecInit*(ctx: ptr DesCtCbcdecKeys; key: pointer; len: int) {.cdecl, + importc: "br_des_ct_cbcdec_init", header: "bearssl_block.h".} + +proc desCtCbcencRun*(ctx: ptr DesCtCbcencKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_des_ct_cbcenc_run", header: "bearssl_block.h".} + +proc desCtCbcdecRun*(ctx: ptr DesCtCbcdecKeys; iv: pointer; data: pointer; len: int) {. + cdecl, importc: "br_des_ct_cbcdec_run", header: "bearssl_block.h".} + +type + DesGenCbcencKeys* {.importc: "br_des_gen_cbcenc_keys", header: "bearssl_block.h", + bycopy.} = object {.union.} + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + tab* {.importc: "tab".}: DesTabCbcencKeys + ct* {.importc: "ct".}: DesCtCbcencKeys + + +type + DesGenCbcdecKeys* {.importc: "br_des_gen_cbcdec_keys", header: "bearssl_block.h", + bycopy.} = object {.union.} + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + cTab* {.importc: "c_tab".}: DesTabCbcdecKeys + cCt* {.importc: "c_ct".}: DesCtCbcdecKeys + + +type + Chacha20Run* = proc (key: pointer; iv: pointer; cc: uint32; data: pointer; len: int): uint32 {. + cdecl.} + +proc chacha20CtRun*(key: pointer; iv: pointer; cc: uint32; data: pointer; len: int): uint32 {. + cdecl, importc: "br_chacha20_ct_run", header: "bearssl_block.h".} + +proc chacha20Sse2Run*(key: pointer; iv: pointer; cc: uint32; data: pointer; len: int): uint32 {. + cdecl, importc: "br_chacha20_sse2_run", header: "bearssl_block.h".} + +proc chacha20Sse2Get*(): Chacha20Run {.cdecl, importc: "br_chacha20_sse2_get", + header: "bearssl_block.h".} + +type + Poly1305Run* = proc (key: pointer; iv: pointer; data: pointer; len: int; aad: pointer; + aadLen: int; tag: pointer; ichacha: Chacha20Run; encrypt: cint) {. + cdecl.} + +proc poly1305CtmulRun*(key: pointer; iv: pointer; data: pointer; len: int; + aad: pointer; aadLen: int; tag: pointer; ichacha: Chacha20Run; + encrypt: cint) {.cdecl, importc: "br_poly1305_ctmul_run", + header: "bearssl_block.h".} + +proc poly1305Ctmul32Run*(key: pointer; iv: pointer; data: pointer; len: int; + aad: pointer; aadLen: int; tag: pointer; + ichacha: Chacha20Run; encrypt: cint) {.cdecl, + importc: "br_poly1305_ctmul32_run", header: "bearssl_block.h".} + +proc poly1305I15Run*(key: pointer; iv: pointer; data: pointer; len: int; aad: pointer; + aadLen: int; tag: pointer; ichacha: Chacha20Run; encrypt: cint) {. + cdecl, importc: "br_poly1305_i15_run", header: "bearssl_block.h".} + +proc poly1305CtmulqRun*(key: pointer; iv: pointer; data: pointer; len: int; + aad: pointer; aadLen: int; tag: pointer; + ichacha: Chacha20Run; encrypt: cint) {.cdecl, + importc: "br_poly1305_ctmulq_run", header: "bearssl_block.h".} + +proc poly1305CtmulqGet*(): Poly1305Run {.cdecl, importc: "br_poly1305_ctmulq_get", + header: "bearssl_block.h".} + +type + AeadClass* {.importc: "br_aead_class", header: "bearssl_aead.h", bycopy.} = object + tagSize* {.importc: "tag_size".}: int + reset* {.importc: "reset".}: proc (cc: ptr ptr AeadClass; iv: pointer; len: int) {. + cdecl.} + aadInject* {.importc: "aad_inject".}: proc (cc: ptr ptr AeadClass; data: pointer; + len: int) {.cdecl.} + flip* {.importc: "flip".}: proc (cc: ptr ptr AeadClass) {.cdecl.} + run* {.importc: "run".}: proc (cc: ptr ptr AeadClass; encrypt: cint; data: pointer; + len: int) {.cdecl.} + getTag* {.importc: "get_tag".}: proc (cc: ptr ptr AeadClass; tag: pointer) {.cdecl.} + checkTag* {.importc: "check_tag".}: proc (cc: ptr ptr AeadClass; tag: pointer): uint32 {. + cdecl.} + getTagTrunc* {.importc: "get_tag_trunc".}: proc (cc: ptr ptr AeadClass; + tag: pointer; len: int) {.cdecl.} + checkTagTrunc* {.importc: "check_tag_trunc".}: proc (cc: ptr ptr AeadClass; + tag: pointer; len: int): uint32 {.cdecl.} + + +type + GcmContext* {.importc: "br_gcm_context", header: "bearssl_aead.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr AeadClass + bctx* {.importc: "bctx".}: ptr ptr BlockCtrClass + gh* {.importc: "gh".}: Ghash + h* {.importc: "h".}: array[16, cuchar] + j01* {.importc: "j0_1".}: array[12, cuchar] + buf* {.importc: "buf".}: array[16, cuchar] + y* {.importc: "y".}: array[16, cuchar] + j02* {.importc: "j0_2".}: uint32 + jc* {.importc: "jc".}: uint32 + countAad* {.importc: "count_aad".}: uint64 + countCtr* {.importc: "count_ctr".}: uint64 + + +proc gcmInit*(ctx: ptr GcmContext; bctx: ptr ptr BlockCtrClass; gh: Ghash) {.cdecl, + importc: "br_gcm_init", header: "bearssl_aead.h".} + +proc gcmReset*(ctx: ptr GcmContext; iv: pointer; len: int) {.cdecl, + importc: "br_gcm_reset", header: "bearssl_aead.h".} + +proc gcmAadInject*(ctx: ptr GcmContext; data: pointer; len: int) {.cdecl, + importc: "br_gcm_aad_inject", header: "bearssl_aead.h".} + +proc gcmFlip*(ctx: ptr GcmContext) {.cdecl, importc: "br_gcm_flip", + header: "bearssl_aead.h".} + +proc gcmRun*(ctx: ptr GcmContext; encrypt: cint; data: pointer; len: int) {.cdecl, + importc: "br_gcm_run", header: "bearssl_aead.h".} + +proc gcmGetTag*(ctx: ptr GcmContext; tag: pointer) {.cdecl, importc: "br_gcm_get_tag", + header: "bearssl_aead.h".} + +proc gcmCheckTag*(ctx: ptr GcmContext; tag: pointer): uint32 {.cdecl, + importc: "br_gcm_check_tag", header: "bearssl_aead.h".} + +proc gcmGetTagTrunc*(ctx: ptr GcmContext; tag: pointer; len: int) {.cdecl, + importc: "br_gcm_get_tag_trunc", header: "bearssl_aead.h".} + +proc gcmCheckTagTrunc*(ctx: ptr GcmContext; tag: pointer; len: int): uint32 {.cdecl, + importc: "br_gcm_check_tag_trunc", header: "bearssl_aead.h".} + +var gcmVtable* {.importc: "br_gcm_vtable", header: "bearssl_aead.h".}: AeadClass + +type + EaxContext* {.importc: "br_eax_context", header: "bearssl_aead.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr AeadClass + bctx* {.importc: "bctx".}: ptr ptr BlockCtrcbcClass + l2* {.importc: "L2".}: array[16, cuchar] + l4* {.importc: "L4".}: array[16, cuchar] + nonce* {.importc: "nonce".}: array[16, cuchar] + head* {.importc: "head".}: array[16, cuchar] + ctr* {.importc: "ctr".}: array[16, cuchar] + cbcmac* {.importc: "cbcmac".}: array[16, cuchar] + buf* {.importc: "buf".}: array[16, cuchar] + `ptr`* {.importc: "ptr".}: int + + +type + EaxState* {.importc: "br_eax_state", header: "bearssl_aead.h", bycopy.} = object + st* {.importc: "st".}: array[3, array[16, cuchar]] + + +proc eaxInit*(ctx: ptr EaxContext; bctx: ptr ptr BlockCtrcbcClass) {.cdecl, + importc: "br_eax_init", header: "bearssl_aead.h".} + +proc eaxCapture*(ctx: ptr EaxContext; st: ptr EaxState) {.cdecl, + importc: "br_eax_capture", header: "bearssl_aead.h".} + +proc eaxReset*(ctx: ptr EaxContext; nonce: pointer; len: int) {.cdecl, + importc: "br_eax_reset", header: "bearssl_aead.h".} + +proc eaxResetPreAad*(ctx: ptr EaxContext; st: ptr EaxState; nonce: pointer; len: int) {. + cdecl, importc: "br_eax_reset_pre_aad", header: "bearssl_aead.h".} + +proc eaxResetPostAad*(ctx: ptr EaxContext; st: ptr EaxState; nonce: pointer; len: int) {. + cdecl, importc: "br_eax_reset_post_aad", header: "bearssl_aead.h".} + +proc eaxAadInject*(ctx: ptr EaxContext; data: pointer; len: int) {.cdecl, + importc: "br_eax_aad_inject", header: "bearssl_aead.h".} + +proc eaxFlip*(ctx: ptr EaxContext) {.cdecl, importc: "br_eax_flip", + header: "bearssl_aead.h".} + +proc eaxGetAadMac*(ctx: ptr EaxContext; st: ptr EaxState) {.inline.} = + copyMem(unsafeAddr st.st[1], unsafeAddr ctx.head, sizeof(ctx.head)) + +proc eaxRun*(ctx: ptr EaxContext; encrypt: cint; data: pointer; len: int) {.cdecl, + importc: "br_eax_run", header: "bearssl_aead.h".} + +proc eaxGetTag*(ctx: ptr EaxContext; tag: pointer) {.cdecl, importc: "br_eax_get_tag", + header: "bearssl_aead.h".} + +proc eaxCheckTag*(ctx: ptr EaxContext; tag: pointer): uint32 {.cdecl, + importc: "br_eax_check_tag", header: "bearssl_aead.h".} + +proc eaxGetTagTrunc*(ctx: ptr EaxContext; tag: pointer; len: int) {.cdecl, + importc: "br_eax_get_tag_trunc", header: "bearssl_aead.h".} + +proc eaxCheckTagTrunc*(ctx: ptr EaxContext; tag: pointer; len: int): uint32 {.cdecl, + importc: "br_eax_check_tag_trunc", header: "bearssl_aead.h".} + +var eaxVtable* {.importc: "br_eax_vtable", header: "bearssl_aead.h".}: AeadClass + +type + CcmContext* {.importc: "br_ccm_context", header: "bearssl_aead.h", bycopy.} = object + bctx* {.importc: "bctx".}: ptr ptr BlockCtrcbcClass + ctr* {.importc: "ctr".}: array[16, cuchar] + cbcmac* {.importc: "cbcmac".}: array[16, cuchar] + tagmask* {.importc: "tagmask".}: array[16, cuchar] + buf* {.importc: "buf".}: array[16, cuchar] + `ptr`* {.importc: "ptr".}: int + tagLen* {.importc: "tag_len".}: int + + +proc ccmInit*(ctx: ptr CcmContext; bctx: ptr ptr BlockCtrcbcClass) {.cdecl, + importc: "br_ccm_init", header: "bearssl_aead.h".} + +proc ccmReset*(ctx: ptr CcmContext; nonce: pointer; nonceLen: int; aadLen: uint64; + dataLen: uint64; tagLen: int): cint {.cdecl, importc: "br_ccm_reset", + header: "bearssl_aead.h".} + +proc ccmAadInject*(ctx: ptr CcmContext; data: pointer; len: int) {.cdecl, + importc: "br_ccm_aad_inject", header: "bearssl_aead.h".} + +proc ccmFlip*(ctx: ptr CcmContext) {.cdecl, importc: "br_ccm_flip", + header: "bearssl_aead.h".} + +proc ccmRun*(ctx: ptr CcmContext; encrypt: cint; data: pointer; len: int) {.cdecl, + importc: "br_ccm_run", header: "bearssl_aead.h".} + +proc ccmGetTag*(ctx: ptr CcmContext; tag: pointer): int {.cdecl, + importc: "br_ccm_get_tag", header: "bearssl_aead.h".} + +proc ccmCheckTag*(ctx: ptr CcmContext; tag: pointer): uint32 {.cdecl, + importc: "br_ccm_check_tag", header: "bearssl_aead.h".} + +type + RsaPublicKey* {.importc: "br_rsa_public_key", header: "bearssl_rsa.h", bycopy.} = object + n* {.importc: "n".}: ptr cuchar + nlen* {.importc: "nlen".}: int + e* {.importc: "e".}: ptr cuchar + elen* {.importc: "elen".}: int + + +type + RsaPrivateKey* {.importc: "br_rsa_private_key", header: "bearssl_rsa.h", bycopy.} = object + nBitlen* {.importc: "n_bitlen".}: uint32 + p* {.importc: "p".}: ptr cuchar + plen* {.importc: "plen".}: int + q* {.importc: "q".}: ptr cuchar + qlen* {.importc: "qlen".}: int + dp* {.importc: "dp".}: ptr cuchar + dplen* {.importc: "dplen".}: int + dq* {.importc: "dq".}: ptr cuchar + dqlen* {.importc: "dqlen".}: int + iq* {.importc: "iq".}: ptr cuchar + iqlen* {.importc: "iqlen".}: int + + +type + RsaPublic* = proc (x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl.} + +type + RsaPkcs1Vrfy* = proc (x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; + pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl.} + +type + RsaPrivate* = proc (x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl.} + +type + RsaPkcs1Sign* = proc (hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; + sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl.} + +const + HASH_OID_SHA1* = (("\x05+\x0E\x03\x02\x1A")) + +const + HASH_OID_SHA224* = (("\t`\x86H\x01e\x03\x04\x02\x04")) + +const + HASH_OID_SHA256* = (("\t`\x86H\x01e\x03\x04\x02\x01")) + +const + HASH_OID_SHA384* = (("\t`\x86H\x01e\x03\x04\x02\x02")) + +const + HASH_OID_SHA512* = (("\t`\x86H\x01e\x03\x04\x02\x03")) + +proc rsaI32Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, + importc: "br_rsa_i32_public", header: "bearssl_rsa.h".} + +proc rsaI32Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; + pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i32_pkcs1_vrfy", header: "bearssl_rsa.h".} + +proc rsaI32Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, + importc: "br_rsa_i32_private", header: "bearssl_rsa.h".} + +proc rsaI32Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; + sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i32_pkcs1_sign", header: "bearssl_rsa.h".} + +proc rsaI31Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, + importc: "br_rsa_i31_public", header: "bearssl_rsa.h".} + +proc rsaI31Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; + pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i31_pkcs1_vrfy", header: "bearssl_rsa.h".} + +proc rsaI31Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, + importc: "br_rsa_i31_private", header: "bearssl_rsa.h".} + +proc rsaI31Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; + sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i31_pkcs1_sign", header: "bearssl_rsa.h".} + +proc rsaI62Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, + importc: "br_rsa_i62_public", header: "bearssl_rsa.h".} + +proc rsaI62Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; + pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i62_pkcs1_vrfy", header: "bearssl_rsa.h".} + +proc rsaI62Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, + importc: "br_rsa_i62_private", header: "bearssl_rsa.h".} + +proc rsaI62Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; + sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i62_pkcs1_sign", header: "bearssl_rsa.h".} + +proc rsaI62PublicGet*(): RsaPublic {.cdecl, importc: "br_rsa_i62_public_get", + header: "bearssl_rsa.h".} + +proc rsaI62Pkcs1VrfyGet*(): RsaPkcs1Vrfy {.cdecl, + importc: "br_rsa_i62_pkcs1_vrfy_get", + header: "bearssl_rsa.h".} + +proc rsaI62PrivateGet*(): RsaPrivate {.cdecl, importc: "br_rsa_i62_private_get", + header: "bearssl_rsa.h".} + +proc rsaI62Pkcs1SignGet*(): RsaPkcs1Sign {.cdecl, + importc: "br_rsa_i62_pkcs1_sign_get", + header: "bearssl_rsa.h".} + +proc rsaI15Public*(x: ptr cuchar; xlen: int; pk: ptr RsaPublicKey): uint32 {.cdecl, + importc: "br_rsa_i15_public", header: "bearssl_rsa.h".} + +proc rsaI15Pkcs1Vrfy*(x: ptr cuchar; xlen: int; hashOid: ptr cuchar; hashLen: int; + pk: ptr RsaPublicKey; hashOut: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i15_pkcs1_vrfy", header: "bearssl_rsa.h".} + +proc rsaI15Private*(x: ptr cuchar; sk: ptr RsaPrivateKey): uint32 {.cdecl, + importc: "br_rsa_i15_private", header: "bearssl_rsa.h".} + +proc rsaI15Pkcs1Sign*(hashOid: ptr cuchar; hash: ptr cuchar; hashLen: int; + sk: ptr RsaPrivateKey; x: ptr cuchar): uint32 {.cdecl, + importc: "br_rsa_i15_pkcs1_sign", header: "bearssl_rsa.h".} + +proc rsaPublicGetDefault*(): RsaPublic {.cdecl, + importc: "br_rsa_public_get_default", + header: "bearssl_rsa.h".} + +proc rsaPrivateGetDefault*(): RsaPrivate {.cdecl, + importc: "br_rsa_private_get_default", + header: "bearssl_rsa.h".} + +proc rsaPkcs1VrfyGetDefault*(): RsaPkcs1Vrfy {.cdecl, + importc: "br_rsa_pkcs1_vrfy_get_default", header: "bearssl_rsa.h".} + +proc rsaPkcs1SignGetDefault*(): RsaPkcs1Sign {.cdecl, + importc: "br_rsa_pkcs1_sign_get_default", header: "bearssl_rsa.h".} + +proc rsaSslDecrypt*(core: RsaPrivate; sk: ptr RsaPrivateKey; data: ptr cuchar; len: int): uint32 {. + cdecl, importc: "br_rsa_ssl_decrypt", header: "bearssl_rsa.h".} + +const + EC_sect163k1* = 1 + +const + EC_sect163r1* = 2 + +const + EC_sect163r2* = 3 + +const + EC_sect193r1* = 4 + +const + EC_sect193r2* = 5 + +const + EC_sect233k1* = 6 + +const + EC_sect233r1* = 7 + +const + EC_sect239k1* = 8 + +const + EC_sect283k1* = 9 + +const + EC_sect283r1* = 10 + +const + EC_sect409k1* = 11 + +const + EC_sect409r1* = 12 + +const + EC_sect571k1* = 13 + +const + EC_sect571r1* = 14 + +const + EC_secp160k1* = 15 + +const + EC_secp160r1* = 16 + +const + EC_secp160r2* = 17 + +const + EC_secp192k1* = 18 + +const + EC_secp192r1* = 19 + +const + EC_secp224k1* = 20 + +const + EC_secp224r1* = 21 + +const + EC_secp256k1* = 22 + +const + EC_secp256r1* = 23 + +const + EC_secp384r1* = 24 + +const + EC_secp521r1* = 25 + +const + EC_brainpoolP256r1* = 26 + +const + EC_brainpoolP384r1* = 27 + +const + EC_brainpoolP512r1* = 28 + +const + EC_curve25519* = 29 + +const + EC_curve448* = 30 + +type + EcPublicKey* {.importc: "br_ec_public_key", header: "bearssl_ec.h", bycopy.} = object + curve* {.importc: "curve".}: cint + q* {.importc: "q".}: ptr cuchar + qlen* {.importc: "qlen".}: int + + +type + EcPrivateKey* {.importc: "br_ec_private_key", header: "bearssl_ec.h", bycopy.} = object + curve* {.importc: "curve".}: cint + x* {.importc: "x".}: ptr cuchar + xlen* {.importc: "xlen".}: int + + +type + EcImpl* {.importc: "br_ec_impl", header: "bearssl_ec.h", bycopy.} = object + supportedCurves* {.importc: "supported_curves".}: uint32 + generator* {.importc: "generator".}: proc (curve: cint; len: ptr int): ptr cuchar {. + cdecl.} + order* {.importc: "order".}: proc (curve: cint; len: ptr int): ptr cuchar {.cdecl.} + xoff* {.importc: "xoff".}: proc (curve: cint; len: ptr int): int {.cdecl.} + mul* {.importc: "mul".}: proc (g: ptr cuchar; glen: int; x: ptr cuchar; xlen: int; + curve: cint): uint32 {.cdecl.} + mulgen* {.importc: "mulgen".}: proc (r: ptr cuchar; x: ptr cuchar; xlen: int; + curve: cint): int {.cdecl.} + muladd* {.importc: "muladd".}: proc (a: ptr cuchar; b: ptr cuchar; len: int; + x: ptr cuchar; xlen: int; y: ptr cuchar; + ylen: int; curve: cint): uint32 {.cdecl.} + + +var ecPrimeI31* {.importc: "br_ec_prime_i31", header: "bearssl_ec.h".}: EcImpl + +var ecPrimeI15* {.importc: "br_ec_prime_i15", header: "bearssl_ec.h".}: EcImpl + +var ecP256M15* {.importc: "br_ec_p256_m15", header: "bearssl_ec.h".}: EcImpl + +var ecP256M31* {.importc: "br_ec_p256_m31", header: "bearssl_ec.h".}: EcImpl + +var ecC25519I15* {.importc: "br_ec_c25519_i15", header: "bearssl_ec.h".}: EcImpl + +var ecC25519I31* {.importc: "br_ec_c25519_i31", header: "bearssl_ec.h".}: EcImpl + +var ecC25519M15* {.importc: "br_ec_c25519_m15", header: "bearssl_ec.h".}: EcImpl + +var ecC25519M31* {.importc: "br_ec_c25519_m31", header: "bearssl_ec.h".}: EcImpl + +var ecAllM15* {.importc: "br_ec_all_m15", header: "bearssl_ec.h".}: EcImpl + +var ecAllM31* {.importc: "br_ec_all_m31", header: "bearssl_ec.h".}: EcImpl + +proc ecGetDefault*(): ptr EcImpl {.cdecl, importc: "br_ec_get_default", + header: "bearssl_ec.h".} + +proc ecdsaRawToAsn1*(sig: pointer; sigLen: int): int {.cdecl, + importc: "br_ecdsa_raw_to_asn1", header: "bearssl_ec.h".} + +proc ecdsaAsn1ToRaw*(sig: pointer; sigLen: int): int {.cdecl, + importc: "br_ecdsa_asn1_to_raw", header: "bearssl_ec.h".} + +type + EcdsaSign* = proc (impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; + sk: ptr EcPrivateKey; sig: pointer): int {.cdecl.} + +type + EcdsaVrfy* = proc (impl: ptr EcImpl; hash: pointer; hashLen: int; pk: ptr EcPublicKey; + sig: pointer; sigLen: int): uint32 {.cdecl.} + +proc ecdsaI31SignAsn1*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; + sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, + importc: "br_ecdsa_i31_sign_asn1", header: "bearssl_ec.h".} + +proc ecdsaI31SignRaw*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; + sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, + importc: "br_ecdsa_i31_sign_raw", header: "bearssl_ec.h".} + +proc ecdsaI31VrfyAsn1*(impl: ptr EcImpl; hash: pointer; hashLen: int; + pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {. + cdecl, importc: "br_ecdsa_i31_vrfy_asn1", header: "bearssl_ec.h".} + +proc ecdsaI31VrfyRaw*(impl: ptr EcImpl; hash: pointer; hashLen: int; + pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {.cdecl, + importc: "br_ecdsa_i31_vrfy_raw", header: "bearssl_ec.h".} + +proc ecdsaI15SignAsn1*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; + sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, + importc: "br_ecdsa_i15_sign_asn1", header: "bearssl_ec.h".} + +proc ecdsaI15SignRaw*(impl: ptr EcImpl; hf: ptr HashClass; hashValue: pointer; + sk: ptr EcPrivateKey; sig: pointer): int {.cdecl, + importc: "br_ecdsa_i15_sign_raw", header: "bearssl_ec.h".} + +proc ecdsaI15VrfyAsn1*(impl: ptr EcImpl; hash: pointer; hashLen: int; + pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {. + cdecl, importc: "br_ecdsa_i15_vrfy_asn1", header: "bearssl_ec.h".} + +proc ecdsaI15VrfyRaw*(impl: ptr EcImpl; hash: pointer; hashLen: int; + pk: ptr EcPublicKey; sig: pointer; sigLen: int): uint32 {.cdecl, + importc: "br_ecdsa_i15_vrfy_raw", header: "bearssl_ec.h".} + +proc ecdsaSignAsn1GetDefault*(): EcdsaSign {.cdecl, + importc: "br_ecdsa_sign_asn1_get_default", header: "bearssl_ec.h".} + +proc ecdsaSignRawGetDefault*(): EcdsaSign {.cdecl, + importc: "br_ecdsa_sign_raw_get_default", header: "bearssl_ec.h".} + +proc ecdsaVrfyAsn1GetDefault*(): EcdsaVrfy {.cdecl, + importc: "br_ecdsa_vrfy_asn1_get_default", header: "bearssl_ec.h".} + +proc ecdsaVrfyRawGetDefault*(): EcdsaVrfy {.cdecl, + importc: "br_ecdsa_vrfy_raw_get_default", header: "bearssl_ec.h".} + +const + ERR_X509_OK* = 32 + +const + ERR_X509_INVALID_VALUE* = 33 + +const + ERR_X509_TRUNCATED* = 34 + +const + ERR_X509_EMPTY_CHAIN* = 35 + +const + ERR_X509_INNER_TRUNC* = 36 + +const + ERR_X509_BAD_TAG_CLASS* = 37 + +const + ERR_X509_BAD_TAG_VALUE* = 38 + +const + ERR_X509_INDEFINITE_LENGTH* = 39 + +const + ERR_X509_EXTRA_ELEMENT* = 40 + +const + ERR_X509_UNEXPECTED* = 41 + +const + ERR_X509_NOT_CONSTRUCTED* = 42 + +const + ERR_X509_NOT_PRIMITIVE* = 43 + +const + ERR_X509_PARTIAL_BYTE* = 44 + +const + ERR_X509_BAD_BOOLEAN* = 45 + +const + ERR_X509_OVERFLOW* = 46 + +const + ERR_X509_BAD_DN* = 47 + +const + ERR_X509_BAD_TIME* = 48 + +const + ERR_X509_UNSUPPORTED* = 49 + +const + ERR_X509_LIMIT_EXCEEDED* = 50 + +const + ERR_X509_WRONG_KEY_TYPE* = 51 + +const + ERR_X509_BAD_SIGNATURE* = 52 + +const + ERR_X509_TIME_UNKNOWN* = 53 + +const + ERR_X509_EXPIRED* = 54 + +const + ERR_X509_DN_MISMATCH* = 55 + +const + ERR_X509_BAD_SERVER_NAME* = 56 + +const + ERR_X509_CRITICAL_EXTENSION* = 57 + +const + ERR_X509_NOT_CA* = 58 + +const + ERR_X509_FORBIDDEN_KEY_USAGE* = 59 + +const + ERR_X509_WEAK_PUBLIC_KEY* = 60 + +const + ERR_X509_NOT_TRUSTED* = 62 + +type + INNER_C_UNION_2211491720* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object {. + union.} + rsa* {.importc: "rsa".}: RsaPublicKey + ec* {.importc: "ec".}: EcPublicKey + + X509Pkey* {.importc: "br_x509_pkey", header: "bearssl_x509.h", bycopy.} = object + keyType* {.importc: "key_type".}: cuchar + key* {.importc: "key".}: INNER_C_UNION_2211491720 + + +type + X500Name* {.importc: "br_x500_name", header: "bearssl_x509.h", bycopy.} = object + data* {.importc: "data".}: ptr cuchar + len* {.importc: "len".}: int + + +type + X509TrustAnchor* {.importc: "br_x509_trust_anchor", header: "bearssl_x509.h", + bycopy.} = object + dn* {.importc: "dn".}: X500Name + flags* {.importc: "flags".}: cuint + pkey* {.importc: "pkey".}: X509Pkey + + +const + X509_TA_CA* = 0x00000001 + +const + KEYTYPE_RSA* = 1 + +const + KEYTYPE_EC* = 2 + +const + KEYTYPE_KEYX* = 0x00000010 + +const + KEYTYPE_SIGN* = 0x00000020 + +type + X509Class* {.importc: "br_x509_class", header: "bearssl_x509.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + startChain* {.importc: "start_chain".}: proc (ctx: ptr ptr X509Class; + serverName: cstring) {.cdecl.} + startCert* {.importc: "start_cert".}: proc (ctx: ptr ptr X509Class; length: uint32) {. + cdecl.} + append* {.importc: "append".}: proc (ctx: ptr ptr X509Class; buf: ptr cuchar; + len: int) {.cdecl.} + endCert* {.importc: "end_cert".}: proc (ctx: ptr ptr X509Class) {.cdecl.} + endChain* {.importc: "end_chain".}: proc (ctx: ptr ptr X509Class): cuint {.cdecl.} + getPkey* {.importc: "get_pkey".}: proc (ctx: ptr ptr X509Class; usages: ptr cuint): ptr X509Pkey {. + cdecl.} + + +type + X509KnownkeyContext* {.importc: "br_x509_knownkey_context", + header: "bearssl_x509.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr X509Class + pkey* {.importc: "pkey".}: X509Pkey + usages* {.importc: "usages".}: cuint + + +var x509KnownkeyVtable* {.importc: "br_x509_knownkey_vtable", + header: "bearssl_x509.h".}: X509Class + +proc x509KnownkeyInitRsa*(ctx: ptr X509KnownkeyContext; pk: ptr RsaPublicKey; + usages: cuint) {.cdecl, + importc: "br_x509_knownkey_init_rsa", + header: "bearssl_x509.h".} + +proc x509KnownkeyInitEc*(ctx: ptr X509KnownkeyContext; pk: ptr EcPublicKey; + usages: cuint) {.cdecl, + importc: "br_x509_knownkey_init_ec", + header: "bearssl_x509.h".} + +const + X509_BUFSIZE_KEY* = 520 + X509_BUFSIZE_SIG* = 512 + +type + NameElement* {.importc: "br_name_element", header: "bearssl_x509.h", bycopy.} = object + oid* {.importc: "oid".}: ptr cuchar + buf* {.importc: "buf".}: cstring + len* {.importc: "len".}: int + status* {.importc: "status".}: cint + + +type + INNER_C_STRUCT_573696436* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object + dp* {.importc: "dp".}: ptr uint32 + rp* {.importc: "rp".}: ptr uint32 + ip* {.importc: "ip".}: ptr cuchar + + X509MinimalContext* {.importc: "br_x509_minimal_context", + header: "bearssl_x509.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr X509Class + pkey* {.importc: "pkey".}: X509Pkey + cpu* {.importc: "cpu".}: INNER_C_STRUCT_573696436 + dpStack* {.importc: "dp_stack".}: array[32, uint32] + rpStack* {.importc: "rp_stack".}: array[32, uint32] + err* {.importc: "err".}: cint + serverName* {.importc: "server_name".}: cstring + keyUsages* {.importc: "key_usages".}: cuchar + days* {.importc: "days".}: uint32 + seconds* {.importc: "seconds".}: uint32 + certLength* {.importc: "cert_length".}: uint32 + numCerts* {.importc: "num_certs".}: uint32 + hbuf* {.importc: "hbuf".}: ptr cuchar + hlen* {.importc: "hlen".}: int + pad* {.importc: "pad".}: array[256, cuchar] + eePkeyData* {.importc: "ee_pkey_data".}: array[X509_BUFSIZE_KEY, cuchar] + pkeyData* {.importc: "pkey_data".}: array[X509_BUFSIZE_KEY, cuchar] + certSignerKeyType* {.importc: "cert_signer_key_type".}: cuchar + certSigHashOid* {.importc: "cert_sig_hash_oid".}: uint16 + certSigHashLen* {.importc: "cert_sig_hash_len".}: cuchar + certSig* {.importc: "cert_sig".}: array[X509_BUFSIZE_SIG, cuchar] + certSigLen* {.importc: "cert_sig_len".}: uint16 + minRsaSize* {.importc: "min_rsa_size".}: int16 + trustAnchors* {.importc: "trust_anchors".}: ptr X509TrustAnchor + trustAnchorsNum* {.importc: "trust_anchors_num".}: int + doMhash* {.importc: "do_mhash".}: cuchar + mhash* {.importc: "mhash".}: MultihashContext + tbsHash* {.importc: "tbs_hash".}: array[64, cuchar] + doDnHash* {.importc: "do_dn_hash".}: cuchar + dnHashImpl* {.importc: "dn_hash_impl".}: ptr HashClass + dnHash* {.importc: "dn_hash".}: HashCompatContext + currentDnHash* {.importc: "current_dn_hash".}: array[64, cuchar] + nextDnHash* {.importc: "next_dn_hash".}: array[64, cuchar] + savedDnHash* {.importc: "saved_dn_hash".}: array[64, cuchar] + nameElts* {.importc: "name_elts".}: ptr NameElement + numNameElts* {.importc: "num_name_elts".}: int + irsa* {.importc: "irsa".}: RsaPkcs1Vrfy + iecdsa* {.importc: "iecdsa".}: EcdsaVrfy + iec* {.importc: "iec".}: ptr EcImpl + + +var x509MinimalVtable* {.importc: "br_x509_minimal_vtable", header: "bearssl_x509.h".}: X509Class + +proc x509MinimalInit*(ctx: ptr X509MinimalContext; dnHashImpl: ptr HashClass; + trustAnchors: ptr X509TrustAnchor; trustAnchorsNum: int) {. + cdecl, importc: "br_x509_minimal_init", header: "bearssl_x509.h".} + +proc x509MinimalSetHash*(ctx: ptr X509MinimalContext; id: cint; impl: ptr HashClass) {. + inline.} = + multihashSetimpl(addr(ctx.mhash), id, impl) + +proc x509MinimalSetRsa*(ctx: ptr X509MinimalContext; irsa: RsaPkcs1Vrfy) {.inline, + cdecl.} = + ctx.irsa = irsa + +proc x509MinimalSetEcdsa*(ctx: ptr X509MinimalContext; iec: ptr EcImpl; + iecdsa: EcdsaVrfy) {.inline.} = + ctx.iecdsa = iecdsa + ctx.iec = iec + +proc x509MinimalInitFull*(ctx: ptr X509MinimalContext; + trustAnchors: ptr X509TrustAnchor; trustAnchorsNum: int) {. + cdecl, importc: "br_x509_minimal_init_full", header: "bearssl_x509.h".} + +proc x509MinimalSetTime*(ctx: ptr X509MinimalContext; days: uint32; seconds: uint32) {. + inline.} = + ctx.days = days + ctx.seconds = seconds + +proc x509MinimalSetMinrsa*(ctx: ptr X509MinimalContext; byteLength: cint) {.inline, + cdecl.} = + ctx.minRsaSize = (int16)(byteLength - 128) + +proc x509MinimalSetNameElements*(ctx: ptr X509MinimalContext; elts: ptr NameElement; + numElts: int) {.inline.} = + ctx.nameElts = elts + ctx.numNameElts = numElts + +type + INNER_C_STRUCT_161597942* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object + dp* {.importc: "dp".}: ptr uint32 + rp* {.importc: "rp".}: ptr uint32 + ip* {.importc: "ip".}: ptr cuchar + + X509DecoderContext* {.importc: "br_x509_decoder_context", + header: "bearssl_x509.h", bycopy.} = object + pkey* {.importc: "pkey".}: X509Pkey + cpu* {.importc: "cpu".}: INNER_C_STRUCT_161597942 + dpStack* {.importc: "dp_stack".}: array[32, uint32] + rpStack* {.importc: "rp_stack".}: array[32, uint32] + err* {.importc: "err".}: cint + pad* {.importc: "pad".}: array[256, cuchar] + decoded* {.importc: "decoded".}: bool + notbeforeDays* {.importc: "notbefore_days".}: uint32 + notbeforeSeconds* {.importc: "notbefore_seconds".}: uint32 + notafterDays* {.importc: "notafter_days".}: uint32 + notafterSeconds* {.importc: "notafter_seconds".}: uint32 + isCA* {.importc: "isCA".}: bool + copyDn* {.importc: "copy_dn".}: cuchar + appendDnCtx* {.importc: "append_dn_ctx".}: pointer + appendDn* {.importc: "append_dn".}: proc (ctx: pointer; buf: pointer; len: int) {. + cdecl.} + hbuf* {.importc: "hbuf".}: ptr cuchar + hlen* {.importc: "hlen".}: int + pkeyData* {.importc: "pkey_data".}: array[X509_BUFSIZE_KEY, cuchar] + signerKeyType* {.importc: "signer_key_type".}: cuchar + signerHashId* {.importc: "signer_hash_id".}: cuchar + + +proc x509DecoderInit*(ctx: ptr X509DecoderContext; appendDn: proc (ctx: pointer; + buf: pointer; len: int) {.cdecl.}; appendDnCtx: pointer) {.cdecl, + importc: "br_x509_decoder_init", header: "bearssl_x509.h".} + +proc x509DecoderPush*(ctx: ptr X509DecoderContext; data: pointer; len: int) {.cdecl, + importc: "br_x509_decoder_push", header: "bearssl_x509.h".} + +proc x509DecoderGetPkey*(ctx: ptr X509DecoderContext): ptr X509Pkey {.inline.} = + if ctx.decoded and ctx.err == 0: + return addr(ctx.pkey) + else: + return nil + +proc x509DecoderLastError*(ctx: ptr X509DecoderContext): cint {.inline.} = + if ctx.err != 0: + return ctx.err + if not ctx.decoded: + return ERR_X509_TRUNCATED + return 0 + +proc x509DecoderIsCA*(ctx: ptr X509DecoderContext): cint {.inline.} = + return cint ctx.isCA + +proc x509DecoderGetSignerKeyType*(ctx: ptr X509DecoderContext): cint {.inline.} = + return cint ctx.signerKeyType + +proc x509DecoderGetSignerHashId*(ctx: ptr X509DecoderContext): cint {.inline.} = + return cint ctx.signerHashId + +type + X509Certificate* {.importc: "br_x509_certificate", header: "bearssl_x509.h", bycopy.} = object + data* {.importc: "data".}: ptr cuchar + dataLen* {.importc: "data_len".}: int + + +type + INNER_C_UNION_3754611343* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object {. + union.} + rsa* {.importc: "rsa".}: RsaPrivateKey + ec* {.importc: "ec".}: EcPrivateKey + + INNER_C_STRUCT_3633027466* {.importc: "no_name", header: "bearssl_x509.h", bycopy.} = object + dp* {.importc: "dp".}: ptr uint32 + rp* {.importc: "rp".}: ptr uint32 + ip* {.importc: "ip".}: ptr cuchar + + SkeyDecoderContext* {.importc: "br_skey_decoder_context", + header: "bearssl_x509.h", bycopy.} = object + key* {.importc: "key".}: INNER_C_UNION_3754611343 + cpu* {.importc: "cpu".}: INNER_C_STRUCT_3633027466 + dpStack* {.importc: "dp_stack".}: array[32, uint32] + rpStack* {.importc: "rp_stack".}: array[32, uint32] + err* {.importc: "err".}: cint + hbuf* {.importc: "hbuf".}: ptr cuchar + hlen* {.importc: "hlen".}: int + pad* {.importc: "pad".}: array[256, cuchar] + keyType* {.importc: "key_type".}: cuchar + keyData* {.importc: "key_data".}: array[3 * X509_BUFSIZE_SIG, cuchar] + + +proc skeyDecoderInit*(ctx: ptr SkeyDecoderContext) {.cdecl, + importc: "br_skey_decoder_init", header: "bearssl_x509.h".} + +proc skeyDecoderPush*(ctx: ptr SkeyDecoderContext; data: pointer; len: int) {.cdecl, + importc: "br_skey_decoder_push", header: "bearssl_x509.h".} + +proc skeyDecoderLastError*(ctx: ptr SkeyDecoderContext): cint {.inline.} = + if ctx.err != 0: + return ctx.err + if ctx.keyType == '\0': + return ERR_X509_TRUNCATED + return 0 + +proc skeyDecoderKeyType*(ctx: ptr SkeyDecoderContext): cint {.inline.} = + if ctx.err == 0: + return cint ctx.keyType + else: + return 0 + +const + SSL_BUFSIZE_INPUT* = (16384 + 325) + +const + SSL_BUFSIZE_OUTPUT* = (16384 + 85) + +const + SSL_BUFSIZE_MONO* = SSL_BUFSIZE_INPUT + +const + SSL_BUFSIZE_BIDI* = (SSL_BUFSIZE_INPUT + SSL_BUFSIZE_OUTPUT) + +const + SSL30* = 0x00000300 + +const + TLS10* = 0x00000301 + +const + TLS11* = 0x00000302 + +const + TLS12* = 0x00000303 + +const + ERR_OK* = 0 + +const + ERR_BAD_PARAM* = 1 + +const + ERR_BAD_STATE* = 2 + +const + ERR_UNSUPPORTED_VERSION* = 3 + +const + ERR_BAD_VERSION* = 4 + +const + ERR_BAD_LENGTH* = 5 + +const + ERR_TOO_LARGE* = 6 + +const + ERR_BAD_MAC* = 7 + +const + ERR_NO_RANDOM* = 8 + +const + ERR_UNKNOWN_TYPE* = 9 + +const + ERR_UNEXPECTED* = 10 + +const + ERR_BAD_CCS* = 12 + +const + ERR_BAD_ALERT* = 13 + +const + ERR_BAD_HANDSHAKE* = 14 + +const + ERR_OVERSIZED_ID* = 15 + +const + ERR_BAD_CIPHER_SUITE* = 16 + +const + ERR_BAD_COMPRESSION* = 17 + +const + ERR_BAD_FRAGLEN* = 18 + +const + ERR_BAD_SECRENEG* = 19 + +const + ERR_EXTRA_EXTENSION* = 20 + +const + ERR_BAD_SNI* = 21 + +const + ERR_BAD_HELLO_DONE* = 22 + +const + ERR_LIMIT_EXCEEDED* = 23 + +const + ERR_BAD_FINISHED* = 24 + +const + ERR_RESUME_MISMATCH* = 25 + +const + ERR_INVALID_ALGORITHM* = 26 + +const + ERR_BAD_SIGNATURE* = 27 + +const + ERR_WRONG_KEY_USAGE* = 28 + +const + ERR_NO_CLIENT_AUTH* = 29 + +const + ERR_IO* = 31 + +const + ERR_RECV_FATAL_ALERT* = 256 + +const + ERR_SEND_FATAL_ALERT* = 512 + +type + SslrecInClass* {.importc: "br_sslrec_in_class", header: "bearssl_ssl.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + checkLength* {.importc: "check_length".}: proc (ctx: ptr ptr SslrecInClass; + recordLen: int): cint {.cdecl.} + decrypt* {.importc: "decrypt".}: proc (ctx: ptr ptr SslrecInClass; recordType: cint; + version: cuint; payload: pointer; + len: ptr int): ptr cuchar {.cdecl.} + + +type + SslrecOutClass* {.importc: "br_sslrec_out_class", header: "bearssl_ssl.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + maxPlaintext* {.importc: "max_plaintext".}: proc (ctx: ptr ptr SslrecOutClass; + start: ptr int; `end`: ptr int) {.cdecl.} + encrypt* {.importc: "encrypt".}: proc (ctx: ptr ptr SslrecOutClass; + recordType: cint; version: cuint; + plaintext: pointer; len: ptr int): ptr cuchar {. + cdecl.} + + +type + SslrecOutClearContext* {.importc: "br_sslrec_out_clear_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslrecOutClass + + +var sslrecOutClearVtable* {.importc: "br_sslrec_out_clear_vtable", + header: "bearssl_ssl.h".}: SslrecOutClass + +type + SslrecInCbcClass* {.importc: "br_sslrec_in_cbc_class", header: "bearssl_ssl.h", + bycopy.} = object + inner* {.importc: "inner".}: SslrecInClass + init* {.importc: "init".}: proc (ctx: ptr ptr SslrecInCbcClass; + bcImpl: ptr BlockCbcdecClass; bcKey: pointer; + bcKeyLen: int; digImpl: ptr HashClass; + macKey: pointer; macKeyLen: int; + macOutLen: int; iv: pointer) {.cdecl.} + + +type + SslrecOutCbcClass* {.importc: "br_sslrec_out_cbc_class", + header: "bearssl_ssl.h", bycopy.} = object + inner* {.importc: "inner".}: SslrecOutClass + init* {.importc: "init".}: proc (ctx: ptr ptr SslrecOutCbcClass; + bcImpl: ptr BlockCbcencClass; bcKey: pointer; + bcKeyLen: int; digImpl: ptr HashClass; + macKey: pointer; macKeyLen: int; + macOutLen: int; iv: pointer) {.cdecl.} + + +type + INNER_C_UNION_2105460304* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr BlockCbcdecClass + aes* {.importc: "aes".}: AesGenCbcdecKeys + des* {.importc: "des".}: DesGenCbcdecKeys + + SslrecInCbcContext* {.importc: "br_sslrec_in_cbc_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslrecInCbcClass + seq* {.importc: "seq".}: uint64 + bc* {.importc: "bc".}: INNER_C_UNION_2105460304 + mac* {.importc: "mac".}: HmacKeyContext + macLen* {.importc: "mac_len".}: int + iv* {.importc: "iv".}: array[16, cuchar] + explicitIV* {.importc: "explicit_IV".}: cint + + +var sslrecInCbcVtable* {.importc: "br_sslrec_in_cbc_vtable", header: "bearssl_ssl.h".}: SslrecInCbcClass + +type + INNER_C_UNION_3724465237* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr BlockCbcencClass + aes* {.importc: "aes".}: AesGenCbcencKeys + des* {.importc: "des".}: DesGenCbcencKeys + + SslrecOutCbcContext* {.importc: "br_sslrec_out_cbc_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslrecOutCbcClass + seq* {.importc: "seq".}: uint64 + bc* {.importc: "bc".}: INNER_C_UNION_3724465237 + mac* {.importc: "mac".}: HmacKeyContext + macLen* {.importc: "mac_len".}: int + iv* {.importc: "iv".}: array[16, cuchar] + explicitIV* {.importc: "explicit_IV".}: cint + + +var sslrecOutCbcVtable* {.importc: "br_sslrec_out_cbc_vtable", + header: "bearssl_ssl.h".}: SslrecOutCbcClass + +type + SslrecInGcmClass* {.importc: "br_sslrec_in_gcm_class", header: "bearssl_ssl.h", + bycopy.} = object + inner* {.importc: "inner".}: SslrecInClass + init* {.importc: "init".}: proc (ctx: ptr ptr SslrecInGcmClass; + bcImpl: ptr BlockCtrClass; key: pointer; + keyLen: int; ghImpl: Ghash; iv: pointer) {.cdecl.} + + +type + SslrecOutGcmClass* {.importc: "br_sslrec_out_gcm_class", + header: "bearssl_ssl.h", bycopy.} = object + inner* {.importc: "inner".}: SslrecOutClass + init* {.importc: "init".}: proc (ctx: ptr ptr SslrecOutGcmClass; + bcImpl: ptr BlockCtrClass; key: pointer; + keyLen: int; ghImpl: Ghash; iv: pointer) {.cdecl.} + + +type + INNER_C_UNION_536016210* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + gen* {.importc: "gen".}: pointer + `in`* {.importc: "in".}: ptr SslrecInGcmClass + `out`* {.importc: "out".}: ptr SslrecOutGcmClass + + INNER_C_UNION_1283557389* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr BlockCtrClass + aes* {.importc: "aes".}: AesGenCtrKeys + + SslrecGcmContext* {.importc: "br_sslrec_gcm_context", header: "bearssl_ssl.h", + bycopy.} = object + vtable* {.importc: "vtable".}: INNER_C_UNION_536016210 + seq* {.importc: "seq".}: uint64 + bc* {.importc: "bc".}: INNER_C_UNION_1283557389 + gh* {.importc: "gh".}: Ghash + iv* {.importc: "iv".}: array[4, cuchar] + h* {.importc: "h".}: array[16, cuchar] + + +var sslrecInGcmVtable* {.importc: "br_sslrec_in_gcm_vtable", header: "bearssl_ssl.h".}: SslrecInGcmClass + +var sslrecOutGcmVtable* {.importc: "br_sslrec_out_gcm_vtable", + header: "bearssl_ssl.h".}: SslrecOutGcmClass + +type + SslrecInChapolClass* {.importc: "br_sslrec_in_chapol_class", + header: "bearssl_ssl.h", bycopy.} = object + inner* {.importc: "inner".}: SslrecInClass + init* {.importc: "init".}: proc (ctx: ptr ptr SslrecInChapolClass; + ichacha: Chacha20Run; ipoly: Poly1305Run; + key: pointer; iv: pointer) {.cdecl.} + + +type + SslrecOutChapolClass* {.importc: "br_sslrec_out_chapol_class", + header: "bearssl_ssl.h", bycopy.} = object + inner* {.importc: "inner".}: SslrecOutClass + init* {.importc: "init".}: proc (ctx: ptr ptr SslrecOutChapolClass; + ichacha: Chacha20Run; ipoly: Poly1305Run; + key: pointer; iv: pointer) {.cdecl.} + + +type + INNER_C_UNION_1683842004* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + gen* {.importc: "gen".}: pointer + `in`* {.importc: "in".}: ptr SslrecInChapolClass + `out`* {.importc: "out".}: ptr SslrecOutChapolClass + + SslrecChapolContext* {.importc: "br_sslrec_chapol_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: INNER_C_UNION_1683842004 + seq* {.importc: "seq".}: uint64 + key* {.importc: "key".}: array[32, cuchar] + iv* {.importc: "iv".}: array[12, cuchar] + ichacha* {.importc: "ichacha".}: Chacha20Run + ipoly* {.importc: "ipoly".}: Poly1305Run + + +var sslrecInChapolVtable* {.importc: "br_sslrec_in_chapol_vtable", + header: "bearssl_ssl.h".}: SslrecInChapolClass + +var sslrecOutChapolVtable* {.importc: "br_sslrec_out_chapol_vtable", + header: "bearssl_ssl.h".}: SslrecOutChapolClass + +type + SslSessionParameters* {.importc: "br_ssl_session_parameters", + header: "bearssl_ssl.h", bycopy.} = object + sessionId* {.importc: "session_id".}: array[32, cuchar] + sessionIdLen* {.importc: "session_id_len".}: byte + version* {.importc: "version".}: uint16 + cipherSuite* {.importc: "cipher_suite".}: uint16 + masterSecret* {.importc: "master_secret".}: array[48, cuchar] + + +const + MAX_CIPHER_SUITES* = 40 + +type + INNER_C_UNION_861939089* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr SslrecInClass + cbc* {.importc: "cbc".}: SslrecInCbcContext + gcm* {.importc: "gcm".}: SslrecGcmContext + chapol* {.importc: "chapol".}: SslrecChapolContext + + INNER_C_UNION_1609480268* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr SslrecOutClass + clear* {.importc: "clear".}: SslrecOutClearContext + cbc* {.importc: "cbc".}: SslrecOutCbcContext + gcm* {.importc: "gcm".}: SslrecGcmContext + chapol* {.importc: "chapol".}: SslrecChapolContext + + INNER_C_STRUCT_671658464* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object + dp* {.importc: "dp".}: ptr uint32 + rp* {.importc: "rp".}: ptr uint32 + ip* {.importc: "ip".}: ptr cuchar + + SslEngineContext* {.importc: "br_ssl_engine_context", header: "bearssl_ssl.h", + bycopy.} = object + err* {.importc: "err".}: cint + ibuf* {.importc: "ibuf".}: ptr cuchar + obuf* {.importc: "obuf".}: ptr cuchar + ibufLen* {.importc: "ibuf_len".}: int + obufLen* {.importc: "obuf_len".}: int + maxFragLen* {.importc: "max_frag_len".}: uint16 + logMaxFragLen* {.importc: "log_max_frag_len".}: cuchar + peerLogMaxFragLen* {.importc: "peer_log_max_frag_len".}: cuchar + ixa* {.importc: "ixa".}: int + ixb* {.importc: "ixb".}: int + ixc* {.importc: "ixc".}: int + oxa* {.importc: "oxa".}: int + oxb* {.importc: "oxb".}: int + oxc* {.importc: "oxc".}: int + iomode* {.importc: "iomode".}: cuchar + incrypt* {.importc: "incrypt".}: cuchar + shutdownRecv* {.importc: "shutdown_recv".}: cuchar + recordTypeIn* {.importc: "record_type_in".}: cuchar + recordTypeOut* {.importc: "record_type_out".}: cuchar + versionIn* {.importc: "version_in".}: uint16 + versionOut* {.importc: "version_out".}: uint16 + `in`* {.importc: "in".}: INNER_C_UNION_861939089 + `out`* {.importc: "out".}: INNER_C_UNION_1609480268 + applicationData* {.importc: "application_data".}: cuchar + rng* {.importc: "rng".}: HmacDrbgContext + rngInitDone* {.importc: "rng_init_done".}: cint + rngOsRandDone* {.importc: "rng_os_rand_done".}: cint + versionMin* {.importc: "version_min".}: uint16 + versionMax* {.importc: "version_max".}: uint16 + suitesBuf* {.importc: "suites_buf".}: array[MAX_CIPHER_SUITES, uint16] + suitesNum* {.importc: "suites_num".}: cuchar + serverName* {.importc: "server_name".}: array[256, char] + clientRandom* {.importc: "client_random".}: array[32, cuchar] + serverRandom* {.importc: "server_random".}: array[32, cuchar] + session* {.importc: "session".}: SslSessionParameters + ecdheCurve* {.importc: "ecdhe_curve".}: cuchar + ecdhePoint* {.importc: "ecdhe_point".}: array[133, cuchar] + ecdhePointLen* {.importc: "ecdhe_point_len".}: cuchar + reneg* {.importc: "reneg".}: cuchar + savedFinished* {.importc: "saved_finished".}: array[24, cuchar] + flags* {.importc: "flags".}: uint32 + cpu* {.importc: "cpu".}: INNER_C_STRUCT_671658464 + dpStack* {.importc: "dp_stack".}: array[32, uint32] + rpStack* {.importc: "rp_stack".}: array[32, uint32] + pad* {.importc: "pad".}: array[512, cuchar] + hbufIn* {.importc: "hbuf_in".}: ptr cuchar + hbufOut* {.importc: "hbuf_out".}: ptr cuchar + savedHbufOut* {.importc: "saved_hbuf_out".}: ptr cuchar + hlenIn* {.importc: "hlen_in".}: int + hlenOut* {.importc: "hlen_out".}: int + hsrun* {.importc: "hsrun".}: proc (ctx: pointer) {.cdecl.} + action* {.importc: "action".}: cuchar + alert* {.importc: "alert".}: cuchar + closeReceived* {.importc: "close_received".}: cuchar + mhash* {.importc: "mhash".}: MultihashContext + x509ctx* {.importc: "x509ctx".}: ptr ptr X509Class + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + certCur* {.importc: "cert_cur".}: ptr cuchar + certLen* {.importc: "cert_len".}: int + protocolNames* {.importc: "protocol_names".}: cstringArray + protocolNamesNum* {.importc: "protocol_names_num".}: uint16 + selectedProtocol* {.importc: "selected_protocol".}: uint16 + prf10* {.importc: "prf10".}: TlsPrfImpl + prfSha256* {.importc: "prf_sha256".}: TlsPrfImpl + prfSha384* {.importc: "prf_sha384".}: TlsPrfImpl + iaesCbcenc* {.importc: "iaes_cbcenc".}: ptr BlockCbcencClass + iaesCbcdec* {.importc: "iaes_cbcdec".}: ptr BlockCbcdecClass + iaesCtr* {.importc: "iaes_ctr".}: ptr BlockCtrClass + idesCbcenc* {.importc: "ides_cbcenc".}: ptr BlockCbcencClass + idesCbcdec* {.importc: "ides_cbcdec".}: ptr BlockCbcdecClass + ighash* {.importc: "ighash".}: Ghash + ichacha* {.importc: "ichacha".}: Chacha20Run + ipoly* {.importc: "ipoly".}: Poly1305Run + icbcIn* {.importc: "icbc_in".}: ptr SslrecInCbcClass + icbcOut* {.importc: "icbc_out".}: ptr SslrecOutCbcClass + igcmIn* {.importc: "igcm_in".}: ptr SslrecInGcmClass + igcmOut* {.importc: "igcm_out".}: ptr SslrecOutGcmClass + ichapolIn* {.importc: "ichapol_in".}: ptr SslrecInChapolClass + ichapolOut* {.importc: "ichapol_out".}: ptr SslrecOutChapolClass + iec* {.importc: "iec".}: ptr EcImpl + irsavrfy* {.importc: "irsavrfy".}: RsaPkcs1Vrfy + iecdsa* {.importc: "iecdsa".}: EcdsaVrfy + + +proc sslEngineGetFlags*(cc: ptr SslEngineContext): uint32 {.inline.} = + return cc.flags + +proc sslEngineSetAllFlags*(cc: ptr SslEngineContext; flags: uint32) {.inline.} = + cc.flags = flags + +proc sslEngineAddFlags*(cc: ptr SslEngineContext; flags: uint32) {.inline.} = + cc.flags = cc.flags or flags + +proc sslEngineRemoveFlags*(cc: ptr SslEngineContext; flags: uint32) {.inline.} = + cc.flags = cc.flags and not flags + +const + OPT_ENFORCE_SERVER_PREFERENCES* = (1'u32 shl 0) + +const + OPT_NO_RENEGOTIATION* = (1'u32 shl 1) + +const + OPT_TOLERATE_NO_CLIENT_AUTH* = (1'u32 shl 2) + +const + OPT_FAIL_ON_ALPN_MISMATCH* = (1'u32 shl 3) + +proc sslEngineSetVersions*(cc: ptr SslEngineContext; versionMin: uint16; + versionMax: uint16) {.inline.} = + cc.versionMin = versionMin + cc.versionMax = versionMax + +proc sslEngineSetSuites*(cc: ptr SslEngineContext; suites: ptr uint16; + suitesNum: int) {.cdecl, + importc: "br_ssl_engine_set_suites", header: "bearssl_ssl.h".} + +proc sslEngineSetX509*(cc: ptr SslEngineContext; x509ctx: ptr ptr X509Class) {.inline, + cdecl.} = + cc.x509ctx = x509ctx + +proc sslEngineSetProtocolNames*(ctx: ptr SslEngineContext; names: cstringArray; + num: int) {.inline.} = + ctx.protocolNames = names + ctx.protocolNamesNum = uint16 num + +proc sslEngineGetSelectedProtocol*(ctx: ptr SslEngineContext): cstring {.inline.} = + var k: cuint + k = ctx.selectedProtocol + return if (k == 0 or k == 0x0000FFFF): nil else: ctx.protocolNames[k - 1] + +proc sslEngineSetHash*(ctx: ptr SslEngineContext; id: cint; impl: ptr HashClass) {. + inline.} = + multihashSetimpl(addr(ctx.mhash), id, impl) + +proc sslEngineGetHash*(ctx: ptr SslEngineContext; id: cint): ptr HashClass {.inline, + cdecl.} = + return multihashGetimpl(addr(ctx.mhash), id) + +proc sslEngineSetPrf10*(cc: ptr SslEngineContext; impl: TlsPrfImpl) {.inline.} = + cc.prf10 = impl + +proc sslEngineSetPrfSha256*(cc: ptr SslEngineContext; impl: TlsPrfImpl) {.inline.} = + cc.prfSha256 = impl + +proc sslEngineSetPrfSha384*(cc: ptr SslEngineContext; impl: TlsPrfImpl) {.inline.} = + cc.prfSha384 = impl + +proc sslEngineSetAesCbc*(cc: ptr SslEngineContext; implEnc: ptr BlockCbcencClass; + implDec: ptr BlockCbcdecClass) {.inline.} = + cc.iaesCbcenc = implEnc + cc.iaesCbcdec = implDec + +proc sslEngineSetDefaultAesCbc*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_aes_cbc", header: "bearssl_ssl.h".} + +proc sslEngineSetAesCtr*(cc: ptr SslEngineContext; impl: ptr BlockCtrClass) {.inline, + cdecl.} = + cc.iaesCtr = impl + +proc sslEngineSetDefaultAesGcm*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_aes_gcm", header: "bearssl_ssl.h".} + +proc sslEngineSetDesCbc*(cc: ptr SslEngineContext; implEnc: ptr BlockCbcencClass; + implDec: ptr BlockCbcdecClass) {.inline.} = + cc.idesCbcenc = implEnc + cc.idesCbcdec = implDec + +proc sslEngineSetDefaultDesCbc*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_des_cbc", header: "bearssl_ssl.h".} + +proc sslEngineSetGhash*(cc: ptr SslEngineContext; impl: Ghash) {.inline.} = + cc.ighash = impl + +proc sslEngineSetChacha20*(cc: ptr SslEngineContext; ichacha: Chacha20Run) {.inline, + cdecl.} = + cc.ichacha = ichacha + +proc sslEngineSetPoly1305*(cc: ptr SslEngineContext; ipoly: Poly1305Run) {.inline, + cdecl.} = + cc.ipoly = ipoly + +proc sslEngineSetDefaultChapol*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_chapol", header: "bearssl_ssl.h".} + +proc sslEngineSetCbc*(cc: ptr SslEngineContext; implIn: ptr SslrecInCbcClass; + implOut: ptr SslrecOutCbcClass) {.inline.} = + cc.icbcIn = implIn + cc.icbcOut = implOut + +proc sslEngineSetGcm*(cc: ptr SslEngineContext; implIn: ptr SslrecInGcmClass; + implOut: ptr SslrecOutGcmClass) {.inline.} = + cc.igcmIn = implIn + cc.igcmOut = implOut + +proc sslEngineSetChapol*(cc: ptr SslEngineContext; implIn: ptr SslrecInChapolClass; + implOut: ptr SslrecOutChapolClass) {.inline.} = + cc.ichapolIn = implIn + cc.ichapolOut = implOut + +proc sslEngineSetEc*(cc: ptr SslEngineContext; iec: ptr EcImpl) {.inline.} = + cc.iec = iec + +proc sslEngineSetDefaultEc*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_ec", header: "bearssl_ssl.h".} + +proc sslEngineGetEc*(cc: ptr SslEngineContext): ptr EcImpl {.inline.} = + return cc.iec + +proc sslEngineSetRsavrfy*(cc: ptr SslEngineContext; irsavrfy: RsaPkcs1Vrfy) {.inline, + cdecl.} = + cc.irsavrfy = irsavrfy + +proc sslEngineSetDefaultRsavrfy*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_rsavrfy", header: "bearssl_ssl.h".} + +proc sslEngineGetRsavrfy*(cc: ptr SslEngineContext): RsaPkcs1Vrfy {.inline.} = + return cc.irsavrfy + +proc sslEngineSetEcdsa*(cc: ptr SslEngineContext; iecdsa: EcdsaVrfy) {.inline.} = + cc.iecdsa = iecdsa + +proc sslEngineSetDefaultEcdsa*(cc: ptr SslEngineContext) {.cdecl, + importc: "br_ssl_engine_set_default_ecdsa", header: "bearssl_ssl.h".} + +proc sslEngineGetEcdsa*(cc: ptr SslEngineContext): EcdsaVrfy {.inline.} = + return cc.iecdsa + +proc sslEngineSetBuffer*(cc: ptr SslEngineContext, iobuf: ptr byte, + iobufLen: uint, bidi: cint) {. + cdecl, importc: "br_ssl_engine_set_buffer", header: "bearssl_ssl.h".} + +proc sslEngineSetBuffersBidi*(cc: ptr SslEngineContext, ibuf: ptr byte, + ibufLen: uint, obuf: ptr byte, obufLen: uint) {. + cdecl, importc: "br_ssl_engine_set_buffers_bidi", header: "bearssl_ssl.h".} + +proc sslEngineInjectEntropy*(cc: ptr SslEngineContext; data: pointer; len: int) {. + cdecl, importc: "br_ssl_engine_inject_entropy", header: "bearssl_ssl.h".} + +proc sslEngineGetServerName*(cc: ptr SslEngineContext): cstring {.inline.} = + return addr cc.serverName + +proc sslEngineGetVersion*(cc: ptr SslEngineContext): cuint {.inline.} = + return cc.session.version + +proc sslEngineGetSessionParameters*(cc: ptr SslEngineContext; + pp: ptr SslSessionParameters) {.inline.} = + copyMem(pp, addr(cc.session), sizeof(pp[])) + +proc sslEngineSetSessionParameters*(cc: ptr SslEngineContext; + pp: ptr SslSessionParameters) {.inline.} = + copyMem(addr(cc.session), pp, sizeof(pp[])) + +proc sslEngineGetEcdheCurve*(cc: ptr SslEngineContext): cint {.inline.} = + return cint cc.ecdheCurve + +proc sslEngineCurrentState*(cc: ptr SslEngineContext): cuint {.cdecl, + importc: "br_ssl_engine_current_state", header: "bearssl_ssl.h".} + +const + SSL_CLOSED* = 0x00000001 + +const + SSL_SENDREC* = 0x00000002 + +const + SSL_RECVREC* = 0x00000004 + +const + SSL_SENDAPP* = 0x00000008 + +const + SSL_RECVAPP* = 0x00000010 + +proc sslEngineLastError*(cc: ptr SslEngineContext): cint {.inline.} = + return cc.err + +proc sslEngineSendappBuf*(cc: ptr SslEngineContext, + length: var uint): ptr byte {. + cdecl, importc: "br_ssl_engine_sendapp_buf", header: "bearssl_ssl.h".} + +proc sslEngineSendappAck*(cc: ptr SslEngineContext, + length: uint) {. + cdecl, importc: "br_ssl_engine_sendapp_ack", header: "bearssl_ssl.h".} + +proc sslEngineRecvappBuf*(cc: ptr SslEngineContext, + length: var uint): ptr byte {. + cdecl, importc: "br_ssl_engine_recvapp_buf", header: "bearssl_ssl.h".} + +proc sslEngineRecvappAck*(cc: ptr SslEngineContext, + length: uint) {. + cdecl, importc: "br_ssl_engine_recvapp_ack", header: "bearssl_ssl.h".} + +proc sslEngineSendrecBuf*(cc: ptr SslEngineContext, + length: var uint): ptr byte {. + cdecl, importc: "br_ssl_engine_sendrec_buf", header: "bearssl_ssl.h".} + +proc sslEngineSendrecAck*(cc: ptr SslEngineContext, + length: uint) {. + cdecl, importc: "br_ssl_engine_sendrec_ack", header: "bearssl_ssl.h".} + +proc sslEngineRecvrecBuf*(cc: ptr SslEngineContext, + length: var uint): ptr byte {. + cdecl, importc: "br_ssl_engine_recvrec_buf", header: "bearssl_ssl.h".} + +proc sslEngineRecvrecAck*(cc: ptr SslEngineContext; length: uint) {. + cdecl, importc: "br_ssl_engine_recvrec_ack", header: "bearssl_ssl.h".} + +proc sslEngineFlush*(cc: ptr SslEngineContext; force: cint) {. + cdecl, importc: "br_ssl_engine_flush", header: "bearssl_ssl.h".} + +proc sslEngineClose*(cc: ptr SslEngineContext) {. + cdecl, importc: "br_ssl_engine_close", header: "bearssl_ssl.h".} + +proc sslEngineRenegotiate*(cc: ptr SslEngineContext): cint {. + cdecl, importc: "br_ssl_engine_renegotiate", header: "bearssl_ssl.h".} + +proc sslKeyExport*(cc: ptr SslEngineContext; dst: pointer; len: int; label: cstring; + context: pointer; contextLen: int): cint {.cdecl, + importc: "br_ssl_key_export", header: "bearssl_ssl.h".} + +type + SslClientCertificate* {.importc: "br_ssl_client_certificate", + header: "bearssl_ssl.h", bycopy.} = object + authType* {.importc: "auth_type".}: cint + hashId* {.importc: "hash_id".}: cint + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + + +const + AUTH_ECDH* = 0 + +const + AUTH_RSA* = 1 + +const + AUTH_ECDSA* = 3 + +type + INNER_C_UNION_2478042450* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr SslClientCertificateClass + singleRsa* {.importc: "single_rsa".}: SslClientCertificateRsaContext + singleEc* {.importc: "single_ec".}: SslClientCertificateEcContext + + SslClientContext* {.importc: "br_ssl_client_context", header: "bearssl_ssl.h", + bycopy.} = object + eng* {.importc: "eng".}: SslEngineContext + minClienthelloLen* {.importc: "min_clienthello_len".}: uint16 + hashes* {.importc: "hashes".}: uint32 + serverCurve* {.importc: "server_curve".}: cint + clientAuthVtable* {.importc: "client_auth_vtable".}: ptr ptr SslClientCertificateClass + authType* {.importc: "auth_type".}: cuchar + hashId* {.importc: "hash_id".}: cuchar + clientAuth* {.importc: "client_auth".}: INNER_C_UNION_2478042450 + irsapub* {.importc: "irsapub".}: RsaPublic + + SslClientCertificateClass* {.importc: "br_ssl_client_certificate_class", + header: "bearssl_ssl.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + startNameList* {.importc: "start_name_list".}: proc ( + pctx: ptr ptr SslClientCertificateClass) {.cdecl.} + startName* {.importc: "start_name".}: proc ( + pctx: ptr ptr SslClientCertificateClass; len: int) {.cdecl.} + appendName* {.importc: "append_name".}: proc ( + pctx: ptr ptr SslClientCertificateClass; data: ptr cuchar; len: int) {.cdecl.} + endName* {.importc: "end_name".}: proc (pctx: ptr ptr SslClientCertificateClass) {. + cdecl.} + endNameList* {.importc: "end_name_list".}: proc ( + pctx: ptr ptr SslClientCertificateClass) {.cdecl.} + choose* {.importc: "choose".}: proc (pctx: ptr ptr SslClientCertificateClass; + cc: ptr SslClientContext; authTypes: uint32; + choices: ptr SslClientCertificate) {.cdecl.} + doKeyx* {.importc: "do_keyx".}: proc (pctx: ptr ptr SslClientCertificateClass; + data: ptr cuchar; len: ptr int): uint32 {. + cdecl.} + doSign* {.importc: "do_sign".}: proc (pctx: ptr ptr SslClientCertificateClass; + hashId: cint; hvLen: int; data: ptr cuchar; + len: int): int {.cdecl.} + + SslClientCertificateRsaContext* {.importc: "br_ssl_client_certificate_rsa_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslClientCertificateClass + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + sk* {.importc: "sk".}: ptr RsaPrivateKey + irsasign* {.importc: "irsasign".}: RsaPkcs1Sign + + SslClientCertificateEcContext* {.importc: "br_ssl_client_certificate_ec_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslClientCertificateClass + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + sk* {.importc: "sk".}: ptr EcPrivateKey + allowedUsages* {.importc: "allowed_usages".}: cuint + issuerKeyType* {.importc: "issuer_key_type".}: cuint + mhash* {.importc: "mhash".}: ptr MultihashContext + iec* {.importc: "iec".}: ptr EcImpl + iecdsa* {.importc: "iecdsa".}: EcdsaSign + + + +proc sslClientGetServerHashes*(cc: ptr SslClientContext): uint32 {.inline.} = + return cc.hashes + +proc sslClientGetServerCurve*(cc: ptr SslClientContext): cint {.inline.} = + return cc.serverCurve + +proc sslClientInitFull*(cc: ptr SslClientContext; xc: ptr X509MinimalContext; + trustAnchors: ptr X509TrustAnchor; trustAnchorsNum: int) {. + cdecl, importc: "br_ssl_client_init_full", header: "bearssl_ssl.h".} + +proc sslClientZero*(cc: ptr SslClientContext) {.cdecl, importc: "br_ssl_client_zero", + header: "bearssl_ssl.h".} + +proc sslClientSetClientCertificate*(cc: ptr SslClientContext; + pctx: ptr ptr SslClientCertificateClass) {. + inline.} = + cc.clientAuthVtable = pctx + +proc sslClientSetRsapub*(cc: ptr SslClientContext; irsapub: RsaPublic) {.inline.} = + cc.irsapub = irsapub + +proc sslClientSetDefaultRsapub*(cc: ptr SslClientContext) {.cdecl, + importc: "br_ssl_client_set_default_rsapub", header: "bearssl_ssl.h".} + +proc sslClientSetMinClienthelloLen*(cc: ptr SslClientContext; len: uint16) {.inline, + cdecl.} = + cc.minClienthelloLen = len + +proc sslClientReset*(cc: ptr SslClientContext; serverName: cstring; + resumeSession: cint): cint {.cdecl, + importc: "br_ssl_client_reset", header: "bearssl_ssl.h".} + +proc sslClientForgetSession*(cc: ptr SslClientContext) {.inline.} = + cc.eng.session.sessionIdLen = 0 + +proc sslClientSetSingleRsa*(cc: ptr SslClientContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr RsaPrivateKey; + irsasign: RsaPkcs1Sign) {.cdecl, + importc: "br_ssl_client_set_single_rsa", header: "bearssl_ssl.h".} + +proc sslClientSetSingleEc*(cc: ptr SslClientContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr EcPrivateKey; + allowedUsages: cuint; certIssuerKeyType: cuint; + iec: ptr EcImpl; iecdsa: EcdsaSign) {.cdecl, + importc: "br_ssl_client_set_single_ec", header: "bearssl_ssl.h".} + +type + SuiteTranslated* = array[2, uint16] + +when not defined(DOXYGEN_IGNORE): + const + SSLKEYX_RSA* = 0 + SSLKEYX_ECDHE_RSA* = 1 + SSLKEYX_ECDHE_ECDSA* = 2 + SSLKEYX_ECDH_RSA* = 3 + SSLKEYX_ECDH_ECDSA* = 4 + SSLENC_3DES_CBC* = 0 + SSLENC_AES128_CBC* = 1 + SSLENC_AES256_CBC* = 2 + SSLENC_AES128_GCM* = 3 + SSLENC_AES256_GCM* = 4 + SSLENC_CHACHA20* = 5 + SSLMAC_AEAD* = 0 + SSLMAC_SHA1* = sha1ID + SSLMAC_SHA256* = sha256ID + SSLMAC_SHA384* = sha384ID + SSLPRF_SHA256* = sha256ID + SSLPRF_SHA384* = sha384ID + +type + SslServerChoices* {.importc: "br_ssl_server_choices", header: "bearssl_ssl.h", + bycopy.} = object + cipherSuite* {.importc: "cipher_suite".}: uint16 + algoId* {.importc: "algo_id".}: cuint + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + + SslServerPolicyClass* {.importc: "br_ssl_server_policy_class", + header: "bearssl_ssl.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + choose* {.importc: "choose".}: proc (pctx: ptr ptr SslServerPolicyClass; + cc: ptr SslServerContext; + choices: ptr SslServerChoices): cint {.cdecl.} + doKeyx* {.importc: "do_keyx".}: proc (pctx: ptr ptr SslServerPolicyClass; + data: ptr cuchar; len: ptr int): uint32 {. + cdecl.} + doSign* {.importc: "do_sign".}: proc (pctx: ptr ptr SslServerPolicyClass; + algoId: cuint; data: ptr cuchar; hvLen: int; + len: int): int {.cdecl.} + + SslServerPolicyRsaContext* {.importc: "br_ssl_server_policy_rsa_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslServerPolicyClass + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + sk* {.importc: "sk".}: ptr RsaPrivateKey + allowedUsages* {.importc: "allowed_usages".}: cuint + irsacore* {.importc: "irsacore".}: RsaPrivate + irsasign* {.importc: "irsasign".}: RsaPkcs1Sign + + SslServerPolicyEcContext* {.importc: "br_ssl_server_policy_ec_context", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslServerPolicyClass + chain* {.importc: "chain".}: ptr X509Certificate + chainLen* {.importc: "chain_len".}: int + sk* {.importc: "sk".}: ptr EcPrivateKey + allowedUsages* {.importc: "allowed_usages".}: cuint + certIssuerKeyType* {.importc: "cert_issuer_key_type".}: cuint + mhash* {.importc: "mhash".}: ptr MultihashContext + iec* {.importc: "iec".}: ptr EcImpl + iecdsa* {.importc: "iecdsa".}: EcdsaSign + + INNER_C_UNION_537875083* {.importc: "no_name", header: "bearssl_ssl.h", bycopy.} = object {. + union.} + vtable* {.importc: "vtable".}: ptr SslServerPolicyClass + singleRsa* {.importc: "single_rsa".}: SslServerPolicyRsaContext + singleEc* {.importc: "single_ec".}: SslServerPolicyEcContext + + SslServerContext* {.importc: "br_ssl_server_context", header: "bearssl_ssl.h", + bycopy.} = object + eng* {.importc: "eng".}: SslEngineContext + clientMaxVersion* {.importc: "client_max_version".}: uint16 + cacheVtable* {.importc: "cache_vtable".}: ptr ptr SslSessionCacheClass + clientSuites* {.importc: "client_suites".}: array[MAX_CIPHER_SUITES, + SuiteTranslated] + clientSuitesNum* {.importc: "client_suites_num".}: cuchar + hashes* {.importc: "hashes".}: uint32 + curves* {.importc: "curves".}: uint32 + policyVtable* {.importc: "policy_vtable".}: ptr ptr SslServerPolicyClass + signHashId* {.importc: "sign_hash_id".}: uint16 + chainHandler* {.importc: "chain_handler".}: INNER_C_UNION_537875083 + ecdheKey* {.importc: "ecdhe_key".}: array[70, cuchar] + ecdheKeyLen* {.importc: "ecdhe_key_len".}: int + taNames* {.importc: "ta_names".}: ptr X500Name + tas* {.importc: "tas".}: ptr X509TrustAnchor + numTas* {.importc: "num_tas".}: int + curDnIndex* {.importc: "cur_dn_index".}: int + curDn* {.importc: "cur_dn".}: ptr cuchar + curDnLen* {.importc: "cur_dn_len".}: int + hashCV* {.importc: "hash_CV".}: array[64, cuchar] + hashCV_len* {.importc: "hash_CV_len".}: int + hashCV_id* {.importc: "hash_CV_id".}: cint + + + SslSessionCacheClass* {.importc: "br_ssl_session_cache_class", + header: "bearssl_ssl.h", bycopy.} = object + contextSize* {.importc: "context_size".}: int + save* {.importc: "save".}: proc (ctx: ptr ptr SslSessionCacheClass; + serverCtx: ptr SslServerContext; + params: ptr SslSessionParameters) {.cdecl.} + load* {.importc: "load".}: proc (ctx: ptr ptr SslSessionCacheClass; + serverCtx: ptr SslServerContext; + params: ptr SslSessionParameters): cint {.cdecl.} + + SslSessionCacheLru* {.importc: "br_ssl_session_cache_lru", + header: "bearssl_ssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr SslSessionCacheClass + store* {.importc: "store".}: ptr cuchar + storeLen* {.importc: "store_len".}: int + storePtr* {.importc: "store_ptr".}: int + indexKey* {.importc: "index_key".}: array[32, cuchar] + hash* {.importc: "hash".}: ptr HashClass + initDone* {.importc: "init_done".}: cint + head* {.importc: "head".}: uint32 + tail* {.importc: "tail".}: uint32 + root* {.importc: "root".}: uint32 + + +proc sslSessionCacheLruInit*(cc: ptr SslSessionCacheLru; store: ptr cuchar; + storeLen: int) {.cdecl, + importc: "br_ssl_session_cache_lru_init", header: "bearssl_ssl.h".} + +proc sslSessionCacheLruForget*(cc: ptr SslSessionCacheLru; id: ptr cuchar) {.cdecl, + importc: "br_ssl_session_cache_lru_forget", header: "bearssl_ssl.h".} + + +proc sslServerInitFullRsa*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, + importc: "br_ssl_server_init_full_rsa", header: "bearssl_ssl.h".} + +proc sslServerInitFullEc*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; certIssuerKeyType: cuint; + sk: ptr EcPrivateKey) {.cdecl, + importc: "br_ssl_server_init_full_ec", header: "bearssl_ssl.h".} + +proc sslServerInitMinr2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, + importc: "br_ssl_server_init_minr2g", header: "bearssl_ssl.h".} + +proc sslServerInitMine2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, + importc: "br_ssl_server_init_mine2g", header: "bearssl_ssl.h".} + +proc sslServerInitMinf2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr EcPrivateKey) {.cdecl, + importc: "br_ssl_server_init_minf2g", header: "bearssl_ssl.h".} + +proc sslServerInitMinu2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr EcPrivateKey) {.cdecl, + importc: "br_ssl_server_init_minu2g", header: "bearssl_ssl.h".} + +proc sslServerInitMinv2g*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr EcPrivateKey) {.cdecl, + importc: "br_ssl_server_init_minv2g", header: "bearssl_ssl.h".} + +proc sslServerInitMine2c*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr RsaPrivateKey) {.cdecl, + importc: "br_ssl_server_init_mine2c", header: "bearssl_ssl.h".} + +proc sslServerInitMinf2c*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr EcPrivateKey) {.cdecl, + importc: "br_ssl_server_init_minf2c", header: "bearssl_ssl.h".} + +proc sslServerGetClientSuites*(cc: ptr SslServerContext; num: ptr int): + ptr array[MAX_CIPHER_SUITES, SuiteTranslated] {. + inline.} = + num[] = int cc.clientSuitesNum + return addr cc.clientSuites + +proc sslServerGetClientHashes*(cc: ptr SslServerContext): uint32 {.inline.} = + return cc.hashes + +proc sslServerGetClientCurves*(cc: ptr SslServerContext): uint32 {.inline.} = + return cc.curves + +proc sslServerZero*(cc: ptr SslServerContext) {.cdecl, importc: "br_ssl_server_zero", + header: "bearssl_ssl.h".} + +proc sslServerSetPolicy*(cc: ptr SslServerContext; + pctx: ptr ptr SslServerPolicyClass) {.inline.} = + cc.policyVtable = pctx + +proc sslServerSetSingleRsa*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr RsaPrivateKey; + allowedUsages: cuint; irsacore: RsaPrivate; + irsasign: RsaPkcs1Sign) {.cdecl, + importc: "br_ssl_server_set_single_rsa", header: "bearssl_ssl.h".} + +proc sslServerSetSingleEc*(cc: ptr SslServerContext; chain: ptr X509Certificate; + chainLen: int; sk: ptr EcPrivateKey; + allowedUsages: cuint; certIssuerKeyType: cuint; + iec: ptr EcImpl; iecdsa: EcdsaSign) {.cdecl, + importc: "br_ssl_server_set_single_ec", header: "bearssl_ssl.h".} + +proc sslServerSetTrustAnchorNames*(cc: ptr SslServerContext; taNames: ptr X500Name; + num: int) {.inline.} = + cc.taNames = taNames + cc.tas = nil + cc.numTas = num + +proc sslServerSetTrustAnchorNamesAlt*(cc: ptr SslServerContext; + tas: ptr X509TrustAnchor; num: int) {.inline, + cdecl.} = + cc.taNames = nil + cc.tas = tas + cc.numTas = num + +proc sslServerSetCache*(cc: ptr SslServerContext; + vtable: ptr ptr SslSessionCacheClass) {.inline.} = + cc.cacheVtable = vtable + +proc sslServerReset*(cc: ptr SslServerContext): cint {.cdecl, + importc: "br_ssl_server_reset", header: "bearssl_ssl.h".} + +type + SslioContext* {.importc: "br_sslio_context", header: "bearssl_ssl.h", bycopy.} = object + engine* {.importc: "engine".}: ptr SslEngineContext + lowRead* {.importc: "low_read".}: proc (readContext: pointer; data: ptr cuchar; + len: int): cint {.cdecl.} + readContext* {.importc: "read_context".}: pointer + lowWrite* {.importc: "low_write".}: proc (writeContext: pointer; data: ptr cuchar; + len: int): cint {.cdecl.} + writeContext* {.importc: "write_context".}: pointer + + +proc sslioInit*(ctx: ptr SslioContext; engine: ptr SslEngineContext; lowRead: proc ( + readContext: pointer; data: ptr cuchar; len: int): cint {.cdecl.}; + readContext: pointer; lowWrite: proc (writeContext: pointer; + data: ptr cuchar; len: int): cint {.cdecl.}; writeContext: pointer) {.cdecl, + importc: "br_sslio_init", header: "bearssl_ssl.h".} + +proc sslioRead*(cc: ptr SslioContext; dst: pointer; len: int): cint {.cdecl, + importc: "br_sslio_read", header: "bearssl_ssl.h".} + +proc sslioReadAll*(cc: ptr SslioContext; dst: pointer; len: int): cint {.cdecl, + importc: "br_sslio_read_all", header: "bearssl_ssl.h".} + +proc sslioWrite*(cc: ptr SslioContext; src: pointer; len: int): cint {.cdecl, + importc: "br_sslio_write", header: "bearssl_ssl.h".} + +proc sslioWriteAll*(cc: ptr SslioContext; src: pointer; len: int): cint {.cdecl, + importc: "br_sslio_write_all", header: "bearssl_ssl.h".} + +proc sslioFlush*(cc: ptr SslioContext): cint {.cdecl, importc: "br_sslio_flush", + header: "bearssl_ssl.h".} + +proc sslioClose*(cc: ptr SslioContext): cint {.cdecl, importc: "br_sslio_close", + header: "bearssl_ssl.h".} + +const + TLS_NULL_WITH_NULL_NULL* = 0x00000000 + TLS_RSA_WITH_NULL_MD5* = 0x00000001 + TLS_RSA_WITH_NULL_SHA* = 0x00000002 + TLS_RSA_WITH_NULL_SHA256* = 0x0000003B + TLS_RSA_WITH_RC4_128_MD5* = 0x00000004 + TLS_RSA_WITH_RC4_128_SHA* = 0x00000005 + TLS_RSA_WITH_3DES_EDE_CBC_SHA* = 0x0000000A + TLS_RSA_WITH_AES_128_CBC_SHA* = 0x0000002F + TLS_RSA_WITH_AES_256_CBC_SHA* = 0x00000035 + TLS_RSA_WITH_AES_128_CBC_SHA256* = 0x0000003C + TLS_RSA_WITH_AES_256_CBC_SHA256* = 0x0000003D + TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA* = 0x0000000D + TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA* = 0x00000010 + TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA* = 0x00000013 + TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA* = 0x00000016 + TLS_DH_DSS_WITH_AES_128_CBC_SHA* = 0x00000030 + TLS_DH_RSA_WITH_AES_128_CBC_SHA* = 0x00000031 + TLS_DHE_DSS_WITH_AES_128_CBC_SHA* = 0x00000032 + TLS_DHE_RSA_WITH_AES_128_CBC_SHA* = 0x00000033 + TLS_DH_DSS_WITH_AES_256_CBC_SHA* = 0x00000036 + TLS_DH_RSA_WITH_AES_256_CBC_SHA* = 0x00000037 + TLS_DHE_DSS_WITH_AES_256_CBC_SHA* = 0x00000038 + TLS_DHE_RSA_WITH_AES_256_CBC_SHA* = 0x00000039 + TLS_DH_DSS_WITH_AES_128_CBC_SHA256* = 0x0000003E + TLS_DH_RSA_WITH_AES_128_CBC_SHA256* = 0x0000003F + TLS_DHE_DSS_WITH_AES_128_CBC_SHA256* = 0x00000040 + TLS_DHE_RSA_WITH_AES_128_CBC_SHA256* = 0x00000067 + TLS_DH_DSS_WITH_AES_256_CBC_SHA256* = 0x00000068 + TLS_DH_RSA_WITH_AES_256_CBC_SHA256* = 0x00000069 + TLS_DHE_DSS_WITH_AES_256_CBC_SHA256* = 0x0000006A + TLS_DHE_RSA_WITH_AES_256_CBC_SHA256* = 0x0000006B + TLS_DH_anonWITH_RC4128MD5* = 0x00000018 + TLS_DH_anonWITH_3DES_EDE_CBC_SHA* = 0x0000001B + TLS_DH_anonWITH_AES_128CBC_SHA* = 0x00000034 + TLS_DH_anonWITH_AES_256CBC_SHA* = 0x0000003A + TLS_DH_anonWITH_AES_128CBC_SHA256* = 0x0000006C + TLS_DH_anonWITH_AES_256CBC_SHA256* = 0x0000006D + +const + TLS_ECDH_ECDSA_WITH_NULL_SHA* = 0x0000C001 + TLS_ECDH_ECDSA_WITH_RC4_128_SHA* = 0x0000C002 + TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C003 + TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA* = 0x0000C004 + TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA* = 0x0000C005 + TLS_ECDHE_ECDSA_WITH_NULL_SHA* = 0x0000C006 + TLS_ECDHE_ECDSA_WITH_RC4_128_SHA* = 0x0000C007 + TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C008 + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA* = 0x0000C009 + TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA* = 0x0000C00A + TLS_ECDH_RSA_WITH_NULL_SHA* = 0x0000C00B + TLS_ECDH_RSA_WITH_RC4_128_SHA* = 0x0000C00C + TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C00D + TLS_ECDH_RSA_WITH_AES_128_CBC_SHA* = 0x0000C00E + TLS_ECDH_RSA_WITH_AES_256_CBC_SHA* = 0x0000C00F + TLS_ECDHE_RSA_WITH_NULL_SHA* = 0x0000C010 + TLS_ECDHE_RSA_WITH_RC4_128_SHA* = 0x0000C011 + TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA* = 0x0000C012 + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA* = 0x0000C013 + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA* = 0x0000C014 + TLS_ECDH_anonWITH_NULL_SHA* = 0x0000C015 + TLS_ECDH_anonWITH_RC4128SHA* = 0x0000C016 + TLS_ECDH_anonWITH_3DES_EDE_CBC_SHA* = 0x0000C017 + TLS_ECDH_anonWITH_AES_128CBC_SHA* = 0x0000C018 + TLS_ECDH_anonWITH_AES_256CBC_SHA* = 0x0000C019 + +const + TLS_RSA_WITH_AES_128_GCM_SHA256* = 0x0000009C + TLS_RSA_WITH_AES_256_GCM_SHA384* = 0x0000009D + TLS_DHE_RSA_WITH_AES_128_GCM_SHA256* = 0x0000009E + TLS_DHE_RSA_WITH_AES_256_GCM_SHA384* = 0x0000009F + TLS_DH_RSA_WITH_AES_128_GCM_SHA256* = 0x000000A0 + TLS_DH_RSA_WITH_AES_256_GCM_SHA384* = 0x000000A1 + TLS_DHE_DSS_WITH_AES_128_GCM_SHA256* = 0x000000A2 + TLS_DHE_DSS_WITH_AES_256_GCM_SHA384* = 0x000000A3 + TLS_DH_DSS_WITH_AES_128_GCM_SHA256* = 0x000000A4 + TLS_DH_DSS_WITH_AES_256_GCM_SHA384* = 0x000000A5 + TLS_DH_anonWITH_AES_128GCM_SHA256* = 0x000000A6 + TLS_DH_anonWITH_AES_256GCM_SHA384* = 0x000000A7 + +const + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256* = 0x0000C023 + TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384* = 0x0000C024 + TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256* = 0x0000C025 + TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384* = 0x0000C026 + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256* = 0x0000C027 + TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384* = 0x0000C028 + TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256* = 0x0000C029 + TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384* = 0x0000C02A + TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256* = 0x0000C02B + TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384* = 0x0000C02C + TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256* = 0x0000C02D + TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384* = 0x0000C02E + TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256* = 0x0000C02F + TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384* = 0x0000C030 + TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256* = 0x0000C031 + TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384* = 0x0000C032 + +const + TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCA8 + TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCA9 + TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAA + TLS_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAB + TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAC + TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAD + TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256* = 0x0000CCAE + +const + TLS_FALLBACK_SCSV* = 0x00005600 + +const + ALERT_CLOSE_NOTIFY* = 0 + ALERT_UNEXPECTED_MESSAGE* = 10 + ALERT_BAD_RECORD_MAC* = 20 + ALERT_RECORD_OVERFLOW* = 22 + ALERT_DECOMPRESSION_FAILURE* = 30 + ALERT_HANDSHAKE_FAILURE* = 40 + ALERT_BAD_CERTIFICATE* = 42 + ALERT_UNSUPPORTED_CERTIFICATE* = 43 + ALERT_CERTIFICATE_REVOKED* = 44 + ALERT_CERTIFICATE_EXPIRED* = 45 + ALERT_CERTIFICATE_UNKNOWN* = 46 + ALERT_ILLEGAL_PARAMETER* = 47 + ALERT_UNKNOWN_CA* = 48 + ALERT_ACCESS_DENIED* = 49 + ALERT_DECODE_ERROR* = 50 + ALERT_DECRYPT_ERROR* = 51 + ALERT_PROTOCOL_VERSION* = 70 + ALERT_INSUFFICIENT_SECURITY* = 71 + ALERT_INTERNAL_ERROR* = 80 + ALERT_USER_CANCELED* = 90 + ALERT_NO_RENEGOTIATION* = 100 + ALERT_UNSUPPORTED_EXTENSION* = 110 + ALERT_NO_APPLICATION_PROTOCOL* = 120 + +type + INNER_C_STRUCT_1475532182* {.importc: "no_name", header: "bearssl_pem.h", bycopy.} = object + dp* {.importc: "dp".}: ptr uint32 + rp* {.importc: "rp".}: ptr uint32 + ip* {.importc: "ip".}: ptr cuchar + + PemDecoderContext* {.importc: "br_pem_decoder_context", header: "bearssl_pem.h", + bycopy.} = object + cpu* {.importc: "cpu".}: INNER_C_STRUCT_1475532182 + dpStack* {.importc: "dp_stack".}: array[32, uint32] + rpStack* {.importc: "rp_stack".}: array[32, uint32] + err* {.importc: "err".}: cint + hbuf* {.importc: "hbuf".}: ptr cuchar + hlen* {.importc: "hlen".}: int + dest* {.importc: "dest".}: proc (destCtx: pointer; src: pointer; len: int) {.cdecl.} + destCtx* {.importc: "dest_ctx".}: pointer + event* {.importc: "event".}: cuchar + name* {.importc: "name".}: array[128, char] + buf* {.importc: "buf".}: array[255, cuchar] + `ptr`* {.importc: "ptr".}: int + + +proc pemDecoderInit*(ctx: ptr PemDecoderContext) {.cdecl, + importc: "br_pem_decoder_init", header: "bearssl_pem.h".} + +proc pemDecoderPush*(ctx: ptr PemDecoderContext; data: pointer; len: int): int {. + cdecl, importc: "br_pem_decoder_push", header: "bearssl_pem.h".} + +proc pemDecoderSetdest*(ctx: ptr PemDecoderContext; dest: proc (destCtx: pointer; + src: pointer; len: int) {.cdecl.}; destCtx: pointer) {.inline.} = + ctx.dest = dest + ctx.destCtx = destCtx + +proc pemDecoderEvent*(ctx: ptr PemDecoderContext): cint {.cdecl, + importc: "br_pem_decoder_event", header: "bearssl_pem.h".} + +const + PEM_BEGIN_OBJ* = 1 + +const + PEM_END_OBJ* = 2 + +const + PEM_ERROR* = 3 + +proc pemDecoderName*(ctx: ptr PemDecoderContext): cstring {.inline.} = + return addr ctx.name + +type + ConfigOption* {.importc: "br_config_option", header: "bearssl.h", bycopy.} = object + name* {.importc: "name".}: cstring + value* {.importc: "value".}: clong + + +proc getConfig*(): ptr ConfigOption {.cdecl, importc: "br_get_config", + header: "bearssl.h".} + +const + BR_EC_SECP256R1* = 23 + BR_EC_SECP384R1* = 24 + BR_EC_SECP521R1* = 25 + + BR_EC_KBUF_PRIV_MAX_SIZE* = 72 + BR_EC_KBUF_PUB_MAX_SIZE* = 145 + +type + X509NoAnchorContext* {.importc: "x509_noanchor_context", + header: "brssl.h", bycopy.} = object + vtable* {.importc: "vtable".}: ptr X509Class + +proc initNoAnchor*(xwc: ptr X509NoAnchorContext, inner: ptr ptr X509Class) {. + cdecl, importc: "x509_noanchor_init", header: "brssl.h".} + +# Following declarations are used inside `nim-libp2p`. + +type + BrHashClass* = HashClass + BrMd5Context* = Md5Context + BrMd5sha1Context* = Md5sha1Context + BrSha512Context* = Sha384Context + BrSha384Context* = Sha384Context + BrSha256Context* = Sha224Context + BrSha224Context* = Sha224Context + BrHashCompatContext* = HashCompatContext + BrPrngClass* = PrngClass + BrHmacDrbgContext* = HmacDrbgContext + BrRsaPublicKey* = RsaPublicKey + BrRsaPrivateKey* = RsaPrivateKey + BrEcPublicKey* = EcPublicKey + BrEcPrivateKey* = EcPrivateKey + BrEcImplementation* = EcImpl + BrPrngSeeder* = PrngSeeder + BrRsaKeygen* = proc (ctx: ptr ptr BrPrngClass, + sk: ptr BrRsaPrivateKey, bufsec: ptr byte, + pk: ptr BrRsaPublicKey, bufpub: ptr byte, + size: cuint, pubexp: uint32): uint32 {.cdecl.} + BrRsaComputeModulus* = proc (n: pointer, + sk: ptr BrRsaPrivateKey): int {.cdecl.} + BrRsaComputePubexp* = proc (sk: ptr BrRsaPrivateKey): uint32 {.cdecl.} + BrRsaComputePrivexp* = proc (d: pointer, + sk: ptr BrRsaPrivateKey, + pubexp: uint32): int {.cdecl.} + BrRsaPkcs1Verify* = proc (x: ptr cuchar, xlen: int, + hash_oid: ptr cuchar, hash_len: int, + pk: ptr BrRsaPublicKey, + hash_out: ptr cuchar): uint32 {.cdecl.} + BrPemDecoderProc* = proc (destctx: pointer, src: pointer, + length: int) {.cdecl.} + BrRsaPkcs1Sign* = RsaPkcs1Sign + +proc brPrngSeederSystem*(name: cstringArray): BrPrngSeeder {.cdecl, + importc: "br_prng_seeder_system", header: "bearssl_rand.h".} + +proc brHmacDrbgInit*(ctx: ptr BrHmacDrbgContext, digestClass: ptr BrHashClass, + seed: pointer, seedLen: int) {. + cdecl, importc: "br_hmac_drbg_init", header: "bearssl_rand.h".} + +proc brRsaKeygenGetDefault*(): BrRsaKeygen {. + cdecl, importc: "br_rsa_keygen_get_default", header: "bearssl_rsa.h".} + +proc BrRsaPkcs1SignGetDefault*(): BrRsaPkcs1Sign {. + cdecl, importc: "br_rsa_pkcs1_sign_get_default", header: "bearssl_rsa.h".} + +proc BrRsaPkcs1VrfyGetDefault*(): BrRsaPkcs1Verify {. + cdecl, importc: "br_rsa_pkcs1_vrfy_get_default", header: "bearssl_rsa.h".} + +proc brRsaComputeModulusGetDefault*(): BrRsaComputeModulus {. + cdecl, importc: "br_rsa_compute_modulus_get_default", + header: "bearssl_rsa.h".} + +proc brRsaComputePubexpGetDefault*(): BrRsaComputePubexp {. + cdecl, importc: "br_rsa_compute_pubexp_get_default", + header: "bearssl_rsa.h".} + +proc brRsaComputePrivexpGetDefault*(): BrRsaComputePrivexp {. + cdecl, importc: "br_rsa_compute_privexp_get_default", + header: "bearssl_rsa.h".} + +proc brEcGetDefault*(): ptr BrEcImplementation {. + cdecl, importc: "br_ec_get_default", header: "bearssl_ec.h".} + +proc brEcKeygen*(ctx: ptr ptr BrPrngClass, impl: ptr BrEcImplementation, + sk: ptr BrEcPrivateKey, keybuf: ptr byte, + curve: cint): int {.cdecl, + importc: "br_ec_keygen", header: "bearssl_ec.h".} + +proc brEcComputePublicKey*(impl: ptr BrEcImplementation, pk: ptr BrEcPublicKey, + kbuf: ptr byte, sk: ptr BrEcPrivateKey): int {. + cdecl, importc: "br_ec_compute_pub", header: "bearssl_ec.h".} + +proc brEcdsaSignRaw*(impl: ptr BrEcImplementation, hf: ptr BrHashClass, + value: pointer, sk: ptr BrEcPrivateKey, + sig: pointer): int {. + cdecl, importc: "br_ecdsa_i31_sign_raw", header: "bearssl_ec.h".} + +proc brEcdsaVerifyRaw*(impl: ptr BrEcImplementation, hash: pointer, + hashlen: int, pk: ptr BrEcPublicKey, sig: pointer, + siglen: int): uint32 {. + cdecl, importc: "br_ecdsa_i31_vrfy_raw", header: "bearssl_ec.h".} + +proc brEcdsaSignAsn1*(impl: ptr BrEcImplementation, hf: ptr BrHashClass, + value: pointer, sk: ptr BrEcPrivateKey, + sig: pointer): int {. + cdecl, importc: "br_ecdsa_i31_sign_asn1", header: "bearssl_ec.h".} + +proc brEcdsaVerifyAsn1*(impl: ptr BrEcImplementation, hash: pointer, + hashlen: int, pk: ptr BrEcPublicKey, sig: pointer, + siglen: int): uint32 {. + cdecl, importc: "br_ecdsa_i31_vrfy_asn1", header: "bearssl_ec.h".} + +template brRsaPrivateKeyBufferSize*(size: int): int = + # BR_RSA_KBUF_PRIV_SIZE(size) + (5 * ((size + 15) shr 4)) + +template brRsaPublicKeyBufferSize*(size: int): int = + # BR_RSA_KBUF_PUB_SIZE(size) + (4 + ((size + 7) shr 3)) diff --git a/bearssl/errors.nim b/bearssl/errors.nim new file mode 100644 index 0000000..56d7d90 --- /dev/null +++ b/bearssl/errors.nim @@ -0,0 +1,187 @@ +## Nim-BearSSL +## Copyright (c) 2018 Status Research & Development GmbH +## Licensed under either of +## * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE)) +## * MIT license ([LICENSE-MIT](LICENSE-MIT)) +## at your option. +## This file may not be copied, modified, or distributed except according to +## those terms. + +## This module provides error messages for BearSSL's error codes. + +type + BearSslError* {.pure.} = enum + NoError = 0, + BadParam = 1, + BadState = 2, + UnsupportedVersion = 3, + BadVersion = 4, + BadLength = 5, + TooLarge = 6, + BadMac = 7, + NoRandom = 8, + UnknownType = 9, + UnexpectedError = 10, + BadCcs = 12, + BadAlert = 13, + BadHandshake = 14, + OversizedIdError = 15, + BadCipherSuite = 16, + BadCompression = 17, + BadFraglen = 18, + BadSecReneg = 19, + ExtraExtensionError = 20, + BadSni = 21, + BadHelloDone = 22, + LimitExceeded = 23, + BadFinished = 24, + ResumeMismatch = 25, + InvalidAlgorithm = 26, + BadSignature = 27, + WrongKeyUsage = 28, + NoClientAuth = 29, + SslIoError = 31, + X509NoError = 32, + X509InvalidValue = 33, + X509TruncatedError = 34, + X509EmptyChain = 35, + X509InnerTrunc = 36, + X509BadTagClass = 37, + X509BadTagValue = 38, + X509IndefiniteLength = 39, + X509ExtraElement = 40, + X509UnexpectedError = 41, + X509NotConstructed = 42, + X509NotPrimitive = 43, + X509PartialByte = 44, + X509BadBoolean = 45, + X509Overflow = 46, + X509BadDn = 47, + X509BadTime = 48, + X509Unsupported = 49, + X509LimitExceeded = 50, + X509WrongKeyType = 51, + X509BadSignature = 52, + X509TimeUnknown = 53, + X509Expired = 54, + X509DnMismatch = 55, + X509BadServerName = 56, + X509CriticalExtension = 57, + X509NotCa = 58, + X509ForbiddenKeyUsage = 59, + X509WeakPublicKey = 60, + X509NotTrusted = 62, + RecvFatalAlert = 256, + SendFatalAlert = 512 + +const + SSLErrors = [ + (NoError, "No error"), + (BadParam, "Caller-provided parameter is incorrect"), + (BadState, "Operation requested by the caller cannot be applied with " & + "the current context state (e.g. reading data while " & + "outgoing data is waiting to be sent)"), + (UnsupportedVersion, "Incoming protocol or record version is unsupported"), + (BadVersion, "Incoming record version does not match the expected version"), + (BadLength, "Incoming record length is invalid"), + (TooLarge, "Incoming record is too large to be processed, or buffer is " & + "too small for the handshake message to send"), + (BadMac, "Decryption found an invalid padding, or the record MAC is " & + "not correct"), + (NoRandom, "No initial entropy was provided, and none can be obtained " & + "from the OS"), + (UnknownType, "Incoming record type is unknown"), + (UnexpectedError, "Incoming record or message has wrong type with " & + "regards to the current engine state"), + (BadCcs, "ChangeCipherSpec message from the peer has invalid contents"), + (BadAlert, "Alert message from the peer has invalid contents (odd length)"), + (BadHandshake, "Incoming handshake message decoding failed."), + (OversizedIdError, "ServerHello contains a session ID which is larger " & + "than 32 bytes"), + (BadCipherSuite, "Server wants to use a cipher suite that we did not " & + "claim to support. This is also reported if we tried " & + "to advertise a cipher suite that we do not support"), + (BadCompression, "Server wants to use a compression that we did not " & + "claim to support"), + (BadFraglen, "Server's max fragment length does not match client's"), + (BadSecReneg, "Secure renegotiation failed"), + (ExtraExtensionError, "Server sent an extension type that we did not " & + "announce, or used the same extension type several " & + "times in a single ServerHello"), + (BadSni, "Invalid Server Name Indication contents (when used by the " & + "server, this extension shall be empty)"), + (BadHelloDone, "Invalid ServerHelloDone from the server (length is not 0)"), + (LimitExceeded, "Internal limit exceeded (e.g. server's public key is " & + "too large)"), + (BadFinished, "Finished message from peer does not match the expected " & + "value"), + (ResumeMismatch, "Session resumption attempt with distinct version or " & + "cipher suite"), + (InvalidAlgorithm, "Unsupported or invalid algorithm (ECDHE curve, " & + "signature algorithm, hash function"), + (BadSignature, "Invalid signature (on ServerKeyExchange from server, " & + "or in CertificateVerify from client)"), + (WrongKeyUsage, "Peer's public key does not have the proper type or is " & + "not allowed for requested operation"), + (NoClientAuth, "Client did not send a certificate upon request, or the " & + "client certificate could not be validated"), + (SslIoError, "I/O error or premature close on underlying transport stream"), + (X509NoError, "Validation was successful"), + (X509InvalidValue, "Invalid value in an ASN.1 structure"), + (X509TruncatedError, "Truncated certificate"), + (X509EmptyChain, "Empty certificate chain (no certificate at all)"), + (X509InnerTrunc, "Decoding error: inner element extends beyond"), + (X509BadTagClass, "Decoding error: unsupported tag class (application " & + "or private)"), + (X509BadTagValue, "Decoding error: unsupported tag value"), + (X509IndefiniteLength, "Decoding error: indefinite length"), + (X509ExtraElement, "Decoding error: extraneous element"), + (X509UnexpectedError, "Decoding error: unexpected element"), + (X509NotConstructed, "Decoding error: expected constructed element, but " & + "is primitive"), + (X509NotPrimitive, "Decoding error: expected primitive element, but is " & + "constructed"), + (X509PartialByte, "Decoding error: BIT STRING length is not multiple of 8"), + (X509BadBoolean, "Decoding error: BOOLEAN value has invalid length"), + (X509Overflow, "Decoding error: value is off-limits"), + (X509BadDn, "Invalid distinguished name"), + (X509BadTime, "Invalid date/time representation"), + (X509Unsupported, "Certificate contains unsupported features that " & + "cannot be ignored"), + (X509LimitExceeded, "Key or signature size exceeds internal limits"), + (X509WrongKeyType, "Key type does not match that which was expected."), + (X509BadSignature, "Signature is invalid"), + (X509TimeUnknown, "Validation time is unknown"), + (X509Expired, "Certificate is expired or not yet valid"), + (X509DnMismatch, "Issuer/subject DN mismatch in the chain"), + (X509BadServerName, "Expected server name was not found in the chain"), + (X509CriticalExtension, "Unknown critical extension in certificate"), + (X509NotCa, "Not a CA, or path length constraint violation"), + (X509ForbiddenKeyUsage, "Key Usage extension prohibits intended usage"), + (X509WeakPublicKey, "Public key found in certificate is too small"), + (X509NotTrusted, "Chain could not be linked to a trust anchor") + ] + +proc bearSslErrorMsg*(code: cint): string = + ## Converts BearSSL integer error code to string representation. + if int(code) > int(SendFatalAlert): + let err = int(code) - int(SendFatalAlert) + result = "(SendFatalAlert) Fatal alert (" & $err & ") sent to the peer" + elif int(code) > int(RecvFatalAlert): + let err = int(code) - int(RecvFatalAlert) + result = "(RecvFatalAlert) Fatal alert (" & $err & + ") received from the peer" + else: + for item in SSLErrors: + if int(item[0]) == int(code): + result = "(" & $cast[BearSslError](code) & ") " & item[1] + break + if len(result) == 0: + result = "(" & $code & ") Unknown error" + +proc bearSslErrorMsg*(code: BearSslError): string = + ## Converts enum error to string representation. + for item in SSLErrors: + if item[0] == code: + result = "(" & $code & ") " & item[1] + break