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