Coverage Report

Created: 2026-07-12 07:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl36/fuzz/server.c
Line
Count
Source
1
/*
2
 * Copyright 2016-2026 The OpenSSL Project Authors. All Rights Reserved.
3
 *
4
 * Licensed under the Apache License 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 * https://www.openssl.org/source/license.html
8
 * or in the file LICENSE in the source distribution.
9
 */
10
11
/* Shamelessly copied from BoringSSL and converted to C. */
12
13
/* Test first part of SSL server handshake. */
14
15
/* We need to use some deprecated APIs */
16
#define OPENSSL_SUPPRESS_DEPRECATED
17
18
#include <time.h>
19
#include <openssl/rand.h>
20
#include <openssl/ssl.h>
21
#include <openssl/rsa.h>
22
#include <openssl/dsa.h>
23
#include <openssl/ec.h>
24
#include <openssl/dh.h>
25
#include <openssl/err.h>
26
#include "fuzzer.h"
27
28
static const uint8_t kCertificateDER[] = {
29
    0x30, 0x82, 0x02, 0xff, 0x30, 0x82, 0x01, 0xe7,
30
    0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,
31
    0xb1, 0x84, 0xee, 0x34, 0x99, 0x98, 0x76, 0xfb,
32
    0x6f, 0xb2, 0x15, 0xc8, 0x47, 0x79, 0x05, 0x9b,
33
    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
34
    0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
35
    0x12, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
36
    0x04, 0x0a, 0x13, 0x07, 0x41, 0x63, 0x6d, 0x65,
37
    0x20, 0x43, 0x6f, 0x30, 0x1e, 0x17, 0x0d, 0x31,
38
    0x35, 0x31, 0x31, 0x30, 0x37, 0x30, 0x30, 0x32,
39
    0x34, 0x35, 0x36, 0x5a, 0x17, 0x0d, 0x31, 0x36,
40
    0x31, 0x31, 0x30, 0x36, 0x30, 0x30, 0x32, 0x34,
41
    0x35, 0x36, 0x5a, 0x30, 0x12, 0x31, 0x10, 0x30,
42
    0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,
43
    0x41, 0x63, 0x6d, 0x65, 0x20, 0x43, 0x6f, 0x30,
44
    0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
45
    0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
46
    0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
47
    0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
48
    0xce, 0x47, 0xcb, 0x11, 0xbb, 0xd2, 0x9d, 0x8e,
49
    0x9e, 0xd2, 0x1e, 0x14, 0xaf, 0xc7, 0xea, 0xb6,
50
    0xc9, 0x38, 0x2a, 0x6f, 0xb3, 0x7e, 0xfb, 0xbc,
51
    0xfc, 0x59, 0x42, 0xb9, 0x56, 0xf0, 0x4c, 0x3f,
52
    0xf7, 0x31, 0x84, 0xbe, 0xac, 0x03, 0x9e, 0x71,
53
    0x91, 0x85, 0xd8, 0x32, 0xbd, 0x00, 0xea, 0xac,
54
    0x65, 0xf6, 0x03, 0xc8, 0x0f, 0x8b, 0xfd, 0x6e,
55
    0x58, 0x88, 0x04, 0x41, 0x92, 0x74, 0xa6, 0x57,
56
    0x2e, 0x8e, 0x88, 0xd5, 0x3d, 0xda, 0x14, 0x3e,
57
    0x63, 0x88, 0x22, 0xe3, 0x53, 0xe9, 0xba, 0x39,
58
    0x09, 0xac, 0xfb, 0xd0, 0x4c, 0xf2, 0x3c, 0x20,
59
    0xd6, 0x97, 0xe6, 0xed, 0xf1, 0x62, 0x1e, 0xe5,
60
    0xc9, 0x48, 0xa0, 0xca, 0x2e, 0x3c, 0x14, 0x5a,
61
    0x82, 0xd4, 0xed, 0xb1, 0xe3, 0x43, 0xc1, 0x2a,
62
    0x59, 0xa5, 0xb9, 0xc8, 0x48, 0xa7, 0x39, 0x23,
63
    0x74, 0xa7, 0x37, 0xb0, 0x6f, 0xc3, 0x64, 0x99,
64
    0x6c, 0xa2, 0x82, 0xc8, 0xf6, 0xdb, 0x86, 0x40,
65
    0xce, 0xd1, 0x85, 0x9f, 0xce, 0x69, 0xf4, 0x15,
66
    0x2a, 0x23, 0xca, 0xea, 0xb7, 0x7b, 0xdf, 0xfb,
67
    0x43, 0x5f, 0xff, 0x7a, 0x49, 0x49, 0x0e, 0xe7,
68
    0x02, 0x51, 0x45, 0x13, 0xe8, 0x90, 0x64, 0x21,
69
    0x0c, 0x26, 0x2b, 0x5d, 0xfc, 0xe4, 0xb5, 0x86,
70
    0x89, 0x43, 0x22, 0x4c, 0xf3, 0x3b, 0xf3, 0x09,
71
    0xc4, 0xa4, 0x10, 0x80, 0xf2, 0x46, 0xe2, 0x46,
72
    0x8f, 0x76, 0x50, 0xbf, 0xaf, 0x2b, 0x90, 0x1b,
73
    0x78, 0xc7, 0xcf, 0xc1, 0x77, 0xd0, 0xfb, 0xa9,
74
    0xfb, 0xc9, 0x66, 0x5a, 0xc5, 0x9b, 0x31, 0x41,
75
    0x67, 0x01, 0xbe, 0x33, 0x10, 0xba, 0x05, 0x58,
76
    0xed, 0x76, 0x53, 0xde, 0x5d, 0xc1, 0xe8, 0xbb,
77
    0x9f, 0xf1, 0xcd, 0xfb, 0xdf, 0x64, 0x7f, 0xd7,
78
    0x18, 0xab, 0x0f, 0x94, 0x28, 0x95, 0x4a, 0xcc,
79
    0x6a, 0xa9, 0x50, 0xc7, 0x05, 0x47, 0x10, 0x41,
80
    0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x50, 0x30,
81
    0x4e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
82
    0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05,
83
    0xa0, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25,
84
    0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06,
85
    0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x0c,
86
    0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
87
    0x04, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x03,
88
    0x55, 0x1d, 0x11, 0x04, 0x12, 0x30, 0x10, 0x82,
89
    0x0e, 0x66, 0x75, 0x7a, 0x7a, 0x2e, 0x62, 0x6f,
90
    0x72, 0x69, 0x6e, 0x67, 0x73, 0x73, 0x6c, 0x30,
91
    0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
92
    0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
93
    0x01, 0x01, 0x00, 0x92, 0xde, 0xef, 0x96, 0x06,
94
    0x7b, 0xff, 0x71, 0x7d, 0x4e, 0xa0, 0x7d, 0xae,
95
    0xb8, 0x22, 0xb4, 0x2c, 0xf7, 0x96, 0x9c, 0x37,
96
    0x1d, 0x8f, 0xe7, 0xd9, 0x47, 0xff, 0x3f, 0xe9,
97
    0x35, 0x95, 0x0e, 0xdd, 0xdc, 0x7f, 0xc8, 0x8a,
98
    0x1e, 0x36, 0x1d, 0x38, 0x47, 0xfc, 0x76, 0xd2,
99
    0x1f, 0x98, 0xa1, 0x36, 0xac, 0xc8, 0x70, 0x38,
100
    0x0a, 0x3d, 0x51, 0x8d, 0x0f, 0x03, 0x1b, 0xef,
101
    0x62, 0xa1, 0xcb, 0x2b, 0x4a, 0x8c, 0x12, 0x2b,
102
    0x54, 0x50, 0x9a, 0x6b, 0xfe, 0xaf, 0xd9, 0xf6,
103
    0xbf, 0x58, 0x11, 0x58, 0x5e, 0xe5, 0x86, 0x1e,
104
    0x3b, 0x6b, 0x30, 0x7e, 0x72, 0x89, 0xe8, 0x6b,
105
    0x7b, 0xb7, 0xaf, 0xef, 0x8b, 0xa9, 0x3e, 0xb0,
106
    0xcd, 0x0b, 0xef, 0xb0, 0x0c, 0x96, 0x2b, 0xc5,
107
    0x3b, 0xd5, 0xf1, 0xc2, 0xae, 0x3a, 0x60, 0xd9,
108
    0x0f, 0x75, 0x37, 0x55, 0x4d, 0x62, 0xd2, 0xed,
109
    0x96, 0xac, 0x30, 0x6b, 0xda, 0xa1, 0x48, 0x17,
110
    0x96, 0x23, 0x85, 0x9a, 0x57, 0x77, 0xe9, 0x22,
111
    0xa2, 0x37, 0x03, 0xba, 0x49, 0x77, 0x40, 0x3b,
112
    0x76, 0x4b, 0xda, 0xc1, 0x04, 0x57, 0x55, 0x34,
113
    0x22, 0x83, 0x45, 0x29, 0xab, 0x2e, 0x11, 0xff,
114
    0x0d, 0xab, 0x55, 0xb1, 0xa7, 0x58, 0x59, 0x05,
115
    0x25, 0xf9, 0x1e, 0x3d, 0xb7, 0xac, 0x04, 0x39,
116
    0x2c, 0xf9, 0xaf, 0xb8, 0x68, 0xfb, 0x8e, 0x35,
117
    0x71, 0x32, 0xff, 0x70, 0xe9, 0x46, 0x6d, 0x5c,
118
    0x06, 0x90, 0x88, 0x23, 0x48, 0x0c, 0x50, 0xeb,
119
    0x0a, 0xa9, 0xae, 0xe8, 0xfc, 0xbe, 0xa5, 0x76,
120
    0x94, 0xd7, 0x64, 0x22, 0x38, 0x98, 0x17, 0xa4,
121
    0x3a, 0xa7, 0x59, 0x9f, 0x1d, 0x3b, 0x75, 0x90,
122
    0x1a, 0x81, 0xef, 0x19, 0xfb, 0x2b, 0xb7, 0xa7,
123
    0x64, 0x61, 0x22, 0xa4, 0x6f, 0x7b, 0xfa, 0x58,
124
    0xbb, 0x8c, 0x4e, 0x77, 0x67, 0xd0, 0x5d, 0x58,
125
    0x76, 0x8a, 0xbb
126
};
127
128
#ifndef OPENSSL_NO_DEPRECATED_3_0
129
static const uint8_t kRSAPrivateKeyDER[] = {
130
    0x30, 0x82, 0x04, 0xa5, 0x02, 0x01, 0x00, 0x02,
131
    0x82, 0x01, 0x01, 0x00, 0xce, 0x47, 0xcb, 0x11,
132
    0xbb, 0xd2, 0x9d, 0x8e, 0x9e, 0xd2, 0x1e, 0x14,
133
    0xaf, 0xc7, 0xea, 0xb6, 0xc9, 0x38, 0x2a, 0x6f,
134
    0xb3, 0x7e, 0xfb, 0xbc, 0xfc, 0x59, 0x42, 0xb9,
135
    0x56, 0xf0, 0x4c, 0x3f, 0xf7, 0x31, 0x84, 0xbe,
136
    0xac, 0x03, 0x9e, 0x71, 0x91, 0x85, 0xd8, 0x32,
137
    0xbd, 0x00, 0xea, 0xac, 0x65, 0xf6, 0x03, 0xc8,
138
    0x0f, 0x8b, 0xfd, 0x6e, 0x58, 0x88, 0x04, 0x41,
139
    0x92, 0x74, 0xa6, 0x57, 0x2e, 0x8e, 0x88, 0xd5,
140
    0x3d, 0xda, 0x14, 0x3e, 0x63, 0x88, 0x22, 0xe3,
141
    0x53, 0xe9, 0xba, 0x39, 0x09, 0xac, 0xfb, 0xd0,
142
    0x4c, 0xf2, 0x3c, 0x20, 0xd6, 0x97, 0xe6, 0xed,
143
    0xf1, 0x62, 0x1e, 0xe5, 0xc9, 0x48, 0xa0, 0xca,
144
    0x2e, 0x3c, 0x14, 0x5a, 0x82, 0xd4, 0xed, 0xb1,
145
    0xe3, 0x43, 0xc1, 0x2a, 0x59, 0xa5, 0xb9, 0xc8,
146
    0x48, 0xa7, 0x39, 0x23, 0x74, 0xa7, 0x37, 0xb0,
147
    0x6f, 0xc3, 0x64, 0x99, 0x6c, 0xa2, 0x82, 0xc8,
148
    0xf6, 0xdb, 0x86, 0x40, 0xce, 0xd1, 0x85, 0x9f,
149
    0xce, 0x69, 0xf4, 0x15, 0x2a, 0x23, 0xca, 0xea,
150
    0xb7, 0x7b, 0xdf, 0xfb, 0x43, 0x5f, 0xff, 0x7a,
151
    0x49, 0x49, 0x0e, 0xe7, 0x02, 0x51, 0x45, 0x13,
152
    0xe8, 0x90, 0x64, 0x21, 0x0c, 0x26, 0x2b, 0x5d,
153
    0xfc, 0xe4, 0xb5, 0x86, 0x89, 0x43, 0x22, 0x4c,
154
    0xf3, 0x3b, 0xf3, 0x09, 0xc4, 0xa4, 0x10, 0x80,
155
    0xf2, 0x46, 0xe2, 0x46, 0x8f, 0x76, 0x50, 0xbf,
156
    0xaf, 0x2b, 0x90, 0x1b, 0x78, 0xc7, 0xcf, 0xc1,
157
    0x77, 0xd0, 0xfb, 0xa9, 0xfb, 0xc9, 0x66, 0x5a,
158
    0xc5, 0x9b, 0x31, 0x41, 0x67, 0x01, 0xbe, 0x33,
159
    0x10, 0xba, 0x05, 0x58, 0xed, 0x76, 0x53, 0xde,
160
    0x5d, 0xc1, 0xe8, 0xbb, 0x9f, 0xf1, 0xcd, 0xfb,
161
    0xdf, 0x64, 0x7f, 0xd7, 0x18, 0xab, 0x0f, 0x94,
162
    0x28, 0x95, 0x4a, 0xcc, 0x6a, 0xa9, 0x50, 0xc7,
163
    0x05, 0x47, 0x10, 0x41, 0x02, 0x03, 0x01, 0x00,
164
    0x01, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa8, 0x47,
165
    0xb9, 0x4a, 0x06, 0x47, 0x93, 0x71, 0x3d, 0xef,
166
    0x7b, 0xca, 0xb4, 0x7c, 0x0a, 0xe6, 0x82, 0xd0,
167
    0xe7, 0x0d, 0xa9, 0x08, 0xf6, 0xa4, 0xfd, 0xd8,
168
    0x73, 0xae, 0x6f, 0x56, 0x29, 0x5e, 0x25, 0x72,
169
    0xa8, 0x30, 0x44, 0x73, 0xcf, 0x56, 0x26, 0xb9,
170
    0x61, 0xde, 0x42, 0x81, 0xf4, 0xf0, 0x1f, 0x5d,
171
    0xcb, 0x47, 0xf2, 0x26, 0xe9, 0xe0, 0x93, 0x28,
172
    0xa3, 0x10, 0x3b, 0x42, 0x1e, 0x51, 0x11, 0x12,
173
    0x06, 0x5e, 0xaf, 0xce, 0xb0, 0xa5, 0x14, 0xdd,
174
    0x82, 0x58, 0xa1, 0xa4, 0x12, 0xdf, 0x65, 0x1d,
175
    0x51, 0x70, 0x64, 0xd5, 0x58, 0x68, 0x11, 0xa8,
176
    0x6a, 0x23, 0xc2, 0xbf, 0xa1, 0x25, 0x24, 0x47,
177
    0xb3, 0xa4, 0x3c, 0x83, 0x96, 0xb7, 0x1f, 0xf4,
178
    0x44, 0xd4, 0xd1, 0xe9, 0xfc, 0x33, 0x68, 0x5e,
179
    0xe2, 0x68, 0x99, 0x9c, 0x91, 0xe8, 0x72, 0xc9,
180
    0xd7, 0x8c, 0x80, 0x20, 0x8e, 0x77, 0x83, 0x4d,
181
    0xe4, 0xab, 0xf9, 0x74, 0xa1, 0xdf, 0xd3, 0xc0,
182
    0x0d, 0x5b, 0x05, 0x51, 0xc2, 0x6f, 0xb2, 0x91,
183
    0x02, 0xec, 0xc0, 0x02, 0x1a, 0x5c, 0x91, 0x05,
184
    0xf1, 0xe3, 0xfa, 0x65, 0xc2, 0xad, 0x24, 0xe6,
185
    0xe5, 0x3c, 0xb6, 0x16, 0xf1, 0xa1, 0x67, 0x1a,
186
    0x9d, 0x37, 0x56, 0xbf, 0x01, 0xd7, 0x3b, 0x35,
187
    0x30, 0x57, 0x73, 0xf4, 0xf0, 0x5e, 0xa7, 0xe8,
188
    0x0a, 0xc1, 0x94, 0x17, 0xcf, 0x0a, 0xbd, 0xf5,
189
    0x31, 0xa7, 0x2d, 0xf7, 0xf5, 0xd9, 0x8c, 0xc2,
190
    0x01, 0xbd, 0xda, 0x16, 0x8e, 0xb9, 0x30, 0x40,
191
    0xa6, 0x6e, 0xbd, 0xcd, 0x4d, 0x84, 0x67, 0x4e,
192
    0x0b, 0xce, 0xd5, 0xef, 0xf8, 0x08, 0x63, 0x02,
193
    0xc6, 0xc7, 0xf7, 0x67, 0x92, 0xe2, 0x23, 0x9d,
194
    0x27, 0x22, 0x1d, 0xc6, 0x67, 0x5e, 0x66, 0xbf,
195
    0x03, 0xb8, 0xa9, 0x67, 0xd4, 0x39, 0xd8, 0x75,
196
    0xfa, 0xe8, 0xed, 0x56, 0xb8, 0x81, 0x02, 0x81,
197
    0x81, 0x00, 0xf7, 0x46, 0x68, 0xc6, 0x13, 0xf8,
198
    0xba, 0x0f, 0x83, 0xdb, 0x05, 0xa8, 0x25, 0x00,
199
    0x70, 0x9c, 0x9e, 0x8b, 0x12, 0x34, 0x0d, 0x96,
200
    0xcf, 0x0d, 0x98, 0x9b, 0x8d, 0x9c, 0x96, 0x78,
201
    0xd1, 0x3c, 0x01, 0x8c, 0xb9, 0x35, 0x5c, 0x20,
202
    0x42, 0xb4, 0x38, 0xe3, 0xd6, 0x54, 0xe7, 0x55,
203
    0xd6, 0x26, 0x8a, 0x0c, 0xf6, 0x1f, 0xe0, 0x04,
204
    0xc1, 0x22, 0x42, 0x19, 0x61, 0xc4, 0x94, 0x7c,
205
    0x07, 0x2e, 0x80, 0x52, 0xfe, 0x8d, 0xe6, 0x92,
206
    0x3a, 0x91, 0xfe, 0x72, 0x99, 0xe1, 0x2a, 0x73,
207
    0x76, 0xb1, 0x24, 0x20, 0x67, 0xde, 0x28, 0xcb,
208
    0x0e, 0xe6, 0x52, 0xb5, 0xfa, 0xfb, 0x8b, 0x1e,
209
    0x6a, 0x1d, 0x09, 0x26, 0xb9, 0xa7, 0x61, 0xba,
210
    0xf8, 0x79, 0xd2, 0x66, 0x57, 0x28, 0xd7, 0x31,
211
    0xb5, 0x0b, 0x27, 0x19, 0x1e, 0x6f, 0x46, 0xfc,
212
    0x54, 0x95, 0xeb, 0x78, 0x01, 0xb6, 0xd9, 0x79,
213
    0x5a, 0x4d, 0x02, 0x81, 0x81, 0x00, 0xd5, 0x8f,
214
    0x16, 0x53, 0x2f, 0x57, 0x93, 0xbf, 0x09, 0x75,
215
    0xbf, 0x63, 0x40, 0x3d, 0x27, 0xfd, 0x23, 0x21,
216
    0xde, 0x9b, 0xe9, 0x73, 0x3f, 0x49, 0x02, 0xd2,
217
    0x38, 0x96, 0xcf, 0xc3, 0xba, 0x92, 0x07, 0x87,
218
    0x52, 0xa9, 0x35, 0xe3, 0x0c, 0xe4, 0x2f, 0x05,
219
    0x7b, 0x37, 0xa5, 0x40, 0x9c, 0x3b, 0x94, 0xf7,
220
    0xad, 0xa0, 0xee, 0x3a, 0xa8, 0xfb, 0x1f, 0x11,
221
    0x1f, 0xd8, 0x9a, 0x80, 0x42, 0x3d, 0x7f, 0xa4,
222
    0xb8, 0x9a, 0xaa, 0xea, 0x72, 0xc1, 0xe3, 0xed,
223
    0x06, 0x60, 0x92, 0x37, 0xf9, 0xba, 0xfb, 0x9e,
224
    0xed, 0x05, 0xa6, 0xd4, 0x72, 0x68, 0x4f, 0x63,
225
    0xfe, 0xd6, 0x10, 0x0d, 0x4f, 0x0a, 0x93, 0xc6,
226
    0xb9, 0xd7, 0xaf, 0xfd, 0xd9, 0x57, 0x7d, 0xcb,
227
    0x75, 0xe8, 0x93, 0x2b, 0xae, 0x4f, 0xea, 0xd7,
228
    0x30, 0x0b, 0x58, 0x44, 0x82, 0x0f, 0x84, 0x5d,
229
    0x62, 0x11, 0x78, 0xea, 0x5f, 0xc5, 0x02, 0x81,
230
    0x81, 0x00, 0x82, 0x0c, 0xc1, 0xe6, 0x0b, 0x72,
231
    0xf1, 0x48, 0x5f, 0xac, 0xbd, 0x98, 0xe5, 0x7d,
232
    0x09, 0xbd, 0x15, 0x95, 0x47, 0x09, 0xa1, 0x6c,
233
    0x03, 0x91, 0xbf, 0x05, 0x70, 0xc1, 0x3e, 0x52,
234
    0x64, 0x99, 0x0e, 0xa7, 0x98, 0x70, 0xfb, 0xf6,
235
    0xeb, 0x9e, 0x25, 0x9d, 0x8e, 0x88, 0x30, 0xf2,
236
    0xf0, 0x22, 0x6c, 0xd0, 0xcc, 0x51, 0x8f, 0x5c,
237
    0x70, 0xc7, 0x37, 0xc4, 0x69, 0xab, 0x1d, 0xfc,
238
    0xed, 0x3a, 0x03, 0xbb, 0xa2, 0xad, 0xb6, 0xea,
239
    0x89, 0x6b, 0x67, 0x4b, 0x96, 0xaa, 0xd9, 0xcc,
240
    0xc8, 0x4b, 0xfa, 0x18, 0x21, 0x08, 0xb2, 0xa3,
241
    0xb9, 0x3e, 0x61, 0x99, 0xdc, 0x5a, 0x97, 0x9c,
242
    0x73, 0x6a, 0xb9, 0xf9, 0x68, 0x03, 0x24, 0x5f,
243
    0x55, 0x77, 0x9c, 0xb4, 0xbe, 0x7a, 0x78, 0x53,
244
    0x68, 0x48, 0x69, 0x53, 0xc8, 0xb1, 0xf5, 0xbf,
245
    0x98, 0x2d, 0x11, 0x1e, 0x98, 0xa8, 0x36, 0x50,
246
    0xa0, 0xb1, 0x02, 0x81, 0x81, 0x00, 0x90, 0x88,
247
    0x30, 0x71, 0xc7, 0xfe, 0x9b, 0x6d, 0x95, 0x37,
248
    0x6d, 0x79, 0xfc, 0x85, 0xe7, 0x44, 0x78, 0xbc,
249
    0x79, 0x6e, 0x47, 0x86, 0xc9, 0xf3, 0xdd, 0xc6,
250
    0xec, 0xa9, 0x94, 0x9f, 0x40, 0xeb, 0x87, 0xd0,
251
    0xdb, 0xee, 0xcd, 0x1b, 0x87, 0x23, 0xff, 0x76,
252
    0xd4, 0x37, 0x8a, 0xcd, 0xb9, 0x6e, 0xd1, 0x98,
253
    0xf6, 0x97, 0x8d, 0xe3, 0x81, 0x6d, 0xc3, 0x4e,
254
    0xd1, 0xa0, 0xc4, 0x9f, 0xbd, 0x34, 0xe5, 0xe8,
255
    0x53, 0x4f, 0xca, 0x10, 0xb5, 0xed, 0xe7, 0x16,
256
    0x09, 0x54, 0xde, 0x60, 0xa7, 0xd1, 0x16, 0x6e,
257
    0x2e, 0xb7, 0xbe, 0x7a, 0xd5, 0x9b, 0x26, 0xef,
258
    0xe4, 0x0e, 0x77, 0xfa, 0xa9, 0xdd, 0xdc, 0xb9,
259
    0x88, 0x19, 0x23, 0x70, 0xc7, 0xe1, 0x60, 0xaf,
260
    0x8c, 0x73, 0x04, 0xf7, 0x71, 0x17, 0x81, 0x36,
261
    0x75, 0xbb, 0x97, 0xd7, 0x75, 0xb6, 0x8e, 0xbc,
262
    0xac, 0x9c, 0x6a, 0x9b, 0x24, 0x89, 0x02, 0x81,
263
    0x80, 0x5a, 0x2b, 0xc7, 0x6b, 0x8c, 0x65, 0xdb,
264
    0x04, 0x73, 0xab, 0x25, 0xe1, 0x5b, 0xbc, 0x3c,
265
    0xcf, 0x5a, 0x3c, 0x04, 0xae, 0x97, 0x2e, 0xfd,
266
    0xa4, 0x97, 0x1f, 0x05, 0x17, 0x27, 0xac, 0x7c,
267
    0x30, 0x85, 0xb4, 0x82, 0x3f, 0x5b, 0xb7, 0x94,
268
    0x3b, 0x7f, 0x6c, 0x0c, 0xc7, 0x16, 0xc6, 0xa0,
269
    0xbd, 0x80, 0xb0, 0x81, 0xde, 0xa0, 0x23, 0xa6,
270
    0xf6, 0x75, 0x33, 0x51, 0x35, 0xa2, 0x75, 0x55,
271
    0x70, 0x4d, 0x42, 0xbb, 0xcf, 0x54, 0xe4, 0xdb,
272
    0x2d, 0x88, 0xa0, 0x7a, 0xf2, 0x17, 0xa7, 0xdd,
273
    0x13, 0x44, 0x9f, 0x5f, 0x6b, 0x2c, 0x42, 0x42,
274
    0x8b, 0x13, 0x4d, 0xf9, 0x5b, 0xf8, 0x33, 0x42,
275
    0xd9, 0x9e, 0x50, 0x1c, 0x7c, 0xbc, 0xfa, 0x62,
276
    0x85, 0x0b, 0xcf, 0x99, 0xda, 0x9e, 0x04, 0x90,
277
    0xb2, 0xc6, 0xb2, 0x0a, 0x2a, 0x7c, 0x6d, 0x6a,
278
    0x40, 0xfc, 0xf5, 0x50, 0x98, 0x46, 0x89, 0x82,
279
    0x40
280
};
281
#endif
282
283
#ifndef OPENSSL_NO_EC
284
#ifndef OPENSSL_NO_DEPRECATED_3_0
285
/*
286
 *  -----BEGIN EC PRIVATE KEY-----
287
 *  MHcCAQEEIJLyl7hJjpQL/RhP1x2zS79xdiPJQB683gWeqcqHPeZkoAoGCCqGSM49
288
 *  AwEHoUQDQgAEdsjygVYjjaKBF4CNECVllNf017p5/MxNSWDoTHy9I2GeDwEDDazI
289
 *  D/xy8JiYjtPKVE/Zqwbmivp2UwtH28a7NQ==
290
 *  -----END EC PRIVATE KEY-----
291
 */
292
static const char ECDSAPrivateKeyPEM[] = {
293
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x45,
294
    0x43, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45,
295
    0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x48, 0x63, 0x43, 0x41,
296
    0x51, 0x45, 0x45, 0x49, 0x4a, 0x4c, 0x79, 0x6c, 0x37, 0x68, 0x4a, 0x6a,
297
    0x70, 0x51, 0x4c, 0x2f, 0x52, 0x68, 0x50, 0x31, 0x78, 0x32, 0x7a, 0x53,
298
    0x37, 0x39, 0x78, 0x64, 0x69, 0x50, 0x4a, 0x51, 0x42, 0x36, 0x38, 0x33,
299
    0x67, 0x57, 0x65, 0x71, 0x63, 0x71, 0x48, 0x50, 0x65, 0x5a, 0x6b, 0x6f,
300
    0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x0a,
301
    0x41, 0x77, 0x45, 0x48, 0x6f, 0x55, 0x51, 0x44, 0x51, 0x67, 0x41, 0x45,
302
    0x64, 0x73, 0x6a, 0x79, 0x67, 0x56, 0x59, 0x6a, 0x6a, 0x61, 0x4b, 0x42,
303
    0x46, 0x34, 0x43, 0x4e, 0x45, 0x43, 0x56, 0x6c, 0x6c, 0x4e, 0x66, 0x30,
304
    0x31, 0x37, 0x70, 0x35, 0x2f, 0x4d, 0x78, 0x4e, 0x53, 0x57, 0x44, 0x6f,
305
    0x54, 0x48, 0x79, 0x39, 0x49, 0x32, 0x47, 0x65, 0x44, 0x77, 0x45, 0x44,
306
    0x44, 0x61, 0x7a, 0x49, 0x0a, 0x44, 0x2f, 0x78, 0x79, 0x38, 0x4a, 0x69,
307
    0x59, 0x6a, 0x74, 0x50, 0x4b, 0x56, 0x45, 0x2f, 0x5a, 0x71, 0x77, 0x62,
308
    0x6d, 0x69, 0x76, 0x70, 0x32, 0x55, 0x77, 0x74, 0x48, 0x32, 0x38, 0x61,
309
    0x37, 0x4e, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45,
310
    0x4e, 0x44, 0x20, 0x45, 0x43, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54,
311
    0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
312
};
313
#endif
314
315
/*
316
 * -----BEGIN CERTIFICATE-----
317
 *  MIIBXzCCAQagAwIBAgIJAK6/Yvf/ain6MAoGCCqGSM49BAMCMBIxEDAOBgNVBAoM
318
 *  B0FjbWUgQ28wHhcNMTYxMjI1MTEzOTI3WhcNMjYxMjI1MTEzOTI3WjASMRAwDgYD
319
 *  VQQKDAdBY21lIENvMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdsjygVYjjaKB
320
 *  F4CNECVllNf017p5/MxNSWDoTHy9I2GeDwEDDazID/xy8JiYjtPKVE/Zqwbmivp2
321
 *  UwtH28a7NaNFMEMwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYI
322
 *  KwYBBQUHAwEwFAYDVR0RBA0wC4IJbG9jYWxob3N0MAoGCCqGSM49BAMCA0cAMEQC
323
 *  IEzr3t/jejVE9oSnBp8c3P2p+lDLVRrB8zxLyjZvirUXAiAyQPaE9MNcL8/nRpuu
324
 *  99I1enCSmWIAJ57IwuJ/n1d45Q==
325
 *  -----END CERTIFICATE-----
326
 */
327
static const char ECDSACertPEM[] = {
328
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
329
    0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
330
    0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x58, 0x7a, 0x43, 0x43,
331
    0x41, 0x51, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a,
332
    0x41, 0x4b, 0x36, 0x2f, 0x59, 0x76, 0x66, 0x2f, 0x61, 0x69, 0x6e, 0x36,
333
    0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39,
334
    0x42, 0x41, 0x4d, 0x43, 0x4d, 0x42, 0x49, 0x78, 0x45, 0x44, 0x41, 0x4f,
335
    0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x0a, 0x42, 0x30, 0x46,
336
    0x6a, 0x62, 0x57, 0x55, 0x67, 0x51, 0x32, 0x38, 0x77, 0x48, 0x68, 0x63,
337
    0x4e, 0x4d, 0x54, 0x59, 0x78, 0x4d, 0x6a, 0x49, 0x31, 0x4d, 0x54, 0x45,
338
    0x7a, 0x4f, 0x54, 0x49, 0x33, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x59,
339
    0x78, 0x4d, 0x6a, 0x49, 0x31, 0x4d, 0x54, 0x45, 0x7a, 0x4f, 0x54, 0x49,
340
    0x33, 0x57, 0x6a, 0x41, 0x53, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59,
341
    0x44, 0x0a, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x64, 0x42, 0x59, 0x32,
342
    0x31, 0x6c, 0x49, 0x45, 0x4e, 0x76, 0x4d, 0x46, 0x6b, 0x77, 0x45, 0x77,
343
    0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51,
344
    0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x44, 0x41, 0x51,
345
    0x63, 0x44, 0x51, 0x67, 0x41, 0x45, 0x64, 0x73, 0x6a, 0x79, 0x67, 0x56,
346
    0x59, 0x6a, 0x6a, 0x61, 0x4b, 0x42, 0x0a, 0x46, 0x34, 0x43, 0x4e, 0x45,
347
    0x43, 0x56, 0x6c, 0x6c, 0x4e, 0x66, 0x30, 0x31, 0x37, 0x70, 0x35, 0x2f,
348
    0x4d, 0x78, 0x4e, 0x53, 0x57, 0x44, 0x6f, 0x54, 0x48, 0x79, 0x39, 0x49,
349
    0x32, 0x47, 0x65, 0x44, 0x77, 0x45, 0x44, 0x44, 0x61, 0x7a, 0x49, 0x44,
350
    0x2f, 0x78, 0x79, 0x38, 0x4a, 0x69, 0x59, 0x6a, 0x74, 0x50, 0x4b, 0x56,
351
    0x45, 0x2f, 0x5a, 0x71, 0x77, 0x62, 0x6d, 0x69, 0x76, 0x70, 0x32, 0x0a,
352
    0x55, 0x77, 0x74, 0x48, 0x32, 0x38, 0x61, 0x37, 0x4e, 0x61, 0x4e, 0x46,
353
    0x4d, 0x45, 0x4d, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54,
354
    0x42, 0x41, 0x49, 0x77, 0x41, 0x44, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56,
355
    0x48, 0x51, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x42, 0x61, 0x41, 0x77,
356
    0x45, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6c, 0x42, 0x41, 0x77, 0x77,
357
    0x43, 0x67, 0x59, 0x49, 0x0a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x51, 0x55,
358
    0x48, 0x41, 0x77, 0x45, 0x77, 0x46, 0x41, 0x59, 0x44, 0x56, 0x52, 0x30,
359
    0x52, 0x42, 0x41, 0x30, 0x77, 0x43, 0x34, 0x49, 0x4a, 0x62, 0x47, 0x39,
360
    0x6a, 0x59, 0x57, 0x78, 0x6f, 0x62, 0x33, 0x4e, 0x30, 0x4d, 0x41, 0x6f,
361
    0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d,
362
    0x43, 0x41, 0x30, 0x63, 0x41, 0x4d, 0x45, 0x51, 0x43, 0x0a, 0x49, 0x45,
363
    0x7a, 0x72, 0x33, 0x74, 0x2f, 0x6a, 0x65, 0x6a, 0x56, 0x45, 0x39, 0x6f,
364
    0x53, 0x6e, 0x42, 0x70, 0x38, 0x63, 0x33, 0x50, 0x32, 0x70, 0x2b, 0x6c,
365
    0x44, 0x4c, 0x56, 0x52, 0x72, 0x42, 0x38, 0x7a, 0x78, 0x4c, 0x79, 0x6a,
366
    0x5a, 0x76, 0x69, 0x72, 0x55, 0x58, 0x41, 0x69, 0x41, 0x79, 0x51, 0x50,
367
    0x61, 0x45, 0x39, 0x4d, 0x4e, 0x63, 0x4c, 0x38, 0x2f, 0x6e, 0x52, 0x70,
368
    0x75, 0x75, 0x0a, 0x39, 0x39, 0x49, 0x31, 0x65, 0x6e, 0x43, 0x53, 0x6d,
369
    0x57, 0x49, 0x41, 0x4a, 0x35, 0x37, 0x49, 0x77, 0x75, 0x4a, 0x2f, 0x6e,
370
    0x31, 0x64, 0x34, 0x35, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d,
371
    0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49,
372
    0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
373
};
374
#endif
375
376
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0)
377
/*
378
 * -----BEGIN DSA PRIVATE KEY-----
379
 * MIIBuwIBAAKBgQDdkFKzNABLOha7Eqj7004+p5fhtR6bxpujToMmSZTYi8igVVXP
380
 * Wzf03ULKS5UKjA6WpR6EiZAhm+PdxusZ5xfAuRZLdKy0bgxn1f348Rwh+EQNaEM8
381
 * 0TGcnw5ijwKmSw5yyHPDWdiHzoqEBlhAf8Nl22YTXax/clsc/pu/RRLAdwIVAIEg
382
 * QqWRf/1EIZZcgM65Qpd65YuxAoGBAKBauV/RuloFHoSy5iWXESDywiS380tN5974
383
 * GukGwoYdZo5uSIH6ahpeNSef0MbHGAzr7ZVEnhCQfRAwH1gRvSHoq/Rbmcvtd3r+
384
 * QtQHOwvQHgLAynhI4i73c794czHaR+439bmcaSwDnQduRM85Mho/jiiZzAVPxBmG
385
 * POIMWNXXAoGAI6Ep5IE7yn3JzkXO9B6tC3bbDM+ZzuuInwZLbtZ8lim7Dsqabg4k
386
 * 2YbE4R95Bnfwnjsyl80mq/DbQN5lAHBvjDrkC6ItojBGKI3+iIrqGUEJdxvl4ulj
387
 * F0PmSD7zvIG8BfocKOel+EHH0YryExiW6krV1KW2ZRmJrqSFw6KCjV0CFFQFbPfU
388
 * xy5PmKytJmXR8BmppkIO
389
 * -----END DSA PRIVATE KEY-----
390
 */
391
static const char DSAPrivateKeyPEM[] = {
392
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x44,
393
    0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
394
    0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42,
395
    0x75, 0x77, 0x49, 0x42, 0x41, 0x41, 0x4b, 0x42, 0x67, 0x51, 0x44, 0x64,
396
    0x6b, 0x46, 0x4b, 0x7a, 0x4e, 0x41, 0x42, 0x4c, 0x4f, 0x68, 0x61, 0x37,
397
    0x45, 0x71, 0x6a, 0x37, 0x30, 0x30, 0x34, 0x2b, 0x70, 0x35, 0x66, 0x68,
398
    0x74, 0x52, 0x36, 0x62, 0x78, 0x70, 0x75, 0x6a, 0x54, 0x6f, 0x4d, 0x6d,
399
    0x53, 0x5a, 0x54, 0x59, 0x69, 0x38, 0x69, 0x67, 0x56, 0x56, 0x58, 0x50,
400
    0x0a, 0x57, 0x7a, 0x66, 0x30, 0x33, 0x55, 0x4c, 0x4b, 0x53, 0x35, 0x55,
401
    0x4b, 0x6a, 0x41, 0x36, 0x57, 0x70, 0x52, 0x36, 0x45, 0x69, 0x5a, 0x41,
402
    0x68, 0x6d, 0x2b, 0x50, 0x64, 0x78, 0x75, 0x73, 0x5a, 0x35, 0x78, 0x66,
403
    0x41, 0x75, 0x52, 0x5a, 0x4c, 0x64, 0x4b, 0x79, 0x30, 0x62, 0x67, 0x78,
404
    0x6e, 0x31, 0x66, 0x33, 0x34, 0x38, 0x52, 0x77, 0x68, 0x2b, 0x45, 0x51,
405
    0x4e, 0x61, 0x45, 0x4d, 0x38, 0x0a, 0x30, 0x54, 0x47, 0x63, 0x6e, 0x77,
406
    0x35, 0x69, 0x6a, 0x77, 0x4b, 0x6d, 0x53, 0x77, 0x35, 0x79, 0x79, 0x48,
407
    0x50, 0x44, 0x57, 0x64, 0x69, 0x48, 0x7a, 0x6f, 0x71, 0x45, 0x42, 0x6c,
408
    0x68, 0x41, 0x66, 0x38, 0x4e, 0x6c, 0x32, 0x32, 0x59, 0x54, 0x58, 0x61,
409
    0x78, 0x2f, 0x63, 0x6c, 0x73, 0x63, 0x2f, 0x70, 0x75, 0x2f, 0x52, 0x52,
410
    0x4c, 0x41, 0x64, 0x77, 0x49, 0x56, 0x41, 0x49, 0x45, 0x67, 0x0a, 0x51,
411
    0x71, 0x57, 0x52, 0x66, 0x2f, 0x31, 0x45, 0x49, 0x5a, 0x5a, 0x63, 0x67,
412
    0x4d, 0x36, 0x35, 0x51, 0x70, 0x64, 0x36, 0x35, 0x59, 0x75, 0x78, 0x41,
413
    0x6f, 0x47, 0x42, 0x41, 0x4b, 0x42, 0x61, 0x75, 0x56, 0x2f, 0x52, 0x75,
414
    0x6c, 0x6f, 0x46, 0x48, 0x6f, 0x53, 0x79, 0x35, 0x69, 0x57, 0x58, 0x45,
415
    0x53, 0x44, 0x79, 0x77, 0x69, 0x53, 0x33, 0x38, 0x30, 0x74, 0x4e, 0x35,
416
    0x39, 0x37, 0x34, 0x0a, 0x47, 0x75, 0x6b, 0x47, 0x77, 0x6f, 0x59, 0x64,
417
    0x5a, 0x6f, 0x35, 0x75, 0x53, 0x49, 0x48, 0x36, 0x61, 0x68, 0x70, 0x65,
418
    0x4e, 0x53, 0x65, 0x66, 0x30, 0x4d, 0x62, 0x48, 0x47, 0x41, 0x7a, 0x72,
419
    0x37, 0x5a, 0x56, 0x45, 0x6e, 0x68, 0x43, 0x51, 0x66, 0x52, 0x41, 0x77,
420
    0x48, 0x31, 0x67, 0x52, 0x76, 0x53, 0x48, 0x6f, 0x71, 0x2f, 0x52, 0x62,
421
    0x6d, 0x63, 0x76, 0x74, 0x64, 0x33, 0x72, 0x2b, 0x0a, 0x51, 0x74, 0x51,
422
    0x48, 0x4f, 0x77, 0x76, 0x51, 0x48, 0x67, 0x4c, 0x41, 0x79, 0x6e, 0x68,
423
    0x49, 0x34, 0x69, 0x37, 0x33, 0x63, 0x37, 0x39, 0x34, 0x63, 0x7a, 0x48,
424
    0x61, 0x52, 0x2b, 0x34, 0x33, 0x39, 0x62, 0x6d, 0x63, 0x61, 0x53, 0x77,
425
    0x44, 0x6e, 0x51, 0x64, 0x75, 0x52, 0x4d, 0x38, 0x35, 0x4d, 0x68, 0x6f,
426
    0x2f, 0x6a, 0x69, 0x69, 0x5a, 0x7a, 0x41, 0x56, 0x50, 0x78, 0x42, 0x6d,
427
    0x47, 0x0a, 0x50, 0x4f, 0x49, 0x4d, 0x57, 0x4e, 0x58, 0x58, 0x41, 0x6f,
428
    0x47, 0x41, 0x49, 0x36, 0x45, 0x70, 0x35, 0x49, 0x45, 0x37, 0x79, 0x6e,
429
    0x33, 0x4a, 0x7a, 0x6b, 0x58, 0x4f, 0x39, 0x42, 0x36, 0x74, 0x43, 0x33,
430
    0x62, 0x62, 0x44, 0x4d, 0x2b, 0x5a, 0x7a, 0x75, 0x75, 0x49, 0x6e, 0x77,
431
    0x5a, 0x4c, 0x62, 0x74, 0x5a, 0x38, 0x6c, 0x69, 0x6d, 0x37, 0x44, 0x73,
432
    0x71, 0x61, 0x62, 0x67, 0x34, 0x6b, 0x0a, 0x32, 0x59, 0x62, 0x45, 0x34,
433
    0x52, 0x39, 0x35, 0x42, 0x6e, 0x66, 0x77, 0x6e, 0x6a, 0x73, 0x79, 0x6c,
434
    0x38, 0x30, 0x6d, 0x71, 0x2f, 0x44, 0x62, 0x51, 0x4e, 0x35, 0x6c, 0x41,
435
    0x48, 0x42, 0x76, 0x6a, 0x44, 0x72, 0x6b, 0x43, 0x36, 0x49, 0x74, 0x6f,
436
    0x6a, 0x42, 0x47, 0x4b, 0x49, 0x33, 0x2b, 0x69, 0x49, 0x72, 0x71, 0x47,
437
    0x55, 0x45, 0x4a, 0x64, 0x78, 0x76, 0x6c, 0x34, 0x75, 0x6c, 0x6a, 0x0a,
438
    0x46, 0x30, 0x50, 0x6d, 0x53, 0x44, 0x37, 0x7a, 0x76, 0x49, 0x47, 0x38,
439
    0x42, 0x66, 0x6f, 0x63, 0x4b, 0x4f, 0x65, 0x6c, 0x2b, 0x45, 0x48, 0x48,
440
    0x30, 0x59, 0x72, 0x79, 0x45, 0x78, 0x69, 0x57, 0x36, 0x6b, 0x72, 0x56,
441
    0x31, 0x4b, 0x57, 0x32, 0x5a, 0x52, 0x6d, 0x4a, 0x72, 0x71, 0x53, 0x46,
442
    0x77, 0x36, 0x4b, 0x43, 0x6a, 0x56, 0x30, 0x43, 0x46, 0x46, 0x51, 0x46,
443
    0x62, 0x50, 0x66, 0x55, 0x0a, 0x78, 0x79, 0x35, 0x50, 0x6d, 0x4b, 0x79,
444
    0x74, 0x4a, 0x6d, 0x58, 0x52, 0x38, 0x42, 0x6d, 0x70, 0x70, 0x6b, 0x49,
445
    0x4f, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x44,
446
    0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
447
    0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
448
};
449
450
/*
451
 * -----BEGIN CERTIFICATE-----
452
 * MIICqTCCAmegAwIBAgIJAILDGUk37fWGMAsGCWCGSAFlAwQDAjASMRAwDgYDVQQK
453
 * DAdBY21lIENvMB4XDTE2MTIyNTEzMjUzNloXDTI2MTIyNTEzMjUzNlowEjEQMA4G
454
 * A1UECgwHQWNtZSBDbzCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDdkFKzNABLOha7
455
 * Eqj7004+p5fhtR6bxpujToMmSZTYi8igVVXPWzf03ULKS5UKjA6WpR6EiZAhm+Pd
456
 * xusZ5xfAuRZLdKy0bgxn1f348Rwh+EQNaEM80TGcnw5ijwKmSw5yyHPDWdiHzoqE
457
 * BlhAf8Nl22YTXax/clsc/pu/RRLAdwIVAIEgQqWRf/1EIZZcgM65Qpd65YuxAoGB
458
 * AKBauV/RuloFHoSy5iWXESDywiS380tN5974GukGwoYdZo5uSIH6ahpeNSef0MbH
459
 * GAzr7ZVEnhCQfRAwH1gRvSHoq/Rbmcvtd3r+QtQHOwvQHgLAynhI4i73c794czHa
460
 * R+439bmcaSwDnQduRM85Mho/jiiZzAVPxBmGPOIMWNXXA4GEAAKBgCOhKeSBO8p9
461
 * yc5FzvQerQt22wzPmc7riJ8GS27WfJYpuw7Kmm4OJNmGxOEfeQZ38J47MpfNJqvw
462
 * 20DeZQBwb4w65AuiLaIwRiiN/oiK6hlBCXcb5eLpYxdD5kg+87yBvAX6HCjnpfhB
463
 * x9GK8hMYlupK1dSltmUZia6khcOigo1do0UwQzAJBgNVHRMEAjAAMAsGA1UdDwQE
464
 * AwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAUBgNVHREEDTALgglsb2NhbGhvc3Qw
465
 * CwYJYIZIAWUDBAMCAy8AMCwCFClxInXTRWNJEWdi5ilNr/fbM1bKAhQy4B7wtmfd
466
 * I+zV6g3w9qBkNqStpA==
467
 * -----END CERTIFICATE-----
468
 */
469
static const char DSACertPEM[] = {
470
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
471
    0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
472
    0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x71, 0x54, 0x43, 0x43,
473
    0x41, 0x6d, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a,
474
    0x41, 0x49, 0x4c, 0x44, 0x47, 0x55, 0x6b, 0x33, 0x37, 0x66, 0x57, 0x47,
475
    0x4d, 0x41, 0x73, 0x47, 0x43, 0x57, 0x43, 0x47, 0x53, 0x41, 0x46, 0x6c,
476
    0x41, 0x77, 0x51, 0x44, 0x41, 0x6a, 0x41, 0x53, 0x4d, 0x52, 0x41, 0x77,
477
    0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x44, 0x41, 0x64,
478
    0x42, 0x59, 0x32, 0x31, 0x6c, 0x49, 0x45, 0x4e, 0x76, 0x4d, 0x42, 0x34,
479
    0x58, 0x44, 0x54, 0x45, 0x32, 0x4d, 0x54, 0x49, 0x79, 0x4e, 0x54, 0x45,
480
    0x7a, 0x4d, 0x6a, 0x55, 0x7a, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x49,
481
    0x32, 0x4d, 0x54, 0x49, 0x79, 0x4e, 0x54, 0x45, 0x7a, 0x4d, 0x6a, 0x55,
482
    0x7a, 0x4e, 0x6c, 0x6f, 0x77, 0x45, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34,
483
    0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x48, 0x51, 0x57,
484
    0x4e, 0x74, 0x5a, 0x53, 0x42, 0x44, 0x62, 0x7a, 0x43, 0x43, 0x41, 0x62,
485
    0x63, 0x77, 0x67, 0x67, 0x45, 0x73, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b,
486
    0x6a, 0x4f, 0x4f, 0x41, 0x51, 0x42, 0x4d, 0x49, 0x49, 0x42, 0x48, 0x77,
487
    0x4b, 0x42, 0x67, 0x51, 0x44, 0x64, 0x6b, 0x46, 0x4b, 0x7a, 0x4e, 0x41,
488
    0x42, 0x4c, 0x4f, 0x68, 0x61, 0x37, 0x0a, 0x45, 0x71, 0x6a, 0x37, 0x30,
489
    0x30, 0x34, 0x2b, 0x70, 0x35, 0x66, 0x68, 0x74, 0x52, 0x36, 0x62, 0x78,
490
    0x70, 0x75, 0x6a, 0x54, 0x6f, 0x4d, 0x6d, 0x53, 0x5a, 0x54, 0x59, 0x69,
491
    0x38, 0x69, 0x67, 0x56, 0x56, 0x58, 0x50, 0x57, 0x7a, 0x66, 0x30, 0x33,
492
    0x55, 0x4c, 0x4b, 0x53, 0x35, 0x55, 0x4b, 0x6a, 0x41, 0x36, 0x57, 0x70,
493
    0x52, 0x36, 0x45, 0x69, 0x5a, 0x41, 0x68, 0x6d, 0x2b, 0x50, 0x64, 0x0a,
494
    0x78, 0x75, 0x73, 0x5a, 0x35, 0x78, 0x66, 0x41, 0x75, 0x52, 0x5a, 0x4c,
495
    0x64, 0x4b, 0x79, 0x30, 0x62, 0x67, 0x78, 0x6e, 0x31, 0x66, 0x33, 0x34,
496
    0x38, 0x52, 0x77, 0x68, 0x2b, 0x45, 0x51, 0x4e, 0x61, 0x45, 0x4d, 0x38,
497
    0x30, 0x54, 0x47, 0x63, 0x6e, 0x77, 0x35, 0x69, 0x6a, 0x77, 0x4b, 0x6d,
498
    0x53, 0x77, 0x35, 0x79, 0x79, 0x48, 0x50, 0x44, 0x57, 0x64, 0x69, 0x48,
499
    0x7a, 0x6f, 0x71, 0x45, 0x0a, 0x42, 0x6c, 0x68, 0x41, 0x66, 0x38, 0x4e,
500
    0x6c, 0x32, 0x32, 0x59, 0x54, 0x58, 0x61, 0x78, 0x2f, 0x63, 0x6c, 0x73,
501
    0x63, 0x2f, 0x70, 0x75, 0x2f, 0x52, 0x52, 0x4c, 0x41, 0x64, 0x77, 0x49,
502
    0x56, 0x41, 0x49, 0x45, 0x67, 0x51, 0x71, 0x57, 0x52, 0x66, 0x2f, 0x31,
503
    0x45, 0x49, 0x5a, 0x5a, 0x63, 0x67, 0x4d, 0x36, 0x35, 0x51, 0x70, 0x64,
504
    0x36, 0x35, 0x59, 0x75, 0x78, 0x41, 0x6f, 0x47, 0x42, 0x0a, 0x41, 0x4b,
505
    0x42, 0x61, 0x75, 0x56, 0x2f, 0x52, 0x75, 0x6c, 0x6f, 0x46, 0x48, 0x6f,
506
    0x53, 0x79, 0x35, 0x69, 0x57, 0x58, 0x45, 0x53, 0x44, 0x79, 0x77, 0x69,
507
    0x53, 0x33, 0x38, 0x30, 0x74, 0x4e, 0x35, 0x39, 0x37, 0x34, 0x47, 0x75,
508
    0x6b, 0x47, 0x77, 0x6f, 0x59, 0x64, 0x5a, 0x6f, 0x35, 0x75, 0x53, 0x49,
509
    0x48, 0x36, 0x61, 0x68, 0x70, 0x65, 0x4e, 0x53, 0x65, 0x66, 0x30, 0x4d,
510
    0x62, 0x48, 0x0a, 0x47, 0x41, 0x7a, 0x72, 0x37, 0x5a, 0x56, 0x45, 0x6e,
511
    0x68, 0x43, 0x51, 0x66, 0x52, 0x41, 0x77, 0x48, 0x31, 0x67, 0x52, 0x76,
512
    0x53, 0x48, 0x6f, 0x71, 0x2f, 0x52, 0x62, 0x6d, 0x63, 0x76, 0x74, 0x64,
513
    0x33, 0x72, 0x2b, 0x51, 0x74, 0x51, 0x48, 0x4f, 0x77, 0x76, 0x51, 0x48,
514
    0x67, 0x4c, 0x41, 0x79, 0x6e, 0x68, 0x49, 0x34, 0x69, 0x37, 0x33, 0x63,
515
    0x37, 0x39, 0x34, 0x63, 0x7a, 0x48, 0x61, 0x0a, 0x52, 0x2b, 0x34, 0x33,
516
    0x39, 0x62, 0x6d, 0x63, 0x61, 0x53, 0x77, 0x44, 0x6e, 0x51, 0x64, 0x75,
517
    0x52, 0x4d, 0x38, 0x35, 0x4d, 0x68, 0x6f, 0x2f, 0x6a, 0x69, 0x69, 0x5a,
518
    0x7a, 0x41, 0x56, 0x50, 0x78, 0x42, 0x6d, 0x47, 0x50, 0x4f, 0x49, 0x4d,
519
    0x57, 0x4e, 0x58, 0x58, 0x41, 0x34, 0x47, 0x45, 0x41, 0x41, 0x4b, 0x42,
520
    0x67, 0x43, 0x4f, 0x68, 0x4b, 0x65, 0x53, 0x42, 0x4f, 0x38, 0x70, 0x39,
521
    0x0a, 0x79, 0x63, 0x35, 0x46, 0x7a, 0x76, 0x51, 0x65, 0x72, 0x51, 0x74,
522
    0x32, 0x32, 0x77, 0x7a, 0x50, 0x6d, 0x63, 0x37, 0x72, 0x69, 0x4a, 0x38,
523
    0x47, 0x53, 0x32, 0x37, 0x57, 0x66, 0x4a, 0x59, 0x70, 0x75, 0x77, 0x37,
524
    0x4b, 0x6d, 0x6d, 0x34, 0x4f, 0x4a, 0x4e, 0x6d, 0x47, 0x78, 0x4f, 0x45,
525
    0x66, 0x65, 0x51, 0x5a, 0x33, 0x38, 0x4a, 0x34, 0x37, 0x4d, 0x70, 0x66,
526
    0x4e, 0x4a, 0x71, 0x76, 0x77, 0x0a, 0x32, 0x30, 0x44, 0x65, 0x5a, 0x51,
527
    0x42, 0x77, 0x62, 0x34, 0x77, 0x36, 0x35, 0x41, 0x75, 0x69, 0x4c, 0x61,
528
    0x49, 0x77, 0x52, 0x69, 0x69, 0x4e, 0x2f, 0x6f, 0x69, 0x4b, 0x36, 0x68,
529
    0x6c, 0x42, 0x43, 0x58, 0x63, 0x62, 0x35, 0x65, 0x4c, 0x70, 0x59, 0x78,
530
    0x64, 0x44, 0x35, 0x6b, 0x67, 0x2b, 0x38, 0x37, 0x79, 0x42, 0x76, 0x41,
531
    0x58, 0x36, 0x48, 0x43, 0x6a, 0x6e, 0x70, 0x66, 0x68, 0x42, 0x0a, 0x78,
532
    0x39, 0x47, 0x4b, 0x38, 0x68, 0x4d, 0x59, 0x6c, 0x75, 0x70, 0x4b, 0x31,
533
    0x64, 0x53, 0x6c, 0x74, 0x6d, 0x55, 0x5a, 0x69, 0x61, 0x36, 0x6b, 0x68,
534
    0x63, 0x4f, 0x69, 0x67, 0x6f, 0x31, 0x64, 0x6f, 0x30, 0x55, 0x77, 0x51,
535
    0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x45, 0x41,
536
    0x6a, 0x41, 0x41, 0x4d, 0x41, 0x73, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44,
537
    0x77, 0x51, 0x45, 0x0a, 0x41, 0x77, 0x49, 0x46, 0x6f, 0x44, 0x41, 0x54,
538
    0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x55, 0x45, 0x44, 0x44, 0x41, 0x4b,
539
    0x42, 0x67, 0x67, 0x72, 0x42, 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x44,
540
    0x41, 0x54, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x45, 0x45,
541
    0x44, 0x54, 0x41, 0x4c, 0x67, 0x67, 0x6c, 0x73, 0x62, 0x32, 0x4e, 0x68,
542
    0x62, 0x47, 0x68, 0x76, 0x63, 0x33, 0x51, 0x77, 0x0a, 0x43, 0x77, 0x59,
543
    0x4a, 0x59, 0x49, 0x5a, 0x49, 0x41, 0x57, 0x55, 0x44, 0x42, 0x41, 0x4d,
544
    0x43, 0x41, 0x79, 0x38, 0x41, 0x4d, 0x43, 0x77, 0x43, 0x46, 0x43, 0x6c,
545
    0x78, 0x49, 0x6e, 0x58, 0x54, 0x52, 0x57, 0x4e, 0x4a, 0x45, 0x57, 0x64,
546
    0x69, 0x35, 0x69, 0x6c, 0x4e, 0x72, 0x2f, 0x66, 0x62, 0x4d, 0x31, 0x62,
547
    0x4b, 0x41, 0x68, 0x51, 0x79, 0x34, 0x42, 0x37, 0x77, 0x74, 0x6d, 0x66,
548
    0x64, 0x0a, 0x49, 0x2b, 0x7a, 0x56, 0x36, 0x67, 0x33, 0x77, 0x39, 0x71,
549
    0x42, 0x6b, 0x4e, 0x71, 0x53, 0x74, 0x70, 0x41, 0x3d, 0x3d, 0x0a, 0x2d,
550
    0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54,
551
    0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
552
    0x0a
553
};
554
#endif
555
556
/* unused, to avoid warning. */
557
static int idx;
558
559
12.4k
#define FUZZTIME 1485898104
560
561
#define TIME_IMPL(t)       \
562
11.3k
    {                      \
563
11.3k
        if (t != NULL)     \
564
11.3k
            *t = FUZZTIME; \
565
11.3k
        return FUZZTIME;   \
566
11.3k
    }
567
568
/*
569
 * This might not work in all cases (and definitely not on Windows
570
 * because of the way linkers are) and callees can still get the
571
 * current time instead of the fixed time. This will just result
572
 * in things not being fully reproducible and have a slightly
573
 * different coverage.
574
 */
575
#if !defined(_WIN32)
576
11.3k
time_t time(time_t *t) TIME_IMPL(t)
577
#endif
578
579
    int FuzzerInitialize(int *argc, char ***argv)
580
60
{
581
60
    STACK_OF(SSL_COMP) *comp_methods;
582
583
60
    FuzzerSetRand();
584
60
    OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS | OPENSSL_INIT_ASYNC, NULL);
585
60
    OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL);
586
60
    ERR_clear_error();
587
60
    CRYPTO_free_ex_index(0, -1);
588
60
    idx = SSL_get_ex_data_X509_STORE_CTX_idx();
589
60
    comp_methods = SSL_COMP_get_compression_methods();
590
60
    if (comp_methods != NULL)
591
60
        sk_SSL_COMP_sort(comp_methods);
592
593
60
    return 1;
594
60
}
595
596
int FuzzerTestOneInput(const uint8_t *buf, size_t len)
597
9.46k
{
598
9.46k
    SSL *server;
599
9.46k
    BIO *in;
600
9.46k
    BIO *out;
601
9.46k
#if !defined(OPENSSL_NO_EC) \
602
9.46k
    || (!defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0))
603
9.46k
    BIO *bio_buf;
604
9.46k
#endif
605
9.46k
    SSL_CTX *ctx;
606
9.46k
    int ret;
607
9.46k
#ifndef OPENSSL_NO_DEPRECATED_3_0
608
9.46k
    RSA *privkey;
609
9.46k
#endif
610
9.46k
    const uint8_t *bufp;
611
9.46k
#if !defined(OPENSSL_NO_DEPRECATED_3_0)
612
9.46k
    EVP_PKEY *pkey;
613
9.46k
#endif
614
9.46k
    X509 *cert;
615
9.46k
#ifndef OPENSSL_NO_DEPRECATED_3_0
616
9.46k
#ifndef OPENSSL_NO_EC
617
9.46k
    EC_KEY *ecdsakey = NULL;
618
9.46k
#endif
619
9.46k
#endif
620
9.46k
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0)
621
9.46k
    DSA *dsakey = NULL;
622
9.46k
#endif
623
9.46k
    uint8_t opt;
624
625
9.46k
    if (len < 2 || len > INT_MAX)
626
2
        return 0;
627
628
    /* This only fuzzes the initial flow from the client so far. */
629
9.46k
    ctx = SSL_CTX_new(SSLv23_method());
630
9.46k
    OPENSSL_assert(ctx != NULL);
631
9.46k
    ret = SSL_CTX_set_min_proto_version(ctx, 0);
632
9.46k
    OPENSSL_assert(ret == 1);
633
9.46k
    ret = SSL_CTX_set_cipher_list(ctx, "ALL:eNULL:@SECLEVEL=0");
634
9.46k
    OPENSSL_assert(ret == 1);
635
636
9.46k
#ifndef OPENSSL_NO_DEPRECATED_3_0
637
    /* RSA */
638
9.46k
    bufp = kRSAPrivateKeyDER;
639
9.46k
    privkey = d2i_RSAPrivateKey(NULL, &bufp, sizeof(kRSAPrivateKeyDER));
640
9.46k
    OPENSSL_assert(privkey != NULL);
641
9.46k
    pkey = EVP_PKEY_new();
642
9.46k
    OPENSSL_assert(pkey != NULL);
643
9.46k
    EVP_PKEY_assign_RSA(pkey, privkey);
644
9.46k
    ret = SSL_CTX_use_PrivateKey(ctx, pkey);
645
9.46k
    OPENSSL_assert(ret == 1);
646
9.46k
    EVP_PKEY_free(pkey);
647
9.46k
#endif
648
649
9.46k
    bufp = kCertificateDER;
650
9.46k
    cert = d2i_X509(NULL, &bufp, sizeof(kCertificateDER));
651
9.46k
    OPENSSL_assert(cert != NULL);
652
9.46k
    ret = SSL_CTX_use_certificate(ctx, cert);
653
9.46k
    OPENSSL_assert(ret == 1);
654
9.46k
    X509_free(cert);
655
656
9.46k
#ifndef OPENSSL_NO_EC
657
9.46k
#ifndef OPENSSL_NO_DEPRECATED_3_0
658
    /* ECDSA */
659
9.46k
    bio_buf = BIO_new(BIO_s_mem());
660
9.46k
    OPENSSL_assert(bio_buf != NULL);
661
9.46k
    OPENSSL_assert((size_t)BIO_write(bio_buf, ECDSAPrivateKeyPEM, sizeof(ECDSAPrivateKeyPEM)) == sizeof(ECDSAPrivateKeyPEM));
662
9.46k
    ecdsakey = PEM_read_bio_ECPrivateKey(bio_buf, NULL, NULL, NULL);
663
9.46k
    ERR_print_errors_fp(stderr);
664
9.46k
    OPENSSL_assert(ecdsakey != NULL);
665
9.46k
    BIO_free(bio_buf);
666
9.46k
    pkey = EVP_PKEY_new();
667
9.46k
    OPENSSL_assert(pkey != NULL);
668
9.46k
    EVP_PKEY_assign_EC_KEY(pkey, ecdsakey);
669
9.46k
    ret = SSL_CTX_use_PrivateKey(ctx, pkey);
670
9.46k
    OPENSSL_assert(ret == 1);
671
9.46k
    EVP_PKEY_free(pkey);
672
9.46k
#endif
673
9.46k
    bio_buf = BIO_new(BIO_s_mem());
674
9.46k
    OPENSSL_assert(bio_buf != NULL);
675
9.46k
    OPENSSL_assert((size_t)BIO_write(bio_buf, ECDSACertPEM, sizeof(ECDSACertPEM)) == sizeof(ECDSACertPEM));
676
9.46k
    cert = PEM_read_bio_X509(bio_buf, NULL, NULL, NULL);
677
9.46k
    OPENSSL_assert(cert != NULL);
678
9.46k
    BIO_free(bio_buf);
679
9.46k
    ret = SSL_CTX_use_certificate(ctx, cert);
680
9.46k
    OPENSSL_assert(ret == 1);
681
9.46k
    X509_free(cert);
682
9.46k
#endif
683
684
9.46k
#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0)
685
    /* DSA */
686
9.46k
    bio_buf = BIO_new(BIO_s_mem());
687
9.46k
    OPENSSL_assert(bio_buf != NULL);
688
9.46k
    OPENSSL_assert((size_t)BIO_write(bio_buf, DSAPrivateKeyPEM, sizeof(DSAPrivateKeyPEM)) == sizeof(DSAPrivateKeyPEM));
689
9.46k
    dsakey = PEM_read_bio_DSAPrivateKey(bio_buf, NULL, NULL, NULL);
690
9.46k
    ERR_print_errors_fp(stderr);
691
9.46k
    OPENSSL_assert(dsakey != NULL);
692
9.46k
    BIO_free(bio_buf);
693
9.46k
    pkey = EVP_PKEY_new();
694
9.46k
    OPENSSL_assert(pkey != NULL);
695
9.46k
    EVP_PKEY_assign_DSA(pkey, dsakey);
696
9.46k
    ret = SSL_CTX_use_PrivateKey(ctx, pkey);
697
9.46k
    OPENSSL_assert(ret == 1);
698
9.46k
    EVP_PKEY_free(pkey);
699
700
9.46k
    bio_buf = BIO_new(BIO_s_mem());
701
9.46k
    OPENSSL_assert(bio_buf != NULL);
702
9.46k
    OPENSSL_assert((size_t)BIO_write(bio_buf, DSACertPEM, sizeof(DSACertPEM)) == sizeof(DSACertPEM));
703
9.46k
    cert = PEM_read_bio_X509(bio_buf, NULL, NULL, NULL);
704
9.46k
    OPENSSL_assert(cert != NULL);
705
9.46k
    BIO_free(bio_buf);
706
9.46k
    ret = SSL_CTX_use_certificate(ctx, cert);
707
9.46k
    OPENSSL_assert(ret == 1);
708
9.46k
    X509_free(cert);
709
9.46k
#endif
710
711
9.46k
    server = SSL_new(ctx);
712
9.46k
    in = BIO_new(BIO_s_mem());
713
9.46k
    OPENSSL_assert(in != NULL);
714
9.46k
    out = BIO_new(BIO_s_mem());
715
9.46k
    OPENSSL_assert(out != NULL);
716
9.46k
    SSL_set_bio(server, in, out);
717
9.46k
    SSL_set_accept_state(server);
718
719
9.46k
    opt = (uint8_t)buf[len - 1];
720
9.46k
    len--;
721
722
9.46k
    OPENSSL_assert((size_t)BIO_write(in, buf, (int)len) == len);
723
724
9.46k
    if ((opt & 0x01) != 0) {
725
3.92k
        do {
726
3.92k
            char early_buf[16384];
727
3.92k
            size_t early_len;
728
3.92k
            ret = SSL_read_early_data(server, early_buf, sizeof(early_buf), &early_len);
729
730
3.92k
            if (ret != SSL_READ_EARLY_DATA_SUCCESS)
731
3.92k
                break;
732
3.92k
        } while (1);
733
3.92k
    }
734
735
9.46k
    if (SSL_do_handshake(server) == 1) {
736
        /* Keep reading application data until error or EOF. */
737
622
        uint8_t tmp[1024];
738
7.17k
        for (;;) {
739
7.17k
            if (SSL_read(server, tmp, sizeof(tmp)) <= 0) {
740
622
                break;
741
622
            }
742
7.17k
        }
743
622
    }
744
9.46k
    SSL_free(server);
745
9.46k
    ERR_clear_error();
746
9.46k
    SSL_CTX_free(ctx);
747
748
9.46k
    return 0;
749
9.46k
}
750
751
void FuzzerCleanup(void)
752
0
{
753
0
    FuzzerClearRand();
754
0
}