xref: /freebsd/contrib/libfido2/regress/cred.c (revision 069ac184)
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