openssl-build-fix-v2.patch
| b/ext/openssl/ossl.c | ||
|---|---|---|
| 92 | 92 | |
| 93 | 93 |
#define OSSL_IMPL_SK2ARY(name, type) \ |
| 94 | 94 |
VALUE \ |
| 95 |
ossl_##name##_sk2ary(STACK *sk) \
|
|
| 95 |
ossl_##name##_sk2ary(STACK_OF(type) *sk) \
|
|
| 96 | 96 |
{ \
|
| 97 | 97 |
type *t; \ |
| 98 | 98 |
int i, num; \ |
| ... | ... | |
| 102 | 102 |
OSSL_Debug("empty sk!"); \
|
| 103 | 103 |
return Qnil; \ |
| 104 | 104 |
} \ |
| 105 |
num = sk_num(sk); \
|
|
| 105 |
num = sk_##type##_num(sk); \
|
|
| 106 | 106 |
if (num < 0) { \
|
| 107 | 107 |
OSSL_Debug("items in sk < -1???"); \
|
| 108 | 108 |
return rb_ary_new(); \ |
| ... | ... | |
| 110 | 110 |
ary = rb_ary_new2(num); \ |
| 111 | 111 |
\ |
| 112 | 112 |
for (i=0; i<num; i++) { \
|
| 113 |
t = (type *)sk_value(sk, i); \
|
|
| 113 |
t = sk_##type##_value(sk, i); \
|
|
| 114 | 114 |
rb_ary_push(ary, ossl_##name##_new(t)); \ |
| 115 | 115 |
} \ |
| 116 | 116 |
return ary; \ |
| b/ext/openssl/ossl.h | ||
|---|---|---|
| 104 | 104 |
} while (0) |
| 105 | 105 | |
| 106 | 106 |
/* |
| 107 |
* Compatibility |
|
| 108 |
*/ |
|
| 109 |
#if OPENSSL_VERSION_NUMBER >= 0x10000000L |
|
| 110 |
#define STACK _STACK |
|
| 111 |
#endif |
|
| 112 | ||
| 113 |
/* |
|
| 107 | 114 |
* String to HEXString conversion |
| 108 | 115 |
*/ |
| 109 | 116 |
int string2hex(const unsigned char *, int, char **, int *); |
| b/ext/openssl/ossl_pkcs7.c | ||
|---|---|---|
| 572 | 572 |
return self; |
| 573 | 573 |
} |
| 574 | 574 | |
| 575 |
static STACK * |
|
| 576 |
pkcs7_get_certs_or_crls(VALUE self, int want_certs)
|
|
| 575 |
static STACK_OF(X509) *
|
|
| 576 |
pkcs7_get_certs(VALUE self)
|
|
| 577 | 577 |
{
|
| 578 | 578 |
PKCS7 *pkcs7; |
| 579 | 579 |
STACK_OF(X509) *certs; |
| 580 |
STACK_OF(X509_CRL) *crls; |
|
| 581 | 580 |
int i; |
| 582 | 581 | |
| 583 | 582 |
GetPKCS7(self, pkcs7); |
| ... | ... | |
| 585 | 584 |
switch(i){
|
| 586 | 585 |
case NID_pkcs7_signed: |
| 587 | 586 |
certs = pkcs7->d.sign->cert; |
| 588 |
crls = pkcs7->d.sign->crl; |
|
| 589 | 587 |
break; |
| 590 | 588 |
case NID_pkcs7_signedAndEnveloped: |
| 591 | 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; |
|
| 602 |
STACK_OF(X509_CRL) *crls; |
|
| 603 |
int i; |
|
| 604 | ||
| 605 |
GetPKCS7(self, pkcs7); |
|
| 606 |
i = OBJ_obj2nid(pkcs7->type); |
|
| 607 |
switch(i){
|
|
| 608 |
case NID_pkcs7_signed: |
|
| 609 |
crls = pkcs7->d.sign->crl; |
|
| 610 |
break; |
|
| 611 |
case NID_pkcs7_signedAndEnveloped: |
|
| 592 | 612 |
crls = pkcs7->d.signed_and_enveloped->crl; |
| 593 | 613 |
break; |
| 594 | 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 | 621 |
static VALUE |
| ... | ... | |
| 610 | 630 |
STACK_OF(X509) *certs; |
| 611 | 631 |
X509 *cert; |
| 612 | 632 | |
| 613 |
certs = pkcs7_get_certs_or_crls(self, 1);
|
|
| 633 |
certs = pkcs7_get_certs(self);
|
|
| 614 | 634 |
while((cert = sk_X509_pop(certs))) X509_free(cert); |
| 615 | 635 |
rb_block_call(ary, rb_intern("each"), 0, 0, ossl_pkcs7_set_certs_i, self);
|
| 616 | 636 | |
| ... | ... | |
| 620 | 640 |
static VALUE |
| 621 | 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 | 646 |
static VALUE |
| ... | ... | |
| 650 | 670 |
STACK_OF(X509_CRL) *crls; |
| 651 | 671 |
X509_CRL *crl; |
| 652 | 672 | |
| 653 |
crls = pkcs7_get_certs_or_crls(self, 0);
|
|
| 673 |
crls = pkcs7_get_crls(self);
|
|
| 654 | 674 |
while((crl = sk_X509_CRL_pop(crls))) X509_CRL_free(crl); |
| 655 | 675 |
rb_block_call(ary, rb_intern("each"), 0, 0, ossl_pkcs7_set_crls_i, self);
|
| 656 | 676 | |
| ... | ... | |
| 660 | 680 |
static VALUE |
| 661 | 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 | 686 |
static VALUE |
| b/ext/openssl/ossl_ssl.c | ||
|---|---|---|
| 1403 | 1403 |
} |
| 1404 | 1404 |
chain = SSL_get_peer_cert_chain(ssl); |
| 1405 | 1405 |
if(!chain) return Qnil; |
| 1406 |
num = sk_num(chain); |
|
| 1406 |
num = sk_X509_num(chain);
|
|
| 1407 | 1407 |
ary = rb_ary_new2(num); |
| 1408 | 1408 |
for (i = 0; i < num; i++){
|
| 1409 |
cert = (X509*)sk_value(chain, i);
|
|
| 1409 |
cert = sk_X509_value(chain, i);
|
|
| 1410 | 1410 |
rb_ary_push(ary, ossl_x509_new(cert)); |
| 1411 | 1411 |
} |
| 1412 | 1412 | |
| b/ext/openssl/ossl_x509attr.c | ||
|---|---|---|
| 218 | 218 |
ossl_str_adjust(str, p); |
| 219 | 219 |
} |
| 220 | 220 |
else{
|
| 221 |
length = i2d_ASN1_SET_OF_ASN1_TYPE(attr->value.set, NULL, |
|
| 222 |
i2d_ASN1_TYPE, V_ASN1_SET, V_ASN1_UNIVERSAL, 0); |
|
| 221 |
length = i2d_ASN1_SET_OF_ASN1_TYPE(attr->value.set, |
|
| 222 |
(unsigned char **) NULL, i2d_ASN1_TYPE, |
|
| 223 |
V_ASN1_SET, V_ASN1_UNIVERSAL, 0); |
|
| 223 | 224 |
str = rb_str_new(0, length); |
| 224 | 225 |
p = (unsigned char *)RSTRING_PTR(str); |
| 225 | 226 |
i2d_ASN1_SET_OF_ASN1_TYPE(attr->value.set, &p, |
| b/ext/openssl/ossl_x509crl.c | ||
|---|---|---|
| 264 | 264 |
VALUE ary, revoked; |
| 265 | 265 | |
| 266 | 266 |
GetX509CRL(self, crl); |
| 267 |
num = sk_X509_CRL_num(X509_CRL_get_REVOKED(crl));
|
|
| 267 |
num = sk_X509_REVOKED_num(X509_CRL_get_REVOKED(crl));
|
|
| 268 | 268 |
if (num < 0) {
|
| 269 | 269 |
OSSL_Debug("num < 0???");
|
| 270 | 270 |
return rb_ary_new(); |
| ... | ... | |
| 272 | 272 |
ary = rb_ary_new2(num); |
| 273 | 273 |
for(i=0; i<num; i++) {
|
| 274 | 274 |
/* NO DUP - don't free! */ |
| 275 |
rev = (X509_REVOKED *)sk_X509_CRL_value(X509_CRL_get_REVOKED(crl), i);
|
|
| 275 |
rev = sk_X509_REVOKED_value(X509_CRL_get_REVOKED(crl), i);
|
|
| 276 | 276 |
revoked = ossl_x509revoked_new(rev); |
| 277 | 277 |
rb_ary_push(ary, revoked); |
| 278 | 278 |
} |