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