Commit 66ab08b1 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Implement STACK_OF(ANS1_OBJECT) for extended key usage extension, change the

documentation to reflect the STACK_OF(CONF_VALUE) change to the CONF lib and
use ANSI typedefs for X509V3_EXT_I2D and X509V3_EXT_FREE.
parent 0c5a6563
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -368,3 +368,5 @@ ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
	return(OBJ_dup(&o));
	}

IMPLEMENT_STACK_OF(ASN1_OBJECT)
IMPLEMENT_ASN1_SET_OF(ASN1_OBJECT)
+3 −0
Original line number Diff line number Diff line
@@ -497,6 +497,9 @@ int i2d_ASN1_OBJECT(ASN1_OBJECT *a,unsigned char **pp);
ASN1_OBJECT *	d2i_ASN1_OBJECT(ASN1_OBJECT **a,unsigned char **pp,
			long length);

DECLARE_STACK_OF(ASN1_OBJECT)
DECLARE_ASN1_SET_OF(ASN1_OBJECT)

ASN1_STRING *	ASN1_STRING_new(void );
void		ASN1_STRING_free(ASN1_STRING *a);
ASN1_STRING *	ASN1_STRING_dup(ASN1_STRING *a);
+2 −2
Original line number Diff line number Diff line
@@ -71,9 +71,9 @@ static AUTHORITY_KEYID *v2i_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
X509V3_EXT_METHOD v3_akey_id = {
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,
+12 −12
Original line number Diff line number Diff line
@@ -61,25 +61,25 @@
#include <openssl/conf.h>
#include <openssl/x509v3.h>

static STACK_OF(GENERAL_NAME) *v2i_subject_alt(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK *nval);
static STACK_OF(GENERAL_NAME) *v2i_issuer_alt(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK *nval);
static STACK_OF(GENERAL_NAME) *v2i_subject_alt(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
static STACK_OF(GENERAL_NAME) *v2i_issuer_alt(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
static int copy_email(X509V3_CTX *ctx, STACK_OF(GENERAL_NAME) *gens);
static int copy_issuer(X509V3_CTX *ctx, STACK_OF(GENERAL_NAME) *gens);
X509V3_EXT_METHOD v3_alt[] = {
{ NID_subject_alt_name, 0,
(X509V3_EXT_NEW)GENERAL_NAMES_new,
GENERAL_NAMES_free,
(X509V3_EXT_FREE)GENERAL_NAMES_free,
(X509V3_EXT_D2I)d2i_GENERAL_NAMES,
i2d_GENERAL_NAMES,
(X509V3_EXT_I2D)i2d_GENERAL_NAMES,
NULL, NULL,
(X509V3_EXT_I2V)i2v_GENERAL_NAMES,
(X509V3_EXT_V2I)v2i_subject_alt,
NULL, NULL, NULL},
{ NID_issuer_alt_name, 0,
(X509V3_EXT_NEW)GENERAL_NAMES_new,
GENERAL_NAMES_free,
(X509V3_EXT_FREE)GENERAL_NAMES_free,
(X509V3_EXT_D2I)d2i_GENERAL_NAMES,
i2d_GENERAL_NAMES,
(X509V3_EXT_I2D)i2d_GENERAL_NAMES,
NULL, NULL,
(X509V3_EXT_I2V)i2v_GENERAL_NAMES,
(X509V3_EXT_V2I)v2i_issuer_alt,
@@ -156,7 +156,7 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
}

static STACK_OF(GENERAL_NAME) *v2i_issuer_alt(X509V3_EXT_METHOD *method,
						 X509V3_CTX *ctx, STACK *nval)
				 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
{
	STACK_OF(GENERAL_NAME) *gens = NULL;
	CONF_VALUE *cnf;
@@ -165,8 +165,8 @@ static STACK_OF(GENERAL_NAME) *v2i_issuer_alt(X509V3_EXT_METHOD *method,
		X509V3err(X509V3_F_V2I_GENERAL_NAMES,ERR_R_MALLOC_FAILURE);
		return NULL;
	}
	for(i = 0; i < sk_num(nval); i++) {
		cnf = (CONF_VALUE *)sk_value(nval, i);
	for(i = 0; i < sk_CONF_VALUE_num(nval); i++) {
		cnf = sk_CONF_VALUE_value(nval, i);
		if(!name_cmp(cnf->name, "issuer") && cnf->value &&
						!strcmp(cnf->value, "copy")) {
			if(!copy_issuer(ctx, gens)) goto err;
@@ -221,7 +221,7 @@ static int copy_issuer(X509V3_CTX *ctx, STACK_OF(GENERAL_NAME) *gens)
}

static STACK_OF(GENERAL_NAME) *v2i_subject_alt(X509V3_EXT_METHOD *method,
						 X509V3_CTX *ctx, STACK *nval)
				 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
{
	STACK_OF(GENERAL_NAME) *gens = NULL;
	CONF_VALUE *cnf;
@@ -230,8 +230,8 @@ static STACK_OF(GENERAL_NAME) *v2i_subject_alt(X509V3_EXT_METHOD *method,
		X509V3err(X509V3_F_V2I_GENERAL_NAMES,ERR_R_MALLOC_FAILURE);
		return NULL;
	}
	for(i = 0; i < sk_num(nval); i++) {
		cnf = (CONF_VALUE *)sk_value(nval, i);
	for(i = 0; i < sk_CONF_VALUE_num(nval); i++) {
		cnf = sk_CONF_VALUE_value(nval, i);
		if(!name_cmp(cnf->name, "email") && cnf->value &&
						!strcmp(cnf->value, "copy")) {
			if(!copy_email(ctx, gens)) goto err;
+2 −2
Original line number Diff line number Diff line
@@ -70,9 +70,9 @@ static BASIC_CONSTRAINTS *v2i_BASIC_CONSTRAINTS(X509V3_EXT_METHOD *method, X509V
X509V3_EXT_METHOD v3_bcons = {
NID_basic_constraints, 0,
(X509V3_EXT_NEW)BASIC_CONSTRAINTS_new,
BASIC_CONSTRAINTS_free,
(X509V3_EXT_FREE)BASIC_CONSTRAINTS_free,
(X509V3_EXT_D2I)d2i_BASIC_CONSTRAINTS,
i2d_BASIC_CONSTRAINTS,
(X509V3_EXT_I2D)i2d_BASIC_CONSTRAINTS,
NULL, NULL,
(X509V3_EXT_I2V)i2v_BASIC_CONSTRAINTS,
(X509V3_EXT_V2I)v2i_BASIC_CONSTRAINTS,
Loading