Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssl/src/crypto/pem/pem_all.c |
Source code | Switch to Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | /* | - | ||||||
2 | * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. | - | ||||||
3 | * | - | ||||||
4 | * Licensed under the OpenSSL license (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 | - | ||||||
8 | */ | - | ||||||
9 | - | |||||||
10 | #include <stdio.h> | - | ||||||
11 | #include "internal/cryptlib.h" | - | ||||||
12 | #include <openssl/bio.h> | - | ||||||
13 | #include <openssl/evp.h> | - | ||||||
14 | #include <openssl/x509.h> | - | ||||||
15 | #include <openssl/pkcs7.h> | - | ||||||
16 | #include <openssl/pem.h> | - | ||||||
17 | #include <openssl/rsa.h> | - | ||||||
18 | #include <openssl/dsa.h> | - | ||||||
19 | #include <openssl/dh.h> | - | ||||||
20 | - | |||||||
21 | #ifndef OPENSSL_NO_RSA | - | ||||||
22 | static RSA *pkey_get_rsa(EVP_PKEY *key, RSA **rsa); | - | ||||||
23 | #endif | - | ||||||
24 | #ifndef OPENSSL_NO_DSA | - | ||||||
25 | static DSA *pkey_get_dsa(EVP_PKEY *key, DSA **dsa); | - | ||||||
26 | #endif | - | ||||||
27 | - | |||||||
28 | #ifndef OPENSSL_NO_EC | - | ||||||
29 | static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey); | - | ||||||
30 | #endif | - | ||||||
31 | - | |||||||
32 | IMPLEMENT_PEM_rw(X509_REQ, X509_REQ, PEM_STRING_X509_REQ, X509_REQ) executed 23 times by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, "CERTIFICATE REQUEST",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, "CERTIFICATE REQUEST",fp,(void **)x,cb,u); executed 17 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_REQ,"CERTIFICATE REQUEST",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ,"CERTIFICATE REQUEST",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-23 | ||||||
33 | - | |||||||
34 | IMPLEMENT_PEM_write(X509_REQ_NEW, X509_REQ, PEM_STRING_X509_REQ_OLD, X509_REQ) never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_REQ,"NEW CERTIFICATE REQUEST",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ,"NEW CERTIFICATE REQUEST",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0 | ||||||
35 | IMPLEMENT_PEM_rw(X509_CRL, X509_CRL, PEM_STRING_X509_CRL, X509_CRL) executed 13 times by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_CRL, "X509 CRL",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_X509_CRL, "X509 CRL",fp,(void **)x,cb,u); executed 4 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CRL,"X509 CRL",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL,"X509 CRL",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-13 | ||||||
36 | IMPLEMENT_PEM_rw(PKCS7, PKCS7, PEM_STRING_PKCS7, PKCS7) executed 8 times by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_PKCS7, "PKCS7",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_PKCS7, "PKCS7",fp,(void **)x,cb,u); executed 6 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS7,"PKCS7",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7,"PKCS7",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-8 | ||||||
37 | - | |||||||
38 | IMPLEMENT_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE, never executed: return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, "CERTIFICATE",bp,(void **)x,cb,u); never executed: return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, "CERTIFICATE",fp,(void **)x,cb,u); never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE,"CERTIFICATE",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE,"CERTIFICATE",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0 | ||||||
39 | PEM_STRING_X509, NETSCAPE_CERT_SEQUENCE) | - | ||||||
40 | #ifndef OPENSSL_NO_RSA | - | ||||||
41 | /* | - | ||||||
42 | * We treat RSA or DSA private keys as a special case. For private keys we | - | ||||||
43 | * read in an EVP_PKEY structure with PEM_read_bio_PrivateKey() and extract | - | ||||||
44 | * the relevant private key: this means can handle "traditional" and PKCS#8 | - | ||||||
45 | * formats transparently. | - | ||||||
46 | */ | - | ||||||
47 | static RSA *pkey_get_rsa(EVP_PKEY *key, RSA **rsa) | - | ||||||
48 | { | - | ||||||
49 | RSA *rtmp; | - | ||||||
50 | if (!key)
| 0 | ||||||
51 | return NULL; never executed: return ((void *)0) ; | 0 | ||||||
52 | rtmp = EVP_PKEY_get1_RSA(key); | - | ||||||
53 | EVP_PKEY_free(key); | - | ||||||
54 | if (!rtmp)
| 0 | ||||||
55 | return NULL; never executed: return ((void *)0) ; | 0 | ||||||
56 | if (rsa) {
| 0 | ||||||
57 | RSA_free(*rsa); | - | ||||||
58 | *rsa = rtmp; | - | ||||||
59 | } never executed: end of block | 0 | ||||||
60 | return rtmp; never executed: return rtmp; | 0 | ||||||
61 | } | - | ||||||
62 | - | |||||||
63 | RSA *PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb, | - | ||||||
64 | void *u) | - | ||||||
65 | { | - | ||||||
66 | EVP_PKEY *pktmp; | - | ||||||
67 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | - | ||||||
68 | return pkey_get_rsa(pktmp, rsa); never executed: return pkey_get_rsa(pktmp, rsa); | 0 | ||||||
69 | } | - | ||||||
70 | - | |||||||
71 | # ifndef OPENSSL_NO_STDIO | - | ||||||
72 | - | |||||||
73 | RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) | - | ||||||
74 | { | - | ||||||
75 | EVP_PKEY *pktmp; | - | ||||||
76 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); | - | ||||||
77 | return pkey_get_rsa(pktmp, rsa); never executed: return pkey_get_rsa(pktmp, rsa); | 0 | ||||||
78 | } | - | ||||||
79 | - | |||||||
80 | # endif | - | ||||||
81 | - | |||||||
82 | IMPLEMENT_PEM_write_cb_const(RSAPrivateKey, RSA, PEM_STRING_RSA, executed 9 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPrivateKey,"RSA PRIVATE KEY",bp,(void *)x,enc,kstr,klen,cb,u); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_RSAPrivateKey,"RSA PRIVATE KEY",fp,x,enc,kstr,klen,cb,u); | 0-9 | ||||||
83 | RSAPrivateKey) | - | ||||||
84 | - | |||||||
85 | - | |||||||
86 | IMPLEMENT_PEM_rw_const(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, never executed: return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSAPublicKey, "RSA PUBLIC KEY",bp,(void **)x,cb,u); never executed: return PEM_ASN1_read((d2i_of_void *)d2i_RSAPublicKey, "RSA PUBLIC KEY",fp,(void **)x,cb,u); never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPublicKey,"RSA PUBLIC KEY",bp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey,"RSA PUBLIC KEY",fp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0 | ||||||
87 | RSAPublicKey) IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, never executed: return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, "PUBLIC KEY",bp,(void **)x,cb,u); never executed: return PEM_ASN1_read((d2i_of_void *)d2i_RSA_PUBKEY, "PUBLIC KEY",fp,(void **)x,cb,u); executed 4 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY,"PUBLIC KEY",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY,"PUBLIC KEY",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-4 | ||||||
88 | PEM_STRING_PUBLIC, | - | ||||||
89 | RSA_PUBKEY) | - | ||||||
90 | #endif | - | ||||||
91 | #ifndef OPENSSL_NO_DSA | - | ||||||
92 | static DSA *pkey_get_dsa(EVP_PKEY *key, DSA **dsa) | - | ||||||
93 | { | - | ||||||
94 | DSA *dtmp; | - | ||||||
95 | if (!key)
| 0-1801 | ||||||
96 | return NULL; never executed: return ((void *)0) ; | 0 | ||||||
97 | dtmp = EVP_PKEY_get1_DSA(key); | - | ||||||
98 | EVP_PKEY_free(key); | - | ||||||
99 | if (!dtmp)
| 0-1801 | ||||||
100 | return NULL; never executed: return ((void *)0) ; | 0 | ||||||
101 | if (dsa) {
| 0-1801 | ||||||
102 | DSA_free(*dsa); | - | ||||||
103 | *dsa = dtmp; | - | ||||||
104 | } never executed: end of block | 0 | ||||||
105 | return dtmp; executed 1801 times by 1 test: return dtmp; Executed by:
| 1801 | ||||||
106 | } | - | ||||||
107 | - | |||||||
108 | DSA *PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, | - | ||||||
109 | void *u) | - | ||||||
110 | { | - | ||||||
111 | EVP_PKEY *pktmp; | - | ||||||
112 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | - | ||||||
113 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ executed 1801 times by 1 test: return pkey_get_dsa(pktmp, dsa); Executed by:
| 1801 | ||||||
114 | } | - | ||||||
115 | - | |||||||
116 | IMPLEMENT_PEM_write_cb_const(DSAPrivateKey, DSA, PEM_STRING_DSA, executed 4 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAPrivateKey,"DSA PRIVATE KEY",bp,(void *)x,enc,kstr,klen,cb,u); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_DSAPrivateKey,"DSA PRIVATE KEY",fp,x,enc,kstr,klen,cb,u); | 0-4 | ||||||
117 | DSAPrivateKey) | - | ||||||
118 | IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY) never executed: return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, "PUBLIC KEY",bp,(void **)x,cb,u); never executed: return PEM_ASN1_read((d2i_of_void *)d2i_DSA_PUBKEY, "PUBLIC KEY",fp,(void **)x,cb,u); executed 4 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSA_PUBKEY,"PUBLIC KEY",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY,"PUBLIC KEY",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-4 | ||||||
119 | # ifndef OPENSSL_NO_STDIO | - | ||||||
120 | DSA *PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u) | - | ||||||
121 | { | - | ||||||
122 | EVP_PKEY *pktmp; | - | ||||||
123 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); | - | ||||||
124 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ never executed: return pkey_get_dsa(pktmp, dsa); | 0 | ||||||
125 | } | - | ||||||
126 | - | |||||||
127 | # endif | - | ||||||
128 | - | |||||||
129 | IMPLEMENT_PEM_rw_const(DSAparams, DSA, PEM_STRING_DSAPARAMS, DSAparams) executed 1 time by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSAparams, "DSA PARAMETERS",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_DSAparams, "DSA PARAMETERS",fp,(void **)x,cb,u); never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams,"DSA PARAMETERS",bp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams,"DSA PARAMETERS",fp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-1 | ||||||
130 | #endif | - | ||||||
131 | #ifndef OPENSSL_NO_EC | - | ||||||
132 | static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey) | - | ||||||
133 | { | - | ||||||
134 | EC_KEY *dtmp; | - | ||||||
135 | if (!key)
| 0-1805 | ||||||
136 | return NULL; never executed: return ((void *)0) ; | 0 | ||||||
137 | dtmp = EVP_PKEY_get1_EC_KEY(key); | - | ||||||
138 | EVP_PKEY_free(key); | - | ||||||
139 | if (!dtmp)
| 0-1805 | ||||||
140 | return NULL; never executed: return ((void *)0) ; | 0 | ||||||
141 | if (eckey) {
| 0-1805 | ||||||
142 | EC_KEY_free(*eckey); | - | ||||||
143 | *eckey = dtmp; | - | ||||||
144 | } never executed: end of block | 0 | ||||||
145 | return dtmp; executed 1805 times by 1 test: return dtmp; Executed by:
| 1805 | ||||||
146 | } | - | ||||||
147 | - | |||||||
148 | EC_KEY *PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, | - | ||||||
149 | void *u) | - | ||||||
150 | { | - | ||||||
151 | EVP_PKEY *pktmp; | - | ||||||
152 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | - | ||||||
153 | return pkey_get_eckey(pktmp, key); /* will free pktmp */ executed 1805 times by 1 test: return pkey_get_eckey(pktmp, key); Executed by:
| 1805 | ||||||
154 | } | - | ||||||
155 | - | |||||||
156 | IMPLEMENT_PEM_rw_const(ECPKParameters, EC_GROUP, PEM_STRING_ECPARAMETERS, executed 134 times by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, "EC PARAMETERS",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, "EC PARAMETERS",fp,(void **)x,cb,u); executed 1 time by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPKParameters,"EC PARAMETERS",bp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters,"EC PARAMETERS",fp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-134 | ||||||
157 | ECPKParameters) | - | ||||||
158 | - | |||||||
159 | - | |||||||
160 | IMPLEMENT_PEM_write_cb(ECPrivateKey, EC_KEY, PEM_STRING_ECPRIVATEKEY, executed 3 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPrivateKey,"EC PRIVATE KEY",bp,x,enc,kstr,klen,cb,u); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_ECPrivateKey,"EC PRIVATE KEY",fp,x,enc,kstr,klen,cb,u); | 0-3 | ||||||
161 | ECPrivateKey) | - | ||||||
162 | IMPLEMENT_PEM_rw(EC_PUBKEY, EC_KEY, PEM_STRING_PUBLIC, EC_PUBKEY) executed 4 times by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, "PUBLIC KEY",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_EC_PUBKEY, "PUBLIC KEY",fp,(void **)x,cb,u); executed 3 times by 1 test: return PEM_ASN1_write_bio((i2d_of_void *)i2d_EC_PUBKEY,"PUBLIC KEY",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); Executed by:
never executed: return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY,"PUBLIC KEY",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-4 | ||||||
163 | # ifndef OPENSSL_NO_STDIO | - | ||||||
164 | EC_KEY *PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, | - | ||||||
165 | void *u) | - | ||||||
166 | { | - | ||||||
167 | EVP_PKEY *pktmp; | - | ||||||
168 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); | - | ||||||
169 | return pkey_get_eckey(pktmp, eckey); /* will free pktmp */ never executed: return pkey_get_eckey(pktmp, eckey); | 0 | ||||||
170 | } | - | ||||||
171 | - | |||||||
172 | # endif | - | ||||||
173 | - | |||||||
174 | #endif | - | ||||||
175 | - | |||||||
176 | #ifndef OPENSSL_NO_DH | - | ||||||
177 | - | |||||||
178 | IMPLEMENT_PEM_write_const(DHparams, DH, PEM_STRING_DHPARAMS, DHparams) never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams,"DH PARAMETERS",bp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_DHparams,"DH PARAMETERS",fp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0 | ||||||
179 | IMPLEMENT_PEM_write_const(DHxparams, DH, PEM_STRING_DHXPARAMS, DHxparams) never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHxparams,"X9.42 DH PARAMETERS",bp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_DHxparams,"X9.42 DH PARAMETERS",fp,(void *)x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0 | ||||||
180 | #endif | - | ||||||
181 | IMPLEMENT_PEM_rw(PUBKEY, EVP_PKEY, PEM_STRING_PUBLIC, PUBKEY) executed 1205 times by 1 test: return PEM_ASN1_read_bio((d2i_of_void *)d2i_PUBKEY, "PUBLIC KEY",bp,(void **)x,cb,u); Executed by:
never executed: return PEM_ASN1_read((d2i_of_void *)d2i_PUBKEY, "PUBLIC KEY",fp,(void **)x,cb,u); never executed: return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY,"PUBLIC KEY",bp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); never executed: return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY,"PUBLIC KEY",fp,x, ((void *)0) , ((void *)0) ,0, ((void *)0) , ((void *)0) ); | 0-1205 | ||||||
Source code | Switch to Preprocessed file |