diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/pem/pem_all.c | 343 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_pk8.c | 44 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_x509.c | 24 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_xaux.c | 42 |
4 files changed, 215 insertions, 238 deletions
diff --git a/src/lib/libcrypto/pem/pem_all.c b/src/lib/libcrypto/pem/pem_all.c index befa37c654..f5211f29a6 100644 --- a/src/lib/libcrypto/pem/pem_all.c +++ b/src/lib/libcrypto/pem/pem_all.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pem_all.c,v 1.16 2016/09/04 15:53:03 jsing Exp $ */ | 1 | /* $OpenBSD: pem_all.c,v 1.17 2016/09/04 16:10:38 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -142,16 +142,23 @@ static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey); | |||
| 142 | 142 | ||
| 143 | 143 | ||
| 144 | X509_REQ * | 144 | X509_REQ * |
| 145 | PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u) | 145 | PEM_read_X509_REQ(FILE *fp, X509_REQ **x, pem_password_cb *cb, void *u) |
| 146 | { | 146 | { |
| 147 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, bp, | 147 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, fp, |
| 148 | (void **)x, cb, u); | 148 | (void **)x, cb, u); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | int | ||
| 152 | PEM_write_X509_REQ(FILE *fp, X509_REQ *x) | ||
| 153 | { | ||
| 154 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, fp, | ||
| 155 | x, NULL, NULL, 0, NULL, NULL); | ||
| 156 | } | ||
| 157 | |||
| 151 | X509_REQ * | 158 | X509_REQ * |
| 152 | PEM_read_X509_REQ(FILE *fp, X509_REQ **x, pem_password_cb *cb, void *u) | 159 | PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u) |
| 153 | { | 160 | { |
| 154 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, fp, | 161 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, bp, |
| 155 | (void **)x, cb, u); | 162 | (void **)x, cb, u); |
| 156 | } | 163 | } |
| 157 | 164 | ||
| @@ -163,13 +170,12 @@ PEM_write_bio_X509_REQ(BIO *bp, X509_REQ *x) | |||
| 163 | } | 170 | } |
| 164 | 171 | ||
| 165 | int | 172 | int |
| 166 | PEM_write_X509_REQ(FILE *fp, X509_REQ *x) | 173 | PEM_write_X509_REQ_NEW(FILE *fp, X509_REQ *x) |
| 167 | { | 174 | { |
| 168 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, fp, | 175 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, fp, |
| 169 | x, NULL, NULL, 0, NULL, NULL); | 176 | x, NULL, NULL, 0, NULL, NULL); |
| 170 | } | 177 | } |
| 171 | 178 | ||
| 172 | |||
| 173 | int | 179 | int |
| 174 | PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x) | 180 | PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x) |
| 175 | { | 181 | { |
| @@ -177,14 +183,20 @@ PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x) | |||
| 177 | x, NULL, NULL, 0, NULL, NULL); | 183 | x, NULL, NULL, 0, NULL, NULL); |
| 178 | } | 184 | } |
| 179 | 185 | ||
| 186 | X509_CRL * | ||
| 187 | PEM_read_X509_CRL(FILE *fp, X509_CRL **x, pem_password_cb *cb, void *u) | ||
| 188 | { | ||
| 189 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_CRL, PEM_STRING_X509_CRL, fp, | ||
| 190 | (void **)x, cb, u); | ||
| 191 | } | ||
| 192 | |||
| 180 | int | 193 | int |
| 181 | PEM_write_X509_REQ_NEW(FILE *fp, X509_REQ *x) | 194 | PEM_write_X509_CRL(FILE *fp, X509_CRL *x) |
| 182 | { | 195 | { |
| 183 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, fp, | 196 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, fp, |
| 184 | x, NULL, NULL, 0, NULL, NULL); | 197 | x, NULL, NULL, 0, NULL, NULL); |
| 185 | } | 198 | } |
| 186 | 199 | ||
| 187 | |||
| 188 | X509_CRL * | 200 | X509_CRL * |
| 189 | PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u) | 201 | PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u) |
| 190 | { | 202 | { |
| @@ -192,13 +204,6 @@ PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u) | |||
| 192 | (void **)x, cb, u); | 204 | (void **)x, cb, u); |
| 193 | } | 205 | } |
| 194 | 206 | ||
| 195 | X509_CRL * | ||
| 196 | PEM_read_X509_CRL(FILE *fp, X509_CRL **x, pem_password_cb *cb, void *u) | ||
| 197 | { | ||
| 198 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_CRL, PEM_STRING_X509_CRL, fp, | ||
| 199 | (void **)x, cb, u); | ||
| 200 | } | ||
| 201 | |||
| 202 | int | 207 | int |
| 203 | PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x) | 208 | PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x) |
| 204 | { | 209 | { |
| @@ -206,14 +211,20 @@ PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x) | |||
| 206 | x, NULL, NULL, 0, NULL, NULL); | 211 | x, NULL, NULL, 0, NULL, NULL); |
| 207 | } | 212 | } |
| 208 | 213 | ||
| 214 | PKCS7 * | ||
| 215 | PEM_read_PKCS7(FILE *fp, PKCS7 **x, pem_password_cb *cb, void *u) | ||
| 216 | { | ||
| 217 | return PEM_ASN1_read((d2i_of_void *)d2i_PKCS7, PEM_STRING_PKCS7, fp, | ||
| 218 | (void **)x, cb, u); | ||
| 219 | } | ||
| 220 | |||
| 209 | int | 221 | int |
| 210 | PEM_write_X509_CRL(FILE *fp, X509_CRL *x) | 222 | PEM_write_PKCS7(FILE *fp, PKCS7 *x) |
| 211 | { | 223 | { |
| 212 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, fp, | 224 | return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, fp, |
| 213 | x, NULL, NULL, 0, NULL, NULL); | 225 | x, NULL, NULL, 0, NULL, NULL); |
| 214 | } | 226 | } |
| 215 | 227 | ||
| 216 | |||
| 217 | PKCS7 * | 228 | PKCS7 * |
| 218 | PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u) | 229 | PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u) |
| 219 | { | 230 | { |
| @@ -221,13 +232,6 @@ PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u) | |||
| 221 | (void **)x, cb, u); | 232 | (void **)x, cb, u); |
| 222 | } | 233 | } |
| 223 | 234 | ||
| 224 | PKCS7 * | ||
| 225 | PEM_read_PKCS7(FILE *fp, PKCS7 **x, pem_password_cb *cb, void *u) | ||
| 226 | { | ||
| 227 | return PEM_ASN1_read((d2i_of_void *)d2i_PKCS7, PEM_STRING_PKCS7, fp, | ||
| 228 | (void **)x, cb, u); | ||
| 229 | } | ||
| 230 | |||
| 231 | int | 235 | int |
| 232 | PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x) | 236 | PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x) |
| 233 | { | 237 | { |
| @@ -236,24 +240,23 @@ PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x) | |||
| 236 | } | 240 | } |
| 237 | 241 | ||
| 238 | int | 242 | int |
| 239 | PEM_write_PKCS7(FILE *fp, PKCS7 *x) | 243 | PEM_write_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE *x) |
| 240 | { | 244 | { |
| 241 | return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, fp, | 245 | return PEM_ASN1_write((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp, |
| 242 | x, NULL, NULL, 0, NULL, NULL); | 246 | x, NULL, NULL, 0, NULL, NULL); |
| 243 | } | 247 | } |
| 244 | 248 | ||
| 245 | |||
| 246 | NETSCAPE_CERT_SEQUENCE * | 249 | NETSCAPE_CERT_SEQUENCE * |
| 247 | PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) | 250 | PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) |
| 248 | { | 251 | { |
| 249 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp, | 252 | return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp, |
| 250 | (void **)x, cb, u); | 253 | (void **)x, cb, u); |
| 251 | } | 254 | } |
| 252 | 255 | ||
| 253 | NETSCAPE_CERT_SEQUENCE * | 256 | NETSCAPE_CERT_SEQUENCE * |
| 254 | PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) | 257 | PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) |
| 255 | { | 258 | { |
| 256 | return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp, | 259 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp, |
| 257 | (void **)x, cb, u); | 260 | (void **)x, cb, u); |
| 258 | } | 261 | } |
| 259 | 262 | ||
| @@ -264,14 +267,6 @@ PEM_write_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE *x) | |||
| 264 | x, NULL, NULL, 0, NULL, NULL); | 267 | x, NULL, NULL, 0, NULL, NULL); |
| 265 | } | 268 | } |
| 266 | 269 | ||
| 267 | int | ||
| 268 | PEM_write_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE *x) | ||
| 269 | { | ||
| 270 | return PEM_ASN1_write((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp, | ||
| 271 | x, NULL, NULL, 0, NULL, NULL); | ||
| 272 | } | ||
| 273 | |||
| 274 | |||
| 275 | #ifndef OPENSSL_NO_RSA | 270 | #ifndef OPENSSL_NO_RSA |
| 276 | 271 | ||
| 277 | /* We treat RSA or DSA private keys as a special case. | 272 | /* We treat RSA or DSA private keys as a special case. |
| @@ -301,26 +296,31 @@ pkey_get_rsa(EVP_PKEY *key, RSA **rsa) | |||
| 301 | } | 296 | } |
| 302 | 297 | ||
| 303 | RSA * | 298 | RSA * |
| 304 | PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb, void *u) | 299 | PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) |
| 305 | { | 300 | { |
| 306 | EVP_PKEY *pktmp; | 301 | EVP_PKEY *pktmp; |
| 307 | 302 | ||
| 308 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | 303 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); |
| 309 | return pkey_get_rsa(pktmp, rsa); | 304 | return pkey_get_rsa(pktmp, rsa); |
| 310 | } | 305 | } |
| 311 | 306 | ||
| 307 | int | ||
| 308 | PEM_write_RSAPrivateKey(FILE *fp, RSA *x, const EVP_CIPHER *enc, | ||
| 309 | unsigned char *kstr, int klen, pem_password_cb *cb, void *u) | ||
| 310 | { | ||
| 311 | return PEM_ASN1_write((i2d_of_void *)i2d_RSAPrivateKey, PEM_STRING_RSA, fp, | ||
| 312 | x, enc, kstr, klen, cb, u); | ||
| 313 | } | ||
| 312 | 314 | ||
| 313 | RSA * | 315 | RSA * |
| 314 | PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) | 316 | PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **rsa, pem_password_cb *cb, void *u) |
| 315 | { | 317 | { |
| 316 | EVP_PKEY *pktmp; | 318 | EVP_PKEY *pktmp; |
| 317 | 319 | ||
| 318 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); | 320 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); |
| 319 | return pkey_get_rsa(pktmp, rsa); | 321 | return pkey_get_rsa(pktmp, rsa); |
| 320 | } | 322 | } |
| 321 | 323 | ||
| 322 | |||
| 323 | |||
| 324 | int | 324 | int |
| 325 | PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, | 325 | PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, |
| 326 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, | 326 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, |
| @@ -330,22 +330,6 @@ PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, | |||
| 330 | x, enc, kstr, klen, cb, u); | 330 | x, enc, kstr, klen, cb, u); |
| 331 | } | 331 | } |
| 332 | 332 | ||
| 333 | int | ||
| 334 | PEM_write_RSAPrivateKey(FILE *fp, RSA *x, const EVP_CIPHER *enc, | ||
| 335 | unsigned char *kstr, int klen, pem_password_cb *cb, void *u) | ||
| 336 | { | ||
| 337 | return PEM_ASN1_write((i2d_of_void *)i2d_RSAPrivateKey, PEM_STRING_RSA, fp, | ||
| 338 | x, enc, kstr, klen, cb, u); | ||
| 339 | } | ||
| 340 | |||
| 341 | |||
| 342 | RSA * | ||
| 343 | PEM_read_bio_RSAPublicKey(BIO *bp, RSA **x, pem_password_cb *cb, void *u) | ||
| 344 | { | ||
| 345 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp, | ||
| 346 | (void **)x, cb, u); | ||
| 347 | } | ||
| 348 | |||
| 349 | RSA * | 333 | RSA * |
| 350 | PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u) | 334 | PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u) |
| 351 | { | 335 | { |
| @@ -354,13 +338,6 @@ PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u) | |||
| 354 | } | 338 | } |
| 355 | 339 | ||
| 356 | int | 340 | int |
| 357 | PEM_write_bio_RSAPublicKey(BIO *bp, const RSA *x) | ||
| 358 | { | ||
| 359 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp, | ||
| 360 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 361 | } | ||
| 362 | |||
| 363 | int | ||
| 364 | PEM_write_RSAPublicKey(FILE *fp, const RSA *x) | 341 | PEM_write_RSAPublicKey(FILE *fp, const RSA *x) |
| 365 | { | 342 | { |
| 366 | return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp, | 343 | return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp, |
| @@ -368,12 +345,19 @@ PEM_write_RSAPublicKey(FILE *fp, const RSA *x) | |||
| 368 | } | 345 | } |
| 369 | 346 | ||
| 370 | RSA * | 347 | RSA * |
| 371 | PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u) | 348 | PEM_read_bio_RSAPublicKey(BIO *bp, RSA **x, pem_password_cb *cb, void *u) |
| 372 | { | 349 | { |
| 373 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, | 350 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp, |
| 374 | (void **)x, cb, u); | 351 | (void **)x, cb, u); |
| 375 | } | 352 | } |
| 376 | 353 | ||
| 354 | int | ||
| 355 | PEM_write_bio_RSAPublicKey(BIO *bp, const RSA *x) | ||
| 356 | { | ||
| 357 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, bp, | ||
| 358 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 359 | } | ||
| 360 | |||
| 377 | RSA * | 361 | RSA * |
| 378 | PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u) | 362 | PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u) |
| 379 | { | 363 | { |
| @@ -382,16 +366,23 @@ PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u) | |||
| 382 | } | 366 | } |
| 383 | 367 | ||
| 384 | int | 368 | int |
| 385 | PEM_write_bio_RSA_PUBKEY(BIO *bp, RSA *x) | 369 | PEM_write_RSA_PUBKEY(FILE *fp, RSA *x) |
| 386 | { | 370 | { |
| 387 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, | 371 | return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, fp, |
| 388 | x, NULL, NULL, 0, NULL, NULL); | 372 | x, NULL, NULL, 0, NULL, NULL); |
| 389 | } | 373 | } |
| 390 | 374 | ||
| 375 | RSA * | ||
| 376 | PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u) | ||
| 377 | { | ||
| 378 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 379 | (void **)x, cb, u); | ||
| 380 | } | ||
| 381 | |||
| 391 | int | 382 | int |
| 392 | PEM_write_RSA_PUBKEY(FILE *fp, RSA *x) | 383 | PEM_write_bio_RSA_PUBKEY(BIO *bp, RSA *x) |
| 393 | { | 384 | { |
| 394 | return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, fp, | 385 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, |
| 395 | x, NULL, NULL, 0, NULL, NULL); | 386 | x, NULL, NULL, 0, NULL, NULL); |
| 396 | } | 387 | } |
| 397 | 388 | ||
| @@ -418,24 +409,14 @@ pkey_get_dsa(EVP_PKEY *key, DSA **dsa) | |||
| 418 | } | 409 | } |
| 419 | 410 | ||
| 420 | DSA * | 411 | DSA * |
| 421 | PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, void *u) | 412 | PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u) |
| 422 | { | 413 | { |
| 423 | EVP_PKEY *pktmp; | 414 | EVP_PKEY *pktmp; |
| 424 | 415 | ||
| 425 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | 416 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); |
| 426 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ | 417 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ |
| 427 | } | 418 | } |
| 428 | 419 | ||
| 429 | |||
| 430 | int | ||
| 431 | PEM_write_bio_DSAPrivateKey(BIO *bp, DSA *x, | ||
| 432 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, | ||
| 433 | void *u) | ||
| 434 | { | ||
| 435 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAPrivateKey, PEM_STRING_DSA, bp, | ||
| 436 | x, enc, kstr, klen, cb, u); | ||
| 437 | } | ||
| 438 | |||
| 439 | int | 420 | int |
| 440 | PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc, | 421 | PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc, |
| 441 | unsigned char *kstr, int klen, pem_password_cb *cb, void *u) | 422 | unsigned char *kstr, int klen, pem_password_cb *cb, void *u) |
| @@ -444,12 +425,22 @@ PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc, | |||
| 444 | x, enc, kstr, klen, cb, u); | 425 | x, enc, kstr, klen, cb, u); |
| 445 | } | 426 | } |
| 446 | 427 | ||
| 447 | |||
| 448 | DSA * | 428 | DSA * |
| 449 | PEM_read_bio_DSA_PUBKEY(BIO *bp, DSA **x, pem_password_cb *cb, void *u) | 429 | PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, void *u) |
| 450 | { | 430 | { |
| 451 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, bp, | 431 | EVP_PKEY *pktmp; |
| 452 | (void **)x, cb, u); | 432 | |
| 433 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | ||
| 434 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ | ||
| 435 | } | ||
| 436 | |||
| 437 | int | ||
| 438 | PEM_write_bio_DSAPrivateKey(BIO *bp, DSA *x, | ||
| 439 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, | ||
| 440 | void *u) | ||
| 441 | { | ||
| 442 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAPrivateKey, PEM_STRING_DSA, bp, | ||
| 443 | x, enc, kstr, klen, cb, u); | ||
| 453 | } | 444 | } |
| 454 | 445 | ||
| 455 | DSA * | 446 | DSA * |
| @@ -460,35 +451,23 @@ PEM_read_DSA_PUBKEY(FILE *fp, DSA **x, pem_password_cb *cb, void *u) | |||
| 460 | } | 451 | } |
| 461 | 452 | ||
| 462 | int | 453 | int |
| 463 | PEM_write_bio_DSA_PUBKEY(BIO *bp, DSA *x) | ||
| 464 | { | ||
| 465 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 466 | x, NULL, NULL, 0, NULL, NULL); | ||
| 467 | } | ||
| 468 | |||
| 469 | int | ||
| 470 | PEM_write_DSA_PUBKEY(FILE *fp, DSA *x) | 454 | PEM_write_DSA_PUBKEY(FILE *fp, DSA *x) |
| 471 | { | 455 | { |
| 472 | return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, fp, | 456 | return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, fp, |
| 473 | x, NULL, NULL, 0, NULL, NULL); | 457 | x, NULL, NULL, 0, NULL, NULL); |
| 474 | } | 458 | } |
| 475 | 459 | ||
| 476 | 460 | int | |
| 477 | DSA * | 461 | PEM_write_bio_DSA_PUBKEY(BIO *bp, DSA *x) |
| 478 | PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u) | ||
| 479 | { | 462 | { |
| 480 | EVP_PKEY *pktmp; | 463 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, bp, |
| 481 | 464 | x, NULL, NULL, 0, NULL, NULL); | |
| 482 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); | ||
| 483 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ | ||
| 484 | } | 465 | } |
| 485 | 466 | ||
| 486 | |||
| 487 | |||
| 488 | DSA * | 467 | DSA * |
| 489 | PEM_read_bio_DSAparams(BIO *bp, DSA **x, pem_password_cb *cb, void *u) | 468 | PEM_read_bio_DSA_PUBKEY(BIO *bp, DSA **x, pem_password_cb *cb, void *u) |
| 490 | { | 469 | { |
| 491 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSAparams, PEM_STRING_DSAPARAMS, bp, | 470 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, bp, |
| 492 | (void **)x, cb, u); | 471 | (void **)x, cb, u); |
| 493 | } | 472 | } |
| 494 | 473 | ||
| @@ -500,16 +479,23 @@ PEM_read_DSAparams(FILE *fp, DSA **x, pem_password_cb *cb, void *u) | |||
| 500 | } | 479 | } |
| 501 | 480 | ||
| 502 | int | 481 | int |
| 503 | PEM_write_bio_DSAparams(BIO *bp, const DSA *x) | 482 | PEM_write_DSAparams(FILE *fp, const DSA *x) |
| 504 | { | 483 | { |
| 505 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, bp, | 484 | return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, fp, |
| 506 | (void *)x, NULL, NULL, 0, NULL, NULL); | 485 | (void *)x, NULL, NULL, 0, NULL, NULL); |
| 507 | } | 486 | } |
| 508 | 487 | ||
| 488 | DSA * | ||
| 489 | PEM_read_bio_DSAparams(BIO *bp, DSA **x, pem_password_cb *cb, void *u) | ||
| 490 | { | ||
| 491 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSAparams, PEM_STRING_DSAPARAMS, bp, | ||
| 492 | (void **)x, cb, u); | ||
| 493 | } | ||
| 494 | |||
| 509 | int | 495 | int |
| 510 | PEM_write_DSAparams(FILE *fp, const DSA *x) | 496 | PEM_write_bio_DSAparams(BIO *bp, const DSA *x) |
| 511 | { | 497 | { |
| 512 | return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, fp, | 498 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, bp, |
| 513 | (void *)x, NULL, NULL, 0, NULL, NULL); | 499 | (void *)x, NULL, NULL, 0, NULL, NULL); |
| 514 | } | 500 | } |
| 515 | 501 | ||
| @@ -535,26 +521,24 @@ pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey) | |||
| 535 | return dtmp; | 521 | return dtmp; |
| 536 | } | 522 | } |
| 537 | 523 | ||
| 538 | EC_KEY * | 524 | EC_GROUP * |
| 539 | PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, void *u) | 525 | PEM_read_ECPKParameters(FILE *fp, EC_GROUP **x, pem_password_cb *cb, void *u) |
| 540 | { | 526 | { |
| 541 | EVP_PKEY *pktmp; | 527 | return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, |
| 542 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); | 528 | (void **)x, cb, u); |
| 543 | return pkey_get_eckey(pktmp, key); /* will free pktmp */ | ||
| 544 | } | 529 | } |
| 545 | 530 | ||
| 546 | 531 | int | |
| 547 | EC_GROUP * | 532 | PEM_write_ECPKParameters(FILE *fp, const EC_GROUP *x) |
| 548 | PEM_read_bio_ECPKParameters(BIO *bp, EC_GROUP **x, pem_password_cb *cb, void *u) | ||
| 549 | { | 533 | { |
| 550 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, bp, | 534 | return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, |
| 551 | (void **)x, cb, u); | 535 | (void *)x, NULL, NULL, 0, NULL, NULL); |
| 552 | } | 536 | } |
| 553 | 537 | ||
| 554 | EC_GROUP * | 538 | EC_GROUP * |
| 555 | PEM_read_ECPKParameters(FILE *fp, EC_GROUP **x, pem_password_cb *cb, void *u) | 539 | PEM_read_bio_ECPKParameters(BIO *bp, EC_GROUP **x, pem_password_cb *cb, void *u) |
| 556 | { | 540 | { |
| 557 | return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, | 541 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, bp, |
| 558 | (void **)x, cb, u); | 542 | (void **)x, cb, u); |
| 559 | } | 543 | } |
| 560 | 544 | ||
| @@ -565,21 +549,13 @@ PEM_write_bio_ECPKParameters(BIO *bp, const EC_GROUP *x) | |||
| 565 | (void *)x, NULL, NULL, 0, NULL, NULL); | 549 | (void *)x, NULL, NULL, 0, NULL, NULL); |
| 566 | } | 550 | } |
| 567 | 551 | ||
| 568 | int | 552 | EC_KEY * |
| 569 | PEM_write_ECPKParameters(FILE *fp, const EC_GROUP *x) | 553 | PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, void *u) |
| 570 | { | 554 | { |
| 571 | return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, | 555 | EVP_PKEY *pktmp; |
| 572 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 573 | } | ||
| 574 | |||
| 575 | 556 | ||
| 576 | int | 557 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); |
| 577 | PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x, | 558 | return pkey_get_eckey(pktmp, eckey); /* will free pktmp */ |
| 578 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, | ||
| 579 | void *u) | ||
| 580 | { | ||
| 581 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPrivateKey, PEM_STRING_ECPRIVATEKEY, bp, | ||
| 582 | x, enc, kstr, klen, cb, u); | ||
| 583 | } | 559 | } |
| 584 | 560 | ||
| 585 | int | 561 | int |
| @@ -590,12 +566,21 @@ PEM_write_ECPrivateKey(FILE *fp, EC_KEY *x, const EVP_CIPHER *enc, | |||
| 590 | x, enc, kstr, klen, cb, u); | 566 | x, enc, kstr, klen, cb, u); |
| 591 | } | 567 | } |
| 592 | 568 | ||
| 593 | |||
| 594 | EC_KEY * | 569 | EC_KEY * |
| 595 | PEM_read_bio_EC_PUBKEY(BIO *bp, EC_KEY **x, pem_password_cb *cb, void *u) | 570 | PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, void *u) |
| 596 | { | 571 | { |
| 597 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, bp, | 572 | EVP_PKEY *pktmp; |
| 598 | (void **)x, cb, u); | 573 | pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); |
| 574 | return pkey_get_eckey(pktmp, key); /* will free pktmp */ | ||
| 575 | } | ||
| 576 | |||
| 577 | int | ||
| 578 | PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x, | ||
| 579 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, | ||
| 580 | void *u) | ||
| 581 | { | ||
| 582 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPrivateKey, PEM_STRING_ECPRIVATEKEY, bp, | ||
| 583 | x, enc, kstr, klen, cb, u); | ||
| 599 | } | 584 | } |
| 600 | 585 | ||
| 601 | EC_KEY * | 586 | EC_KEY * |
| @@ -606,42 +591,30 @@ PEM_read_EC_PUBKEY(FILE *fp, EC_KEY **x, pem_password_cb *cb, void *u) | |||
| 606 | } | 591 | } |
| 607 | 592 | ||
| 608 | int | 593 | int |
| 609 | PEM_write_bio_EC_PUBKEY(BIO *bp, EC_KEY *x) | ||
| 610 | { | ||
| 611 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 612 | x, NULL, NULL, 0, NULL, NULL); | ||
| 613 | } | ||
| 614 | |||
| 615 | int | ||
| 616 | PEM_write_EC_PUBKEY(FILE *fp, EC_KEY *x) | 594 | PEM_write_EC_PUBKEY(FILE *fp, EC_KEY *x) |
| 617 | { | 595 | { |
| 618 | return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, fp, | 596 | return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, fp, |
| 619 | x, NULL, NULL, 0, NULL, NULL); | 597 | x, NULL, NULL, 0, NULL, NULL); |
| 620 | } | 598 | } |
| 621 | 599 | ||
| 622 | |||
| 623 | EC_KEY * | 600 | EC_KEY * |
| 624 | PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, void *u) | 601 | PEM_read_bio_EC_PUBKEY(BIO *bp, EC_KEY **x, pem_password_cb *cb, void *u) |
| 625 | { | 602 | { |
| 626 | EVP_PKEY *pktmp; | 603 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, bp, |
| 627 | 604 | (void **)x, cb, u); | |
| 628 | pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); | ||
| 629 | return pkey_get_eckey(pktmp, eckey); /* will free pktmp */ | ||
| 630 | } | 605 | } |
| 631 | 606 | ||
| 607 | int | ||
| 608 | PEM_write_bio_EC_PUBKEY(BIO *bp, EC_KEY *x) | ||
| 609 | { | ||
| 610 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 611 | x, NULL, NULL, 0, NULL, NULL); | ||
| 612 | } | ||
| 632 | 613 | ||
| 633 | #endif | 614 | #endif |
| 634 | 615 | ||
| 635 | #ifndef OPENSSL_NO_DH | 616 | #ifndef OPENSSL_NO_DH |
| 636 | 617 | ||
| 637 | |||
| 638 | DH * | ||
| 639 | PEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u) | ||
| 640 | { | ||
| 641 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DHparams, PEM_STRING_DHPARAMS, bp, | ||
| 642 | (void **)x, cb, u); | ||
| 643 | } | ||
| 644 | |||
| 645 | DH * | 618 | DH * |
| 646 | PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u) | 619 | PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u) |
| 647 | { | 620 | { |
| @@ -650,29 +623,28 @@ PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u) | |||
| 650 | } | 623 | } |
| 651 | 624 | ||
| 652 | int | 625 | int |
| 653 | PEM_write_bio_DHparams(BIO *bp, const DH *x) | 626 | PEM_write_DHparams(FILE *fp, const DH *x) |
| 654 | { | 627 | { |
| 655 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, bp, | 628 | return PEM_ASN1_write((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, fp, |
| 656 | (void *)x, NULL, NULL, 0, NULL, NULL); | 629 | (void *)x, NULL, NULL, 0, NULL, NULL); |
| 657 | } | 630 | } |
| 658 | 631 | ||
| 632 | DH * | ||
| 633 | PEM_read_bio_DHparams(BIO *bp, DH **x, pem_password_cb *cb, void *u) | ||
| 634 | { | ||
| 635 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DHparams, PEM_STRING_DHPARAMS, bp, | ||
| 636 | (void **)x, cb, u); | ||
| 637 | } | ||
| 638 | |||
| 659 | int | 639 | int |
| 660 | PEM_write_DHparams(FILE *fp, const DH *x) | 640 | PEM_write_bio_DHparams(BIO *bp, const DH *x) |
| 661 | { | 641 | { |
| 662 | return PEM_ASN1_write((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, fp, | 642 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, bp, |
| 663 | (void *)x, NULL, NULL, 0, NULL, NULL); | 643 | (void *)x, NULL, NULL, 0, NULL, NULL); |
| 664 | } | 644 | } |
| 665 | 645 | ||
| 666 | #endif | 646 | #endif |
| 667 | 647 | ||
| 668 | |||
| 669 | EVP_PKEY * | ||
| 670 | PEM_read_bio_PUBKEY(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u) | ||
| 671 | { | ||
| 672 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 673 | (void **)x, cb, u); | ||
| 674 | } | ||
| 675 | |||
| 676 | EVP_PKEY * | 648 | EVP_PKEY * |
| 677 | PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) | 649 | PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) |
| 678 | { | 650 | { |
| @@ -681,15 +653,22 @@ PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) | |||
| 681 | } | 653 | } |
| 682 | 654 | ||
| 683 | int | 655 | int |
| 684 | PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x) | 656 | PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x) |
| 685 | { | 657 | { |
| 686 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, bp, | 658 | return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, fp, |
| 687 | x, NULL, NULL, 0, NULL, NULL); | 659 | x, NULL, NULL, 0, NULL, NULL); |
| 688 | } | 660 | } |
| 689 | 661 | ||
| 662 | EVP_PKEY * | ||
| 663 | PEM_read_bio_PUBKEY(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u) | ||
| 664 | { | ||
| 665 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 666 | (void **)x, cb, u); | ||
| 667 | } | ||
| 668 | |||
| 690 | int | 669 | int |
| 691 | PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x) | 670 | PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x) |
| 692 | { | 671 | { |
| 693 | return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, fp, | 672 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, bp, |
| 694 | x, NULL, NULL, 0, NULL, NULL); | 673 | x, NULL, NULL, 0, NULL, NULL); |
| 695 | } | 674 | } |
diff --git a/src/lib/libcrypto/pem/pem_pk8.c b/src/lib/libcrypto/pem/pem_pk8.c index 50aafb7655..4b3578f971 100644 --- a/src/lib/libcrypto/pem/pem_pk8.c +++ b/src/lib/libcrypto/pem/pem_pk8.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pem_pk8.c,v 1.11 2016/09/04 15:53:03 jsing Exp $ */ | 1 | /* $OpenBSD: pem_pk8.c,v 1.12 2016/09/04 16:10:38 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -250,19 +250,24 @@ d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) | |||
| 250 | return ret; | 250 | return ret; |
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | |||
| 254 | |||
| 255 | X509_SIG * | 253 | X509_SIG * |
| 256 | PEM_read_bio_PKCS8(BIO *bp, X509_SIG **x, pem_password_cb *cb, void *u) | 254 | PEM_read_PKCS8(FILE *fp, X509_SIG **x, pem_password_cb *cb, void *u) |
| 257 | { | 255 | { |
| 258 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, bp, | 256 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, fp, |
| 259 | (void **)x, cb, u); | 257 | (void **)x, cb, u); |
| 260 | } | 258 | } |
| 261 | 259 | ||
| 260 | int | ||
| 261 | PEM_write_PKCS8(FILE *fp, X509_SIG *x) | ||
| 262 | { | ||
| 263 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, fp, | ||
| 264 | x, NULL, NULL, 0, NULL, NULL); | ||
| 265 | } | ||
| 266 | |||
| 262 | X509_SIG * | 267 | X509_SIG * |
| 263 | PEM_read_PKCS8(FILE *fp, X509_SIG **x, pem_password_cb *cb, void *u) | 268 | PEM_read_bio_PKCS8(BIO *bp, X509_SIG **x, pem_password_cb *cb, void *u) |
| 264 | { | 269 | { |
| 265 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, fp, | 270 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, bp, |
| 266 | (void **)x, cb, u); | 271 | (void **)x, cb, u); |
| 267 | } | 272 | } |
| 268 | 273 | ||
| @@ -273,10 +278,17 @@ PEM_write_bio_PKCS8(BIO *bp, X509_SIG *x) | |||
| 273 | x, NULL, NULL, 0, NULL, NULL); | 278 | x, NULL, NULL, 0, NULL, NULL); |
| 274 | } | 279 | } |
| 275 | 280 | ||
| 281 | PKCS8_PRIV_KEY_INFO * | ||
| 282 | PEM_read_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u) | ||
| 283 | { | ||
| 284 | return PEM_ASN1_read((d2i_of_void *)d2i_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp, | ||
| 285 | (void **)x, cb, u); | ||
| 286 | } | ||
| 287 | |||
| 276 | int | 288 | int |
| 277 | PEM_write_PKCS8(FILE *fp, X509_SIG *x) | 289 | PEM_write_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO *x) |
| 278 | { | 290 | { |
| 279 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, fp, | 291 | return PEM_ASN1_write((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp, |
| 280 | x, NULL, NULL, 0, NULL, NULL); | 292 | x, NULL, NULL, 0, NULL, NULL); |
| 281 | } | 293 | } |
| 282 | 294 | ||
| @@ -287,23 +299,9 @@ PEM_read_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO **x, pem_password_ | |||
| 287 | (void **)x, cb, u); | 299 | (void **)x, cb, u); |
| 288 | } | 300 | } |
| 289 | 301 | ||
| 290 | PKCS8_PRIV_KEY_INFO * | ||
| 291 | PEM_read_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u) | ||
| 292 | { | ||
| 293 | return PEM_ASN1_read((d2i_of_void *)d2i_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp, | ||
| 294 | (void **)x, cb, u); | ||
| 295 | } | ||
| 296 | |||
| 297 | int | 302 | int |
| 298 | PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO *x) | 303 | PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO *x) |
| 299 | { | 304 | { |
| 300 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp, | 305 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp, |
| 301 | x, NULL, NULL, 0, NULL, NULL); | 306 | x, NULL, NULL, 0, NULL, NULL); |
| 302 | } | 307 | } |
| 303 | |||
| 304 | int | ||
| 305 | PEM_write_PKCS8_PRIV_KEY_INFO(FILE *fp, PKCS8_PRIV_KEY_INFO *x) | ||
| 306 | { | ||
| 307 | return PEM_ASN1_write((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, fp, | ||
| 308 | x, NULL, NULL, 0, NULL, NULL); | ||
| 309 | } | ||
diff --git a/src/lib/libcrypto/pem/pem_x509.c b/src/lib/libcrypto/pem/pem_x509.c index 350c48ba9a..f440a9f0aa 100644 --- a/src/lib/libcrypto/pem/pem_x509.c +++ b/src/lib/libcrypto/pem/pem_x509.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pem_x509.c,v 1.7 2016/09/04 15:53:03 jsing Exp $ */ | 1 | /* $OpenBSD: pem_x509.c,v 1.8 2016/09/04 16:10:38 jsing Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -66,13 +66,6 @@ | |||
| 66 | 66 | ||
| 67 | 67 | ||
| 68 | X509 * | 68 | X509 * |
| 69 | PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u) | ||
| 70 | { | ||
| 71 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509, PEM_STRING_X509, bp, | ||
| 72 | (void **)x, cb, u); | ||
| 73 | } | ||
| 74 | |||
| 75 | X509 * | ||
| 76 | PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u) | 69 | PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u) |
| 77 | { | 70 | { |
| 78 | return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, fp, | 71 | return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, fp, |
| @@ -80,15 +73,22 @@ PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u) | |||
| 80 | } | 73 | } |
| 81 | 74 | ||
| 82 | int | 75 | int |
| 83 | PEM_write_bio_X509(BIO *bp, X509 *x) | 76 | PEM_write_X509(FILE *fp, X509 *x) |
| 84 | { | 77 | { |
| 85 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509, PEM_STRING_X509, bp, | 78 | return PEM_ASN1_write((i2d_of_void *)i2d_X509, PEM_STRING_X509, fp, |
| 86 | x, NULL, NULL, 0, NULL, NULL); | 79 | x, NULL, NULL, 0, NULL, NULL); |
| 87 | } | 80 | } |
| 88 | 81 | ||
| 82 | X509 * | ||
| 83 | PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u) | ||
| 84 | { | ||
| 85 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509, PEM_STRING_X509, bp, | ||
| 86 | (void **)x, cb, u); | ||
| 87 | } | ||
| 88 | |||
| 89 | int | 89 | int |
| 90 | PEM_write_X509(FILE *fp, X509 *x) | 90 | PEM_write_bio_X509(BIO *bp, X509 *x) |
| 91 | { | 91 | { |
| 92 | return PEM_ASN1_write((i2d_of_void *)i2d_X509, PEM_STRING_X509, fp, | 92 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509, PEM_STRING_X509, bp, |
| 93 | x, NULL, NULL, 0, NULL, NULL); | 93 | x, NULL, NULL, 0, NULL, NULL); |
| 94 | } | 94 | } |
diff --git a/src/lib/libcrypto/pem/pem_xaux.c b/src/lib/libcrypto/pem/pem_xaux.c index f5dfb8476c..0dd81523b5 100644 --- a/src/lib/libcrypto/pem/pem_xaux.c +++ b/src/lib/libcrypto/pem/pem_xaux.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: pem_xaux.c,v 1.8 2016/09/04 15:53:03 jsing Exp $ */ | 1 | /* $OpenBSD: pem_xaux.c,v 1.9 2016/09/04 16:10:38 jsing Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -66,16 +66,23 @@ | |||
| 66 | 66 | ||
| 67 | 67 | ||
| 68 | X509 * | 68 | X509 * |
| 69 | PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u) | 69 | PEM_read_X509_AUX(FILE *fp, X509 **x, pem_password_cb *cb, void *u) |
| 70 | { | 70 | { |
| 71 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, bp, | 71 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, fp, |
| 72 | (void **)x, cb, u); | 72 | (void **)x, cb, u); |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | int | ||
| 76 | PEM_write_X509_AUX(FILE *fp, X509 *x) | ||
| 77 | { | ||
| 78 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, fp, | ||
| 79 | x, NULL, NULL, 0, NULL, NULL); | ||
| 80 | } | ||
| 81 | |||
| 75 | X509 * | 82 | X509 * |
| 76 | PEM_read_X509_AUX(FILE *fp, X509 **x, pem_password_cb *cb, void *u) | 83 | PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u) |
| 77 | { | 84 | { |
| 78 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, fp, | 85 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, bp, |
| 79 | (void **)x, cb, u); | 86 | (void **)x, cb, u); |
| 80 | } | 87 | } |
| 81 | 88 | ||
| @@ -86,10 +93,17 @@ PEM_write_bio_X509_AUX(BIO *bp, X509 *x) | |||
| 86 | x, NULL, NULL, 0, NULL, NULL); | 93 | x, NULL, NULL, 0, NULL, NULL); |
| 87 | } | 94 | } |
| 88 | 95 | ||
| 96 | X509_CERT_PAIR * | ||
| 97 | PEM_read_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR **x, pem_password_cb *cb, void *u) | ||
| 98 | { | ||
| 99 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp, | ||
| 100 | (void **)x, cb, u); | ||
| 101 | } | ||
| 102 | |||
| 89 | int | 103 | int |
| 90 | PEM_write_X509_AUX(FILE *fp, X509 *x) | 104 | PEM_write_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR *x) |
| 91 | { | 105 | { |
| 92 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, fp, | 106 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp, |
| 93 | x, NULL, NULL, 0, NULL, NULL); | 107 | x, NULL, NULL, 0, NULL, NULL); |
| 94 | } | 108 | } |
| 95 | 109 | ||
| @@ -100,23 +114,9 @@ PEM_read_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR **x, pem_password_cb *cb, vo | |||
| 100 | (void **)x, cb, u); | 114 | (void **)x, cb, u); |
| 101 | } | 115 | } |
| 102 | 116 | ||
| 103 | X509_CERT_PAIR * | ||
| 104 | PEM_read_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR **x, pem_password_cb *cb, void *u) | ||
| 105 | { | ||
| 106 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp, | ||
| 107 | (void **)x, cb, u); | ||
| 108 | } | ||
| 109 | |||
| 110 | int | 117 | int |
| 111 | PEM_write_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR *x) | 118 | PEM_write_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR *x) |
| 112 | { | 119 | { |
| 113 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp, | 120 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp, |
| 114 | x, NULL, NULL, 0, NULL, NULL); | 121 | x, NULL, NULL, 0, NULL, NULL); |
| 115 | } | 122 | } |
| 116 | |||
| 117 | int | ||
| 118 | PEM_write_X509_CERT_PAIR(FILE *fp, X509_CERT_PAIR *x) | ||
| 119 | { | ||
| 120 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, fp, | ||
| 121 | x, NULL, NULL, 0, NULL, NULL); | ||
| 122 | } | ||
