提交 67fec850 编写于 作者: R Richard Levitte

Allow verification of other types than DATA.

Submitted by Leonard Janke <leonard@votehere.net>
上级 82db6e16
...@@ -67,6 +67,38 @@ static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype, ...@@ -67,6 +67,38 @@ static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype,
void *value); void *value);
static ASN1_TYPE *get_attribute(STACK_OF(X509_ATTRIBUTE) *sk, int nid); static ASN1_TYPE *get_attribute(STACK_OF(X509_ATTRIBUTE) *sk, int nid);
static int PKCS7_type_is_other(PKCS7* p7)
{
int isOther=1;
int nid=OBJ_obj2nid(p7->type);
switch( nid )
{
case NID_pkcs7_data:
case NID_pkcs7_signed:
case NID_pkcs7_enveloped:
case NID_pkcs7_signedAndEnveloped:
case NID_pkcs7_digest:
case NID_pkcs7_encrypted:
isOther=0;
break;
default:
isOther=1;
}
return isOther;
}
static int PKCS7_type_is_octet_string(PKCS7* p7)
{
if ( 0==PKCS7_type_is_other(p7) )
return 0;
return (V_ASN1_OCTET_STRING==p7->d.other->type) ? 1 : 0;
}
BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio) BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
{ {
int i,j; int i,j;
...@@ -222,13 +254,20 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio) ...@@ -222,13 +254,20 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
if (PKCS7_is_detached(p7)) if (PKCS7_is_detached(p7))
bio=BIO_new(BIO_s_null()); bio=BIO_new(BIO_s_null());
else { else {
if (PKCS7_type_is_signed(p7) && if (PKCS7_type_is_signed(p7) ) {
PKCS7_type_is_data(p7->d.sign->contents)) { if ( PKCS7_type_is_data(p7->d.sign->contents)) {
ASN1_OCTET_STRING *os; ASN1_OCTET_STRING *os;
os=p7->d.sign->contents->d.data; os=p7->d.sign->contents->d.data;
if (os->length > 0) bio = if (os->length > 0)
BIO_new_mem_buf(os->data, os->length); bio = BIO_new_mem_buf(os->data, os->length);
} }
else if ( PKCS7_type_is_octet_string(p7->d.sign->contents) ) {
ASN1_OCTET_STRING *os;
os=p7->d.sign->contents->d.other->value.octet_string;
if (os->length > 0)
bio = BIO_new_mem_buf(os->data, os->length);
}
}
if(bio == NULL) { if(bio == NULL) {
bio=BIO_new(BIO_s_mem()); bio=BIO_new(BIO_s_mem());
BIO_set_mem_eof_return(bio,0); BIO_set_mem_eof_return(bio,0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册