X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fx509v3%2Fv3_akey.c;h=0889a189938b0a25be8ab9290a124f695798d611;hp=bef9b77943199c9f39eb92685e8d0a9adffae1f7;hb=62324627aa3309e4f72e3ff0241801f4286fa242;hpb=0be9747b39568ff4974335836369726f8b3bcf35 diff --git a/crypto/x509v3/v3_akey.c b/crypto/x509v3/v3_akey.c index bef9b77943..0889a18993 100644 --- a/crypto/x509v3/v3_akey.c +++ b/crypto/x509v3/v3_akey.c @@ -57,47 +57,32 @@ */ #include -#include -#include -#include -#include -#include -#include -#include "x509v3.h" +#include "cryptlib.h" +#include +#include +#include +#include -#ifndef NOPROTO -static STACK *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, AUTHORITY_KEYID *akeyid, STACK *extlist); -static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK *values); - -#else - -static STACK *i2v_AUTHORITY_KEYID(); -static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(); - -#endif +static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, + AUTHORITY_KEYID *akeyid, STACK_OF(CONF_VALUE) *extlist); +static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *values); X509V3_EXT_METHOD v3_akey_id = { -NID_authority_key_identifier, 0, +NID_authority_key_identifier, X509V3_EXT_MULTILINE, (X509V3_EXT_NEW)AUTHORITY_KEYID_new, -AUTHORITY_KEYID_free, +(X509V3_EXT_FREE)AUTHORITY_KEYID_free, (X509V3_EXT_D2I)d2i_AUTHORITY_KEYID, -i2d_AUTHORITY_KEYID, +(X509V3_EXT_I2D)i2d_AUTHORITY_KEYID, NULL, NULL, (X509V3_EXT_I2V)i2v_AUTHORITY_KEYID, (X509V3_EXT_V2I)v2i_AUTHORITY_KEYID, -NULL, +NULL,NULL, NULL }; -/* - * ASN1err(ASN1_F_AUTHORITY_KEYID_NEW,ERR_R_MALLOC_FAILURE); - * ASN1err(ASN1_F_D2I_AUTHORITY_KEYID,ERR_R_MALLOC_FAILURE); - */ - -int i2d_AUTHORITY_KEYID(a,pp) -AUTHORITY_KEYID *a; -unsigned char **pp; +int i2d_AUTHORITY_KEYID(AUTHORITY_KEYID *a, unsigned char **pp) { M_ASN1_I2D_vars(a); @@ -114,7 +99,7 @@ unsigned char **pp; M_ASN1_I2D_finish(); } -AUTHORITY_KEYID *AUTHORITY_KEYID_new() +AUTHORITY_KEYID *AUTHORITY_KEYID_new(void) { AUTHORITY_KEYID *ret=NULL; ASN1_CTX c; @@ -126,10 +111,8 @@ AUTHORITY_KEYID *AUTHORITY_KEYID_new() M_ASN1_New_Error(ASN1_F_AUTHORITY_KEYID_NEW); } -AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(a,pp,length) -AUTHORITY_KEYID **a; -unsigned char **pp; -long length; +AUTHORITY_KEYID *d2i_AUTHORITY_KEYID(AUTHORITY_KEYID **a, unsigned char **pp, + long length) { M_ASN1_D2I_vars(a,AUTHORITY_KEYID *,AUTHORITY_KEYID_new); M_ASN1_D2I_Init(); @@ -143,26 +126,23 @@ long length; M_ASN1_D2I_Finish(a, AUTHORITY_KEYID_free, ASN1_F_D2I_AUTHORITY_KEYID); } -void AUTHORITY_KEYID_free(a) -AUTHORITY_KEYID *a; +void AUTHORITY_KEYID_free(AUTHORITY_KEYID *a) { if (a == NULL) return; - ASN1_OCTET_STRING_free(a->keyid); - sk_pop_free(a->issuer, GENERAL_NAME_free); - ASN1_INTEGER_free (a->serial); - Free ((char *)a); + M_ASN1_OCTET_STRING_free(a->keyid); + sk_GENERAL_NAME_pop_free(a->issuer, GENERAL_NAME_free); + M_ASN1_INTEGER_free (a->serial); + OPENSSL_free (a); } -static STACK *i2v_AUTHORITY_KEYID(method, akeyid, extlist) -X509V3_EXT_METHOD *method; -AUTHORITY_KEYID *akeyid; -STACK *extlist; +static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, + AUTHORITY_KEYID *akeyid, STACK_OF(CONF_VALUE) *extlist) { char *tmp; if(akeyid->keyid) { tmp = hex_to_string(akeyid->keyid->data, akeyid->keyid->length); X509V3_add_value("keyid", tmp, &extlist); - Free(tmp); + OPENSSL_free(tmp); } if(akeyid->issuer) extlist = i2v_GENERAL_NAMES(NULL, akeyid->issuer, extlist); @@ -170,7 +150,7 @@ STACK *extlist; tmp = hex_to_string(akeyid->serial->data, akeyid->serial->length); X509V3_add_value("serial", tmp, &extlist); - Free(tmp); + OPENSSL_free(tmp); } return extlist; } @@ -183,24 +163,22 @@ STACK *extlist; * this is always included. */ -static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(method, ctx, values) -X509V3_EXT_METHOD *method; -X509V3_CTX *ctx; -STACK *values; +static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method, + X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *values) { char keyid=0, issuer=0; int i; CONF_VALUE *cnf; ASN1_OCTET_STRING *ikeyid = NULL; X509_NAME *isname = NULL; -STACK * gens = NULL; +STACK_OF(GENERAL_NAME) * gens = NULL; GENERAL_NAME *gen = NULL; ASN1_INTEGER *serial = NULL; X509_EXTENSION *ext; X509 *cert; AUTHORITY_KEYID *akeyid; -for(i = 0; i < sk_num(values); i++) { - cnf = (CONF_VALUE *)sk_value(values, i); +for(i = 0; i < sk_CONF_VALUE_num(values); i++) { + cnf = sk_CONF_VALUE_value(values, i); if(!strcmp(cnf->name, "keyid")) { keyid = 1; if(cnf->value && !strcmp(cnf->value, "always")) keyid = 2; @@ -227,7 +205,7 @@ cert = ctx->issuer_cert; if(keyid) { i = X509_get_ext_by_NID(cert, NID_subject_key_identifier, -1); if((i >= 0) && (ext = X509_get_ext(cert, i))) - ikeyid = (ASN1_OCTET_STRING *) X509V3_EXT_d2i(ext); + ikeyid = X509V3_EXT_d2i(ext); if(keyid==2 && !ikeyid) { X509V3err(X509V3_F_V2I_AUTHORITY_KEYID,X509V3_R_UNABLE_TO_GET_ISSUER_KEYID); return NULL; @@ -236,7 +214,7 @@ if(keyid) { if((issuer && !ikeyid) || (issuer == 2)) { isname = X509_NAME_dup(X509_get_issuer_name(cert)); - serial = ASN1_INTEGER_dup(X509_get_serialNumber(cert)); + serial = M_ASN1_INTEGER_dup(X509_get_serialNumber(cert)); if(!isname || !serial) { X509V3err(X509V3_F_V2I_AUTHORITY_KEYID,X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS); goto err; @@ -246,8 +224,8 @@ if((issuer && !ikeyid) || (issuer == 2)) { if(!(akeyid = AUTHORITY_KEYID_new())) goto err; if(isname) { - if(!(gens = sk_new(NULL)) || !(gen = GENERAL_NAME_new()) - || !sk_push(gens, (char *)gen)) { + if(!(gens = sk_GENERAL_NAME_new_null()) || !(gen = GENERAL_NAME_new()) + || !sk_GENERAL_NAME_push(gens, gen)) { X509V3err(X509V3_F_V2I_AUTHORITY_KEYID,ERR_R_MALLOC_FAILURE); goto err; } @@ -263,8 +241,8 @@ return akeyid; err: X509_NAME_free(isname); -ASN1_INTEGER_free(serial); -ASN1_OCTET_STRING_free(ikeyid); +M_ASN1_INTEGER_free(serial); +M_ASN1_OCTET_STRING_free(ikeyid); return NULL; }