From 426edadf98dfa465329dd1501e83b0cb0be2facb Mon Sep 17 00:00:00 2001 From: Ben Laurie Date: Mon, 31 May 1999 20:35:31 +0000 Subject: Stack. --- crypto/asn1/asn1_mac.h | 6 ++++++ crypto/asn1/p7_s_e.c | 11 ++++++----- crypto/asn1/p7_signd.c | 13 ++++++++----- crypto/pkcs7/pk7_doit.c | 14 ++++++++------ crypto/pkcs7/pk7_lib.c | 8 ++++---- crypto/pkcs7/pkcs7.h | 4 ++-- crypto/x509/x509.h | 3 +++ demos/b64.c | 2 +- 8 files changed, 38 insertions(+), 23 deletions(-) diff --git a/crypto/asn1/asn1_mac.h b/crypto/asn1/asn1_mac.h index 6edbf06a7d..a1bbfddc7f 100644 --- a/crypto/asn1/asn1_mac.h +++ b/crypto/asn1/asn1_mac.h @@ -352,6 +352,10 @@ err:\ #define M_ASN1_I2D_len_SET(a,f) \ ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET); +#define M_ASN1_I2D_len_SET_type(type,a,f) \ + ret+=i2d_ASN1_SET_OF_##type(a,NULL,f,V_ASN1_SET, \ + V_ASN1_UNIVERSAL,IS_SET); + #define M_ASN1_I2D_len_SEQUENCE(a,f) \ ret+=i2d_ASN1_SET(a,NULL,f,V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL, \ IS_SEQUENCE); @@ -444,6 +448,8 @@ err:\ #define M_ASN1_I2D_put_SET(a,f) i2d_ASN1_SET(a,&p,f,V_ASN1_SET,\ V_ASN1_UNIVERSAL,IS_SET) +#define M_ASN1_I2D_put_SET_type(type,a,f) \ + i2d_ASN1_SET_OF_##type(a,&p,f,V_ASN1_SET,V_ASN1_UNIVERSAL,IS_SET) #define M_ASN1_I2D_put_IMP_SET(a,f,x) i2d_ASN1_SET(a,&p,f,x,\ V_ASN1_CONTEXT_SPECIFIC,IS_SET) #define M_ASN1_I2D_put_IMP_SET_type(type,a,f,x) \ diff --git a/crypto/asn1/p7_s_e.c b/crypto/asn1/p7_s_e.c index 0a3eeeb65b..bf20fd0b63 100644 --- a/crypto/asn1/p7_s_e.c +++ b/crypto/asn1/p7_s_e.c @@ -67,7 +67,7 @@ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **pp) M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER); M_ASN1_I2D_len_SET(a->recipientinfo,i2d_PKCS7_RECIP_INFO); - M_ASN1_I2D_len_SET(a->md_algs,i2d_X509_ALGOR); + M_ASN1_I2D_len_SET_type(X509_ALGOR,a->md_algs,i2d_X509_ALGOR); M_ASN1_I2D_len(a->enc_data,i2d_PKCS7_ENC_CONTENT); M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0); M_ASN1_I2D_len_IMP_SET_opt(a->crl,i2d_X509_CRL,1); @@ -77,7 +77,7 @@ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **pp) M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER); M_ASN1_I2D_put_SET(a->recipientinfo,i2d_PKCS7_RECIP_INFO); - M_ASN1_I2D_put_SET(a->md_algs,i2d_X509_ALGOR); + M_ASN1_I2D_put_SET_type(X509_ALGOR,a->md_algs,i2d_X509_ALGOR); M_ASN1_I2D_put(a->enc_data,i2d_PKCS7_ENC_CONTENT); M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0); M_ASN1_I2D_put_IMP_SET_opt(a->crl,i2d_X509_CRL,1); @@ -96,7 +96,8 @@ PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER); M_ASN1_D2I_get_set(ret->recipientinfo,d2i_PKCS7_RECIP_INFO, PKCS7_RECIP_INFO_free); - M_ASN1_D2I_get_set(ret->md_algs,d2i_X509_ALGOR,X509_ALGOR_free); + M_ASN1_D2I_get_set_type(X509_ALGOR,ret->md_algs,d2i_X509_ALGOR, + X509_ALGOR_free); M_ASN1_D2I_get(ret->enc_data,d2i_PKCS7_ENC_CONTENT); M_ASN1_D2I_get_IMP_set_opt_type(X509,ret->cert,d2i_X509,X509_free,0); M_ASN1_D2I_get_IMP_set_opt(ret->crl,d2i_X509_CRL,X509_CRL_free,1); @@ -115,7 +116,7 @@ PKCS7_SIGN_ENVELOPE *PKCS7_SIGN_ENVELOPE_new(void) M_ASN1_New_Malloc(ret,PKCS7_SIGN_ENVELOPE); M_ASN1_New(ret->version,ASN1_INTEGER_new); M_ASN1_New(ret->recipientinfo,sk_new_null); - M_ASN1_New(ret->md_algs,sk_new_null); + M_ASN1_New(ret->md_algs,sk_X509_ALGOR_new_null); M_ASN1_New(ret->enc_data,PKCS7_ENC_CONTENT_new); ret->cert=NULL; ret->crl=NULL; @@ -129,7 +130,7 @@ void PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a) if (a == NULL) return; ASN1_INTEGER_free(a->version); sk_pop_free(a->recipientinfo,PKCS7_RECIP_INFO_free); - sk_pop_free(a->md_algs,X509_ALGOR_free); + sk_X509_ALGOR_pop_free(a->md_algs,X509_ALGOR_free); PKCS7_ENC_CONTENT_free(a->enc_data); sk_X509_pop_free(a->cert,X509_free); sk_pop_free(a->crl,X509_CRL_free); diff --git a/crypto/asn1/p7_signd.c b/crypto/asn1/p7_signd.c index 186e6ed0e1..1dbde84d4c 100644 --- a/crypto/asn1/p7_signd.c +++ b/crypto/asn1/p7_signd.c @@ -66,7 +66,7 @@ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **pp) M_ASN1_I2D_vars(a); M_ASN1_I2D_len(a->version,i2d_ASN1_INTEGER); - M_ASN1_I2D_len_SET(a->md_algs,i2d_X509_ALGOR); + M_ASN1_I2D_len_SET_type(X509_ALGOR,a->md_algs,i2d_X509_ALGOR); M_ASN1_I2D_len(a->contents,i2d_PKCS7); M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0); M_ASN1_I2D_len_IMP_SET_opt(a->crl,i2d_X509_CRL,1); @@ -75,7 +75,7 @@ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **pp) M_ASN1_I2D_seq_total(); M_ASN1_I2D_put(a->version,i2d_ASN1_INTEGER); - M_ASN1_I2D_put_SET(a->md_algs,i2d_X509_ALGOR); + M_ASN1_I2D_put_SET_type(X509_ALGOR,a->md_algs,i2d_X509_ALGOR); M_ASN1_I2D_put(a->contents,i2d_PKCS7); M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0); M_ASN1_I2D_put_IMP_SET_opt(a->crl,i2d_X509_CRL,1); @@ -92,7 +92,8 @@ PKCS7_SIGNED *d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, unsigned char **pp, M_ASN1_D2I_Init(); M_ASN1_D2I_start_sequence(); M_ASN1_D2I_get(ret->version,d2i_ASN1_INTEGER); - M_ASN1_D2I_get_set(ret->md_algs,d2i_X509_ALGOR,X509_ALGOR_free); + M_ASN1_D2I_get_set_type(X509_ALGOR,ret->md_algs,d2i_X509_ALGOR, + X509_ALGOR_free); M_ASN1_D2I_get(ret->contents,d2i_PKCS7); M_ASN1_D2I_get_IMP_set_opt_type(X509,ret->cert,d2i_X509,X509_free,0); M_ASN1_D2I_get_IMP_set_opt(ret->crl,d2i_X509_CRL,X509_CRL_free,1); @@ -109,7 +110,7 @@ PKCS7_SIGNED *PKCS7_SIGNED_new(void) M_ASN1_New_Malloc(ret,PKCS7_SIGNED); M_ASN1_New(ret->version,ASN1_INTEGER_new); - M_ASN1_New(ret->md_algs,sk_new_null); + M_ASN1_New(ret->md_algs,sk_X509_ALGOR_new_null); M_ASN1_New(ret->contents,PKCS7_new); ret->cert=NULL; ret->crl=NULL; @@ -122,7 +123,7 @@ void PKCS7_SIGNED_free(PKCS7_SIGNED *a) { if (a == NULL) return; ASN1_INTEGER_free(a->version); - sk_pop_free(a->md_algs,X509_ALGOR_free); + sk_X509_ALGOR_pop_free(a->md_algs,X509_ALGOR_free); PKCS7_free(a->contents); sk_X509_pop_free(a->cert,X509_free); sk_pop_free(a->crl,X509_CRL_free); @@ -130,3 +131,5 @@ void PKCS7_SIGNED_free(PKCS7_SIGNED *a) Free((char *)a); } +IMPLEMENT_STACK_OF(X509_ALGOR) +IMPLEMENT_ASN1_SET_OF(X509_ALGOR) diff --git a/crypto/pkcs7/pk7_doit.c b/crypto/pkcs7/pk7_doit.c index 4222173e36..5a51d64af1 100644 --- a/crypto/pkcs7/pk7_doit.c +++ b/crypto/pkcs7/pk7_doit.c @@ -73,7 +73,8 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio) X509_ALGOR *xa; const EVP_MD *evp_md; const EVP_CIPHER *evp_cipher=NULL; - STACK *md_sk=NULL,*rsk=NULL; + STACK_OF(X509_ALGOR) *md_sk=NULL; + STACK *rsk=NULL; X509_ALGOR *xalg=NULL; PKCS7_RECIP_INFO *ri=NULL; EVP_PKEY *pkey; @@ -116,9 +117,9 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio) if (md_sk != NULL) { - for (i=0; itype); switch (i) @@ -213,9 +213,9 @@ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *psi) /* If the digest is not currently listed, add it */ j=0; - for (i=0; ialgorithm) == nid) { j=1; @@ -226,7 +226,7 @@ int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *psi) { alg=X509_ALGOR_new(); alg->algorithm=OBJ_nid2obj(nid); - sk_push(md_sk,(char *)alg); + sk_X509_ALGOR_push(md_sk,alg); } sk_push(signer_sk,(char *)psi); diff --git a/crypto/pkcs7/pkcs7.h b/crypto/pkcs7/pkcs7.h index 733d4e87d3..9d6ae038a4 100644 --- a/crypto/pkcs7/pkcs7.h +++ b/crypto/pkcs7/pkcs7.h @@ -110,7 +110,7 @@ typedef struct pkcs7_recip_info_st typedef struct pkcs7_signed_st { ASN1_INTEGER *version; /* version 1 */ - STACK /* X509_ALGOR's */ *md_algs; /* md used */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ STACK_OF(X509) *cert; /* [ 0 ] */ STACK /* X509_CRL */ *crl; /* [ 1 ] */ STACK /* PKCS7_SIGNER_INFO */ *signer_info; @@ -138,7 +138,7 @@ typedef struct pkcs7_enveloped_st typedef struct pkcs7_signedandenveloped_st { ASN1_INTEGER *version; /* version 1 */ - STACK /* X509_ALGOR's */ *md_algs; /* md used */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ STACK_OF(X509) *cert; /* [ 0 ] */ STACK /* X509_CRL */ *crl; /* [ 1 ] */ STACK /* PKCS7_SIGNER_INFO */ *signer_info; diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h index 6d8f0a1941..125dbcfe2e 100644 --- a/crypto/x509/x509.h +++ b/crypto/x509/x509.h @@ -120,6 +120,9 @@ typedef struct X509_algor_st ASN1_TYPE *parameter; } X509_ALGOR; +DECLARE_STACK_OF(X509_ALGOR) +DECLARE_ASN1_SET_OF(X509_ALGOR) + typedef struct X509_val_st { ASN1_UTCTIME *notBefore; diff --git a/demos/b64.c b/demos/b64.c index 725c78db21..ad86bc9b49 100644 --- a/demos/b64.c +++ b/demos/b64.c @@ -59,7 +59,7 @@ #include #include #include -#include "apps.h" +#include "../apps/apps.h" #include #include #include -- cgit v1.2.3