1 /* $Id: test-mft.c,v 1.29 2024/04/22 05:54:01 claudio Exp $ */
2 /*
3 * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
4 *
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18 #include <sys/types.h>
19 #include <netinet/in.h>
20 #include <assert.h>
21 #include <err.h>
22 #include <resolv.h> /* b64_ntop */
23 #include <stdio.h>
24 #include <stdint.h>
25 #include <stdlib.h>
26 #include <string.h>
27 #include <unistd.h>
28
29 #include <openssl/err.h>
30 #include <openssl/evp.h>
31 #include <openssl/pem.h>
32 #include <openssl/x509v3.h>
33
34 #include "extern.h"
35
36 int outformats;
37 int verbose;
38 int filemode = 1;
39 int experimental;
40
41 int
main(int argc,char * argv[])42 main(int argc, char *argv[])
43 {
44 int c, i, ppem = 0, verb = 0;
45 struct mft *p;
46 X509 *xp = NULL;
47 unsigned char *buf;
48 size_t len;
49
50 ERR_load_crypto_strings();
51 OpenSSL_add_all_ciphers();
52 OpenSSL_add_all_digests();
53 x509_init_oid();
54
55 while (-1 != (c = getopt(argc, argv, "pv")))
56 switch (c) {
57 case 'p':
58 if (ppem)
59 break;
60 ppem = 1;
61 break;
62 case 'v':
63 verb++;
64 break;
65 default:
66 errx(1, "bad argument %c", c);
67 }
68
69 argv += optind;
70 argc -= optind;
71
72 if (argc == 0)
73 errx(1, "argument missing");
74
75 for (i = 0; i < argc; i++) {
76 buf = load_file(argv[i], &len);
77 if ((p = mft_parse(&xp, argv[i], -1, buf, len)) == NULL) {
78 free(buf);
79 break;
80 }
81 if (verb)
82 mft_print(xp, p);
83 if (ppem) {
84 if (!PEM_write_X509(stdout, xp))
85 errx(1, "PEM_write_X509: unable to write cert");
86 }
87 free(buf);
88 mft_free(p);
89 X509_free(xp);
90 }
91
92 EVP_cleanup();
93 CRYPTO_cleanup_all_ex_data();
94 ERR_free_strings();
95
96 if (i < argc)
97 errx(1, "test failed for %s", argv[i]);
98
99 printf("OK\n");
100 return 0;
101 }
102
103 time_t
get_current_time(void)104 get_current_time(void)
105 {
106 return time(NULL);
107 }
108