Coverage Report

Created: 2026-09-12 06:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/openssl41/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
#ifndef OPENSSL_NO_DEPRECATED_3_0
29
static const uint8_t kCertificateDER[] = {
30
    0x30, 0x82, 0x02, 0xff, 0x30, 0x82, 0x01, 0xe7,
31
    0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00,
32
    0xb1, 0x84, 0xee, 0x34, 0x99, 0x98, 0x76, 0xfb,
33
    0x6f, 0xb2, 0x15, 0xc8, 0x47, 0x79, 0x05, 0x9b,
34
    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
35
    0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30,
36
    0x12, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55,
37
    0x04, 0x0a, 0x13, 0x07, 0x41, 0x63, 0x6d, 0x65,
38
    0x20, 0x43, 0x6f, 0x30, 0x1e, 0x17, 0x0d, 0x31,
39
    0x35, 0x31, 0x31, 0x30, 0x37, 0x30, 0x30, 0x32,
40
    0x34, 0x35, 0x36, 0x5a, 0x17, 0x0d, 0x31, 0x36,
41
    0x31, 0x31, 0x30, 0x36, 0x30, 0x30, 0x32, 0x34,
42
    0x35, 0x36, 0x5a, 0x30, 0x12, 0x31, 0x10, 0x30,
43
    0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x07,
44
    0x41, 0x63, 0x6d, 0x65, 0x20, 0x43, 0x6f, 0x30,
45
    0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
46
    0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
47
    0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
48
    0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00,
49
    0xce, 0x47, 0xcb, 0x11, 0xbb, 0xd2, 0x9d, 0x8e,
50
    0x9e, 0xd2, 0x1e, 0x14, 0xaf, 0xc7, 0xea, 0xb6,
51
    0xc9, 0x38, 0x2a, 0x6f, 0xb3, 0x7e, 0xfb, 0xbc,
52
    0xfc, 0x59, 0x42, 0xb9, 0x56, 0xf0, 0x4c, 0x3f,
53
    0xf7, 0x31, 0x84, 0xbe, 0xac, 0x03, 0x9e, 0x71,
54
    0x91, 0x85, 0xd8, 0x32, 0xbd, 0x00, 0xea, 0xac,
55
    0x65, 0xf6, 0x03, 0xc8, 0x0f, 0x8b, 0xfd, 0x6e,
56
    0x58, 0x88, 0x04, 0x41, 0x92, 0x74, 0xa6, 0x57,
57
    0x2e, 0x8e, 0x88, 0xd5, 0x3d, 0xda, 0x14, 0x3e,
58
    0x63, 0x88, 0x22, 0xe3, 0x53, 0xe9, 0xba, 0x39,
59
    0x09, 0xac, 0xfb, 0xd0, 0x4c, 0xf2, 0x3c, 0x20,
60
    0xd6, 0x97, 0xe6, 0xed, 0xf1, 0x62, 0x1e, 0xe5,
61
    0xc9, 0x48, 0xa0, 0xca, 0x2e, 0x3c, 0x14, 0x5a,
62
    0x82, 0xd4, 0xed, 0xb1, 0xe3, 0x43, 0xc1, 0x2a,
63
    0x59, 0xa5, 0xb9, 0xc8, 0x48, 0xa7, 0x39, 0x23,
64
    0x74, 0xa7, 0x37, 0xb0, 0x6f, 0xc3, 0x64, 0x99,
65
    0x6c, 0xa2, 0x82, 0xc8, 0xf6, 0xdb, 0x86, 0x40,
66
    0xce, 0xd1, 0x85, 0x9f, 0xce, 0x69, 0xf4, 0x15,
67
    0x2a, 0x23, 0xca, 0xea, 0xb7, 0x7b, 0xdf, 0xfb,
68
    0x43, 0x5f, 0xff, 0x7a, 0x49, 0x49, 0x0e, 0xe7,
69
    0x02, 0x51, 0x45, 0x13, 0xe8, 0x90, 0x64, 0x21,
70
    0x0c, 0x26, 0x2b, 0x5d, 0xfc, 0xe4, 0xb5, 0x86,
71
    0x89, 0x43, 0x22, 0x4c, 0xf3, 0x3b, 0xf3, 0x09,
72
    0xc4, 0xa4, 0x10, 0x80, 0xf2, 0x46, 0xe2, 0x46,
73
    0x8f, 0x76, 0x50, 0xbf, 0xaf, 0x2b, 0x90, 0x1b,
74
    0x78, 0xc7, 0xcf, 0xc1, 0x77, 0xd0, 0xfb, 0xa9,
75
    0xfb, 0xc9, 0x66, 0x5a, 0xc5, 0x9b, 0x31, 0x41,
76
    0x67, 0x01, 0xbe, 0x33, 0x10, 0xba, 0x05, 0x58,
77
    0xed, 0x76, 0x53, 0xde, 0x5d, 0xc1, 0xe8, 0xbb,
78
    0x9f, 0xf1, 0xcd, 0xfb, 0xdf, 0x64, 0x7f, 0xd7,
79
    0x18, 0xab, 0x0f, 0x94, 0x28, 0x95, 0x4a, 0xcc,
80
    0x6a, 0xa9, 0x50, 0xc7, 0x05, 0x47, 0x10, 0x41,
81
    0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x50, 0x30,
82
    0x4e, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f,
83
    0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x05,
84
    0xa0, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25,
85
    0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06,
86
    0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x0c,
87
    0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff,
88
    0x04, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x03,
89
    0x55, 0x1d, 0x11, 0x04, 0x12, 0x30, 0x10, 0x82,
90
    0x0e, 0x66, 0x75, 0x7a, 0x7a, 0x2e, 0x62, 0x6f,
91
    0x72, 0x69, 0x6e, 0x67, 0x73, 0x73, 0x6c, 0x30,
92
    0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
93
    0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82,
94
    0x01, 0x01, 0x00, 0x92, 0xde, 0xef, 0x96, 0x06,
95
    0x7b, 0xff, 0x71, 0x7d, 0x4e, 0xa0, 0x7d, 0xae,
96
    0xb8, 0x22, 0xb4, 0x2c, 0xf7, 0x96, 0x9c, 0x37,
97
    0x1d, 0x8f, 0xe7, 0xd9, 0x47, 0xff, 0x3f, 0xe9,
98
    0x35, 0x95, 0x0e, 0xdd, 0xdc, 0x7f, 0xc8, 0x8a,
99
    0x1e, 0x36, 0x1d, 0x38, 0x47, 0xfc, 0x76, 0xd2,
100
    0x1f, 0x98, 0xa1, 0x36, 0xac, 0xc8, 0x70, 0x38,
101
    0x0a, 0x3d, 0x51, 0x8d, 0x0f, 0x03, 0x1b, 0xef,
102
    0x62, 0xa1, 0xcb, 0x2b, 0x4a, 0x8c, 0x12, 0x2b,
103
    0x54, 0x50, 0x9a, 0x6b, 0xfe, 0xaf, 0xd9, 0xf6,
104
    0xbf, 0x58, 0x11, 0x58, 0x5e, 0xe5, 0x86, 0x1e,
105
    0x3b, 0x6b, 0x30, 0x7e, 0x72, 0x89, 0xe8, 0x6b,
106
    0x7b, 0xb7, 0xaf, 0xef, 0x8b, 0xa9, 0x3e, 0xb0,
107
    0xcd, 0x0b, 0xef, 0xb0, 0x0c, 0x96, 0x2b, 0xc5,
108
    0x3b, 0xd5, 0xf1, 0xc2, 0xae, 0x3a, 0x60, 0xd9,
109
    0x0f, 0x75, 0x37, 0x55, 0x4d, 0x62, 0xd2, 0xed,
110
    0x96, 0xac, 0x30, 0x6b, 0xda, 0xa1, 0x48, 0x17,
111
    0x96, 0x23, 0x85, 0x9a, 0x57, 0x77, 0xe9, 0x22,
112
    0xa2, 0x37, 0x03, 0xba, 0x49, 0x77, 0x40, 0x3b,
113
    0x76, 0x4b, 0xda, 0xc1, 0x04, 0x57, 0x55, 0x34,
114
    0x22, 0x83, 0x45, 0x29, 0xab, 0x2e, 0x11, 0xff,
115
    0x0d, 0xab, 0x55, 0xb1, 0xa7, 0x58, 0x59, 0x05,
116
    0x25, 0xf9, 0x1e, 0x3d, 0xb7, 0xac, 0x04, 0x39,
117
    0x2c, 0xf9, 0xaf, 0xb8, 0x68, 0xfb, 0x8e, 0x35,
118
    0x71, 0x32, 0xff, 0x70, 0xe9, 0x46, 0x6d, 0x5c,
119
    0x06, 0x90, 0x88, 0x23, 0x48, 0x0c, 0x50, 0xeb,
120
    0x0a, 0xa9, 0xae, 0xe8, 0xfc, 0xbe, 0xa5, 0x76,
121
    0x94, 0xd7, 0x64, 0x22, 0x38, 0x98, 0x17, 0xa4,
122
    0x3a, 0xa7, 0x59, 0x9f, 0x1d, 0x3b, 0x75, 0x90,
123
    0x1a, 0x81, 0xef, 0x19, 0xfb, 0x2b, 0xb7, 0xa7,
124
    0x64, 0x61, 0x22, 0xa4, 0x6f, 0x7b, 0xfa, 0x58,
125
    0xbb, 0x8c, 0x4e, 0x77, 0x67, 0xd0, 0x5d, 0x58,
126
    0x76, 0x8a, 0xbb
127
};
128
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
/*
285
 *  -----BEGIN EC PRIVATE KEY-----
286
 *  MHcCAQEEIJLyl7hJjpQL/RhP1x2zS79xdiPJQB683gWeqcqHPeZkoAoGCCqGSM49
287
 *  AwEHoUQDQgAEdsjygVYjjaKBF4CNECVllNf017p5/MxNSWDoTHy9I2GeDwEDDazI
288
 *  D/xy8JiYjtPKVE/Zqwbmivp2UwtH28a7NQ==
289
 *  -----END EC PRIVATE KEY-----
290
 */
291
static const char ECDSAPrivateKeyPEM[] = {
292
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x45,
293
    0x43, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b, 0x45,
294
    0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x48, 0x63, 0x43, 0x41,
295
    0x51, 0x45, 0x45, 0x49, 0x4a, 0x4c, 0x79, 0x6c, 0x37, 0x68, 0x4a, 0x6a,
296
    0x70, 0x51, 0x4c, 0x2f, 0x52, 0x68, 0x50, 0x31, 0x78, 0x32, 0x7a, 0x53,
297
    0x37, 0x39, 0x78, 0x64, 0x69, 0x50, 0x4a, 0x51, 0x42, 0x36, 0x38, 0x33,
298
    0x67, 0x57, 0x65, 0x71, 0x63, 0x71, 0x48, 0x50, 0x65, 0x5a, 0x6b, 0x6f,
299
    0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x0a,
300
    0x41, 0x77, 0x45, 0x48, 0x6f, 0x55, 0x51, 0x44, 0x51, 0x67, 0x41, 0x45,
301
    0x64, 0x73, 0x6a, 0x79, 0x67, 0x56, 0x59, 0x6a, 0x6a, 0x61, 0x4b, 0x42,
302
    0x46, 0x34, 0x43, 0x4e, 0x45, 0x43, 0x56, 0x6c, 0x6c, 0x4e, 0x66, 0x30,
303
    0x31, 0x37, 0x70, 0x35, 0x2f, 0x4d, 0x78, 0x4e, 0x53, 0x57, 0x44, 0x6f,
304
    0x54, 0x48, 0x79, 0x39, 0x49, 0x32, 0x47, 0x65, 0x44, 0x77, 0x45, 0x44,
305
    0x44, 0x61, 0x7a, 0x49, 0x0a, 0x44, 0x2f, 0x78, 0x79, 0x38, 0x4a, 0x69,
306
    0x59, 0x6a, 0x74, 0x50, 0x4b, 0x56, 0x45, 0x2f, 0x5a, 0x71, 0x77, 0x62,
307
    0x6d, 0x69, 0x76, 0x70, 0x32, 0x55, 0x77, 0x74, 0x48, 0x32, 0x38, 0x61,
308
    0x37, 0x4e, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45,
309
    0x4e, 0x44, 0x20, 0x45, 0x43, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54,
310
    0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
311
};
312
313
/*
314
 * -----BEGIN CERTIFICATE-----
315
 *  MIIBXzCCAQagAwIBAgIJAK6/Yvf/ain6MAoGCCqGSM49BAMCMBIxEDAOBgNVBAoM
316
 *  B0FjbWUgQ28wHhcNMTYxMjI1MTEzOTI3WhcNMjYxMjI1MTEzOTI3WjASMRAwDgYD
317
 *  VQQKDAdBY21lIENvMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdsjygVYjjaKB
318
 *  F4CNECVllNf017p5/MxNSWDoTHy9I2GeDwEDDazID/xy8JiYjtPKVE/Zqwbmivp2
319
 *  UwtH28a7NaNFMEMwCQYDVR0TBAIwADALBgNVHQ8EBAMCBaAwEwYDVR0lBAwwCgYI
320
 *  KwYBBQUHAwEwFAYDVR0RBA0wC4IJbG9jYWxob3N0MAoGCCqGSM49BAMCA0cAMEQC
321
 *  IEzr3t/jejVE9oSnBp8c3P2p+lDLVRrB8zxLyjZvirUXAiAyQPaE9MNcL8/nRpuu
322
 *  99I1enCSmWIAJ57IwuJ/n1d45Q==
323
 *  -----END CERTIFICATE-----
324
 */
325
static const char ECDSACertPEM[] = {
326
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
327
    0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
328
    0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42, 0x58, 0x7a, 0x43, 0x43,
329
    0x41, 0x51, 0x61, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a,
330
    0x41, 0x4b, 0x36, 0x2f, 0x59, 0x76, 0x66, 0x2f, 0x61, 0x69, 0x6e, 0x36,
331
    0x4d, 0x41, 0x6f, 0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39,
332
    0x42, 0x41, 0x4d, 0x43, 0x4d, 0x42, 0x49, 0x78, 0x45, 0x44, 0x41, 0x4f,
333
    0x42, 0x67, 0x4e, 0x56, 0x42, 0x41, 0x6f, 0x4d, 0x0a, 0x42, 0x30, 0x46,
334
    0x6a, 0x62, 0x57, 0x55, 0x67, 0x51, 0x32, 0x38, 0x77, 0x48, 0x68, 0x63,
335
    0x4e, 0x4d, 0x54, 0x59, 0x78, 0x4d, 0x6a, 0x49, 0x31, 0x4d, 0x54, 0x45,
336
    0x7a, 0x4f, 0x54, 0x49, 0x33, 0x57, 0x68, 0x63, 0x4e, 0x4d, 0x6a, 0x59,
337
    0x78, 0x4d, 0x6a, 0x49, 0x31, 0x4d, 0x54, 0x45, 0x7a, 0x4f, 0x54, 0x49,
338
    0x33, 0x57, 0x6a, 0x41, 0x53, 0x4d, 0x52, 0x41, 0x77, 0x44, 0x67, 0x59,
339
    0x44, 0x0a, 0x56, 0x51, 0x51, 0x4b, 0x44, 0x41, 0x64, 0x42, 0x59, 0x32,
340
    0x31, 0x6c, 0x49, 0x45, 0x4e, 0x76, 0x4d, 0x46, 0x6b, 0x77, 0x45, 0x77,
341
    0x59, 0x48, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x43, 0x41, 0x51,
342
    0x59, 0x49, 0x4b, 0x6f, 0x5a, 0x49, 0x7a, 0x6a, 0x30, 0x44, 0x41, 0x51,
343
    0x63, 0x44, 0x51, 0x67, 0x41, 0x45, 0x64, 0x73, 0x6a, 0x79, 0x67, 0x56,
344
    0x59, 0x6a, 0x6a, 0x61, 0x4b, 0x42, 0x0a, 0x46, 0x34, 0x43, 0x4e, 0x45,
345
    0x43, 0x56, 0x6c, 0x6c, 0x4e, 0x66, 0x30, 0x31, 0x37, 0x70, 0x35, 0x2f,
346
    0x4d, 0x78, 0x4e, 0x53, 0x57, 0x44, 0x6f, 0x54, 0x48, 0x79, 0x39, 0x49,
347
    0x32, 0x47, 0x65, 0x44, 0x77, 0x45, 0x44, 0x44, 0x61, 0x7a, 0x49, 0x44,
348
    0x2f, 0x78, 0x79, 0x38, 0x4a, 0x69, 0x59, 0x6a, 0x74, 0x50, 0x4b, 0x56,
349
    0x45, 0x2f, 0x5a, 0x71, 0x77, 0x62, 0x6d, 0x69, 0x76, 0x70, 0x32, 0x0a,
350
    0x55, 0x77, 0x74, 0x48, 0x32, 0x38, 0x61, 0x37, 0x4e, 0x61, 0x4e, 0x46,
351
    0x4d, 0x45, 0x4d, 0x77, 0x43, 0x51, 0x59, 0x44, 0x56, 0x52, 0x30, 0x54,
352
    0x42, 0x41, 0x49, 0x77, 0x41, 0x44, 0x41, 0x4c, 0x42, 0x67, 0x4e, 0x56,
353
    0x48, 0x51, 0x38, 0x45, 0x42, 0x41, 0x4d, 0x43, 0x42, 0x61, 0x41, 0x77,
354
    0x45, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6c, 0x42, 0x41, 0x77, 0x77,
355
    0x43, 0x67, 0x59, 0x49, 0x0a, 0x4b, 0x77, 0x59, 0x42, 0x42, 0x51, 0x55,
356
    0x48, 0x41, 0x77, 0x45, 0x77, 0x46, 0x41, 0x59, 0x44, 0x56, 0x52, 0x30,
357
    0x52, 0x42, 0x41, 0x30, 0x77, 0x43, 0x34, 0x49, 0x4a, 0x62, 0x47, 0x39,
358
    0x6a, 0x59, 0x57, 0x78, 0x6f, 0x62, 0x33, 0x4e, 0x30, 0x4d, 0x41, 0x6f,
359
    0x47, 0x43, 0x43, 0x71, 0x47, 0x53, 0x4d, 0x34, 0x39, 0x42, 0x41, 0x4d,
360
    0x43, 0x41, 0x30, 0x63, 0x41, 0x4d, 0x45, 0x51, 0x43, 0x0a, 0x49, 0x45,
361
    0x7a, 0x72, 0x33, 0x74, 0x2f, 0x6a, 0x65, 0x6a, 0x56, 0x45, 0x39, 0x6f,
362
    0x53, 0x6e, 0x42, 0x70, 0x38, 0x63, 0x33, 0x50, 0x32, 0x70, 0x2b, 0x6c,
363
    0x44, 0x4c, 0x56, 0x52, 0x72, 0x42, 0x38, 0x7a, 0x78, 0x4c, 0x79, 0x6a,
364
    0x5a, 0x76, 0x69, 0x72, 0x55, 0x58, 0x41, 0x69, 0x41, 0x79, 0x51, 0x50,
365
    0x61, 0x45, 0x39, 0x4d, 0x4e, 0x63, 0x4c, 0x38, 0x2f, 0x6e, 0x52, 0x70,
366
    0x75, 0x75, 0x0a, 0x39, 0x39, 0x49, 0x31, 0x65, 0x6e, 0x43, 0x53, 0x6d,
367
    0x57, 0x49, 0x41, 0x4a, 0x35, 0x37, 0x49, 0x77, 0x75, 0x4a, 0x2f, 0x6e,
368
    0x31, 0x64, 0x34, 0x35, 0x51, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d,
369
    0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49,
370
    0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
371
};
372
#endif
373
374
#ifndef OPENSSL_NO_DSA
375
/*
376
 * -----BEGIN DSA PRIVATE KEY-----
377
 * MIIBuwIBAAKBgQDdkFKzNABLOha7Eqj7004+p5fhtR6bxpujToMmSZTYi8igVVXP
378
 * Wzf03ULKS5UKjA6WpR6EiZAhm+PdxusZ5xfAuRZLdKy0bgxn1f348Rwh+EQNaEM8
379
 * 0TGcnw5ijwKmSw5yyHPDWdiHzoqEBlhAf8Nl22YTXax/clsc/pu/RRLAdwIVAIEg
380
 * QqWRf/1EIZZcgM65Qpd65YuxAoGBAKBauV/RuloFHoSy5iWXESDywiS380tN5974
381
 * GukGwoYdZo5uSIH6ahpeNSef0MbHGAzr7ZVEnhCQfRAwH1gRvSHoq/Rbmcvtd3r+
382
 * QtQHOwvQHgLAynhI4i73c794czHaR+439bmcaSwDnQduRM85Mho/jiiZzAVPxBmG
383
 * POIMWNXXAoGAI6Ep5IE7yn3JzkXO9B6tC3bbDM+ZzuuInwZLbtZ8lim7Dsqabg4k
384
 * 2YbE4R95Bnfwnjsyl80mq/DbQN5lAHBvjDrkC6ItojBGKI3+iIrqGUEJdxvl4ulj
385
 * F0PmSD7zvIG8BfocKOel+EHH0YryExiW6krV1KW2ZRmJrqSFw6KCjV0CFFQFbPfU
386
 * xy5PmKytJmXR8BmppkIO
387
 * -----END DSA PRIVATE KEY-----
388
 */
389
static const char DSAPrivateKeyPEM[] = {
390
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x44,
391
    0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
392
    0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x42,
393
    0x75, 0x77, 0x49, 0x42, 0x41, 0x41, 0x4b, 0x42, 0x67, 0x51, 0x44, 0x64,
394
    0x6b, 0x46, 0x4b, 0x7a, 0x4e, 0x41, 0x42, 0x4c, 0x4f, 0x68, 0x61, 0x37,
395
    0x45, 0x71, 0x6a, 0x37, 0x30, 0x30, 0x34, 0x2b, 0x70, 0x35, 0x66, 0x68,
396
    0x74, 0x52, 0x36, 0x62, 0x78, 0x70, 0x75, 0x6a, 0x54, 0x6f, 0x4d, 0x6d,
397
    0x53, 0x5a, 0x54, 0x59, 0x69, 0x38, 0x69, 0x67, 0x56, 0x56, 0x58, 0x50,
398
    0x0a, 0x57, 0x7a, 0x66, 0x30, 0x33, 0x55, 0x4c, 0x4b, 0x53, 0x35, 0x55,
399
    0x4b, 0x6a, 0x41, 0x36, 0x57, 0x70, 0x52, 0x36, 0x45, 0x69, 0x5a, 0x41,
400
    0x68, 0x6d, 0x2b, 0x50, 0x64, 0x78, 0x75, 0x73, 0x5a, 0x35, 0x78, 0x66,
401
    0x41, 0x75, 0x52, 0x5a, 0x4c, 0x64, 0x4b, 0x79, 0x30, 0x62, 0x67, 0x78,
402
    0x6e, 0x31, 0x66, 0x33, 0x34, 0x38, 0x52, 0x77, 0x68, 0x2b, 0x45, 0x51,
403
    0x4e, 0x61, 0x45, 0x4d, 0x38, 0x0a, 0x30, 0x54, 0x47, 0x63, 0x6e, 0x77,
404
    0x35, 0x69, 0x6a, 0x77, 0x4b, 0x6d, 0x53, 0x77, 0x35, 0x79, 0x79, 0x48,
405
    0x50, 0x44, 0x57, 0x64, 0x69, 0x48, 0x7a, 0x6f, 0x71, 0x45, 0x42, 0x6c,
406
    0x68, 0x41, 0x66, 0x38, 0x4e, 0x6c, 0x32, 0x32, 0x59, 0x54, 0x58, 0x61,
407
    0x78, 0x2f, 0x63, 0x6c, 0x73, 0x63, 0x2f, 0x70, 0x75, 0x2f, 0x52, 0x52,
408
    0x4c, 0x41, 0x64, 0x77, 0x49, 0x56, 0x41, 0x49, 0x45, 0x67, 0x0a, 0x51,
409
    0x71, 0x57, 0x52, 0x66, 0x2f, 0x31, 0x45, 0x49, 0x5a, 0x5a, 0x63, 0x67,
410
    0x4d, 0x36, 0x35, 0x51, 0x70, 0x64, 0x36, 0x35, 0x59, 0x75, 0x78, 0x41,
411
    0x6f, 0x47, 0x42, 0x41, 0x4b, 0x42, 0x61, 0x75, 0x56, 0x2f, 0x52, 0x75,
412
    0x6c, 0x6f, 0x46, 0x48, 0x6f, 0x53, 0x79, 0x35, 0x69, 0x57, 0x58, 0x45,
413
    0x53, 0x44, 0x79, 0x77, 0x69, 0x53, 0x33, 0x38, 0x30, 0x74, 0x4e, 0x35,
414
    0x39, 0x37, 0x34, 0x0a, 0x47, 0x75, 0x6b, 0x47, 0x77, 0x6f, 0x59, 0x64,
415
    0x5a, 0x6f, 0x35, 0x75, 0x53, 0x49, 0x48, 0x36, 0x61, 0x68, 0x70, 0x65,
416
    0x4e, 0x53, 0x65, 0x66, 0x30, 0x4d, 0x62, 0x48, 0x47, 0x41, 0x7a, 0x72,
417
    0x37, 0x5a, 0x56, 0x45, 0x6e, 0x68, 0x43, 0x51, 0x66, 0x52, 0x41, 0x77,
418
    0x48, 0x31, 0x67, 0x52, 0x76, 0x53, 0x48, 0x6f, 0x71, 0x2f, 0x52, 0x62,
419
    0x6d, 0x63, 0x76, 0x74, 0x64, 0x33, 0x72, 0x2b, 0x0a, 0x51, 0x74, 0x51,
420
    0x48, 0x4f, 0x77, 0x76, 0x51, 0x48, 0x67, 0x4c, 0x41, 0x79, 0x6e, 0x68,
421
    0x49, 0x34, 0x69, 0x37, 0x33, 0x63, 0x37, 0x39, 0x34, 0x63, 0x7a, 0x48,
422
    0x61, 0x52, 0x2b, 0x34, 0x33, 0x39, 0x62, 0x6d, 0x63, 0x61, 0x53, 0x77,
423
    0x44, 0x6e, 0x51, 0x64, 0x75, 0x52, 0x4d, 0x38, 0x35, 0x4d, 0x68, 0x6f,
424
    0x2f, 0x6a, 0x69, 0x69, 0x5a, 0x7a, 0x41, 0x56, 0x50, 0x78, 0x42, 0x6d,
425
    0x47, 0x0a, 0x50, 0x4f, 0x49, 0x4d, 0x57, 0x4e, 0x58, 0x58, 0x41, 0x6f,
426
    0x47, 0x41, 0x49, 0x36, 0x45, 0x70, 0x35, 0x49, 0x45, 0x37, 0x79, 0x6e,
427
    0x33, 0x4a, 0x7a, 0x6b, 0x58, 0x4f, 0x39, 0x42, 0x36, 0x74, 0x43, 0x33,
428
    0x62, 0x62, 0x44, 0x4d, 0x2b, 0x5a, 0x7a, 0x75, 0x75, 0x49, 0x6e, 0x77,
429
    0x5a, 0x4c, 0x62, 0x74, 0x5a, 0x38, 0x6c, 0x69, 0x6d, 0x37, 0x44, 0x73,
430
    0x71, 0x61, 0x62, 0x67, 0x34, 0x6b, 0x0a, 0x32, 0x59, 0x62, 0x45, 0x34,
431
    0x52, 0x39, 0x35, 0x42, 0x6e, 0x66, 0x77, 0x6e, 0x6a, 0x73, 0x79, 0x6c,
432
    0x38, 0x30, 0x6d, 0x71, 0x2f, 0x44, 0x62, 0x51, 0x4e, 0x35, 0x6c, 0x41,
433
    0x48, 0x42, 0x76, 0x6a, 0x44, 0x72, 0x6b, 0x43, 0x36, 0x49, 0x74, 0x6f,
434
    0x6a, 0x42, 0x47, 0x4b, 0x49, 0x33, 0x2b, 0x69, 0x49, 0x72, 0x71, 0x47,
435
    0x55, 0x45, 0x4a, 0x64, 0x78, 0x76, 0x6c, 0x34, 0x75, 0x6c, 0x6a, 0x0a,
436
    0x46, 0x30, 0x50, 0x6d, 0x53, 0x44, 0x37, 0x7a, 0x76, 0x49, 0x47, 0x38,
437
    0x42, 0x66, 0x6f, 0x63, 0x4b, 0x4f, 0x65, 0x6c, 0x2b, 0x45, 0x48, 0x48,
438
    0x30, 0x59, 0x72, 0x79, 0x45, 0x78, 0x69, 0x57, 0x36, 0x6b, 0x72, 0x56,
439
    0x31, 0x4b, 0x57, 0x32, 0x5a, 0x52, 0x6d, 0x4a, 0x72, 0x71, 0x53, 0x46,
440
    0x77, 0x36, 0x4b, 0x43, 0x6a, 0x56, 0x30, 0x43, 0x46, 0x46, 0x51, 0x46,
441
    0x62, 0x50, 0x66, 0x55, 0x0a, 0x78, 0x79, 0x35, 0x50, 0x6d, 0x4b, 0x79,
442
    0x74, 0x4a, 0x6d, 0x58, 0x52, 0x38, 0x42, 0x6d, 0x70, 0x70, 0x6b, 0x49,
443
    0x4f, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x44,
444
    0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
445
    0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a
446
};
447
448
/*
449
 * -----BEGIN CERTIFICATE-----
450
 * MIICqTCCAmegAwIBAgIJAILDGUk37fWGMAsGCWCGSAFlAwQDAjASMRAwDgYDVQQK
451
 * DAdBY21lIENvMB4XDTE2MTIyNTEzMjUzNloXDTI2MTIyNTEzMjUzNlowEjEQMA4G
452
 * A1UECgwHQWNtZSBDbzCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQDdkFKzNABLOha7
453
 * Eqj7004+p5fhtR6bxpujToMmSZTYi8igVVXPWzf03ULKS5UKjA6WpR6EiZAhm+Pd
454
 * xusZ5xfAuRZLdKy0bgxn1f348Rwh+EQNaEM80TGcnw5ijwKmSw5yyHPDWdiHzoqE
455
 * BlhAf8Nl22YTXax/clsc/pu/RRLAdwIVAIEgQqWRf/1EIZZcgM65Qpd65YuxAoGB
456
 * AKBauV/RuloFHoSy5iWXESDywiS380tN5974GukGwoYdZo5uSIH6ahpeNSef0MbH
457
 * GAzr7ZVEnhCQfRAwH1gRvSHoq/Rbmcvtd3r+QtQHOwvQHgLAynhI4i73c794czHa
458
 * R+439bmcaSwDnQduRM85Mho/jiiZzAVPxBmGPOIMWNXXA4GEAAKBgCOhKeSBO8p9
459
 * yc5FzvQerQt22wzPmc7riJ8GS27WfJYpuw7Kmm4OJNmGxOEfeQZ38J47MpfNJqvw
460
 * 20DeZQBwb4w65AuiLaIwRiiN/oiK6hlBCXcb5eLpYxdD5kg+87yBvAX6HCjnpfhB
461
 * x9GK8hMYlupK1dSltmUZia6khcOigo1do0UwQzAJBgNVHRMEAjAAMAsGA1UdDwQE
462
 * AwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAUBgNVHREEDTALgglsb2NhbGhvc3Qw
463
 * CwYJYIZIAWUDBAMCAy8AMCwCFClxInXTRWNJEWdi5ilNr/fbM1bKAhQy4B7wtmfd
464
 * I+zV6g3w9qBkNqStpA==
465
 * -----END CERTIFICATE-----
466
 */
467
static const char DSACertPEM[] = {
468
    0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
469
    0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
470
    0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x71, 0x54, 0x43, 0x43,
471
    0x41, 0x6d, 0x65, 0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x4a,
472
    0x41, 0x49, 0x4c, 0x44, 0x47, 0x55, 0x6b, 0x33, 0x37, 0x66, 0x57, 0x47,
473
    0x4d, 0x41, 0x73, 0x47, 0x43, 0x57, 0x43, 0x47, 0x53, 0x41, 0x46, 0x6c,
474
    0x41, 0x77, 0x51, 0x44, 0x41, 0x6a, 0x41, 0x53, 0x4d, 0x52, 0x41, 0x77,
475
    0x44, 0x67, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4b, 0x0a, 0x44, 0x41, 0x64,
476
    0x42, 0x59, 0x32, 0x31, 0x6c, 0x49, 0x45, 0x4e, 0x76, 0x4d, 0x42, 0x34,
477
    0x58, 0x44, 0x54, 0x45, 0x32, 0x4d, 0x54, 0x49, 0x79, 0x4e, 0x54, 0x45,
478
    0x7a, 0x4d, 0x6a, 0x55, 0x7a, 0x4e, 0x6c, 0x6f, 0x58, 0x44, 0x54, 0x49,
479
    0x32, 0x4d, 0x54, 0x49, 0x79, 0x4e, 0x54, 0x45, 0x7a, 0x4d, 0x6a, 0x55,
480
    0x7a, 0x4e, 0x6c, 0x6f, 0x77, 0x45, 0x6a, 0x45, 0x51, 0x4d, 0x41, 0x34,
481
    0x47, 0x0a, 0x41, 0x31, 0x55, 0x45, 0x43, 0x67, 0x77, 0x48, 0x51, 0x57,
482
    0x4e, 0x74, 0x5a, 0x53, 0x42, 0x44, 0x62, 0x7a, 0x43, 0x43, 0x41, 0x62,
483
    0x63, 0x77, 0x67, 0x67, 0x45, 0x73, 0x42, 0x67, 0x63, 0x71, 0x68, 0x6b,
484
    0x6a, 0x4f, 0x4f, 0x41, 0x51, 0x42, 0x4d, 0x49, 0x49, 0x42, 0x48, 0x77,
485
    0x4b, 0x42, 0x67, 0x51, 0x44, 0x64, 0x6b, 0x46, 0x4b, 0x7a, 0x4e, 0x41,
486
    0x42, 0x4c, 0x4f, 0x68, 0x61, 0x37, 0x0a, 0x45, 0x71, 0x6a, 0x37, 0x30,
487
    0x30, 0x34, 0x2b, 0x70, 0x35, 0x66, 0x68, 0x74, 0x52, 0x36, 0x62, 0x78,
488
    0x70, 0x75, 0x6a, 0x54, 0x6f, 0x4d, 0x6d, 0x53, 0x5a, 0x54, 0x59, 0x69,
489
    0x38, 0x69, 0x67, 0x56, 0x56, 0x58, 0x50, 0x57, 0x7a, 0x66, 0x30, 0x33,
490
    0x55, 0x4c, 0x4b, 0x53, 0x35, 0x55, 0x4b, 0x6a, 0x41, 0x36, 0x57, 0x70,
491
    0x52, 0x36, 0x45, 0x69, 0x5a, 0x41, 0x68, 0x6d, 0x2b, 0x50, 0x64, 0x0a,
492
    0x78, 0x75, 0x73, 0x5a, 0x35, 0x78, 0x66, 0x41, 0x75, 0x52, 0x5a, 0x4c,
493
    0x64, 0x4b, 0x79, 0x30, 0x62, 0x67, 0x78, 0x6e, 0x31, 0x66, 0x33, 0x34,
494
    0x38, 0x52, 0x77, 0x68, 0x2b, 0x45, 0x51, 0x4e, 0x61, 0x45, 0x4d, 0x38,
495
    0x30, 0x54, 0x47, 0x63, 0x6e, 0x77, 0x35, 0x69, 0x6a, 0x77, 0x4b, 0x6d,
496
    0x53, 0x77, 0x35, 0x79, 0x79, 0x48, 0x50, 0x44, 0x57, 0x64, 0x69, 0x48,
497
    0x7a, 0x6f, 0x71, 0x45, 0x0a, 0x42, 0x6c, 0x68, 0x41, 0x66, 0x38, 0x4e,
498
    0x6c, 0x32, 0x32, 0x59, 0x54, 0x58, 0x61, 0x78, 0x2f, 0x63, 0x6c, 0x73,
499
    0x63, 0x2f, 0x70, 0x75, 0x2f, 0x52, 0x52, 0x4c, 0x41, 0x64, 0x77, 0x49,
500
    0x56, 0x41, 0x49, 0x45, 0x67, 0x51, 0x71, 0x57, 0x52, 0x66, 0x2f, 0x31,
501
    0x45, 0x49, 0x5a, 0x5a, 0x63, 0x67, 0x4d, 0x36, 0x35, 0x51, 0x70, 0x64,
502
    0x36, 0x35, 0x59, 0x75, 0x78, 0x41, 0x6f, 0x47, 0x42, 0x0a, 0x41, 0x4b,
503
    0x42, 0x61, 0x75, 0x56, 0x2f, 0x52, 0x75, 0x6c, 0x6f, 0x46, 0x48, 0x6f,
504
    0x53, 0x79, 0x35, 0x69, 0x57, 0x58, 0x45, 0x53, 0x44, 0x79, 0x77, 0x69,
505
    0x53, 0x33, 0x38, 0x30, 0x74, 0x4e, 0x35, 0x39, 0x37, 0x34, 0x47, 0x75,
506
    0x6b, 0x47, 0x77, 0x6f, 0x59, 0x64, 0x5a, 0x6f, 0x35, 0x75, 0x53, 0x49,
507
    0x48, 0x36, 0x61, 0x68, 0x70, 0x65, 0x4e, 0x53, 0x65, 0x66, 0x30, 0x4d,
508
    0x62, 0x48, 0x0a, 0x47, 0x41, 0x7a, 0x72, 0x37, 0x5a, 0x56, 0x45, 0x6e,
509
    0x68, 0x43, 0x51, 0x66, 0x52, 0x41, 0x77, 0x48, 0x31, 0x67, 0x52, 0x76,
510
    0x53, 0x48, 0x6f, 0x71, 0x2f, 0x52, 0x62, 0x6d, 0x63, 0x76, 0x74, 0x64,
511
    0x33, 0x72, 0x2b, 0x51, 0x74, 0x51, 0x48, 0x4f, 0x77, 0x76, 0x51, 0x48,
512
    0x67, 0x4c, 0x41, 0x79, 0x6e, 0x68, 0x49, 0x34, 0x69, 0x37, 0x33, 0x63,
513
    0x37, 0x39, 0x34, 0x63, 0x7a, 0x48, 0x61, 0x0a, 0x52, 0x2b, 0x34, 0x33,
514
    0x39, 0x62, 0x6d, 0x63, 0x61, 0x53, 0x77, 0x44, 0x6e, 0x51, 0x64, 0x75,
515
    0x52, 0x4d, 0x38, 0x35, 0x4d, 0x68, 0x6f, 0x2f, 0x6a, 0x69, 0x69, 0x5a,
516
    0x7a, 0x41, 0x56, 0x50, 0x78, 0x42, 0x6d, 0x47, 0x50, 0x4f, 0x49, 0x4d,
517
    0x57, 0x4e, 0x58, 0x58, 0x41, 0x34, 0x47, 0x45, 0x41, 0x41, 0x4b, 0x42,
518
    0x67, 0x43, 0x4f, 0x68, 0x4b, 0x65, 0x53, 0x42, 0x4f, 0x38, 0x70, 0x39,
519
    0x0a, 0x79, 0x63, 0x35, 0x46, 0x7a, 0x76, 0x51, 0x65, 0x72, 0x51, 0x74,
520
    0x32, 0x32, 0x77, 0x7a, 0x50, 0x6d, 0x63, 0x37, 0x72, 0x69, 0x4a, 0x38,
521
    0x47, 0x53, 0x32, 0x37, 0x57, 0x66, 0x4a, 0x59, 0x70, 0x75, 0x77, 0x37,
522
    0x4b, 0x6d, 0x6d, 0x34, 0x4f, 0x4a, 0x4e, 0x6d, 0x47, 0x78, 0x4f, 0x45,
523
    0x66, 0x65, 0x51, 0x5a, 0x33, 0x38, 0x4a, 0x34, 0x37, 0x4d, 0x70, 0x66,
524
    0x4e, 0x4a, 0x71, 0x76, 0x77, 0x0a, 0x32, 0x30, 0x44, 0x65, 0x5a, 0x51,
525
    0x42, 0x77, 0x62, 0x34, 0x77, 0x36, 0x35, 0x41, 0x75, 0x69, 0x4c, 0x61,
526
    0x49, 0x77, 0x52, 0x69, 0x69, 0x4e, 0x2f, 0x6f, 0x69, 0x4b, 0x36, 0x68,
527
    0x6c, 0x42, 0x43, 0x58, 0x63, 0x62, 0x35, 0x65, 0x4c, 0x70, 0x59, 0x78,
528
    0x64, 0x44, 0x35, 0x6b, 0x67, 0x2b, 0x38, 0x37, 0x79, 0x42, 0x76, 0x41,
529
    0x58, 0x36, 0x48, 0x43, 0x6a, 0x6e, 0x70, 0x66, 0x68, 0x42, 0x0a, 0x78,
530
    0x39, 0x47, 0x4b, 0x38, 0x68, 0x4d, 0x59, 0x6c, 0x75, 0x70, 0x4b, 0x31,
531
    0x64, 0x53, 0x6c, 0x74, 0x6d, 0x55, 0x5a, 0x69, 0x61, 0x36, 0x6b, 0x68,
532
    0x63, 0x4f, 0x69, 0x67, 0x6f, 0x31, 0x64, 0x6f, 0x30, 0x55, 0x77, 0x51,
533
    0x7a, 0x41, 0x4a, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x4d, 0x45, 0x41,
534
    0x6a, 0x41, 0x41, 0x4d, 0x41, 0x73, 0x47, 0x41, 0x31, 0x55, 0x64, 0x44,
535
    0x77, 0x51, 0x45, 0x0a, 0x41, 0x77, 0x49, 0x46, 0x6f, 0x44, 0x41, 0x54,
536
    0x42, 0x67, 0x4e, 0x56, 0x48, 0x53, 0x55, 0x45, 0x44, 0x44, 0x41, 0x4b,
537
    0x42, 0x67, 0x67, 0x72, 0x42, 0x67, 0x45, 0x46, 0x42, 0x51, 0x63, 0x44,
538
    0x41, 0x54, 0x41, 0x55, 0x42, 0x67, 0x4e, 0x56, 0x48, 0x52, 0x45, 0x45,
539
    0x44, 0x54, 0x41, 0x4c, 0x67, 0x67, 0x6c, 0x73, 0x62, 0x32, 0x4e, 0x68,
540
    0x62, 0x47, 0x68, 0x76, 0x63, 0x33, 0x51, 0x77, 0x0a, 0x43, 0x77, 0x59,
541
    0x4a, 0x59, 0x49, 0x5a, 0x49, 0x41, 0x57, 0x55, 0x44, 0x42, 0x41, 0x4d,
542
    0x43, 0x41, 0x79, 0x38, 0x41, 0x4d, 0x43, 0x77, 0x43, 0x46, 0x43, 0x6c,
543
    0x78, 0x49, 0x6e, 0x58, 0x54, 0x52, 0x57, 0x4e, 0x4a, 0x45, 0x57, 0x64,
544
    0x69, 0x35, 0x69, 0x6c, 0x4e, 0x72, 0x2f, 0x66, 0x62, 0x4d, 0x31, 0x62,
545
    0x4b, 0x41, 0x68, 0x51, 0x79, 0x34, 0x42, 0x37, 0x77, 0x74, 0x6d, 0x66,
546
    0x64, 0x0a, 0x49, 0x2b, 0x7a, 0x56, 0x36, 0x67, 0x33, 0x77, 0x39, 0x71,
547
    0x42, 0x6b, 0x4e, 0x71, 0x53, 0x74, 0x70, 0x41, 0x3d, 0x3d, 0x0a, 0x2d,
548
    0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54,
549
    0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
550
    0x0a
551
};
552
#endif
553
554
/* unused, to avoid warning. */
555
static int idx;
556
557
1.52k
#define FUZZTIME 1485898104
558
559
#define TIME_IMPL(t)       \
560
930
    {                      \
561
930
        if (t != NULL)     \
562
930
            *t = FUZZTIME; \
563
930
        return FUZZTIME;   \
564
930
    }
565
566
/*
567
 * This might not work in all cases (and definitely not on Windows
568
 * because of the way linkers are) and callees can still get the
569
 * current time instead of the fixed time. This will just result
570
 * in things not being fully reproducible and have a slightly
571
 * different coverage.
572
 */
573
#if !defined(_WIN32)
574
930
time_t time(time_t *t) TIME_IMPL(t)
575
#endif
576
577
    int FuzzerInitialize(int *argc, char ***argv)
578
64
{
579
64
    STACK_OF(SSL_COMP) *comp_methods;
580
581
64
    FuzzerSetRand();
582
64
    OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS | OPENSSL_INIT_ASYNC, NULL);
583
64
    OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL);
584
64
    ERR_clear_error();
585
64
    CRYPTO_free_ex_index(0, -1);
586
64
    idx = SSL_get_ex_data_X509_STORE_CTX_idx();
587
64
    comp_methods = SSL_COMP_get_compression_methods();
588
64
    if (comp_methods != NULL)
589
64
        sk_SSL_COMP_sort(comp_methods);
590
591
64
    return 1;
592
64
}
593
594
#if !defined(OPENSSL_NO_EC) || !defined(OPENSSL_NO_DSA)
595
static int use_pem_privkey(SSL_CTX *ctx, const void *pem, size_t pem_len)
596
9.14k
{
597
9.14k
    BIO *bio_buf;
598
9.14k
    EVP_PKEY *pkey;
599
9.14k
    int rv = 0;
600
601
9.14k
    bio_buf = BIO_new(BIO_s_mem());
602
9.14k
    if (bio_buf == NULL)
603
0
        return 0;
604
9.14k
    if ((size_t)BIO_write(bio_buf, pem, (int)pem_len) != pem_len) {
605
0
        BIO_free(bio_buf);
606
0
        return 0;
607
0
    }
608
9.14k
    pkey = PEM_read_bio_PrivateKey(bio_buf, NULL, NULL, NULL);
609
9.14k
    BIO_free(bio_buf);
610
9.14k
    if (pkey == NULL)
611
0
        return 0;
612
9.14k
    if (SSL_CTX_use_PrivateKey(ctx, pkey) == 1)
613
9.14k
        rv = 1;
614
9.14k
    EVP_PKEY_free(pkey);
615
9.14k
    return rv;
616
9.14k
}
617
618
static int use_pem_cert(SSL_CTX *ctx, const void *pem, size_t pem_len)
619
9.14k
{
620
9.14k
    BIO *bio_buf;
621
9.14k
    X509 *cert;
622
9.14k
    int rv = 0;
623
624
9.14k
    bio_buf = BIO_new(BIO_s_mem());
625
9.14k
    if (bio_buf == NULL)
626
0
        return 0;
627
9.14k
    if ((size_t)BIO_write(bio_buf, pem, (int)pem_len) != pem_len) {
628
0
        BIO_free(bio_buf);
629
0
        return 0;
630
0
    }
631
9.14k
    cert = PEM_read_bio_X509(bio_buf, NULL, NULL, NULL);
632
9.14k
    BIO_free(bio_buf);
633
9.14k
    if (cert == NULL)
634
0
        return 0;
635
9.14k
    if (SSL_CTX_use_certificate(ctx, cert) == 1)
636
9.14k
        rv = 1;
637
9.14k
    X509_free(cert);
638
9.14k
    return rv;
639
9.14k
}
640
#endif
641
642
int FuzzerTestOneInput(const uint8_t *buf, size_t len)
643
4.57k
{
644
4.57k
    SSL *server = NULL;
645
4.57k
    BIO *in;
646
4.57k
    BIO *out;
647
4.57k
    SSL_CTX *ctx;
648
4.57k
#ifndef OPENSSL_NO_DEPRECATED_3_0
649
4.57k
    const uint8_t *bufp;
650
4.57k
    RSA *privkey = NULL;
651
4.57k
    EVP_PKEY *pkey = NULL;
652
4.57k
    X509 *cert = NULL;
653
4.57k
#endif
654
4.57k
    uint8_t opt;
655
4.57k
    int ret;
656
657
4.57k
    if (len < 2 || len > INT_MAX)
658
1
        return 0;
659
660
4.57k
    ctx = SSL_CTX_new(TLS_method());
661
4.57k
    if (ctx == NULL)
662
0
        return 0;
663
4.57k
    if (SSL_CTX_set_min_proto_version(ctx, 0) != 1)
664
0
        goto end;
665
4.57k
    if (SSL_CTX_set_cipher_list(ctx, "ALL:eNULL:@SECLEVEL=0") != 1)
666
0
        goto end;
667
668
4.57k
#ifndef OPENSSL_NO_DEPRECATED_3_0
669
    /* RSA */
670
4.57k
    bufp = kRSAPrivateKeyDER;
671
4.57k
    privkey = d2i_RSAPrivateKey(NULL, &bufp, sizeof(kRSAPrivateKeyDER));
672
4.57k
    if (privkey == NULL)
673
0
        goto end;
674
4.57k
    pkey = EVP_PKEY_new();
675
4.57k
    if (pkey == NULL) {
676
0
        RSA_free(privkey);
677
0
        goto end;
678
0
    }
679
4.57k
    if (!EVP_PKEY_assign_RSA(pkey, privkey)) {
680
        /* assignment failed; pkey doesn't own privkey, clean both */
681
0
        RSA_free(privkey);
682
0
        EVP_PKEY_free(pkey);
683
0
        goto end;
684
0
    }
685
4.57k
    ret = SSL_CTX_use_PrivateKey(ctx, pkey);
686
4.57k
    EVP_PKEY_free(pkey);
687
4.57k
    if (ret != 1)
688
0
        goto end;
689
690
4.57k
    bufp = kCertificateDER;
691
4.57k
    cert = d2i_X509(NULL, &bufp, sizeof(kCertificateDER));
692
4.57k
    if (cert == NULL)
693
0
        goto end;
694
4.57k
    ret = SSL_CTX_use_certificate(ctx, cert);
695
4.57k
    X509_free(cert);
696
4.57k
    if (ret != 1)
697
0
        goto end;
698
4.57k
#endif
699
700
4.57k
#ifndef OPENSSL_NO_EC
701
    /* ECDSA */
702
4.57k
    if (!use_pem_privkey(ctx, ECDSAPrivateKeyPEM, sizeof(ECDSAPrivateKeyPEM)))
703
0
        goto end;
704
4.57k
    if (!use_pem_cert(ctx, ECDSACertPEM, sizeof(ECDSACertPEM)))
705
0
        goto end;
706
4.57k
#endif
707
708
4.57k
#ifndef OPENSSL_NO_DSA
709
    /* DSA */
710
4.57k
    if (!use_pem_privkey(ctx, DSAPrivateKeyPEM, sizeof(DSAPrivateKeyPEM)))
711
0
        goto end;
712
4.57k
    if (!use_pem_cert(ctx, DSACertPEM, sizeof(DSACertPEM)))
713
0
        goto end;
714
4.57k
#endif
715
716
4.57k
    server = SSL_new(ctx);
717
4.57k
    if (server == NULL)
718
0
        goto end;
719
4.57k
    in = BIO_new(BIO_s_mem());
720
4.57k
    if (in == NULL)
721
0
        goto end;
722
4.57k
    out = BIO_new(BIO_s_mem());
723
4.57k
    if (out == NULL) {
724
0
        BIO_free(in);
725
0
        goto end;
726
0
    }
727
4.57k
    SSL_set_bio(server, in, out);
728
4.57k
    SSL_set_accept_state(server);
729
730
4.57k
    opt = (uint8_t)buf[len - 1];
731
4.57k
    len--;
732
733
4.57k
    if ((size_t)BIO_write(in, buf, (int)len) != len)
734
0
        goto end;
735
736
4.57k
    if ((opt & 0x01) != 0) {
737
1.97k
        do {
738
1.97k
            char early_buf[16384];
739
1.97k
            size_t early_len;
740
741
1.97k
            ret = SSL_read_early_data(server, early_buf, sizeof(early_buf),
742
1.97k
                &early_len);
743
744
1.97k
            if (ret != SSL_READ_EARLY_DATA_SUCCESS)
745
1.97k
                break;
746
1.97k
        } while (1);
747
1.97k
    }
748
749
4.57k
    if (SSL_do_handshake(server) == 1) {
750
        /* Keep reading application data until error or EOF. */
751
395
        uint8_t tmp[1024];
752
706
        for (;;) {
753
706
            if (SSL_read(server, tmp, sizeof(tmp)) <= 0) {
754
395
                break;
755
395
            }
756
706
        }
757
395
    }
758
4.57k
end:
759
4.57k
    SSL_free(server);
760
4.57k
    ERR_clear_error();
761
4.57k
    SSL_CTX_free(ctx);
762
763
4.57k
    return 0;
764
4.57k
}
765
766
void FuzzerCleanup(void)
767
0
{
768
0
    FuzzerClearRand();
769
0
}