From fc6be0fa561f17d237ab1b8801d476a011c14a28 Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 7 Jan 2000 02:23:42 +0000 Subject: [PATCH] #undef PKCS7_SIGNER_INFO for Win32 to avoid clashes. Fix so CRLDistributionPoints relativeName option uses the correct type. --- crypto/pkcs7/pkcs7.h | 3 ++- crypto/x509v3/v3_crld.c | 12 +++++++----- crypto/x509v3/x509v3.h | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/crypto/pkcs7/pkcs7.h b/crypto/pkcs7/pkcs7.h index bbd233091a..19f66c6e1e 100644 --- a/crypto/pkcs7/pkcs7.h +++ b/crypto/pkcs7/pkcs7.h @@ -71,8 +71,9 @@ extern "C" { #endif #ifdef WIN32 -/* Under Win32 this is defined in wincrypt.h */ +/* Under Win32 thes are defined in wincrypt.h */ #undef PKCS7_ISSUER_AND_SERIAL +#undef PKCS7_SIGNER_INFO #endif /* diff --git a/crypto/x509v3/v3_crld.c b/crypto/x509v3/v3_crld.c index d0cbb949fa..3221c19754 100644 --- a/crypto/x509v3/v3_crld.c +++ b/crypto/x509v3/v3_crld.c @@ -218,13 +218,13 @@ void DIST_POINT_free(DIST_POINT *a) int i2d_DIST_POINT_NAME(DIST_POINT_NAME *a, unsigned char **pp) { - int v = 0; M_ASN1_I2D_vars(a); if(a->fullname) { M_ASN1_I2D_len_IMP_opt (a->fullname, i2d_GENERAL_NAMES); } else { - M_ASN1_I2D_len_EXP_opt (a->relativename, i2d_X509_NAME, 1, v); + M_ASN1_I2D_len_IMP_SET_opt_type(X509_NAME_ENTRY, + a->relativename, i2d_X509_NAME_ENTRY, 1); } /* Don't want a SEQUENCE so... */ @@ -234,7 +234,8 @@ int i2d_DIST_POINT_NAME(DIST_POINT_NAME *a, unsigned char **pp) if(a->fullname) { M_ASN1_I2D_put_IMP_opt (a->fullname, i2d_GENERAL_NAMES, 0); } else { - M_ASN1_I2D_put_EXP_opt (a->relativename, i2d_X509_NAME, 1, v); + M_ASN1_I2D_put_IMP_SET_opt_type(X509_NAME_ENTRY, + a->relativename, i2d_X509_NAME_ENTRY, 1); } M_ASN1_I2D_finish(); } @@ -253,7 +254,7 @@ DIST_POINT_NAME *DIST_POINT_NAME_new(void) void DIST_POINT_NAME_free(DIST_POINT_NAME *a) { if (a == NULL) return; - X509_NAME_free(a->relativename); + sk_X509_NAME_ENTRY_pop_free(a->relativename, X509_NAME_ENTRY_free); sk_GENERAL_NAME_pop_free(a->fullname, GENERAL_NAME_free); Free ((char *)a); } @@ -273,7 +274,8 @@ DIST_POINT_NAME *d2i_DIST_POINT_NAME(DIST_POINT_NAME **a, unsigned char **pp, M_ASN1_D2I_get_imp(ret->fullname, d2i_GENERAL_NAMES, V_ASN1_SEQUENCE); } else if (tag == (1|V_ASN1_CONTEXT_SPECIFIC)) { - M_ASN1_D2I_get_EXP_opt (ret->relativename, d2i_X509_NAME, 1); + M_ASN1_D2I_get_IMP_set_opt_type (X509_NAME_ENTRY, + ret->relativename, d2i_X509_NAME_ENTRY, X509_NAME_ENTRY_free, 1); } else { c.error = ASN1_R_BAD_TAG; goto err; diff --git a/crypto/x509v3/x509v3.h b/crypto/x509v3/x509v3.h index b5a89c9cbb..6473b58e7e 100644 --- a/crypto/x509v3/x509v3.h +++ b/crypto/x509v3/x509v3.h @@ -192,7 +192,7 @@ DECLARE_ASN1_SET_OF(ACCESS_DESCRIPTION) typedef struct DIST_POINT_NAME_st { /* NB: this is a CHOICE type and only one of these should be set */ STACK_OF(GENERAL_NAME) *fullname; -X509_NAME *relativename; +STACK_OF(X509_NAME_ENTRY) *relativename; } DIST_POINT_NAME; typedef struct DIST_POINT_st { -- 2.25.1