openssl-build-fix-v2.patch

kosaki (Motohiro KOSAKI), 02/05/2010 10:56 pm

Download (6 kB)

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
    }