xref: /freebsd/crypto/openssl/test/radix/main.c (revision e7be843b4a162e68651d3911f0357ed464915629)
1*e7be843bSPierre Pronchery /*
2*e7be843bSPierre Pronchery  * Copyright 2024-2025 The OpenSSL Project Authors. All Rights Reserved.
3*e7be843bSPierre Pronchery  *
4*e7be843bSPierre Pronchery  * Licensed under the Apache License 2.0 (the "License").  You may not use
5*e7be843bSPierre Pronchery  * this file except in compliance with the License.  You can obtain a copy
6*e7be843bSPierre Pronchery  * in the file LICENSE in the source distribution or at
7*e7be843bSPierre Pronchery  * https://www.openssl.org/source/license.html
8*e7be843bSPierre Pronchery  */
9*e7be843bSPierre Pronchery 
10*e7be843bSPierre Pronchery OPT_TEST_DECLARE_USAGE("cert_file key_file\n")
11*e7be843bSPierre Pronchery 
12*e7be843bSPierre Pronchery /*
13*e7be843bSPierre Pronchery  * A RADIX test suite binding must define:
14*e7be843bSPierre Pronchery  *
15*e7be843bSPierre Pronchery  *   static SCRIPT_INFO *const scripts[];
16*e7be843bSPierre Pronchery  *
17*e7be843bSPierre Pronchery  *   int bindings_process_init(size_t node_idx, size_t process_idx);
18*e7be843bSPierre Pronchery  *   void bindings_process_finish(int testresult);
19*e7be843bSPierre Pronchery  *   int bindings_adjust_terp_config(TERP_CONFIG *cfg);
20*e7be843bSPierre Pronchery  *
21*e7be843bSPierre Pronchery  */
test_script(int idx)22*e7be843bSPierre Pronchery static int test_script(int idx)
23*e7be843bSPierre Pronchery {
24*e7be843bSPierre Pronchery     SCRIPT_INFO *script_info = scripts[idx];
25*e7be843bSPierre Pronchery     int testresult;
26*e7be843bSPierre Pronchery     TERP_CONFIG cfg = {0};
27*e7be843bSPierre Pronchery 
28*e7be843bSPierre Pronchery     if (!TEST_true(bindings_process_init(0, 0)))
29*e7be843bSPierre Pronchery         return 0;
30*e7be843bSPierre Pronchery 
31*e7be843bSPierre Pronchery     cfg.debug_bio = bio_err;
32*e7be843bSPierre Pronchery 
33*e7be843bSPierre Pronchery     if (!TEST_true(bindings_adjust_terp_config(&cfg)))
34*e7be843bSPierre Pronchery         return 0;
35*e7be843bSPierre Pronchery 
36*e7be843bSPierre Pronchery     testresult = TERP_run(script_info, &cfg);
37*e7be843bSPierre Pronchery 
38*e7be843bSPierre Pronchery     if (!bindings_process_finish(testresult))
39*e7be843bSPierre Pronchery         testresult = 0;
40*e7be843bSPierre Pronchery 
41*e7be843bSPierre Pronchery     return testresult;
42*e7be843bSPierre Pronchery }
43*e7be843bSPierre Pronchery 
setup_tests(void)44*e7be843bSPierre Pronchery int setup_tests(void)
45*e7be843bSPierre Pronchery {
46*e7be843bSPierre Pronchery     if (!test_skip_common_options()) {
47*e7be843bSPierre Pronchery         TEST_error("Error parsing test options\n");
48*e7be843bSPierre Pronchery         return 0;
49*e7be843bSPierre Pronchery     }
50*e7be843bSPierre Pronchery 
51*e7be843bSPierre Pronchery     cert_file = test_get_argument(0);
52*e7be843bSPierre Pronchery     if (cert_file == NULL)
53*e7be843bSPierre Pronchery         cert_file = "test/certs/servercert.pem";
54*e7be843bSPierre Pronchery 
55*e7be843bSPierre Pronchery     key_file = test_get_argument(1);
56*e7be843bSPierre Pronchery     if (key_file == NULL)
57*e7be843bSPierre Pronchery         key_file = "test/certs/serverkey.pem";
58*e7be843bSPierre Pronchery 
59*e7be843bSPierre Pronchery     ADD_ALL_TESTS(test_script, OSSL_NELEM(scripts));
60*e7be843bSPierre Pronchery     return 1;
61*e7be843bSPierre Pronchery }
62