blob: b834e4aa14ead5cb1e755d8fd4c3625a072a6e20 [file] [log] [blame]
Paul Bakker5121ce52009-01-03 21:22:43 +00001/*
2 * X.509 test certificates
3 *
Bence Szépkúti1e148272020-08-07 13:07:28 +02004 * Copyright The Mbed TLS Contributors
Manuel Pégourié-Gonnard37ff1402015-09-04 14:21:07 +02005 * SPDX-License-Identifier: Apache-2.0
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may
8 * not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
Paul Bakker5121ce52009-01-03 21:22:43 +000018 */
19
Gilles Peskinedb09ef62020-06-03 01:43:33 +020020#include "common.h"
Paul Bakker5121ce52009-01-03 21:22:43 +000021
Mateusz Starzyk1aec6462021-02-08 15:34:42 +010022#include <test/certs.h>
Paul Bakker5121ce52009-01-03 21:22:43 +000023
Andrzej Kurek25f27152022-08-17 16:09:31 -040024#include "mbedtls/build_info.h"
25
Valerio Setti16f02e02023-02-13 11:09:40 +010026#include "mbedtls/pk.h"
Valerio Settid928aeb2023-02-08 14:46:15 +010027
Jerry Yufa0c3992023-05-23 16:10:09 +080028#include "test_certs.h"
Hanno Becker960e5882019-03-12 16:38:17 +000029
30/*
31 *
32 * Test certificates and keys as C variables
33 *
34 */
35
36/*
37 * CA
38 */
39
40const char mbedtls_test_ca_crt_ec_pem[] = TEST_CA_CRT_EC_PEM;
41const char mbedtls_test_ca_key_ec_pem[] = TEST_CA_KEY_EC_PEM;
42const char mbedtls_test_ca_pwd_ec_pem[] = TEST_CA_PWD_EC_PEM;
43const char mbedtls_test_ca_key_rsa_pem[] = TEST_CA_KEY_RSA_PEM;
44const char mbedtls_test_ca_pwd_rsa_pem[] = TEST_CA_PWD_RSA_PEM;
45const char mbedtls_test_ca_crt_rsa_sha1_pem[] = TEST_CA_CRT_RSA_SHA1_PEM;
46const char mbedtls_test_ca_crt_rsa_sha256_pem[] = TEST_CA_CRT_RSA_SHA256_PEM;
47
48const unsigned char mbedtls_test_ca_crt_ec_der[] = TEST_CA_CRT_EC_DER;
49const unsigned char mbedtls_test_ca_key_ec_der[] = TEST_CA_KEY_EC_DER;
50const unsigned char mbedtls_test_ca_key_rsa_der[] = TEST_CA_KEY_RSA_DER;
51const unsigned char mbedtls_test_ca_crt_rsa_sha1_der[] =
52 TEST_CA_CRT_RSA_SHA1_DER;
53const unsigned char mbedtls_test_ca_crt_rsa_sha256_der[] =
54 TEST_CA_CRT_RSA_SHA256_DER;
55
56const size_t mbedtls_test_ca_crt_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010057 sizeof(mbedtls_test_ca_crt_ec_pem);
Hanno Becker960e5882019-03-12 16:38:17 +000058const size_t mbedtls_test_ca_key_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010059 sizeof(mbedtls_test_ca_key_ec_pem);
Hanno Becker960e5882019-03-12 16:38:17 +000060const size_t mbedtls_test_ca_pwd_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010061 sizeof(mbedtls_test_ca_pwd_ec_pem) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +000062const size_t mbedtls_test_ca_key_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010063 sizeof(mbedtls_test_ca_key_rsa_pem);
Hanno Becker960e5882019-03-12 16:38:17 +000064const size_t mbedtls_test_ca_pwd_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010065 sizeof(mbedtls_test_ca_pwd_rsa_pem) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +000066const size_t mbedtls_test_ca_crt_rsa_sha1_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010067 sizeof(mbedtls_test_ca_crt_rsa_sha1_pem);
Hanno Becker960e5882019-03-12 16:38:17 +000068const size_t mbedtls_test_ca_crt_rsa_sha256_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010069 sizeof(mbedtls_test_ca_crt_rsa_sha256_pem);
Hanno Becker960e5882019-03-12 16:38:17 +000070
71const size_t mbedtls_test_ca_crt_ec_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010072 sizeof(mbedtls_test_ca_crt_ec_der);
Hanno Becker960e5882019-03-12 16:38:17 +000073const size_t mbedtls_test_ca_key_ec_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010074 sizeof(mbedtls_test_ca_key_ec_der);
Hanno Becker960e5882019-03-12 16:38:17 +000075const size_t mbedtls_test_ca_pwd_ec_der_len = 0;
76const size_t mbedtls_test_ca_key_rsa_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010077 sizeof(mbedtls_test_ca_key_rsa_der);
Hanno Becker960e5882019-03-12 16:38:17 +000078const size_t mbedtls_test_ca_pwd_rsa_der_len = 0;
79const size_t mbedtls_test_ca_crt_rsa_sha1_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010080 sizeof(mbedtls_test_ca_crt_rsa_sha1_der);
Hanno Becker960e5882019-03-12 16:38:17 +000081const size_t mbedtls_test_ca_crt_rsa_sha256_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +010082 sizeof(mbedtls_test_ca_crt_rsa_sha256_der);
Hanno Becker960e5882019-03-12 16:38:17 +000083
84/*
85 * Server
86 */
87
88const char mbedtls_test_srv_crt_ec_pem[] = TEST_SRV_CRT_EC_PEM;
89const char mbedtls_test_srv_key_ec_pem[] = TEST_SRV_KEY_EC_PEM;
90const char mbedtls_test_srv_pwd_ec_pem[] = "";
91const char mbedtls_test_srv_key_rsa_pem[] = TEST_SRV_KEY_RSA_PEM;
92const char mbedtls_test_srv_pwd_rsa_pem[] = "";
93const char mbedtls_test_srv_crt_rsa_sha1_pem[] = TEST_SRV_CRT_RSA_SHA1_PEM;
94const char mbedtls_test_srv_crt_rsa_sha256_pem[] = TEST_SRV_CRT_RSA_SHA256_PEM;
95
96const unsigned char mbedtls_test_srv_crt_ec_der[] = TEST_SRV_CRT_EC_DER;
97const unsigned char mbedtls_test_srv_key_ec_der[] = TEST_SRV_KEY_EC_DER;
98const unsigned char mbedtls_test_srv_key_rsa_der[] = TEST_SRV_KEY_RSA_DER;
99const unsigned char mbedtls_test_srv_crt_rsa_sha1_der[] =
100 TEST_SRV_CRT_RSA_SHA1_DER;
101const unsigned char mbedtls_test_srv_crt_rsa_sha256_der[] =
102 TEST_SRV_CRT_RSA_SHA256_DER;
103
104const size_t mbedtls_test_srv_crt_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100105 sizeof(mbedtls_test_srv_crt_ec_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000106const size_t mbedtls_test_srv_key_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100107 sizeof(mbedtls_test_srv_key_ec_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000108const size_t mbedtls_test_srv_pwd_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100109 sizeof(mbedtls_test_srv_pwd_ec_pem) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000110const size_t mbedtls_test_srv_key_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100111 sizeof(mbedtls_test_srv_key_rsa_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000112const size_t mbedtls_test_srv_pwd_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100113 sizeof(mbedtls_test_srv_pwd_rsa_pem) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000114const size_t mbedtls_test_srv_crt_rsa_sha1_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100115 sizeof(mbedtls_test_srv_crt_rsa_sha1_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000116const size_t mbedtls_test_srv_crt_rsa_sha256_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100117 sizeof(mbedtls_test_srv_crt_rsa_sha256_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000118
119const size_t mbedtls_test_srv_crt_ec_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100120 sizeof(mbedtls_test_srv_crt_ec_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000121const size_t mbedtls_test_srv_key_ec_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100122 sizeof(mbedtls_test_srv_key_ec_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000123const size_t mbedtls_test_srv_pwd_ec_der_len = 0;
124const size_t mbedtls_test_srv_key_rsa_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100125 sizeof(mbedtls_test_srv_key_rsa_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000126const size_t mbedtls_test_srv_pwd_rsa_der_len = 0;
127const size_t mbedtls_test_srv_crt_rsa_sha1_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100128 sizeof(mbedtls_test_srv_crt_rsa_sha1_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000129const size_t mbedtls_test_srv_crt_rsa_sha256_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100130 sizeof(mbedtls_test_srv_crt_rsa_sha256_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000131
132/*
133 * Client
134 */
135
136const char mbedtls_test_cli_crt_ec_pem[] = TEST_CLI_CRT_EC_PEM;
137const char mbedtls_test_cli_key_ec_pem[] = TEST_CLI_KEY_EC_PEM;
138const char mbedtls_test_cli_pwd_ec_pem[] = "";
139const char mbedtls_test_cli_key_rsa_pem[] = TEST_CLI_KEY_RSA_PEM;
140const char mbedtls_test_cli_pwd_rsa_pem[] = "";
141const char mbedtls_test_cli_crt_rsa_pem[] = TEST_CLI_CRT_RSA_PEM;
142
143const unsigned char mbedtls_test_cli_crt_ec_der[] = TEST_CLI_CRT_EC_DER;
144const unsigned char mbedtls_test_cli_key_ec_der[] = TEST_CLI_KEY_EC_DER;
145const unsigned char mbedtls_test_cli_key_rsa_der[] = TEST_CLI_KEY_RSA_DER;
146const unsigned char mbedtls_test_cli_crt_rsa_der[] = TEST_CLI_CRT_RSA_DER;
147
148const size_t mbedtls_test_cli_crt_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100149 sizeof(mbedtls_test_cli_crt_ec_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000150const size_t mbedtls_test_cli_key_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100151 sizeof(mbedtls_test_cli_key_ec_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000152const size_t mbedtls_test_cli_pwd_ec_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100153 sizeof(mbedtls_test_cli_pwd_ec_pem) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000154const size_t mbedtls_test_cli_key_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100155 sizeof(mbedtls_test_cli_key_rsa_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000156const size_t mbedtls_test_cli_pwd_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100157 sizeof(mbedtls_test_cli_pwd_rsa_pem) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000158const size_t mbedtls_test_cli_crt_rsa_pem_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100159 sizeof(mbedtls_test_cli_crt_rsa_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000160
161const size_t mbedtls_test_cli_crt_ec_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100162 sizeof(mbedtls_test_cli_crt_ec_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000163const size_t mbedtls_test_cli_key_ec_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100164 sizeof(mbedtls_test_cli_key_ec_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000165const size_t mbedtls_test_cli_key_rsa_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100166 sizeof(mbedtls_test_cli_key_rsa_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000167const size_t mbedtls_test_cli_crt_rsa_der_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100168 sizeof(mbedtls_test_cli_crt_rsa_der);
Hanno Becker960e5882019-03-12 16:38:17 +0000169
170/*
171 *
172 * Definitions of test CRTs without specification of all parameters, choosing
173 * them automatically according to the config. For example, mbedtls_test_ca_crt
174 * is one of mbedtls_test_ca_crt_{rsa|ec}_{sha1|sha256}_{pem|der}.
175 *
176 */
177
178/*
179 * Dispatch between PEM and DER according to config
180 */
Paul Bakker5121ce52009-01-03 21:22:43 +0000181
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200182#if defined(MBEDTLS_PEM_PARSE_C)
Manuel Pégourié-Gonnard641de712013-09-25 13:23:33 +0200183
Hanno Becker960e5882019-03-12 16:38:17 +0000184/* PEM encoded test CA certificates and keys */
185
186#define TEST_CA_KEY_RSA TEST_CA_KEY_RSA_PEM
187#define TEST_CA_PWD_RSA TEST_CA_PWD_RSA_PEM
188#define TEST_CA_CRT_RSA_SHA256 TEST_CA_CRT_RSA_SHA256_PEM
189#define TEST_CA_CRT_RSA_SHA1 TEST_CA_CRT_RSA_SHA1_PEM
190#define TEST_CA_KEY_EC TEST_CA_KEY_EC_PEM
191#define TEST_CA_PWD_EC TEST_CA_PWD_EC_PEM
192#define TEST_CA_CRT_EC TEST_CA_CRT_EC_PEM
193
194/* PEM encoded test server certificates and keys */
195
196#define TEST_SRV_KEY_RSA TEST_SRV_KEY_RSA_PEM
197#define TEST_SRV_PWD_RSA ""
198#define TEST_SRV_CRT_RSA_SHA256 TEST_SRV_CRT_RSA_SHA256_PEM
199#define TEST_SRV_CRT_RSA_SHA1 TEST_SRV_CRT_RSA_SHA1_PEM
200#define TEST_SRV_KEY_EC TEST_SRV_KEY_EC_PEM
201#define TEST_SRV_PWD_EC ""
202#define TEST_SRV_CRT_EC TEST_SRV_CRT_EC_PEM
203
204/* PEM encoded test client certificates and keys */
205
206#define TEST_CLI_KEY_RSA TEST_CLI_KEY_RSA_PEM
207#define TEST_CLI_PWD_RSA ""
208#define TEST_CLI_CRT_RSA TEST_CLI_CRT_RSA_PEM
209#define TEST_CLI_KEY_EC TEST_CLI_KEY_EC_PEM
210#define TEST_CLI_PWD_EC ""
211#define TEST_CLI_CRT_EC TEST_CLI_CRT_EC_PEM
212
213#else /* MBEDTLS_PEM_PARSE_C */
214
215/* DER encoded test CA certificates and keys */
216
217#define TEST_CA_KEY_RSA TEST_CA_KEY_RSA_DER
218#define TEST_CA_PWD_RSA ""
219#define TEST_CA_CRT_RSA_SHA256 TEST_CA_CRT_RSA_SHA256_DER
220#define TEST_CA_CRT_RSA_SHA1 TEST_CA_CRT_RSA_SHA1_DER
221#define TEST_CA_KEY_EC TEST_CA_KEY_EC_DER
222#define TEST_CA_PWD_EC ""
223#define TEST_CA_CRT_EC TEST_CA_CRT_EC_DER
224
225/* DER encoded test server certificates and keys */
226
227#define TEST_SRV_KEY_RSA TEST_SRV_KEY_RSA_DER
228#define TEST_SRV_PWD_RSA ""
229#define TEST_SRV_CRT_RSA_SHA256 TEST_SRV_CRT_RSA_SHA256_DER
230#define TEST_SRV_CRT_RSA_SHA1 TEST_SRV_CRT_RSA_SHA1_DER
231#define TEST_SRV_KEY_EC TEST_SRV_KEY_EC_DER
232#define TEST_SRV_PWD_EC ""
233#define TEST_SRV_CRT_EC TEST_SRV_CRT_EC_DER
234
235/* DER encoded test client certificates and keys */
236
237#define TEST_CLI_KEY_RSA TEST_CLI_KEY_RSA_DER
238#define TEST_CLI_PWD_RSA ""
239#define TEST_CLI_CRT_RSA TEST_CLI_CRT_RSA_DER
240#define TEST_CLI_KEY_EC TEST_CLI_KEY_EC_DER
241#define TEST_CLI_PWD_EC ""
242#define TEST_CLI_CRT_EC TEST_CLI_CRT_EC_DER
243
244#endif /* MBEDTLS_PEM_PARSE_C */
245
246const char mbedtls_test_ca_key_rsa[] = TEST_CA_KEY_RSA;
247const char mbedtls_test_ca_pwd_rsa[] = TEST_CA_PWD_RSA;
248const char mbedtls_test_ca_crt_rsa_sha256[] = TEST_CA_CRT_RSA_SHA256;
249const char mbedtls_test_ca_crt_rsa_sha1[] = TEST_CA_CRT_RSA_SHA1;
250const char mbedtls_test_ca_key_ec[] = TEST_CA_KEY_EC;
251const char mbedtls_test_ca_pwd_ec[] = TEST_CA_PWD_EC;
252const char mbedtls_test_ca_crt_ec[] = TEST_CA_CRT_EC;
253
254const char mbedtls_test_srv_key_rsa[] = TEST_SRV_KEY_RSA;
255const char mbedtls_test_srv_pwd_rsa[] = TEST_SRV_PWD_RSA;
256const char mbedtls_test_srv_crt_rsa_sha256[] = TEST_SRV_CRT_RSA_SHA256;
257const char mbedtls_test_srv_crt_rsa_sha1[] = TEST_SRV_CRT_RSA_SHA1;
258const char mbedtls_test_srv_key_ec[] = TEST_SRV_KEY_EC;
259const char mbedtls_test_srv_pwd_ec[] = TEST_SRV_PWD_EC;
260const char mbedtls_test_srv_crt_ec[] = TEST_SRV_CRT_EC;
261
262const char mbedtls_test_cli_key_rsa[] = TEST_CLI_KEY_RSA;
263const char mbedtls_test_cli_pwd_rsa[] = TEST_CLI_PWD_RSA;
264const char mbedtls_test_cli_crt_rsa[] = TEST_CLI_CRT_RSA;
265const char mbedtls_test_cli_key_ec[] = TEST_CLI_KEY_EC;
266const char mbedtls_test_cli_pwd_ec[] = TEST_CLI_PWD_EC;
267const char mbedtls_test_cli_crt_ec[] = TEST_CLI_CRT_EC;
268
269const size_t mbedtls_test_ca_key_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100270 sizeof(mbedtls_test_ca_key_rsa);
Hanno Becker960e5882019-03-12 16:38:17 +0000271const size_t mbedtls_test_ca_pwd_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100272 sizeof(mbedtls_test_ca_pwd_rsa) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000273const size_t mbedtls_test_ca_crt_rsa_sha256_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100274 sizeof(mbedtls_test_ca_crt_rsa_sha256);
Hanno Becker960e5882019-03-12 16:38:17 +0000275const size_t mbedtls_test_ca_crt_rsa_sha1_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100276 sizeof(mbedtls_test_ca_crt_rsa_sha1);
Hanno Becker960e5882019-03-12 16:38:17 +0000277const size_t mbedtls_test_ca_key_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100278 sizeof(mbedtls_test_ca_key_ec);
Hanno Becker960e5882019-03-12 16:38:17 +0000279const size_t mbedtls_test_ca_pwd_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100280 sizeof(mbedtls_test_ca_pwd_ec) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000281const size_t mbedtls_test_ca_crt_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100282 sizeof(mbedtls_test_ca_crt_ec);
Hanno Becker960e5882019-03-12 16:38:17 +0000283
284const size_t mbedtls_test_srv_key_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100285 sizeof(mbedtls_test_srv_key_rsa);
Hanno Becker960e5882019-03-12 16:38:17 +0000286const size_t mbedtls_test_srv_pwd_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100287 sizeof(mbedtls_test_srv_pwd_rsa) -1;
Hanno Becker960e5882019-03-12 16:38:17 +0000288const size_t mbedtls_test_srv_crt_rsa_sha256_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100289 sizeof(mbedtls_test_srv_crt_rsa_sha256);
Hanno Becker960e5882019-03-12 16:38:17 +0000290const size_t mbedtls_test_srv_crt_rsa_sha1_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100291 sizeof(mbedtls_test_srv_crt_rsa_sha1);
Hanno Becker960e5882019-03-12 16:38:17 +0000292const size_t mbedtls_test_srv_key_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100293 sizeof(mbedtls_test_srv_key_ec);
Hanno Becker960e5882019-03-12 16:38:17 +0000294const size_t mbedtls_test_srv_pwd_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100295 sizeof(mbedtls_test_srv_pwd_ec) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000296const size_t mbedtls_test_srv_crt_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100297 sizeof(mbedtls_test_srv_crt_ec);
Hanno Becker960e5882019-03-12 16:38:17 +0000298
299const size_t mbedtls_test_cli_key_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100300 sizeof(mbedtls_test_cli_key_rsa);
Hanno Becker960e5882019-03-12 16:38:17 +0000301const size_t mbedtls_test_cli_pwd_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100302 sizeof(mbedtls_test_cli_pwd_rsa) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000303const size_t mbedtls_test_cli_crt_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100304 sizeof(mbedtls_test_cli_crt_rsa);
Hanno Becker960e5882019-03-12 16:38:17 +0000305const size_t mbedtls_test_cli_key_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100306 sizeof(mbedtls_test_cli_key_ec);
Hanno Becker960e5882019-03-12 16:38:17 +0000307const size_t mbedtls_test_cli_pwd_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100308 sizeof(mbedtls_test_cli_pwd_ec) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000309const size_t mbedtls_test_cli_crt_ec_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100310 sizeof(mbedtls_test_cli_crt_ec);
Hanno Becker960e5882019-03-12 16:38:17 +0000311
312/*
313 * Dispatch between SHA-1 and SHA-256
314 */
315
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100316#if defined(MBEDTLS_MD_CAN_SHA256)
Hanno Becker960e5882019-03-12 16:38:17 +0000317#define TEST_CA_CRT_RSA TEST_CA_CRT_RSA_SHA256
318#define TEST_SRV_CRT_RSA TEST_SRV_CRT_RSA_SHA256
319#else
320#define TEST_CA_CRT_RSA TEST_CA_CRT_RSA_SHA1
321#define TEST_SRV_CRT_RSA TEST_SRV_CRT_RSA_SHA1
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100322#endif /* MBEDTLS_MD_CAN_SHA256 */
Hanno Becker960e5882019-03-12 16:38:17 +0000323
324const char mbedtls_test_ca_crt_rsa[] = TEST_CA_CRT_RSA;
325const char mbedtls_test_srv_crt_rsa[] = TEST_SRV_CRT_RSA;
326
327const size_t mbedtls_test_ca_crt_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100328 sizeof(mbedtls_test_ca_crt_rsa);
Hanno Becker960e5882019-03-12 16:38:17 +0000329const size_t mbedtls_test_srv_crt_rsa_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100330 sizeof(mbedtls_test_srv_crt_rsa);
Hanno Becker960e5882019-03-12 16:38:17 +0000331
332/*
333 * Dispatch between RSA and EC
334 */
335
336#if defined(MBEDTLS_RSA_C)
337
338#define TEST_CA_KEY TEST_CA_KEY_RSA
339#define TEST_CA_PWD TEST_CA_PWD_RSA
340#define TEST_CA_CRT TEST_CA_CRT_RSA
341
342#define TEST_SRV_KEY TEST_SRV_KEY_RSA
343#define TEST_SRV_PWD TEST_SRV_PWD_RSA
344#define TEST_SRV_CRT TEST_SRV_CRT_RSA
345
346#define TEST_CLI_KEY TEST_CLI_KEY_RSA
347#define TEST_CLI_PWD TEST_CLI_PWD_RSA
348#define TEST_CLI_CRT TEST_CLI_CRT_RSA
349
350#else /* no RSA, so assume ECDSA */
351
352#define TEST_CA_KEY TEST_CA_KEY_EC
353#define TEST_CA_PWD TEST_CA_PWD_EC
354#define TEST_CA_CRT TEST_CA_CRT_EC
355
356#define TEST_SRV_KEY TEST_SRV_KEY_EC
357#define TEST_SRV_PWD TEST_SRV_PWD_EC
358#define TEST_SRV_CRT TEST_SRV_CRT_EC
359
360#define TEST_CLI_KEY TEST_CLI_KEY_EC
361#define TEST_CLI_PWD TEST_CLI_PWD_EC
362#define TEST_CLI_CRT TEST_CLI_CRT_EC
Hanno Becker960e5882019-03-12 16:38:17 +0000363#endif /* MBEDTLS_RSA_C */
364
365/* API stability forces us to declare
366 * mbedtls_test_{ca|srv|cli}_{key|pwd|crt}
367 * as pointers. */
368static const char test_ca_key[] = TEST_CA_KEY;
369static const char test_ca_pwd[] = TEST_CA_PWD;
370static const char test_ca_crt[] = TEST_CA_CRT;
371
372static const char test_srv_key[] = TEST_SRV_KEY;
373static const char test_srv_pwd[] = TEST_SRV_PWD;
374static const char test_srv_crt[] = TEST_SRV_CRT;
375
376static const char test_cli_key[] = TEST_CLI_KEY;
377static const char test_cli_pwd[] = TEST_CLI_PWD;
378static const char test_cli_crt[] = TEST_CLI_CRT;
379
380const char *mbedtls_test_ca_key = test_ca_key;
381const char *mbedtls_test_ca_pwd = test_ca_pwd;
382const char *mbedtls_test_ca_crt = test_ca_crt;
383
384const char *mbedtls_test_srv_key = test_srv_key;
385const char *mbedtls_test_srv_pwd = test_srv_pwd;
386const char *mbedtls_test_srv_crt = test_srv_crt;
387
388const char *mbedtls_test_cli_key = test_cli_key;
389const char *mbedtls_test_cli_pwd = test_cli_pwd;
390const char *mbedtls_test_cli_crt = test_cli_crt;
391
392const size_t mbedtls_test_ca_key_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100393 sizeof(test_ca_key);
Hanno Becker960e5882019-03-12 16:38:17 +0000394const size_t mbedtls_test_ca_pwd_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100395 sizeof(test_ca_pwd) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000396const size_t mbedtls_test_ca_crt_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100397 sizeof(test_ca_crt);
Hanno Becker960e5882019-03-12 16:38:17 +0000398
399const size_t mbedtls_test_srv_key_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100400 sizeof(test_srv_key);
Hanno Becker960e5882019-03-12 16:38:17 +0000401const size_t mbedtls_test_srv_pwd_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100402 sizeof(test_srv_pwd) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000403const size_t mbedtls_test_srv_crt_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100404 sizeof(test_srv_crt);
Hanno Becker960e5882019-03-12 16:38:17 +0000405
406const size_t mbedtls_test_cli_key_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100407 sizeof(test_cli_key);
Hanno Becker960e5882019-03-12 16:38:17 +0000408const size_t mbedtls_test_cli_pwd_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100409 sizeof(test_cli_pwd) - 1;
Hanno Becker960e5882019-03-12 16:38:17 +0000410const size_t mbedtls_test_cli_crt_len =
Gilles Peskine449bd832023-01-11 14:50:10 +0100411 sizeof(test_cli_crt);
Hanno Becker960e5882019-03-12 16:38:17 +0000412
413/*
414 *
415 * Lists of certificates
416 *
417 */
418
419/* List of CAs in PEM or DER, depending on config */
Gilles Peskine449bd832023-01-11 14:50:10 +0100420const char *mbedtls_test_cas[] = {
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100421#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA1)
Gilles Peskine750c3532017-05-05 18:56:30 +0200422 mbedtls_test_ca_crt_rsa_sha1,
423#endif
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100424#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA256)
Gilles Peskine750c3532017-05-05 18:56:30 +0200425 mbedtls_test_ca_crt_rsa_sha256,
Manuel Pégourié-Gonnard2f165062015-03-27 10:20:26 +0100426#endif
Valerio Settid928aeb2023-02-08 14:46:15 +0100427#if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200428 mbedtls_test_ca_crt_ec,
Manuel Pégourié-Gonnard2f165062015-03-27 10:20:26 +0100429#endif
430 NULL
431};
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200432const size_t mbedtls_test_cas_len[] = {
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100433#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA1)
Gilles Peskine449bd832023-01-11 14:50:10 +0100434 sizeof(mbedtls_test_ca_crt_rsa_sha1),
Gilles Peskine750c3532017-05-05 18:56:30 +0200435#endif
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100436#if defined(MBEDTLS_RSA_C) && defined(MBEDTLS_MD_CAN_SHA256)
Gilles Peskine449bd832023-01-11 14:50:10 +0100437 sizeof(mbedtls_test_ca_crt_rsa_sha256),
Manuel Pégourié-Gonnard2f165062015-03-27 10:20:26 +0100438#endif
Valerio Settid928aeb2023-02-08 14:46:15 +0100439#if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
Gilles Peskine449bd832023-01-11 14:50:10 +0100440 sizeof(mbedtls_test_ca_crt_ec),
Manuel Pégourié-Gonnard2f165062015-03-27 10:20:26 +0100441#endif
442 0
443};
444
Hanno Becker960e5882019-03-12 16:38:17 +0000445/* List of all available CA certificates in DER format */
Gilles Peskine449bd832023-01-11 14:50:10 +0100446const unsigned char *mbedtls_test_cas_der[] = {
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200447#if defined(MBEDTLS_RSA_C)
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100448#if defined(MBEDTLS_MD_CAN_SHA256)
Hanno Becker960e5882019-03-12 16:38:17 +0000449 mbedtls_test_ca_crt_rsa_sha256_der,
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100450#endif /* MBEDTLS_MD_CAN_SHA256 */
451#if defined(MBEDTLS_MD_CAN_SHA1)
Hanno Becker960e5882019-03-12 16:38:17 +0000452 mbedtls_test_ca_crt_rsa_sha1_der,
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100453#endif /* MBEDTLS_MD_CAN_SHA1 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200454#endif /* MBEDTLS_RSA_C */
Valerio Settid928aeb2023-02-08 14:46:15 +0100455#if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
Hanno Becker960e5882019-03-12 16:38:17 +0000456 mbedtls_test_ca_crt_ec_der,
Valerio Settid928aeb2023-02-08 14:46:15 +0100457#endif /* MBEDTLS_PK_CAN_ECDSA_SOME */
Hanno Becker960e5882019-03-12 16:38:17 +0000458 NULL
459};
460
461const size_t mbedtls_test_cas_der_len[] = {
462#if defined(MBEDTLS_RSA_C)
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100463#if defined(MBEDTLS_MD_CAN_SHA256)
Gilles Peskine449bd832023-01-11 14:50:10 +0100464 sizeof(mbedtls_test_ca_crt_rsa_sha256_der),
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100465#endif /* MBEDTLS_MD_CAN_SHA256 */
466#if defined(MBEDTLS_MD_CAN_SHA1)
Gilles Peskine449bd832023-01-11 14:50:10 +0100467 sizeof(mbedtls_test_ca_crt_rsa_sha1_der),
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100468#endif /* MBEDTLS_MD_CAN_SHA1 */
Hanno Becker960e5882019-03-12 16:38:17 +0000469#endif /* MBEDTLS_RSA_C */
Valerio Settid928aeb2023-02-08 14:46:15 +0100470#if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
Gilles Peskine449bd832023-01-11 14:50:10 +0100471 sizeof(mbedtls_test_ca_crt_ec_der),
Valerio Settid928aeb2023-02-08 14:46:15 +0100472#endif /* MBEDTLS_PK_CAN_ECDSA_SOME */
Hanno Becker960e5882019-03-12 16:38:17 +0000473 0
474};
475
476/* Concatenation of all available CA certificates in PEM format */
477#if defined(MBEDTLS_PEM_PARSE_C)
478const char mbedtls_test_cas_pem[] =
479#if defined(MBEDTLS_RSA_C)
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100480#if defined(MBEDTLS_MD_CAN_SHA256)
Hanno Becker960e5882019-03-12 16:38:17 +0000481 TEST_CA_CRT_RSA_SHA256_PEM
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100482#endif /* MBEDTLS_MD_CAN_SHA256 */
483#if defined(MBEDTLS_MD_CAN_SHA1)
Hanno Becker960e5882019-03-12 16:38:17 +0000484 TEST_CA_CRT_RSA_SHA1_PEM
Manuel Pégourié-Gonnardbef824d2023-03-17 12:50:01 +0100485#endif /* MBEDTLS_MD_CAN_SHA1 */
Hanno Becker960e5882019-03-12 16:38:17 +0000486#endif /* MBEDTLS_RSA_C */
Valerio Settid928aeb2023-02-08 14:46:15 +0100487#if defined(MBEDTLS_PK_CAN_ECDSA_SOME)
Hanno Becker960e5882019-03-12 16:38:17 +0000488 TEST_CA_CRT_EC_PEM
Valerio Settid928aeb2023-02-08 14:46:15 +0100489#endif /* MBEDTLS_PK_CAN_ECDSA_SOME */
Hanno Becker960e5882019-03-12 16:38:17 +0000490 "";
Gilles Peskine449bd832023-01-11 14:50:10 +0100491const size_t mbedtls_test_cas_pem_len = sizeof(mbedtls_test_cas_pem);
Hanno Becker960e5882019-03-12 16:38:17 +0000492#endif /* MBEDTLS_PEM_PARSE_C */