Lines 572-582
Link Here
|
572 |
return self; |
572 |
return self; |
573 |
} |
573 |
} |
574 |
|
574 |
|
575 |
static STACK * |
575 |
static STACK_OF(X509) * |
576 |
pkcs7_get_certs_or_crls(VALUE self, int want_certs) |
576 |
pkcs7_get_certs(VALUE self) |
577 |
{ |
577 |
{ |
578 |
PKCS7 *pkcs7; |
578 |
PKCS7 *pkcs7; |
579 |
STACK_OF(X509) *certs; |
579 |
STACK_OF(X509) *certs; |
|
|
580 |
int i; |
581 |
|
582 |
GetPKCS7(self, pkcs7); |
583 |
i = OBJ_obj2nid(pkcs7->type); |
584 |
switch(i){ |
585 |
case NID_pkcs7_signed: |
586 |
certs = pkcs7->d.sign->cert; |
587 |
break; |
588 |
case NID_pkcs7_signedAndEnveloped: |
589 |
certs = pkcs7->d.signed_and_enveloped->cert; |
590 |
break; |
591 |
default: |
592 |
certs = NULL; |
593 |
} |
594 |
|
595 |
return certs; |
596 |
} |
597 |
|
598 |
static STACK_OF(X509_CRL) * |
599 |
pkcs7_get_crls(VALUE self) |
600 |
{ |
601 |
PKCS7 *pkcs7; |
580 |
STACK_OF(X509_CRL) *crls; |
602 |
STACK_OF(X509_CRL) *crls; |
581 |
int i; |
603 |
int i; |
582 |
|
604 |
|
Lines 584-601
Link Here
|
584 |
i = OBJ_obj2nid(pkcs7->type); |
606 |
i = OBJ_obj2nid(pkcs7->type); |
585 |
switch(i){ |
607 |
switch(i){ |
586 |
case NID_pkcs7_signed: |
608 |
case NID_pkcs7_signed: |
587 |
certs = pkcs7->d.sign->cert; |
|
|
588 |
crls = pkcs7->d.sign->crl; |
609 |
crls = pkcs7->d.sign->crl; |
589 |
break; |
610 |
break; |
590 |
case NID_pkcs7_signedAndEnveloped: |
611 |
case NID_pkcs7_signedAndEnveloped: |
591 |
certs = pkcs7->d.signed_and_enveloped->cert; |
|
|
592 |
crls = pkcs7->d.signed_and_enveloped->crl; |
612 |
crls = pkcs7->d.signed_and_enveloped->crl; |
593 |
break; |
613 |
break; |
594 |
default: |
614 |
default: |
595 |
certs = crls = NULL; |
615 |
crls = NULL; |
596 |
} |
616 |
} |
597 |
|
617 |
|
598 |
return want_certs ? certs : crls; |
618 |
return crls; |
599 |
} |
619 |
} |
600 |
|
620 |
|
601 |
static VALUE |
621 |
static VALUE |
Lines 610-616
Link Here
|
610 |
STACK_OF(X509) *certs; |
630 |
STACK_OF(X509) *certs; |
611 |
X509 *cert; |
631 |
X509 *cert; |
612 |
|
632 |
|
613 |
certs = pkcs7_get_certs_or_crls(self, 1); |
633 |
certs = pkcs7_get_certs(self); |
614 |
while((cert = sk_X509_pop(certs))) X509_free(cert); |
634 |
while((cert = sk_X509_pop(certs))) X509_free(cert); |
615 |
rb_block_call(ary, rb_intern("each"), 0, 0, ossl_pkcs7_set_certs_i, self); |
635 |
rb_block_call(ary, rb_intern("each"), 0, 0, ossl_pkcs7_set_certs_i, self); |
616 |
|
636 |
|
Lines 620-626
Link Here
|
620 |
static VALUE |
640 |
static VALUE |
621 |
ossl_pkcs7_get_certificates(VALUE self) |
641 |
ossl_pkcs7_get_certificates(VALUE self) |
622 |
{ |
642 |
{ |
623 |
return ossl_x509_sk2ary(pkcs7_get_certs_or_crls(self, 1)); |
643 |
return ossl_x509_sk2ary(pkcs7_get_certs(self)); |
624 |
} |
644 |
} |
625 |
|
645 |
|
626 |
static VALUE |
646 |
static VALUE |
Lines 650-656
Link Here
|
650 |
STACK_OF(X509_CRL) *crls; |
670 |
STACK_OF(X509_CRL) *crls; |
651 |
X509_CRL *crl; |
671 |
X509_CRL *crl; |
652 |
|
672 |
|
653 |
crls = pkcs7_get_certs_or_crls(self, 0); |
673 |
crls = pkcs7_get_crls(self); |
654 |
while((crl = sk_X509_CRL_pop(crls))) X509_CRL_free(crl); |
674 |
while((crl = sk_X509_CRL_pop(crls))) X509_CRL_free(crl); |
655 |
rb_block_call(ary, rb_intern("each"), 0, 0, ossl_pkcs7_set_crls_i, self); |
675 |
rb_block_call(ary, rb_intern("each"), 0, 0, ossl_pkcs7_set_crls_i, self); |
656 |
|
676 |
|
Lines 660-666
Link Here
|
660 |
static VALUE |
680 |
static VALUE |
661 |
ossl_pkcs7_get_crls(VALUE self) |
681 |
ossl_pkcs7_get_crls(VALUE self) |
662 |
{ |
682 |
{ |
663 |
return ossl_x509crl_sk2ary(pkcs7_get_certs_or_crls(self, 0)); |
683 |
return ossl_x509crl_sk2ary(pkcs7_get_crls(self)); |
664 |
} |
684 |
} |
665 |
|
685 |
|
666 |
static VALUE |
686 |
static VALUE |