175be193eb
- add patch from netbsd to fix the build after the openssl update.. ok sthen@
129 lines
3.9 KiB
Plaintext
129 lines
3.9 KiB
Plaintext
$OpenBSD: patch-smime_c,v 1.2 2010/10/03 21:40:42 jasper Exp $
|
|
|
|
* Fix for OpenSSL 1.0.0. (STACK has gone.)
|
|
* Use proper sk_TYPE_num, sk_TYPE_value for each TYPE.
|
|
From NetBSD patch-ae.
|
|
|
|
--- smime.c.orig Tue Jun 3 03:58:57 2008
|
|
+++ smime.c Sun Oct 3 22:49:16 2010
|
|
@@ -108,7 +108,7 @@ smime_decrypt(struct state *state)
|
|
struct header *hdr;
|
|
char buf[BUFSIZ];
|
|
#ifndef OPENSSL_BUG_FIXED
|
|
- STACK *sk;
|
|
+ STACK_OF(PKCS7_RECIP_INFO) *sk;
|
|
PKCS7_RECIP_INFO *ri;
|
|
#endif
|
|
|
|
@@ -174,10 +174,10 @@ smime_decrypt(struct state *state)
|
|
sk = NULL;
|
|
break;
|
|
case NID_pkcs7_signedAndEnveloped:
|
|
- sk = (STACK *)p7->d.signed_and_enveloped->recipientinfo;
|
|
+ sk = p7->d.signed_and_enveloped->recipientinfo;
|
|
break;
|
|
case NID_pkcs7_enveloped:
|
|
- sk = (STACK *)p7->d.enveloped->recipientinfo;
|
|
+ sk = p7->d.enveloped->recipientinfo;
|
|
break;
|
|
default:
|
|
sk = NULL;
|
|
@@ -185,7 +185,7 @@ smime_decrypt(struct state *state)
|
|
}
|
|
if (sk) {
|
|
for (;;) {
|
|
- if (sk_num(sk) == 0) {
|
|
+ if (sk_PKCS7_RECIP_INFO_num(sk) == 0) {
|
|
strlcpy(state->status,
|
|
"Cannot find recipient info for me\n",
|
|
sizeof(state->status));
|
|
@@ -194,11 +194,11 @@ smime_decrypt(struct state *state)
|
|
PKCS7_free(p7);
|
|
return -1;
|
|
}
|
|
- ri=(PKCS7_RECIP_INFO *)sk_value(sk,0);
|
|
+ ri=sk_PKCS7_RECIP_INFO_value(sk,0);
|
|
if (X509_name_cmp(ri->issuer_and_serial->issuer, X509_get_issuer_name(x509)) == 0
|
|
&& ASN1_INTEGER_cmp(ri->issuer_and_serial->serial, X509_get_serialNumber(x509)) == 0)
|
|
break;
|
|
- sk_shift(sk);
|
|
+ sk_PKCS7_RECIP_INFO_shift(sk);
|
|
PKCS7_RECIP_INFO_free(ri);
|
|
}
|
|
}
|
|
@@ -401,7 +401,7 @@ smime_verify(struct state *state)
|
|
cbuf_t *cb, cbuf, sproto, from;
|
|
int i, ret;
|
|
PKCS7 *p7;
|
|
- STACK *sk;
|
|
+ STACK_OF(PKCS7_SIGNER_INFO) *sk;
|
|
char *p, *ep;
|
|
BIO *detached, *p7bio;
|
|
PKCS7_SIGNER_INFO *si;
|
|
@@ -496,11 +496,11 @@ BIO_read_filename(detached, "/tmp/smime.txt");
|
|
getenv("SSL_CERT_DIR"));
|
|
ERR_clear_error();
|
|
|
|
- sk = (STACK *)PKCS7_get_signer_info(p7);
|
|
+ sk = PKCS7_get_signer_info(p7);
|
|
strlcpy(state->status, "S/MIME verify OK", sizeof(state->status));
|
|
ret = 1;
|
|
- for (i = 0; i < sk_num(sk); i++) {
|
|
- si = (PKCS7_SIGNER_INFO *)sk_value(sk, i);
|
|
+ for (i = 0; i < sk_PKCS7_SIGNER_INFO_num(sk); i++) {
|
|
+ si = sk_PKCS7_SIGNER_INFO_value(sk, i);
|
|
if (PKCS7_dataVerify(cert_store, &cert_ctx, p7bio, p7, si) <= 0) {
|
|
ret = -1;
|
|
snprintf(state->status, sizeof(state->status),
|
|
@@ -560,7 +560,7 @@ smime_sign(struct state *state)
|
|
{
|
|
int i;
|
|
PKCS7 *p7;
|
|
- STACK *sk;
|
|
+ STACK_OF(X509) *sk;
|
|
char *p;
|
|
BIO *in, *p7bio;
|
|
PKCS7_SIGNER_INFO *si;
|
|
@@ -675,9 +675,9 @@ smime_sign(struct state *state)
|
|
PKCS7_free(p7);
|
|
return 0;
|
|
}
|
|
- sk = (STACK *)X509_STORE_CTX_get_chain(&cert_ctx);
|
|
- for (i = 0; i < sk_num(sk); i++) {
|
|
- x = (X509 *)sk_value(sk, i);
|
|
+ sk = X509_STORE_CTX_get_chain(&cert_ctx);
|
|
+ for (i = 0; i < sk_X509_num(sk); i++) {
|
|
+ x = sk_X509_value(sk, i);
|
|
PKCS7_add_certificate(p7, x);
|
|
}
|
|
|
|
@@ -975,7 +975,7 @@ smime_encrypt(struct state *state)
|
|
BIO_ctrl(p7bio, BIO_C_GET_CIPHER_CTX, 1, (char *)&ctx);
|
|
if (EVP_CIPHER_CTX_nid(ctx) == NID_rc2_cbc) {
|
|
const EVP_CIPHER *cipher;
|
|
- STACK *rsk;
|
|
+ STACK_OF(PKCS7_RECIP_INFO) *rsk;
|
|
PKCS7_RECIP_INFO *ri;
|
|
u_char key[EVP_MAX_KEY_LENGTH];
|
|
u_char iv[EVP_MAX_IV_LENGTH];
|
|
@@ -983,7 +983,7 @@ smime_encrypt(struct state *state)
|
|
int keylen, ivlen, buflen, len;
|
|
u_char *buf, *q;
|
|
|
|
- rsk = (STACK *)p7->d.enveloped->recipientinfo;
|
|
+ rsk = p7->d.enveloped->recipientinfo;
|
|
cipher = EVP_rc2_40_cbc(); /* XXX */
|
|
keylen = EVP_CIPHER_key_length(cipher);
|
|
ivlen = EVP_CIPHER_iv_length(cipher);
|
|
@@ -992,8 +992,8 @@ smime_encrypt(struct state *state)
|
|
EVP_CipherInit(ctx, cipher, key, iv, 1);
|
|
buf = NULL;
|
|
buflen = 0;
|
|
- for (i = 0; i < sk_num(rsk); i++) {
|
|
- ri = (PKCS7_RECIP_INFO *)sk_value(rsk, i);
|
|
+ for (i = 0; i < sk_PKCS7_RECIP_INFO_num(rsk); i++) {
|
|
+ ri = sk_PKCS7_RECIP_INFO_value(rsk, i);
|
|
pkey = X509_get_pubkey(ri->cert);
|
|
len = EVP_PKEY_size(pkey);
|
|
if (buflen < len) {
|