diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/pem/pem_all.c | 422 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_pk8.c | 61 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_x509.c | 31 | ||||
| -rw-r--r-- | src/lib/libcrypto/pem/pem_xaux.c | 61 |
4 files changed, 545 insertions, 30 deletions
diff --git a/src/lib/libcrypto/pem/pem_all.c b/src/lib/libcrypto/pem/pem_all.c index 7df917b01c..befa37c654 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.15 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: pem_all.c,v 1.16 2016/09/04 15:53:03 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 | * |
| @@ -140,16 +140,136 @@ static DSA *pkey_get_dsa(EVP_PKEY *key, DSA **dsa); | |||
| 140 | static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey); | 140 | static EC_KEY *pkey_get_eckey(EVP_PKEY *key, EC_KEY **eckey); |
| 141 | #endif | 141 | #endif |
| 142 | 142 | ||
| 143 | IMPLEMENT_PEM_rw(X509_REQ, X509_REQ, PEM_STRING_X509_REQ, X509_REQ) | ||
| 144 | 143 | ||
| 145 | IMPLEMENT_PEM_write(X509_REQ_NEW, X509_REQ, PEM_STRING_X509_REQ_OLD, X509_REQ) | 144 | X509_REQ * |
| 145 | PEM_read_bio_X509_REQ(BIO *bp, X509_REQ **x, pem_password_cb *cb, void *u) | ||
| 146 | { | ||
| 147 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, bp, | ||
| 148 | (void **)x, cb, u); | ||
| 149 | } | ||
| 150 | |||
| 151 | X509_REQ * | ||
| 152 | PEM_read_X509_REQ(FILE *fp, X509_REQ **x, pem_password_cb *cb, void *u) | ||
| 153 | { | ||
| 154 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_REQ, PEM_STRING_X509_REQ, fp, | ||
| 155 | (void **)x, cb, u); | ||
| 156 | } | ||
| 146 | 157 | ||
| 147 | IMPLEMENT_PEM_rw(X509_CRL, X509_CRL, PEM_STRING_X509_CRL, X509_CRL) | 158 | int |
| 159 | PEM_write_bio_X509_REQ(BIO *bp, X509_REQ *x) | ||
| 160 | { | ||
| 161 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, bp, | ||
| 162 | x, NULL, NULL, 0, NULL, NULL); | ||
| 163 | } | ||
| 148 | 164 | ||
| 149 | IMPLEMENT_PEM_rw(PKCS7, PKCS7, PEM_STRING_PKCS7, PKCS7) | 165 | int |
| 166 | PEM_write_X509_REQ(FILE *fp, X509_REQ *x) | ||
| 167 | { | ||
| 168 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ, fp, | ||
| 169 | x, NULL, NULL, 0, NULL, NULL); | ||
| 170 | } | ||
| 150 | 171 | ||
| 151 | IMPLEMENT_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE, | 172 | |
| 152 | PEM_STRING_X509, NETSCAPE_CERT_SEQUENCE) | 173 | int |
| 174 | PEM_write_bio_X509_REQ_NEW(BIO *bp, X509_REQ *x) | ||
| 175 | { | ||
| 176 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, bp, | ||
| 177 | x, NULL, NULL, 0, NULL, NULL); | ||
| 178 | } | ||
| 179 | |||
| 180 | int | ||
| 181 | PEM_write_X509_REQ_NEW(FILE *fp, X509_REQ *x) | ||
| 182 | { | ||
| 183 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_REQ, PEM_STRING_X509_REQ_OLD, fp, | ||
| 184 | x, NULL, NULL, 0, NULL, NULL); | ||
| 185 | } | ||
| 186 | |||
| 187 | |||
| 188 | X509_CRL * | ||
| 189 | PEM_read_bio_X509_CRL(BIO *bp, X509_CRL **x, pem_password_cb *cb, void *u) | ||
| 190 | { | ||
| 191 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_CRL, PEM_STRING_X509_CRL, bp, | ||
| 192 | (void **)x, cb, u); | ||
| 193 | } | ||
| 194 | |||
| 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 | ||
| 203 | PEM_write_bio_X509_CRL(BIO *bp, X509_CRL *x) | ||
| 204 | { | ||
| 205 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, bp, | ||
| 206 | x, NULL, NULL, 0, NULL, NULL); | ||
| 207 | } | ||
| 208 | |||
| 209 | int | ||
| 210 | PEM_write_X509_CRL(FILE *fp, X509_CRL *x) | ||
| 211 | { | ||
| 212 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_CRL, PEM_STRING_X509_CRL, fp, | ||
| 213 | x, NULL, NULL, 0, NULL, NULL); | ||
| 214 | } | ||
| 215 | |||
| 216 | |||
| 217 | PKCS7 * | ||
| 218 | PEM_read_bio_PKCS7(BIO *bp, PKCS7 **x, pem_password_cb *cb, void *u) | ||
| 219 | { | ||
| 220 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_PKCS7, PEM_STRING_PKCS7, bp, | ||
| 221 | (void **)x, cb, u); | ||
| 222 | } | ||
| 223 | |||
| 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 | ||
| 232 | PEM_write_bio_PKCS7(BIO *bp, PKCS7 *x) | ||
| 233 | { | ||
| 234 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, bp, | ||
| 235 | x, NULL, NULL, 0, NULL, NULL); | ||
| 236 | } | ||
| 237 | |||
| 238 | int | ||
| 239 | PEM_write_PKCS7(FILE *fp, PKCS7 *x) | ||
| 240 | { | ||
| 241 | return PEM_ASN1_write((i2d_of_void *)i2d_PKCS7, PEM_STRING_PKCS7, fp, | ||
| 242 | x, NULL, NULL, 0, NULL, NULL); | ||
| 243 | } | ||
| 244 | |||
| 245 | |||
| 246 | NETSCAPE_CERT_SEQUENCE * | ||
| 247 | PEM_read_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) | ||
| 248 | { | ||
| 249 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp, | ||
| 250 | (void **)x, cb, u); | ||
| 251 | } | ||
| 252 | |||
| 253 | NETSCAPE_CERT_SEQUENCE * | ||
| 254 | PEM_read_NETSCAPE_CERT_SEQUENCE(FILE *fp, NETSCAPE_CERT_SEQUENCE **x, pem_password_cb *cb, void *u) | ||
| 255 | { | ||
| 256 | return PEM_ASN1_read((d2i_of_void *)d2i_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, fp, | ||
| 257 | (void **)x, cb, u); | ||
| 258 | } | ||
| 259 | |||
| 260 | int | ||
| 261 | PEM_write_bio_NETSCAPE_CERT_SEQUENCE(BIO *bp, NETSCAPE_CERT_SEQUENCE *x) | ||
| 262 | { | ||
| 263 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_NETSCAPE_CERT_SEQUENCE, PEM_STRING_X509, bp, | ||
| 264 | x, NULL, NULL, 0, NULL, NULL); | ||
| 265 | } | ||
| 266 | |||
| 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 | } | ||
| 153 | 273 | ||
| 154 | 274 | ||
| 155 | #ifndef OPENSSL_NO_RSA | 275 | #ifndef OPENSSL_NO_RSA |
| @@ -200,10 +320,80 @@ PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb, void *u) | |||
| 200 | } | 320 | } |
| 201 | 321 | ||
| 202 | 322 | ||
| 203 | IMPLEMENT_PEM_write_cb_const(RSAPrivateKey, RSA, PEM_STRING_RSA, RSAPrivateKey) | ||
| 204 | 323 | ||
| 205 | IMPLEMENT_PEM_rw_const(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, RSAPublicKey) | 324 | int |
| 206 | IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, PEM_STRING_PUBLIC, RSA_PUBKEY) | 325 | PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, |
| 326 | const EVP_CIPHER *enc, unsigned char *kstr, int klen, pem_password_cb *cb, | ||
| 327 | void *u) | ||
| 328 | { | ||
| 329 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSAPrivateKey, PEM_STRING_RSA, bp, | ||
| 330 | x, enc, kstr, klen, cb, u); | ||
| 331 | } | ||
| 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 * | ||
| 350 | PEM_read_RSAPublicKey(FILE *fp, RSA **x, pem_password_cb *cb, void *u) | ||
| 351 | { | ||
| 352 | return PEM_ASN1_read((d2i_of_void *)d2i_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp, | ||
| 353 | (void **)x, cb, u); | ||
| 354 | } | ||
| 355 | |||
| 356 | 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) | ||
| 365 | { | ||
| 366 | return PEM_ASN1_write((i2d_of_void *)i2d_RSAPublicKey, PEM_STRING_RSA_PUBLIC, fp, | ||
| 367 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 368 | } | ||
| 369 | |||
| 370 | RSA * | ||
| 371 | PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u) | ||
| 372 | { | ||
| 373 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 374 | (void **)x, cb, u); | ||
| 375 | } | ||
| 376 | |||
| 377 | RSA * | ||
| 378 | PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u) | ||
| 379 | { | ||
| 380 | return PEM_ASN1_read((d2i_of_void *)d2i_RSA_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 381 | (void **)x, cb, u); | ||
| 382 | } | ||
| 383 | |||
| 384 | int | ||
| 385 | PEM_write_bio_RSA_PUBKEY(BIO *bp, RSA *x) | ||
| 386 | { | ||
| 387 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 388 | x, NULL, NULL, 0, NULL, NULL); | ||
| 389 | } | ||
| 390 | |||
| 391 | int | ||
| 392 | PEM_write_RSA_PUBKEY(FILE *fp, RSA *x) | ||
| 393 | { | ||
| 394 | return PEM_ASN1_write((i2d_of_void *)i2d_RSA_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 395 | x, NULL, NULL, 0, NULL, NULL); | ||
| 396 | } | ||
| 207 | 397 | ||
| 208 | #endif | 398 | #endif |
| 209 | 399 | ||
| @@ -236,9 +426,52 @@ PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb, void *u) | |||
| 236 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ | 426 | return pkey_get_dsa(pktmp, dsa); /* will free pktmp */ |
| 237 | } | 427 | } |
| 238 | 428 | ||
| 239 | IMPLEMENT_PEM_write_cb_const(DSAPrivateKey, DSA, PEM_STRING_DSA, DSAPrivateKey) | ||
| 240 | 429 | ||
| 241 | IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY) | 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 | ||
| 440 | PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc, | ||
| 441 | unsigned char *kstr, int klen, pem_password_cb *cb, void *u) | ||
| 442 | { | ||
| 443 | return PEM_ASN1_write((i2d_of_void *)i2d_DSAPrivateKey, PEM_STRING_DSA, fp, | ||
| 444 | x, enc, kstr, klen, cb, u); | ||
| 445 | } | ||
| 446 | |||
| 447 | |||
| 448 | DSA * | ||
| 449 | PEM_read_bio_DSA_PUBKEY(BIO *bp, DSA **x, pem_password_cb *cb, void *u) | ||
| 450 | { | ||
| 451 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 452 | (void **)x, cb, u); | ||
| 453 | } | ||
| 454 | |||
| 455 | DSA * | ||
| 456 | PEM_read_DSA_PUBKEY(FILE *fp, DSA **x, pem_password_cb *cb, void *u) | ||
| 457 | { | ||
| 458 | return PEM_ASN1_read((d2i_of_void *)d2i_DSA_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 459 | (void **)x, cb, u); | ||
| 460 | } | ||
| 461 | |||
| 462 | 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) | ||
| 471 | { | ||
| 472 | return PEM_ASN1_write((i2d_of_void *)i2d_DSA_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 473 | x, NULL, NULL, 0, NULL, NULL); | ||
| 474 | } | ||
| 242 | 475 | ||
| 243 | 476 | ||
| 244 | DSA * | 477 | DSA * |
| @@ -251,7 +484,34 @@ PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb, void *u) | |||
| 251 | } | 484 | } |
| 252 | 485 | ||
| 253 | 486 | ||
| 254 | IMPLEMENT_PEM_rw_const(DSAparams, DSA, PEM_STRING_DSAPARAMS, DSAparams) | 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 | |||
| 495 | DSA * | ||
| 496 | PEM_read_DSAparams(FILE *fp, DSA **x, pem_password_cb *cb, void *u) | ||
| 497 | { | ||
| 498 | return PEM_ASN1_read((d2i_of_void *)d2i_DSAparams, PEM_STRING_DSAPARAMS, fp, | ||
| 499 | (void **)x, cb, u); | ||
| 500 | } | ||
| 501 | |||
| 502 | int | ||
| 503 | PEM_write_bio_DSAparams(BIO *bp, const DSA *x) | ||
| 504 | { | ||
| 505 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, bp, | ||
| 506 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 507 | } | ||
| 508 | |||
| 509 | int | ||
| 510 | PEM_write_DSAparams(FILE *fp, const DSA *x) | ||
| 511 | { | ||
| 512 | return PEM_ASN1_write((i2d_of_void *)i2d_DSAparams, PEM_STRING_DSAPARAMS, fp, | ||
| 513 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 514 | } | ||
| 255 | 515 | ||
| 256 | #endif | 516 | #endif |
| 257 | 517 | ||
| @@ -283,13 +543,81 @@ PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb, void *u) | |||
| 283 | return pkey_get_eckey(pktmp, key); /* will free pktmp */ | 543 | return pkey_get_eckey(pktmp, key); /* will free pktmp */ |
| 284 | } | 544 | } |
| 285 | 545 | ||
| 286 | IMPLEMENT_PEM_rw_const(ECPKParameters, EC_GROUP, PEM_STRING_ECPARAMETERS, | ||
| 287 | ECPKParameters) | ||
| 288 | 546 | ||
| 289 | IMPLEMENT_PEM_write_cb(ECPrivateKey, EC_KEY, PEM_STRING_ECPRIVATEKEY, | 547 | EC_GROUP * |
| 290 | ECPrivateKey) | 548 | PEM_read_bio_ECPKParameters(BIO *bp, EC_GROUP **x, pem_password_cb *cb, void *u) |
| 549 | { | ||
| 550 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, bp, | ||
| 551 | (void **)x, cb, u); | ||
| 552 | } | ||
| 553 | |||
| 554 | EC_GROUP * | ||
| 555 | PEM_read_ECPKParameters(FILE *fp, EC_GROUP **x, pem_password_cb *cb, void *u) | ||
| 556 | { | ||
| 557 | return PEM_ASN1_read((d2i_of_void *)d2i_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, | ||
| 558 | (void **)x, cb, u); | ||
| 559 | } | ||
| 560 | |||
| 561 | int | ||
| 562 | PEM_write_bio_ECPKParameters(BIO *bp, const EC_GROUP *x) | ||
| 563 | { | ||
| 564 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, bp, | ||
| 565 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 566 | } | ||
| 291 | 567 | ||
| 292 | IMPLEMENT_PEM_rw(EC_PUBKEY, EC_KEY, PEM_STRING_PUBLIC, EC_PUBKEY) | 568 | int |
| 569 | PEM_write_ECPKParameters(FILE *fp, const EC_GROUP *x) | ||
| 570 | { | ||
| 571 | return PEM_ASN1_write((i2d_of_void *)i2d_ECPKParameters, PEM_STRING_ECPARAMETERS, fp, | ||
| 572 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 573 | } | ||
| 574 | |||
| 575 | |||
| 576 | int | ||
| 577 | PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x, | ||
| 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 | } | ||
| 584 | |||
| 585 | int | ||
| 586 | PEM_write_ECPrivateKey(FILE *fp, EC_KEY *x, const EVP_CIPHER *enc, | ||
| 587 | unsigned char *kstr, int klen, pem_password_cb *cb, void *u) | ||
| 588 | { | ||
| 589 | return PEM_ASN1_write((i2d_of_void *)i2d_ECPrivateKey, PEM_STRING_ECPRIVATEKEY, fp, | ||
| 590 | x, enc, kstr, klen, cb, u); | ||
| 591 | } | ||
| 592 | |||
| 593 | |||
| 594 | EC_KEY * | ||
| 595 | PEM_read_bio_EC_PUBKEY(BIO *bp, EC_KEY **x, pem_password_cb *cb, void *u) | ||
| 596 | { | ||
| 597 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 598 | (void **)x, cb, u); | ||
| 599 | } | ||
| 600 | |||
| 601 | EC_KEY * | ||
| 602 | PEM_read_EC_PUBKEY(FILE *fp, EC_KEY **x, pem_password_cb *cb, void *u) | ||
| 603 | { | ||
| 604 | return PEM_ASN1_read((d2i_of_void *)d2i_EC_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 605 | (void **)x, cb, u); | ||
| 606 | } | ||
| 607 | |||
| 608 | 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) | ||
| 617 | { | ||
| 618 | return PEM_ASN1_write((i2d_of_void *)i2d_EC_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 619 | x, NULL, NULL, 0, NULL, NULL); | ||
| 620 | } | ||
| 293 | 621 | ||
| 294 | 622 | ||
| 295 | EC_KEY * | 623 | EC_KEY * |
| @@ -306,8 +634,62 @@ PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb, void *u) | |||
| 306 | 634 | ||
| 307 | #ifndef OPENSSL_NO_DH | 635 | #ifndef OPENSSL_NO_DH |
| 308 | 636 | ||
| 309 | IMPLEMENT_PEM_rw_const(DHparams, DH, PEM_STRING_DHPARAMS, DHparams) | 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 * | ||
| 646 | PEM_read_DHparams(FILE *fp, DH **x, pem_password_cb *cb, void *u) | ||
| 647 | { | ||
| 648 | return PEM_ASN1_read((d2i_of_void *)d2i_DHparams, PEM_STRING_DHPARAMS, fp, | ||
| 649 | (void **)x, cb, u); | ||
| 650 | } | ||
| 651 | |||
| 652 | int | ||
| 653 | PEM_write_bio_DHparams(BIO *bp, const DH *x) | ||
| 654 | { | ||
| 655 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, bp, | ||
| 656 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 657 | } | ||
| 658 | |||
| 659 | int | ||
| 660 | PEM_write_DHparams(FILE *fp, const DH *x) | ||
| 661 | { | ||
| 662 | return PEM_ASN1_write((i2d_of_void *)i2d_DHparams, PEM_STRING_DHPARAMS, fp, | ||
| 663 | (void *)x, NULL, NULL, 0, NULL, NULL); | ||
| 664 | } | ||
| 310 | 665 | ||
| 311 | #endif | 666 | #endif |
| 312 | 667 | ||
| 313 | IMPLEMENT_PEM_rw(PUBKEY, EVP_PKEY, PEM_STRING_PUBLIC, PUBKEY) | 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 * | ||
| 677 | PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) | ||
| 678 | { | ||
| 679 | return PEM_ASN1_read((d2i_of_void *)d2i_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 680 | (void **)x, cb, u); | ||
| 681 | } | ||
| 682 | |||
| 683 | int | ||
| 684 | PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x) | ||
| 685 | { | ||
| 686 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, bp, | ||
| 687 | x, NULL, NULL, 0, NULL, NULL); | ||
| 688 | } | ||
| 689 | |||
| 690 | int | ||
| 691 | PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x) | ||
| 692 | { | ||
| 693 | return PEM_ASN1_write((i2d_of_void *)i2d_PUBKEY, PEM_STRING_PUBLIC, fp, | ||
| 694 | x, NULL, NULL, 0, NULL, NULL); | ||
| 695 | } | ||
diff --git a/src/lib/libcrypto/pem/pem_pk8.c b/src/lib/libcrypto/pem/pem_pk8.c index d02dec1546..50aafb7655 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.10 2015/09/10 15:56:25 jsing Exp $ */ | 1 | /* $OpenBSD: pem_pk8.c,v 1.11 2016/09/04 15:53:03 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 | * |
| @@ -251,6 +251,59 @@ d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) | |||
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | 253 | ||
| 254 | IMPLEMENT_PEM_rw(PKCS8, X509_SIG, PEM_STRING_PKCS8, X509_SIG) | 254 | |
| 255 | IMPLEMENT_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, | 255 | X509_SIG * |
| 256 | PKCS8_PRIV_KEY_INFO) | 256 | PEM_read_bio_PKCS8(BIO *bp, X509_SIG **x, pem_password_cb *cb, void *u) |
| 257 | { | ||
| 258 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, bp, | ||
| 259 | (void **)x, cb, u); | ||
| 260 | } | ||
| 261 | |||
| 262 | X509_SIG * | ||
| 263 | PEM_read_PKCS8(FILE *fp, X509_SIG **x, pem_password_cb *cb, void *u) | ||
| 264 | { | ||
| 265 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_SIG, PEM_STRING_PKCS8, fp, | ||
| 266 | (void **)x, cb, u); | ||
| 267 | } | ||
| 268 | |||
| 269 | int | ||
| 270 | PEM_write_bio_PKCS8(BIO *bp, X509_SIG *x) | ||
| 271 | { | ||
| 272 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, bp, | ||
| 273 | x, NULL, NULL, 0, NULL, NULL); | ||
| 274 | } | ||
| 275 | |||
| 276 | int | ||
| 277 | PEM_write_PKCS8(FILE *fp, X509_SIG *x) | ||
| 278 | { | ||
| 279 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_SIG, PEM_STRING_PKCS8, fp, | ||
| 280 | x, NULL, NULL, 0, NULL, NULL); | ||
| 281 | } | ||
| 282 | |||
| 283 | PKCS8_PRIV_KEY_INFO * | ||
| 284 | PEM_read_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO **x, pem_password_cb *cb, void *u) | ||
| 285 | { | ||
| 286 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp, | ||
| 287 | (void **)x, cb, u); | ||
| 288 | } | ||
| 289 | |||
| 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 | ||
| 298 | PEM_write_bio_PKCS8_PRIV_KEY_INFO(BIO *bp, PKCS8_PRIV_KEY_INFO *x) | ||
| 299 | { | ||
| 300 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_PKCS8_PRIV_KEY_INFO, PEM_STRING_PKCS8INF, bp, | ||
| 301 | x, NULL, NULL, 0, NULL, NULL); | ||
| 302 | } | ||
| 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 e4b7f1c2c6..350c48ba9a 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.6 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: pem_x509.c,v 1.7 2016/09/04 15:53:03 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 | */ |
| @@ -64,4 +64,31 @@ | |||
| 64 | #include <openssl/pkcs7.h> | 64 | #include <openssl/pkcs7.h> |
| 65 | #include <openssl/x509.h> | 65 | #include <openssl/x509.h> |
| 66 | 66 | ||
| 67 | IMPLEMENT_PEM_rw(X509, X509, PEM_STRING_X509, X509) | 67 | |
| 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) | ||
| 77 | { | ||
| 78 | return PEM_ASN1_read((d2i_of_void *)d2i_X509, PEM_STRING_X509, fp, | ||
| 79 | (void **)x, cb, u); | ||
| 80 | } | ||
| 81 | |||
| 82 | int | ||
| 83 | PEM_write_bio_X509(BIO *bp, X509 *x) | ||
| 84 | { | ||
| 85 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509, PEM_STRING_X509, bp, | ||
| 86 | x, NULL, NULL, 0, NULL, NULL); | ||
| 87 | } | ||
| 88 | |||
| 89 | int | ||
| 90 | PEM_write_X509(FILE *fp, X509 *x) | ||
| 91 | { | ||
| 92 | return PEM_ASN1_write((i2d_of_void *)i2d_X509, PEM_STRING_X509, fp, | ||
| 93 | x, NULL, NULL, 0, NULL, NULL); | ||
| 94 | } | ||
diff --git a/src/lib/libcrypto/pem/pem_xaux.c b/src/lib/libcrypto/pem/pem_xaux.c index eb76840532..f5dfb8476c 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.7 2014/07/11 08:44:49 jsing Exp $ */ | 1 | /* $OpenBSD: pem_xaux.c,v 1.8 2016/09/04 15:53:03 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 | */ |
| @@ -64,6 +64,59 @@ | |||
| 64 | #include <openssl/pkcs7.h> | 64 | #include <openssl/pkcs7.h> |
| 65 | #include <openssl/x509.h> | 65 | #include <openssl/x509.h> |
| 66 | 66 | ||
| 67 | IMPLEMENT_PEM_rw(X509_AUX, X509, PEM_STRING_X509_TRUSTED, X509_AUX) | 67 | |
| 68 | IMPLEMENT_PEM_rw(X509_CERT_PAIR, X509_CERT_PAIR, PEM_STRING_X509_PAIR, | 68 | X509 * |
| 69 | X509_CERT_PAIR) | 69 | PEM_read_bio_X509_AUX(BIO *bp, X509 **x, pem_password_cb *cb, void *u) |
| 70 | { | ||
| 71 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, bp, | ||
| 72 | (void **)x, cb, u); | ||
| 73 | } | ||
| 74 | |||
| 75 | X509 * | ||
| 76 | PEM_read_X509_AUX(FILE *fp, X509 **x, pem_password_cb *cb, void *u) | ||
| 77 | { | ||
| 78 | return PEM_ASN1_read((d2i_of_void *)d2i_X509_AUX, PEM_STRING_X509_TRUSTED, fp, | ||
| 79 | (void **)x, cb, u); | ||
| 80 | } | ||
| 81 | |||
| 82 | int | ||
| 83 | PEM_write_bio_X509_AUX(BIO *bp, X509 *x) | ||
| 84 | { | ||
| 85 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, bp, | ||
| 86 | x, NULL, NULL, 0, NULL, NULL); | ||
| 87 | } | ||
| 88 | |||
| 89 | int | ||
| 90 | PEM_write_X509_AUX(FILE *fp, X509 *x) | ||
| 91 | { | ||
| 92 | return PEM_ASN1_write((i2d_of_void *)i2d_X509_AUX, PEM_STRING_X509_TRUSTED, fp, | ||
| 93 | x, NULL, NULL, 0, NULL, NULL); | ||
| 94 | } | ||
| 95 | |||
| 96 | X509_CERT_PAIR * | ||
| 97 | PEM_read_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR **x, pem_password_cb *cb, void *u) | ||
| 98 | { | ||
| 99 | return PEM_ASN1_read_bio((d2i_of_void *)d2i_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp, | ||
| 100 | (void **)x, cb, u); | ||
| 101 | } | ||
| 102 | |||
| 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 | ||
| 111 | PEM_write_bio_X509_CERT_PAIR(BIO *bp, X509_CERT_PAIR *x) | ||
| 112 | { | ||
| 113 | return PEM_ASN1_write_bio((i2d_of_void *)i2d_X509_CERT_PAIR, PEM_STRING_X509_PAIR, bp, | ||
| 114 | x, NULL, NULL, 0, NULL, NULL); | ||
| 115 | } | ||
| 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 | } | ||
