1 /* 2 * Copyright (c) 2018-2021 Yubico AB. All rights reserved. 3 * Use of this source code is governed by a BSD-style 4 * license that can be found in the LICENSE file. 5 */ 6 7 #include <assert.h> 8 #include <cbor.h> 9 #include <fido.h> 10 #include <string.h> 11 12 #define FAKE_DEV_HANDLE ((void *)0xdeadbeef) 13 14 static const unsigned char cdh[32] = { 15 0xf9, 0x64, 0x57, 0xe7, 0x2d, 0x97, 0xf6, 0xbb, 16 0xdd, 0xd7, 0xfb, 0x06, 0x37, 0x62, 0xea, 0x26, 17 0x20, 0x44, 0x8e, 0x69, 0x7c, 0x03, 0xf2, 0x31, 18 0x2f, 0x99, 0xdc, 0xaf, 0x3e, 0x8a, 0x91, 0x6b, 19 }; 20 21 static const unsigned char authdata[198] = { 22 0x58, 0xc4, 0x49, 0x96, 0x0d, 0xe5, 0x88, 0x0e, 23 0x8c, 0x68, 0x74, 0x34, 0x17, 0x0f, 0x64, 0x76, 24 0x60, 0x5b, 0x8f, 0xe4, 0xae, 0xb9, 0xa2, 0x86, 25 0x32, 0xc7, 0x99, 0x5c, 0xf3, 0xba, 0x83, 0x1d, 26 0x97, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0xf8, 27 0xa0, 0x11, 0xf3, 0x8c, 0x0a, 0x4d, 0x15, 0x80, 28 0x06, 0x17, 0x11, 0x1f, 0x9e, 0xdc, 0x7d, 0x00, 29 0x40, 0x53, 0xfb, 0xdf, 0xaa, 0xce, 0x63, 0xde, 30 0xc5, 0xfe, 0x47, 0xe6, 0x52, 0xeb, 0xf3, 0x5d, 31 0x53, 0xa8, 0xbf, 0x9d, 0xd6, 0x09, 0x6b, 0x5e, 32 0x7f, 0xe0, 0x0d, 0x51, 0x30, 0x85, 0x6a, 0xda, 33 0x68, 0x70, 0x85, 0xb0, 0xdb, 0x08, 0x0b, 0x83, 34 0x2c, 0xef, 0x44, 0xe2, 0x36, 0x88, 0xee, 0x76, 35 0x90, 0x6e, 0x7b, 0x50, 0x3e, 0x9a, 0xa0, 0xd6, 36 0x3c, 0x34, 0xe3, 0x83, 0xe7, 0xd1, 0xbd, 0x9f, 37 0x25, 0xa5, 0x01, 0x02, 0x03, 0x26, 0x20, 0x01, 38 0x21, 0x58, 0x20, 0x17, 0x5b, 0x27, 0xa6, 0x56, 39 0xb2, 0x26, 0x0c, 0x26, 0x0c, 0x55, 0x42, 0x78, 40 0x17, 0x5d, 0x4c, 0xf8, 0xa2, 0xfd, 0x1b, 0xb9, 41 0x54, 0xdf, 0xd5, 0xeb, 0xbf, 0x22, 0x64, 0xf5, 42 0x21, 0x9a, 0xc6, 0x22, 0x58, 0x20, 0x87, 0x5f, 43 0x90, 0xe6, 0xfd, 0x71, 0x27, 0x9f, 0xeb, 0xe3, 44 0x03, 0x44, 0xbc, 0x8d, 0x49, 0xc6, 0x1c, 0x31, 45 0x3b, 0x72, 0xae, 0xd4, 0x53, 0xb1, 0xfe, 0x5d, 46 0xe1, 0x30, 0xfc, 0x2b, 0x1e, 0xd2, 47 }; 48 49 static const unsigned char authdata_dupkeys[200] = { 50 0x58, 0xc6, 0x49, 0x96, 0x0d, 0xe5, 0x88, 0x0e, 51 0x8c, 0x68, 0x74, 0x34, 0x17, 0x0f, 0x64, 0x76, 52 0x60, 0x5b, 0x8f, 0xe4, 0xae, 0xb9, 0xa2, 0x86, 53 0x32, 0xc7, 0x99, 0x5c, 0xf3, 0xba, 0x83, 0x1d, 54 0x97, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0xf8, 55 0xa0, 0x11, 0xf3, 0x8c, 0x0a, 0x4d, 0x15, 0x80, 56 0x06, 0x17, 0x11, 0x1f, 0x9e, 0xdc, 0x7d, 0x00, 57 0x40, 0x53, 0xfb, 0xdf, 0xaa, 0xce, 0x63, 0xde, 58 0xc5, 0xfe, 0x47, 0xe6, 0x52, 0xeb, 0xf3, 0x5d, 59 0x53, 0xa8, 0xbf, 0x9d, 0xd6, 0x09, 0x6b, 0x5e, 60 0x7f, 0xe0, 0x0d, 0x51, 0x30, 0x85, 0x6a, 0xda, 61 0x68, 0x70, 0x85, 0xb0, 0xdb, 0x08, 0x0b, 0x83, 62 0x2c, 0xef, 0x44, 0xe2, 0x36, 0x88, 0xee, 0x76, 63 0x90, 0x6e, 0x7b, 0x50, 0x3e, 0x9a, 0xa0, 0xd6, 64 0x3c, 0x34, 0xe3, 0x83, 0xe7, 0xd1, 0xbd, 0x9f, 65 0x25, 0xa6, 0x01, 0x02, 0x01, 0x02, 0x03, 0x26, 66 0x20, 0x01, 0x21, 0x58, 0x20, 0x17, 0x5b, 0x27, 67 0xa6, 0x56, 0xb2, 0x26, 0x0c, 0x26, 0x0c, 0x55, 68 0x42, 0x78, 0x17, 0x5d, 0x4c, 0xf8, 0xa2, 0xfd, 69 0x1b, 0xb9, 0x54, 0xdf, 0xd5, 0xeb, 0xbf, 0x22, 70 0x64, 0xf5, 0x21, 0x9a, 0xc6, 0x22, 0x58, 0x20, 71 0x87, 0x5f, 0x90, 0xe6, 0xfd, 0x71, 0x27, 0x9f, 72 0xeb, 0xe3, 0x03, 0x44, 0xbc, 0x8d, 0x49, 0xc6, 73 0x1c, 0x31, 0x3b, 0x72, 0xae, 0xd4, 0x53, 0xb1, 74 0xfe, 0x5d, 0xe1, 0x30, 0xfc, 0x2b, 0x1e, 0xd2, 75 }; 76 77 static const unsigned char authdata_unsorted_keys[198] = { 78 0x58, 0xc4, 0x49, 0x96, 0x0d, 0xe5, 0x88, 0x0e, 79 0x8c, 0x68, 0x74, 0x34, 0x17, 0x0f, 0x64, 0x76, 80 0x60, 0x5b, 0x8f, 0xe4, 0xae, 0xb9, 0xa2, 0x86, 81 0x32, 0xc7, 0x99, 0x5c, 0xf3, 0xba, 0x83, 0x1d, 82 0x97, 0x63, 0x41, 0x00, 0x00, 0x00, 0x00, 0xf8, 83 0xa0, 0x11, 0xf3, 0x8c, 0x0a, 0x4d, 0x15, 0x80, 84 0x06, 0x17, 0x11, 0x1f, 0x9e, 0xdc, 0x7d, 0x00, 85 0x40, 0x53, 0xfb, 0xdf, 0xaa, 0xce, 0x63, 0xde, 86 0xc5, 0xfe, 0x47, 0xe6, 0x52, 0xeb, 0xf3, 0x5d, 87 0x53, 0xa8, 0xbf, 0x9d, 0xd6, 0x09, 0x6b, 0x5e, 88 0x7f, 0xe0, 0x0d, 0x51, 0x30, 0x85, 0x6a, 0xda, 89 0x68, 0x70, 0x85, 0xb0, 0xdb, 0x08, 0x0b, 0x83, 90 0x2c, 0xef, 0x44, 0xe2, 0x36, 0x88, 0xee, 0x76, 91 0x90, 0x6e, 0x7b, 0x50, 0x3e, 0x9a, 0xa0, 0xd6, 92 0x3c, 0x34, 0xe3, 0x83, 0xe7, 0xd1, 0xbd, 0x9f, 93 0x25, 0xa5, 0x03, 0x26, 0x01, 0x02, 0x20, 0x01, 94 0x21, 0x58, 0x20, 0x17, 0x5b, 0x27, 0xa6, 0x56, 95 0xb2, 0x26, 0x0c, 0x26, 0x0c, 0x55, 0x42, 0x78, 96 0x17, 0x5d, 0x4c, 0xf8, 0xa2, 0xfd, 0x1b, 0xb9, 97 0x54, 0xdf, 0xd5, 0xeb, 0xbf, 0x22, 0x64, 0xf5, 98 0x21, 0x9a, 0xc6, 0x22, 0x58, 0x20, 0x87, 0x5f, 99 0x90, 0xe6, 0xfd, 0x71, 0x27, 0x9f, 0xeb, 0xe3, 100 0x03, 0x44, 0xbc, 0x8d, 0x49, 0xc6, 0x1c, 0x31, 101 0x3b, 0x72, 0xae, 0xd4, 0x53, 0xb1, 0xfe, 0x5d, 102 0xe1, 0x30, 0xfc, 0x2b, 0x1e, 0xd2, 103 }; 104 105 const unsigned char authdata_tpm_rs256[362] = { 106 0x59, 0x01, 0x67, 0x49, 0x96, 0x0d, 0xe5, 0x88, 107 0x0e, 0x8c, 0x68, 0x74, 0x34, 0x17, 0x0f, 0x64, 108 0x76, 0x60, 0x5b, 0x8f, 0xe4, 0xae, 0xb9, 0xa2, 109 0x86, 0x32, 0xc7, 0x99, 0x5c, 0xf3, 0xba, 0x83, 110 0x1d, 0x97, 0x63, 0x45, 0x00, 0x00, 0x00, 0x00, 111 0x08, 0x98, 0x70, 0x58, 0xca, 0xdc, 0x4b, 0x81, 112 0xb6, 0xe1, 0x30, 0xde, 0x50, 0xdc, 0xbe, 0x96, 113 0x00, 0x20, 0x89, 0x99, 0x6d, 0x5a, 0x00, 0x29, 114 0xe5, 0x3e, 0x6a, 0x1c, 0x72, 0x6d, 0x71, 0x4a, 115 0x4f, 0x03, 0x9b, 0x68, 0x17, 0xdb, 0x29, 0x1a, 116 0x6b, 0x02, 0x6c, 0x26, 0xf9, 0xbd, 0xc3, 0x0e, 117 0x38, 0x1a, 0xa4, 0x01, 0x03, 0x03, 0x39, 0x01, 118 0x00, 0x20, 0x59, 0x01, 0x00, 0xc5, 0xb6, 0x9c, 119 0x06, 0x1d, 0xcf, 0xb9, 0xf2, 0x5e, 0x99, 0x7d, 120 0x6d, 0x73, 0xd8, 0x36, 0xc1, 0x4a, 0x90, 0x05, 121 0x4d, 0x82, 0x57, 0xc1, 0xb6, 0x6a, 0xd1, 0x43, 122 0x03, 0x85, 0xf8, 0x52, 0x4f, 0xd2, 0x27, 0x91, 123 0x0b, 0xb5, 0x93, 0xa0, 0x68, 0xf8, 0x80, 0x1b, 124 0xaa, 0x65, 0x97, 0x45, 0x11, 0x86, 0x34, 0xd6, 125 0x67, 0xf8, 0xd5, 0x12, 0x79, 0x84, 0xee, 0x70, 126 0x99, 0x00, 0x63, 0xa8, 0xb4, 0x43, 0x0b, 0x4c, 127 0x57, 0x4a, 0xd6, 0x9b, 0x75, 0x63, 0x8a, 0x46, 128 0x57, 0xdb, 0x14, 0xc8, 0x71, 0xd1, 0xb3, 0x07, 129 0x68, 0x58, 0xbc, 0x55, 0x84, 0x80, 0x2a, 0xd2, 130 0x36, 0x9f, 0xc1, 0x64, 0xa0, 0x11, 0x4b, 0xc9, 131 0x32, 0x31, 0x3a, 0xd6, 0x87, 0x26, 0x1a, 0x3a, 132 0x78, 0x3d, 0x89, 0xdb, 0x00, 0x28, 0x3b, 0xae, 133 0x2b, 0x1b, 0x56, 0xe2, 0x8c, 0x4c, 0x63, 0xac, 134 0x6e, 0x6c, 0xf7, 0xb5, 0x7d, 0x4d, 0x0b, 0x9f, 135 0x06, 0xa0, 0x10, 0x35, 0x38, 0x20, 0x4d, 0xcc, 136 0x07, 0xd7, 0x00, 0x4e, 0x86, 0xba, 0xfe, 0x8b, 137 0xe4, 0x3f, 0x4a, 0xd6, 0xca, 0xbf, 0x67, 0x40, 138 0x1a, 0xa4, 0xda, 0x82, 0x52, 0x15, 0xb8, 0x14, 139 0x3a, 0x7c, 0xa9, 0x02, 0xc1, 0x01, 0x69, 0xc6, 140 0x51, 0xd4, 0xbc, 0x1f, 0x95, 0xb2, 0xee, 0x1f, 141 0xdd, 0xb5, 0x73, 0x16, 0x5e, 0x29, 0x3f, 0x47, 142 0xac, 0x65, 0xfb, 0x63, 0x5c, 0xb9, 0xc8, 0x13, 143 0x2d, 0xec, 0x85, 0xde, 0x71, 0x0d, 0x84, 0x93, 144 0x74, 0x76, 0x91, 0xdd, 0x1d, 0x6d, 0x3d, 0xc7, 145 0x36, 0x19, 0x19, 0x86, 0xde, 0x7c, 0xca, 0xd6, 146 0xc6, 0x65, 0x7e, 0x4b, 0x24, 0x9c, 0xce, 0x92, 147 0x6b, 0x1c, 0xe0, 0xa0, 0xa9, 0x6c, 0xc3, 0xed, 148 0x4f, 0x2a, 0x54, 0x07, 0x00, 0x32, 0x5e, 0x1b, 149 0x94, 0x37, 0xcd, 0xe2, 0x32, 0xa8, 0xd5, 0x2c, 150 0xfb, 0x03, 0x9d, 0x79, 0xdf, 0x21, 0x43, 0x01, 151 0x00, 0x01 152 }; 153 154 static const unsigned char authdata_tpm_es256[166] = { 155 0x58, 0xa4, 0x49, 0x96, 0x0d, 0xe5, 0x88, 0x0e, 156 0x8c, 0x68, 0x74, 0x34, 0x17, 0x0f, 0x64, 0x76, 157 0x60, 0x5b, 0x8f, 0xe4, 0xae, 0xb9, 0xa2, 0x86, 158 0x32, 0xc7, 0x99, 0x5c, 0xf3, 0xba, 0x83, 0x1d, 159 0x97, 0x63, 0x45, 0x00, 0x00, 0x00, 0x00, 0x08, 160 0x98, 0x70, 0x58, 0xca, 0xdc, 0x4b, 0x81, 0xb6, 161 0xe1, 0x30, 0xde, 0x50, 0xdc, 0xbe, 0x96, 0x00, 162 0x20, 0xa8, 0xdf, 0x03, 0xf7, 0xbf, 0x39, 0x51, 163 0x94, 0x95, 0x8f, 0xa4, 0x84, 0x97, 0x30, 0xbc, 164 0x3c, 0x7e, 0x1c, 0x99, 0x91, 0x4d, 0xae, 0x6d, 165 0xfb, 0xdf, 0x53, 0xb5, 0xb6, 0x1f, 0x3a, 0x4e, 166 0x6a, 0xa5, 0x01, 0x02, 0x03, 0x26, 0x20, 0x01, 167 0x21, 0x58, 0x20, 0xfb, 0xd6, 0xba, 0x74, 0xe6, 168 0x6e, 0x5c, 0x87, 0xef, 0x89, 0xa2, 0xe8, 0x3d, 169 0x0b, 0xe9, 0x69, 0x2c, 0x07, 0x07, 0x7a, 0x8a, 170 0x1e, 0xce, 0x12, 0xea, 0x3b, 0xb3, 0xf1, 0xf3, 171 0xd9, 0xc3, 0xe6, 0x22, 0x58, 0x20, 0x3c, 0x68, 172 0x51, 0x94, 0x54, 0x8d, 0xeb, 0x9f, 0xb2, 0x2c, 173 0x66, 0x75, 0xb6, 0xb7, 0x55, 0x22, 0x0d, 0x87, 174 0x59, 0xc4, 0x39, 0x91, 0x62, 0x17, 0xc2, 0xc3, 175 0x53, 0xa5, 0x26, 0x97, 0x4f, 0x2d 176 }; 177 178 static const unsigned char x509[742] = { 179 0x30, 0x82, 0x02, 0xe2, 0x30, 0x81, 0xcb, 0x02, 180 0x01, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 181 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 182 0x00, 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 183 0x03, 0x55, 0x04, 0x03, 0x13, 0x12, 0x59, 0x75, 184 0x62, 0x69, 0x63, 0x6f, 0x20, 0x55, 0x32, 0x46, 185 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x41, 186 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x35, 187 0x31, 0x35, 0x31, 0x32, 0x35, 0x38, 0x35, 0x34, 188 0x5a, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x36, 0x31, 189 0x34, 0x31, 0x32, 0x35, 0x38, 0x35, 0x34, 0x5a, 190 0x30, 0x1d, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 191 0x55, 0x04, 0x03, 0x13, 0x12, 0x59, 0x75, 0x62, 192 0x69, 0x63, 0x6f, 0x20, 0x55, 0x32, 0x46, 0x20, 193 0x54, 0x65, 0x73, 0x74, 0x20, 0x45, 0x45, 0x30, 194 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 195 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 196 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 197 0x00, 0x04, 0xdb, 0x0a, 0xdb, 0xf5, 0x21, 0xc7, 198 0x5c, 0xce, 0x63, 0xdc, 0xa6, 0xe1, 0xe8, 0x25, 199 0x06, 0x0d, 0x94, 0xe6, 0x27, 0x54, 0x19, 0x4f, 200 0x9d, 0x24, 0xaf, 0x26, 0x1a, 0xbe, 0xad, 0x99, 201 0x44, 0x1f, 0x95, 0xa3, 0x71, 0x91, 0x0a, 0x3a, 202 0x20, 0xe7, 0x3e, 0x91, 0x5e, 0x13, 0xe8, 0xbe, 203 0x38, 0x05, 0x7a, 0xd5, 0x7a, 0xa3, 0x7e, 0x76, 204 0x90, 0x8f, 0xaf, 0xe2, 0x8a, 0x94, 0xb6, 0x30, 205 0xeb, 0x9d, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 206 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 207 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x95, 0x40, 208 0x6b, 0x50, 0x61, 0x7d, 0xad, 0x84, 0xa3, 0xb4, 209 0xeb, 0x88, 0x0f, 0xe3, 0x30, 0x0f, 0x2d, 0xa2, 210 0x0a, 0x00, 0xd9, 0x25, 0x04, 0xee, 0x72, 0xfa, 211 0x67, 0xdf, 0x58, 0x51, 0x0f, 0x0b, 0x47, 0x02, 212 0x9c, 0x3e, 0x41, 0x29, 0x4a, 0x93, 0xac, 0x29, 213 0x85, 0x89, 0x2d, 0xa4, 0x7a, 0x81, 0x32, 0x28, 214 0x57, 0x71, 0x01, 0xef, 0xa8, 0x42, 0x88, 0x16, 215 0x96, 0x37, 0x91, 0xd5, 0xdf, 0xe0, 0x8f, 0xc9, 216 0x3c, 0x8d, 0xb0, 0xcd, 0x89, 0x70, 0x82, 0xec, 217 0x79, 0xd3, 0xc6, 0x78, 0x73, 0x29, 0x32, 0xe5, 218 0xab, 0x6c, 0xbd, 0x56, 0x9f, 0xd5, 0x45, 0x91, 219 0xce, 0xc1, 0xdd, 0x8d, 0x64, 0xdc, 0xe9, 0x9c, 220 0x1f, 0x5e, 0x3c, 0xd2, 0xaf, 0x51, 0xa5, 0x82, 221 0x18, 0xaf, 0xe0, 0x37, 0xe7, 0x32, 0x9e, 0x76, 222 0x05, 0x77, 0x02, 0x7b, 0xe6, 0x24, 0xa0, 0x31, 223 0x56, 0x1b, 0xfd, 0x19, 0xc5, 0x71, 0xd3, 0xf0, 224 0x9e, 0xc0, 0x73, 0x05, 0x4e, 0xbc, 0x85, 0xb8, 225 0x53, 0x9e, 0xef, 0xc5, 0xbc, 0x9c, 0x56, 0xa3, 226 0xba, 0xd9, 0x27, 0x6a, 0xbb, 0xa9, 0x7a, 0x40, 227 0xd7, 0x47, 0x8b, 0x55, 0x72, 0x6b, 0xe3, 0xfe, 228 0x28, 0x49, 0x71, 0x24, 0xf4, 0x8f, 0xf4, 0x20, 229 0x81, 0xea, 0x38, 0xff, 0x7c, 0x0a, 0x4f, 0xdf, 230 0x02, 0x82, 0x39, 0x81, 0x82, 0x3b, 0xca, 0x09, 231 0xdd, 0xca, 0xaa, 0x0f, 0x27, 0xf5, 0xa4, 0x83, 232 0x55, 0x6c, 0x9a, 0x39, 0x9b, 0x15, 0x3a, 0x16, 233 0x63, 0xdc, 0x5b, 0xf9, 0xac, 0x5b, 0xbc, 0xf7, 234 0x9f, 0xbe, 0x0f, 0x8a, 0xa2, 0x3c, 0x31, 0x13, 235 0xa3, 0x32, 0x48, 0xca, 0x58, 0x87, 0xf8, 0x7b, 236 0xa0, 0xa1, 0x0a, 0x6a, 0x60, 0x96, 0x93, 0x5f, 237 0x5d, 0x26, 0x9e, 0x63, 0x1d, 0x09, 0xae, 0x9a, 238 0x41, 0xe5, 0xbd, 0x08, 0x47, 0xfe, 0xe5, 0x09, 239 0x9b, 0x20, 0xfd, 0x12, 0xe2, 0xe6, 0x40, 0x7f, 240 0xba, 0x4a, 0x61, 0x33, 0x66, 0x0d, 0x0e, 0x73, 241 0xdb, 0xb0, 0xd5, 0xa2, 0x9a, 0x9a, 0x17, 0x0d, 242 0x34, 0x30, 0x85, 0x6a, 0x42, 0x46, 0x9e, 0xff, 243 0x34, 0x8f, 0x5f, 0x87, 0x6c, 0x35, 0xe7, 0xa8, 244 0x4d, 0x35, 0xeb, 0xc1, 0x41, 0xaa, 0x8a, 0xd2, 245 0xda, 0x19, 0xaa, 0x79, 0xa2, 0x5f, 0x35, 0x2c, 246 0xa0, 0xfd, 0x25, 0xd3, 0xf7, 0x9d, 0x25, 0x18, 247 0x2d, 0xfa, 0xb4, 0xbc, 0xbb, 0x07, 0x34, 0x3c, 248 0x8d, 0x81, 0xbd, 0xf4, 0xe9, 0x37, 0xdb, 0x39, 249 0xe9, 0xd1, 0x45, 0x5b, 0x20, 0x41, 0x2f, 0x2d, 250 0x27, 0x22, 0xdc, 0x92, 0x74, 0x8a, 0x92, 0xd5, 251 0x83, 0xfd, 0x09, 0xfb, 0x13, 0x9b, 0xe3, 0x39, 252 0x7a, 0x6b, 0x5c, 0xfa, 0xe6, 0x76, 0x9e, 0xe0, 253 0xe4, 0xe3, 0xef, 0xad, 0xbc, 0xfd, 0x42, 0x45, 254 0x9a, 0xd4, 0x94, 0xd1, 0x7e, 0x8d, 0xa7, 0xd8, 255 0x05, 0xd5, 0xd3, 0x62, 0xcf, 0x15, 0xcf, 0x94, 256 0x7d, 0x1f, 0x5b, 0x58, 0x20, 0x44, 0x20, 0x90, 257 0x71, 0xbe, 0x66, 0xe9, 0x9a, 0xab, 0x74, 0x32, 258 0x70, 0x53, 0x1d, 0x69, 0xed, 0x87, 0x66, 0xf4, 259 0x09, 0x4f, 0xca, 0x25, 0x30, 0xc2, 0x63, 0x79, 260 0x00, 0x3c, 0xb1, 0x9b, 0x39, 0x3f, 0x00, 0xe0, 261 0xa8, 0x88, 0xef, 0x7a, 0x51, 0x5b, 0xe7, 0xbd, 262 0x49, 0x64, 0xda, 0x41, 0x7b, 0x24, 0xc3, 0x71, 263 0x22, 0xfd, 0xd1, 0xd1, 0x20, 0xb3, 0x3f, 0x97, 264 0xd3, 0x97, 0xb2, 0xaa, 0x18, 0x1c, 0x9e, 0x03, 265 0x77, 0x7b, 0x5b, 0x7e, 0xf9, 0xa3, 0xa0, 0xd6, 266 0x20, 0x81, 0x2c, 0x38, 0x8f, 0x9d, 0x25, 0xde, 267 0xe9, 0xc8, 0xf5, 0xdd, 0x6a, 0x47, 0x9c, 0x65, 268 0x04, 0x5a, 0x56, 0xe6, 0xc2, 0xeb, 0xf2, 0x02, 269 0x97, 0xe1, 0xb9, 0xd8, 0xe1, 0x24, 0x76, 0x9f, 270 0x23, 0x62, 0x39, 0x03, 0x4b, 0xc8, 0xf7, 0x34, 271 0x07, 0x49, 0xd6, 0xe7, 0x4d, 0x9a, 272 }; 273 274 const unsigned char sig[70] = { 275 0x30, 0x44, 0x02, 0x20, 0x54, 0x92, 0x28, 0x3b, 276 0x83, 0x33, 0x47, 0x56, 0x68, 0x79, 0xb2, 0x0c, 277 0x84, 0x80, 0xcc, 0x67, 0x27, 0x8b, 0xfa, 0x48, 278 0x43, 0x0d, 0x3c, 0xb4, 0x02, 0x36, 0x87, 0x97, 279 0x3e, 0xdf, 0x2f, 0x65, 0x02, 0x20, 0x1b, 0x56, 280 0x17, 0x06, 0xe2, 0x26, 0x0f, 0x6a, 0xe9, 0xa9, 281 0x70, 0x99, 0x62, 0xeb, 0x3a, 0x04, 0x1a, 0xc4, 282 0xa7, 0x03, 0x28, 0x56, 0x7c, 0xed, 0x47, 0x08, 283 0x68, 0x73, 0x6a, 0xb6, 0x89, 0x0d, 284 }; 285 286 const unsigned char pubkey[64] = { 287 0x17, 0x5b, 0x27, 0xa6, 0x56, 0xb2, 0x26, 0x0c, 288 0x26, 0x0c, 0x55, 0x42, 0x78, 0x17, 0x5d, 0x4c, 289 0xf8, 0xa2, 0xfd, 0x1b, 0xb9, 0x54, 0xdf, 0xd5, 290 0xeb, 0xbf, 0x22, 0x64, 0xf5, 0x21, 0x9a, 0xc6, 291 0x87, 0x5f, 0x90, 0xe6, 0xfd, 0x71, 0x27, 0x9f, 292 0xeb, 0xe3, 0x03, 0x44, 0xbc, 0x8d, 0x49, 0xc6, 293 0x1c, 0x31, 0x3b, 0x72, 0xae, 0xd4, 0x53, 0xb1, 294 0xfe, 0x5d, 0xe1, 0x30, 0xfc, 0x2b, 0x1e, 0xd2, 295 }; 296 297 const unsigned char pubkey_tpm_rs256[259] = { 298 0xc5, 0xb6, 0x9c, 0x06, 0x1d, 0xcf, 0xb9, 0xf2, 299 0x5e, 0x99, 0x7d, 0x6d, 0x73, 0xd8, 0x36, 0xc1, 300 0x4a, 0x90, 0x05, 0x4d, 0x82, 0x57, 0xc1, 0xb6, 301 0x6a, 0xd1, 0x43, 0x03, 0x85, 0xf8, 0x52, 0x4f, 302 0xd2, 0x27, 0x91, 0x0b, 0xb5, 0x93, 0xa0, 0x68, 303 0xf8, 0x80, 0x1b, 0xaa, 0x65, 0x97, 0x45, 0x11, 304 0x86, 0x34, 0xd6, 0x67, 0xf8, 0xd5, 0x12, 0x79, 305 0x84, 0xee, 0x70, 0x99, 0x00, 0x63, 0xa8, 0xb4, 306 0x43, 0x0b, 0x4c, 0x57, 0x4a, 0xd6, 0x9b, 0x75, 307 0x63, 0x8a, 0x46, 0x57, 0xdb, 0x14, 0xc8, 0x71, 308 0xd1, 0xb3, 0x07, 0x68, 0x58, 0xbc, 0x55, 0x84, 309 0x80, 0x2a, 0xd2, 0x36, 0x9f, 0xc1, 0x64, 0xa0, 310 0x11, 0x4b, 0xc9, 0x32, 0x31, 0x3a, 0xd6, 0x87, 311 0x26, 0x1a, 0x3a, 0x78, 0x3d, 0x89, 0xdb, 0x00, 312 0x28, 0x3b, 0xae, 0x2b, 0x1b, 0x56, 0xe2, 0x8c, 313 0x4c, 0x63, 0xac, 0x6e, 0x6c, 0xf7, 0xb5, 0x7d, 314 0x4d, 0x0b, 0x9f, 0x06, 0xa0, 0x10, 0x35, 0x38, 315 0x20, 0x4d, 0xcc, 0x07, 0xd7, 0x00, 0x4e, 0x86, 316 0xba, 0xfe, 0x8b, 0xe4, 0x3f, 0x4a, 0xd6, 0xca, 317 0xbf, 0x67, 0x40, 0x1a, 0xa4, 0xda, 0x82, 0x52, 318 0x15, 0xb8, 0x14, 0x3a, 0x7c, 0xa9, 0x02, 0xc1, 319 0x01, 0x69, 0xc6, 0x51, 0xd4, 0xbc, 0x1f, 0x95, 320 0xb2, 0xee, 0x1f, 0xdd, 0xb5, 0x73, 0x16, 0x5e, 321 0x29, 0x3f, 0x47, 0xac, 0x65, 0xfb, 0x63, 0x5c, 322 0xb9, 0xc8, 0x13, 0x2d, 0xec, 0x85, 0xde, 0x71, 323 0x0d, 0x84, 0x93, 0x74, 0x76, 0x91, 0xdd, 0x1d, 324 0x6d, 0x3d, 0xc7, 0x36, 0x19, 0x19, 0x86, 0xde, 325 0x7c, 0xca, 0xd6, 0xc6, 0x65, 0x7e, 0x4b, 0x24, 326 0x9c, 0xce, 0x92, 0x6b, 0x1c, 0xe0, 0xa0, 0xa9, 327 0x6c, 0xc3, 0xed, 0x4f, 0x2a, 0x54, 0x07, 0x00, 328 0x32, 0x5e, 0x1b, 0x94, 0x37, 0xcd, 0xe2, 0x32, 329 0xa8, 0xd5, 0x2c, 0xfb, 0x03, 0x9d, 0x79, 0xdf, 330 0x01, 0x00, 0x01, 331 }; 332 333 const unsigned char pubkey_tpm_es256[64] = { 334 0xfb, 0xd6, 0xba, 0x74, 0xe6, 0x6e, 0x5c, 0x87, 335 0xef, 0x89, 0xa2, 0xe8, 0x3d, 0x0b, 0xe9, 0x69, 336 0x2c, 0x07, 0x07, 0x7a, 0x8a, 0x1e, 0xce, 0x12, 337 0xea, 0x3b, 0xb3, 0xf1, 0xf3, 0xd9, 0xc3, 0xe6, 338 0x3c, 0x68, 0x51, 0x94, 0x54, 0x8d, 0xeb, 0x9f, 339 0xb2, 0x2c, 0x66, 0x75, 0xb6, 0xb7, 0x55, 0x22, 340 0x0d, 0x87, 0x59, 0xc4, 0x39, 0x91, 0x62, 0x17, 341 0xc2, 0xc3, 0x53, 0xa5, 0x26, 0x97, 0x4f, 0x2d 342 }; 343 344 const unsigned char id[64] = { 345 0x53, 0xfb, 0xdf, 0xaa, 0xce, 0x63, 0xde, 0xc5, 346 0xfe, 0x47, 0xe6, 0x52, 0xeb, 0xf3, 0x5d, 0x53, 347 0xa8, 0xbf, 0x9d, 0xd6, 0x09, 0x6b, 0x5e, 0x7f, 348 0xe0, 0x0d, 0x51, 0x30, 0x85, 0x6a, 0xda, 0x68, 349 0x70, 0x85, 0xb0, 0xdb, 0x08, 0x0b, 0x83, 0x2c, 350 0xef, 0x44, 0xe2, 0x36, 0x88, 0xee, 0x76, 0x90, 351 0x6e, 0x7b, 0x50, 0x3e, 0x9a, 0xa0, 0xd6, 0x3c, 352 0x34, 0xe3, 0x83, 0xe7, 0xd1, 0xbd, 0x9f, 0x25, 353 }; 354 355 const unsigned char id_tpm_rs256[32] = { 356 0x89, 0x99, 0x6d, 0x5a, 0x00, 0x29, 0xe5, 0x3e, 357 0x6a, 0x1c, 0x72, 0x6d, 0x71, 0x4a, 0x4f, 0x03, 358 0x9b, 0x68, 0x17, 0xdb, 0x29, 0x1a, 0x6b, 0x02, 359 0x6c, 0x26, 0xf9, 0xbd, 0xc3, 0x0e, 0x38, 0x1a 360 }; 361 362 const unsigned char id_tpm_es256[32] = { 363 0xa8, 0xdf, 0x03, 0xf7, 0xbf, 0x39, 0x51, 0x94, 364 0x95, 0x8f, 0xa4, 0x84, 0x97, 0x30, 0xbc, 0x3c, 365 0x7e, 0x1c, 0x99, 0x91, 0x4d, 0xae, 0x6d, 0xfb, 366 0xdf, 0x53, 0xb5, 0xb6, 0x1f, 0x3a, 0x4e, 0x6a 367 }; 368 369 const unsigned char attstmt_tpm_rs256[4034] = { 370 0xa6, 0x63, 0x61, 0x6c, 0x67, 0x39, 0xff, 0xfe, 371 0x63, 0x73, 0x69, 0x67, 0x59, 0x01, 0x00, 0x1c, 372 0x09, 0x0d, 0x35, 0x97, 0x22, 0xfc, 0xfe, 0xc0, 373 0x58, 0x49, 0x9e, 0xd4, 0x7e, 0x6a, 0x7d, 0xdb, 374 0x6d, 0x20, 0x95, 0x5c, 0x0b, 0xd0, 0xd5, 0x72, 375 0x4f, 0x15, 0x22, 0x38, 0x97, 0xb2, 0x4b, 0xd0, 376 0xef, 0x31, 0x7c, 0xf2, 0x42, 0x19, 0x41, 0xa1, 377 0xe2, 0xc5, 0xca, 0xc6, 0x74, 0x95, 0xcf, 0xf9, 378 0x41, 0x75, 0x0b, 0x56, 0x39, 0x82, 0x78, 0xf6, 379 0x59, 0xf1, 0x09, 0x96, 0x9e, 0x38, 0x7f, 0x14, 380 0x9b, 0xf5, 0x36, 0xbb, 0x92, 0x32, 0xc4, 0x64, 381 0xe8, 0xff, 0xb4, 0xc7, 0xcf, 0xcd, 0x17, 0x48, 382 0x0f, 0x83, 0xd9, 0x44, 0x03, 0x35, 0x26, 0xad, 383 0x01, 0xb7, 0x57, 0x06, 0xb3, 0x9c, 0xa0, 0x6e, 384 0x2f, 0x58, 0xcb, 0x5c, 0xaa, 0x7c, 0xea, 0x7e, 385 0x3f, 0xbc, 0x76, 0xc9, 0x0e, 0x52, 0x39, 0x81, 386 0xa9, 0x9e, 0x37, 0x14, 0x1f, 0x50, 0x6a, 0x4f, 387 0xd7, 0xfc, 0xd4, 0xfa, 0xf2, 0x18, 0x60, 0xd5, 388 0xc3, 0x57, 0x7d, 0x6d, 0x05, 0x28, 0x25, 0xc3, 389 0xde, 0x86, 0x85, 0x06, 0x71, 0xfb, 0x84, 0xa2, 390 0x07, 0xb6, 0x77, 0xc9, 0x68, 0x41, 0x53, 0x32, 391 0x4c, 0xa8, 0x4b, 0xf7, 0x08, 0x84, 0x62, 0x6c, 392 0x8a, 0xb6, 0xcf, 0xc1, 0xde, 0x6b, 0x61, 0xc8, 393 0xdd, 0xc0, 0x13, 0x70, 0x22, 0x28, 0xe1, 0x0f, 394 0x46, 0x02, 0xc6, 0xb1, 0xfa, 0x30, 0xcb, 0xec, 395 0xd1, 0x82, 0xfa, 0x51, 0xcb, 0x71, 0x5e, 0x1f, 396 0x1b, 0x5f, 0xe0, 0xb0, 0x02, 0x8a, 0x7c, 0x78, 397 0xd1, 0xb7, 0x4d, 0x56, 0xb0, 0x92, 0x3e, 0xda, 398 0xc7, 0xb1, 0x74, 0xcf, 0x6a, 0x40, 0xeb, 0x98, 399 0x1c, 0x2e, 0xf2, 0x86, 0x76, 0xf8, 0x2e, 0x6a, 400 0x9f, 0x77, 0x51, 0x64, 0xce, 0xdc, 0x12, 0x85, 401 0x84, 0x6b, 0x01, 0xc8, 0xeb, 0xbc, 0x57, 0x6c, 402 0x32, 0x26, 0xcb, 0xb2, 0x84, 0x02, 0x2a, 0x33, 403 0x15, 0xd9, 0xe3, 0x15, 0xfc, 0x3a, 0x24, 0x63, 404 0x76, 0x65, 0x72, 0x63, 0x32, 0x2e, 0x30, 0x63, 405 0x78, 0x35, 0x63, 0x82, 0x59, 0x05, 0xc4, 0x30, 406 0x82, 0x05, 0xc0, 0x30, 0x82, 0x03, 0xa8, 0xa0, 407 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x78, 0xd9, 408 0xa8, 0xb2, 0x64, 0xf9, 0x4d, 0x28, 0x82, 0xc0, 409 0xd3, 0x1b, 0x40, 0x3c, 0xc8, 0xd9, 0x30, 0x0d, 410 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 411 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x41, 0x31, 412 0x3f, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x04, 0x03, 413 0x13, 0x36, 0x45, 0x55, 0x53, 0x2d, 0x53, 0x54, 414 0x4d, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x2d, 415 0x31, 0x41, 0x44, 0x42, 0x39, 0x39, 0x34, 0x41, 416 0x42, 0x35, 0x38, 0x42, 0x45, 0x35, 0x37, 0x41, 417 0x30, 0x43, 0x43, 0x39, 0x42, 0x39, 0x30, 0x30, 418 0x45, 0x37, 0x38, 0x35, 0x31, 0x45, 0x31, 0x41, 419 0x34, 0x33, 0x43, 0x30, 0x38, 0x36, 0x36, 0x30, 420 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x31, 0x30, 0x37, 421 0x31, 0x35, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 422 0x5a, 0x17, 0x0d, 0x32, 0x35, 0x30, 0x33, 0x32, 423 0x31, 0x32, 0x30, 0x32, 0x39, 0x31, 0x35, 0x5a, 424 0x30, 0x00, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 425 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 426 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 427 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 428 0x01, 0x01, 0x00, 0xca, 0xbe, 0x77, 0x9f, 0x45, 429 0x97, 0x17, 0x8d, 0x01, 0xe1, 0x18, 0xcc, 0xf0, 430 0xb5, 0xed, 0x9a, 0xb7, 0x36, 0xac, 0x05, 0x26, 431 0xbe, 0x35, 0xd9, 0x5c, 0x00, 0x5c, 0x5d, 0x8b, 432 0x6f, 0x2a, 0xb8, 0xf6, 0x02, 0x4f, 0x33, 0xfe, 433 0x84, 0x45, 0x4c, 0x4f, 0x7a, 0xdb, 0xa9, 0x6a, 434 0x62, 0x0f, 0x19, 0x35, 0x5d, 0xd2, 0x34, 0x1a, 435 0x9d, 0x73, 0x55, 0xe5, 0x3e, 0x04, 0xa2, 0xd6, 436 0xbe, 0xe7, 0x5a, 0xb9, 0x16, 0x6c, 0x55, 0x18, 437 0xa8, 0x4b, 0xb2, 0x37, 0xb9, 0xa3, 0x87, 0xfc, 438 0x76, 0xa8, 0x55, 0xc9, 0xe7, 0x30, 0xe5, 0x0e, 439 0x3c, 0x7b, 0x74, 0xd2, 0x1e, 0xa8, 0x05, 0xd5, 440 0xe2, 0xe3, 0xcb, 0xaf, 0x63, 0x33, 0x12, 0xaa, 441 0xfd, 0x31, 0x32, 0x71, 0x4f, 0x41, 0x96, 0x05, 442 0xb5, 0x69, 0x73, 0x45, 0xbe, 0x6f, 0x90, 0xd9, 443 0x10, 0x36, 0xaf, 0x7a, 0x1c, 0xf1, 0x6d, 0x14, 444 0xb0, 0x1e, 0xbb, 0xae, 0x1c, 0x35, 0xec, 0x1c, 445 0xb5, 0x0e, 0xf6, 0x33, 0x98, 0x13, 0x4e, 0x44, 446 0x7b, 0x5c, 0x97, 0x47, 0xed, 0x4f, 0xfe, 0xbd, 447 0x08, 0xd2, 0xa9, 0xc6, 0xbe, 0x8c, 0x04, 0x9e, 448 0xdc, 0x3d, 0xbe, 0x98, 0xe9, 0x2a, 0xb1, 0xf4, 449 0xfa, 0x45, 0xf9, 0xc8, 0x9a, 0x55, 0x85, 0x26, 450 0xfc, 0x5f, 0xad, 0x00, 0x8b, 0xc8, 0x41, 0xf2, 451 0x86, 0x4e, 0xba, 0x55, 0x1c, 0xb2, 0x89, 0xe8, 452 0x85, 0x6e, 0x1e, 0x02, 0x9f, 0x55, 0x70, 0xbe, 453 0xfd, 0xe7, 0x9f, 0xba, 0x59, 0xa0, 0x2e, 0x9a, 454 0x74, 0x11, 0xe7, 0xad, 0xa9, 0xc7, 0x7b, 0x58, 455 0xc4, 0x16, 0xd3, 0x35, 0xcb, 0x61, 0x00, 0xec, 456 0x36, 0x4a, 0xa3, 0x51, 0xa3, 0xdd, 0x61, 0xb6, 457 0xd6, 0x29, 0xcb, 0x76, 0xe1, 0xab, 0x51, 0x3a, 458 0xe8, 0xbf, 0xdb, 0x09, 0x4a, 0x39, 0x96, 0xd9, 459 0xac, 0x8f, 0x6c, 0x62, 0xe0, 0x03, 0x23, 0x24, 460 0xbe, 0xd4, 0x83, 0x02, 0x03, 0x01, 0x00, 0x01, 461 0xa3, 0x82, 0x01, 0xf3, 0x30, 0x82, 0x01, 0xef, 462 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 463 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 464 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 465 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x6d, 466 0x06, 0x03, 0x55, 0x1d, 0x20, 0x01, 0x01, 0xff, 467 0x04, 0x63, 0x30, 0x61, 0x30, 0x5f, 0x06, 0x09, 468 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 469 0x1f, 0x30, 0x52, 0x30, 0x50, 0x06, 0x08, 0x2b, 470 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 471 0x44, 0x1e, 0x42, 0x00, 0x54, 0x00, 0x43, 0x00, 472 0x50, 0x00, 0x41, 0x00, 0x20, 0x00, 0x20, 0x00, 473 0x54, 0x00, 0x72, 0x00, 0x75, 0x00, 0x73, 0x00, 474 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 475 0x20, 0x00, 0x50, 0x00, 0x6c, 0x00, 0x61, 0x00, 476 0x74, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 477 0x6d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x49, 0x00, 478 0x64, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 479 0x69, 0x00, 0x74, 0x00, 0x79, 0x30, 0x10, 0x06, 480 0x03, 0x55, 0x1d, 0x25, 0x04, 0x09, 0x30, 0x07, 481 0x06, 0x05, 0x67, 0x81, 0x05, 0x08, 0x03, 0x30, 482 0x59, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x01, 0x01, 483 0xff, 0x04, 0x4f, 0x30, 0x4d, 0xa4, 0x4b, 0x30, 484 0x49, 0x31, 0x16, 0x30, 0x14, 0x06, 0x05, 0x67, 485 0x81, 0x05, 0x02, 0x01, 0x0c, 0x0b, 0x69, 0x64, 486 0x3a, 0x35, 0x33, 0x35, 0x34, 0x34, 0x44, 0x32, 487 0x30, 0x31, 0x17, 0x30, 0x15, 0x06, 0x05, 0x67, 488 0x81, 0x05, 0x02, 0x02, 0x0c, 0x0c, 0x53, 0x54, 489 0x33, 0x33, 0x48, 0x54, 0x50, 0x48, 0x41, 0x48, 490 0x42, 0x34, 0x31, 0x16, 0x30, 0x14, 0x06, 0x05, 491 0x67, 0x81, 0x05, 0x02, 0x03, 0x0c, 0x0b, 0x69, 492 0x64, 0x3a, 0x30, 0x30, 0x34, 0x39, 0x30, 0x30, 493 0x30, 0x34, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 494 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xb8, 495 0x5f, 0xd5, 0x67, 0xca, 0x92, 0xc4, 0x0e, 0xcf, 496 0x0c, 0xd8, 0x1f, 0x6d, 0x3f, 0x03, 0x55, 0x6f, 497 0x38, 0xa6, 0x51, 0x30, 0x1d, 0x06, 0x03, 0x55, 498 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xd4, 0x04, 499 0x64, 0xfc, 0x6e, 0x50, 0x0a, 0x56, 0x48, 0x0f, 500 0x05, 0xa9, 0x00, 0xb7, 0x1d, 0x5e, 0x57, 0x08, 501 0xd5, 0xdc, 0x30, 0x81, 0xb2, 0x06, 0x08, 0x2b, 502 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 503 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x30, 0x81, 0x9f, 504 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 505 0x30, 0x02, 0x86, 0x81, 0x92, 0x68, 0x74, 0x74, 506 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x7a, 0x63, 0x73, 507 0x70, 0x72, 0x6f, 0x64, 0x65, 0x75, 0x73, 0x61, 508 0x69, 0x6b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 509 0x68, 0x2e, 0x62, 0x6c, 0x6f, 0x62, 0x2e, 0x63, 510 0x6f, 0x72, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 511 0x6f, 0x77, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 512 0x65, 0x75, 0x73, 0x2d, 0x73, 0x74, 0x6d, 0x2d, 513 0x6b, 0x65, 0x79, 0x69, 0x64, 0x2d, 0x31, 0x61, 514 0x64, 0x62, 0x39, 0x39, 0x34, 0x61, 0x62, 0x35, 515 0x38, 0x62, 0x65, 0x35, 0x37, 0x61, 0x30, 0x63, 516 0x63, 0x39, 0x62, 0x39, 0x30, 0x30, 0x65, 0x37, 517 0x38, 0x35, 0x31, 0x65, 0x31, 0x61, 0x34, 0x33, 518 0x63, 0x30, 0x38, 0x36, 0x36, 0x30, 0x2f, 0x61, 519 0x62, 0x64, 0x36, 0x31, 0x35, 0x66, 0x32, 0x2d, 520 0x31, 0x35, 0x38, 0x61, 0x2d, 0x34, 0x35, 0x38, 521 0x65, 0x2d, 0x61, 0x31, 0x35, 0x35, 0x2d, 0x37, 522 0x63, 0x34, 0x63, 0x38, 0x63, 0x62, 0x31, 0x33, 523 0x63, 0x36, 0x35, 0x2e, 0x63, 0x65, 0x72, 0x30, 524 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 525 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 526 0x02, 0x01, 0x00, 0xa2, 0x10, 0xc5, 0xbf, 0x41, 527 0xa6, 0xba, 0x8c, 0x72, 0xca, 0x0f, 0x3e, 0x5e, 528 0x7f, 0xe2, 0xcb, 0x60, 0xb8, 0x3f, 0xfb, 0xde, 529 0x03, 0xe2, 0xfe, 0x20, 0x29, 0xdf, 0x11, 0xf5, 530 0xb0, 0x50, 0x6d, 0x32, 0xe8, 0x1b, 0x05, 0xad, 531 0x6b, 0x60, 0xb5, 0xed, 0xf3, 0xa4, 0x4a, 0xea, 532 0x09, 0xe5, 0x65, 0x7e, 0xe0, 0xd5, 0x3a, 0x6a, 533 0xdb, 0x64, 0xb7, 0x07, 0x8f, 0xa1, 0x63, 0xb3, 534 0x89, 0x8a, 0xac, 0x49, 0x97, 0xa0, 0x9a, 0xa3, 535 0xd3, 0x3a, 0xc2, 0x13, 0xb2, 0xbb, 0xab, 0x0d, 536 0xf2, 0x35, 0xc5, 0x03, 0xde, 0x1c, 0xad, 0x6a, 537 0x03, 0x0a, 0x4c, 0xe1, 0x37, 0x8f, 0xbc, 0x13, 538 0xc0, 0x9a, 0x17, 0xd4, 0x2e, 0x36, 0x17, 0x51, 539 0x12, 0xb0, 0x79, 0xbf, 0x9b, 0xb3, 0xb0, 0x74, 540 0x25, 0x81, 0x7e, 0x21, 0x31, 0xb7, 0xc2, 0x5e, 541 0xfb, 0x36, 0xab, 0xf3, 0x7a, 0x5f, 0xa4, 0x5e, 542 0x8f, 0x0c, 0xbd, 0xcf, 0xf5, 0x50, 0xe7, 0x0c, 543 0x51, 0x55, 0x48, 0xe6, 0x15, 0xb6, 0xd4, 0xaf, 544 0x95, 0x72, 0x56, 0x94, 0xf7, 0x0e, 0xd6, 0x90, 545 0xe3, 0xd3, 0x5d, 0xbd, 0x93, 0xa1, 0xbd, 0x6c, 546 0xe4, 0xf2, 0x39, 0x4d, 0x54, 0x74, 0xcf, 0xf5, 547 0xeb, 0x70, 0xdb, 0x4f, 0x52, 0xcd, 0x39, 0x8f, 548 0x11, 0x54, 0x28, 0x06, 0x29, 0x8f, 0x23, 0xde, 549 0x9e, 0x2f, 0x7b, 0xb6, 0x5f, 0xa3, 0x89, 0x04, 550 0x99, 0x0a, 0xf1, 0x2d, 0xf9, 0x66, 0xd3, 0x13, 551 0x45, 0xbd, 0x6c, 0x22, 0x57, 0xf5, 0xb1, 0xb9, 552 0xdf, 0x5b, 0x7b, 0x1a, 0x3a, 0xdd, 0x6b, 0xc7, 553 0x35, 0x88, 0xed, 0xc4, 0x09, 0x70, 0x4e, 0x5f, 554 0xb5, 0x3e, 0xd1, 0x0b, 0xd0, 0xca, 0xef, 0x0b, 555 0xe9, 0x8b, 0x6f, 0xc3, 0x16, 0xc3, 0x3d, 0x79, 556 0x06, 0xef, 0x81, 0xf0, 0x60, 0x0b, 0x32, 0xe3, 557 0x86, 0x6b, 0x92, 0x38, 0x90, 0x62, 0xed, 0x84, 558 0x3a, 0xb7, 0x45, 0x43, 0x2e, 0xd0, 0x3a, 0x71, 559 0x9e, 0x80, 0xcc, 0x9c, 0xac, 0x27, 0x10, 0x91, 560 0xb7, 0xb2, 0xbd, 0x41, 0x40, 0xa7, 0xb7, 0xcf, 561 0xe7, 0x38, 0xca, 0x68, 0xdd, 0x62, 0x09, 0xff, 562 0x68, 0xce, 0xba, 0xe2, 0x07, 0x49, 0x09, 0xe7, 563 0x1f, 0xdf, 0xe6, 0x26, 0xe5, 0x0f, 0xa9, 0xbf, 564 0x2a, 0x5b, 0x67, 0x92, 0xa1, 0x10, 0x53, 0xb2, 565 0x7a, 0x07, 0x29, 0x9d, 0xfd, 0x6d, 0xb6, 0x3b, 566 0x45, 0xc1, 0x94, 0xcb, 0x1c, 0xc3, 0xce, 0xf6, 567 0x8a, 0x1a, 0x81, 0x66, 0xb0, 0xa5, 0x14, 0xc7, 568 0x9e, 0x1f, 0x6e, 0xb6, 0xff, 0x8b, 0x90, 0x87, 569 0x3a, 0x3f, 0xa8, 0xc2, 0x2d, 0x8f, 0x6f, 0xdb, 570 0xb4, 0xc4, 0x14, 0x3c, 0x1d, 0x12, 0x1d, 0x6d, 571 0xcf, 0xa6, 0x04, 0x6a, 0xa8, 0x13, 0x5e, 0xf2, 572 0x5e, 0x77, 0x80, 0x6b, 0x85, 0x83, 0xfe, 0xbb, 573 0xeb, 0x70, 0xcb, 0x5f, 0xe4, 0x95, 0xaa, 0x0f, 574 0x61, 0x36, 0x7c, 0xbb, 0x22, 0x1e, 0xba, 0x98, 575 0x43, 0x52, 0x33, 0xae, 0xed, 0x5d, 0x10, 0x2c, 576 0xb3, 0xa9, 0x31, 0x8e, 0x60, 0x54, 0xaf, 0x40, 577 0x6d, 0x2e, 0x18, 0xc2, 0x6a, 0xf4, 0x7b, 0x9a, 578 0x73, 0x0f, 0x58, 0x69, 0x23, 0xbb, 0xc4, 0x84, 579 0x53, 0x30, 0xe2, 0xd6, 0x1e, 0x10, 0xc1, 0xec, 580 0x82, 0x13, 0xab, 0x53, 0x86, 0xa2, 0xb9, 0xda, 581 0xbb, 0x3a, 0xa2, 0xbe, 0xb0, 0x10, 0x99, 0x0e, 582 0xe5, 0x9c, 0xc9, 0xf1, 0xce, 0x76, 0x46, 0xea, 583 0x86, 0xaa, 0x36, 0x83, 0x99, 0x09, 0x9b, 0x30, 584 0xd3, 0x26, 0xc7, 0xdf, 0x66, 0xc7, 0xf0, 0xdd, 585 0x08, 0x09, 0x15, 0x15, 0x21, 0x49, 0x46, 0xd8, 586 0x8a, 0x66, 0xca, 0x62, 0x9c, 0x79, 0x1d, 0x81, 587 0xea, 0x5d, 0x82, 0xb0, 0xa6, 0x6b, 0x5c, 0xf5, 588 0xb8, 0x8c, 0xf6, 0x16, 0x01, 0x2c, 0xf8, 0x27, 589 0xf8, 0xcf, 0x88, 0xfe, 0xf3, 0xa4, 0xfc, 0x17, 590 0x97, 0xe7, 0x07, 0x59, 0x06, 0xef, 0x30, 0x82, 591 0x06, 0xeb, 0x30, 0x82, 0x04, 0xd3, 0xa0, 0x03, 592 0x02, 0x01, 0x02, 0x02, 0x13, 0x33, 0x00, 0x00, 593 0x02, 0x39, 0xf9, 0xbb, 0x6a, 0x1d, 0x49, 0x64, 594 0x47, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x39, 595 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 596 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 597 0x81, 0x8c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 598 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 599 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 600 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 601 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 602 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 603 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 604 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 605 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 606 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 607 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x36, 608 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 609 0x2d, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 610 0x66, 0x74, 0x20, 0x54, 0x50, 0x4d, 0x20, 0x52, 611 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 612 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 613 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 614 0x79, 0x20, 0x32, 0x30, 0x31, 0x34, 0x30, 0x1e, 615 0x17, 0x0d, 0x31, 0x39, 0x30, 0x33, 0x32, 0x31, 616 0x32, 0x30, 0x32, 0x39, 0x31, 0x35, 0x5a, 0x17, 617 0x0d, 0x32, 0x35, 0x30, 0x33, 0x32, 0x31, 0x32, 618 0x30, 0x32, 0x39, 0x31, 0x35, 0x5a, 0x30, 0x41, 619 0x31, 0x3f, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x04, 620 0x03, 0x13, 0x36, 0x45, 0x55, 0x53, 0x2d, 0x53, 621 0x54, 0x4d, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 622 0x2d, 0x31, 0x41, 0x44, 0x42, 0x39, 0x39, 0x34, 623 0x41, 0x42, 0x35, 0x38, 0x42, 0x45, 0x35, 0x37, 624 0x41, 0x30, 0x43, 0x43, 0x39, 0x42, 0x39, 0x30, 625 0x30, 0x45, 0x37, 0x38, 0x35, 0x31, 0x45, 0x31, 626 0x41, 0x34, 0x33, 0x43, 0x30, 0x38, 0x36, 0x36, 627 0x30, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 628 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 629 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 630 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 631 0x01, 0x00, 0xdb, 0xe2, 0x23, 0xf9, 0x86, 0x8f, 632 0xa9, 0x71, 0x9f, 0x8b, 0xf9, 0x7c, 0xe9, 0x45, 633 0x2d, 0x59, 0x56, 0x5e, 0x96, 0xf4, 0xdd, 0x9a, 634 0x12, 0xcd, 0x90, 0x1a, 0x0c, 0xb5, 0x03, 0xbf, 635 0x09, 0xbe, 0xbf, 0xf7, 0x55, 0x52, 0xe8, 0x39, 636 0x4c, 0xbe, 0x2a, 0x28, 0x88, 0x78, 0x39, 0xa7, 637 0xcb, 0xf9, 0x4c, 0x55, 0xd2, 0x31, 0x96, 0x3b, 638 0x48, 0xa2, 0xf3, 0xf6, 0xd3, 0x1a, 0x81, 0x7f, 639 0x90, 0x62, 0xab, 0xec, 0x5a, 0xc7, 0xa0, 0x7f, 640 0x81, 0x32, 0x27, 0x9b, 0x29, 0x75, 0x7d, 0x1e, 641 0x96, 0xc5, 0xfa, 0x0e, 0x7c, 0xe0, 0x60, 0x96, 642 0x7a, 0xca, 0x94, 0xba, 0xe6, 0xb2, 0x69, 0xdd, 643 0xc4, 0x7d, 0xbb, 0xd3, 0xc4, 0xb4, 0x6e, 0x00, 644 0x86, 0x1f, 0x9d, 0x25, 0xe8, 0xae, 0xc7, 0x10, 645 0x84, 0xdc, 0xc0, 0x34, 0x24, 0x6e, 0xf7, 0xfc, 646 0xdd, 0x3d, 0x32, 0x7a, 0x43, 0x96, 0xd6, 0xc8, 647 0x7b, 0xf4, 0x9b, 0x3d, 0xa7, 0x1e, 0xba, 0x4d, 648 0xd0, 0x3b, 0x3d, 0x84, 0x9a, 0xd1, 0x25, 0x22, 649 0x5d, 0x00, 0x44, 0xb0, 0x59, 0xb7, 0x40, 0xc5, 650 0xa3, 0x53, 0x53, 0xaf, 0x8f, 0x9e, 0xfd, 0x8f, 651 0x1e, 0x02, 0xd3, 0x4f, 0xf7, 0x09, 0xce, 0xc5, 652 0xc6, 0x71, 0x5c, 0xe9, 0xe8, 0x7a, 0xb5, 0x6b, 653 0xa4, 0xbf, 0x0b, 0xd9, 0xb6, 0xfa, 0x24, 0xb0, 654 0xcd, 0x52, 0x22, 0x1d, 0x7e, 0xe8, 0x15, 0x2f, 655 0x1e, 0x5e, 0xa2, 0xec, 0xd3, 0xa8, 0x02, 0x77, 656 0xb9, 0x55, 0x9a, 0xcf, 0xcc, 0xd7, 0x08, 0x20, 657 0xa5, 0xda, 0x39, 0x9a, 0x30, 0x76, 0x90, 0x37, 658 0xa7, 0x60, 0xdf, 0x18, 0x12, 0x65, 0x17, 0xaa, 659 0xdd, 0x48, 0xd5, 0x12, 0x1d, 0x4c, 0x83, 0x5d, 660 0x81, 0x07, 0x1d, 0x18, 0x81, 0x40, 0x55, 0x60, 661 0x8f, 0xa3, 0x6b, 0x34, 0x1e, 0xd5, 0xe6, 0xcf, 662 0x52, 0x73, 0x77, 0x4a, 0x50, 0x4f, 0x1b, 0x0f, 663 0x39, 0xc3, 0x0d, 0x16, 0xf9, 0xbb, 0x4c, 0x77, 664 0xf6, 0x4e, 0xac, 0x9c, 0xfe, 0xe8, 0xbb, 0x52, 665 0xa5, 0x0a, 0x0e, 0x9b, 0xf0, 0x0d, 0xef, 0xfb, 666 0x6f, 0x89, 0x34, 0x7d, 0x47, 0xec, 0x14, 0x6a, 667 0xf4, 0x0a, 0xe1, 0x60, 0x44, 0x73, 0x7b, 0xa0, 668 0xab, 0x5b, 0x8c, 0x43, 0xa6, 0x05, 0x42, 0x61, 669 0x46, 0xaa, 0x1c, 0xf5, 0xec, 0x2c, 0x86, 0x85, 670 0x21, 0x99, 0xdf, 0x45, 0x8e, 0xf4, 0xd1, 0x1e, 671 0xfb, 0xcd, 0x9b, 0x94, 0x32, 0xe0, 0xa0, 0xcc, 672 0x4f, 0xad, 0xae, 0x44, 0x8b, 0x86, 0x27, 0x91, 673 0xfe, 0x60, 0x9f, 0xf2, 0x63, 0x30, 0x6c, 0x5d, 674 0x8d, 0xbc, 0xab, 0xd4, 0xf5, 0xa2, 0xb2, 0x74, 675 0xe8, 0xd4, 0x95, 0xf2, 0xd6, 0x03, 0x8b, 0xc9, 676 0xa3, 0x52, 0xe7, 0x63, 0x05, 0x64, 0x50, 0xe5, 677 0x0a, 0x6a, 0xa0, 0x6c, 0x50, 0xcd, 0x37, 0x98, 678 0xa8, 0x87, 0x02, 0x38, 0x5b, 0x6c, 0x02, 0x69, 679 0x3d, 0x1f, 0x95, 0x74, 0x4d, 0x46, 0x76, 0x2a, 680 0x9d, 0x62, 0xd4, 0xc7, 0x1b, 0xf9, 0x31, 0xa6, 681 0x51, 0xee, 0x7b, 0xc8, 0xe4, 0x6e, 0x3a, 0xcf, 682 0x4f, 0x4f, 0x49, 0x8a, 0xf5, 0x4f, 0x25, 0x93, 683 0x23, 0x02, 0xef, 0x79, 0xa6, 0x27, 0xbe, 0x5a, 684 0xe7, 0x74, 0xb7, 0xd7, 0xa8, 0xc1, 0xae, 0x55, 685 0x88, 0xa4, 0xc7, 0x4d, 0xb7, 0x62, 0xf0, 0xf9, 686 0x5b, 0xbf, 0x47, 0x5b, 0xfe, 0xcc, 0x0b, 0x89, 687 0x19, 0x65, 0x4b, 0x6f, 0xdf, 0x4f, 0x7d, 0x4d, 688 0x96, 0x42, 0x0d, 0x2a, 0xa1, 0xbd, 0x3e, 0x70, 689 0x92, 0xba, 0xc8, 0x59, 0xd5, 0x1d, 0x3a, 0x98, 690 0x53, 0x75, 0xa6, 0x32, 0xc8, 0x72, 0x03, 0x46, 691 0x5f, 0x5c, 0x13, 0xa4, 0xdb, 0xc7, 0x55, 0x35, 692 0x22, 0x0d, 0xc6, 0x17, 0x85, 0xbd, 0x46, 0x4b, 693 0xfa, 0x1e, 0x49, 0xc2, 0xfe, 0x1e, 0xf9, 0x62, 694 0x89, 0x56, 0x84, 0xdf, 0xa0, 0xfb, 0xfd, 0x93, 695 0xa4, 0x25, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 696 0x82, 0x01, 0x8e, 0x30, 0x82, 0x01, 0x8a, 0x30, 697 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 698 0xff, 0x04, 0x04, 0x03, 0x02, 0x02, 0x84, 0x30, 699 0x1b, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x14, 700 0x30, 0x12, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 701 0x01, 0x82, 0x37, 0x15, 0x24, 0x06, 0x05, 0x67, 702 0x81, 0x05, 0x08, 0x03, 0x30, 0x16, 0x06, 0x03, 703 0x55, 0x1d, 0x20, 0x04, 0x0f, 0x30, 0x0d, 0x30, 704 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 705 0x82, 0x37, 0x15, 0x1f, 0x30, 0x12, 0x06, 0x03, 706 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 707 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 708 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 709 0x16, 0x04, 0x14, 0xb8, 0x5f, 0xd5, 0x67, 0xca, 710 0x92, 0xc4, 0x0e, 0xcf, 0x0c, 0xd8, 0x1f, 0x6d, 711 0x3f, 0x03, 0x55, 0x6f, 0x38, 0xa6, 0x51, 0x30, 712 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 713 0x30, 0x16, 0x80, 0x14, 0x7a, 0x8c, 0x0a, 0xce, 714 0x2f, 0x48, 0x62, 0x17, 0xe2, 0x94, 0xd1, 0xae, 715 0x55, 0xc1, 0x52, 0xec, 0x71, 0x74, 0xa4, 0x56, 716 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 717 0x69, 0x30, 0x67, 0x30, 0x65, 0xa0, 0x63, 0xa0, 718 0x61, 0x86, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x3a, 719 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 720 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 721 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x6f, 722 0x70, 0x73, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 723 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 724 0x25, 0x32, 0x30, 0x54, 0x50, 0x4d, 0x25, 0x32, 725 0x30, 0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32, 0x30, 726 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 727 0x61, 0x74, 0x65, 0x25, 0x32, 0x30, 0x41, 0x75, 728 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x25, 729 0x32, 0x30, 0x32, 0x30, 0x31, 0x34, 0x2e, 0x63, 730 0x72, 0x6c, 0x30, 0x7d, 0x06, 0x08, 0x2b, 0x06, 731 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x71, 732 0x30, 0x6f, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 733 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x61, 734 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 735 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 736 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 737 0x2f, 0x70, 0x6b, 0x69, 0x6f, 0x70, 0x73, 0x2f, 738 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 739 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x25, 740 0x32, 0x30, 0x54, 0x50, 0x4d, 0x25, 0x32, 0x30, 741 0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32, 0x30, 0x43, 742 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 743 0x74, 0x65, 0x25, 0x32, 0x30, 0x41, 0x75, 0x74, 744 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x25, 0x32, 745 0x30, 0x32, 0x30, 0x31, 0x34, 0x2e, 0x63, 0x72, 746 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 747 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 748 0x03, 0x82, 0x02, 0x01, 0x00, 0x41, 0xaa, 0xfe, 749 0x28, 0x6c, 0xf7, 0x6b, 0x53, 0xde, 0x77, 0xc0, 750 0x80, 0x50, 0x94, 0xd9, 0xdb, 0x46, 0x8e, 0x6a, 751 0x93, 0xa9, 0x10, 0x37, 0x27, 0x1f, 0xf5, 0x70, 752 0xf1, 0xa8, 0xcf, 0xa1, 0x45, 0x86, 0x2a, 0xdd, 753 0x8f, 0xb8, 0xb5, 0xc1, 0xe6, 0xcf, 0x8a, 0xfa, 754 0x32, 0xa1, 0x4b, 0xb7, 0xa4, 0xbf, 0x0a, 0x48, 755 0xcb, 0x42, 0x63, 0x71, 0xc1, 0x96, 0xb9, 0x3a, 756 0x37, 0x84, 0x0e, 0x24, 0x39, 0xeb, 0x58, 0xce, 757 0x3d, 0xb7, 0xa9, 0x44, 0x92, 0x59, 0xb9, 0xff, 758 0xdb, 0x18, 0xbe, 0x6a, 0x5e, 0xe7, 0xce, 0xef, 759 0xb8, 0x40, 0x53, 0xaf, 0xc1, 0x9b, 0xfb, 0x42, 760 0x99, 0x7e, 0x9d, 0x05, 0x2b, 0x71, 0x0a, 0x7a, 761 0x7a, 0x44, 0xd1, 0x31, 0xca, 0xf0, 0x5f, 0x74, 762 0x85, 0xa9, 0xe2, 0xbc, 0xc8, 0x0c, 0xad, 0x57, 763 0xd1, 0xe9, 0x48, 0x90, 0x88, 0x57, 0x86, 0xd7, 764 0xc5, 0xc9, 0xe6, 0xb2, 0x5e, 0x5f, 0x13, 0xdc, 765 0x10, 0x7f, 0xdf, 0x63, 0x8a, 0xd5, 0x9e, 0x90, 766 0xc2, 0x75, 0x53, 0x1e, 0x68, 0x17, 0x2b, 0x03, 767 0x29, 0x15, 0x03, 0xc5, 0x8c, 0x66, 0x3e, 0xae, 768 0xbd, 0x4a, 0x32, 0x7e, 0x59, 0x89, 0x0b, 0x84, 769 0xc2, 0xd9, 0x90, 0xfa, 0x02, 0x22, 0x90, 0x8d, 770 0x9c, 0xb6, 0x0c, 0x4d, 0xe1, 0x28, 0x76, 0xd7, 771 0x82, 0xc3, 0x36, 0xc2, 0xa3, 0x2a, 0x52, 0xe5, 772 0xfe, 0x3c, 0x8f, 0xe3, 0x4b, 0xda, 0x6a, 0xdb, 773 0xc0, 0x7a, 0x3c, 0x57, 0xfa, 0x85, 0x8f, 0xfb, 774 0x62, 0xc3, 0xa1, 0x38, 0xce, 0x84, 0xf2, 0xba, 775 0x12, 0xf4, 0x30, 0x2a, 0x4a, 0x94, 0xa9, 0x35, 776 0x2c, 0x7d, 0x11, 0xc7, 0x68, 0x1f, 0x47, 0xaa, 777 0x57, 0x43, 0x06, 0x70, 0x79, 0x8c, 0xb6, 0x3b, 778 0x5d, 0x57, 0xf3, 0xf3, 0xc0, 0x2c, 0xc5, 0xde, 779 0x41, 0x99, 0xf6, 0xdd, 0x55, 0x8a, 0xe4, 0x13, 780 0xca, 0xc9, 0xec, 0x69, 0x93, 0x13, 0x48, 0xf0, 781 0x5f, 0xda, 0x2e, 0xfd, 0xfb, 0xa9, 0x1b, 0x92, 782 0xde, 0x49, 0x71, 0x37, 0x8c, 0x3f, 0xc2, 0x08, 783 0x0a, 0x83, 0x25, 0xf1, 0x6e, 0x0a, 0xe3, 0x55, 784 0x85, 0x96, 0x9a, 0x2d, 0xa2, 0xc0, 0xa1, 0xee, 785 0xfe, 0x23, 0x3b, 0x69, 0x22, 0x03, 0xfd, 0xcc, 786 0x8a, 0xdd, 0xb4, 0x53, 0x8d, 0x84, 0xa6, 0xac, 787 0xe0, 0x1e, 0x07, 0xe5, 0xd7, 0xf9, 0xcb, 0xb9, 788 0xe3, 0x9a, 0xb7, 0x84, 0x70, 0xa1, 0x93, 0xd6, 789 0x02, 0x1e, 0xfe, 0xdb, 0x28, 0x7c, 0xf7, 0xd4, 790 0x62, 0x6f, 0x80, 0x75, 0xc8, 0xd8, 0x35, 0x26, 791 0x0c, 0xcb, 0x84, 0xed, 0xbb, 0x95, 0xdf, 0x7f, 792 0xd5, 0xbb, 0x00, 0x96, 0x97, 0x32, 0xe7, 0xba, 793 0xe8, 0x29, 0xb5, 0x1a, 0x51, 0x81, 0xbb, 0x04, 794 0xd1, 0x21, 0x76, 0x34, 0x6d, 0x1e, 0x93, 0x96, 795 0x1f, 0x96, 0x53, 0x5f, 0x5c, 0x9e, 0xf3, 0x9d, 796 0x82, 0x1c, 0x39, 0x36, 0x59, 0xae, 0xc9, 0x3c, 797 0x53, 0x4a, 0x67, 0x65, 0x6e, 0xbf, 0xa6, 0xac, 798 0x3e, 0xda, 0xb2, 0xa7, 0x63, 0x07, 0x17, 0xe1, 799 0x5b, 0xda, 0x6a, 0x31, 0x9f, 0xfb, 0xb4, 0xea, 800 0xa1, 0x97, 0x08, 0x6e, 0xb2, 0x68, 0xf3, 0x72, 801 0x76, 0x99, 0xe8, 0x00, 0x46, 0x88, 0x26, 0xe1, 802 0x3c, 0x07, 0x2b, 0x78, 0x49, 0xda, 0x79, 0x3a, 803 0xbd, 0x6f, 0xca, 0x5c, 0xa0, 0xa8, 0xed, 0x34, 804 0xcc, 0xdb, 0x13, 0xe2, 0x51, 0x9b, 0x3d, 0x03, 805 0xac, 0xc7, 0xf6, 0x32, 0xe1, 0x11, 0x5d, 0xe1, 806 0xc5, 0xfd, 0x9e, 0x7a, 0xcd, 0x06, 0xb9, 0xe6, 807 0xfc, 0xe0, 0x03, 0x31, 0xf4, 0x4a, 0xa9, 0x3b, 808 0x79, 0x01, 0xb0, 0x64, 0x68, 0x9f, 0x6e, 0x76, 809 0xa1, 0xcc, 0xec, 0x17, 0x41, 0x9d, 0xd4, 0x5b, 810 0x4e, 0x9d, 0xe5, 0x46, 0xd4, 0x6b, 0x60, 0x2a, 811 0x23, 0xb5, 0x7a, 0x89, 0x7c, 0x27, 0x96, 0x65, 812 0x97, 0x56, 0xec, 0x98, 0xe3, 0x67, 0x70, 0x75, 813 0x62, 0x41, 0x72, 0x65, 0x61, 0x59, 0x01, 0x36, 814 0x00, 0x01, 0x00, 0x0b, 0x00, 0x06, 0x04, 0x72, 815 0x00, 0x20, 0x9d, 0xff, 0xcb, 0xf3, 0x6c, 0x38, 816 0x3a, 0xe6, 0x99, 0xfb, 0x98, 0x68, 0xdc, 0x6d, 817 0xcb, 0x89, 0xd7, 0x15, 0x38, 0x84, 0xbe, 0x28, 818 0x03, 0x92, 0x2c, 0x12, 0x41, 0x58, 0xbf, 0xad, 819 0x22, 0xae, 0x00, 0x10, 0x00, 0x10, 0x08, 0x00, 820 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc5, 0xb6, 821 0x9c, 0x06, 0x1d, 0xcf, 0xb9, 0xf2, 0x5e, 0x99, 822 0x7d, 0x6d, 0x73, 0xd8, 0x36, 0xc1, 0x4a, 0x90, 823 0x05, 0x4d, 0x82, 0x57, 0xc1, 0xb6, 0x6a, 0xd1, 824 0x43, 0x03, 0x85, 0xf8, 0x52, 0x4f, 0xd2, 0x27, 825 0x91, 0x0b, 0xb5, 0x93, 0xa0, 0x68, 0xf8, 0x80, 826 0x1b, 0xaa, 0x65, 0x97, 0x45, 0x11, 0x86, 0x34, 827 0xd6, 0x67, 0xf8, 0xd5, 0x12, 0x79, 0x84, 0xee, 828 0x70, 0x99, 0x00, 0x63, 0xa8, 0xb4, 0x43, 0x0b, 829 0x4c, 0x57, 0x4a, 0xd6, 0x9b, 0x75, 0x63, 0x8a, 830 0x46, 0x57, 0xdb, 0x14, 0xc8, 0x71, 0xd1, 0xb3, 831 0x07, 0x68, 0x58, 0xbc, 0x55, 0x84, 0x80, 0x2a, 832 0xd2, 0x36, 0x9f, 0xc1, 0x64, 0xa0, 0x11, 0x4b, 833 0xc9, 0x32, 0x31, 0x3a, 0xd6, 0x87, 0x26, 0x1a, 834 0x3a, 0x78, 0x3d, 0x89, 0xdb, 0x00, 0x28, 0x3b, 835 0xae, 0x2b, 0x1b, 0x56, 0xe2, 0x8c, 0x4c, 0x63, 836 0xac, 0x6e, 0x6c, 0xf7, 0xb5, 0x7d, 0x4d, 0x0b, 837 0x9f, 0x06, 0xa0, 0x10, 0x35, 0x38, 0x20, 0x4d, 838 0xcc, 0x07, 0xd7, 0x00, 0x4e, 0x86, 0xba, 0xfe, 839 0x8b, 0xe4, 0x3f, 0x4a, 0xd6, 0xca, 0xbf, 0x67, 840 0x40, 0x1a, 0xa4, 0xda, 0x82, 0x52, 0x15, 0xb8, 841 0x14, 0x3a, 0x7c, 0xa9, 0x02, 0xc1, 0x01, 0x69, 842 0xc6, 0x51, 0xd4, 0xbc, 0x1f, 0x95, 0xb2, 0xee, 843 0x1f, 0xdd, 0xb5, 0x73, 0x16, 0x5e, 0x29, 0x3f, 844 0x47, 0xac, 0x65, 0xfb, 0x63, 0x5c, 0xb9, 0xc8, 845 0x13, 0x2d, 0xec, 0x85, 0xde, 0x71, 0x0d, 0x84, 846 0x93, 0x74, 0x76, 0x91, 0xdd, 0x1d, 0x6d, 0x3d, 847 0xc7, 0x36, 0x19, 0x19, 0x86, 0xde, 0x7c, 0xca, 848 0xd6, 0xc6, 0x65, 0x7e, 0x4b, 0x24, 0x9c, 0xce, 849 0x92, 0x6b, 0x1c, 0xe0, 0xa0, 0xa9, 0x6c, 0xc3, 850 0xed, 0x4f, 0x2a, 0x54, 0x07, 0x00, 0x32, 0x5e, 851 0x1b, 0x94, 0x37, 0xcd, 0xe2, 0x32, 0xa8, 0xd5, 852 0x2c, 0xfb, 0x03, 0x9d, 0x79, 0xdf, 0x68, 0x63, 853 0x65, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x58, 854 0xa1, 0xff, 0x54, 0x43, 0x47, 0x80, 0x17, 0x00, 855 0x22, 0x00, 0x0b, 0xdb, 0x1f, 0x74, 0x21, 0x4f, 856 0xa9, 0x0d, 0x90, 0x64, 0xa2, 0x33, 0xbe, 0x3f, 857 0xf1, 0x95, 0xb0, 0x4e, 0x3f, 0x02, 0xdc, 0xad, 858 0xb0, 0x05, 0x13, 0xe6, 0x32, 0x5f, 0xed, 0x90, 859 0x2c, 0xad, 0xc0, 0x00, 0x14, 0x58, 0x52, 0x07, 860 0x5d, 0x64, 0x6c, 0x1f, 0xd1, 0x13, 0x7f, 0xc3, 861 0x74, 0xf6, 0x4b, 0xe3, 0xa0, 0x2e, 0xb7, 0x71, 862 0xda, 0x00, 0x00, 0x00, 0x00, 0x29, 0x3c, 0x64, 863 0xdf, 0x95, 0x38, 0xba, 0x73, 0xe3, 0x57, 0x61, 864 0xa0, 0x01, 0x24, 0x01, 0x08, 0xc9, 0xd6, 0xea, 865 0x60, 0xe4, 0x00, 0x22, 0x00, 0x0b, 0xe1, 0x86, 866 0xbb, 0x79, 0x27, 0xe5, 0x01, 0x19, 0x90, 0xb3, 867 0xe9, 0x08, 0xb0, 0xee, 0xfa, 0x3a, 0x67, 0xa9, 868 0xf3, 0xc8, 0x9e, 0x03, 0x41, 0x07, 0x75, 0x60, 869 0xbc, 0x94, 0x0c, 0x2a, 0xb7, 0xad, 0x00, 0x22, 870 0x00, 0x0b, 0x35, 0xb1, 0x72, 0xd6, 0x3c, 0xe9, 871 0x85, 0xe8, 0x66, 0xed, 0x10, 0x7a, 0x5c, 0xa3, 872 0xe6, 0xd9, 0x4d, 0xf0, 0x52, 0x69, 0x26, 0x14, 873 0xb4, 0x36, 0x7e, 0xad, 0x76, 0x9e, 0x58, 0x68, 874 0x3e, 0x91 875 }; 876 877 const unsigned char attstmt_tpm_es256[3841] = { 878 0xa6, 0x63, 0x61, 0x6c, 0x67, 0x39, 0xff, 0xfe, 879 0x63, 0x73, 0x69, 0x67, 0x59, 0x01, 0x00, 0x6d, 880 0x11, 0x61, 0x1f, 0x45, 0xb9, 0x7f, 0x65, 0x6f, 881 0x97, 0x46, 0xfe, 0xbb, 0x8a, 0x98, 0x07, 0xa3, 882 0xbc, 0x67, 0x5c, 0xd7, 0x65, 0xa4, 0xf4, 0x6c, 883 0x5b, 0x37, 0x75, 0xa4, 0x7f, 0x08, 0x52, 0xeb, 884 0x1e, 0x12, 0xe2, 0x78, 0x8c, 0x7d, 0x94, 0xab, 885 0x7b, 0xed, 0x05, 0x17, 0x67, 0x7e, 0xaa, 0x02, 886 0x89, 0x6d, 0xe8, 0x6d, 0x43, 0x30, 0x99, 0xc6, 887 0xf9, 0x59, 0xe5, 0x82, 0x3c, 0x56, 0x4e, 0x77, 888 0x11, 0x25, 0xe4, 0x43, 0x6a, 0xae, 0x92, 0x4f, 889 0x60, 0x92, 0x50, 0xf9, 0x65, 0x0e, 0x44, 0x38, 890 0x3d, 0xf7, 0xaf, 0x66, 0x89, 0xc7, 0xe6, 0xe6, 891 0x01, 0x07, 0x9e, 0x90, 0xfd, 0x6d, 0xaa, 0x35, 892 0x51, 0x51, 0xbf, 0x54, 0x13, 0x95, 0xc2, 0x17, 893 0xfa, 0x32, 0x0f, 0xa7, 0x82, 0x17, 0x58, 0x6c, 894 0x3d, 0xea, 0x88, 0xd8, 0x64, 0xc7, 0xf8, 0xc2, 895 0xd6, 0x1c, 0xbb, 0xea, 0x1e, 0xb3, 0xd9, 0x4c, 896 0xa7, 0xce, 0x18, 0x1e, 0xcb, 0x42, 0x5f, 0xbf, 897 0x44, 0xe7, 0xf1, 0x22, 0xe0, 0x5b, 0xeb, 0xff, 898 0xb6, 0x1e, 0x6f, 0x60, 0x12, 0x16, 0x63, 0xfe, 899 0xab, 0x5e, 0x31, 0x13, 0xdb, 0x72, 0xc6, 0x9a, 900 0xf8, 0x8f, 0x19, 0x6b, 0x2e, 0xaf, 0x7d, 0xca, 901 0x9f, 0xbc, 0x6b, 0x1a, 0x8b, 0x5e, 0xe3, 0x9e, 902 0xaa, 0x8c, 0x79, 0x9c, 0x4e, 0xed, 0xe4, 0xff, 903 0x3d, 0x12, 0x79, 0x90, 0x09, 0x61, 0x97, 0x67, 904 0xbf, 0x04, 0xac, 0x37, 0xea, 0xa9, 0x1f, 0x9f, 905 0x52, 0x64, 0x0b, 0xeb, 0xc3, 0x61, 0xd4, 0x13, 906 0xb0, 0x84, 0xf1, 0x3c, 0x74, 0x83, 0xcc, 0xa8, 907 0x1c, 0x14, 0xe6, 0x9d, 0xfe, 0xec, 0xee, 0xa1, 908 0xd2, 0xc2, 0x0a, 0xa6, 0x36, 0x08, 0xbb, 0x17, 909 0xa5, 0x7b, 0x53, 0x34, 0x0e, 0xc9, 0x09, 0xe5, 910 0x10, 0xa6, 0x85, 0x01, 0x71, 0x66, 0xff, 0xd0, 911 0x6d, 0x4b, 0x93, 0xdb, 0x81, 0x25, 0x01, 0x63, 912 0x76, 0x65, 0x72, 0x63, 0x32, 0x2e, 0x30, 0x63, 913 0x78, 0x35, 0x63, 0x82, 0x59, 0x05, 0xc4, 0x30, 914 0x82, 0x05, 0xc0, 0x30, 0x82, 0x03, 0xa8, 0xa0, 915 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x30, 0xcd, 916 0xf2, 0x7e, 0x81, 0xc0, 0x43, 0x85, 0xa2, 0xd7, 917 0x29, 0xef, 0xf7, 0x9f, 0xa5, 0x2b, 0x30, 0x0d, 918 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 919 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x41, 0x31, 920 0x3f, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x04, 0x03, 921 0x13, 0x36, 0x45, 0x55, 0x53, 0x2d, 0x53, 0x54, 922 0x4d, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 0x2d, 923 0x31, 0x41, 0x44, 0x42, 0x39, 0x39, 0x34, 0x41, 924 0x42, 0x35, 0x38, 0x42, 0x45, 0x35, 0x37, 0x41, 925 0x30, 0x43, 0x43, 0x39, 0x42, 0x39, 0x30, 0x30, 926 0x45, 0x37, 0x38, 0x35, 0x31, 0x45, 0x31, 0x41, 927 0x34, 0x33, 0x43, 0x30, 0x38, 0x36, 0x36, 0x30, 928 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x31, 0x31, 0x31, 929 0x30, 0x32, 0x31, 0x35, 0x30, 0x36, 0x35, 0x33, 930 0x5a, 0x17, 0x0d, 0x32, 0x37, 0x30, 0x36, 0x30, 931 0x33, 0x31, 0x39, 0x34, 0x30, 0x31, 0x36, 0x5a, 932 0x30, 0x00, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 933 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 934 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 935 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 936 0x01, 0x01, 0x00, 0xdb, 0xd5, 0x9a, 0xfc, 0x09, 937 0xa7, 0xc4, 0xa5, 0x5f, 0xbe, 0x5f, 0xa2, 0xeb, 938 0xd6, 0x8e, 0xed, 0xc5, 0x67, 0xa6, 0xa7, 0xd9, 939 0xb2, 0x46, 0xc6, 0xe0, 0xae, 0x0c, 0x02, 0x25, 940 0x0a, 0xf2, 0xc5, 0x96, 0xdc, 0xb7, 0x0e, 0xb9, 941 0x86, 0xd3, 0x51, 0xbb, 0x63, 0xf0, 0x4f, 0x8a, 942 0x5e, 0xd7, 0xf7, 0xff, 0xbb, 0x29, 0xbd, 0x58, 943 0xcf, 0x75, 0x02, 0x39, 0xcb, 0x80, 0xf1, 0xd4, 944 0xb6, 0x75, 0x67, 0x2f, 0x27, 0x4d, 0x0c, 0xcc, 945 0x18, 0x59, 0x87, 0xfa, 0x51, 0xd1, 0x80, 0xb5, 946 0x1a, 0xac, 0xac, 0x29, 0x51, 0xcf, 0x27, 0xaa, 947 0x74, 0xac, 0x3e, 0x59, 0x56, 0x67, 0xe4, 0x42, 948 0xe8, 0x30, 0x35, 0xb2, 0xf6, 0x27, 0x91, 0x62, 949 0x60, 0x42, 0x42, 0x12, 0xde, 0xfe, 0xdd, 0xee, 950 0xe8, 0xa8, 0x82, 0xf9, 0xb1, 0x08, 0xd5, 0x8d, 951 0x57, 0x9a, 0x29, 0xb9, 0xb4, 0xe9, 0x19, 0x1e, 952 0x33, 0x7d, 0x37, 0xa0, 0xce, 0x2e, 0x53, 0x13, 953 0x39, 0xb6, 0x12, 0x61, 0x63, 0xbf, 0xd3, 0x42, 954 0xeb, 0x6f, 0xed, 0xc1, 0x8e, 0x26, 0xba, 0x7d, 955 0x8b, 0x37, 0x7c, 0xbb, 0x42, 0x1e, 0x56, 0x76, 956 0xda, 0xdb, 0x35, 0x6b, 0x80, 0xe1, 0x8e, 0x00, 957 0xac, 0xd2, 0xfc, 0x22, 0x96, 0x14, 0x0c, 0xf4, 958 0xe4, 0xc5, 0xad, 0x14, 0xb7, 0x4d, 0x46, 0x63, 959 0x30, 0x79, 0x3a, 0x7c, 0x33, 0xb5, 0xe5, 0x2e, 960 0xbb, 0x5f, 0xca, 0xf2, 0x75, 0xe3, 0x4e, 0x99, 961 0x64, 0x1b, 0x26, 0x99, 0x60, 0x1a, 0x79, 0xcc, 962 0x30, 0x2c, 0xb3, 0x4c, 0x59, 0xf7, 0x77, 0x59, 963 0xd5, 0x90, 0x70, 0x21, 0x79, 0x8c, 0x1f, 0x79, 964 0x0a, 0x12, 0x8b, 0x3b, 0x37, 0x2d, 0x97, 0x39, 965 0x89, 0x92, 0x0c, 0x44, 0x7c, 0xe9, 0x9f, 0xce, 966 0x6d, 0xad, 0xc5, 0xae, 0xea, 0x8e, 0x50, 0x22, 967 0x37, 0xe0, 0xd1, 0x9e, 0xd6, 0xe6, 0xa8, 0xcc, 968 0x21, 0xfb, 0xff, 0x02, 0x03, 0x01, 0x00, 0x01, 969 0xa3, 0x82, 0x01, 0xf3, 0x30, 0x82, 0x01, 0xef, 970 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 971 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 972 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 973 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x6d, 974 0x06, 0x03, 0x55, 0x1d, 0x20, 0x01, 0x01, 0xff, 975 0x04, 0x63, 0x30, 0x61, 0x30, 0x5f, 0x06, 0x09, 976 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 977 0x1f, 0x30, 0x52, 0x30, 0x50, 0x06, 0x08, 0x2b, 978 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 979 0x44, 0x1e, 0x42, 0x00, 0x54, 0x00, 0x43, 0x00, 980 0x50, 0x00, 0x41, 0x00, 0x20, 0x00, 0x20, 0x00, 981 0x54, 0x00, 0x72, 0x00, 0x75, 0x00, 0x73, 0x00, 982 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 983 0x20, 0x00, 0x50, 0x00, 0x6c, 0x00, 0x61, 0x00, 984 0x74, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 985 0x6d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x49, 0x00, 986 0x64, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 987 0x69, 0x00, 0x74, 0x00, 0x79, 0x30, 0x10, 0x06, 988 0x03, 0x55, 0x1d, 0x25, 0x04, 0x09, 0x30, 0x07, 989 0x06, 0x05, 0x67, 0x81, 0x05, 0x08, 0x03, 0x30, 990 0x59, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x01, 0x01, 991 0xff, 0x04, 0x4f, 0x30, 0x4d, 0xa4, 0x4b, 0x30, 992 0x49, 0x31, 0x16, 0x30, 0x14, 0x06, 0x05, 0x67, 993 0x81, 0x05, 0x02, 0x01, 0x0c, 0x0b, 0x69, 0x64, 994 0x3a, 0x35, 0x33, 0x35, 0x34, 0x34, 0x44, 0x32, 995 0x30, 0x31, 0x17, 0x30, 0x15, 0x06, 0x05, 0x67, 996 0x81, 0x05, 0x02, 0x02, 0x0c, 0x0c, 0x53, 0x54, 997 0x33, 0x33, 0x48, 0x54, 0x50, 0x48, 0x41, 0x48, 998 0x42, 0x34, 0x31, 0x16, 0x30, 0x14, 0x06, 0x05, 999 0x67, 0x81, 0x05, 0x02, 0x03, 0x0c, 0x0b, 0x69, 1000 0x64, 0x3a, 0x30, 0x30, 0x34, 0x39, 0x30, 0x30, 1001 0x30, 0x34, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 1002 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x45, 1003 0x1a, 0xec, 0xfc, 0x91, 0x70, 0xf8, 0x83, 0x8b, 1004 0x9c, 0x47, 0x2f, 0x0b, 0x9f, 0x07, 0xf3, 0x2f, 1005 0x7c, 0xa2, 0x8a, 0x30, 0x1d, 0x06, 0x03, 0x55, 1006 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x55, 0xa6, 1007 0xee, 0xe3, 0x28, 0xdd, 0x40, 0x7f, 0x21, 0xd2, 1008 0x7b, 0x8c, 0x69, 0x2f, 0x8c, 0x08, 0x29, 0xbc, 1009 0x95, 0xb8, 0x30, 0x81, 0xb2, 0x06, 0x08, 0x2b, 1010 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 1011 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x30, 0x81, 0x9f, 1012 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 1013 0x30, 0x02, 0x86, 0x81, 0x92, 0x68, 0x74, 0x74, 1014 0x70, 0x3a, 0x2f, 0x2f, 0x61, 0x7a, 0x63, 0x73, 1015 0x70, 0x72, 0x6f, 0x64, 0x65, 0x75, 0x73, 0x61, 1016 0x69, 0x6b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 1017 0x68, 0x2e, 0x62, 0x6c, 0x6f, 0x62, 0x2e, 0x63, 1018 0x6f, 0x72, 0x65, 0x2e, 0x77, 0x69, 0x6e, 0x64, 1019 0x6f, 0x77, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 1020 0x65, 0x75, 0x73, 0x2d, 0x73, 0x74, 0x6d, 0x2d, 1021 0x6b, 0x65, 0x79, 0x69, 0x64, 0x2d, 0x31, 0x61, 1022 0x64, 0x62, 0x39, 0x39, 0x34, 0x61, 0x62, 0x35, 1023 0x38, 0x62, 0x65, 0x35, 0x37, 0x61, 0x30, 0x63, 1024 0x63, 0x39, 0x62, 0x39, 0x30, 0x30, 0x65, 0x37, 1025 0x38, 0x35, 0x31, 0x65, 0x31, 0x61, 0x34, 0x33, 1026 0x63, 0x30, 0x38, 0x36, 0x36, 0x30, 0x2f, 0x62, 1027 0x36, 0x63, 0x30, 0x64, 0x39, 0x38, 0x64, 0x2d, 1028 0x35, 0x37, 0x38, 0x61, 0x2d, 0x34, 0x62, 0x66, 1029 0x62, 0x2d, 0x61, 0x32, 0x64, 0x33, 0x2d, 0x65, 1030 0x64, 0x66, 0x65, 0x35, 0x66, 0x38, 0x32, 0x30, 1031 0x36, 0x30, 0x31, 0x2e, 0x63, 0x65, 0x72, 0x30, 1032 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 1033 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 1034 0x02, 0x01, 0x00, 0x2a, 0x08, 0x30, 0x1f, 0xfd, 1035 0x8f, 0x80, 0x9b, 0x4b, 0x37, 0x82, 0x61, 0x86, 1036 0x36, 0x57, 0x90, 0xb5, 0x1d, 0x1f, 0xa3, 0xae, 1037 0x68, 0xac, 0xa7, 0x96, 0x6a, 0x25, 0x5e, 0xc5, 1038 0x82, 0x7c, 0x36, 0x64, 0x58, 0x11, 0xcb, 0xa5, 1039 0xee, 0xbf, 0xc4, 0xdb, 0xa0, 0xc7, 0x82, 0x3b, 1040 0xa3, 0x85, 0x9b, 0xc4, 0xee, 0x07, 0x36, 0xd7, 1041 0xc7, 0xb6, 0x23, 0xed, 0xc2, 0x73, 0xab, 0xbe, 1042 0xbe, 0xee, 0x63, 0x17, 0xf9, 0xd7, 0x7a, 0x23, 1043 0x7b, 0xf8, 0x09, 0x7a, 0xaa, 0x7f, 0x67, 0xc3, 1044 0x04, 0x84, 0x71, 0x9b, 0x06, 0x9c, 0x07, 0x42, 1045 0x4b, 0x65, 0x41, 0x56, 0x58, 0x14, 0x92, 0xb0, 1046 0xb9, 0xaf, 0xa1, 0x39, 0xd4, 0x08, 0x2d, 0x71, 1047 0xd5, 0x6c, 0x56, 0xb9, 0x2b, 0x1e, 0xf3, 0x93, 1048 0xa5, 0xe9, 0xb2, 0x9b, 0x4d, 0x05, 0x2b, 0xbc, 1049 0xd2, 0x20, 0x57, 0x3b, 0xa4, 0x01, 0x68, 0x8c, 1050 0x23, 0x20, 0x7d, 0xbb, 0x71, 0xe4, 0x2a, 0x24, 1051 0xba, 0x75, 0x0c, 0x89, 0x54, 0x22, 0xeb, 0x0e, 1052 0xb2, 0xf4, 0xc2, 0x1f, 0x02, 0xb7, 0xe3, 0x06, 1053 0x41, 0x15, 0x6b, 0xf3, 0xc8, 0x2d, 0x5b, 0xc2, 1054 0x21, 0x82, 0x3e, 0xe8, 0x95, 0x40, 0x39, 0x9e, 1055 0x91, 0x68, 0x33, 0x0c, 0x3d, 0x45, 0xef, 0x99, 1056 0x79, 0xe6, 0x32, 0xc9, 0x00, 0x84, 0x36, 0xfb, 1057 0x0a, 0x8d, 0x41, 0x1c, 0x32, 0x64, 0x06, 0x9e, 1058 0x0f, 0xb5, 0x04, 0xcc, 0x08, 0xb1, 0xb6, 0x2b, 1059 0xcf, 0x36, 0x0f, 0x73, 0x14, 0x8e, 0x25, 0x44, 1060 0xb3, 0x0c, 0x34, 0x14, 0x96, 0x0c, 0x8a, 0x65, 1061 0xa1, 0xde, 0x8e, 0xc8, 0x9d, 0xbe, 0x66, 0xdf, 1062 0x06, 0x91, 0xca, 0x15, 0x0f, 0x92, 0xd5, 0x2a, 1063 0x0b, 0xdc, 0x4c, 0x6a, 0xf3, 0x16, 0x4a, 0x3e, 1064 0xb9, 0x76, 0xbc, 0xfe, 0x62, 0xd4, 0xa8, 0xcd, 1065 0x94, 0x78, 0x0d, 0xdd, 0x94, 0xfd, 0x5e, 0x63, 1066 0x57, 0x27, 0x05, 0x9c, 0xd0, 0x80, 0x91, 0x91, 1067 0x79, 0xe8, 0x5e, 0x18, 0x64, 0x22, 0xe4, 0x2c, 1068 0x13, 0x65, 0xa4, 0x51, 0x5a, 0x1e, 0x3b, 0x71, 1069 0x2e, 0x70, 0x9f, 0xc4, 0xa5, 0x20, 0xcd, 0xef, 1070 0xd8, 0x3f, 0xa4, 0xf5, 0x89, 0x8a, 0xa5, 0x4f, 1071 0x76, 0x2d, 0x49, 0x56, 0x00, 0x8d, 0xde, 0x40, 1072 0xba, 0x24, 0x46, 0x51, 0x38, 0xad, 0xdb, 0xc4, 1073 0x04, 0xf4, 0x6e, 0xc0, 0x29, 0x48, 0x07, 0x6a, 1074 0x1b, 0x26, 0x32, 0x0a, 0xfb, 0xea, 0x71, 0x2a, 1075 0x11, 0xfc, 0x98, 0x7c, 0x44, 0x87, 0xbc, 0x06, 1076 0x3a, 0x4d, 0xbd, 0x91, 0x63, 0x4f, 0x26, 0x48, 1077 0x54, 0x47, 0x1b, 0xbd, 0xf0, 0xf1, 0x56, 0x05, 1078 0xc5, 0x0f, 0x8f, 0x20, 0xa5, 0xcc, 0xfb, 0x76, 1079 0xb0, 0xbd, 0x83, 0xde, 0x7f, 0x39, 0x4f, 0xcf, 1080 0x61, 0x74, 0x52, 0xa7, 0x1d, 0xf6, 0xb5, 0x5e, 1081 0x4a, 0x82, 0x20, 0xc1, 0x94, 0xaa, 0x2c, 0x33, 1082 0xd6, 0x0a, 0xf9, 0x8f, 0x92, 0xc6, 0x29, 0x80, 1083 0xf5, 0xa2, 0xb1, 0xff, 0xb6, 0x2b, 0xaa, 0x04, 1084 0x00, 0x72, 0xb4, 0x12, 0xbb, 0xb1, 0xf1, 0x3c, 1085 0x88, 0xa3, 0xab, 0x49, 0x17, 0x90, 0x80, 0x59, 1086 0xa2, 0x96, 0x41, 0x69, 0x74, 0x33, 0x8a, 0x28, 1087 0x33, 0x7e, 0xb3, 0x19, 0x92, 0x28, 0xc1, 0xf0, 1088 0xd1, 0x82, 0xd5, 0x42, 0xff, 0xe7, 0xa5, 0x3f, 1089 0x1e, 0xb6, 0x4a, 0x23, 0xcc, 0x6a, 0x7f, 0x15, 1090 0x15, 0x52, 0x25, 0xb1, 0xca, 0x21, 0x95, 0x11, 1091 0x53, 0x3e, 0x1f, 0x50, 0x33, 0x12, 0x7a, 0x62, 1092 0xce, 0xcc, 0x71, 0xc2, 0x5f, 0x34, 0x47, 0xc6, 1093 0x7c, 0x71, 0xfa, 0xa0, 0x54, 0x00, 0xb2, 0xdf, 1094 0xc5, 0x54, 0xac, 0x6c, 0x53, 0xef, 0x64, 0x6b, 1095 0x08, 0x82, 0xd8, 0x16, 0x1e, 0xca, 0x40, 0xf3, 1096 0x1f, 0xdf, 0x56, 0x63, 0x10, 0xbc, 0xd7, 0xa0, 1097 0xeb, 0xee, 0xd1, 0x95, 0xe5, 0xef, 0xf1, 0x6a, 1098 0x83, 0x2d, 0x5a, 0x59, 0x06, 0xef, 0x30, 0x82, 1099 0x06, 0xeb, 0x30, 0x82, 0x04, 0xd3, 0xa0, 0x03, 1100 0x02, 0x01, 0x02, 0x02, 0x13, 0x33, 0x00, 0x00, 1101 0x05, 0x23, 0xbf, 0xe8, 0xa1, 0x1a, 0x2a, 0x68, 1102 0xbd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x05, 0x23, 1103 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 1104 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 1105 0x81, 0x8c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 1106 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 1107 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 1108 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 1109 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 1110 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 1111 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 1112 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 1113 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 1114 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 1115 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x36, 1116 0x30, 0x34, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 1117 0x2d, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 1118 0x66, 0x74, 0x20, 0x54, 0x50, 0x4d, 0x20, 0x52, 1119 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 1120 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 1121 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 1122 0x79, 0x20, 0x32, 0x30, 0x31, 0x34, 0x30, 0x1e, 1123 0x17, 0x0d, 0x32, 0x31, 0x30, 0x36, 0x30, 0x33, 1124 0x31, 0x39, 0x34, 0x30, 0x31, 0x36, 0x5a, 0x17, 1125 0x0d, 0x32, 0x37, 0x30, 0x36, 0x30, 0x33, 0x31, 1126 0x39, 0x34, 0x30, 0x31, 0x36, 0x5a, 0x30, 0x41, 1127 0x31, 0x3f, 0x30, 0x3d, 0x06, 0x03, 0x55, 0x04, 1128 0x03, 0x13, 0x36, 0x45, 0x55, 0x53, 0x2d, 0x53, 1129 0x54, 0x4d, 0x2d, 0x4b, 0x45, 0x59, 0x49, 0x44, 1130 0x2d, 0x31, 0x41, 0x44, 0x42, 0x39, 0x39, 0x34, 1131 0x41, 0x42, 0x35, 0x38, 0x42, 0x45, 0x35, 0x37, 1132 0x41, 0x30, 0x43, 0x43, 0x39, 0x42, 0x39, 0x30, 1133 0x30, 0x45, 0x37, 0x38, 0x35, 0x31, 0x45, 0x31, 1134 0x41, 0x34, 0x33, 0x43, 0x30, 0x38, 0x36, 0x36, 1135 0x30, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 1136 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 1137 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 1138 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 1139 0x01, 0x00, 0xdb, 0x03, 0x34, 0x82, 0xfa, 0x81, 1140 0x1c, 0x84, 0x0b, 0xa0, 0x0e, 0x60, 0xd8, 0x9d, 1141 0x84, 0xf4, 0x81, 0xc4, 0xe9, 0xff, 0xcf, 0xe9, 1142 0xa3, 0x57, 0x53, 0x60, 0xa8, 0x19, 0xce, 0xbe, 1143 0xe1, 0x97, 0xee, 0x5d, 0x8c, 0x9f, 0xe4, 0xbd, 1144 0xef, 0xbd, 0x94, 0x14, 0xe4, 0x74, 0x41, 0x02, 1145 0xe9, 0x03, 0x19, 0x9f, 0xdd, 0x48, 0x2d, 0xbd, 1146 0xca, 0x26, 0x47, 0x2c, 0x01, 0x31, 0x5f, 0x34, 1147 0xef, 0x59, 0x35, 0x48, 0x36, 0x3d, 0x1e, 0xdf, 1148 0xd8, 0x13, 0xf0, 0xd0, 0x67, 0xc1, 0xb0, 0x47, 1149 0x67, 0xa2, 0xd6, 0x62, 0xc8, 0xe1, 0x00, 0x36, 1150 0x8b, 0x45, 0xf6, 0x3b, 0x96, 0x60, 0xa0, 0x45, 1151 0x26, 0xcb, 0xc7, 0x0b, 0x5b, 0x97, 0xd1, 0xaf, 1152 0x54, 0x25, 0x7a, 0x67, 0xe4, 0x2a, 0xd8, 0x9d, 1153 0x53, 0x05, 0xbd, 0x12, 0xac, 0xa2, 0x8e, 0x95, 1154 0xb4, 0x2a, 0xca, 0x89, 0x93, 0x64, 0x97, 0x25, 1155 0xdc, 0x1f, 0xa9, 0xe0, 0x55, 0x07, 0x38, 0x1d, 1156 0xee, 0x02, 0x90, 0x22, 0xf5, 0xad, 0x4e, 0x5c, 1157 0xf8, 0xc5, 0x1f, 0x9e, 0x84, 0x7e, 0x13, 0x47, 1158 0x52, 0xa2, 0x36, 0xf9, 0xf6, 0xbf, 0x76, 0x9e, 1159 0x0f, 0xdd, 0x14, 0x99, 0xb9, 0xd8, 0x5a, 0x42, 1160 0x3d, 0xd8, 0xbf, 0xdd, 0xb4, 0x9b, 0xbf, 0x6a, 1161 0x9f, 0x89, 0x13, 0x75, 0xaf, 0x96, 0xd2, 0x72, 1162 0xdf, 0xb3, 0x80, 0x6f, 0x84, 0x1a, 0x9d, 0x06, 1163 0x55, 0x09, 0x29, 0xea, 0xa7, 0x05, 0x31, 0xec, 1164 0x47, 0x3a, 0xcf, 0x3f, 0x9c, 0x2c, 0xbd, 0xd0, 1165 0x7d, 0xe4, 0x75, 0x5b, 0x33, 0xbe, 0x12, 0x86, 1166 0x09, 0xcf, 0x66, 0x9a, 0xeb, 0xf8, 0xf8, 0x72, 1167 0x91, 0x88, 0x4a, 0x5e, 0x89, 0x62, 0x6a, 0x94, 1168 0xdc, 0x48, 0x37, 0x13, 0xd8, 0x91, 0x02, 0xe3, 1169 0x42, 0x41, 0x7c, 0x2f, 0xe3, 0xb6, 0x0f, 0xb4, 1170 0x96, 0x06, 0x80, 0xca, 0x28, 0x01, 0x6f, 0x4b, 1171 0xcd, 0x28, 0xd4, 0x2c, 0x94, 0x7e, 0x40, 0x7e, 1172 0xdf, 0x01, 0xe5, 0xf2, 0x33, 0xd4, 0xda, 0xf4, 1173 0x1a, 0x17, 0xf7, 0x5d, 0xcb, 0x66, 0x2c, 0x2a, 1174 0xeb, 0xe1, 0xb1, 0x4a, 0xc3, 0x85, 0x63, 0xb2, 1175 0xac, 0xd0, 0x3f, 0x1a, 0x8d, 0xa5, 0x0c, 0xee, 1176 0x4f, 0xde, 0x74, 0x9c, 0xe0, 0x5a, 0x10, 0xc7, 1177 0xb8, 0xe4, 0xec, 0xe7, 0x73, 0xa6, 0x41, 0x42, 1178 0x37, 0xe1, 0xdf, 0xb9, 0xc7, 0xb5, 0x14, 0xa8, 1179 0x80, 0x95, 0xa0, 0x12, 0x67, 0x99, 0xf5, 0xba, 1180 0x25, 0x0a, 0x74, 0x86, 0x71, 0x9c, 0x7f, 0x59, 1181 0x97, 0xd2, 0x3f, 0x10, 0xfe, 0x6a, 0xb9, 0xe4, 1182 0x47, 0x36, 0xfb, 0x0f, 0x50, 0xee, 0xfc, 0x87, 1183 0x99, 0x7e, 0x36, 0x64, 0x1b, 0xc7, 0x13, 0xb3, 1184 0x33, 0x18, 0x71, 0xa4, 0xc3, 0xb0, 0xfc, 0x45, 1185 0x37, 0x11, 0x40, 0xb3, 0xde, 0x2c, 0x9f, 0x0a, 1186 0xcd, 0xaf, 0x5e, 0xfb, 0xd5, 0x9c, 0xea, 0xd7, 1187 0x24, 0x19, 0x3a, 0x92, 0x80, 0xa5, 0x63, 0xc5, 1188 0x3e, 0xdd, 0x51, 0xd0, 0x9f, 0xb8, 0x5e, 0xd5, 1189 0xf1, 0xfe, 0xa5, 0x93, 0xfb, 0x7f, 0xd9, 0xb8, 1190 0xb7, 0x0e, 0x0d, 0x12, 0x71, 0xf0, 0x52, 0x9d, 1191 0xe9, 0xd0, 0xd2, 0x8b, 0x38, 0x8b, 0x85, 0x83, 1192 0x98, 0x24, 0x88, 0xe8, 0x42, 0x30, 0x83, 0x12, 1193 0xef, 0x09, 0x96, 0x2f, 0x21, 0x81, 0x05, 0x30, 1194 0x0c, 0xbb, 0xba, 0x21, 0x39, 0x16, 0x12, 0xe8, 1195 0x4b, 0x7b, 0x7a, 0x66, 0xb8, 0x22, 0x2c, 0x71, 1196 0xaf, 0x59, 0xa1, 0xfc, 0x61, 0xf1, 0xb4, 0x5e, 1197 0xfc, 0x43, 0x19, 0x45, 0x6e, 0xa3, 0x45, 0xe4, 1198 0xcb, 0x66, 0x5f, 0xe0, 0x57, 0xf6, 0x0a, 0x30, 1199 0xa3, 0xd6, 0x51, 0x24, 0xc9, 0x07, 0x55, 0x82, 1200 0x4a, 0x66, 0x0e, 0x9d, 0xb2, 0x2f, 0x84, 0x56, 1201 0x6c, 0x3e, 0x71, 0xef, 0x9b, 0x35, 0x4d, 0x72, 1202 0xdc, 0x46, 0x2a, 0xe3, 0x7b, 0x13, 0x20, 0xbf, 1203 0xab, 0x77, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 1204 0x82, 0x01, 0x8e, 0x30, 0x82, 0x01, 0x8a, 0x30, 1205 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 1206 0xff, 0x04, 0x04, 0x03, 0x02, 0x02, 0x84, 0x30, 1207 0x1b, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x14, 1208 0x30, 0x12, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 1209 0x01, 0x82, 0x37, 0x15, 0x24, 0x06, 0x05, 0x67, 1210 0x81, 0x05, 0x08, 0x03, 0x30, 0x16, 0x06, 0x03, 1211 0x55, 0x1d, 0x20, 0x04, 0x0f, 0x30, 0x0d, 0x30, 1212 0x0b, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 1213 0x82, 0x37, 0x15, 0x1f, 0x30, 0x12, 0x06, 0x03, 1214 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 1215 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 1216 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 1217 0x16, 0x04, 0x14, 0x45, 0x1a, 0xec, 0xfc, 0x91, 1218 0x70, 0xf8, 0x83, 0x8b, 0x9c, 0x47, 0x2f, 0x0b, 1219 0x9f, 0x07, 0xf3, 0x2f, 0x7c, 0xa2, 0x8a, 0x30, 1220 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 1221 0x30, 0x16, 0x80, 0x14, 0x7a, 0x8c, 0x0a, 0xce, 1222 0x2f, 0x48, 0x62, 0x17, 0xe2, 0x94, 0xd1, 0xae, 1223 0x55, 0xc1, 0x52, 0xec, 0x71, 0x74, 0xa4, 0x56, 1224 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 1225 0x69, 0x30, 0x67, 0x30, 0x65, 0xa0, 0x63, 0xa0, 1226 0x61, 0x86, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x3a, 1227 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 1228 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 1229 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x6f, 1230 0x70, 0x73, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x4d, 1231 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 1232 0x25, 0x32, 0x30, 0x54, 0x50, 0x4d, 0x25, 0x32, 1233 0x30, 0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32, 0x30, 1234 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 1235 0x61, 0x74, 0x65, 0x25, 0x32, 0x30, 0x41, 0x75, 1236 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x25, 1237 0x32, 0x30, 0x32, 0x30, 0x31, 0x34, 0x2e, 0x63, 1238 0x72, 0x6c, 0x30, 0x7d, 0x06, 0x08, 0x2b, 0x06, 1239 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x71, 1240 0x30, 0x6f, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 1241 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x61, 1242 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 1243 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 1244 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 1245 0x2f, 0x70, 0x6b, 0x69, 0x6f, 0x70, 0x73, 0x2f, 1246 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 1247 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x25, 1248 0x32, 0x30, 0x54, 0x50, 0x4d, 0x25, 0x32, 0x30, 1249 0x52, 0x6f, 0x6f, 0x74, 0x25, 0x32, 0x30, 0x43, 1250 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 1251 0x74, 0x65, 0x25, 0x32, 0x30, 0x41, 0x75, 0x74, 1252 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x25, 0x32, 1253 0x30, 0x32, 0x30, 0x31, 0x34, 0x2e, 0x63, 0x72, 1254 0x74, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 1255 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 1256 0x03, 0x82, 0x02, 0x01, 0x00, 0x48, 0x24, 0x32, 1257 0xe8, 0xd6, 0x38, 0xda, 0x65, 0xec, 0x1b, 0x18, 1258 0x8e, 0x37, 0x07, 0xd5, 0x18, 0x5a, 0xc8, 0xb9, 1259 0xbb, 0x24, 0x8a, 0x4d, 0xa1, 0x3c, 0x9e, 0x46, 1260 0x76, 0xcf, 0xa5, 0xdf, 0xd7, 0x61, 0xba, 0x05, 1261 0x89, 0x3c, 0x13, 0xc2, 0x1f, 0x71, 0xe3, 0xec, 1262 0x5d, 0x54, 0x9e, 0xd9, 0x01, 0x5a, 0x10, 0x3b, 1263 0x17, 0x75, 0xde, 0xa1, 0x45, 0xbf, 0x1d, 0x1b, 1264 0x41, 0x21, 0x42, 0x68, 0x22, 0x6b, 0xbb, 0xcb, 1265 0x11, 0x04, 0xd2, 0xae, 0x86, 0xcf, 0x73, 0x5a, 1266 0xf2, 0x80, 0x18, 0x00, 0xf0, 0xd6, 0x6c, 0x5a, 1267 0x1e, 0xb3, 0x4d, 0x30, 0x02, 0x4a, 0x6a, 0x03, 1268 0x36, 0x42, 0xde, 0xb2, 0x52, 0x55, 0xff, 0x71, 1269 0xeb, 0x7b, 0x8b, 0x55, 0x6c, 0xdf, 0x05, 0x35, 1270 0x47, 0x70, 0x53, 0xfb, 0x6c, 0xba, 0x06, 0xb2, 1271 0x61, 0x86, 0xdc, 0x2a, 0x64, 0x81, 0x24, 0x79, 1272 0x46, 0x73, 0x04, 0x55, 0x59, 0xed, 0xd6, 0x06, 1273 0x61, 0x15, 0xf9, 0x8d, 0x78, 0x39, 0x7b, 0x84, 1274 0x7a, 0x40, 0x45, 0x13, 0x1a, 0x91, 0x71, 0x8f, 1275 0xd1, 0x4f, 0x78, 0x10, 0x68, 0x9b, 0x15, 0x79, 1276 0x3f, 0x79, 0x2d, 0x9b, 0xc7, 0x5d, 0xa3, 0xcf, 1277 0xa9, 0x14, 0xb0, 0xc4, 0xdb, 0xa9, 0x45, 0x6a, 1278 0x6e, 0x60, 0x45, 0x0b, 0x14, 0x25, 0xc7, 0x74, 1279 0xd0, 0x36, 0xaf, 0xc5, 0xbd, 0x4f, 0x7b, 0xc0, 1280 0x04, 0x43, 0x85, 0xbb, 0x06, 0x36, 0x77, 0x26, 1281 0x02, 0x23, 0x0b, 0xf8, 0x57, 0x8f, 0x1f, 0x27, 1282 0x30, 0x95, 0xff, 0x83, 0x23, 0x2b, 0x49, 0x33, 1283 0x43, 0x62, 0x87, 0x5d, 0x27, 0x12, 0x1a, 0x68, 1284 0x7b, 0xba, 0x2d, 0xf6, 0xed, 0x2c, 0x26, 0xb5, 1285 0xbb, 0xe2, 0x6f, 0xc2, 0x61, 0x17, 0xfc, 0x72, 1286 0x14, 0x57, 0x2c, 0x2c, 0x5a, 0x92, 0x13, 0x41, 1287 0xc4, 0x7e, 0xb5, 0x64, 0x5b, 0x86, 0x57, 0x13, 1288 0x14, 0xff, 0xf5, 0x04, 0xb9, 0x3d, 0x2d, 0xc3, 1289 0xe9, 0x75, 0x1f, 0x68, 0x0b, 0xb5, 0x76, 0xe1, 1290 0x7d, 0xe3, 0xb0, 0x14, 0xa8, 0x45, 0x05, 0x98, 1291 0x81, 0x32, 0xc1, 0xf5, 0x49, 0x4d, 0x58, 0xa4, 1292 0xee, 0xd8, 0x84, 0xba, 0x65, 0x07, 0x8d, 0xf7, 1293 0x9a, 0xff, 0x7d, 0xa5, 0xbc, 0x9a, 0xed, 0x4a, 1294 0x5d, 0xa4, 0x97, 0x4b, 0x4d, 0x31, 0x90, 0xb5, 1295 0x7d, 0x28, 0x77, 0x25, 0x88, 0x1c, 0xbf, 0x78, 1296 0x22, 0xb2, 0xb5, 0x5c, 0x9a, 0xc9, 0x63, 0x17, 1297 0x96, 0xe9, 0xc2, 0x52, 0x30, 0xb8, 0x9b, 0x37, 1298 0x69, 0x1a, 0x6a, 0x66, 0x76, 0x18, 0xac, 0xc0, 1299 0x48, 0xee, 0x46, 0x5b, 0xbe, 0x6a, 0xd5, 0x72, 1300 0x07, 0xdc, 0x7d, 0x05, 0xbe, 0x76, 0x7d, 0xa5, 1301 0x5e, 0x53, 0xb5, 0x47, 0x80, 0x58, 0xf0, 0xaf, 1302 0x6f, 0x4e, 0xc0, 0xf1, 0x1e, 0x37, 0x64, 0x15, 1303 0x42, 0x96, 0x18, 0x3a, 0x89, 0xc8, 0x14, 0x48, 1304 0x89, 0x5c, 0x12, 0x88, 0x98, 0x0b, 0x7b, 0x4e, 1305 0xce, 0x1c, 0xda, 0xd5, 0xa4, 0xd3, 0x32, 0x32, 1306 0x74, 0x5b, 0xcc, 0xfd, 0x2b, 0x02, 0xfb, 0xae, 1307 0xd0, 0x5a, 0x4c, 0xc9, 0xc1, 0x35, 0x19, 0x90, 1308 0x5f, 0xca, 0x14, 0xeb, 0x4c, 0x17, 0xd7, 0xe3, 1309 0xe2, 0x5d, 0xb4, 0x49, 0xaa, 0xf0, 0x50, 0x87, 1310 0xc3, 0x20, 0x00, 0xda, 0xe9, 0x04, 0x80, 0x64, 1311 0xac, 0x9f, 0xcd, 0x26, 0x41, 0x48, 0xe8, 0x4c, 1312 0x46, 0xcc, 0x5b, 0xd7, 0xca, 0x4c, 0x1b, 0x43, 1313 0x43, 0x1e, 0xbd, 0x94, 0xe7, 0xa7, 0xa6, 0x86, 1314 0xe5, 0xd1, 0x78, 0x29, 0xa2, 0x40, 0xc5, 0xc5, 1315 0x47, 0xb6, 0x6d, 0x53, 0xde, 0xac, 0x97, 0x74, 1316 0x24, 0x57, 0xcc, 0x05, 0x93, 0xfd, 0x52, 0x35, 1317 0x29, 0xd5, 0xe0, 0xfa, 0x23, 0x0d, 0xd7, 0xaa, 1318 0x8b, 0x07, 0x4b, 0xf6, 0x64, 0xc7, 0xad, 0x3c, 1319 0xa1, 0xb5, 0xc5, 0x70, 0xaf, 0x46, 0xfe, 0x9a, 1320 0x82, 0x4d, 0x75, 0xb8, 0x6d, 0x67, 0x70, 0x75, 1321 0x62, 0x41, 0x72, 0x65, 0x61, 0x58, 0x76, 0x00, 1322 0x23, 0x00, 0x0b, 0x00, 0x04, 0x00, 0x72, 0x00, 1323 0x20, 0x9d, 0xff, 0xcb, 0xf3, 0x6c, 0x38, 0x3a, 1324 0xe6, 0x99, 0xfb, 0x98, 0x68, 0xdc, 0x6d, 0xcb, 1325 0x89, 0xd7, 0x15, 0x38, 0x84, 0xbe, 0x28, 0x03, 1326 0x92, 0x2c, 0x12, 0x41, 0x58, 0xbf, 0xad, 0x22, 1327 0xae, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 1328 0x10, 0x00, 0x20, 0xfb, 0xd6, 0xba, 0x74, 0xe6, 1329 0x6e, 0x5c, 0x87, 0xef, 0x89, 0xa2, 0xe8, 0x3d, 1330 0x0b, 0xe9, 0x69, 0x2c, 0x07, 0x07, 0x7a, 0x8a, 1331 0x1e, 0xce, 0x12, 0xea, 0x3b, 0xb3, 0xf1, 0xf3, 1332 0xd9, 0xc3, 0xe6, 0x00, 0x20, 0x3c, 0x68, 0x51, 1333 0x94, 0x54, 0x8d, 0xeb, 0x9f, 0xb2, 0x2c, 0x66, 1334 0x75, 0xb6, 0xb7, 0x55, 0x22, 0x0d, 0x87, 0x59, 1335 0xc4, 0x39, 0x91, 0x62, 0x17, 0xc2, 0xc3, 0x53, 1336 0xa5, 0x26, 0x97, 0x4f, 0x2d, 0x68, 0x63, 0x65, 1337 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x58, 0xa1, 1338 0xff, 0x54, 0x43, 0x47, 0x80, 0x17, 0x00, 0x22, 1339 0x00, 0x0b, 0x73, 0xbe, 0xb7, 0x40, 0x82, 0xc0, 1340 0x49, 0x9a, 0xf7, 0xf2, 0xd0, 0x79, 0x6c, 0x88, 1341 0xf3, 0x56, 0x7b, 0x7a, 0x7d, 0xcd, 0x70, 0xd1, 1342 0xbc, 0x41, 0x88, 0x48, 0x51, 0x03, 0xf3, 0x58, 1343 0x3e, 0xb8, 0x00, 0x14, 0x9f, 0x57, 0x39, 0x67, 1344 0xa8, 0x7b, 0xd8, 0xf6, 0x9e, 0x75, 0xc9, 0x85, 1345 0xab, 0xe3, 0x55, 0xc7, 0x9c, 0xf6, 0xd8, 0x4f, 1346 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x1c, 0x12, 1347 0xfd, 0xc6, 0x05, 0xc6, 0x2b, 0xf5, 0xe9, 0x88, 1348 0x01, 0x1f, 0x70, 0x8d, 0x98, 0x2a, 0x04, 0x21, 1349 0x30, 0x00, 0x22, 0x00, 0x0b, 0xf4, 0xfd, 0x9a, 1350 0x33, 0x55, 0x21, 0x08, 0x27, 0x48, 0x55, 0x01, 1351 0x56, 0xf9, 0x0b, 0x4e, 0x47, 0x55, 0x08, 0x2e, 1352 0x3c, 0x91, 0x3d, 0x6e, 0x53, 0xcf, 0x08, 0xe9, 1353 0x0a, 0x4b, 0xc9, 0x7e, 0x99, 0x00, 0x22, 0x00, 1354 0x0b, 0x51, 0xd3, 0x38, 0xfe, 0xaa, 0xda, 0xc6, 1355 0x68, 0x84, 0x39, 0xe7, 0xb1, 0x03, 0x22, 0x5e, 1356 0xc4, 0xd3, 0xf1, 0x0c, 0xec, 0x35, 0x5d, 0x50, 1357 0xa3, 0x9d, 0xab, 0xa1, 0x7b, 0x61, 0x51, 0x8f, 1358 0x4e 1359 }; 1360 1361 /* 1362 * Security Key By Yubico 1363 * 5.1.X 1364 * f8a011f3-8c0a-4d15-8006-17111f9edc7d 1365 */ 1366 const unsigned char aaguid[16] = { 1367 0xf8, 0xa0, 0x11, 0xf3, 0x8c, 0x0a, 0x4d, 0x15, 1368 0x80, 0x06, 0x17, 0x11, 0x1f, 0x9e, 0xdc, 0x7d, 1369 }; 1370 1371 /* 1372 * Windows Hello by Microsoft 1373 */ 1374 const unsigned char aaguid_tpm[16] = { 1375 0x08, 0x98, 0x70, 0x58, 0xca, 0xdc, 0x4b, 0x81, 1376 0xb6, 0xe1, 0x30, 0xde, 0x50, 0xdc, 0xbe, 0x96, 1377 }; 1378 1379 const char rp_id[] = "localhost"; 1380 const char rp_name[] = "sweet home localhost"; 1381 1382 static void * 1383 dummy_open(const char *path) 1384 { 1385 (void)path; 1386 1387 return (FAKE_DEV_HANDLE); 1388 } 1389 1390 static void 1391 dummy_close(void *handle) 1392 { 1393 assert(handle == FAKE_DEV_HANDLE); 1394 } 1395 1396 static int 1397 dummy_read(void *handle, unsigned char *buf, size_t len, int ms) 1398 { 1399 (void)handle; 1400 (void)buf; 1401 (void)len; 1402 (void)ms; 1403 1404 abort(); 1405 /* NOTREACHED */ 1406 } 1407 1408 static int 1409 dummy_write(void *handle, const unsigned char *buf, size_t len) 1410 { 1411 (void)handle; 1412 (void)buf; 1413 (void)len; 1414 1415 abort(); 1416 /* NOTREACHED */ 1417 } 1418 1419 static fido_cred_t * 1420 alloc_cred(void) 1421 { 1422 fido_cred_t *c; 1423 1424 c = fido_cred_new(); 1425 assert(c != NULL); 1426 1427 return (c); 1428 } 1429 1430 static void 1431 free_cred(fido_cred_t *c) 1432 { 1433 fido_cred_free(&c); 1434 assert(c == NULL); 1435 } 1436 1437 static fido_dev_t * 1438 alloc_dev(void) 1439 { 1440 fido_dev_t *d; 1441 1442 d = fido_dev_new(); 1443 assert(d != NULL); 1444 1445 return (d); 1446 } 1447 1448 static void 1449 free_dev(fido_dev_t *d) 1450 { 1451 fido_dev_free(&d); 1452 assert(d == NULL); 1453 } 1454 1455 static void 1456 empty_cred(void) 1457 { 1458 fido_cred_t *c; 1459 fido_dev_t *d; 1460 fido_dev_io_t io_f; 1461 1462 c = alloc_cred(); 1463 assert(fido_cred_authdata_len(c) == 0); 1464 assert(fido_cred_authdata_ptr(c) == NULL); 1465 assert(fido_cred_authdata_raw_len(c) == 0); 1466 assert(fido_cred_authdata_raw_ptr(c) == NULL); 1467 assert(fido_cred_clientdata_hash_len(c) == 0); 1468 assert(fido_cred_clientdata_hash_ptr(c) == NULL); 1469 assert(fido_cred_flags(c) == 0); 1470 assert(fido_cred_fmt(c) == NULL); 1471 assert(fido_cred_id_len(c) == 0); 1472 assert(fido_cred_id_ptr(c) == NULL); 1473 assert(fido_cred_prot(c) == 0); 1474 assert(fido_cred_pubkey_len(c) == 0); 1475 assert(fido_cred_pubkey_ptr(c) == NULL); 1476 assert(fido_cred_rp_id(c) == NULL); 1477 assert(fido_cred_rp_name(c) == NULL); 1478 assert(fido_cred_sig_len(c) == 0); 1479 assert(fido_cred_sig_ptr(c) == NULL); 1480 assert(fido_cred_x5c_len(c) == 0); 1481 assert(fido_cred_x5c_ptr(c) == NULL); 1482 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1483 1484 memset(&io_f, 0, sizeof(io_f)); 1485 1486 io_f.open = dummy_open; 1487 io_f.close = dummy_close; 1488 io_f.read = dummy_read; 1489 io_f.write = dummy_write; 1490 1491 d = alloc_dev(); 1492 1493 fido_dev_force_u2f(d); 1494 assert(fido_dev_set_io_functions(d, &io_f) == FIDO_OK); 1495 assert(fido_dev_make_cred(d, c, NULL) == FIDO_ERR_INVALID_ARGUMENT); 1496 assert(fido_dev_make_cred(d, c, "") == FIDO_ERR_UNSUPPORTED_OPTION); 1497 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1498 1499 fido_dev_force_fido2(d); 1500 assert(fido_dev_set_io_functions(d, &io_f) == FIDO_OK); 1501 assert(fido_dev_make_cred(d, c, NULL) == FIDO_ERR_INVALID_ARGUMENT); 1502 assert(fido_dev_make_cred(d, c, "") == FIDO_ERR_INVALID_ARGUMENT); 1503 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1504 1505 free_cred(c); 1506 free_dev(d); 1507 } 1508 1509 static void 1510 valid_cred(void) 1511 { 1512 fido_cred_t *c; 1513 1514 c = alloc_cred(); 1515 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1516 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1517 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1518 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1519 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1520 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1521 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1522 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1523 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1524 assert(fido_cred_verify(c) == FIDO_OK); 1525 assert(fido_cred_prot(c) == 0); 1526 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1527 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1528 assert(fido_cred_id_len(c) == sizeof(id)); 1529 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1530 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1531 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1532 free_cred(c); 1533 } 1534 1535 static void 1536 no_cdh(void) 1537 { 1538 fido_cred_t *c; 1539 1540 c = alloc_cred(); 1541 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1542 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1543 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1544 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1545 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1546 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1547 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1548 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1549 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1550 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1551 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1552 assert(fido_cred_id_len(c) == sizeof(id)); 1553 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1554 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1555 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1556 free_cred(c); 1557 } 1558 1559 static void 1560 no_rp_id(void) 1561 { 1562 fido_cred_t *c; 1563 1564 c = alloc_cred(); 1565 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1566 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1567 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1568 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1569 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1570 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1571 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1572 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1573 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1574 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1575 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1576 assert(fido_cred_id_len(c) == sizeof(id)); 1577 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1578 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1579 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1580 free_cred(c); 1581 } 1582 1583 static void 1584 no_rp_name(void) 1585 { 1586 fido_cred_t *c; 1587 1588 c = alloc_cred(); 1589 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1590 assert(fido_cred_set_rp(c, rp_id, NULL) == FIDO_OK); 1591 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1592 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1593 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1594 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1595 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1596 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1597 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1598 assert(fido_cred_verify(c) == FIDO_OK); 1599 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1600 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1601 assert(fido_cred_id_len(c) == sizeof(id)); 1602 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1603 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1604 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1605 free_cred(c); 1606 } 1607 1608 static void 1609 no_authdata(void) 1610 { 1611 fido_cred_t *c; 1612 unsigned char *unset; 1613 1614 unset = calloc(1, sizeof(aaguid)); 1615 assert(unset != NULL); 1616 1617 c = alloc_cred(); 1618 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1619 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1620 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1621 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1622 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1623 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1624 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1625 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1626 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1627 assert(fido_cred_pubkey_len(c) == 0); 1628 assert(fido_cred_pubkey_ptr(c) == NULL); 1629 assert(fido_cred_id_len(c) == 0); 1630 assert(fido_cred_id_ptr(c) == NULL); 1631 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1632 assert(memcmp(fido_cred_aaguid_ptr(c), unset, sizeof(aaguid)) == 0); 1633 free_cred(c); 1634 free(unset); 1635 } 1636 1637 static void 1638 no_x509(void) 1639 { 1640 fido_cred_t *c; 1641 1642 c = alloc_cred(); 1643 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1644 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1645 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1646 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1647 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1648 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1649 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1650 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1651 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1652 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1653 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1654 assert(fido_cred_id_len(c) == sizeof(id)); 1655 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1656 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1657 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1658 free_cred(c); 1659 } 1660 1661 static void 1662 no_sig(void) 1663 { 1664 fido_cred_t *c; 1665 1666 c = alloc_cred(); 1667 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1668 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1669 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1670 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1671 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1672 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1673 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1674 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1675 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1676 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1677 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1678 assert(fido_cred_id_len(c) == sizeof(id)); 1679 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1680 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1681 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1682 free_cred(c); 1683 } 1684 1685 static void 1686 no_fmt(void) 1687 { 1688 fido_cred_t *c; 1689 1690 c = alloc_cred(); 1691 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1692 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1693 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1694 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1695 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1696 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1697 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1698 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1699 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1700 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1701 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1702 assert(fido_cred_id_len(c) == sizeof(id)); 1703 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1704 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1705 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1706 free_cred(c); 1707 } 1708 1709 static void 1710 wrong_options(void) 1711 { 1712 fido_cred_t *c; 1713 1714 c = alloc_cred(); 1715 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1716 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1717 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1718 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1719 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1720 assert(fido_cred_set_uv(c, FIDO_OPT_TRUE) == FIDO_OK); 1721 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1722 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1723 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1724 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_PARAM); 1725 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1726 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1727 assert(fido_cred_id_len(c) == sizeof(id)); 1728 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1729 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1730 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1731 free_cred(c); 1732 } 1733 1734 static void 1735 junk_cdh(void) 1736 { 1737 fido_cred_t *c; 1738 unsigned char *junk; 1739 1740 junk = malloc(sizeof(cdh)); 1741 assert(junk != NULL); 1742 memcpy(junk, cdh, sizeof(cdh)); 1743 junk[0] = (unsigned char)~junk[0]; 1744 1745 c = alloc_cred(); 1746 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1747 assert(fido_cred_set_clientdata_hash(c, junk, sizeof(cdh)) == FIDO_OK); 1748 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1749 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1750 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1751 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1752 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1753 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1754 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1755 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_SIG); 1756 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1757 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1758 assert(fido_cred_id_len(c) == sizeof(id)); 1759 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1760 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1761 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1762 free_cred(c); 1763 free(junk); 1764 } 1765 1766 static void 1767 junk_fmt(void) 1768 { 1769 fido_cred_t *c; 1770 1771 c = alloc_cred(); 1772 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1773 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1774 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1775 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1776 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1777 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1778 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1779 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1780 assert(fido_cred_set_fmt(c, "junk") == FIDO_ERR_INVALID_ARGUMENT); 1781 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1782 free_cred(c); 1783 } 1784 1785 static void 1786 junk_rp_id(void) 1787 { 1788 fido_cred_t *c; 1789 1790 c = alloc_cred(); 1791 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1792 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1793 assert(fido_cred_set_rp(c, "potato", rp_name) == FIDO_OK); 1794 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1795 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1796 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1797 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1798 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1799 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1800 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_PARAM); 1801 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1802 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1803 assert(fido_cred_id_len(c) == sizeof(id)); 1804 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1805 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1806 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1807 free_cred(c); 1808 } 1809 1810 static void 1811 junk_rp_name(void) 1812 { 1813 fido_cred_t *c; 1814 1815 c = alloc_cred(); 1816 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1817 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1818 assert(fido_cred_set_rp(c, rp_id, "potato") == FIDO_OK); 1819 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1820 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1821 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1822 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1823 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1824 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1825 assert(fido_cred_verify(c) == FIDO_OK); 1826 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1827 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1828 assert(fido_cred_id_len(c) == sizeof(id)); 1829 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1830 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1831 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1832 free_cred(c); 1833 } 1834 1835 static void 1836 junk_authdata(void) 1837 { 1838 fido_cred_t *c; 1839 unsigned char *junk; 1840 unsigned char *unset; 1841 1842 junk = malloc(sizeof(authdata)); 1843 assert(junk != NULL); 1844 memcpy(junk, authdata, sizeof(authdata)); 1845 junk[0] = (unsigned char)~junk[0]; 1846 1847 unset = calloc(1, sizeof(aaguid)); 1848 assert(unset != NULL); 1849 1850 c = alloc_cred(); 1851 assert(fido_cred_set_authdata(c, junk, 1852 sizeof(authdata)) == FIDO_ERR_INVALID_ARGUMENT); 1853 assert(fido_cred_authdata_len(c) == 0); 1854 assert(fido_cred_authdata_ptr(c) == NULL); 1855 assert(fido_cred_authdata_raw_len(c) == 0); 1856 assert(fido_cred_authdata_raw_ptr(c) == NULL); 1857 assert(fido_cred_flags(c) == 0); 1858 assert(fido_cred_fmt(c) == NULL); 1859 assert(fido_cred_id_len(c) == 0); 1860 assert(fido_cred_id_ptr(c) == NULL); 1861 assert(fido_cred_pubkey_len(c) == 0); 1862 assert(fido_cred_pubkey_ptr(c) == NULL); 1863 assert(fido_cred_rp_id(c) == NULL); 1864 assert(fido_cred_rp_name(c) == NULL); 1865 assert(fido_cred_sig_len(c) == 0); 1866 assert(fido_cred_sig_ptr(c) == NULL); 1867 assert(fido_cred_x5c_len(c) == 0); 1868 assert(fido_cred_x5c_ptr(c) == NULL); 1869 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1870 assert(memcmp(fido_cred_aaguid_ptr(c), unset, sizeof(aaguid)) == 0); 1871 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1872 free_cred(c); 1873 free(junk); 1874 free(unset); 1875 } 1876 1877 static void 1878 junk_sig(void) 1879 { 1880 fido_cred_t *c; 1881 unsigned char *junk; 1882 1883 junk = malloc(sizeof(sig)); 1884 assert(junk != NULL); 1885 memcpy(junk, sig, sizeof(sig)); 1886 junk[0] = (unsigned char)~junk[0]; 1887 1888 c = alloc_cred(); 1889 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1890 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1891 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1892 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1893 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1894 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1895 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1896 assert(fido_cred_set_sig(c, junk, sizeof(sig)) == FIDO_OK); 1897 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1898 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_SIG); 1899 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1900 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1901 assert(fido_cred_id_len(c) == sizeof(id)); 1902 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1903 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1904 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1905 free_cred(c); 1906 free(junk); 1907 } 1908 1909 static void 1910 junk_x509(void) 1911 { 1912 fido_cred_t *c; 1913 unsigned char *junk; 1914 1915 junk = malloc(sizeof(x509)); 1916 assert(junk != NULL); 1917 memcpy(junk, x509, sizeof(x509)); 1918 junk[0] = (unsigned char)~junk[0]; 1919 1920 c = alloc_cred(); 1921 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1922 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1923 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1924 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1925 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1926 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1927 assert(fido_cred_set_x509(c, junk, sizeof(x509)) == FIDO_OK); 1928 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1929 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1930 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_SIG); 1931 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 1932 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 1933 assert(fido_cred_id_len(c) == sizeof(id)); 1934 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 1935 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1936 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 1937 free_cred(c); 1938 free(junk); 1939 } 1940 1941 /* github issue #6 */ 1942 static void 1943 invalid_type(void) 1944 { 1945 fido_cred_t *c; 1946 unsigned char *unset; 1947 1948 unset = calloc(1, sizeof(aaguid)); 1949 assert(unset != NULL); 1950 1951 c = alloc_cred(); 1952 assert(fido_cred_set_type(c, COSE_RS256) == FIDO_OK); 1953 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 1954 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 1955 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_ERR_INVALID_ARGUMENT); 1956 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 1957 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 1958 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 1959 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 1960 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 1961 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 1962 assert(fido_cred_pubkey_len(c) == 0); 1963 assert(fido_cred_pubkey_ptr(c) == NULL); 1964 assert(fido_cred_id_len(c) == 0); 1965 assert(fido_cred_id_ptr(c) == NULL); 1966 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 1967 assert(memcmp(fido_cred_aaguid_ptr(c), unset, sizeof(aaguid)) == 0); 1968 free_cred(c); 1969 free(unset); 1970 } 1971 1972 /* cbor_serialize_alloc misuse */ 1973 static void 1974 bad_cbor_serialize(void) 1975 { 1976 fido_cred_t *c; 1977 1978 c = alloc_cred(); 1979 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1980 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 1981 assert(fido_cred_authdata_len(c) == sizeof(authdata)); 1982 free_cred(c); 1983 } 1984 1985 static void 1986 duplicate_keys(void) 1987 { 1988 fido_cred_t *c; 1989 1990 c = alloc_cred(); 1991 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 1992 assert(fido_cred_set_authdata(c, authdata_dupkeys, 1993 sizeof(authdata_dupkeys)) == FIDO_ERR_INVALID_ARGUMENT); 1994 free_cred(c); 1995 } 1996 1997 static void 1998 unsorted_keys(void) 1999 { 2000 fido_cred_t *c; 2001 2002 c = alloc_cred(); 2003 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 2004 assert(fido_cred_set_authdata(c, authdata_unsorted_keys, 2005 sizeof(authdata_unsorted_keys)) == FIDO_ERR_INVALID_ARGUMENT); 2006 free_cred(c); 2007 } 2008 2009 static void 2010 wrong_credprot(void) 2011 { 2012 fido_cred_t *c; 2013 2014 c = alloc_cred(); 2015 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 2016 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 2017 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 2018 assert(fido_cred_set_x509(c, x509, sizeof(x509)) == FIDO_OK); 2019 assert(fido_cred_set_sig(c, sig, sizeof(sig)) == FIDO_OK); 2020 assert(fido_cred_set_fmt(c, "packed") == FIDO_OK); 2021 assert(fido_cred_set_prot(c, FIDO_CRED_PROT_UV_OPTIONAL_WITH_ID) == FIDO_OK); 2022 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 2023 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_PARAM); 2024 free_cred(c); 2025 } 2026 2027 static void 2028 raw_authdata(void) 2029 { 2030 fido_cred_t *c; 2031 cbor_item_t *item; 2032 struct cbor_load_result cbor_result; 2033 const unsigned char *ptr; 2034 unsigned char *cbor; 2035 size_t len; 2036 size_t cbor_len; 2037 size_t alloclen; 2038 2039 c = alloc_cred(); 2040 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 2041 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 2042 assert((ptr = fido_cred_authdata_ptr(c)) != NULL); 2043 assert((len = fido_cred_authdata_len(c)) != 0); 2044 assert((item = cbor_load(ptr, len, &cbor_result)) != NULL); 2045 assert(cbor_result.read == len); 2046 assert(cbor_isa_bytestring(item)); 2047 assert((ptr = fido_cred_authdata_raw_ptr(c)) != NULL); 2048 assert((len = fido_cred_authdata_raw_len(c)) != 0); 2049 assert(cbor_bytestring_length(item) == len); 2050 assert(memcmp(ptr, cbor_bytestring_handle(item), len) == 0); 2051 assert((len = fido_cred_authdata_len(c)) != 0); 2052 assert((cbor_len = cbor_serialize_alloc(item, &cbor, &alloclen)) == len); 2053 assert((ptr = cbor_bytestring_handle(item)) != NULL); 2054 assert((len = cbor_bytestring_length(item)) != 0); 2055 assert(fido_cred_set_authdata_raw(c, ptr, len) == FIDO_OK); 2056 assert((ptr = fido_cred_authdata_ptr(c)) != NULL); 2057 assert((len = fido_cred_authdata_len(c)) != 0); 2058 assert(len == cbor_len); 2059 assert(memcmp(cbor, ptr, len) == 0); 2060 assert(cbor_len == sizeof(authdata)); 2061 assert(memcmp(cbor, authdata, cbor_len) == 0); 2062 cbor_decref(&item); 2063 free(cbor); 2064 free_cred(c); 2065 } 2066 2067 static void 2068 fmt_none(void) 2069 { 2070 fido_cred_t *c; 2071 2072 c = alloc_cred(); 2073 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 2074 assert(fido_cred_set_clientdata_hash(c, cdh, sizeof(cdh)) == FIDO_OK); 2075 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 2076 assert(fido_cred_set_authdata(c, authdata, sizeof(authdata)) == FIDO_OK); 2077 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 2078 assert(fido_cred_set_uv(c, FIDO_OPT_FALSE) == FIDO_OK); 2079 assert(fido_cred_set_fmt(c, "none") == FIDO_OK); 2080 assert(fido_cred_verify(c) == FIDO_ERR_INVALID_ARGUMENT); 2081 assert(fido_cred_prot(c) == 0); 2082 assert(fido_cred_pubkey_len(c) == sizeof(pubkey)); 2083 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey, sizeof(pubkey)) == 0); 2084 assert(fido_cred_id_len(c) == sizeof(id)); 2085 assert(memcmp(fido_cred_id_ptr(c), id, sizeof(id)) == 0); 2086 assert(fido_cred_aaguid_len(c) == sizeof(aaguid)); 2087 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid, sizeof(aaguid)) == 0); 2088 free_cred(c); 2089 } 2090 2091 static void 2092 valid_tpm_rs256_cred(void) 2093 { 2094 fido_cred_t *c; 2095 2096 c = alloc_cred(); 2097 assert(fido_cred_set_type(c, COSE_RS256) == FIDO_OK); 2098 assert(fido_cred_set_clientdata(c, cdh, sizeof(cdh)) == FIDO_OK); 2099 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 2100 assert(fido_cred_set_authdata(c, authdata_tpm_rs256, sizeof(authdata_tpm_rs256)) == FIDO_OK); 2101 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 2102 assert(fido_cred_set_uv(c, FIDO_OPT_TRUE) == FIDO_OK); 2103 assert(fido_cred_set_fmt(c, "tpm") == FIDO_OK); 2104 assert(fido_cred_set_attstmt(c, attstmt_tpm_rs256, sizeof(attstmt_tpm_rs256)) == FIDO_OK); 2105 assert(fido_cred_verify(c) == FIDO_OK); 2106 assert(fido_cred_prot(c) == 0); 2107 assert(fido_cred_pubkey_len(c) == sizeof(pubkey_tpm_rs256)); 2108 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey_tpm_rs256, sizeof(pubkey_tpm_rs256)) == 0); 2109 assert(fido_cred_id_len(c) == sizeof(id_tpm_rs256)); 2110 assert(memcmp(fido_cred_id_ptr(c), id_tpm_rs256, sizeof(id_tpm_rs256)) == 0); 2111 assert(fido_cred_aaguid_len(c) == sizeof(aaguid_tpm)); 2112 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid_tpm, sizeof(aaguid_tpm)) == 0); 2113 free_cred(c); 2114 } 2115 2116 static void 2117 valid_tpm_es256_cred(void) 2118 { 2119 fido_cred_t *c; 2120 2121 c = alloc_cred(); 2122 assert(fido_cred_set_type(c, COSE_ES256) == FIDO_OK); 2123 assert(fido_cred_set_clientdata(c, cdh, sizeof(cdh)) == FIDO_OK); 2124 assert(fido_cred_set_rp(c, rp_id, rp_name) == FIDO_OK); 2125 assert(fido_cred_set_authdata(c, authdata_tpm_es256, sizeof(authdata_tpm_es256)) == FIDO_OK); 2126 assert(fido_cred_set_rk(c, FIDO_OPT_FALSE) == FIDO_OK); 2127 assert(fido_cred_set_uv(c, FIDO_OPT_TRUE) == FIDO_OK); 2128 assert(fido_cred_set_fmt(c, "tpm") == FIDO_OK); 2129 assert(fido_cred_set_attstmt(c, attstmt_tpm_es256, sizeof(attstmt_tpm_es256)) == FIDO_OK); 2130 assert(fido_cred_verify(c) == FIDO_OK); 2131 assert(fido_cred_prot(c) == 0); 2132 assert(fido_cred_pubkey_len(c) == sizeof(pubkey_tpm_es256)); 2133 assert(memcmp(fido_cred_pubkey_ptr(c), pubkey_tpm_es256, sizeof(pubkey_tpm_es256)) == 0); 2134 assert(fido_cred_id_len(c) == sizeof(id_tpm_es256)); 2135 assert(memcmp(fido_cred_id_ptr(c), id_tpm_es256, sizeof(id_tpm_es256)) == 0); 2136 assert(fido_cred_aaguid_len(c) == sizeof(aaguid_tpm)); 2137 assert(memcmp(fido_cred_aaguid_ptr(c), aaguid_tpm, sizeof(aaguid_tpm)) == 0); 2138 free_cred(c); 2139 } 2140 2141 int 2142 main(void) 2143 { 2144 fido_init(0); 2145 2146 empty_cred(); 2147 valid_cred(); 2148 no_cdh(); 2149 no_rp_id(); 2150 no_rp_name(); 2151 no_authdata(); 2152 no_x509(); 2153 no_sig(); 2154 no_fmt(); 2155 junk_cdh(); 2156 junk_fmt(); 2157 junk_rp_id(); 2158 junk_rp_name(); 2159 junk_authdata(); 2160 junk_x509(); 2161 junk_sig(); 2162 wrong_options(); 2163 invalid_type(); 2164 bad_cbor_serialize(); 2165 duplicate_keys(); 2166 unsorted_keys(); 2167 wrong_credprot(); 2168 raw_authdata(); 2169 fmt_none(); 2170 valid_tpm_rs256_cred(); 2171 valid_tpm_es256_cred(); 2172 2173 exit(0); 2174 } 2175