1 /* $OpenBSD: tlslegacytest.c,v 1.7 2022/10/02 16:39:39 jsing Exp $ */
2 /*
3  * Copyright (c) 2015, 2016, 2017, 2020 Joel Sing <jsing@openbsd.org>
4  *
5  * Permission to use, copy, modify, and distribute this software for any
6  * purpose with or without fee is hereby granted, provided that the above
7  * copyright notice and this permission notice appear in all copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16  */
17 
18 #include <openssl/ssl.h>
19 
20 #include <err.h>
21 #include <stdio.h>
22 #include <string.h>
23 
24 /* openssl.org:443 */
25 static uint8_t tls12_server_response[] = {
26 	0x16, 0x03, 0x03, 0x00, 0x3d, 0x02, 0x00, 0x00,
27 	0x39, 0x03, 0x03, 0x62, 0x0c, 0x8a, 0x7e, 0x29,
28 	0x60, 0xcb, 0x08, 0xd1, 0xb4, 0x95, 0x68, 0x76,
29 	0xea, 0x4e, 0x0c, 0x94, 0xf2, 0x42, 0x3d, 0xd1,
30 	0x7a, 0xc2, 0xfe, 0x6c, 0xb3, 0xe6, 0x12, 0x8a,
31 	0x33, 0x02, 0x92, 0x00, 0xc0, 0x30, 0x00, 0x00,
32 	0x11, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x0b,
33 	0x00, 0x04, 0x03, 0x00, 0x01, 0x02, 0x00, 0x23,
34 	0x00, 0x00,
35 };
36 
37 /*
38  * outlook.office365.com:587 with starttls - this server response includes
39  * multiple handshake messages contained in a single TLS record.
40  */
41 static uint8_t tls12_server_response_with_cert[] = {
42 	0x16, 0x03, 0x03, 0x0f, 0x2b, 0x02, 0x00, 0x00,
43 	0x4d, 0x03, 0x03, 0x5f, 0x7c, 0x69, 0x42, 0xe1,
44 	0x19, 0xf0, 0x22, 0xfb, 0x71, 0x9a, 0xf1, 0x63,
45 	0x34, 0xbb, 0x61, 0x46, 0xea, 0x5f, 0x0b, 0x5e,
46 	0xb1, 0x4e, 0x37, 0x96, 0x67, 0xff, 0x83, 0xea,
47 	0x0e, 0x16, 0x85, 0x20, 0x3a, 0x1b, 0x00, 0x00,
48 	0x17, 0xe9, 0xac, 0xca, 0x19, 0x61, 0xaf, 0x70,
49 	0x28, 0x3b, 0x18, 0xaa, 0x6c, 0xa0, 0x0f, 0x78,
50 	0xd0, 0x83, 0xfc, 0x5d, 0x78, 0xf9, 0x6d, 0xdb,
51 	0x16, 0x21, 0x15, 0xa2, 0xc0, 0x30, 0x00, 0x00,
52 	0x05, 0xff, 0x01, 0x00, 0x01, 0x00, 0x0b, 0x00,
53 	0x0d, 0x47, 0x00, 0x0d, 0x44, 0x00, 0x08, 0xaf,
54 	0x30, 0x82, 0x08, 0xab, 0x30, 0x82, 0x07, 0x93,
55 	0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0c, 0x6d,
56 	0xea, 0x0b, 0xe1, 0x97, 0x27, 0x60, 0xa1, 0x59,
57 	0xb1, 0x85, 0x60, 0x30, 0x0d, 0x06, 0x09, 0x2a,
58 	0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
59 	0x05, 0x00, 0x30, 0x66, 0x31, 0x0b, 0x30, 0x09,
60 	0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42,
61 	0x45, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55,
62 	0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62,
63 	0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e,
64 	0x76, 0x2d, 0x73, 0x61, 0x31, 0x3c, 0x30, 0x3a,
65 	0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x33, 0x47,
66 	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67,
67 	0x6e, 0x20, 0x4f, 0x72, 0x67, 0x61, 0x6e, 0x69,
68 	0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x56,
69 	0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f,
70 	0x6e, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x53,
71 	0x48, 0x41, 0x32, 0x35, 0x36, 0x20, 0x2d, 0x20,
72 	0x47, 0x33, 0x30, 0x1e, 0x17, 0x0d, 0x32, 0x30,
73 	0x30, 0x38, 0x31, 0x33, 0x32, 0x33, 0x31, 0x38,
74 	0x34, 0x39, 0x5a, 0x17, 0x0d, 0x32, 0x32, 0x30,
75 	0x38, 0x31, 0x34, 0x32, 0x33, 0x31, 0x38, 0x34,
76 	0x39, 0x5a, 0x30, 0x6a, 0x31, 0x0b, 0x30, 0x09,
77 	0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55,
78 	0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
79 	0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68,
80 	0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10,
81 	0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13,
82 	0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64,
83 	0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04,
84 	0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f,
85 	0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72,
86 	0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
87 	0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04,
88 	0x03, 0x13, 0x0b, 0x6f, 0x75, 0x74, 0x6c, 0x6f,
89 	0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x82,
90 	0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
91 	0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05,
92 	0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82,
93 	0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xc9,
94 	0x20, 0x3f, 0x57, 0xb9, 0xf9, 0x71, 0xaa, 0x3c,
95 	0x6a, 0x0a, 0x5d, 0x3f, 0xc9, 0x8d, 0x99, 0xa5,
96 	0x50, 0x26, 0x25, 0x4e, 0xdc, 0x69, 0x52, 0xb3,
97 	0x33, 0x70, 0xe7, 0x72, 0xa2, 0x83, 0x92, 0x54,
98 	0xd1, 0xd4, 0x86, 0x15, 0xf2, 0xc4, 0x65, 0xf8,
99 	0xbc, 0xe5, 0xd2, 0x1e, 0x12, 0x25, 0x9e, 0x75,
100 	0x8e, 0x77, 0xd2, 0x8e, 0x94, 0xca, 0x03, 0x4b,
101 	0xf4, 0xc8, 0xca, 0xe3, 0xe3, 0x9b, 0x66, 0xa3,
102 	0xa1, 0x37, 0x74, 0xcc, 0xfe, 0xc4, 0x1e, 0x64,
103 	0xdc, 0xe3, 0x18, 0xba, 0xc1, 0x7b, 0x39, 0x5b,
104 	0xb1, 0x47, 0xe9, 0x11, 0x92, 0xef, 0xee, 0xe6,
105 	0x08, 0xcd, 0x93, 0x7b, 0x09, 0xc7, 0x39, 0xfe,
106 	0xe5, 0xe2, 0x47, 0x3f, 0x68, 0x78, 0xa4, 0x17,
107 	0x78, 0x13, 0xcb, 0x12, 0x38, 0x9d, 0x89, 0x2b,
108 	0x1f, 0x75, 0x9b, 0x87, 0x5d, 0x53, 0xfc, 0xb0,
109 	0x2a, 0xaf, 0x2d, 0x86, 0x8a, 0x76, 0x3b, 0xce,
110 	0x5e, 0xae, 0x43, 0x74, 0x68, 0xc3, 0x28, 0xbf,
111 	0x10, 0x2f, 0xdd, 0xd9, 0x43, 0x4b, 0x2d, 0xa6,
112 	0xdc, 0x1f, 0x6d, 0x90, 0xd0, 0xce, 0x14, 0x1e,
113 	0x6c, 0xdc, 0x7b, 0x06, 0xe4, 0x7b, 0xa9, 0x81,
114 	0x40, 0xed, 0xde, 0x18, 0xb7, 0xdf, 0x53, 0x61,
115 	0xbc, 0x18, 0x83, 0x11, 0xc7, 0xb4, 0x1b, 0x99,
116 	0xef, 0x14, 0xe4, 0x63, 0x39, 0xe3, 0x5c, 0x2f,
117 	0xe7, 0x89, 0x58, 0x5b, 0xda, 0x03, 0x3a, 0x39,
118 	0x96, 0x8a, 0xca, 0x4f, 0xd8, 0xe3, 0x6c, 0x7f,
119 	0x6e, 0xd3, 0xe7, 0x30, 0x34, 0x9c, 0xdb, 0x8b,
120 	0xe8, 0x6a, 0xa6, 0x08, 0x77, 0x1d, 0x63, 0xd6,
121 	0x57, 0x9d, 0xcd, 0xa7, 0x47, 0x05, 0x39, 0x96,
122 	0x7b, 0xfd, 0x9a, 0x09, 0x99, 0xef, 0x49, 0xb1,
123 	0x89, 0x02, 0xbe, 0x4f, 0xb8, 0xef, 0xa0, 0x04,
124 	0x29, 0x74, 0xfb, 0x9a, 0x7e, 0x9d, 0xa8, 0x10,
125 	0xfb, 0x7e, 0xb0, 0x6c, 0x60, 0x4f, 0x57, 0x02,
126 	0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x05, 0x53,
127 	0x30, 0x82, 0x05, 0x4f, 0x30, 0x0e, 0x06, 0x03,
128 	0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04,
129 	0x03, 0x02, 0x05, 0xa0, 0x30, 0x81, 0x9e, 0x06,
130 	0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01,
131 	0x01, 0x04, 0x81, 0x91, 0x30, 0x81, 0x8e, 0x30,
132 	0x4b, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
133 	0x07, 0x30, 0x02, 0x86, 0x3f, 0x68, 0x74, 0x74,
134 	0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x65, 0x63, 0x75,
135 	0x72, 0x65, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61,
136 	0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f,
137 	0x6d, 0x2f, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74,
138 	0x2f, 0x67, 0x73, 0x6f, 0x72, 0x67, 0x61, 0x6e,
139 	0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x76,
140 	0x61, 0x6c, 0x73, 0x68, 0x61, 0x32, 0x67, 0x33,
141 	0x2e, 0x63, 0x72, 0x74, 0x30, 0x3f, 0x06, 0x08,
142 	0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01,
143 	0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
144 	0x2f, 0x6f, 0x63, 0x73, 0x70, 0x32, 0x2e, 0x67,
145 	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67,
146 	0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x73,
147 	0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61,
148 	0x74, 0x69, 0x6f, 0x6e, 0x76, 0x61, 0x6c, 0x73,
149 	0x68, 0x61, 0x32, 0x67, 0x33, 0x30, 0x56, 0x06,
150 	0x03, 0x55, 0x1d, 0x20, 0x04, 0x4f, 0x30, 0x4d,
151 	0x30, 0x41, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04,
152 	0x01, 0xa0, 0x32, 0x01, 0x14, 0x30, 0x34, 0x30,
153 	0x32, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
154 	0x07, 0x02, 0x01, 0x16, 0x26, 0x68, 0x74, 0x74,
155 	0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77,
156 	0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x73,
157 	0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
158 	0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f,
159 	0x72, 0x79, 0x2f, 0x30, 0x08, 0x06, 0x06, 0x67,
160 	0x81, 0x0c, 0x01, 0x02, 0x02, 0x30, 0x09, 0x06,
161 	0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00,
162 	0x30, 0x46, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04,
163 	0x3f, 0x30, 0x3d, 0x30, 0x3b, 0xa0, 0x39, 0xa0,
164 	0x37, 0x86, 0x35, 0x68, 0x74, 0x74, 0x70, 0x3a,
165 	0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c,
166 	0x6f, 0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e,
167 	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x73, 0x6f,
168 	0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
169 	0x69, 0x6f, 0x6e, 0x76, 0x61, 0x6c, 0x73, 0x68,
170 	0x61, 0x32, 0x67, 0x33, 0x2e, 0x63, 0x72, 0x6c,
171 	0x30, 0x82, 0x02, 0x10, 0x06, 0x03, 0x55, 0x1d,
172 	0x11, 0x04, 0x82, 0x02, 0x07, 0x30, 0x82, 0x02,
173 	0x03, 0x82, 0x0b, 0x6f, 0x75, 0x74, 0x6c, 0x6f,
174 	0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x82, 0x16,
175 	0x2a, 0x2e, 0x63, 0x6c, 0x6f, 0x2e, 0x66, 0x6f,
176 	0x6f, 0x74, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x64,
177 	0x6e, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x82, 0x0d,
178 	0x2a, 0x2e, 0x68, 0x6f, 0x74, 0x6d, 0x61, 0x69,
179 	0x6c, 0x2e, 0x63, 0x6f, 0x6d, 0x82, 0x16, 0x2a,
180 	0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
181 	0x6c, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f,
182 	0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x82, 0x0a, 0x2a,
183 	0x2e, 0x6c, 0x69, 0x76, 0x65, 0x2e, 0x63, 0x6f,
184 	0x6d, 0x82, 0x16, 0x2a, 0x2e, 0x6e, 0x72, 0x62,
185 	0x2e, 0x66, 0x6f, 0x6f, 0x74, 0x70, 0x72, 0x69,
186 	0x6e, 0x74, 0x64, 0x6e, 0x73, 0x2e, 0x63, 0x6f,
187 	0x6d, 0x82, 0x0c, 0x2a, 0x2e, 0x6f, 0x66, 0x66,
188 	0x69, 0x63, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x82,
189 	0x0f, 0x2a, 0x2e, 0x6f, 0x66, 0x66, 0x69, 0x63,
190 	0x65, 0x33, 0x36, 0x35, 0x2e, 0x63, 0x6f, 0x6d,
191 	0x82, 0x0d, 0x2a, 0x2e, 0x6f, 0x75, 0x74, 0x6c,
192 	0x6f, 0x6f, 0x6b, 0x2e, 0x63, 0x6f, 0x6d, 0x82,
193 	0x17, 0x2a, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f,
194 	0x6f, 0x6b, 0x2e, 0x6f, 0x66, 0x66, 0x69, 0x63,
195 	0x65, 0x33, 0x36, 0x35, 0x2e, 0x63, 0x6f, 0x6d,
196 	0x82, 0x1b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68,
197 	0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x6f, 0x75, 0x74,
198 	0x6c, 0x6f, 0x6f, 0x6b, 0x2e, 0x6c, 0x69, 0x76,
199 	0x65, 0x2e, 0x6e, 0x65, 0x74, 0x82, 0x1d, 0x61,
200 	0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e,
201 	0x74, 0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f,
202 	0x6b, 0x2e, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65,
203 	0x2e, 0x6e, 0x65, 0x74, 0x82, 0x20, 0x61, 0x74,
204 	0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74,
205 	0x2e, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f, 0x6b,
206 	0x2e, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x70,
207 	0x70, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x82, 0x16,
208 	0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65,
209 	0x6e, 0x74, 0x73, 0x2e, 0x6f, 0x66, 0x66, 0x69,
210 	0x63, 0x65, 0x2e, 0x6e, 0x65, 0x74, 0x82, 0x1a,
211 	0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65,
212 	0x6e, 0x74, 0x73, 0x2d, 0x73, 0x64, 0x66, 0x2e,
213 	0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x2e, 0x6e,
214 	0x65, 0x74, 0x82, 0x1d, 0x63, 0x63, 0x73, 0x2e,
215 	0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x6d, 0x69,
216 	0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x6f,
217 	0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x63, 0x6f,
218 	0x6d, 0x82, 0x21, 0x63, 0x63, 0x73, 0x2d, 0x73,
219 	0x64, 0x66, 0x2e, 0x6c, 0x6f, 0x67, 0x69, 0x6e,
220 	0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f,
221 	0x66, 0x74, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
222 	0x2e, 0x63, 0x6f, 0x6d, 0x82, 0x0b, 0x68, 0x6f,
223 	0x74, 0x6d, 0x61, 0x69, 0x6c, 0x2e, 0x63, 0x6f,
224 	0x6d, 0x82, 0x16, 0x6d, 0x61, 0x69, 0x6c, 0x2e,
225 	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
226 	0x2e, 0x6c, 0x69, 0x76, 0x65, 0x2e, 0x63, 0x6f,
227 	0x6d, 0x82, 0x0d, 0x6f, 0x66, 0x66, 0x69, 0x63,
228 	0x65, 0x33, 0x36, 0x35, 0x2e, 0x63, 0x6f, 0x6d,
229 	0x82, 0x12, 0x6f, 0x75, 0x74, 0x6c, 0x6f, 0x6f,
230 	0x6b, 0x2e, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65,
231 	0x2e, 0x63, 0x6f, 0x6d, 0x82, 0x14, 0x73, 0x75,
232 	0x62, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x2e,
233 	0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x2e, 0x63,
234 	0x6f, 0x6d, 0x82, 0x18, 0x73, 0x75, 0x62, 0x73,
235 	0x74, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x73, 0x64,
236 	0x66, 0x2e, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65,
237 	0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x1d, 0x06, 0x03,
238 	0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06,
239 	0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03,
240 	0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05,
241 	0x07, 0x03, 0x02, 0x30, 0x1f, 0x06, 0x03, 0x55,
242 	0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14,
243 	0x68, 0x86, 0xb8, 0x7d, 0x7a, 0xd9, 0x6d, 0x49,
244 	0x6b, 0x87, 0x2f, 0x18, 0x8b, 0x15, 0x34, 0x6c,
245 	0xd7, 0xb4, 0x7a, 0x0e, 0x30, 0x1d, 0x06, 0x03,
246 	0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x8a,
247 	0x7c, 0x73, 0x44, 0x70, 0xa8, 0x4d, 0x83, 0x25,
248 	0x6f, 0xa6, 0x53, 0xda, 0x42, 0x52, 0x96, 0xc9,
249 	0x15, 0x71, 0x21, 0x30, 0x82, 0x01, 0x7c, 0x06,
250 	0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xd6, 0x79,
251 	0x02, 0x04, 0x02, 0x04, 0x82, 0x01, 0x6c, 0x04,
252 	0x82, 0x01, 0x68, 0x01, 0x66, 0x00, 0x76, 0x00,
253 	0x22, 0x45, 0x45, 0x07, 0x59, 0x55, 0x24, 0x56,
254 	0x96, 0x3f, 0xa1, 0x2f, 0xf1, 0xf7, 0x6d, 0x86,
255 	0xe0, 0x23, 0x26, 0x63, 0xad, 0xc0, 0x4b, 0x7f,
256 	0x5d, 0xc6, 0x83, 0x5c, 0x6e, 0xe2, 0x0f, 0x02,
257 	0x00, 0x00, 0x01, 0x73, 0xea, 0x1e, 0x7d, 0x2f,
258 	0x00, 0x00, 0x04, 0x03, 0x00, 0x47, 0x30, 0x45,
259 	0x02, 0x21, 0x00, 0xf4, 0x50, 0x8f, 0xe7, 0x38,
260 	0xc9, 0x7a, 0xd1, 0xf7, 0xf7, 0x69, 0xc5, 0x05,
261 	0xea, 0x8e, 0x03, 0x80, 0x2c, 0x87, 0x06, 0x03,
262 	0xb6, 0x9b, 0xe6, 0xa5, 0x83, 0x2f, 0xb9, 0xaf,
263 	0x7b, 0xb4, 0xac, 0x02, 0x20, 0x51, 0xa6, 0x8f,
264 	0xe8, 0xe5, 0x6c, 0xa7, 0xff, 0x16, 0x01, 0x7e,
265 	0x15, 0x42, 0x11, 0x31, 0xdc, 0xdc, 0xc7, 0x37,
266 	0x7c, 0x64, 0x2c, 0xac, 0xdd, 0x42, 0xbb, 0x3c,
267 	0x79, 0x31, 0x74, 0xcc, 0x9d, 0x00, 0x75, 0x00,
268 	0x29, 0x79, 0xbe, 0xf0, 0x9e, 0x39, 0x39, 0x21,
269 	0xf0, 0x56, 0x73, 0x9f, 0x63, 0xa5, 0x77, 0xe5,
270 	0xbe, 0x57, 0x7d, 0x9c, 0x60, 0x0a, 0xf8, 0xf9,
271 	0x4d, 0x5d, 0x26, 0x5c, 0x25, 0x5d, 0xc7, 0x84,
272 	0x00, 0x00, 0x01, 0x73, 0xea, 0x1e, 0x7a, 0xa7,
273 	0x00, 0x00, 0x04, 0x03, 0x00, 0x46, 0x30, 0x44,
274 	0x02, 0x20, 0x03, 0xf1, 0x19, 0xd7, 0x0f, 0x2f,
275 	0xc4, 0xa9, 0x84, 0xa0, 0x33, 0xd4, 0x76, 0xa6,
276 	0xee, 0xf1, 0xae, 0xe0, 0x03, 0xe7, 0xae, 0x98,
277 	0x43, 0x17, 0xb0, 0x0f, 0xfb, 0x12, 0xbb, 0x13,
278 	0xda, 0x34, 0x02, 0x20, 0x10, 0xe6, 0xa9, 0x1d,
279 	0x8b, 0x1c, 0x64, 0xd4, 0xc9, 0xf7, 0xc0, 0x3d,
280 	0x3c, 0x77, 0x49, 0xb1, 0x08, 0x3d, 0x1d, 0x5e,
281 	0x34, 0xf9, 0xd9, 0x10, 0x7c, 0x74, 0x6b, 0x18,
282 	0xc6, 0x5e, 0x6d, 0x07, 0x00, 0x75, 0x00, 0x55,
283 	0x81, 0xd4, 0xc2, 0x16, 0x90, 0x36, 0x01, 0x4a,
284 	0xea, 0x0b, 0x9b, 0x57, 0x3c, 0x53, 0xf0, 0xc0,
285 	0xe4, 0x38, 0x78, 0x70, 0x25, 0x08, 0x17, 0x2f,
286 	0xa3, 0xaa, 0x1d, 0x07, 0x13, 0xd3, 0x0c, 0x00,
287 	0x00, 0x01, 0x73, 0xea, 0x1e, 0x7d, 0xae, 0x00,
288 	0x00, 0x04, 0x03, 0x00, 0x46, 0x30, 0x44, 0x02,
289 	0x20, 0x26, 0x21, 0x64, 0xdb, 0xa6, 0xe2, 0x3d,
290 	0x32, 0x7d, 0x9f, 0xa8, 0xae, 0xb7, 0x29, 0xb7,
291 	0x42, 0x9b, 0x49, 0xaa, 0xf5, 0xa5, 0xc0, 0x12,
292 	0x01, 0xa1, 0xb6, 0xe7, 0xf2, 0x01, 0xd4, 0x2f,
293 	0x45, 0x02, 0x20, 0x4e, 0x19, 0xba, 0x47, 0x75,
294 	0x8b, 0x49, 0xd7, 0x4b, 0xba, 0x04, 0x62, 0xdd,
295 	0xa2, 0xb7, 0x6b, 0x05, 0xd0, 0x01, 0x1f, 0x7c,
296 	0x36, 0x17, 0x27, 0x29, 0xb2, 0x17, 0x1c, 0x7f,
297 	0x10, 0x81, 0x8a, 0x30, 0x0d, 0x06, 0x09, 0x2a,
298 	0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
299 	0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x26,
300 	0xf4, 0xa3, 0x77, 0x1d, 0xdc, 0x9e, 0xc4, 0x1a,
301 	0x88, 0x23, 0x30, 0x8c, 0xe1, 0x14, 0xf9, 0x62,
302 	0x0e, 0xbf, 0xad, 0x24, 0xc9, 0xab, 0xab, 0xd0,
303 	0x68, 0x8b, 0xbc, 0xf1, 0xec, 0x1c, 0xd0, 0x96,
304 	0xad, 0xf9, 0x5f, 0xdd, 0xe0, 0xee, 0xa8, 0xe0,
305 	0x2c, 0x3a, 0x19, 0xa5, 0x68, 0x0c, 0x6e, 0xfe,
306 	0xe6, 0x80, 0xce, 0xa3, 0x3b, 0x6c, 0x00, 0x88,
307 	0x5c, 0xbf, 0x3c, 0xd8, 0x68, 0x08, 0x36, 0xb9,
308 	0x9e, 0x84, 0x9b, 0x5f, 0x97, 0xfb, 0x77, 0xea,
309 	0x72, 0xfb, 0x73, 0x47, 0x00, 0xb0, 0xa8, 0x7c,
310 	0x64, 0x38, 0xf1, 0xcc, 0xc0, 0x29, 0x71, 0x67,
311 	0x65, 0x76, 0x4c, 0x80, 0x58, 0x97, 0xc8, 0x62,
312 	0x63, 0x3e, 0xf1, 0x3e, 0xc0, 0x0e, 0x48, 0x5f,
313 	0x55, 0x21, 0x8f, 0x96, 0x68, 0xbd, 0x41, 0x14,
314 	0x7a, 0x0b, 0x8c, 0x31, 0x5b, 0x39, 0xac, 0xa3,
315 	0xa0, 0x99, 0x58, 0x24, 0xfa, 0xd9, 0x19, 0x32,
316 	0x1c, 0x9f, 0x2d, 0xa9, 0xed, 0xb9, 0x97, 0xa4,
317 	0x66, 0x30, 0x29, 0xd8, 0x82, 0xa2, 0xf5, 0xfc,
318 	0x6d, 0x10, 0xf1, 0xac, 0x1d, 0x3f, 0xfb, 0xde,
319 	0xa1, 0x0e, 0xb6, 0x84, 0x90, 0xd4, 0x55, 0x5c,
320 	0x21, 0x1b, 0x1f, 0x21, 0x45, 0x92, 0xc5, 0x9a,
321 	0x47, 0x05, 0x0f, 0xb8, 0x1c, 0x78, 0x6e, 0xb9,
322 	0x6b, 0xa3, 0xa9, 0x8d, 0xb1, 0x59, 0xff, 0xf4,
323 	0xe6, 0x71, 0x77, 0x38, 0x12, 0xfe, 0x41, 0x8f,
324 	0x04, 0x92, 0x08, 0x3f, 0x32, 0x2a, 0x92, 0x5e,
325 	0x0a, 0x7b, 0x7e, 0x04, 0xee, 0x24, 0x10, 0x39,
326 	0xf3, 0xac, 0x5e, 0x04, 0x93, 0x91, 0xa2, 0x8f,
327 	0x90, 0x04, 0x33, 0x5c, 0x5c, 0x94, 0xb3, 0x80,
328 	0x2b, 0x43, 0xbf, 0xe3, 0x74, 0x64, 0x20, 0xf4,
329 	0x00, 0xb2, 0x6c, 0x7b, 0xa8, 0x77, 0xfb, 0x74,
330 	0x35, 0xce, 0xdd, 0xb6, 0x5f, 0x83, 0x18, 0xc4,
331 	0xe7, 0x31, 0x1a, 0x8d, 0x30, 0x0d, 0xc4, 0x00,
332 	0x04, 0x8f, 0x30, 0x82, 0x04, 0x8b, 0x30, 0x82,
333 	0x03, 0x73, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02,
334 	0x0e, 0x47, 0x07, 0xb1, 0x01, 0x9a, 0x0c, 0x57,
335 	0xad, 0x39, 0xb3, 0xe1, 0x7d, 0xa9, 0xf9, 0x30,
336 	0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
337 	0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x57,
338 	0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04,
339 	0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30,
340 	0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10,
341 	0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69,
342 	0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61,
343 	0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04,
344 	0x0b, 0x13, 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20,
345 	0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03,
346 	0x55, 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f,
347 	0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20,
348 	0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30,
349 	0x1e, 0x17, 0x0d, 0x31, 0x35, 0x30, 0x39, 0x30,
350 	0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a,
351 	0x17, 0x0d, 0x32, 0x35, 0x30, 0x39, 0x30, 0x34,
352 	0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x30,
353 	0x66, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55,
354 	0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19,
355 	0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13,
356 	0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53,
357 	0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73,
358 	0x61, 0x31, 0x3c, 0x30, 0x3a, 0x06, 0x03, 0x55,
359 	0x04, 0x03, 0x13, 0x33, 0x47, 0x6c, 0x6f, 0x62,
360 	0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x4f,
361 	0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74,
362 	0x69, 0x6f, 0x6e, 0x20, 0x56, 0x61, 0x6c, 0x69,
363 	0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x43,
364 	0x41, 0x20, 0x2d, 0x20, 0x53, 0x48, 0x41, 0x32,
365 	0x35, 0x36, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x30,
366 	0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
367 	0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
368 	0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
369 	0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
370 	0xc9, 0x86, 0xa2, 0x05, 0x3e, 0xec, 0x77, 0x4d,
371 	0x79, 0x42, 0x81, 0xf2, 0xc5, 0x46, 0xa9, 0xc2,
372 	0x9b, 0xf9, 0x57, 0xa9, 0x48, 0xdd, 0x3c, 0x3b,
373 	0xe2, 0x16, 0x47, 0x83, 0x15, 0x0c, 0x36, 0x88,
374 	0x61, 0xb3, 0xc8, 0xb9, 0xd5, 0x20, 0x97, 0xb6,
375 	0xfe, 0x07, 0x30, 0x01, 0x9e, 0x01, 0x3a, 0xf9,
376 	0x50, 0x87, 0xa0, 0x4f, 0x60, 0xcc, 0x90, 0xf6,
377 	0xdd, 0x1f, 0xa6, 0xc7, 0x55, 0x00, 0x6c, 0x54,
378 	0x31, 0x5f, 0x02, 0x9a, 0xf7, 0x7f, 0x07, 0x9a,
379 	0xd2, 0x22, 0x53, 0x05, 0xcd, 0x9f, 0xc7, 0xbb,
380 	0x7b, 0x59, 0x3b, 0x8a, 0xb2, 0x93, 0x78, 0x0d,
381 	0x43, 0x02, 0x92, 0x76, 0xa5, 0x29, 0xf8, 0x7c,
382 	0x9d, 0x5c, 0x3a, 0xa2, 0xf8, 0x52, 0x72, 0x22,
383 	0x45, 0x91, 0xfd, 0x90, 0x12, 0x28, 0x4d, 0x75,
384 	0xe4, 0xdd, 0xaa, 0x79, 0x58, 0x68, 0x6f, 0x2a,
385 	0x7e, 0x7b, 0xef, 0xd1, 0x9e, 0x7f, 0x52, 0xdc,
386 	0xcb, 0x1c, 0x48, 0xe2, 0x3e, 0x4d, 0x5c, 0x47,
387 	0x7a, 0xb4, 0xf1, 0xce, 0xff, 0xd9, 0x60, 0x2b,
388 	0x77, 0xd1, 0x62, 0x22, 0x2d, 0xa9, 0x5a, 0x06,
389 	0x16, 0xee, 0x37, 0x6a, 0x51, 0xcf, 0x8e, 0xa5,
390 	0xd1, 0x6e, 0x70, 0x4a, 0xf0, 0xd8, 0x63, 0x60,
391 	0x6a, 0x72, 0x55, 0xd7, 0xf1, 0x99, 0x38, 0x86,
392 	0x44, 0x67, 0x18, 0xe0, 0x71, 0x8e, 0xc1, 0x40,
393 	0x6d, 0x85, 0xda, 0x4b, 0xdd, 0x31, 0x73, 0xbc,
394 	0x32, 0xcc, 0x6f, 0x8e, 0x7b, 0xb9, 0x8d, 0x4b,
395 	0x80, 0xda, 0xb9, 0xc7, 0xc6, 0x24, 0x83, 0x5e,
396 	0x32, 0xfb, 0x87, 0xe9, 0x8b, 0x61, 0x67, 0xa2,
397 	0x99, 0x76, 0xdb, 0xa5, 0xaa, 0xb4, 0xe8, 0x6c,
398 	0x41, 0x9f, 0x5f, 0x2a, 0xb3, 0xd5, 0x7d, 0xd7,
399 	0x92, 0xc8, 0x27, 0x4b, 0xec, 0x1f, 0xda, 0x05,
400 	0x6d, 0x88, 0x73, 0x8f, 0x06, 0xb2, 0x38, 0x3d,
401 	0x03, 0xa2, 0xe1, 0x87, 0x86, 0x3c, 0xc6, 0xa1,
402 	0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01,
403 	0x44, 0x30, 0x82, 0x01, 0x40, 0x30, 0x0e, 0x06,
404 	0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04,
405 	0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x1d, 0x06,
406 	0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14,
407 	0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07,
408 	0x03, 0x01, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
409 	0x05, 0x07, 0x03, 0x02, 0x30, 0x12, 0x06, 0x03,
410 	0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08,
411 	0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00,
412 	0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04,
413 	0x16, 0x04, 0x14, 0x68, 0x86, 0xb8, 0x7d, 0x7a,
414 	0xd9, 0x6d, 0x49, 0x6b, 0x87, 0x2f, 0x18, 0x8b,
415 	0x15, 0x34, 0x6c, 0xd7, 0xb4, 0x7a, 0x0e, 0x30,
416 	0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18,
417 	0x30, 0x16, 0x80, 0x14, 0x60, 0x7b, 0x66, 0x1a,
418 	0x45, 0x0d, 0x97, 0xca, 0x89, 0x50, 0x2f, 0x7d,
419 	0x04, 0xcd, 0x34, 0xa8, 0xff, 0xfc, 0xfd, 0x4b,
420 	0x30, 0x3d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
421 	0x05, 0x07, 0x01, 0x01, 0x04, 0x31, 0x30, 0x2f,
422 	0x30, 0x2d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05,
423 	0x05, 0x07, 0x30, 0x01, 0x86, 0x21, 0x68, 0x74,
424 	0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73,
425 	0x70, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
426 	0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
427 	0x2f, 0x72, 0x6f, 0x6f, 0x74, 0x72, 0x31, 0x30,
428 	0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c,
429 	0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24,
430 	0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
431 	0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x67, 0x6c, 0x6f,
432 	0x62, 0x61, 0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e,
433 	0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x6f, 0x6f, 0x74,
434 	0x2e, 0x63, 0x72, 0x6c, 0x30, 0x47, 0x06, 0x03,
435 	0x55, 0x1d, 0x20, 0x04, 0x40, 0x30, 0x3e, 0x30,
436 	0x3c, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30,
437 	0x34, 0x30, 0x32, 0x06, 0x08, 0x2b, 0x06, 0x01,
438 	0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x26, 0x68,
439 	0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77,
440 	0x77, 0x77, 0x2e, 0x67, 0x6c, 0x6f, 0x62, 0x61,
441 	0x6c, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f,
442 	0x6d, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69,
443 	0x74, 0x6f, 0x72, 0x79, 0x2f, 0x30, 0x0d, 0x06,
444 	0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
445 	0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01,
446 	0x00, 0x9a, 0xb9, 0x82, 0x1c, 0xdd, 0x83, 0x83,
447 	0x8b, 0x92, 0xc0, 0xc4, 0xed, 0x01, 0xad, 0x84,
448 	0xfc, 0x4e, 0xee, 0x6d, 0x9c, 0x1d, 0x01, 0xfa,
449 	0x52, 0x14, 0xdb, 0xd8, 0xc2, 0x10, 0x63, 0x9f,
450 	0x6b, 0x39, 0x9a, 0xc7, 0x1c, 0x3c, 0xa0, 0xaa,
451 	0xe3, 0x19, 0x3a, 0xfc, 0x64, 0x46, 0x2a, 0xef,
452 	0x35, 0x26, 0x03, 0xf6, 0x05, 0x67, 0xfa, 0x6e,
453 	0x74, 0xe1, 0x46, 0xfb, 0x40, 0xd8, 0x6f, 0xae,
454 	0x2d, 0x39, 0x21, 0x74, 0x86, 0x9f, 0x00, 0x05,
455 	0x1a, 0x3f, 0x2f, 0x93, 0x5b, 0xd4, 0xa4, 0x45,
456 	0xbc, 0x3d, 0x0c, 0x29, 0x17, 0x5a, 0xd3, 0xfb,
457 	0x68, 0xa6, 0x0f, 0xe0, 0x00, 0x68, 0x79, 0xb0,
458 	0x4c, 0xb1, 0x45, 0x8b, 0xc8, 0x85, 0x8c, 0x67,
459 	0x0e, 0x8c, 0x7d, 0x54, 0xf8, 0xb0, 0x75, 0xce,
460 	0x0a, 0xac, 0x1d, 0xd7, 0x6b, 0x44, 0xac, 0xfe,
461 	0x1b, 0xd4, 0xa6, 0x98, 0x21, 0x09, 0x3e, 0xa2,
462 	0x4b, 0x33, 0xba, 0xba, 0x4b, 0x12, 0xa8, 0x6b,
463 	0x57, 0x27, 0x9d, 0xfa, 0x94, 0x80, 0xb4, 0x68,
464 	0x4c, 0x77, 0x60, 0xff, 0xd7, 0x29, 0x5a, 0x38,
465 	0x3d, 0xce, 0x2d, 0x4b, 0x08, 0x56, 0x9f, 0x69,
466 	0xcb, 0x7b, 0xd8, 0xe2, 0x36, 0xf9, 0x37, 0x69,
467 	0xc5, 0xce, 0x36, 0x97, 0x1c, 0xba, 0x0d, 0x3f,
468 	0x15, 0xb3, 0x65, 0xa0, 0xec, 0x74, 0x12, 0xbd,
469 	0xb3, 0xad, 0xe8, 0xde, 0x9e, 0xa1, 0xec, 0xd3,
470 	0xbf, 0xa9, 0xe0, 0xa5, 0x91, 0x6d, 0x83, 0x59,
471 	0x12, 0x56, 0x2f, 0x13, 0xa6, 0x7e, 0x79, 0x73,
472 	0xa1, 0xa3, 0x89, 0xd5, 0xe1, 0xa5, 0x8c, 0xce,
473 	0x2d, 0xac, 0x8a, 0xcf, 0x62, 0x16, 0x65, 0xcd,
474 	0xd9, 0xee, 0xa8, 0xb6, 0x40, 0x08, 0xb5, 0x7c,
475 	0x50, 0xf9, 0x37, 0x82, 0x7a, 0xa4, 0x0b, 0x34,
476 	0x66, 0xec, 0xe9, 0x97, 0x57, 0x1f, 0x8a, 0x67,
477 	0x3e, 0x81, 0xbc, 0x3b, 0x35, 0xd3, 0x2a, 0x48,
478 	0x0c, 0x0c, 0x00, 0x01, 0x69, 0x03, 0x00, 0x18,
479 	0x61, 0x04, 0xb7, 0xa9, 0xbd, 0x74, 0x71, 0xd5,
480 	0x68, 0xbf, 0xd8, 0xa6, 0x84, 0x12, 0xaf, 0x8f,
481 	0xd4, 0x2c, 0xcf, 0xf9, 0x72, 0x2b, 0x8c, 0x6c,
482 	0x73, 0xa3, 0x13, 0x74, 0xdb, 0x83, 0x3e, 0xa6,
483 	0xf4, 0x1b, 0xee, 0xa9, 0x34, 0xe5, 0x65, 0xa7,
484 	0xaf, 0xef, 0xf2, 0xac, 0xfb, 0x87, 0xb4, 0xdb,
485 	0x8b, 0x05, 0x4f, 0xe8, 0x25, 0x3d, 0x32, 0x65,
486 	0xda, 0x47, 0xd8, 0xd2, 0x86, 0xad, 0x9b, 0x37,
487 	0xbc, 0x45, 0xef, 0xb6, 0x91, 0xa2, 0x71, 0x2f,
488 	0x13, 0x68, 0xfa, 0xa7, 0x20, 0xe4, 0x8a, 0xa8,
489 	0x9b, 0xbe, 0xf6, 0x7c, 0xc8, 0x16, 0xd4, 0x50,
490 	0x9d, 0x63, 0xb3, 0xf4, 0x6e, 0xd3, 0x8f, 0x32,
491 	0x68, 0x66, 0x04, 0x01, 0x01, 0x00, 0xaa, 0xcb,
492 	0x90, 0xbd, 0x94, 0x10, 0xab, 0xfc, 0x30, 0x1d,
493 	0x68, 0x1c, 0xb4, 0x21, 0xcf, 0x73, 0xa5, 0x4b,
494 	0x20, 0x94, 0xde, 0x66, 0x99, 0x54, 0x3f, 0xba,
495 	0x40, 0x58, 0x50, 0xe3, 0x64, 0x53, 0x90, 0x9e,
496 	0xf8, 0x67, 0xcc, 0x85, 0x4a, 0xdc, 0xd8, 0xd7,
497 	0xc8, 0xb5, 0xe0, 0x92, 0x02, 0x6b, 0xa8, 0x76,
498 	0x67, 0xc5, 0xae, 0x12, 0x56, 0xff, 0xd1, 0xda,
499 	0xc0, 0x48, 0x17, 0x99, 0xc9, 0xbe, 0x02, 0xc6,
500 	0x9e, 0x5c, 0xd9, 0x44, 0x3f, 0x06, 0xbd, 0x98,
501 	0xe3, 0x4d, 0x46, 0x10, 0xe8, 0x20, 0xed, 0x7b,
502 	0xcd, 0x73, 0xed, 0x03, 0x6a, 0x4c, 0x49, 0xaf,
503 	0xbe, 0xa3, 0xe0, 0xab, 0x9a, 0xb8, 0xf8, 0x06,
504 	0x25, 0x31, 0x8d, 0x32, 0x44, 0xfd, 0xd6, 0xb0,
505 	0xd4, 0x6c, 0x9a, 0x2a, 0x0f, 0xab, 0xe2, 0x13,
506 	0x10, 0x6d, 0x41, 0x0b, 0x97, 0x74, 0xa0, 0x04,
507 	0x16, 0x60, 0xf1, 0x8e, 0x74, 0xf3, 0x91, 0x75,
508 	0x2b, 0x92, 0x2b, 0xc7, 0x5b, 0x6f, 0x1d, 0x70,
509 	0xe2, 0xc6, 0x9a, 0x7d, 0x66, 0x55, 0x98, 0x01,
510 	0x71, 0xb8, 0xdd, 0xf4, 0x70, 0xc9, 0x74, 0x56,
511 	0xcc, 0xa5, 0x2c, 0x51, 0x70, 0x72, 0xc2, 0x44,
512 	0xb9, 0x59, 0xc3, 0xc3, 0xf8, 0x29, 0x4e, 0x79,
513 	0x40, 0x9b, 0x30, 0x35, 0x66, 0xb2, 0xd8, 0x7d,
514 	0xfe, 0x65, 0x6b, 0xf0, 0x17, 0xa3, 0x13, 0xc7,
515 	0xc7, 0xc6, 0x48, 0xb2, 0xae, 0x4f, 0x26, 0x0b,
516 	0x8a, 0x40, 0xaa, 0x06, 0x65, 0x8a, 0x95, 0x00,
517 	0xc4, 0xc9, 0xfd, 0x69, 0x0a, 0xa9, 0x0a, 0x18,
518 	0xff, 0x95, 0x40, 0xab, 0x84, 0x75, 0xfe, 0x11,
519 	0xb1, 0x6f, 0xca, 0x5e, 0xf7, 0xe4, 0x1d, 0x8d,
520 	0x08, 0x1c, 0xd3, 0x95, 0xf4, 0x9b, 0x17, 0x41,
521 	0xa8, 0x8f, 0x6e, 0xfa, 0x6c, 0x43, 0x60, 0x39,
522 	0x0a, 0xa2, 0x7e, 0xdf, 0x3e, 0x74, 0xc2, 0xbf,
523 	0xaf, 0x96, 0x96, 0xbd, 0x21, 0x4b, 0x0d, 0x00,
524 	0x00, 0x1a, 0x03, 0x01, 0x02, 0x40, 0x00, 0x12,
525 	0x04, 0x01, 0x05, 0x01, 0x02, 0x01, 0x04, 0x03,
526 	0x05, 0x03, 0x02, 0x03, 0x02, 0x02, 0x06, 0x01,
527 	0x06, 0x03, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
528 };
529 
530 struct tlslegacy_client_test {
531 	const unsigned char *desc;
532 	unsigned char *server_response;
533 	const size_t server_response_len;
534 	const SSL_METHOD *(*ssl_method)(void);
535 	int want_state;
536 };
537 
538 static struct tlslegacy_client_test tlslegacy_client_tests[] = {
539 	{
540 		.desc = "TLSv1.2 legacy fallback",
541 		.server_response = tls12_server_response,
542 		.server_response_len = sizeof(tls12_server_response),
543 		.ssl_method = TLS_client_method,
544 		.want_state = SSL3_ST_CR_CERT_A,
545 	},
546 	{
547 		.desc = "TLSv1.2 legacy fallback with server cert",
548 		.server_response = tls12_server_response_with_cert,
549 		.server_response_len = sizeof(tls12_server_response_with_cert),
550 		.ssl_method = TLS_client_method,
551 		.want_state = SSL3_ST_CR_KEY_EXCH_B,
552 	},
553 };
554 
555 #define N_TLSLEGACY_CLIENT_TESTS \
556     (sizeof(tlslegacy_client_tests) / sizeof(*tlslegacy_client_tests))
557 
558 static int
559 tlslegacy_client_test(int testno, struct tlslegacy_client_test *tct)
560 {
561 	BIO *rbio = NULL, *wbio = NULL;
562 	SSL_CTX *ssl_ctx = NULL;
563 	SSL *ssl = NULL;
564 	int ret = 1;
565 
566 	fprintf(stderr, "Test %d - %s\n", testno, tct->desc);
567 
568 	if ((rbio = BIO_new_mem_buf(tct->server_response,
569 	    tct->server_response_len)) == NULL) {
570 		fprintf(stderr, "Failed to setup rbio\n");
571 		goto failure;
572 	}
573 	if ((wbio = BIO_new(BIO_s_mem())) == NULL) {
574 		fprintf(stderr, "Failed to setup wbio\n");
575 		goto failure;
576 	}
577 
578 	if ((ssl_ctx = SSL_CTX_new(tct->ssl_method())) == NULL) {
579 		fprintf(stderr, "SSL_CTX_new() returned NULL\n");
580 		goto failure;
581 	}
582 
583 	if ((ssl = SSL_new(ssl_ctx)) == NULL) {
584 		fprintf(stderr, "SSL_new() returned NULL\n");
585 		goto failure;
586 	}
587 
588 	BIO_up_ref(rbio);
589 	BIO_up_ref(wbio);
590 	SSL_set_bio(ssl, rbio, wbio);
591 
592 	if (SSL_connect(ssl) == 1) {
593 		fprintf(stderr, "SSL_connect() succeeded\n");
594 		goto failure;
595 	}
596 
597 	if (SSL_state(ssl) != tct->want_state) {
598 		fprintf(stderr, "FAIL: Got SSL state %x, want %x",
599 		    SSL_state(ssl), tct->want_state);
600 		goto failure;
601 	}
602 
603 	ret = 0;
604 
605  failure:
606 	SSL_CTX_free(ssl_ctx);
607 	SSL_free(ssl);
608 
609 	BIO_free(rbio);
610 	BIO_free(wbio);
611 
612 	return (ret);
613 }
614 
615 int
616 main(int argc, char **argv)
617 {
618 	int failed = 0;
619 	size_t i;
620 
621 	for (i = 0; i < N_TLSLEGACY_CLIENT_TESTS; i++)
622 		failed |= tlslegacy_client_test(i, &tlslegacy_client_tests[i]);
623 
624 	return (failed);
625 }
626