2 * Copyright 2018-2023 The OpenSSL Project Authors. All Rights Reserved.
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
12 #include <openssl/cms.h>
13 #include <openssl/bio.h>
14 #include <openssl/x509.h>
15 #include <openssl/pem.h>
16 #include "../crypto/cms/cms_local.h" /* for d.signedData and d.envelopedData */
20 static X509 *cert = NULL;
21 static EVP_PKEY *privkey = NULL;
22 static char *derin = NULL;
24 static int test_encrypt_decrypt(const EVP_CIPHER *cipher)
27 STACK_OF(X509) *certstack = sk_X509_new_null();
28 const char *msg = "Hello world";
29 BIO *msgbio = BIO_new_mem_buf(msg, strlen(msg));
30 BIO *outmsgbio = BIO_new(BIO_s_mem());
31 CMS_ContentInfo* content = NULL;
32 BIO *contentbio = NULL;
35 if (!TEST_ptr(certstack) || !TEST_ptr(msgbio) || !TEST_ptr(outmsgbio))
38 if (!TEST_int_gt(sk_X509_push(certstack, cert), 0))
41 content = CMS_encrypt(certstack, msgbio, cipher, CMS_TEXT);
42 if (!TEST_ptr(content))
45 if (!TEST_true(CMS_decrypt(content, privkey, cert, NULL, outmsgbio,
49 if (!TEST_ptr(contentbio =
50 CMS_EnvelopedData_decrypt(content->d.envelopedData,
51 NULL, privkey, cert, NULL,
52 CMS_TEXT, NULL, NULL)))
55 /* Check we got the message we first started with */
56 if (!TEST_int_eq(BIO_gets(outmsgbio, buf, sizeof(buf)), strlen(msg))
57 || !TEST_int_eq(strcmp(buf, msg), 0))
63 sk_X509_free(certstack);
66 CMS_ContentInfo_free(content);
68 return testresult && TEST_int_eq(ERR_peek_error(), 0);
71 static int test_encrypt_decrypt_aes_cbc(void)
73 return test_encrypt_decrypt(EVP_aes_128_cbc());
76 static int test_encrypt_decrypt_aes_128_gcm(void)
78 return test_encrypt_decrypt(EVP_aes_128_gcm());
81 static int test_encrypt_decrypt_aes_192_gcm(void)
83 return test_encrypt_decrypt(EVP_aes_192_gcm());
86 static int test_encrypt_decrypt_aes_256_gcm(void)
88 return test_encrypt_decrypt(EVP_aes_256_gcm());
91 static int test_CMS_add1_cert(void)
93 CMS_ContentInfo *cms = NULL;
96 ret = TEST_ptr(cms = CMS_ContentInfo_new())
97 && TEST_ptr(CMS_add1_signer(cms, cert, privkey, NULL, 0))
98 && TEST_true(CMS_add1_cert(cms, cert)); /* add cert again */
100 CMS_ContentInfo_free(cms);
104 static int test_d2i_CMS_bio_NULL(void)
106 BIO *bio, *content = NULL;
107 CMS_ContentInfo *cms = NULL;
108 unsigned int flags = CMS_NO_SIGNER_CERT_VERIFY;
112 * Test data generated using:
113 * openssl cms -sign -md sha256 -signer ./test/certs/rootCA.pem -inkey \
114 * ./test/certs/rootCA.key -nodetach -outform DER -in ./in.txt -out out.der \
117 static const unsigned char cms_data[] = {
118 0x30, 0x82, 0x05, 0xc5, 0x06, 0x09, 0x2a, 0x86,
119 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0,
120 0x82, 0x05, 0xb6, 0x30, 0x82, 0x05, 0xb2, 0x02,
121 0x01, 0x01, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x09,
122 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02,
123 0x01, 0x30, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48,
124 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x0f,
125 0x04, 0x0d, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20,
126 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x0d, 0x0a, 0xa0,
127 0x82, 0x03, 0x83, 0x30, 0x82, 0x03, 0x7f, 0x30,
128 0x82, 0x02, 0x67, 0xa0, 0x03, 0x02, 0x01, 0x02,
129 0x02, 0x09, 0x00, 0x88, 0x43, 0x29, 0xcb, 0xc2,
130 0xeb, 0x15, 0x9a, 0x30, 0x0d, 0x06, 0x09, 0x2a,
131 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
132 0x05, 0x00, 0x30, 0x56, 0x31, 0x0b, 0x30, 0x09,
133 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41,
134 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
135 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65,
136 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21,
137 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,
138 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65,
139 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74,
140 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74,
141 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55,
142 0x04, 0x03, 0x0c, 0x06, 0x72, 0x6f, 0x6f, 0x74,
143 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x35,
144 0x30, 0x37, 0x30, 0x32, 0x31, 0x33, 0x31, 0x35,
145 0x31, 0x31, 0x5a, 0x17, 0x0d, 0x33, 0x35, 0x30,
146 0x37, 0x30, 0x32, 0x31, 0x33, 0x31, 0x35, 0x31,
147 0x31, 0x5a, 0x30, 0x56, 0x31, 0x0b, 0x30, 0x09,
148 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41,
149 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
150 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d, 0x65,
151 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21,
152 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c,
153 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65,
154 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74,
155 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c, 0x74,
156 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55,
157 0x04, 0x03, 0x0c, 0x06, 0x72, 0x6f, 0x6f, 0x74,
158 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d,
159 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
160 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01,
161 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82,
162 0x01, 0x01, 0x00, 0xc0, 0xf1, 0x6b, 0x77, 0x88,
163 0xac, 0x35, 0xdf, 0xfb, 0x73, 0x53, 0x2f, 0x92,
164 0x80, 0x2f, 0x74, 0x16, 0x32, 0x4d, 0xf5, 0x10,
165 0x20, 0x6f, 0x6c, 0x3a, 0x8e, 0xd1, 0xdc, 0x6b,
166 0xe1, 0x2e, 0x3e, 0xc3, 0x04, 0x0f, 0xbf, 0x9b,
167 0xc4, 0xc9, 0x12, 0xd1, 0xe4, 0x0b, 0x45, 0x97,
168 0xe5, 0x06, 0xcd, 0x66, 0x3a, 0xe1, 0xe0, 0xe2,
169 0x2b, 0xdf, 0xa2, 0xc4, 0xec, 0x7b, 0xd3, 0x3d,
170 0x3c, 0x8a, 0xff, 0x5e, 0x74, 0xa0, 0xab, 0xa7,
171 0x03, 0x6a, 0x16, 0x5b, 0x5e, 0x92, 0xc4, 0x7e,
172 0x5b, 0x79, 0x8a, 0x69, 0xd4, 0xbc, 0x83, 0x5e,
173 0xae, 0x42, 0x92, 0x74, 0xa5, 0x2b, 0xe7, 0x00,
174 0xc1, 0xa9, 0xdc, 0xd5, 0xb1, 0x53, 0x07, 0x0f,
175 0x73, 0xf7, 0x8e, 0xad, 0x14, 0x3e, 0x25, 0x9e,
176 0xe5, 0x1e, 0xe6, 0xcc, 0x91, 0xcd, 0x95, 0x0c,
177 0x80, 0x44, 0x20, 0xc3, 0xfd, 0x17, 0xcf, 0x91,
178 0x3d, 0x63, 0x10, 0x1c, 0x14, 0x5b, 0xfb, 0xc3,
179 0xa8, 0xc1, 0x88, 0xb2, 0x77, 0xff, 0x9c, 0xdb,
180 0xfc, 0x6a, 0x44, 0x44, 0x44, 0xf7, 0x85, 0xec,
181 0x08, 0x2c, 0xd4, 0xdf, 0x81, 0xa3, 0x79, 0xc9,
182 0xfe, 0x1e, 0x9b, 0x93, 0x16, 0x53, 0xb7, 0x97,
183 0xab, 0xbe, 0x4f, 0x1a, 0xa5, 0xe2, 0xfa, 0x46,
184 0x05, 0xe4, 0x0d, 0x9c, 0x2a, 0xa4, 0xcc, 0xb9,
185 0x1e, 0x21, 0xa0, 0x6c, 0xc4, 0xab, 0x59, 0xb0,
186 0x40, 0x39, 0xbb, 0xf9, 0x88, 0xad, 0xfd, 0xdf,
187 0x8d, 0xb4, 0x0b, 0xaf, 0x7e, 0x41, 0xe0, 0x21,
188 0x3c, 0xc8, 0x33, 0x45, 0x49, 0x84, 0x2f, 0x93,
189 0x06, 0xee, 0xfd, 0x4f, 0xed, 0x4f, 0xf3, 0xbc,
190 0x9b, 0xde, 0xfc, 0x25, 0x5e, 0x55, 0xd5, 0x75,
191 0xd4, 0xc5, 0x7b, 0x3a, 0x40, 0x35, 0x06, 0x9f,
192 0xc4, 0x84, 0xb4, 0x6c, 0x93, 0x0c, 0xaf, 0x37,
193 0x5a, 0xaf, 0xb6, 0x41, 0x4d, 0x26, 0x23, 0x1c,
194 0xb8, 0x02, 0xb3, 0x02, 0x03, 0x01, 0x00, 0x01,
195 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x0c, 0x06, 0x03,
196 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01,
197 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d,
198 0x0e, 0x04, 0x16, 0x04, 0x14, 0x85, 0x56, 0x89,
199 0x35, 0xe2, 0x9f, 0x00, 0x1a, 0xe1, 0x86, 0x03,
200 0x0b, 0x4b, 0xaf, 0x76, 0x12, 0x6b, 0x33, 0x6d,
201 0xfd, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23,
202 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x85, 0x56,
203 0x89, 0x35, 0xe2, 0x9f, 0x00, 0x1a, 0xe1, 0x86,
204 0x03, 0x0b, 0x4b, 0xaf, 0x76, 0x12, 0x6b, 0x33,
205 0x6d, 0xfd, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86,
206 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05,
207 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x32, 0x0a,
208 0xbf, 0x2a, 0x0a, 0xe2, 0xbb, 0x4f, 0x43, 0xce,
209 0x88, 0xda, 0x5a, 0x39, 0x10, 0x37, 0x80, 0xbb,
210 0x37, 0x2d, 0x5e, 0x2d, 0x88, 0xdd, 0x26, 0x69,
211 0x9c, 0xe7, 0xb4, 0x98, 0x20, 0xb1, 0x25, 0xe6,
212 0x61, 0x59, 0x6d, 0x12, 0xec, 0x9b, 0x87, 0xbe,
213 0x57, 0xe1, 0x12, 0x05, 0xc5, 0x04, 0xf1, 0x17,
214 0xce, 0x14, 0xb8, 0x1c, 0x92, 0xd4, 0x95, 0x95,
215 0x2c, 0x5b, 0x28, 0x89, 0xfb, 0x72, 0x9c, 0x20,
216 0xd3, 0x32, 0x81, 0xa8, 0x85, 0xec, 0xc8, 0x08,
217 0x7b, 0xa8, 0x59, 0x5b, 0x3a, 0x6c, 0x31, 0xab,
218 0x52, 0xe2, 0x66, 0xcd, 0x14, 0x49, 0x5c, 0xf3,
219 0xd3, 0x3e, 0x62, 0xbc, 0x91, 0x16, 0xb4, 0x1c,
220 0xf5, 0xdd, 0x54, 0xaa, 0x3c, 0x61, 0x97, 0x79,
221 0xac, 0xe4, 0xc8, 0x43, 0x35, 0xc3, 0x0f, 0xfc,
222 0xf3, 0x70, 0x1d, 0xaf, 0xf0, 0x9c, 0x8a, 0x2a,
223 0x92, 0x93, 0x48, 0xaa, 0xd0, 0xe8, 0x47, 0xbe,
224 0x35, 0xc1, 0xc6, 0x7b, 0x6d, 0xda, 0xfa, 0x5d,
225 0x57, 0x45, 0xf3, 0xea, 0x41, 0x8f, 0x36, 0xc1,
226 0x3c, 0xf4, 0x52, 0x7f, 0x6e, 0x31, 0xdd, 0xba,
227 0x9a, 0xbc, 0x70, 0x56, 0x71, 0x38, 0xdc, 0x49,
228 0x57, 0x0c, 0xfd, 0x91, 0x17, 0xc5, 0xea, 0x87,
229 0xe5, 0x23, 0x74, 0x19, 0xb2, 0xb6, 0x99, 0x0c,
230 0x6b, 0xa2, 0x05, 0xf8, 0x51, 0x68, 0xed, 0x97,
231 0xe0, 0xdf, 0x62, 0xf9, 0x7e, 0x7a, 0x3a, 0x44,
232 0x71, 0x83, 0x57, 0x28, 0x49, 0x88, 0x69, 0xb5,
233 0x14, 0x1e, 0xda, 0x46, 0xe3, 0x6e, 0x78, 0xe1,
234 0xcb, 0x8f, 0xb5, 0x98, 0xb3, 0x2d, 0x6e, 0x5b,
235 0xb7, 0xf6, 0x93, 0x24, 0x14, 0x1f, 0xa4, 0xf6,
236 0x69, 0xbd, 0xff, 0x4c, 0x52, 0x50, 0x02, 0xc5,
237 0x43, 0x8d, 0x14, 0xe2, 0xd0, 0x75, 0x9f, 0x12,
238 0x5e, 0x94, 0x89, 0xd1, 0xef, 0x77, 0x89, 0x7d,
239 0x89, 0xd9, 0x9e, 0x76, 0x99, 0x24, 0x31, 0x82,
240 0x01, 0xf7, 0x30, 0x82, 0x01, 0xf3, 0x02, 0x01,
241 0x01, 0x30, 0x63, 0x30, 0x56, 0x31, 0x0b, 0x30,
242 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02,
243 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03,
244 0x55, 0x04, 0x08, 0x0c, 0x0a, 0x53, 0x6f, 0x6d,
245 0x65, 0x2d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31,
246 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x0a,
247 0x0c, 0x18, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e,
248 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69,
249 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4c,
250 0x74, 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03,
251 0x55, 0x04, 0x03, 0x0c, 0x06, 0x72, 0x6f, 0x6f,
252 0x74, 0x43, 0x41, 0x02, 0x09, 0x00, 0x88, 0x43,
253 0x29, 0xcb, 0xc2, 0xeb, 0x15, 0x9a, 0x30, 0x0b,
254 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
255 0x04, 0x02, 0x01, 0xa0, 0x69, 0x30, 0x18, 0x06,
256 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
257 0x09, 0x03, 0x31, 0x0b, 0x06, 0x09, 0x2a, 0x86,
258 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0x30,
259 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
260 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f, 0x17, 0x0d,
261 0x32, 0x30, 0x31, 0x32, 0x31, 0x31, 0x30, 0x39,
262 0x30, 0x30, 0x31, 0x33, 0x5a, 0x30, 0x2f, 0x06,
263 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
264 0x09, 0x04, 0x31, 0x22, 0x04, 0x20, 0xb0, 0x80,
265 0x22, 0xd3, 0x15, 0xcf, 0x1e, 0xb1, 0x2d, 0x26,
266 0x65, 0xbd, 0xed, 0x0e, 0x6a, 0xf4, 0x06, 0x53,
267 0xc0, 0xa0, 0xbe, 0x97, 0x52, 0x32, 0xfb, 0x49,
268 0xbc, 0xbd, 0x02, 0x1c, 0xfc, 0x36, 0x30, 0x0d,
269 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
270 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01,
271 0x00, 0x37, 0x44, 0x39, 0x08, 0xb2, 0x19, 0x52,
272 0x35, 0x9c, 0xd0, 0x67, 0x87, 0xae, 0xb8, 0x1c,
273 0x80, 0xf4, 0x03, 0x29, 0x2e, 0xe3, 0x76, 0x4a,
274 0xb0, 0x98, 0x10, 0x00, 0x9a, 0x30, 0xdb, 0x05,
275 0x28, 0x53, 0x34, 0x31, 0x14, 0xbd, 0x87, 0xb9,
276 0x4d, 0x45, 0x07, 0x97, 0xa3, 0x57, 0x0b, 0x7e,
277 0xd1, 0x67, 0xfb, 0x4e, 0x0f, 0x5b, 0x90, 0xb2,
278 0x6f, 0xe6, 0xce, 0x49, 0xdd, 0x72, 0x46, 0x71,
279 0x26, 0xa1, 0x1b, 0x98, 0x23, 0x7d, 0x69, 0x73,
280 0x84, 0xdc, 0xf9, 0xd2, 0x1c, 0x6d, 0xf6, 0xf5,
281 0x17, 0x49, 0x6e, 0x9d, 0x4d, 0xf1, 0xe2, 0x43,
282 0x29, 0x53, 0x55, 0xa5, 0x22, 0x1e, 0x89, 0x2c,
283 0xaf, 0xf2, 0x43, 0x47, 0xd5, 0xfa, 0xad, 0xe7,
284 0x89, 0x60, 0xbf, 0x96, 0x35, 0x6f, 0xc2, 0x99,
285 0xb7, 0x55, 0xc5, 0xe3, 0x04, 0x25, 0x1b, 0xf6,
286 0x7e, 0xf2, 0x2b, 0x14, 0xa9, 0x57, 0x96, 0xbe,
287 0xbd, 0x6e, 0x95, 0x44, 0x94, 0xbd, 0xaf, 0x9a,
288 0x6d, 0x77, 0x55, 0x5e, 0x6c, 0xf6, 0x32, 0x37,
289 0xec, 0xef, 0xe5, 0x81, 0xb0, 0xe3, 0x35, 0xc7,
290 0x86, 0xea, 0x47, 0x59, 0x38, 0xb6, 0x16, 0xfb,
291 0x1d, 0x10, 0x55, 0x48, 0xb1, 0x44, 0x33, 0xde,
292 0xf6, 0x29, 0xbe, 0xbf, 0xbc, 0x71, 0x3e, 0x49,
293 0xba, 0xe7, 0x9f, 0x4d, 0x6c, 0xfb, 0xec, 0xd2,
294 0xe0, 0x12, 0xa9, 0x7c, 0xc9, 0x9a, 0x7b, 0x85,
295 0x83, 0xb8, 0xca, 0xdd, 0xf6, 0xb7, 0x15, 0x75,
296 0x7b, 0x4a, 0x69, 0xcf, 0x0a, 0xc7, 0x80, 0x01,
297 0xe7, 0x94, 0x16, 0x7f, 0x8d, 0x3c, 0xfa, 0x1f,
298 0x05, 0x71, 0x76, 0x15, 0xb0, 0xf6, 0x61, 0x30,
299 0x58, 0x16, 0xbe, 0x1b, 0xd1, 0x93, 0xc4, 0x1a,
300 0x91, 0x0c, 0x48, 0xe2, 0x1c, 0x8e, 0xa5, 0xc5,
301 0xa7, 0x81, 0x44, 0x48, 0x3b, 0x10, 0xc2, 0x74,
302 0x07, 0xdf, 0xa8, 0xae, 0x57, 0xee, 0x7f, 0xe3,
306 ret = TEST_ptr(bio = BIO_new_mem_buf(cms_data, sizeof(cms_data)))
307 && TEST_ptr(cms = d2i_CMS_bio(bio, NULL))
308 && TEST_true(CMS_verify(cms, NULL, NULL, NULL, NULL, flags))
309 && TEST_ptr(content =
310 CMS_SignedData_verify(cms->d.signedData, NULL, NULL, NULL,
311 NULL, NULL, flags, NULL, NULL));
313 CMS_ContentInfo_free(cms);
315 return ret && TEST_int_eq(ERR_peek_error(), 0);
318 static unsigned char *read_all(BIO *bio, long *p_len)
320 const int step = 256;
321 unsigned char *buf = NULL;
322 unsigned char *tmp = NULL;
327 tmp = OPENSSL_realloc(buf, *p_len + step);
331 ret = BIO_read(bio, buf + *p_len, step);
347 static int test_d2i_CMS_decode(const int idx)
350 CMS_ContentInfo *cms = NULL;
351 unsigned char *buf = NULL;
352 const unsigned char *tmp = NULL;
356 if (!TEST_ptr(bio = BIO_new_file(derin, "r")))
361 if (!TEST_ptr(cms = d2i_CMS_bio(bio, NULL)))
365 if (!TEST_ptr(buf = read_all(bio, &buf_len)))
368 if (!TEST_ptr(cms = d2i_CMS_ContentInfo(NULL, &tmp, buf_len)))
373 if (!TEST_int_eq(ERR_peek_error(), 0))
378 CMS_ContentInfo_free(cms);
385 OPT_TEST_DECLARE_USAGE("certfile privkeyfile derfile\n")
387 int setup_tests(void)
389 char *certin = NULL, *privkeyin = NULL;
390 BIO *certbio = NULL, *privkeybio = NULL;
392 if (!test_skip_common_options()) {
393 TEST_error("Error parsing test options\n");
397 if (!TEST_ptr(certin = test_get_argument(0))
398 || !TEST_ptr(privkeyin = test_get_argument(1))
399 || !TEST_ptr(derin = test_get_argument(2)))
402 certbio = BIO_new_file(certin, "r");
403 if (!TEST_ptr(certbio))
405 if (!TEST_true(PEM_read_bio_X509(certbio, &cert, NULL, NULL))) {
411 privkeybio = BIO_new_file(privkeyin, "r");
412 if (!TEST_ptr(privkeybio)) {
417 if (!TEST_true(PEM_read_bio_PrivateKey(privkeybio, &privkey, NULL, NULL))) {
418 BIO_free(privkeybio);
423 BIO_free(privkeybio);
425 ADD_TEST(test_encrypt_decrypt_aes_cbc);
426 ADD_TEST(test_encrypt_decrypt_aes_128_gcm);
427 ADD_TEST(test_encrypt_decrypt_aes_192_gcm);
428 ADD_TEST(test_encrypt_decrypt_aes_256_gcm);
429 ADD_TEST(test_CMS_add1_cert);
430 ADD_TEST(test_d2i_CMS_bio_NULL);
431 ADD_ALL_TESTS(test_d2i_CMS_decode, 2);
435 void cleanup_tests(void)
438 EVP_PKEY_free(privkey);