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