freebsd-ports/mail/opendkim/files/patch-libopendkim_dkim.c
2020-07-10 13:10:56 +00:00

34 lines
1.1 KiB
C

--- libopendkim/dkim.c.orig 2015-05-12 18:43:09 UTC
+++ libopendkim/dkim.c
@@ -5301,6 +5301,10 @@ dkim_sig_process(DKIM *dkim, DKIM_SIGINFO *sig)
size_t diglen = 0;
#ifdef USE_GNUTLS
gnutls_datum_t key;
+#if GNUTLS_VERSION_MAJOR > 2
+ gnutls_digest_algorithm_t hash;
+ gnutls_sign_algorithm_t sign_algo;
+#endif
#else /* USE_GNUTLS */
BIO *key;
#endif /* USE_GNUTLS */
@@ -5442,7 +5446,20 @@ dkim_sig_process(DKIM *dkim, DKIM_SIGINFO *sig)
return DKIM_STAT_OK;
}
+#if GNUTLS_VERSION_MAJOR < 3
rsastat = gnutls_pubkey_verify_hash(rsa->rsa_pubkey, 0,
+#else
+ hash = dkim_libfeature(dkim->dkim_libhandle,
+ DKIM_FEATURE_SHA256) &&
+ sig->sig_hashtype == DKIM_HASHTYPE_SHA256
+ ? GNUTLS_DIG_SHA256 : GNUTLS_DIG_SHA1;
+
+ sign_algo = gnutls_pk_to_sign(GNUTLS_PK_RSA, hash);
+ assert(sign_algo != GNUTLS_SIGN_UNKNOWN);
+
+ rsastat = gnutls_pubkey_verify_hash2(rsa->rsa_pubkey,
+ sign_algo, 0,
+#endif
&rsa->rsa_digest,
&rsa->rsa_sig);
if (rsastat < 0)