]>
Commit | Line | Data |
---|---|---|
84b65340 DSH |
1 | |
2 | #include <stdio.h> | |
3 | #include <stdlib.h> | |
4 | #include <openssl/pem.h> | |
5 | #include <openssl/err.h> | |
6 | #include <openssl/pkcs12.h> | |
7 | ||
8 | /* Simple PKCS#12 file creator */ | |
9 | ||
10 | int main(int argc, char **argv) | |
11 | { | |
0f113f3e MC |
12 | FILE *fp; |
13 | EVP_PKEY *pkey; | |
14 | X509 *cert; | |
15 | PKCS12 *p12; | |
16 | if (argc != 5) { | |
17 | fprintf(stderr, "Usage: pkwrite infile password name p12file\n"); | |
18 | exit(1); | |
19 | } | |
b0700d2c | 20 | OpenSSL_add_all_algorithms(); |
0f113f3e | 21 | ERR_load_crypto_strings(); |
75ebbd9a | 22 | if ((fp = fopen(argv[1], "r")) == NULL) { |
0f113f3e MC |
23 | fprintf(stderr, "Error opening file %s\n", argv[1]); |
24 | exit(1); | |
25 | } | |
26 | cert = PEM_read_X509(fp, NULL, NULL, NULL); | |
27 | rewind(fp); | |
28 | pkey = PEM_read_PrivateKey(fp, NULL, NULL, NULL); | |
29 | fclose(fp); | |
30 | p12 = PKCS12_create(argv[2], argv[3], pkey, cert, NULL, 0, 0, 0, 0, 0); | |
31 | if (!p12) { | |
32 | fprintf(stderr, "Error creating PKCS#12 structure\n"); | |
33 | ERR_print_errors_fp(stderr); | |
34 | exit(1); | |
35 | } | |
75ebbd9a | 36 | if ((fp = fopen(argv[4], "wb")) == NULL) { |
0f113f3e MC |
37 | fprintf(stderr, "Error opening file %s\n", argv[1]); |
38 | ERR_print_errors_fp(stderr); | |
39 | exit(1); | |
40 | } | |
41 | i2d_PKCS12_fp(fp, p12); | |
42 | PKCS12_free(p12); | |
43 | fclose(fp); | |
44 | return 0; | |
84b65340 | 45 | } |