diff options
author | Joel Sing <jsing@cvs.openbsd.org> | 2015-09-13 15:59:31 +0000 |
---|---|---|
committer | Joel Sing <jsing@cvs.openbsd.org> | 2015-09-13 15:59:31 +0000 |
commit | 59118e19a45201af51632f62f5eccb39dcac1f32 (patch) | |
tree | b01fbe161e14c85d03f852037c2fd4605405e6fa | |
parent | 4f77ae4cfe322baf1cc29cca13cf217f9a3aa50f (diff) |
Reorder functions for readability/consistency.
-rw-r--r-- | lib/libssl/src/crypto/x509/x_all.c | 463 |
1 files changed, 228 insertions, 235 deletions
diff --git a/lib/libssl/src/crypto/x509/x_all.c b/lib/libssl/src/crypto/x509/x_all.c index 28a81c14a78..6f092522f9f 100644 --- a/lib/libssl/src/crypto/x509/x_all.c +++ b/lib/libssl/src/crypto/x509/x_all.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x_all.c,v 1.19 2015/01/28 04:14:31 beck Exp $ */ +/* $OpenBSD: x_all.c,v 1.20 2015/09/13 15:59:30 jsing Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -73,82 +73,16 @@ #include <openssl/rsa.h> #endif -int -X509_verify(X509 *a, EVP_PKEY *r) -{ - if (X509_ALGOR_cmp(a->sig_alg, a->cert_info->signature)) - return 0; - return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF), a->sig_alg, - a->signature, a->cert_info, r)); -} - -int -X509_REQ_verify(X509_REQ *a, EVP_PKEY *r) -{ - return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO), - a->sig_alg, a->signature, a->req_info, r)); -} - -int -NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) -{ - return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC), - a->sig_algor, a->signature, a->spkac, r)); -} - -int -X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) -{ - x->cert_info->enc.modified = 1; - return (ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), - x->cert_info->signature, x->sig_alg, x->signature, - x->cert_info, pkey, md)); -} - -int -X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx) -{ - x->cert_info->enc.modified = 1; - return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CINF), - x->cert_info->signature, x->sig_alg, x->signature, - x->cert_info, ctx); -} - -int -X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) -{ - return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO), - x->sig_alg, NULL, x->signature, x->req_info, pkey, md)); -} - -int -X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) -{ - return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), - x->sig_alg, NULL, x->signature, x->req_info, ctx); -} - -int -X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md) -{ - x->crl->enc.modified = 1; - return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO), x->crl->sig_alg, - x->sig_alg, x->signature, x->crl, pkey, md)); -} - -int -X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx) +X509 * +d2i_X509_bio(BIO *bp, X509 **x509) { - x->crl->enc.modified = 1; - return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CRL_INFO), - x->crl->sig_alg, x->sig_alg, x->signature, x->crl, ctx); + return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509); } int -NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md) +i2d_X509_bio(BIO *bp, X509 *x509) { - return (ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC), - x->sig_algor, NULL, x->signature, x->spkac, pkey, md)); + return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509); } X509 * @@ -163,16 +97,16 @@ i2d_X509_fp(FILE *fp, X509 *x509) return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509), fp, x509); } -X509 * -d2i_X509_bio(BIO *bp, X509 **x509) +X509_CRL * +d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl) { - return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509), bp, x509); + return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); } int -i2d_X509_bio(BIO *bp, X509 *x509) +i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl) { - return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509), bp, x509); + return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); } X509_CRL * @@ -187,16 +121,16 @@ i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl) return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_CRL), fp, crl); } -X509_CRL * -d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl) +PKCS7 * +d2i_PKCS7_bio(BIO *bp, PKCS7 **p7) { - return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); + return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); } int -i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl) +i2d_PKCS7_bio(BIO *bp, PKCS7 *p7) { - return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_CRL), bp, crl); + return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); } PKCS7 * @@ -211,16 +145,16 @@ i2d_PKCS7_fp(FILE *fp, PKCS7 *p7) return ASN1_item_i2d_fp(ASN1_ITEM_rptr(PKCS7), fp, p7); } -PKCS7 * -d2i_PKCS7_bio(BIO *bp, PKCS7 **p7) +X509_REQ * +d2i_X509_REQ_bio(BIO *bp, X509_REQ **req) { - return ASN1_item_d2i_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); + return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); } int -i2d_PKCS7_bio(BIO *bp, PKCS7 *p7) +i2d_X509_REQ_bio(BIO *bp, X509_REQ *req) { - return ASN1_item_i2d_bio(ASN1_ITEM_rptr(PKCS7), bp, p7); + return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); } X509_REQ * @@ -235,20 +169,19 @@ i2d_X509_REQ_fp(FILE *fp, X509_REQ *req) return ASN1_item_i2d_fp(ASN1_ITEM_rptr(X509_REQ), fp, req); } -X509_REQ * -d2i_X509_REQ_bio(BIO *bp, X509_REQ **req) +#ifndef OPENSSL_NO_RSA +RSA * +d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa) { - return ASN1_item_d2i_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); + return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); } int -i2d_X509_REQ_bio(BIO *bp, X509_REQ *req) +i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa) { - return ASN1_item_i2d_bio(ASN1_ITEM_rptr(X509_REQ), bp, req); + return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); } -#ifndef OPENSSL_NO_RSA - RSA * d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa) { @@ -262,17 +195,21 @@ i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa) } RSA * -d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa) +d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa) { - return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); + return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); } +int +i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa) +{ + return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); +} RSA * -d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa) +d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa) { - return ASN1_d2i_fp((void *(*)(void))RSA_new, - (D2I_OF(void))d2i_RSA_PUBKEY, fp, (void **)rsa); + return ASN1_item_d2i_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); } int @@ -281,51 +218,45 @@ i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa) return ASN1_item_i2d_fp(ASN1_ITEM_rptr(RSAPublicKey), fp, rsa); } -int -i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa) -{ - return ASN1_i2d_fp((I2D_OF(void))i2d_RSA_PUBKEY, fp, rsa); -} - RSA * -d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa) +d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) { - return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); + return ASN1_d2i_bio_of(RSA, RSA_new, d2i_RSA_PUBKEY, bp, rsa); } int -i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa) +i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa) { - return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPrivateKey), bp, rsa); + return ASN1_i2d_bio_of(RSA, i2d_RSA_PUBKEY, bp, rsa); } -RSA * -d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa) +int +i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa) { - return ASN1_item_d2i_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); + return ASN1_i2d_fp((I2D_OF(void))i2d_RSA_PUBKEY, fp, rsa); } - RSA * -d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa) +d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa) { - return ASN1_d2i_bio_of(RSA, RSA_new, d2i_RSA_PUBKEY, bp, rsa); + return ASN1_d2i_fp((void *(*)(void))RSA_new, + (D2I_OF(void))d2i_RSA_PUBKEY, fp, (void **)rsa); } +#endif -int -i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa) +#ifndef OPENSSL_NO_DSA +DSA * +d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) { - return ASN1_item_i2d_bio(ASN1_ITEM_rptr(RSAPublicKey), bp, rsa); + return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSAPrivateKey, bp, dsa); } int -i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa) +i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa) { - return ASN1_i2d_bio_of(RSA, i2d_RSA_PUBKEY, bp, rsa); + return ASN1_i2d_bio_of_const(DSA, i2d_DSAPrivateKey, bp, dsa); } -#endif -#ifndef OPENSSL_NO_DSA DSA * d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa) { @@ -339,54 +270,41 @@ i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa) } DSA * -d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa) -{ - return ASN1_d2i_fp_of(DSA, DSA_new, d2i_DSA_PUBKEY, fp, dsa); -} - -int -i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa) -{ - return ASN1_i2d_fp_of(DSA, i2d_DSA_PUBKEY, fp, dsa); -} - -DSA * -d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) +d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) { - return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSAPrivateKey, bp, dsa); + return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSA_PUBKEY, bp, dsa); } int -i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa) +i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa) { - return ASN1_i2d_bio_of_const(DSA, i2d_DSAPrivateKey, bp, dsa); + return ASN1_i2d_bio_of(DSA, i2d_DSA_PUBKEY, bp, dsa); } DSA * -d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa) +d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa) { - return ASN1_d2i_bio_of(DSA, DSA_new, d2i_DSA_PUBKEY, bp, dsa); + return ASN1_d2i_fp_of(DSA, DSA_new, d2i_DSA_PUBKEY, fp, dsa); } int -i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa) +i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa) { - return ASN1_i2d_bio_of(DSA, i2d_DSA_PUBKEY, bp, dsa); + return ASN1_i2d_fp_of(DSA, i2d_DSA_PUBKEY, fp, dsa); } - #endif #ifndef OPENSSL_NO_EC EC_KEY * -d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey) +d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey) { - return ASN1_d2i_fp_of(EC_KEY, EC_KEY_new, d2i_EC_PUBKEY, fp, eckey); + return ASN1_d2i_bio_of(EC_KEY, EC_KEY_new, d2i_ECPrivateKey, bp, eckey); } int -i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey) +i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey) { - return ASN1_i2d_fp_of(EC_KEY, i2d_EC_PUBKEY, fp, eckey); + return ASN1_i2d_bio_of(EC_KEY, i2d_ECPrivateKey, bp, eckey); } EC_KEY * @@ -400,6 +318,7 @@ i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey) { return ASN1_i2d_fp_of(EC_KEY, i2d_ECPrivateKey, fp, eckey); } + EC_KEY * d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey) { @@ -411,109 +330,133 @@ i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *ecdsa) { return ASN1_i2d_bio_of(EC_KEY, i2d_EC_PUBKEY, bp, ecdsa); } - EC_KEY * -d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey) +d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey) { - return ASN1_d2i_bio_of(EC_KEY, EC_KEY_new, d2i_ECPrivateKey, bp, eckey); + return ASN1_d2i_fp_of(EC_KEY, EC_KEY_new, d2i_EC_PUBKEY, fp, eckey); } int -i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey) +i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey) { - return ASN1_i2d_bio_of(EC_KEY, i2d_ECPrivateKey, bp, eckey); + return ASN1_i2d_fp_of(EC_KEY, i2d_EC_PUBKEY, fp, eckey); } #endif +X509_SIG * +d2i_PKCS8_bio(BIO *bp, X509_SIG **p8) +{ + return ASN1_d2i_bio_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, bp, p8); +} int -X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md, - unsigned int *len) +i2d_PKCS8_bio(BIO *bp, X509_SIG *p8) { - ASN1_BIT_STRING *key; - key = X509_get0_pubkey_bitstr(data); - if (!key) - return 0; - return EVP_Digest(key->data, key->length, md, len, type, NULL); + return ASN1_i2d_bio_of(X509_SIG, i2d_X509_SIG, bp, p8); } -int -X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, - unsigned int *len) +X509_SIG * +d2i_PKCS8_fp(FILE *fp, X509_SIG **p8) { - return (ASN1_item_digest(ASN1_ITEM_rptr(X509), type, (char *)data, - md, len)); + return ASN1_d2i_fp_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, fp, p8); } int -X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md, - unsigned int *len) +i2d_PKCS8_fp(FILE *fp, X509_SIG *p8) { - return (ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL), type, (char *)data, - md, len)); + return ASN1_i2d_fp_of(X509_SIG, i2d_X509_SIG, fp, p8); } -int -X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md, - unsigned int *len) +PKCS8_PRIV_KEY_INFO * +d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO **p8inf) { - return (ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ), type, (char *)data, - md, len)); + return ASN1_d2i_bio_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new, + d2i_PKCS8_PRIV_KEY_INFO, bp, p8inf); } int -X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md, - unsigned int *len) +i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf) { - return (ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME), type, (char *)data, - md, len)); + return ASN1_i2d_bio_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO, + bp, p8inf); +} + +PKCS8_PRIV_KEY_INFO * +d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO **p8inf) +{ + return ASN1_d2i_fp_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new, + d2i_PKCS8_PRIV_KEY_INFO, fp, p8inf); } int -PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, - const EVP_MD *type, unsigned char *md, unsigned int *len) +i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf) { - return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL), type, - (char *)data, md, len)); + return ASN1_i2d_fp_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO, + fp, p8inf); } +EVP_PKEY * +d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a) +{ + return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, + bp, a); +} -X509_SIG * -d2i_PKCS8_fp(FILE *fp, X509_SIG **p8) +int +i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey) { - return ASN1_d2i_fp_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, fp, p8); + return ASN1_i2d_bio_of(EVP_PKEY, i2d_PrivateKey, bp, pkey); +} + +EVP_PKEY * +d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a) +{ + return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, + fp, a); } int -i2d_PKCS8_fp(FILE *fp, X509_SIG *p8) +i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey) { - return ASN1_i2d_fp_of(X509_SIG, i2d_X509_SIG, fp, p8); + return ASN1_i2d_fp_of(EVP_PKEY, i2d_PrivateKey, fp, pkey); } -X509_SIG * -d2i_PKCS8_bio(BIO *bp, X509_SIG **p8) +EVP_PKEY * +d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a) { - return ASN1_d2i_bio_of(X509_SIG, X509_SIG_new, d2i_X509_SIG, bp, p8); + return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, bp, a); } int -i2d_PKCS8_bio(BIO *bp, X509_SIG *p8) +i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey) { - return ASN1_i2d_bio_of(X509_SIG, i2d_X509_SIG, bp, p8); + return ASN1_i2d_bio_of(EVP_PKEY, i2d_PUBKEY, bp, pkey); } -PKCS8_PRIV_KEY_INFO * -d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO **p8inf) +int +i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey) { - return ASN1_d2i_fp_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new, - d2i_PKCS8_PRIV_KEY_INFO, fp, p8inf); + return ASN1_i2d_fp_of(EVP_PKEY, i2d_PUBKEY, fp, pkey); +} + +EVP_PKEY * +d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a) +{ + return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, fp, a); } int -i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf) +i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key) { - return ASN1_i2d_fp_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO, - fp, p8inf); + PKCS8_PRIV_KEY_INFO *p8inf; + int ret; + + p8inf = EVP_PKEY2PKCS8(key); + if (!p8inf) + return 0; + ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf); + PKCS8_PRIV_KEY_INFO_free(p8inf); + return ret; } int @@ -530,80 +473,130 @@ i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key) } int -i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey) +X509_verify(X509 *a, EVP_PKEY *r) { - return ASN1_i2d_fp_of(EVP_PKEY, i2d_PrivateKey, fp, pkey); + if (X509_ALGOR_cmp(a->sig_alg, a->cert_info->signature)) + return 0; + return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CINF), a->sig_alg, + a->signature, a->cert_info, r)); } -EVP_PKEY * -d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a) +int +X509_REQ_verify(X509_REQ *a, EVP_PKEY *r) { - return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, - fp, a); + return( ASN1_item_verify(ASN1_ITEM_rptr(X509_REQ_INFO), + a->sig_alg, a->signature, a->req_info, r)); } int -i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey) +NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) { - return ASN1_i2d_fp_of(EVP_PKEY, i2d_PUBKEY, fp, pkey); + return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC), + a->sig_algor, a->signature, a->spkac, r)); } -EVP_PKEY * -d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a) +int +X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md) { - return ASN1_d2i_fp_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, fp, a); + x->cert_info->enc.modified = 1; + return (ASN1_item_sign(ASN1_ITEM_rptr(X509_CINF), + x->cert_info->signature, x->sig_alg, x->signature, + x->cert_info, pkey, md)); } +int +X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx) +{ + x->cert_info->enc.modified = 1; + return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CINF), + x->cert_info->signature, x->sig_alg, x->signature, + x->cert_info, ctx); +} -PKCS8_PRIV_KEY_INFO * -d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO **p8inf) +int +X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md) { - return ASN1_d2i_bio_of(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_new, - d2i_PKCS8_PRIV_KEY_INFO, bp, p8inf); + return (ASN1_item_sign(ASN1_ITEM_rptr(X509_REQ_INFO), + x->sig_alg, NULL, x->signature, x->req_info, pkey, md)); } int -i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf) +X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx) { - return ASN1_i2d_bio_of(PKCS8_PRIV_KEY_INFO, i2d_PKCS8_PRIV_KEY_INFO, - bp, p8inf); + return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_REQ_INFO), + x->sig_alg, NULL, x->signature, x->req_info, ctx); } int -i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key) +X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md) { - PKCS8_PRIV_KEY_INFO *p8inf; - int ret; + x->crl->enc.modified = 1; + return(ASN1_item_sign(ASN1_ITEM_rptr(X509_CRL_INFO), x->crl->sig_alg, + x->sig_alg, x->signature, x->crl, pkey, md)); +} - p8inf = EVP_PKEY2PKCS8(key); - if (!p8inf) +int +X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx) +{ + x->crl->enc.modified = 1; + return ASN1_item_sign_ctx(ASN1_ITEM_rptr(X509_CRL_INFO), + x->crl->sig_alg, x->sig_alg, x->signature, x->crl, ctx); +} + +int +NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md) +{ + return (ASN1_item_sign(ASN1_ITEM_rptr(NETSCAPE_SPKAC), + x->sig_algor, NULL, x->signature, x->spkac, pkey, md)); +} + +int +X509_pubkey_digest(const X509 *data, const EVP_MD *type, unsigned char *md, + unsigned int *len) +{ + ASN1_BIT_STRING *key; + key = X509_get0_pubkey_bitstr(data); + if (!key) return 0; - ret = i2d_PKCS8_PRIV_KEY_INFO_bio(bp, p8inf); - PKCS8_PRIV_KEY_INFO_free(p8inf); - return ret; + return EVP_Digest(key->data, key->length, md, len, type, NULL); } int -i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey) +X509_digest(const X509 *data, const EVP_MD *type, unsigned char *md, + unsigned int *len) { - return ASN1_i2d_bio_of(EVP_PKEY, i2d_PrivateKey, bp, pkey); + return (ASN1_item_digest(ASN1_ITEM_rptr(X509), type, (char *)data, + md, len)); } -EVP_PKEY * -d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a) +int +X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, unsigned char *md, + unsigned int *len) { - return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_AutoPrivateKey, - bp, a); + return (ASN1_item_digest(ASN1_ITEM_rptr(X509_CRL), type, (char *)data, + md, len)); } int -i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey) +X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, unsigned char *md, + unsigned int *len) { - return ASN1_i2d_bio_of(EVP_PKEY, i2d_PUBKEY, bp, pkey); + return (ASN1_item_digest(ASN1_ITEM_rptr(X509_REQ), type, (char *)data, + md, len)); } -EVP_PKEY * -d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a) +int +X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, unsigned char *md, + unsigned int *len) { - return ASN1_d2i_bio_of(EVP_PKEY, EVP_PKEY_new, d2i_PUBKEY, bp, a); + return (ASN1_item_digest(ASN1_ITEM_rptr(X509_NAME), type, (char *)data, + md, len)); +} + +int +PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, unsigned int *len) +{ + return(ASN1_item_digest(ASN1_ITEM_rptr(PKCS7_ISSUER_AND_SERIAL), type, + (char *)data, md, len)); } |