提交 6d114240 编写于 作者: B Ben Laurie

stack.

上级 426edadf
...@@ -92,7 +92,7 @@ int MAIN(int argc, char **argv) ...@@ -92,7 +92,7 @@ int MAIN(int argc, char **argv)
PKCS7_SIGNED *p7s = NULL; PKCS7_SIGNED *p7s = NULL;
X509_CRL *crl=NULL; X509_CRL *crl=NULL;
STACK *certflst=NULL; STACK *certflst=NULL;
STACK *crl_stack=NULL; STACK_OF(X509_CRL) *crl_stack=NULL;
STACK_OF(X509) *cert_stack=NULL; STACK_OF(X509) *cert_stack=NULL;
int ret=1,nocrl=0; int ret=1,nocrl=0;
...@@ -213,11 +213,11 @@ bad: ...@@ -213,11 +213,11 @@ bad:
p7s->contents->type=OBJ_nid2obj(NID_pkcs7_data); p7s->contents->type=OBJ_nid2obj(NID_pkcs7_data);
if (!ASN1_INTEGER_set(p7s->version,1)) goto end; if (!ASN1_INTEGER_set(p7s->version,1)) goto end;
if ((crl_stack=sk_new(NULL)) == NULL) goto end; if ((crl_stack=sk_X509_CRL_new(NULL)) == NULL) goto end;
p7s->crl=crl_stack; p7s->crl=crl_stack;
if (crl != NULL) if (crl != NULL)
{ {
sk_push(crl_stack,(char *)crl); sk_X509_CRL_push(crl_stack,crl);
crl=NULL; /* now part of p7 for Freeing */ crl=NULL; /* now part of p7 for Freeing */
} }
......
...@@ -222,7 +222,7 @@ bad: ...@@ -222,7 +222,7 @@ bad:
if (print_certs) if (print_certs)
{ {
STACK_OF(X509) *certs=NULL; STACK_OF(X509) *certs=NULL;
STACK *crls=NULL; STACK_OF(X509_CRL) *crls=NULL;
i=OBJ_obj2nid(p7->type); i=OBJ_obj2nid(p7->type);
switch (i) switch (i)
...@@ -266,9 +266,9 @@ bad: ...@@ -266,9 +266,9 @@ bad:
{ {
X509_CRL *crl; X509_CRL *crl;
for (i=0; i<sk_num(crls); i++) for (i=0; i<sk_X509_CRL_num(crls); i++)
{ {
crl=(X509_CRL *)sk_value(crls,i); crl=sk_X509_CRL_value(crls,i);
X509_NAME_oneline(crl->crl->issuer,buf,256); X509_NAME_oneline(crl->crl->issuer,buf,256);
BIO_puts(out,"issuer= "); BIO_puts(out,"issuer= ");
......
...@@ -70,7 +70,7 @@ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **pp) ...@@ -70,7 +70,7 @@ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **pp)
M_ASN1_I2D_len_SET_type(X509_ALGOR,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(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_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0);
M_ASN1_I2D_len_IMP_SET_opt(a->crl,i2d_X509_CRL,1); M_ASN1_I2D_len_IMP_SET_opt_type(X509_CRL,a->crl,i2d_X509_CRL,1);
M_ASN1_I2D_len_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO); M_ASN1_I2D_len_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
M_ASN1_I2D_seq_total(); M_ASN1_I2D_seq_total();
...@@ -80,7 +80,7 @@ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **pp) ...@@ -80,7 +80,7 @@ int i2d_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE *a, unsigned char **pp)
M_ASN1_I2D_put_SET_type(X509_ALGOR,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(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_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0);
M_ASN1_I2D_put_IMP_SET_opt(a->crl,i2d_X509_CRL,1); M_ASN1_I2D_put_IMP_SET_opt_type(X509_CRL,a->crl,i2d_X509_CRL,1);
M_ASN1_I2D_put_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO); M_ASN1_I2D_put_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
M_ASN1_I2D_finish(); M_ASN1_I2D_finish();
...@@ -100,7 +100,8 @@ PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a, ...@@ -100,7 +100,8 @@ PKCS7_SIGN_ENVELOPE *d2i_PKCS7_SIGN_ENVELOPE(PKCS7_SIGN_ENVELOPE **a,
X509_ALGOR_free); X509_ALGOR_free);
M_ASN1_D2I_get(ret->enc_data,d2i_PKCS7_ENC_CONTENT); 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_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); M_ASN1_D2I_get_IMP_set_opt_type(X509_CRL,ret->crl,d2i_X509_CRL,
X509_CRL_free,1);
M_ASN1_D2I_get_set(ret->signer_info,d2i_PKCS7_SIGNER_INFO, M_ASN1_D2I_get_set(ret->signer_info,d2i_PKCS7_SIGNER_INFO,
PKCS7_SIGNER_INFO_free); PKCS7_SIGNER_INFO_free);
...@@ -133,7 +134,7 @@ void PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a) ...@@ -133,7 +134,7 @@ void PKCS7_SIGN_ENVELOPE_free(PKCS7_SIGN_ENVELOPE *a)
sk_X509_ALGOR_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); PKCS7_ENC_CONTENT_free(a->enc_data);
sk_X509_pop_free(a->cert,X509_free); sk_X509_pop_free(a->cert,X509_free);
sk_pop_free(a->crl,X509_CRL_free); sk_X509_CRL_pop_free(a->crl,X509_CRL_free);
sk_pop_free(a->signer_info,PKCS7_SIGNER_INFO_free); sk_pop_free(a->signer_info,PKCS7_SIGNER_INFO_free);
Free((char *)a); Free((char *)a);
} }
......
...@@ -69,7 +69,7 @@ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **pp) ...@@ -69,7 +69,7 @@ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **pp)
M_ASN1_I2D_len_SET_type(X509_ALGOR,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(a->contents,i2d_PKCS7);
M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0); 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); M_ASN1_I2D_len_IMP_SET_opt_type(X509_CRL,a->crl,i2d_X509_CRL,1);
M_ASN1_I2D_len_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO); M_ASN1_I2D_len_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
M_ASN1_I2D_seq_total(); M_ASN1_I2D_seq_total();
...@@ -78,7 +78,7 @@ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **pp) ...@@ -78,7 +78,7 @@ int i2d_PKCS7_SIGNED(PKCS7_SIGNED *a, unsigned char **pp)
M_ASN1_I2D_put_SET_type(X509_ALGOR,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(a->contents,i2d_PKCS7);
M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(X509,a->cert,i2d_X509,0); 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); M_ASN1_I2D_put_IMP_SET_opt_type(X509_CRL,a->crl,i2d_X509_CRL,1);
M_ASN1_I2D_put_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO); M_ASN1_I2D_put_SET(a->signer_info,i2d_PKCS7_SIGNER_INFO);
M_ASN1_I2D_finish(); M_ASN1_I2D_finish();
...@@ -96,7 +96,8 @@ PKCS7_SIGNED *d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, unsigned char **pp, ...@@ -96,7 +96,8 @@ PKCS7_SIGNED *d2i_PKCS7_SIGNED(PKCS7_SIGNED **a, unsigned char **pp,
X509_ALGOR_free); X509_ALGOR_free);
M_ASN1_D2I_get(ret->contents,d2i_PKCS7); 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_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); M_ASN1_D2I_get_IMP_set_opt_type(X509_CRL,ret->crl,d2i_X509_CRL,
X509_CRL_free,1);
M_ASN1_D2I_get_set(ret->signer_info,d2i_PKCS7_SIGNER_INFO, M_ASN1_D2I_get_set(ret->signer_info,d2i_PKCS7_SIGNER_INFO,
PKCS7_SIGNER_INFO_free); PKCS7_SIGNER_INFO_free);
...@@ -126,10 +127,12 @@ void PKCS7_SIGNED_free(PKCS7_SIGNED *a) ...@@ -126,10 +127,12 @@ void PKCS7_SIGNED_free(PKCS7_SIGNED *a)
sk_X509_ALGOR_pop_free(a->md_algs,X509_ALGOR_free); sk_X509_ALGOR_pop_free(a->md_algs,X509_ALGOR_free);
PKCS7_free(a->contents); PKCS7_free(a->contents);
sk_X509_pop_free(a->cert,X509_free); sk_X509_pop_free(a->cert,X509_free);
sk_pop_free(a->crl,X509_CRL_free); sk_X509_CRL_pop_free(a->crl,X509_CRL_free);
sk_pop_free(a->signer_info,PKCS7_SIGNER_INFO_free); sk_pop_free(a->signer_info,PKCS7_SIGNER_INFO_free);
Free((char *)a); Free((char *)a);
} }
IMPLEMENT_STACK_OF(X509_ALGOR) IMPLEMENT_STACK_OF(X509_ALGOR)
IMPLEMENT_ASN1_SET_OF(X509_ALGOR) IMPLEMENT_ASN1_SET_OF(X509_ALGOR)
IMPLEMENT_STACK_OF(X509_CRL)
IMPLEMENT_ASN1_SET_OF(X509_CRL)
...@@ -262,7 +262,7 @@ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509) ...@@ -262,7 +262,7 @@ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509)
int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl) int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl)
{ {
int i; int i;
STACK **sk; STACK_OF(X509_CRL) **sk;
i=OBJ_obj2nid(p7->type); i=OBJ_obj2nid(p7->type);
switch (i) switch (i)
...@@ -279,10 +279,10 @@ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl) ...@@ -279,10 +279,10 @@ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl)
} }
if (*sk == NULL) if (*sk == NULL)
*sk=sk_new_null(); *sk=sk_X509_CRL_new_null();
CRYPTO_add(&crl->references,1,CRYPTO_LOCK_X509_CRL); CRYPTO_add(&crl->references,1,CRYPTO_LOCK_X509_CRL);
sk_push(*sk,(char *)crl); sk_X509_CRL_push(*sk,crl);
return(1); return(1);
} }
......
...@@ -112,7 +112,7 @@ typedef struct pkcs7_signed_st ...@@ -112,7 +112,7 @@ typedef struct pkcs7_signed_st
ASN1_INTEGER *version; /* version 1 */ ASN1_INTEGER *version; /* version 1 */
STACK_OF(X509_ALGOR) *md_algs; /* md used */ STACK_OF(X509_ALGOR) *md_algs; /* md used */
STACK_OF(X509) *cert; /* [ 0 ] */ STACK_OF(X509) *cert; /* [ 0 ] */
STACK /* X509_CRL */ *crl; /* [ 1 ] */ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
STACK /* PKCS7_SIGNER_INFO */ *signer_info; STACK /* PKCS7_SIGNER_INFO */ *signer_info;
struct pkcs7_st *contents; struct pkcs7_st *contents;
...@@ -140,7 +140,7 @@ typedef struct pkcs7_signedandenveloped_st ...@@ -140,7 +140,7 @@ typedef struct pkcs7_signedandenveloped_st
ASN1_INTEGER *version; /* version 1 */ ASN1_INTEGER *version; /* version 1 */
STACK_OF(X509_ALGOR) *md_algs; /* md used */ STACK_OF(X509_ALGOR) *md_algs; /* md used */
STACK_OF(X509) *cert; /* [ 0 ] */ STACK_OF(X509) *cert; /* [ 0 ] */
STACK /* X509_CRL */ *crl; /* [ 1 ] */ STACK_OF(X509_CRL) *crl; /* [ 1 ] */
STACK /* PKCS7_SIGNER_INFO */ *signer_info; STACK /* PKCS7_SIGNER_INFO */ *signer_info;
PKCS7_ENC_CONTENT *enc_data; PKCS7_ENC_CONTENT *enc_data;
......
...@@ -275,6 +275,9 @@ typedef struct X509_crl_st ...@@ -275,6 +275,9 @@ typedef struct X509_crl_st
int references; int references;
} X509_CRL; } X509_CRL;
DECLARE_STACK_OF(X509_CRL)
DECLARE_ASN1_SET_OF(X509_CRL)
typedef struct private_key_st typedef struct private_key_st
{ {
int version; int version;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册