Mbed Cloud example program for workshop in W27 2018.

Dependencies:   MMA7660 LM75B

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers pal_crypto_test_data.h Source File

pal_crypto_test_data.h

00001 typedef struct palAesTestVector{
00002     unsigned char key[16];
00003     unsigned char nonce[16];
00004     unsigned char input[16];
00005     unsigned char output[16];
00006 } palAesTestVector_t;
00007 
00008 const palAesTestVector_t CtrVector =
00009 {
00010         {
00011                 0xAE, 0x68, 0x52, 0xF8, 0x12, 0x10, 0x67, 0xCC,
00012                 0x4B, 0xF7, 0xA5, 0x76, 0x55, 0x77, 0xF3, 0x9E
00013         },
00014         {
00015                 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
00016                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
00017         },
00018         {
00019                 0x53, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62,
00020                 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6D, 0x73, 0x67
00021         },
00022         {
00023                 0xE4, 0x09, 0x5D, 0x4F, 0xB7, 0xA7, 0xB3, 0x79,
00024                 0x2D, 0x61, 0x75, 0xA3, 0x26, 0x13, 0x11, 0xB8
00025         }
00026 };
00027 
00028 const palAesTestVector_t EcbVector =
00029 {
00030         {
00031                 0xAE, 0x68, 0x52, 0xF8, 0x12, 0x10, 0x67, 0xCC,
00032                 0x4B, 0xF7, 0xA5, 0x76, 0x55, 0x77, 0xF3, 0x9E
00033         },
00034         {
00035                 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
00036                 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
00037         },
00038         {
00039                 0x53, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62,
00040                 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6D, 0x73, 0x67
00041         },
00042         {
00043                 0x61, 0x5f, 0x09, 0xfb, 0x35, 0x3f, 0x61, 0x3b,
00044                 0xa2, 0x8f, 0xf3, 0xa3, 0x0c, 0x64, 0x75, 0x2d
00045         }
00046 };
00047 
00048 
00049 
00050 typedef struct palSha256Vector_2nd{
00051     size_t inLenInBytes;
00052     size_t outLenInBytes;
00053     unsigned char output[32];
00054     unsigned char input[1000];
00055 } palSha256Vector_2nd_t;
00056 
00057 palSha256Vector_2nd_t sha256Vectors_2nd ={
00058         955,
00059         32,
00060         {
00061                 0x41, 0x09, 0xcd, 0xbe, 0xc3, 0x24, 0x0a, 0xd7, 0x4c, 0xc6,0xc3, 0x7f, 0x39, 0x30, 0x0f, 0x70,
00062                 0xfe, 0xde, 0x16, 0xe2, 0x1e, 0xfc, 0x77, 0xf7, 0x86, 0x59,0x98, 0x71, 0x4a, 0xad, 0x0b, 0x5e
00063         },
00064         {
00065                 0x83, 0x90, 0xcf, 0x0b, 0xe0, 0x76, 0x61, 0xcc, 0x76, 0x69, 0xaa, 0xc5, 0x4c, 0xe0, 0x9a, 0x37,
00066                 0x73, 0x3a, 0x62, 0x9d, 0x45, 0xf5, 0xd9, 0x83, 0xef, 0x20, 0x1f, 0x9b, 0x2d, 0x13, 0x80, 0x0e,
00067                 0x55, 0x5d, 0x9b, 0x10, 0x97, 0xfe, 0xc3, 0xb7, 0x83, 0xd7, 0xa5, 0x0d, 0xcb, 0x5e, 0x2b, 0x64,
00068                 0x4b, 0x96, 0xa1, 0xe9, 0x46, 0x3f, 0x17, 0x7c, 0xf3, 0x49, 0x06, 0xbf, 0x38, 0x8f, 0x36, 0x6d,
00069                 0xb5, 0xc2, 0xde, 0xee, 0x04, 0xa3, 0x0e, 0x28, 0x3f, 0x76, 0x4a, 0x97, 0xc3, 0xb3, 0x77, 0xa0,
00070                 0x34, 0xfe, 0xfc, 0x22, 0xc2, 0x59, 0x21, 0x4f, 0xaa, 0x99, 0xba, 0xba, 0xff, 0x16, 0x0a, 0xb0,
00071                 0xaa, 0xa7, 0xe2, 0xcc, 0xb0, 0xce, 0x09, 0xc6, 0xb3, 0x2f, 0xe0, 0x8c, 0xbc, 0x47, 0x46, 0x94,
00072                 0x37, 0x5a, 0xba, 0x70, 0x3f, 0xad, 0xbf, 0xa3, 0x1c, 0xf6, 0x85, 0xb3, 0x0a, 0x11, 0xc5, 0x7f,
00073                 0x3c, 0xf4, 0xed, 0xd3, 0x21, 0xe5, 0x7d, 0x3a, 0xe6, 0xeb, 0xb1, 0x13, 0x3c, 0x82, 0x60, 0xe7,
00074                 0x5b, 0x92, 0x24, 0xfa, 0x47, 0xa2, 0xbb, 0x20, 0x52, 0x49, 0xad, 0xd2, 0xe2, 0xe6, 0x2f, 0x81,
00075                 0x74, 0x91, 0x48, 0x2a, 0xe1, 0x52, 0x32, 0x2b, 0xe0, 0x90, 0x03, 0x55, 0xcd, 0xcc, 0x8d, 0x42,
00076                 0xa9, 0x8f, 0x82, 0xe9, 0x61, 0xa0, 0xdc, 0x6f, 0x53, 0x7b, 0x7b, 0x41, 0x0e, 0xff, 0x10, 0x5f,
00077                 0x59, 0x67, 0x3b, 0xfb, 0x78, 0x7b, 0xf0, 0x42, 0xaa, 0x07, 0x1f, 0x7a, 0xf6, 0x8d, 0x94, 0x4d,
00078                 0x27, 0x37, 0x1c, 0x64, 0x16, 0x0f, 0xe9, 0x38, 0x27, 0x72, 0x37, 0x25, 0x16, 0xc2, 0x30, 0xc1,
00079                 0xf4, 0x5c, 0x0d, 0x6b, 0x6c, 0xca, 0x7f, 0x27, 0x4b, 0x39, 0x4d, 0xa9, 0x40, 0x2d, 0x3e, 0xaf,
00080                 0xdf, 0x73, 0x39, 0x94, 0xec, 0x58, 0xab, 0x22, 0xd7, 0x18, 0x29, 0xa9, 0x83, 0x99, 0x57, 0x4d,
00081                 0x4b, 0x59, 0x08, 0xa4, 0x47, 0xa5, 0xa6, 0x81, 0xcb, 0x0d, 0xd5, 0x0a, 0x31, 0x14, 0x53, 0x11,
00082                 0xd9, 0x2c, 0x22, 0xa1, 0x6d, 0xe1, 0xea, 0xd6, 0x6a, 0x54, 0x99, 0xf2, 0xdc, 0xeb, 0x4c, 0xae,
00083                 0x69, 0x47, 0x72, 0xce, 0x90, 0x76, 0x2e, 0xf8, 0x33, 0x6a, 0xfe, 0xc6, 0x53, 0xaa, 0x9b, 0x1a,
00084                 0x1c, 0x48, 0x20, 0xb2, 0x21, 0x13, 0x6d, 0xfc, 0xe8, 0x0d, 0xce, 0x2b, 0xa9, 0x20, 0xd8, 0x8a,
00085                 0x53, 0x0c, 0x94, 0x10, 0xd0, 0xa4, 0xe0, 0x35, 0x8a, 0x3a, 0x11, 0x05, 0x2e, 0x58, 0xdd, 0x73,
00086                 0xb0, 0xb1, 0x79, 0xef, 0x8f, 0x56, 0xfe, 0x3b, 0x5a, 0x2d, 0x11, 0x7a, 0x73, 0xa0, 0xc3, 0x8a,
00087                 0x13, 0x92, 0xb6, 0x93, 0x8e, 0x97, 0x82, 0xe0, 0xd8, 0x64, 0x56, 0xee, 0x48, 0x84, 0xe3, 0xc3,
00088                 0x9d, 0x4d, 0x75, 0x81, 0x3f, 0x13, 0x63, 0x3b, 0xc7, 0x9b, 0xaa, 0x07, 0xc0, 0xd2, 0xd5, 0x55,
00089                 0xaf, 0xbf, 0x20, 0x7f, 0x52, 0xb7, 0xdc, 0xa1, 0x26, 0xd0, 0x15, 0xaa, 0x2b, 0x98, 0x73, 0xb3,
00090                 0xeb, 0x06, 0x5e, 0x90, 0xb9, 0xb0, 0x65, 0xa5, 0x37, 0x3f, 0xe1, 0xfb, 0x1b, 0x20, 0xd5, 0x94,
00091                 0x32, 0x7d, 0x19, 0xfb, 0xa5, 0x6c, 0xb8, 0x1e, 0x7b, 0x66, 0x96, 0x60, 0x5f, 0xfa, 0x56, 0xeb,
00092                 0xa3, 0xc2, 0x7a, 0x43, 0x86, 0x97, 0xcc, 0x21, 0xb2, 0x01, 0xfd, 0x7e, 0x09, 0xf1, 0x8d, 0xee,
00093                 0xa1, 0xb3, 0xea, 0x2f, 0x0d, 0x1e, 0xdc, 0x02, 0xdf, 0x0e, 0x20, 0x39, 0x6a, 0x14, 0x54, 0x12,
00094                 0xcd, 0x6b, 0x13, 0xc3, 0x2d, 0x2e, 0x60, 0x56, 0x41, 0xc9, 0x48, 0xb7, 0x14, 0xae, 0xc3, 0x0c,
00095                 0x06, 0x49, 0xdc, 0x44, 0x14, 0x35, 0x11, 0xf3, 0x5a, 0xb0, 0xfd, 0x5d, 0xd6, 0x4c, 0x34, 0xd0,
00096                 0x6f, 0xe8, 0x6f, 0x38, 0x36, 0xdf, 0xe9, 0xed, 0xeb, 0x7f, 0x08, 0xcf, 0xc3, 0xbd, 0x40, 0x95,
00097                 0x68, 0x26, 0x35, 0x62, 0x42, 0x19, 0x1f, 0x99, 0xf5, 0x34, 0x73, 0xf3, 0x2b, 0x0c, 0xc0, 0xcf,
00098                 0x93, 0x21, 0xd6, 0xc9, 0x2a, 0x11, 0x2e, 0x8d, 0xb9, 0x0b, 0x86, 0xee, 0x9e, 0x87, 0xcc, 0x32,
00099                 0xd0, 0x34, 0x3d, 0xb0, 0x1e, 0x32, 0xce, 0x9e, 0xb7, 0x82, 0xcb, 0x24, 0xef, 0xbb, 0xbe, 0xb4,
00100                 0x40, 0xfe, 0x92, 0x9e, 0x8f, 0x2b, 0xf8, 0xdf, 0xb1, 0x55, 0x0a, 0x3a, 0x2e, 0x74, 0x2e, 0x8b,
00101                 0x45, 0x5a, 0x3e, 0x57, 0x30, 0xe9, 0xe6, 0xa7, 0xa9, 0x82, 0x4d, 0x17, 0xac, 0xc0, 0xf7, 0x2a,
00102                 0x7f, 0x67, 0xea, 0xe0, 0xf0, 0x97, 0x0f, 0x8b, 0xde, 0x46, 0xdc, 0xde, 0xfa, 0xed, 0x30, 0x47,
00103                 0xcf, 0x80, 0x7e, 0x7f, 0x00, 0xa4, 0x2e, 0x5f, 0xd1, 0x1d, 0x40, 0xf5, 0xe9, 0x85, 0x33, 0xd7,
00104                 0x57, 0x44, 0x25, 0xb7, 0xd2, 0xbc, 0x3b, 0x38, 0x45, 0xc4, 0x43, 0x00, 0x8b, 0x58, 0x98, 0x0e,
00105                 0x76, 0x8e, 0x46, 0x4e, 0x17, 0xcc, 0x6f, 0x6b, 0x39, 0x39, 0xee, 0xe5, 0x2f, 0x71, 0x39, 0x63,
00106                 0xd0, 0x7d, 0x8c, 0x4a, 0xbf, 0x02, 0x44, 0x8e, 0xf0, 0xb8, 0x89, 0xc9, 0x67, 0x1e, 0x2f, 0x8a,
00107                 0x43, 0x6d, 0xde, 0xef, 0xfc, 0xca, 0x71, 0x76, 0xe9, 0xbf, 0x9d, 0x10, 0x05, 0xec, 0xd3, 0x77,
00108                 0xf2, 0xfa, 0x67, 0xc2, 0x3e, 0xd1, 0xf1, 0x37, 0xe6, 0x0b, 0xf4, 0x60, 0x18, 0xa8, 0xbd, 0x61,
00109                 0x3d, 0x03, 0x8e, 0x88, 0x37, 0x04, 0xfc, 0x26, 0xe7, 0x98, 0x96, 0x9d, 0xf3, 0x5e, 0xc7, 0xbb,
00110                 0xc6, 0xa4, 0xfe, 0x46, 0xd8, 0x91, 0x0b, 0xd8, 0x2f, 0xa3, 0xcd, 0xed, 0x26, 0x5d, 0x0a, 0x3b,
00111                 0x6d, 0x39, 0x9e, 0x42, 0x51, 0xe4, 0xd8, 0x23, 0x3d, 0xaa, 0x21, 0xb5, 0x81, 0x2f, 0xde, 0xd6,
00112                 0x53, 0x61, 0x98, 0xff, 0x13, 0xaa, 0x5a, 0x1c, 0xd4, 0x6a, 0x5b, 0x9a, 0x17, 0xa4, 0xdd, 0xc1,
00113                 0xd9, 0xf8, 0x55, 0x44, 0xd1, 0xd1, 0xcc, 0x16, 0xf3, 0xdf, 0x85, 0x80, 0x38, 0xc8, 0xe0, 0x71,
00114                 0xa1, 0x1a, 0x7e, 0x15, 0x7a, 0x85, 0xa6, 0xa8, 0xdc, 0x47, 0xe8, 0x8d, 0x75, 0xe7, 0x00, 0x9a,
00115                 0x8b, 0x26, 0xfd, 0xb7, 0x3f, 0x33, 0xa2, 0xa7, 0x0f, 0x1e, 0x0c, 0x25, 0x9f, 0x8f, 0x95, 0x33,
00116                 0xb9, 0xb8, 0xf9, 0xaf, 0x92, 0x88, 0xb7, 0x27, 0x4f, 0x21, 0xba, 0xee, 0xc7, 0x8d, 0x39, 0x6f,
00117                 0x8b, 0xac, 0xdc, 0xc2, 0x24, 0x71, 0x20, 0x7d, 0x9b, 0x4e, 0xfc, 0xcd, 0x3f, 0xed, 0xc5, 0xc5,
00118                 0xa2, 0x21, 0x4f, 0xf5, 0xe5, 0x1c, 0x55, 0x3f, 0x35, 0xe2, 0x1a, 0xe6, 0x96, 0xfe, 0x51, 0xe8,
00119                 0xdf, 0x73, 0x3a, 0x8e, 0x06, 0xf5, 0x0f, 0x41, 0x9e, 0x59, 0x9e, 0x9f, 0x9e, 0x4b, 0x37, 0xce,
00120                 0x64, 0x3f, 0xc8, 0x10, 0xfa, 0xaa, 0x47, 0x98, 0x97, 0x71, 0x50, 0x9d, 0x69, 0xa1, 0x10, 0xac,
00121                 0x91, 0x62, 0x61, 0x42, 0x70, 0x26, 0x36, 0x9a, 0x21, 0x26, 0x3a, 0xc4, 0x46, 0x0f, 0xb4, 0xf7,
00122                 0x08, 0xf8, 0xae, 0x28, 0x59, 0x98, 0x56, 0xdb, 0x7c, 0xb6, 0xa4, 0x3a, 0xc8, 0xe0, 0x3d, 0x64,
00123                 0xa9, 0x60, 0x98, 0x07, 0xe7, 0x6c, 0x5f, 0x31, 0x2b, 0x9d, 0x18, 0x63, 0xbf, 0xa3, 0x04, 0xe8,
00124                 0x95, 0x36, 0x47, 0x64, 0x8b, 0x4f, 0x4a, 0xb0, 0xed, 0x99, 0x5e
00125         }
00126 };
00127 
00128 typedef struct palSha256Vector{
00129     size_t inLenInBytes;
00130     size_t outLenInBytes;
00131     unsigned char output[32];
00132     unsigned char input[5];
00133 } palSha256Vector_t;
00134 
00135 palSha256Vector_t sha256Vectors[6] =
00136 {
00137         {
00138                 0,
00139                 32,
00140                 {
00141                         0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24,
00142                         0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55
00143                 },
00144                 {0x00}
00145         },
00146         {
00147                 1,
00148                 32,
00149                 {
00150                         0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d, 0x05, 0x70,
00151                         0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0, 0x8f, 0xfe, 0x73, 0x2b
00152                 },
00153                 {0xbd}
00154         },
00155         {
00156                 2,
00157                 32,
00158                 {
00159                         0x7c, 0x4f, 0xbf, 0x48, 0x44, 0x98, 0xd2, 0x1b, 0x48, 0x7b, 0x9d, 0x61, 0xde, 0x89,0x14, 0xb2,
00160                         0xea, 0xda, 0xf2, 0x69, 0x87, 0x12, 0x93, 0x6d, 0x47, 0xc3, 0xad, 0xa2, 0x55, 0x8f,0x67, 0x88
00161                 },
00162                 {0x5f, 0xd4}
00163         },
00164         {
00165                 3,
00166                 32,
00167                 {
00168                         0x40, 0x96, 0x80, 0x42, 0x21, 0x09, 0x3d, 0xdc, 0xcf, 0xbf, 0x46, 0x83, 0x14, 0x90, 0xea, 0x63,
00169                         0xe9, 0xe9, 0x94, 0x14, 0x85, 0x8f, 0x8d, 0x75, 0xff, 0x7f, 0x64, 0x2c, 0x7c, 0xa6, 0x18, 0x03
00170                 },
00171                 {0xb0, 0xbd, 0x69}
00172         },
00173         {
00174                 4,
00175                 32,
00176                 {
00177                         0x7a, 0xbc, 0x22, 0xc0, 0xae, 0x5a, 0xf2, 0x6c, 0xe9, 0x3d, 0xbb, 0x94, 0x43, 0x3a, 0x0e, 0x0b,
00178                         0x2e, 0x11, 0x9d, 0x01, 0x4f, 0x8e, 0x7f, 0x65, 0xbd, 0x56, 0xc6, 0x1c,0xcc, 0xcd, 0x95, 0x04
00179                 },
00180                 {0xc9, 0x8c, 0x8e, 0x55 }
00181         },
00182         {
00183                 5,
00184                 32,
00185                 {
00186                         0x75, 0x16, 0xfb, 0x8b, 0xb1, 0x13, 0x50, 0xdf, 0x2b, 0xf3, 0x86, 0xbc, 0x3c, 0x33, 0xbd, 0x0f,
00187                         0x52, 0xcb, 0x4c, 0x67, 0xc6, 0xe4, 0x74, 0x5e, 0x04, 0x88, 0xe6, 0x2c, 0x2a, 0xea, 0x26, 0x05
00188                 },
00189                 {0x81, 0xa7, 0x23, 0xd9, 0x66}
00190         }
00191 };
00192 
00193 typedef struct palAesCcmVector{
00194     const unsigned char key[16];
00195     const unsigned char iv[16];
00196     const unsigned char ad[20];
00197     const unsigned char in[24];
00198     const unsigned char out[32];
00199     size_t ivLen;
00200     size_t adLen;
00201     size_t inLen;
00202     size_t tagLen;
00203     //  size_t outLen;
00204 
00205 }palAesCcmVector_t;
00206 
00207 static const palAesCcmVector_t aesCcmVectors[3] =
00208 {
00209         {
00210                 {
00211                         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
00212                         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f
00213                 },
00214                 {   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 },
00215                 {   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 },
00216                 {   0x20, 0x21, 0x22, 0x23 },
00217                 {   0x71, 0x62, 0x01, 0x5b, 0x4d, 0xac, 0x25, 0x5d },
00218                 7, 8, 4, 4
00219         },
00220         {
00221                 {
00222                         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
00223                         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f
00224                 },
00225                 {   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
00226                 {
00227                         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
00228                         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
00229                 },
00230                 {
00231                         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
00232                         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f
00233                 },
00234                 {
00235                         0xd2, 0xa1, 0xf0, 0xe0, 0x51, 0xea, 0x5f, 0x62,
00236                         0x08, 0x1a, 0x77, 0x92, 0x07, 0x3d, 0x59, 0x3d,
00237                         0x1f, 0xc6, 0x4f, 0xbf, 0xac, 0xcd
00238                 },
00239                 8, 16, 16, 6
00240         },
00241         {
00242                 {
00243                         0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
00244                         0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f
00245                 },
00246                 {
00247                         0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
00248                         0x18, 0x19, 0x1a, 0x1b
00249                 },
00250                 {
00251                         0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
00252                         0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
00253                         0x10, 0x11, 0x12, 0x13
00254                 },
00255                 {
00256                         0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
00257                         0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
00258                         0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
00259                 },
00260                 {
00261                         0xe3, 0xb2, 0x01, 0xa9, 0xf5, 0xb7, 0x1a, 0x7a,
00262                         0x9b, 0x1c, 0xea, 0xec, 0xcd, 0x97, 0xe7, 0x0b,
00263                         0x61, 0x76, 0xaa, 0xd9, 0xa4, 0x42, 0x8a, 0xa5,
00264                         0x48, 0x43, 0x92, 0xfb, 0xc1, 0xb0, 0x99, 0x51
00265                 },
00266                 12, 20, 24, 8
00267         }
00268 };
00269 
00270 static const unsigned char ctr_drbg_nonce_pers[16] =
00271 {
00272         0x1b, 0x54, 0xb8, 0xff, 0x06, 0x42, 0xbf, 0xf5,
00273         0x21, 0xf1, 0x5c, 0x1c, 0x0b, 0x66, 0x5f, 0x3f
00274 };
00275 
00276 unsigned char ctr_drbg_buf[100][16];
00277 
00278 typedef struct palAesCMACVector{
00279     const unsigned char key[16];
00280     const unsigned char in[64];
00281     const unsigned char out[16];
00282     size_t inLen;
00283 }palAesCMACVector_t;
00284 
00285 static const palAesCMACVector_t cmacSingleUseVector[4] =
00286 {
00287         {
00288                 {
00289                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
00290                         0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00291                 },
00292                 {
00293                         0x00
00294                 },
00295                 {
00296                         0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28,
00297                         0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46
00298                 },
00299                 0
00300         },
00301         {
00302                 {
00303                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
00304                         0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00305                 },
00306                 {
00307                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
00308                         0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a
00309                 },
00310                 {
00311                         0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44,
00312                         0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c
00313                 },
00314                 16
00315         },
00316         {
00317                 {
00318                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
00319                         0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00320                 },
00321                 {
00322                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
00323                         0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
00324                         0xae, 0x2d, 0x8a, 0x57
00325                 },
00326                 {
00327                         0x7d, 0x85, 0x44, 0x9e, 0xa6, 0xea, 0x19, 0xc8,
00328                         0x23, 0xa7, 0xbf, 0x78, 0x83, 0x7d, 0xfa, 0xde
00329                 },
00330                 20
00331         },
00332         {
00333                 {
00334                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
00335                         0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00336                 },
00337                 {
00338                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96,
00339                         0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
00340                         0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c,
00341                         0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
00342                         0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
00343                         0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
00344                         0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17,
00345                         0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10
00346                 },
00347                 {
00348                         0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92,
00349                         0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe
00350                 },
00351                 64
00352         }
00353 };
00354 
00355 typedef struct palCMACMultipleBlockVector{
00356     palCipherID_t cipher_type;
00357     unsigned char key_string[64];
00358     unsigned char block1_string[64];
00359     unsigned char block2_string[64];
00360     unsigned char block3_string[64];
00361     unsigned char block4_string[64];
00362     unsigned char expected_result_string[64];
00363     uint32_t keybits;
00364     uint32_t block_size;
00365     int32_t block1_len;
00366     int32_t block2_len;
00367     int32_t block3_len;
00368     int32_t block4_len;
00369 }palCMACMultipleBlockVector_t;
00370 
00371 static const palCMACMultipleBlockVector_t cmacIterativeUseVector[] =
00372 {
00373         {
00374                 PAL_CIPHER_ID_AES,
00375                 {
00376                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00377                 },
00378                 {   0x00    },
00379                 {   0x00    },
00380                 {   0x00    },
00381                 {   0x00    },
00382                 {
00383                         0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46
00384                 }, 128, 16, -1, -1, -1, -1
00385         },
00386         {
00387                 PAL_CIPHER_ID_AES,
00388                 {
00389                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00390                 },
00391                 {
00392                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a
00393                 },
00394                 {   0x00    },
00395                 {   0x00    },
00396                 {   0x00    },
00397                 {
00398                         0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c
00399                 }, 128, 16, 16, -1, -1, -1
00400         },
00401         {
00402                 PAL_CIPHER_ID_AES,
00403                 {
00404                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00405                 },
00406                 {
00407                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
00408                         0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
00409                         0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
00410                         0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10
00411                 },
00412                 {   0x00    },
00413                 {   0x00    },
00414                 {   0x00    },
00415                 {
00416                         0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe
00417                 },  128, 16, 64, -1, -1, -1
00418         },
00419         {
00420                 PAL_CIPHER_ID_AES,
00421                 {
00422                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00423                 },
00424                 {
00425                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96
00426                 },
00427                 {
00428                         0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a
00429                 },
00430                 {   0x00    },
00431                 {   0x00    },
00432                 {
00433                         0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c
00434                 }, 128, 16, 8, 8, -1, -1
00435         },
00436         {
00437                 PAL_CIPHER_ID_AES,
00438                 {
00439                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00440                 },
00441                 {
00442                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a
00443                 },
00444                 {
00445                         0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51
00446                 },
00447                 {
00448                         0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef
00449                 },
00450                 {
00451                         0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10
00452                 },
00453                 {
00454                         0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe
00455                 }, 128, 16, 16, 16, 16, 16
00456         },
00457         {
00458                 PAL_CIPHER_ID_AES,
00459                 {
00460                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00461                 },
00462                 {
00463                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96
00464                 },
00465                 {
00466                         0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c
00467                 },
00468                 {
00469                         0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11,
00470                         0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef
00471                 },
00472                 {
00473                         0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10
00474                 },
00475                 {
00476                         0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe
00477                 },128, 16, 8, 16, 24, 16
00478         },
00479         {
00480                 PAL_CIPHER_ID_AES,
00481                 {
00482                         0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c
00483                 },
00484                 {   0x00    },
00485                 {
00486                         0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96
00487                 },
00488                 {   0x00    },
00489                 {
00490                         0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a
00491                 },
00492                 {
00493                         0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c
00494                 }, 128, 16, 0, 8, 0, 8
00495         }
00496 };
00497 
00498 typedef struct palASN1TestVector{
00499     size_t start;
00500     size_t end;
00501     size_t dataLen;
00502     uint8_t type;
00503 }palASN1TestVector_t;
00504 
00505 static const palASN1TestVector_t ASN1TestVector[11] = {
00506         { 0, 879, 875, PAL_ASN1_SEQUENCE | PAL_ASN1_CONSTRUCTED },
00507         { 10, 13, 1, PAL_ASN1_INTEGER },
00508         { 26, 37, 9, PAL_ASN1_OID },
00509         { 37, 39, 0, PAL_ASN1_NULL },
00510         { 41, 54, 11, PAL_ASN1_SET | PAL_ASN1_CONSTRUCTED },
00511         { 50, 54, 2, PAL_ASN1_PRINTABLE_STRING },
00512         { 63, 75, 10, PAL_ASN1_UTF8_STRING },
00513         { 119, 134, 13, PAL_ASN1_UTC_TIME },
00514         { 532, 556, 22, PAL_ASN1_OCTET_STRING },
00515         { 600, 603, 1, PAL_ASN1_BOOLEAN },
00516         { 618, 879, 257, PAL_ASN1_BIT_STRING }
00517 };
00518 
00519 
00520 static const unsigned char asn1_data[879] =
00521 {
00522         0x30, 0x82, 0x03, 0x6B, 0x30, 0x82, 0x02, 0x53, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
00523         0xAA, 0xF6, 0x26, 0x55, 0x10, 0xA4, 0x58, 0x1E, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86,
00524         0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, 0x4C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55,
00525         0x04, 0x06, 0x13, 0x02, 0x49, 0x4C, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C,
00526         0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x0C, 0x30, 0x0A, 0x06,
00527         0x03, 0x55, 0x04, 0x07, 0x0C, 0x03, 0x4E, 0x65, 0x74, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55,
00528         0x04, 0x0A, 0x0C, 0x03, 0x41, 0x52, 0x4D, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04, 0x0B,
00529         0x0C, 0x03, 0x50, 0x41, 0x4C, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x36, 0x31, 0x31, 0x32, 0x33, 0x31,
00530         0x33, 0x35, 0x30, 0x31, 0x39, 0x5A, 0x17, 0x0D, 0x31, 0x37, 0x31, 0x31, 0x32, 0x33, 0x31, 0x33,
00531         0x35, 0x30, 0x31, 0x39, 0x5A, 0x30, 0x4C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
00532         0x13, 0x02, 0x49, 0x4C, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53,
00533         0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55,
00534         0x04, 0x07, 0x0C, 0x03, 0x4E, 0x65, 0x74, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04, 0x0A,
00535         0x0C, 0x03, 0x41, 0x52, 0x4D, 0x31, 0x0C, 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x03,
00536         0x50, 0x41, 0x4C, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7,
00537         0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02,
00538         0x82, 0x01, 0x01, 0x00, 0xCE, 0xD5, 0x2F, 0x89, 0x97, 0xD5, 0xC1, 0xDF, 0x2D, 0xDB, 0x1B, 0xF5,
00539         0x4B, 0x0F, 0xAF, 0xD0, 0xF1, 0xC5, 0xD4, 0x45, 0xD4, 0x6D, 0x55, 0x73, 0x73, 0xD5, 0xBB, 0x7D,
00540         0x2E, 0x56, 0x8E, 0xF4, 0xCB, 0xAC, 0x0A, 0x78, 0x91, 0x9E, 0x6C, 0x72, 0xA6, 0x0F, 0x65, 0xFE,
00541         0x86, 0x91, 0x2D, 0x96, 0xE0, 0x40, 0xF4, 0x3A, 0xBB, 0x82, 0x29, 0x69, 0x23, 0x92, 0x93, 0xC8,
00542         0x20, 0x83, 0xD3, 0x7A, 0xFF, 0x71, 0xB4, 0x11, 0x43, 0xF0, 0x30, 0xE8, 0x32, 0xF8, 0x4C, 0xCB,
00543         0xE6, 0xF1, 0xE2, 0xBC, 0x01, 0xE6, 0xB8, 0x17, 0xBF, 0x82, 0xA2, 0xBF, 0x75, 0xFF, 0x88, 0x44,
00544         0x15, 0x86, 0x88, 0x4A, 0xDF, 0xEF, 0x48, 0x46, 0xD8, 0xFA, 0x81, 0xBB, 0xAA, 0xED, 0x16, 0xC7,
00545         0x7C, 0xE8, 0xCE, 0x1E, 0x79, 0x6C, 0x2D, 0x66, 0x88, 0x4C, 0xB7, 0x88, 0xA5, 0x35, 0xD7, 0x4A,
00546         0xE8, 0x6D, 0x89, 0xD1, 0x84, 0xBF, 0x23, 0x9B, 0xA2, 0xF4, 0xF3, 0x0D, 0x3E, 0xB8, 0x12, 0x48,
00547         0x38, 0xC6, 0x76, 0xD3, 0xEF, 0xAE, 0xA1, 0xD9, 0xC9, 0xA8, 0x32, 0xE7, 0x5E, 0xD5, 0x7C, 0x2A,
00548         0x26, 0xAD, 0x94, 0x60, 0xF6, 0x73, 0x73, 0xD1, 0x8B, 0xA3, 0x2A, 0x42, 0xA6, 0x86, 0x47, 0x0F,
00549         0x61, 0x59, 0xCD, 0x13, 0x87, 0xFB, 0x14, 0x16, 0x0E, 0x22, 0xBA, 0x7E, 0xC4, 0xF9, 0xC5, 0x59,
00550         0x31, 0xDF, 0xDA, 0x6A, 0xBB, 0x3F, 0x8B, 0xE7, 0xF7, 0x22, 0x7E, 0x35, 0xF2, 0xE3, 0x8A, 0xAC,
00551         0xFA, 0xCF, 0x49, 0xE0, 0x64, 0xC0, 0xC8, 0x24, 0x96, 0x69, 0x23, 0x3A, 0xC7, 0x04, 0x0A, 0x99,
00552         0xA7, 0x21, 0x87, 0x87, 0x9A, 0x01, 0x7B, 0x50, 0xCF, 0xE1, 0x7B, 0x0E, 0x8A, 0x4A, 0x25, 0xCF,
00553         0x88, 0xE4, 0x47, 0xAD, 0x85, 0x47, 0x8A, 0xE7, 0x35, 0xD9, 0x6B, 0x13, 0xA4, 0x77, 0x3F, 0x58,
00554         0x8F, 0x55, 0x65, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x50, 0x30, 0x4E, 0x30, 0x1D, 0x06,
00555         0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x53, 0x43, 0x7D, 0x59, 0x2A, 0xF5, 0x93, 0xA5,
00556         0xA5, 0x02, 0x43, 0xD9, 0x7B, 0xC4, 0x2C, 0xCA, 0xBD, 0xDE, 0x96, 0x0D, 0x30, 0x1F, 0x06, 0x03,
00557         0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x53, 0x43, 0x7D, 0x59, 0x2A, 0xF5, 0x93,
00558         0xA5, 0xA5, 0x02, 0x43, 0xD9, 0x7B, 0xC4, 0x2C, 0xCA, 0xBD, 0xDE, 0x96, 0x0D, 0x30, 0x0C, 0x06,
00559         0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A,
00560         0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x15,
00561         0x9A, 0xFC, 0xBF, 0x26, 0x7A, 0x6A, 0xF9, 0x3F, 0xD4, 0x88, 0xF9, 0x83, 0x6C, 0xF6, 0x68, 0xC6,
00562         0x99, 0xDD, 0x55, 0x62, 0x89, 0xFB, 0x80, 0x74, 0x5B, 0x14, 0x1A, 0x82, 0x4F, 0xFF, 0x5E, 0xCC,
00563         0x20, 0x97, 0x68, 0x8C, 0x7B, 0x85, 0x02, 0xDE, 0x5A, 0x02, 0x4C, 0x72, 0x57, 0xE8, 0x01, 0x0A,
00564         0x08, 0x0F, 0xA2, 0xAB, 0xA4, 0x57, 0xC8, 0x4C, 0x8A, 0x3D, 0xCF, 0x23, 0xA6, 0xE4, 0x8D, 0xE3,
00565         0x1E, 0x9F, 0x50, 0xB3, 0x2C, 0xDD, 0xC6, 0x11, 0x98, 0xAA, 0x71, 0xA9, 0xF3, 0x02, 0x5C, 0x16,
00566         0xDB, 0xC2, 0x28, 0xA3, 0x9E, 0x51, 0xB1, 0xE7, 0xEC, 0x60, 0xE4, 0x59, 0x62, 0x1B, 0xC0, 0x4F,
00567         0xE4, 0xF3, 0xD7, 0x10, 0x12, 0x38, 0x6D, 0x2A, 0xF8, 0x96, 0x4E, 0x25, 0xE5, 0x05, 0xE1, 0x77,
00568         0x1F, 0xC7, 0xAB, 0x54, 0xDA, 0x0D, 0x09, 0xE5, 0xC3, 0xB0, 0x61, 0x50, 0x11, 0xC8, 0x5C, 0x7B,
00569         0x6B, 0x96, 0x71, 0x2E, 0xC9, 0x7C, 0x8E, 0x34, 0xA9, 0xB9, 0x25, 0x0A, 0x35, 0x0F, 0xA1, 0x77,
00570         0x6C, 0xC3, 0x30, 0x96, 0x7C, 0x40, 0x12, 0x9D, 0xBB, 0x62, 0xA7, 0xD6, 0xE6, 0x07, 0xCB, 0xAB,
00571         0xC6, 0xD7, 0xD1, 0x3C, 0x4D, 0x7F, 0xAE, 0x62, 0x22, 0xBD, 0x88, 0x33, 0x43, 0x15, 0xFF, 0x63,
00572         0x80, 0x95, 0x29, 0xCD, 0x00, 0x76, 0x53, 0xF6, 0xA6, 0xA1, 0xD0, 0x07, 0xE4, 0xF0, 0xC2, 0x03,
00573         0xBA, 0x7B, 0x25, 0x9B, 0x75, 0xA1, 0xB6, 0xA8, 0x4C, 0x44, 0x72, 0x14, 0x48, 0x29, 0x75, 0x76,
00574         0x66, 0xB1, 0xBB, 0x5A, 0x2D, 0x7C, 0x21, 0xBB, 0xEA, 0x70, 0x45, 0x8E, 0x6E, 0xFA, 0xCE, 0xCE,
00575         0x26, 0xDE, 0xF7, 0x36, 0xB7, 0x52, 0xBC, 0x9F, 0x21, 0x35, 0x2F, 0x5B, 0xAF, 0x0A, 0xAE, 0xD8,
00576         0xE1, 0x0C, 0x69, 0x27, 0x30, 0xFF, 0xCF, 0x13, 0xE8, 0x57, 0x1F, 0x5B, 0x38, 0x13, 0x02
00577 };
00578 
00579 
00580 typedef struct palCheckEcKeyTestVector
00581 {
00582     const unsigned char key[200];
00583     size_t keyLen;
00584     palGroupIndex_t index;
00585     uint32_t keyType;
00586     palStatus_t parsePrvRes;
00587     palStatus_t checkPrvRes;
00588     bool verifed;
00589     palStatus_t parsePubRes;
00590     palStatus_t checkPubRes;
00591 }palCheckEcKeyTestVector_t;
00592 
00593 
00594 
00595 static const palCheckEcKeyTestVector_t check_ec_key_data[3] =
00596 {
00597         {
00598                 { 0x00 }, 0, PAL_ECP_DP_SECP256R1, PAL_CHECK_PRIVATE_KEY, PAL_ERR_PK_KEY_INVALID_FORMAT, PAL_ERR_PARSING_PRIVATE_KEY, false, PAL_ERR_PARSING_PUBLIC_KEY, PAL_ERR_PARSING_PUBLIC_KEY
00599         },
00600         {
00601                 {
00602                         0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x07, 0xED, 0xF8, 0x74, 0xA2, 0x0A, 0x3D, 0xA2, 0xC5,
00603                         0x89, 0x99, 0x8A, 0x28, 0xC5, 0x00, 0x8C, 0x12, 0xD8, 0x9B, 0xC9, 0x74, 0x2F, 0x94, 0x53, 0x40,
00604                         0x82, 0x36, 0x96, 0x04, 0x15, 0x2A, 0xB6, 0xA0, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
00605                         0x03, 0x01, 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xE5, 0xD8, 0x40, 0xEF, 0xE8, 0x3B, 0x0D,
00606                         0xC5, 0x7E, 0x72, 0x21, 0x65, 0xF6, 0x96, 0xF0, 0xC8, 0x16, 0xCC, 0xC5, 0x9D, 0x88, 0x24, 0x41,
00607                         0xF3, 0xB3, 0x39, 0x34, 0xD2, 0xA1, 0x5B, 0xF9, 0xC7, 0xAF, 0xF6, 0x8F, 0x4E, 0x78, 0x01, 0xDB,
00608                         0xB2, 0xAA, 0x7E, 0x7E, 0xC7, 0x41, 0x31, 0xF4, 0x8D, 0xD4, 0x8E, 0x98, 0x7B, 0x16, 0x4E, 0x96,
00609                         0x26, 0x71, 0x9D, 0x1F, 0x84, 0xEC, 0x68, 0x9A, 0x31
00610                 }, 121, PAL_ECP_DP_SECP256R1, PAL_CHECK_PRIVATE_KEY, PAL_SUCCESS, PAL_SUCCESS, true, PAL_ERR_PARSING_PUBLIC_KEY, PAL_ERR_PARSING_PUBLIC_KEY
00611         },
00612         {
00613                 {
00614                         0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A,
00615                         0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xE5, 0xD8, 0x40, 0xEF, 0xE8,
00616                         0x3B, 0x0D, 0xC5, 0x7E, 0x72, 0x21, 0x65, 0xF6, 0x96, 0xF0, 0xC8, 0x16, 0xCC, 0xC5, 0x9D, 0x88,
00617                         0x24, 0x41, 0xF3, 0xB3, 0x39, 0x34, 0xD2, 0xA1, 0x5B, 0xF9, 0xC7, 0xAF, 0xF6, 0x8F, 0x4E, 0x78,
00618                         0x01, 0xDB, 0xB2, 0xAA, 0x7E, 0x7E, 0xC7, 0x41, 0x31, 0xF4, 0x8D, 0xD4, 0x8E, 0x98, 0x7B, 0x16,
00619                         0x4E, 0x96, 0x26, 0x71, 0x9D, 0x1F, 0x84, 0xEC, 0x68, 0x9A, 0x31
00620                 }, 91, PAL_ECP_DP_SECP256R1, PAL_CHECK_PUBLIC_KEY, PAL_ERR_PK_KEY_INVALID_FORMAT, PAL_ERR_PARSING_PRIVATE_KEY, true, PAL_SUCCESS, PAL_SUCCESS
00621         }
00622 };
00623 
00624 typedef struct palParseECKeyTestVector{
00625     const unsigned char key[250];
00626     size_t len;
00627     uint32_t type;
00628     bool isDER;
00629     bool shouldSucceed;
00630 
00631 }palParseECKeyTestVector_t;
00632 
00633 static const palParseECKeyTestVector_t parse_ec_key_data[8] =
00634 {
00635         {
00636                 {0x00, 0x00}, 0, PAL_CHECK_PRIVATE_KEY, true, false
00637         },
00638         {
00639                 {0x00, 0x00}, 0, PAL_CHECK_PUBLIC_KEY, true, false
00640         },
00641         {
00642                 {
00643                         0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xBD, 0x42, 0xD6, 0x36, 0x31, 0x2D, 0xF3, 0x2B, 0x31,
00644                         0xEB, 0xE6, 0xE3, 0xC8, 0x63, 0x61, 0xA8, 0x45, 0x92, 0x2C, 0x70, 0xAB, 0x02, 0xC7, 0x45, 0xA7,
00645                         0xBA, 0x7F, 0x39, 0xD3, 0xFD, 0xF0, 0x07, 0xA0, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
00646                         0x03, 0x01, 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x7A, 0xDC, 0x03, 0xFE, 0xEF, 0x2B, 0x2B,
00647                         0xF4, 0xE4, 0x6B, 0xAB, 0xA4, 0xD8, 0xEE, 0x2D, 0xAE, 0xA5, 0xD2, 0x28, 0xC5, 0xC1, 0xB2, 0x3C,
00648                         0x7A, 0xAA, 0x5D, 0xE7, 0x81, 0x09, 0x1F, 0xE5, 0x9D, 0x80, 0xD4, 0xE9, 0xC5, 0x99, 0xF8, 0xBB,
00649                         0xB1, 0x7B, 0xCB, 0x9A, 0x48, 0x2E, 0xF9, 0xEB, 0x01, 0xA3, 0xA4, 0x81, 0x70, 0x29, 0x34, 0xDB,
00650                         0xE0, 0x65, 0x68, 0x48, 0x62, 0x99, 0x6D, 0xEC, 0x2E
00651                 },121, PAL_CHECK_PRIVATE_KEY, true, true
00652         },
00653         {
00654                 {
00655                         0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A,
00656                         0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x7A, 0xDC, 0x03, 0xFE, 0xEF,
00657                         0x2B, 0x2B, 0xF4, 0xE4, 0x6B, 0xAB, 0xA4, 0xD8, 0xEE, 0x2D, 0xAE, 0xA5, 0xD2, 0x28, 0xC5, 0xC1,
00658                         0xB2, 0x3C, 0x7A, 0xAA, 0x5D, 0xE7, 0x81, 0x09, 0x1F, 0xE5, 0x9D, 0x80, 0xD4, 0xE9, 0xC5, 0x99,
00659                         0xF8, 0xBB, 0xB1, 0x7B, 0xCB, 0x9A, 0x48, 0x2E, 0xF9, 0xEB, 0x01, 0xA3, 0xA4, 0x81, 0x70, 0x29,
00660                         0x34, 0xDB, 0xE0, 0x65, 0x68, 0x48, 0x62, 0x99, 0x6D, 0xEC, 0x2E
00661                 }, 91, PAL_CHECK_PUBLIC_KEY, true, true
00662         },
00663         {
00664                 {
00665                         0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xBD, 0x42, 0xD6, 0x36, 0x31, 0x2D, 0xF3, 0x2B, 0x31,
00666                         0xEB, 0xE6, 0xE3, 0xC8, 0x63, 0x61, 0xA8, 0x45, 0x92, 0x2C, 0x70, 0xAB, 0x02, 0xC7, 0x45, 0xA7,
00667                         0xBA, 0x7F, 0x39, 0xD3, 0xFD, 0xF0, 0x07, 0xA0, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
00668                         0x03, 0x01, 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x7A, 0xDC, 0x03, 0xFE, 0xEF, 0x2B, 0x2B,
00669                         0xF4, 0xE4, 0x6B, 0xAB, 0xA4, 0xD8, 0xEE, 0x2D, 0xAE, 0xA5, 0xD2, 0x28, 0xC5, 0xC1, 0xB2, 0x3C,
00670                         0x7A, 0xAA, 0x5D, 0xE7, 0x81, 0x09, 0x1F, 0xE5, 0x9D, 0x80, 0xD4, 0xE9, 0xC5, 0x99, 0xF8, 0xBB,
00671                         0xB1, 0x7B, 0xCB, 0x9A, 0x48, 0x2E, 0xF9, 0xEB, 0x01, 0xA3, 0xA4, 0x81, 0x70, 0x29, 0x34, 0xDB,
00672                         0xE0, 0x65, 0x68, 0x48, 0x62, 0x99, 0x6D, 0xEC, 0x2E
00673                 }, 121, PAL_CHECK_PUBLIC_KEY, true, false
00674         },
00675         {
00676                 {
00677                         0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A,
00678                         0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x7A, 0xDC, 0x03, 0xFE, 0xEF,
00679                         0x2B, 0x2B, 0xF4, 0xE4, 0x6B, 0xAB, 0xA4, 0xD8, 0xEE, 0x2D, 0xAE, 0xA5, 0xD2, 0x28, 0xC5, 0xC1,
00680                         0xB2, 0x3C, 0x7A, 0xAA, 0x5D, 0xE7, 0x81, 0x09, 0x1F, 0xE5, 0x9D, 0x80, 0xD4, 0xE9, 0xC5, 0x99,
00681                         0xF8, 0xBB, 0xB1, 0x7B, 0xCB, 0x9A, 0x48, 0x2E, 0xF9, 0xEB, 0x01, 0xA3, 0xA4, 0x81, 0x70, 0x29,
00682                         0x34, 0xDB, 0xE0, 0x65, 0x68, 0x48, 0x62, 0x99, 0x6D, 0xEC, 0x2E
00683                 },91, PAL_CHECK_PRIVATE_KEY, true, false
00684         },
00685         {
00686                 "-----BEGIN EC PRIVATE KEY-----\r\n"
00687                 "MHcCAQEEIBnI7FMl8SVLh8u3jUyGtJRxtyzf8WhZ6zVlR+uezRi/oAoGCCqGSM49\r\n"
00688                 "AwEHoUQDQgAE7XbxNHg17rUMJ8nwTSTwSRrskUVWVkrnB7HARGN8eX4vL6v75D/3\r\n"
00689                 "WsseEnEVMAhsbPs7rDx7xaKStJQKKSX84w==\r\n"
00690                 "-----END EC PRIVATE KEY-----\r\n",
00691                 236, PAL_CHECK_PRIVATE_KEY, false, false
00692         },
00693         {
00694                 "-----BEGIN PUBLIC KEY-----\r\n"
00695                 "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7XbxNHg17rUMJ8nwTSTwSRrskUVW\r\n"
00696                 "VkrnB7HARGN8eX4vL6v75D/3WsseEnEVMAhsbPs7rDx7xaKStJQKKSX84w==\r\n"
00697                 "-----END PUBLIC KEY-----\r\n",
00698                 185, PAL_CHECK_PUBLIC_KEY, false, false
00699         }
00700 };
00701 
00702 
00703 typedef struct palX509CSRTestVector{
00704     unsigned char prvkey[300];
00705     size_t prvkeyLen;
00706     unsigned char pubkey[300];
00707     size_t pubkeyLen;
00708     palMDType_t mdType;
00709     const char subject_name[50];
00710     uint32_t keyUsage;
00711     unsigned char derOut[300];
00712     size_t derOutLen;
00713 }palX509CSRTestVector_t;
00714 
00715 static const palX509CSRTestVector_t CsrTests[2] =
00716 {
00717         {
00718                 {
00719                         0x30, 0x78, 0x02, 0x01, 0x01, 0x04, 0x21, 0x00, 0xAE, 0xD9, 0xBE, 0xEA, 0x76, 0x78, 0xF2, 0xD9,
00720                         0xEC, 0x11, 0xC5, 0x49, 0x00, 0xDC, 0xB7, 0xB1, 0x06, 0xBD, 0xA5, 0xF6, 0xF7, 0x06, 0xBB, 0xC2,
00721                         0x8A, 0x8D, 0x46, 0xCB, 0xCF, 0xAE, 0x1F, 0x22, 0xA0, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE,
00722                         0x3D, 0x03, 0x01, 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xC9, 0xEB, 0xAC, 0x6F, 0x9C, 0x39,
00723                         0x1D, 0xFC, 0xFE, 0xBD, 0x25, 0x69, 0x51, 0x56, 0x80, 0xAC, 0xBF, 0x1A, 0x6F, 0xD4, 0xD7, 0x2E,
00724                         0x02, 0x07, 0xBF, 0xF8, 0x4C, 0xEF, 0xEC, 0x60, 0x41, 0xAC, 0xDC, 0x7D, 0xD6, 0xDE, 0xD9, 0xF4,
00725                         0xAA, 0xB8, 0x81, 0x0F, 0x96, 0xB6, 0xB3, 0x4A, 0x47, 0xD3, 0x98, 0x3F, 0x52, 0x87, 0x62, 0x0D,
00726                         0xC7, 0xA0, 0x40, 0xCD, 0x23, 0x03, 0xBD, 0x17, 0x1E, 0xDE
00727                 },122,
00728                 {
00729                         0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A,
00730                         0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xC9, 0xEB, 0xAC, 0x6F, 0x9C,
00731                         0x39, 0x1D, 0xFC, 0xFE, 0xBD, 0x25, 0x69, 0x51, 0x56, 0x80, 0xAC, 0xBF, 0x1A, 0x6F, 0xD4, 0xD7,
00732                         0x2E, 0x02, 0x07, 0xBF, 0xF8, 0x4C, 0xEF, 0xEC, 0x60, 0x41, 0xAC, 0xDC, 0x7D, 0xD6, 0xDE, 0xD9,
00733                         0xF4, 0xAA, 0xB8, 0x81, 0x0F, 0x96, 0xB6, 0xB3, 0x4A, 0x47, 0xD3, 0x98, 0x3F, 0x52, 0x87, 0x62,
00734                         0x0D, 0xC7, 0xA0, 0x40, 0xCD, 0x23, 0x03, 0xBD, 0x17, 0x1E, 0xDE
00735                 }, 91, PAL_SHA256, "C=AU, ST=Some-State, O=Internet Widgits Pty Ltd", PAL_X509_KU_DIGITAL_SIGNATURE,
00736                 {
00737                         0x30, 0x82, 0x01, 0x20, 0x30, 0x81, 0xC5, 0x02, 0x01, 0x00, 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09,
00738                         0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
00739                         0x04, 0x08, 0x13, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21,
00740                         0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65,
00741                         0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74,
00742                         0x64, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08,
00743                         0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xC9, 0xEB, 0xAC, 0x6F,
00744                         0x9C, 0x39, 0x1D, 0xFC, 0xFE, 0xBD, 0x25, 0x69, 0x51, 0x56, 0x80, 0xAC, 0xBF, 0x1A, 0x6F, 0xD4,
00745                         0xD7, 0x2E, 0x02, 0x07, 0xBF, 0xF8, 0x4C, 0xEF, 0xEC, 0x60, 0x41, 0xAC, 0xDC, 0x7D, 0xD6, 0xDE,
00746                         0xD9, 0xF4, 0xAA, 0xB8, 0x81, 0x0F, 0x96, 0xB6, 0xB3, 0x4A, 0x47, 0xD3, 0x98, 0x3F, 0x52, 0x87,
00747                         0x62, 0x0D, 0xC7, 0xA0, 0x40, 0xCD, 0x23, 0x03, 0xBD, 0x17, 0x1E, 0xDE, 0xA0, 0x1E, 0x30, 0x1C,
00748                         0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x0E, 0x31, 0x0F, 0x30, 0x0D, 0x30,
00749                         0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0x80, 0x30, 0x0C, 0x06, 0x08,
00750                         0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02,
00751                         0x21, 0x00, 0xEF, 0xA5, 0x91, 0xE8, 0x43, 0x2C, 0x95, 0x54, 0x51, 0xFA, 0x75, 0xAE, 0xF3, 0xE5,
00752                         0x5B, 0xAE, 0x37, 0x28, 0x43, 0x12, 0xBE, 0xCB, 0x54, 0x67, 0x1C, 0xF8, 0x5F, 0x28, 0xD8, 0x87,
00753                         0x23, 0x35, 0x02, 0x20, 0x32, 0xB7, 0x86, 0x38, 0xEF, 0x9F, 0x96, 0x25, 0x4B, 0xB5, 0xCD, 0x11,
00754                         0xBB, 0x23, 0x3F, 0x93, 0x44, 0x31, 0x73, 0xF1, 0x0A, 0xBA, 0x2F, 0x43, 0x21, 0xFB, 0xBD, 0x4B,
00755                         0xE5, 0xD4, 0xF0, 0x42
00756                 }, 292
00757         },
00758         {
00759                 {
00760                         0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x12, 0x02, 0xAF, 0xCF, 0x14, 0xEC, 0xDB, 0x72, 0xDF,
00761                         0x1C, 0x0C, 0xF1, 0xE3, 0x23, 0x97, 0x83, 0x62, 0x31, 0x71, 0x4C, 0xE6, 0x5B, 0x88, 0x9B, 0xF1,
00762                         0x19, 0x40, 0xE4, 0xBE, 0xE9, 0x34, 0x76, 0xA0, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D,
00763                         0x03, 0x01, 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x6D, 0xE7, 0x22, 0xF3, 0xCB, 0x5F, 0x84,
00764                         0x83, 0xEE, 0x27, 0xE2, 0xA1, 0x24, 0xFF, 0xAC, 0x19, 0xF7, 0x2D, 0xDD, 0xFA, 0x69, 0x20, 0xBE,
00765                         0x06, 0x7E, 0x8A, 0x20, 0x40, 0x26, 0x90, 0xE9, 0xFB, 0xBA, 0x86, 0x0A, 0xE0, 0x9A, 0x39, 0x1B,
00766                         0x0F, 0xB8, 0x53, 0xD5, 0xFC, 0xE1, 0x5E, 0x94, 0xBC, 0x1E, 0x97, 0x9C, 0xC2, 0x7B, 0x4E, 0xF7,
00767                         0x17, 0x36, 0xCA, 0x59, 0xD5, 0x01, 0xBB, 0x56, 0x74
00768                 }, 121,
00769                 {
00770                         0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A,
00771                         0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x6D, 0xE7, 0x22, 0xF3, 0xCB,
00772                         0x5F, 0x84, 0x83, 0xEE, 0x27, 0xE2, 0xA1, 0x24, 0xFF, 0xAC, 0x19, 0xF7, 0x2D, 0xDD, 0xFA, 0x69,
00773                         0x20, 0xBE, 0x06, 0x7E, 0x8A, 0x20, 0x40, 0x26, 0x90, 0xE9, 0xFB, 0xBA, 0x86, 0x0A, 0xE0, 0x9A,
00774                         0x39, 0x1B, 0x0F, 0xB8, 0x53, 0xD5, 0xFC, 0xE1, 0x5E, 0x94, 0xBC, 0x1E, 0x97, 0x9C, 0xC2, 0x7B,
00775                         0x4E, 0xF7, 0x17, 0x36, 0xCA, 0x59, 0xD5, 0x01, 0xBB, 0x56, 0x74
00776                 }, 91, PAL_SHA256, "C=AU, ST=Some-State, O=Internet Widgits Pty Ltd", PAL_X509_KU_NON_REPUDIATION,
00777                 {
00778                         0x30, 0x82, 0x01, 0x20, 0x30, 0x81, 0xC5, 0x02, 0x01, 0x00, 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09,
00779                         0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
00780                         0x04, 0x08, 0x13, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21,
00781                         0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65,
00782                         0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74,
00783                         0x64, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08,
00784                         0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x6D, 0xE7, 0x22, 0xF3,
00785                         0xCB, 0x5F, 0x84, 0x83, 0xEE, 0x27, 0xE2, 0xA1, 0x24, 0xFF, 0xAC, 0x19, 0xF7, 0x2D, 0xDD, 0xFA,
00786                         0x69, 0x20, 0xBE, 0x06, 0x7E, 0x8A, 0x20, 0x40, 0x26, 0x90, 0xE9, 0xFB, 0xBA, 0x86, 0x0A, 0xE0,
00787                         0x9A, 0x39, 0x1B, 0x0F, 0xB8, 0x53, 0xD5, 0xFC, 0xE1, 0x5E, 0x94, 0xBC, 0x1E, 0x97, 0x9C, 0xC2,
00788                         0x7B, 0x4E, 0xF7, 0x17, 0x36, 0xCA, 0x59, 0xD5, 0x01, 0xBB, 0x56, 0x74, 0xA0, 0x1E, 0x30, 0x1C,
00789                         0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x0E, 0x31, 0x0F, 0x30, 0x0D, 0x30,
00790                         0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, 0x03, 0x02, 0x01, 0x40, 0x30, 0x0C, 0x06, 0x08,
00791                         0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02,
00792                         0x21, 0x00, 0xEC, 0xA1, 0xDE, 0x83, 0x89, 0x1A, 0x05, 0xA6, 0x38, 0x7B, 0xC1, 0xDB, 0x0D, 0x67,
00793                         0xEC, 0x9E, 0x98, 0x3C, 0x92, 0xB3, 0x58, 0x06, 0x34, 0x87, 0x19, 0xAB, 0x57, 0x2B, 0x70, 0x29,
00794                         0x4C, 0x3D, 0x02, 0x20, 0x6A, 0x9D, 0x7D, 0xFF, 0x8B, 0x00, 0x74, 0x24, 0xA1, 0xD6, 0xD6, 0xEF,
00795                         0xF7, 0x70, 0x86, 0x8D, 0x2D, 0x52, 0x68, 0x55, 0x18, 0x7C, 0x45, 0xFB, 0xEE, 0x49, 0x50, 0x62,
00796                         0x9E, 0x6C, 0x1C, 0xCA
00797                 }, 292
00798         }
00799 };
00800 
00801 const unsigned char cert_not_self_signed[] =
00802 {
00803         0x30, 0x82, 0x01, 0xc4, 0x30, 0x82, 0x01, 0x69, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01,
00804         0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x30, 0x3d,
00805         0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x07, 0x49, 0x4f, 0x54, 0x5f, 0x50,
00806         0x41, 0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x03, 0x50, 0x41, 0x4c,
00807         0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x0e, 0x30,
00808         0x0c, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x05, 0x49, 0x4f, 0x54, 0x42, 0x55, 0x30, 0x1e, 0x17,
00809         0x0d, 0x31, 0x33, 0x30, 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
00810         0x31, 0x35, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x42, 0x31,
00811         0x11, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x08, 0x49, 0x4f, 0x54, 0x5f, 0x54, 0x45,
00812         0x53, 0x54, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x04, 0x50, 0x41, 0x41,
00813         0x4c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x11,
00814         0x30, 0x0f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x08, 0x49, 0x4f, 0x54, 0x42, 0x55, 0x5f, 0x49,
00815         0x4c, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08,
00816         0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x18, 0xf7, 0x26, 0xc6,
00817         0x86, 0x30, 0xec, 0xed, 0xd6, 0xb4, 0x3a, 0xd3, 0x86, 0x7a, 0x49, 0xbb, 0xb3, 0x93, 0xee, 0x43,
00818         0x56, 0x18, 0x71, 0x2a, 0x40, 0xda, 0xc8, 0x2c, 0x4a, 0xc6, 0x3d, 0x09, 0xfc, 0xe0, 0x84, 0x2f,
00819         0x0d, 0xce, 0xf8, 0x17, 0xcf, 0x28, 0x8f, 0x4f, 0xb4, 0xea, 0xde, 0xf9, 0xe4, 0x9a, 0x16, 0xeb,
00820         0x8c, 0x67, 0x02, 0xfd, 0x64, 0x7b, 0x62, 0x0e, 0x9b, 0x29, 0x05, 0x22, 0xa3, 0x53, 0x30, 0x51,
00821         0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01,
00822         0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x13, 0xde, 0xa2, 0x8b,
00823         0x8d, 0x40, 0x1e, 0xd6, 0x62, 0xfd, 0x7e, 0x27, 0x53, 0xb8, 0x8f, 0x17, 0x18, 0x76, 0x33, 0x20,
00824         0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x13, 0xde, 0xa2,
00825         0x8b, 0x8d, 0x40, 0x1e, 0xd6, 0x62, 0xfd, 0x7e, 0x27, 0x53, 0xb8, 0x8f, 0x17, 0x18, 0x76, 0x33,
00826         0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03,
00827         0x47, 0x00, 0x30, 0x44, 0x02, 0x20, 0x47, 0xb7, 0xf8, 0x12, 0xb0, 0xe7, 0x7b, 0x33, 0x7f, 0x31,
00828         0x5e, 0x2f, 0x54, 0x40, 0x8f, 0xff, 0xe1, 0x05, 0x1b, 0xe5, 0xf1, 0xd5, 0xa7, 0x6a, 0xb8, 0x2a,
00829         0x6f, 0x22, 0x5a, 0xce, 0x31, 0x84, 0x02, 0x20, 0x51, 0x5d, 0x68, 0x41, 0x7f, 0x26, 0xb2, 0x6b,
00830         0x71, 0x1e, 0xd2, 0xa2, 0x2d, 0xd9, 0x43, 0x69, 0xbf, 0xf0, 0x73, 0xf6, 0x01, 0x7f, 0xf7, 0xac,
00831         0x0e, 0x5c, 0xb4, 0x4e, 0x56, 0x73, 0x63, 0x3c
00832 };
00833 
00834 //Certificate based on unsupported hash – sha512
00835 const uint8_t testdata_x509_Sha512[506] = 
00836         { 
00837             0x30, 0x82, 0x01, 0xf6, 0x30, 0x82, 0x01, 0x9c, 0x02, 0x09, 0x00, 0xb4, 0x60, 0xcc, 0x6f, 0xa2, 
00838             0x55, 0x52, 0xfe, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x04, 0x30, 
00839             0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x31, 
00840             0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b, 0x66, 0x61, 0x72, 0x2d, 0x6e, 
00841             0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e, 
00842             0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 
00843             0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x49, 
00844             0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x06, 0x44, 0x65, 0x76, 
00845             0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 
00846             0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30, 0x31, 0x40, 0x61, 0x72, 0x6d, 
00847             0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x39, 0x31, 0x30, 0x31, 0x34, 
00848             0x30, 0x33, 0x33, 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, 0x30, 0x33, 0x31, 0x34, 0x30, 
00849             0x33, 0x33, 0x33, 0x5a, 0x30, 0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 
00850             0x13, 0x02, 0x55, 0x4b, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b, 
00851             0x66, 0x61, 0x72, 0x2d, 0x6e, 0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 
00852             0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06, 
00853             0x03, 0x55, 0x04, 0x0a, 0x0c, 0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 
00854             0x04, 0x0b, 0x0c, 0x03, 0x49, 0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, 
00855             0x0c, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86, 
00856             0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30, 
00857             0x31, 0x40, 0x61, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 
00858             0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 
00859             0x03, 0x42, 0x00, 0x04, 0x41, 0xdf, 0x03, 0x36, 0x9c, 0xb3, 0xb2, 0x9e, 0x42, 0xbc, 0x48, 0x37, 
00860             0x3c, 0x21, 0xc2, 0x99, 0xb1, 0x47, 0x1d, 0x96, 0x84, 0x28, 0xdb, 0x07, 0x30, 0xad, 0x69, 0x86, 
00861             0x39, 0x10, 0x10, 0x52, 0xe9, 0x3a, 0xe5, 0x4e, 0xd3, 0x3f, 0xd3, 0x0d, 0xfd, 0x9f, 0xd9, 0x4b, 
00862             0xcb, 0xa1, 0x81, 0xbe, 0x3f, 0xbe, 0x24, 0x68, 0xc3, 0xe9, 0x73, 0xbf, 0x34, 0xb7, 0xa0, 0x61, 
00863             0x56, 0x96, 0xb5, 0x74, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x04, 
00864             0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xa0, 0xa6, 0x46, 0xaa, 0xef, 0x18, 0xa6, 0xa3, 
00865             0x7b, 0x81, 0xdb, 0x36, 0xf7, 0x2c, 0xbc, 0xb4, 0x29, 0x7f, 0x3c, 0x35, 0xbd, 0x88, 0xba, 0xa6, 
00866             0x98, 0x8f, 0x5f, 0x67, 0x35, 0xf8, 0xf2, 0x18, 0x02, 0x20, 0x65, 0x88, 0x9e, 0x5d, 0x5a, 0x84, 
00867             0xb7, 0x42, 0x96, 0xe4, 0xb7, 0x7d, 0x9b, 0x5c, 0x01, 0xc3, 0x5a, 0x40, 0x11, 0x0d, 0xf5, 0xfe, 
00868             0x44, 0x9c, 0xbb, 0xd2, 0x2f, 0x37, 0x38, 0xbe, 0x03, 0x56};
00869 
00870 //Certificate based on unsupported curve – secp521r1 
00871 const uint8_t testdata_x509_Curve512r1[641] = 
00872         { 
00873             0x30, 0x82, 0x02, 0x7d, 0x30, 0x82, 0x01, 0xdf, 0x02, 0x09, 0x00, 0xe2, 0x16, 0x36, 0x0a, 0x28,
00874             0x52, 0x3e, 0x81, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30,
00875             0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x31,
00876             0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b, 0x66, 0x61, 0x72, 0x2d, 0x6e,
00877             0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e,
00878             0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,
00879             0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x49,
00880             0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x06, 0x44, 0x65, 0x76,
00881             0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
00882             0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30, 0x31, 0x40, 0x61, 0x72, 0x6d,
00883             0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x31, 0x30, 0x30, 0x31, 0x30, 0x38,
00884             0x35, 0x36, 0x35, 0x31, 0x5a, 0x17, 0x0d, 0x32, 0x33, 0x30, 0x33, 0x32, 0x34, 0x30, 0x38, 0x35,
00885             0x36, 0x35, 0x31, 0x5a, 0x30, 0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
00886             0x13, 0x02, 0x55, 0x4b, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b,
00887             0x66, 0x61, 0x72, 0x2d, 0x6e, 0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
00888             0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06,
00889             0x03, 0x55, 0x04, 0x0a, 0x0c, 0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55,
00890             0x04, 0x0b, 0x0c, 0x03, 0x49, 0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03,
00891             0x0c, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86,
00892             0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30,
00893             0x31, 0x40, 0x61, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x81, 0x9b, 0x30, 0x10, 0x06, 0x07,
00894             0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0x03, 0x81,
00895             0x86, 0x00, 0x04, 0x00, 0xf6, 0x6f, 0x0f, 0xbe, 0x33, 0x95, 0xa3, 0xd1, 0x00, 0x47, 0x27, 0xcf,
00896             0xd6, 0x3d, 0x0b, 0x69, 0x77, 0x40, 0xba, 0xaa, 0x82, 0xf4, 0xc3, 0x81, 0x41, 0x2b, 0xbd, 0x7b,
00897             0x2a, 0xf5, 0xd3, 0xf2, 0x09, 0x5a, 0x61, 0xb4, 0x5d, 0x6e, 0x32, 0x10, 0x61, 0xfd, 0x6e, 0x5a,
00898             0x74, 0x89, 0xad, 0xba, 0x23, 0x92, 0x33, 0x37, 0xa0, 0x4f, 0x98, 0x30, 0x4d, 0x8b, 0xae, 0xbf,
00899             0x5f, 0x49, 0x56, 0x17, 0x69, 0x00, 0x37, 0x1b, 0xde, 0xa0, 0x11, 0x38, 0x17, 0xb5, 0x15, 0x61,
00900             0xbd, 0xa1, 0xd8, 0x8d, 0x71, 0x48, 0x27, 0x4d, 0xbe, 0x60, 0x74, 0x3a, 0xd1, 0xe1, 0xff, 0xea,
00901             0x0a, 0xa2, 0x3d, 0xaa, 0x28, 0x39, 0x28, 0x32, 0xa7, 0x0c, 0x9d, 0xfa, 0x52, 0xc1, 0x2c, 0xba,
00902             0xac, 0x0f, 0x42, 0xa2, 0xcc, 0x78, 0x01, 0x45, 0x11, 0x62, 0xcf, 0x4f, 0x87, 0xcb, 0xf1, 0xff,
00903             0x2a, 0x1a, 0x30, 0xe9, 0x3d, 0x31, 0x59, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
00904             0x04, 0x03, 0x02, 0x03, 0x81, 0x8b, 0x00, 0x30, 0x81, 0x87, 0x02, 0x41, 0x31, 0x73, 0x8d, 0x4a,
00905             0x28, 0x86, 0xa9, 0x06, 0xbd, 0x7f, 0xe8, 0x58, 0x43, 0xc2, 0xce, 0xd9, 0xdb, 0x75, 0xae, 0x42,
00906             0x83, 0x98, 0x29, 0x28, 0x61, 0x02, 0xfc, 0x23, 0x54, 0xe3, 0xcd, 0x07, 0x6f, 0xdc, 0xa0, 0x2e,
00907             0xdd, 0xd3, 0xc6, 0x2e, 0x11, 0xcc, 0xd9, 0x3c, 0xdf, 0x26, 0xd4, 0x66, 0xdb, 0x03, 0x9e, 0x79,
00908             0x9a, 0x60, 0x8f, 0x1d, 0x52, 0x6e, 0x3d, 0x16, 0x2f, 0x7d, 0x86, 0x43, 0x98, 0x02, 0x42, 0x01,
00909             0xaa, 0xf2, 0x7f, 0xad, 0xad, 0xaa, 0x16, 0x35, 0x66, 0xe7, 0x52, 0xcc, 0x60, 0xdd, 0x09, 0xae,
00910             0x1b, 0x44, 0x33, 0xa1, 0x57, 0x3a, 0xa0, 0xc5, 0xe3, 0x08, 0x84, 0xa7, 0xe3, 0x59, 0xf3, 0x79,
00911             0x9a, 0xbf, 0xcb, 0x26, 0x36, 0x45, 0x64, 0x4b, 0x92, 0xb8, 0xc7, 0x51, 0x14, 0x57, 0x94, 0x4c,
00912             0x96, 0x59, 0x2a, 0x5f, 0xb1, 0x38, 0x84, 0xc3, 0x26, 0x51, 0x57, 0x64, 0x4e, 0x54, 0x30, 0x3e,
00913             0x00};
00914 
00915 const unsigned char x509_TI[] =
00916 {
00917         0x30, 0x82, 0x01, 0xc1, 0x30, 0x82, 0x01, 0x64, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01,
00918         0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x30, 0x3d,
00919         0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x07, 0x49, 0x4f, 0x54, 0x5f, 0x50,
00920         0x41, 0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x03, 0x50, 0x41, 0x4c,
00921         0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x0e, 0x30,
00922         0x0c, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x05, 0x49, 0x4f, 0x54, 0x42, 0x55, 0x30, 0x1e, 0x17,
00923         0x0d, 0x31, 0x33, 0x30, 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
00924         0x31, 0x35, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x3d, 0x31,
00925         0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x07, 0x49, 0x4f, 0x54, 0x5f, 0x50, 0x41,
00926         0x4c, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x03, 0x50, 0x41, 0x4c, 0x31,
00927         0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x4c, 0x31, 0x0e, 0x30, 0x0c,
00928         0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x05, 0x49, 0x4f, 0x54, 0x42, 0x55, 0x30, 0x59, 0x30, 0x13,
00929         0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
00930         0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x18, 0xf7, 0x26, 0xc6, 0x86, 0x30, 0xec, 0xed, 0xd6,
00931         0xb4, 0x3a, 0xd3, 0x86, 0x7a, 0x49, 0xbb, 0xb3, 0x93, 0xee, 0x43, 0x56, 0x18, 0x71, 0x2a, 0x40,
00932         0xda, 0xc8, 0x2c, 0x4a, 0xc6, 0x3d, 0x09, 0xfc, 0xe0, 0x84, 0x2f, 0x0d, 0xce, 0xf8, 0x17, 0xcf,
00933         0x28, 0x8f, 0x4f, 0xb4, 0xea, 0xde, 0xf9, 0xe4, 0x9a, 0x16, 0xeb, 0x8c, 0x67, 0x02, 0xfd, 0x64,
00934         0x7b, 0x62, 0x0e, 0x9b, 0x29, 0x05, 0x22, 0xa3, 0x53, 0x30, 0x51, 0x30, 0x0f, 0x06, 0x03, 0x55,
00935         0x1d, 0x13, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x1d, 0x06, 0x03,
00936         0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x13, 0xde, 0xa2, 0x8b, 0x8d, 0x40, 0x1e, 0xd6, 0x62,
00937         0xfd, 0x7e, 0x27, 0x53, 0xb8, 0x8f, 0x17, 0x18, 0x76, 0x33, 0x20, 0x30, 0x1f, 0x06, 0x03, 0x55,
00938         0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x13, 0xde, 0xa2, 0x8b, 0x8d, 0x40, 0x1e, 0xd6,
00939         0x62, 0xfd, 0x7e, 0x27, 0x53, 0xb8, 0x8f, 0x17, 0x18, 0x76, 0x33, 0x20, 0x30, 0x0c, 0x06, 0x08,
00940         0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x03, 0x49, 0x00, 0x30, 0x46, 0x02,
00941         0x21, 0x00, 0xb7, 0xbb, 0x7b, 0x05, 0x17, 0x5f, 0x74, 0x0a, 0x91, 0xd7, 0x95, 0x30, 0xa8, 0xb4,
00942         0x47, 0x26, 0x2d, 0xc4, 0xbf, 0xb4, 0xba, 0x00, 0x54, 0x92, 0xcd, 0xb8, 0xb4, 0x42, 0x4b, 0x05,
00943         0x95, 0xe6, 0x02, 0x21, 0x00, 0xdb, 0x61, 0x24, 0x78, 0xed, 0x54, 0xcd, 0x8e, 0xfa, 0x31, 0x21,
00944         0x8b, 0xe7, 0x11, 0x7e, 0x6e, 0xe2, 0x17, 0x63, 0xbe, 0x31, 0x90, 0x2b, 0xf8, 0xd2, 0x11, 0x5d,
00945         0x9d, 0x8d, 0x5a, 0xaa, 0xdd
00946 };
00947 
00948 const unsigned char x509_TI_PEM[] = "-----BEGIN CERTIFICATE-----\r\n"
00949         "MIIFIzCCBAugAwIBAgIQVYyM7bV85U+m+zUfuEsiLzANBgkqhkiG9w0BAQUFADCB\r\n"
00950         "tDELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\r\n"
00951         "ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTswOQYDVQQLEzJUZXJtcyBvZiB1c2Ug\r\n"
00952         "YXQgaHR0cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYSAoYykxMDEuMCwGA1UEAxMl\r\n"
00953         "VmVyaVNpZ24gQ2xhc3MgMyBDb2RlIFNpZ25pbmcgMjAxMCBDQTAeFw0xNDA0MTUw\r\n"
00954         "MDAwMDBaFw0xNTA0MTYyMzU5NTlaMHQxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIEwVU\r\n"
00955         "ZXhhczEPMA0GA1UEBxMGRGFsbGFzMRowGAYDVQQKFBFUZXhhcyBJbnN0cnVtZW50\r\n"
00956         "czEMMAoGA1UECxQDV0NTMRowGAYDVQQDFBFUZXhhcyBJbnN0cnVtZW50czCCASIw\r\n"
00957         "DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMuAIvJOnebITQe2qli+t6Juwoy7\r\n"
00958         "I9qenavTt7D2cYsEBO+Oj/SLWjkieGPKek1Q+DIo66h3ZAYB9mDhxIAxY8bMmO61\r\n"
00959         "SOwxtcjA7nLgoqacMi61ly5OmjDuTholKjCyFCYmun7YPiI4b0BRNwFIMxOjfKdc\r\n"
00960         "9Jj1UCl7TH0DFsn1ly583NOlJey7AV5v4sijU5AWSR+JeaV/yFw1MPbY58ekjnS8\r\n"
00961         "tv5K8r5k5D770jDOZ/nuLpVZ3oNvhP9uMb6abEcUcVnxHkPu8ovFa43T1FwAKYSF\r\n"
00962         "4FAPpe4P9EQVUBJAupMt91J6iPWeiSjKYMYbd3dgNHNabsoT1gACAhCWwJkCAwEA\r\n"
00963         "AaOCAW4wggFqMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoG\r\n"
00964         "CCsGAQUFBwMDMGYGA1UdIARfMF0wWwYLYIZIAYb4RQEHFwMwTDAjBggrBgEFBQcC\r\n"
00965         "ARYXaHR0cHM6Ly9kLnN5bWNiLmNvbS9jcHMwJQYIKwYBBQUHAgIwGRoXaHR0cHM6\r\n"
00966         "Ly9kLnN5bWNiLmNvbS9ycGEwHwYDVR0jBBgwFoAUz5mp6nsm9EvJjo/X8AUm7+PS\r\n"
00967         "p50wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3NmLnN5bWNiLmNvbS9zZi5jcmww\r\n"
00968         "VwYIKwYBBQUHAQEESzBJMB8GCCsGAQUFBzABhhNodHRwOi8vc2Yuc3ltY2QuY29t\r\n"
00969         "MCYGCCsGAQUFBzAChhpodHRwOi8vc2Yuc3ltY2IuY29tL3NmLmNydDARBglghkgB\r\n"
00970         "hvhCAQEEBAMCBBAwFgYKKwYBBAGCNwIBGwQIMAYBAQABAf8wDQYJKoZIhvcNAQEF\r\n"
00971         "BQADggEBACKIttb6LKlpjDHUFo9BHdYw6qxbF3Ham5GPjAn+ofYqpv3KoF7L2Rc9\r\n"
00972         "jhYDIA5IHmYAjDdHLUBx+DdzMP80cXcRIdBGgOFFw++rRboUi0yOpg47yD0AipNT\r\n"
00973         "Q00rBdoeEzs3ERiPir20402OmFUBkCcwM85XaXh1hvOKDZaCEj/6vlK/Y6++y1QC\r\n"
00974         "tQGm08HAAuEz4VsnE/mcVeuaVM8DqFInrp9mpCNiCCwdiG3TEC1UgACjxFmFk0UH\r\n"
00975         "mrUNww35tofUjAoXIkcegm2d/ld8bZxludWG2sJRydVTAQe1jJJDg+N7IdyH/gv7\r\n"
00976         "y8i1xf5goGEvMqLiYY5njLCSSpCeNqE=\r\n"
00977         "-----END CERTIFICATE-----\r\n";
00978 
00979 const unsigned char x509_selfsign[] =
00980 {
00981         0x30, 0x82, 0x01, 0x9a, 0x30, 0x82, 0x01, 0x3e, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01,
00982         0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x05, 0x00, 0x30, 0x2d,
00983         0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x02, 0x43, 0x41, 0x31, 0x11, 0x30,
00984         0x0f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x08, 0x6d, 0x62, 0x65, 0x64, 0x20, 0x54, 0x4c, 0x53,
00985         0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x30, 0x1e, 0x17,
00986         0x0d, 0x30, 0x31, 0x30, 0x31, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d,
00987         0x33, 0x30, 0x31, 0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x2d, 0x31,
00988         0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x02, 0x43, 0x41, 0x31, 0x11, 0x30, 0x0f,
00989         0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x08, 0x6d, 0x62, 0x65, 0x64, 0x20, 0x54, 0x4c, 0x53, 0x31,
00990         0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x30, 0x59, 0x30, 0x13,
00991         0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d,
00992         0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xf7, 0xc6, 0x63, 0x68, 0x8d, 0x48, 0x3a, 0xcc, 0xeb,
00993         0xc1, 0x01, 0xcb, 0xd5, 0xc9, 0xa9, 0xc8, 0x42, 0x62, 0x2e, 0xd0, 0xb2, 0x34, 0x6a, 0x9f, 0xc9,
00994         0xce, 0xe0, 0x1c, 0x57, 0xc7, 0x0a, 0x62, 0x6e, 0x8e, 0x2e, 0xc5, 0x9f, 0xef, 0x8e, 0x04, 0x44,
00995         0x7e, 0xf3, 0xd0, 0xe6, 0x92, 0xc9, 0x0a, 0x49, 0x72, 0x98, 0x7f, 0x73, 0x3e, 0xf6, 0x97, 0x70,
00996         0x74, 0xb7, 0x9f, 0xe1, 0xb5, 0xef, 0xce, 0xa3, 0x4d, 0x30, 0x4b, 0x30, 0x09, 0x06, 0x03, 0x55,
00997         0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04,
00998         0x14, 0x0f, 0xc6, 0x27, 0x51, 0xce, 0x06, 0x0b, 0x3b, 0xbd, 0xf1, 0xd1, 0x8e, 0x25, 0x6d, 0xcd,
00999         0x12, 0x64, 0x8f, 0x73, 0x4d, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16,
01000         0x80, 0x14, 0x0f, 0xc6, 0x27, 0x51, 0xce, 0x06, 0x0b, 0x3b, 0xbd, 0xf1, 0xd1, 0x8e, 0x25, 0x6d,
01001         0xcd, 0x12, 0x64, 0x8f, 0x73, 0x4d, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04,
01002         0x03, 0x02, 0x05, 0x00, 0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xf1, 0x6a, 0x24, 0x08,
01003         0x99, 0xf1, 0xe0, 0x55, 0x4f, 0x0a, 0x52, 0x72, 0x68, 0x63, 0x6e, 0xec, 0x2f, 0x9d, 0x54, 0x61,
01004         0x9d, 0x7f, 0xa3, 0x5d, 0xa5, 0x79, 0x69, 0xc2, 0xab, 0xcf, 0x0f, 0x48, 0x02, 0x20, 0x51, 0x41,
01005         0x26, 0x4b, 0xdf, 0x1b, 0x5e, 0xda, 0xa4, 0x53, 0x8d, 0xe5, 0x92, 0xa6, 0x1b, 0x8a, 0x0d, 0x58,
01006         0x59, 0x9e, 0x77, 0x99, 0xd6, 0x81, 0xf1, 0x5d, 0xcd, 0x28, 0xcc, 0x03, 0x75, 0x96
01007 };
01008 
01009 const unsigned char x509_verify_ca[] =
01010 {
01011         0x30, 0x82, 0x01, 0xf6, 0x30, 0x82, 0x01, 0x9c, 0x02, 0x09, 0x00, 0xe3, 0x22, 0x71, 0x24, 0xb8,
01012         0xa6, 0x9b, 0xce, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30,
01013         0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x31,
01014         0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b, 0x66, 0x61, 0x72, 0x2d, 0x6e,
01015         0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e,
01016         0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,
01017         0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x49,
01018         0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x06, 0x44, 0x65, 0x76,
01019         0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
01020         0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30, 0x31, 0x40, 0x61, 0x72, 0x6d,
01021         0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x33, 0x30, 0x31, 0x31, 0x37,
01022         0x34, 0x33, 0x35, 0x33, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30, 0x38, 0x32, 0x32, 0x31, 0x37, 0x34,
01023         0x33, 0x35, 0x33, 0x5a, 0x30, 0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06,
01024         0x13, 0x02, 0x55, 0x4b, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b,
01025         0x66, 0x61, 0x72, 0x2d, 0x6e, 0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
01026         0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06,
01027         0x03, 0x55, 0x04, 0x0a, 0x0c, 0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55,
01028         0x04, 0x0b, 0x0c, 0x03, 0x49, 0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03,
01029         0x0c, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86,
01030         0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30,
01031         0x31, 0x40, 0x61, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a,
01032         0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07,
01033         0x03, 0x42, 0x00, 0x04, 0x24, 0xb5, 0x1b, 0xaf, 0x82, 0xd6, 0xc6, 0xc4, 0x66, 0xba, 0xe7, 0xdf,
01034         0x41, 0xd2, 0x03, 0xdb, 0xbf, 0x49, 0xf0, 0x99, 0x66, 0xf1, 0xe1, 0x15, 0x37, 0x94, 0x66, 0x2b,
01035         0x22, 0x4c, 0x8e, 0xc6, 0xd4, 0x5e, 0x6f, 0x1a, 0xdb, 0x44, 0xe5, 0x06, 0xd8, 0x34, 0xad, 0xf2,
01036         0x1e, 0x92, 0x23, 0xd8, 0xd4, 0xd2, 0x01, 0x6a, 0x6e, 0x3c, 0x09, 0x7b, 0x5b, 0xff, 0x0e, 0x6f,
01037         0xb4, 0x28, 0xe6, 0x28, 0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02,
01038         0x03, 0x48, 0x00, 0x30, 0x45, 0x02, 0x21, 0x00, 0xae, 0xaf, 0x9e, 0xfb, 0xea, 0x53, 0xe7, 0xe3,
01039         0xd5, 0xe0, 0x90, 0x87, 0x15, 0xaf, 0x48, 0x9f, 0x50, 0x2c, 0x44, 0x4d, 0x2a, 0x68, 0x38, 0xa0,
01040         0x3c, 0x09, 0xbc, 0x32, 0xb8, 0x78, 0xcf, 0xfa, 0x02, 0x20, 0x0c, 0x0d, 0xc8, 0xda, 0xcd, 0x09,
01041         0x7a, 0xa9, 0x6d, 0x18, 0x6c, 0xc1, 0x58, 0x1a, 0xec, 0x9a, 0x8b, 0x0d, 0x8a, 0xc4, 0xea, 0x9d,
01042         0x49, 0x5f, 0xa1, 0x9e, 0xcc, 0xcf, 0xbe, 0xb5, 0x25, 0xfd
01043 };
01044 
01045 const unsigned char x509_verify_cert[] =
01046 {
01047         0x30, 0x82, 0x01, 0xf2, 0x30, 0x82, 0x01, 0x98, 0x02, 0x01, 0x03, 0x30, 0x0a, 0x06, 0x08, 0x2a,
01048         0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x30, 0x81, 0x82, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03,
01049         0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08,
01050         0x0c, 0x0a, 0x4b, 0x66, 0x61, 0x72, 0x2d, 0x6e, 0x65, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e,
01051         0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x74, 0x61, 0x6e, 0x69, 0x61, 0x31, 0x0c,
01052         0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x03, 0x41, 0x52, 0x4d, 0x31, 0x0c, 0x30, 0x0a,
01053         0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x49, 0x4f, 0x54, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03,
01054         0x55, 0x04, 0x03, 0x0c, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x31, 0x1f, 0x30, 0x1d, 0x06,
01055         0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69,
01056         0x63, 0x65, 0x30, 0x31, 0x40, 0x61, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1e, 0x17, 0x0d,
01057         0x31, 0x37, 0x30, 0x33, 0x30, 0x31, 0x31, 0x37, 0x34, 0x33, 0x35, 0x33, 0x5a, 0x17, 0x0d, 0x31,
01058         0x37, 0x30, 0x33, 0x33, 0x31, 0x31, 0x37, 0x34, 0x33, 0x35, 0x33, 0x5a, 0x30, 0x81, 0x86, 0x31,
01059         0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x4b, 0x31, 0x13, 0x30, 0x11,
01060         0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x4b, 0x66, 0x61, 0x72, 0x2d, 0x6e, 0x65, 0x74, 0x65,
01061         0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x07, 0x4e, 0x65, 0x74, 0x61,
01062         0x6e, 0x69, 0x61, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x03, 0x41, 0x52,
01063         0x4d, 0x31, 0x0c, 0x30, 0x0a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x03, 0x49, 0x4f, 0x54, 0x31,
01064         0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x0a, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x20,
01065         0x43, 0x45, 0x52, 0x54, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
01066         0x01, 0x09, 0x01, 0x16, 0x10, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x30, 0x31, 0x40, 0x61, 0x72,
01067         0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d,
01068         0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04,
01069         0x6b, 0x28, 0x07, 0xf4, 0x9a, 0xf7, 0x19, 0x2b, 0x3f, 0x6a, 0xf4, 0xa1, 0xcb, 0x5f, 0x21, 0x18,
01070         0x46, 0xef, 0xcf, 0x9c, 0xbd, 0x31, 0x89, 0xac, 0x9c, 0xb6, 0xe4, 0x2c, 0xb9, 0x81, 0xae, 0x6d,
01071         0xb6, 0x57, 0x88, 0x18, 0xde, 0x06, 0x12, 0xe4, 0xfe, 0x63, 0xea, 0x13, 0x8b, 0xf7, 0x76, 0xe3,
01072         0x97, 0xc9, 0xbd, 0x47, 0xbf, 0x50, 0x92, 0xba, 0x1e, 0x3e, 0x3b, 0x8d, 0x6e, 0x8f, 0x86, 0xfd,
01073         0x30, 0x0a, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x04, 0x03, 0x02, 0x03, 0x48, 0x00, 0x30,
01074         0x45, 0x02, 0x20, 0x30, 0xc2, 0xd4, 0xbd, 0xa9, 0x5d, 0xe1, 0xd0, 0xc5, 0xcb, 0xb5, 0xb3, 0x31,
01075         0x8a, 0xad, 0x7a, 0xab, 0xc7, 0x85, 0xf2, 0x1a, 0x0a, 0x4f, 0xd1, 0x63, 0x33, 0x05, 0x20, 0x1f,
01076         0xb4, 0xd6, 0x6e, 0x02, 0x21, 0x00, 0x8c, 0xcd, 0x36, 0x73, 0x9c, 0xb7, 0xc2, 0xee, 0xf3, 0x0a,
01077         0xbf, 0x4f, 0xd3, 0x95, 0x08, 0xa6, 0xcd, 0xdd, 0x5b, 0x78, 0x8f, 0x83, 0x90, 0xef, 0x2a, 0x8a,
01078         0x27, 0x0d, 0x73, 0x0b, 0xa0, 0xfa
01079 };
01080 
01081 typedef struct palX509VertifyTestVector
01082 {
01083     const unsigned char* ca;
01084     size_t ca_size;
01085     const unsigned char* crt;
01086     size_t crt_size;
01087     palStatus_t result;
01088 }palX509VertifyTestVector_t;
01089 
01090 #ifdef PAL_CERT_TIME_VERIFY
01091 #define PAL_CRYPTO_TEST_CERT_TIME_OFFSET 10000
01092 
01093 static const palX509VertifyTestVector_t x509_verify_data[4] =
01094 {
01095         { x509_selfsign, sizeof(x509_selfsign), x509_selfsign, sizeof(x509_selfsign), 0 },
01096         { NULL, 0, x509_selfsign, sizeof(x509_selfsign), PAL_ERR_X509_BADCERT_NOT_TRUSTED },
01097         { x509_verify_ca, sizeof(x509_verify_ca), x509_verify_cert, sizeof(x509_verify_cert), PAL_ERR_X509_BADCERT_FUTURE },
01098         { x509_verify_cert, sizeof(x509_verify_cert), x509_verify_ca, sizeof(x509_verify_ca), PAL_ERR_X509_BADCERT_EXPIRED },
01099 };
01100 
01101 #else
01102 
01103 static const palX509VertifyTestVector_t x509_verify_data[4] = 
01104 {
01105         { x509_selfsign, sizeof(x509_selfsign), x509_selfsign, sizeof(x509_selfsign), 0 },
01106         { NULL, 0, x509_selfsign, sizeof(x509_selfsign), PAL_ERR_X509_BADCERT_NOT_TRUSTED },
01107         { x509_verify_ca, sizeof(x509_verify_ca), x509_verify_cert, sizeof(x509_verify_cert), 0 },
01108         { x509_verify_cert, sizeof(x509_verify_cert), x509_verify_ca, sizeof(x509_verify_ca), PAL_ERR_X509_BADCERT_NOT_TRUSTED }
01109 };
01110 
01111 
01112 #endif //PAL_CERT_TIME_VERIFY
01113 
01114 typedef struct palMdHMACTestVector
01115 {
01116     const unsigned char key[131];
01117     const unsigned char input[152];
01118     unsigned char output[32];
01119     size_t keyLen;
01120     size_t inputLen;
01121     size_t outputLen;
01122 } palMdHMACTestVector_t;
01123 
01124 const palMdHMACTestVector_t mdHMACVector[7] =
01125 {
01126         {
01127                 {
01128                         0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
01129                         0x0b, 0x0b, 0x0b, 0x0b
01130                 },
01131                 {
01132                         0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65
01133                 },
01134                 {
01135                         0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, 0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b,
01136                         0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7
01137                 }, 20, 8, 32
01138         },
01139         {
01140                 {
01141                         0x4a, 0x65, 0x66, 0x65
01142                 },
01143                 {
01144                         0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20, 0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20,
01145                         0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x3f
01146                 },
01147                 {
01148                         0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
01149                         0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83, 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43
01150                 }, 4, 28, 32
01151         },
01152         {
01153                 {
01154                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01155                         0xaa, 0xaa, 0xaa, 0xaa
01156                 },
01157                 {
01158                         0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
01159                         0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
01160                         0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
01161                         0xdd, 0xdd
01162                 },
01163                 {
01164                         0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46, 0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7,
01165                         0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22, 0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe
01166                 }, 20, 50, 32
01167         },
01168         {
01169                 {
01170                         0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
01171                         0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19
01172                 },
01173                 {
01174                         0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
01175                         0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
01176                         0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
01177                         0xcd, 0xcd
01178                 },
01179                 {
01180                         0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e, 0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a,
01181                         0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07, 0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b
01182                 }, 25, 50, 32
01183         },
01184         {
01185                 {
01186                         0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
01187                         0x0c, 0x0c, 0x0c, 0x0c
01188                 },
01189                 {
01190                         0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61,
01191                         0x74, 0x69, 0x6f, 0x6e
01192                 },
01193                 {
01194                         0xa3, 0xb6, 0x16, 0x74, 0x73, 0x10, 0x0e, 0xe0, 0x6e, 0x0c, 0x79, 0x6c, 0x29, 0x55, 0x55, 0x2b
01195                 }, 20, 20, 16
01196         },
01197         {
01198                 {
01199                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01200                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01201                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01202                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01203                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01204                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01205                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01206                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01207                         0xaa, 0xaa, 0xaa
01208                 },
01209 
01210                 {
01211                         0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65,
01212                         0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a,
01213                         0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20, 0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79,
01214                         0x20, 0x46, 0x69, 0x72, 0x73, 0x74
01215                 },
01216 
01217                 {
01218                         0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f, 0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f,
01219                         0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14, 0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54
01220                 }, 131, 54, 32
01221         },
01222         {
01223                 {
01224                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01225                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01226                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01227                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01228                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01229                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01230                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01231                         0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
01232                         0xaa, 0xaa, 0xaa
01233                 },
01234                 {
01235                         0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75,
01236                         0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68,
01237                         0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65,
01238                         0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74,
01239                         0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64,
01240                         0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65,
01241                         0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20,
01242                         0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65,
01243                         0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c,
01244                         0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e
01245                 },
01246                 {
01247                         0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb, 0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44,
01248                         0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93, 0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2
01249                 }, 131, 152, 32
01250         }
01251 };