Blob Blame History Raw
diff -up Crypt-OpenSSL-X509-0.7/t/x509.t.openssl Crypt-OpenSSL-X509-0.7/t/x509.t
--- Crypt-OpenSSL-X509-0.7/t/x509.t.openssl	2009-08-26 10:06:16.000000000 +0200
+++ Crypt-OpenSSL-X509-0.7/t/x509.t	2009-08-26 10:05:21.000000000 +0200
@@ -12,7 +12,7 @@ ok($x509->fingerprint_md5() eq '51:86:E8
 ok($x509->issuer() eq 'C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority', 'issuer()');
 ok($x509->subject() eq 'C=US, O=VeriSign, Inc., OU=Class 1 Public Primary Certification Authority', 'subject()');
 
-ok($x509->hash() eq '2edf7016', 'hash()');
+ok($x509->hash() eq '2edf7016' or '24ad0b63', 'hash()');
 
 ok($x509 = Crypt::OpenSSL::X509->new_from_file('certs/thawte.pem'), 'new_from_file()');
 
diff -up Crypt-OpenSSL-X509-0.7/X509.xs.openssl Crypt-OpenSSL-X509-0.7/X509.xs
--- Crypt-OpenSSL-X509-0.7/X509.xs.openssl	2008-02-23 23:18:11.000000000 +0100
+++ Crypt-OpenSSL-X509-0.7/X509.xs	2009-08-25 23:12:45.000000000 +0200
@@ -252,12 +252,19 @@ accessor(x509)
 	} else if (ix == 7) {
 
 		int j;
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+		STACK_OF(OPENSSL_STRING) *emlst = X509_get1_email(x509);
+
+		for (j = 0; j < sk_OPENSSL_STRING_num(emlst); j++) {
+			BIO_printf(bio, "%s", sk_OPENSSL_STRING_value(emlst, j));
+		}
+#else
 		STACK *emlst = X509_get1_email(x509);
 
 		for (j = 0; j < sk_num(emlst); j++) {
 			BIO_printf(bio, "%s", sk_value(emlst, j));
 		}
-
+#endif
 		X509_email_free(emlst);
 	}
 
@@ -289,7 +296,17 @@ as_string(x509, format = FORMAT_PEM)
 		i2d_X509_bio(bio, x509);
 
 	} else if (format == FORMAT_NETSCAPE) {
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L
+		NETSCAPE_X509 nx;
+		ASN1_OCTET_STRING hdr;
+
+		hdr.data   = (unsigned char *)NETSCAPE_CERT_HDR;
+		hdr.length = strlen(NETSCAPE_CERT_HDR);
+		nx.header = &hdr;
+		nx.cert   = x509;
 
+		ASN1_item_i2d_bio(ASN1_ITEM_rptr(NETSCAPE_X509), bio, &nx);
+#else
 		ASN1_HEADER ah;
 		ASN1_OCTET_STRING os;
 
@@ -300,6 +317,7 @@ as_string(x509, format = FORMAT_PEM)
 		ah.meth   = X509_asn1_meth();
 
 		ASN1_i2d_bio(i2d_ASN1_HEADER, bio, (unsigned char *)&ah);
+#endif
 	}
 
 	RETVAL = sv_bio_final(bio);