openbsd-ports/mail/cue/patches/patch-smime_c
jasper 175be193eb - update cue to 20090209
- add patch from netbsd to fix the build after the openssl update..

ok sthen@
2010-10-03 21:40:42 +00:00

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) {