xref: /freebsd/crypto/openssl/test/cmp_msg_test.c (revision f25b8c9fb4f58cf61adb47d7570abe7caa6d385d)
1 /*
2  * Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.
3  * Copyright Nokia 2007-2019
4  * Copyright Siemens AG 2015-2019
5  *
6  * Licensed under the Apache License 2.0 (the "License").  You may not use
7  * this file except in compliance with the License.  You can obtain a copy
8  * in the file LICENSE in the source distribution or at
9  * https://www.openssl.org/source/license.html
10  */
11 
12 #include "helpers/cmp_testlib.h"
13 
14 static const char *newkey_f;
15 static const char *server_cert_f;
16 static const char *pkcs10_f;
17 
18 typedef struct test_fixture {
19     const char *test_case_name;
20     OSSL_CMP_CTX *cmp_ctx;
21     /* for msg create tests */
22     int bodytype;
23     int err_code;
24     /* for certConf */
25     int fail_info;
26     /* for protection tests */
27     OSSL_CMP_MSG *msg;
28     int expected;
29     /* for error and response messages */
30     OSSL_CMP_PKISI *si;
31 } CMP_MSG_TEST_FIXTURE;
32 
33 static OSSL_LIB_CTX *libctx = NULL;
34 static OSSL_PROVIDER *default_null_provider = NULL, *provider = NULL;
35 
36 static unsigned char ref[CMP_TEST_REFVALUE_LENGTH];
37 
38 static void tear_down(CMP_MSG_TEST_FIXTURE *fixture)
39 {
40     OSSL_CMP_CTX_free(fixture->cmp_ctx);
41     OSSL_CMP_MSG_free(fixture->msg);
42     OSSL_CMP_PKISI_free(fixture->si);
43     OPENSSL_free(fixture);
44 }
45 
46 #define SET_OPT_UNPROTECTED_SEND(ctx, val) \
47     OSSL_CMP_CTX_set_option((ctx), OSSL_CMP_OPT_UNPROTECTED_SEND, (val))
48 static CMP_MSG_TEST_FIXTURE *set_up(const char *const test_case_name)
49 {
50     CMP_MSG_TEST_FIXTURE *fixture;
51 
52     if (!TEST_ptr(fixture = OPENSSL_zalloc(sizeof(*fixture))))
53         return NULL;
54     fixture->test_case_name = test_case_name;
55 
56     if (!TEST_ptr(fixture->cmp_ctx = OSSL_CMP_CTX_new(libctx, NULL))
57         || !TEST_true(SET_OPT_UNPROTECTED_SEND(fixture->cmp_ctx, 1))
58         || !TEST_true(OSSL_CMP_CTX_set1_referenceValue(fixture->cmp_ctx,
59             ref, sizeof(ref)))) {
60         tear_down(fixture);
61         return NULL;
62     }
63     return fixture;
64 }
65 
66 static EVP_PKEY *newkey = NULL;
67 static X509 *cert = NULL;
68 
69 #define EXECUTE_MSG_CREATION_TEST(expr)                                                                                                  \
70     do {                                                                                                                                 \
71         OSSL_CMP_MSG *msg = NULL;                                                                                                        \
72         int good = fixture->expected != 0 ? TEST_ptr(msg = (expr)) && TEST_true(valid_asn1_encoding(msg)) : TEST_ptr_null(msg = (expr)); \
73                                                                                                                                          \
74         OSSL_CMP_MSG_free(msg);                                                                                                          \
75         ERR_print_errors_fp(stderr);                                                                                                     \
76         return good;                                                                                                                     \
77     } while (0)
78 
79 /*-
80  * The following tests call a cmp message creation function.
81  * if fixture->expected != 0:
82  *         returns 1 if the message is created and syntactically correct.
83  * if fixture->expected == 0
84  *         returns 1 if message creation returns NULL
85  */
86 static int execute_certreq_create_test(CMP_MSG_TEST_FIXTURE *fixture)
87 {
88     EXECUTE_MSG_CREATION_TEST(ossl_cmp_certreq_new(fixture->cmp_ctx,
89         fixture->bodytype,
90         NULL));
91 }
92 
93 static int execute_errormsg_create_test(CMP_MSG_TEST_FIXTURE *fixture)
94 {
95     EXECUTE_MSG_CREATION_TEST(ossl_cmp_error_new(fixture->cmp_ctx, fixture->si,
96         fixture->err_code,
97         "details", 0));
98 }
99 
100 static int execute_rr_create_test(CMP_MSG_TEST_FIXTURE *fixture)
101 {
102     EXECUTE_MSG_CREATION_TEST(ossl_cmp_rr_new(fixture->cmp_ctx));
103 }
104 
105 static int execute_certconf_create_test(CMP_MSG_TEST_FIXTURE *fixture)
106 {
107     EXECUTE_MSG_CREATION_TEST(ossl_cmp_certConf_new(fixture->cmp_ctx, OSSL_CMP_CERTREQID,
108         fixture->fail_info, NULL));
109 }
110 
111 static int execute_genm_create_test(CMP_MSG_TEST_FIXTURE *fixture)
112 {
113     EXECUTE_MSG_CREATION_TEST(ossl_cmp_genm_new(fixture->cmp_ctx));
114 }
115 
116 static int execute_pollreq_create_test(CMP_MSG_TEST_FIXTURE *fixture)
117 {
118     EXECUTE_MSG_CREATION_TEST(ossl_cmp_pollReq_new(fixture->cmp_ctx, 4711));
119 }
120 
121 static int execute_pkimessage_create_test(CMP_MSG_TEST_FIXTURE *fixture)
122 {
123     EXECUTE_MSG_CREATION_TEST(ossl_cmp_msg_create(fixture->cmp_ctx, fixture->bodytype));
124 }
125 
126 static int set1_newPkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey)
127 {
128     if (!EVP_PKEY_up_ref(pkey))
129         return 0;
130 
131     if (!OSSL_CMP_CTX_set0_newPkey(ctx, 1, pkey)) {
132         EVP_PKEY_free(pkey);
133         return 0;
134     }
135     return 1;
136 }
137 
138 static int test_cmp_create_ir_protection_set(void)
139 {
140     OSSL_CMP_CTX *ctx;
141     unsigned char secret[16];
142 
143     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
144 
145     ctx = fixture->cmp_ctx;
146     fixture->bodytype = OSSL_CMP_PKIBODY_IR;
147     fixture->err_code = -1;
148     fixture->expected = 1;
149     if (!TEST_int_eq(1, RAND_bytes_ex(libctx, secret, sizeof(secret), 0))
150         || !TEST_true(SET_OPT_UNPROTECTED_SEND(ctx, 0))
151         || !TEST_true(set1_newPkey(ctx, newkey))
152         || !TEST_true(OSSL_CMP_CTX_set1_secretValue(ctx, secret,
153             sizeof(secret)))) {
154         tear_down(fixture);
155         fixture = NULL;
156     }
157     EXECUTE_TEST(execute_certreq_create_test, tear_down);
158     return result;
159 }
160 
161 static int test_cmp_create_ir_protection_fails(void)
162 {
163     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
164     fixture->bodytype = OSSL_CMP_PKIBODY_IR;
165     fixture->err_code = -1;
166     fixture->expected = 0;
167     if (!TEST_true(OSSL_CMP_CTX_set1_pkey(fixture->cmp_ctx, newkey))
168         || !TEST_true(SET_OPT_UNPROTECTED_SEND(fixture->cmp_ctx, 0))
169         /* newkey used by default for signing does not match cert: */
170         || !TEST_true(OSSL_CMP_CTX_set1_cert(fixture->cmp_ctx, cert))) {
171         tear_down(fixture);
172         fixture = NULL;
173     }
174     EXECUTE_TEST(execute_certreq_create_test, tear_down);
175     return result;
176 }
177 
178 static int test_cmp_create_cr_without_key(void)
179 {
180     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
181     fixture->bodytype = OSSL_CMP_PKIBODY_CR;
182     fixture->err_code = -1;
183     fixture->expected = 0;
184     EXECUTE_TEST(execute_certreq_create_test, tear_down);
185     return result;
186 }
187 
188 static int test_cmp_create_cr(void)
189 {
190     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
191     fixture->bodytype = OSSL_CMP_PKIBODY_CR;
192     fixture->err_code = -1;
193     fixture->expected = 1;
194     if (!TEST_true(set1_newPkey(fixture->cmp_ctx, newkey))) {
195         tear_down(fixture);
196         fixture = NULL;
197     }
198     EXECUTE_TEST(execute_certreq_create_test, tear_down);
199     return result;
200 }
201 
202 static int test_cmp_create_certreq_with_invalid_bodytype(void)
203 {
204     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
205     fixture->bodytype = OSSL_CMP_PKIBODY_RR;
206     fixture->err_code = -1;
207     fixture->expected = 0;
208     if (!TEST_true(set1_newPkey(fixture->cmp_ctx, newkey))) {
209         tear_down(fixture);
210         fixture = NULL;
211     }
212     EXECUTE_TEST(execute_certreq_create_test, tear_down);
213     return result;
214 }
215 
216 static int test_cmp_create_p10cr(void)
217 {
218     OSSL_CMP_CTX *ctx;
219     X509_REQ *p10cr = NULL;
220 
221     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
222     ctx = fixture->cmp_ctx;
223     fixture->bodytype = OSSL_CMP_PKIBODY_P10CR;
224     fixture->err_code = CMP_R_ERROR_CREATING_CERTREQ;
225     fixture->expected = 1;
226     if (!TEST_ptr(p10cr = load_csr_der(pkcs10_f, libctx))
227         || !TEST_true(set1_newPkey(ctx, newkey))
228         || !TEST_true(OSSL_CMP_CTX_set1_p10CSR(ctx, p10cr))) {
229         tear_down(fixture);
230         fixture = NULL;
231     }
232     X509_REQ_free(p10cr);
233     EXECUTE_TEST(execute_certreq_create_test, tear_down);
234     return result;
235 }
236 
237 static int test_cmp_create_p10cr_null(void)
238 {
239     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
240     fixture->bodytype = OSSL_CMP_PKIBODY_P10CR;
241     fixture->err_code = CMP_R_ERROR_CREATING_CERTREQ;
242     fixture->expected = 0;
243     if (!TEST_true(set1_newPkey(fixture->cmp_ctx, newkey))) {
244         tear_down(fixture);
245         fixture = NULL;
246     }
247     EXECUTE_TEST(execute_certreq_create_test, tear_down);
248     return result;
249 }
250 
251 static int test_cmp_create_kur(void)
252 {
253     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
254     fixture->bodytype = OSSL_CMP_PKIBODY_KUR;
255     fixture->err_code = -1;
256     fixture->expected = 1;
257     if (!TEST_true(set1_newPkey(fixture->cmp_ctx, newkey))
258         || !TEST_true(OSSL_CMP_CTX_set1_oldCert(fixture->cmp_ctx, cert))) {
259         tear_down(fixture);
260         fixture = NULL;
261     }
262     EXECUTE_TEST(execute_certreq_create_test, tear_down);
263     return result;
264 }
265 
266 static int test_cmp_create_kur_without_oldcert(void)
267 {
268     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
269     fixture->bodytype = OSSL_CMP_PKIBODY_KUR;
270     fixture->err_code = -1;
271     fixture->expected = 0;
272     if (!TEST_true(set1_newPkey(fixture->cmp_ctx, newkey))) {
273         tear_down(fixture);
274         fixture = NULL;
275     }
276     EXECUTE_TEST(execute_certreq_create_test, tear_down);
277     return result;
278 }
279 
280 static int test_cmp_create_certconf(void)
281 {
282     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
283     fixture->fail_info = 0;
284     fixture->expected = 1;
285     if (!TEST_true(ossl_cmp_ctx_set0_newCert(fixture->cmp_ctx,
286             X509_dup(cert)))) {
287         tear_down(fixture);
288         fixture = NULL;
289     }
290     EXECUTE_TEST(execute_certconf_create_test, tear_down);
291     return result;
292 }
293 
294 static int test_cmp_create_certconf_badAlg(void)
295 {
296     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
297     fixture->fail_info = 1 << OSSL_CMP_PKIFAILUREINFO_badAlg;
298     fixture->expected = 1;
299     if (!TEST_true(ossl_cmp_ctx_set0_newCert(fixture->cmp_ctx,
300             X509_dup(cert)))) {
301         tear_down(fixture);
302         fixture = NULL;
303     }
304     EXECUTE_TEST(execute_certconf_create_test, tear_down);
305     return result;
306 }
307 
308 static int test_cmp_create_certconf_fail_info_max(void)
309 {
310     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
311     fixture->fail_info = 1 << OSSL_CMP_PKIFAILUREINFO_MAX;
312     fixture->expected = 1;
313     if (!TEST_true(ossl_cmp_ctx_set0_newCert(fixture->cmp_ctx,
314             X509_dup(cert)))) {
315         tear_down(fixture);
316         fixture = NULL;
317     }
318     EXECUTE_TEST(execute_certconf_create_test, tear_down);
319     return result;
320 }
321 
322 static int test_cmp_create_error_msg(void)
323 {
324     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
325     fixture->si = OSSL_CMP_STATUSINFO_new(OSSL_CMP_PKISTATUS_rejection,
326         OSSL_CMP_PKIFAILUREINFO_systemFailure,
327         NULL);
328     fixture->err_code = -1;
329     fixture->expected = 1; /* expected: message creation is successful */
330     if (!TEST_true(set1_newPkey(fixture->cmp_ctx, newkey))) {
331         tear_down(fixture);
332         fixture = NULL;
333     }
334     EXECUTE_TEST(execute_errormsg_create_test, tear_down);
335     return result;
336 }
337 
338 static int test_cmp_create_pollreq(void)
339 {
340     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
341     fixture->expected = 1;
342     EXECUTE_TEST(execute_pollreq_create_test, tear_down);
343     return result;
344 }
345 
346 static int test_cmp_create_rr(void)
347 {
348     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
349     fixture->expected = 1;
350     if (!TEST_true(OSSL_CMP_CTX_set1_oldCert(fixture->cmp_ctx, cert))) {
351         tear_down(fixture);
352         fixture = NULL;
353     }
354     EXECUTE_TEST(execute_rr_create_test, tear_down);
355     return result;
356 }
357 
358 static int test_cmp_create_genm(void)
359 {
360     OSSL_CMP_ITAV *iv = NULL;
361 
362     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
363     fixture->expected = 1;
364     iv = OSSL_CMP_ITAV_create(OBJ_nid2obj(NID_id_it_implicitConfirm), NULL);
365     if (!TEST_ptr(iv)
366         || !TEST_true(OSSL_CMP_CTX_push0_genm_ITAV(fixture->cmp_ctx, iv))) {
367         OSSL_CMP_ITAV_free(iv);
368         tear_down(fixture);
369         fixture = NULL;
370     }
371 
372     EXECUTE_TEST(execute_genm_create_test, tear_down);
373     return result;
374 }
375 
376 static int execute_certrep_create(CMP_MSG_TEST_FIXTURE *fixture)
377 {
378     OSSL_CMP_CTX *ctx = fixture->cmp_ctx;
379     OSSL_CMP_CERTREPMESSAGE *crepmsg = OSSL_CMP_CERTREPMESSAGE_new();
380     OSSL_CMP_CERTRESPONSE *read_cresp, *cresp = OSSL_CMP_CERTRESPONSE_new();
381     X509 *certfromresp = NULL;
382     int res = 0;
383 
384     if (crepmsg == NULL || cresp == NULL)
385         goto err;
386     if (!ASN1_INTEGER_set(cresp->certReqId, 99))
387         goto err;
388     if ((cresp->certifiedKeyPair = OSSL_CMP_CERTIFIEDKEYPAIR_new()) == NULL)
389         goto err;
390     cresp->certifiedKeyPair->certOrEncCert->type = OSSL_CMP_CERTORENCCERT_CERTIFICATE;
391     if ((cresp->certifiedKeyPair->certOrEncCert->value.certificate = X509_dup(cert)) == NULL
392         || !sk_OSSL_CMP_CERTRESPONSE_push(crepmsg->response, cresp))
393         goto err;
394     cresp = NULL;
395     read_cresp = ossl_cmp_certrepmessage_get0_certresponse(crepmsg, 99);
396     if (!TEST_ptr(read_cresp))
397         goto err;
398     if (!TEST_ptr_null(ossl_cmp_certrepmessage_get0_certresponse(crepmsg, 88)))
399         goto err;
400     certfromresp = ossl_cmp_certresponse_get1_cert(ctx, read_cresp);
401     if (certfromresp == NULL || !TEST_int_eq(X509_cmp(cert, certfromresp), 0))
402         goto err;
403 
404     res = 1;
405 err:
406     X509_free(certfromresp);
407     OSSL_CMP_CERTRESPONSE_free(cresp);
408     OSSL_CMP_CERTREPMESSAGE_free(crepmsg);
409     return res;
410 }
411 
412 static int test_cmp_create_certrep(void)
413 {
414     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
415     EXECUTE_TEST(execute_certrep_create, tear_down);
416     return result;
417 }
418 
419 static int execute_rp_create(CMP_MSG_TEST_FIXTURE *fixture)
420 {
421     OSSL_CMP_PKISI *si = OSSL_CMP_STATUSINFO_new(33, 44, "a text");
422     X509_NAME *issuer = X509_NAME_new();
423     ASN1_INTEGER *serial = ASN1_INTEGER_new();
424     OSSL_CRMF_CERTID *cid = NULL;
425     OSSL_CMP_MSG *rpmsg = NULL;
426     int res = 0;
427 
428     if (si == NULL || issuer == NULL || serial == NULL)
429         goto err;
430 
431     if (!X509_NAME_add_entry_by_txt(issuer, "CN", MBSTRING_ASC,
432             (unsigned char *)"The Issuer", -1, -1, 0)
433         || !ASN1_INTEGER_set(serial, 99)
434         || (cid = OSSL_CRMF_CERTID_gen(issuer, serial)) == NULL
435         || (rpmsg = ossl_cmp_rp_new(fixture->cmp_ctx, si, cid, 1)) == NULL)
436         goto err;
437 
438     if (!TEST_ptr(ossl_cmp_revrepcontent_get_CertId(rpmsg->body->value.rp, 0)))
439         goto err;
440 
441     if (!TEST_ptr(ossl_cmp_revrepcontent_get_pkisi(rpmsg->body->value.rp, 0)))
442         goto err;
443 
444     res = 1;
445 err:
446     ASN1_INTEGER_free(serial);
447     X509_NAME_free(issuer);
448     OSSL_CRMF_CERTID_free(cid);
449     OSSL_CMP_PKISI_free(si);
450     OSSL_CMP_MSG_free(rpmsg);
451     return res;
452 }
453 
454 static int test_cmp_create_rp(void)
455 {
456     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
457     EXECUTE_TEST(execute_rp_create, tear_down);
458     return result;
459 }
460 
461 static int execute_pollrep_create(CMP_MSG_TEST_FIXTURE *fixture)
462 {
463     OSSL_CMP_MSG *pollrep;
464     int res = 0;
465 
466     pollrep = ossl_cmp_pollRep_new(fixture->cmp_ctx, 77, 2000);
467     if (!TEST_ptr(pollrep))
468         return 0;
469     if (!TEST_ptr(ossl_cmp_pollrepcontent_get0_pollrep(pollrep->body->value.pollRep, 77)))
470         goto err;
471     if (!TEST_ptr_null(ossl_cmp_pollrepcontent_get0_pollrep(pollrep->body->value.pollRep, 88)))
472         goto err;
473 
474     res = 1;
475 err:
476     OSSL_CMP_MSG_free(pollrep);
477     return res;
478 }
479 
480 static int test_cmp_create_pollrep(void)
481 {
482     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
483     EXECUTE_TEST(execute_pollrep_create, tear_down);
484     return result;
485 }
486 
487 static int test_cmp_pkimessage_create(int bodytype)
488 {
489     X509_REQ *p10cr = NULL;
490 
491     SETUP_TEST_FIXTURE(CMP_MSG_TEST_FIXTURE, set_up);
492 
493     switch (fixture->bodytype = bodytype) {
494     case OSSL_CMP_PKIBODY_P10CR:
495         fixture->expected = 1;
496         p10cr = load_csr_der(pkcs10_f, libctx);
497         if (!TEST_true(OSSL_CMP_CTX_set1_p10CSR(fixture->cmp_ctx, p10cr))) {
498             tear_down(fixture);
499             fixture = NULL;
500         }
501         X509_REQ_free(p10cr);
502         break;
503     case OSSL_CMP_PKIBODY_IR:
504     case OSSL_CMP_PKIBODY_IP:
505     case OSSL_CMP_PKIBODY_CR:
506     case OSSL_CMP_PKIBODY_CP:
507     case OSSL_CMP_PKIBODY_KUR:
508     case OSSL_CMP_PKIBODY_KUP:
509     case OSSL_CMP_PKIBODY_RR:
510     case OSSL_CMP_PKIBODY_RP:
511     case OSSL_CMP_PKIBODY_PKICONF:
512     case OSSL_CMP_PKIBODY_GENM:
513     case OSSL_CMP_PKIBODY_GENP:
514     case OSSL_CMP_PKIBODY_ERROR:
515     case OSSL_CMP_PKIBODY_CERTCONF:
516     case OSSL_CMP_PKIBODY_POLLREQ:
517     case OSSL_CMP_PKIBODY_POLLREP:
518         fixture->expected = 1;
519         break;
520     default:
521         fixture->expected = 0;
522         break;
523     }
524 
525     EXECUTE_TEST(execute_pkimessage_create_test, tear_down);
526     return result;
527 }
528 
529 void cleanup_tests(void)
530 {
531     EVP_PKEY_free(newkey);
532     X509_free(cert);
533     OSSL_PROVIDER_unload(default_null_provider);
534     OSSL_PROVIDER_unload(provider);
535     OSSL_LIB_CTX_free(libctx);
536 }
537 
538 #define USAGE "new.key server.crt pkcs10.der module_name [module_conf_file]\n"
539 OPT_TEST_DECLARE_USAGE(USAGE)
540 
541 int setup_tests(void)
542 {
543     if (!test_skip_common_options()) {
544         TEST_error("Error parsing test options\n");
545         return 0;
546     }
547 
548     if (!TEST_ptr(newkey_f = test_get_argument(0))
549         || !TEST_ptr(server_cert_f = test_get_argument(1))
550         || !TEST_ptr(pkcs10_f = test_get_argument(2))) {
551         TEST_error("usage: cmp_msg_test %s", USAGE);
552         return 0;
553     }
554 
555     if (!test_arg_libctx(&libctx, &default_null_provider, &provider, 3, USAGE))
556         return 0;
557 
558     if (!TEST_ptr(newkey = load_pkey_pem(newkey_f, libctx))
559         || !TEST_ptr(cert = load_cert_pem(server_cert_f, libctx))
560         || !TEST_int_eq(1, RAND_bytes_ex(libctx, ref, sizeof(ref), 0))) {
561         cleanup_tests();
562         return 0;
563     }
564 
565     /* Message creation tests */
566     ADD_TEST(test_cmp_create_certreq_with_invalid_bodytype);
567     ADD_TEST(test_cmp_create_ir_protection_fails);
568     ADD_TEST(test_cmp_create_ir_protection_set);
569     ADD_TEST(test_cmp_create_error_msg);
570     ADD_TEST(test_cmp_create_certconf);
571     ADD_TEST(test_cmp_create_certconf_badAlg);
572     ADD_TEST(test_cmp_create_certconf_fail_info_max);
573     ADD_TEST(test_cmp_create_kur);
574     ADD_TEST(test_cmp_create_kur_without_oldcert);
575     ADD_TEST(test_cmp_create_cr);
576     ADD_TEST(test_cmp_create_cr_without_key);
577     ADD_TEST(test_cmp_create_p10cr);
578     ADD_TEST(test_cmp_create_p10cr_null);
579     ADD_TEST(test_cmp_create_pollreq);
580     ADD_TEST(test_cmp_create_rr);
581     ADD_TEST(test_cmp_create_rp);
582     ADD_TEST(test_cmp_create_genm);
583     ADD_TEST(test_cmp_create_certrep);
584     ADD_TEST(test_cmp_create_pollrep);
585     ADD_ALL_TESTS_NOSUBTEST(test_cmp_pkimessage_create,
586         OSSL_CMP_PKIBODY_POLLREP + 1);
587     return 1;
588 }
589