summaryrefslogtreecommitdiff
path: root/security/libtcpa/patches/patch-libtcpa_hmac.c
blob: e8d66ebb2ffedba03a66b1b1aec52bc83aa6c14c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$NetBSD: patch-libtcpa_hmac.c,v 1.2 2020/10/26 10:04:12 schmonz Exp $

Fix build with OpenSSL 1.1.

--- libtcpa/hmac.c.orig	2020-03-27 18:46:13.942881974 +0000
+++ libtcpa/hmac.c
@@ -167,25 +167,30 @@ int authhmac(unsigned char *digest, unsi
 int rawhmac(unsigned char *digest, unsigned char *key,
             unsigned int keylen, ...)
 {
-    HMAC_CTX hmac;
+    HMAC_CTX *hmac;
     unsigned int dlen;
     unsigned char *data;
     va_list argp;
 
-    HMAC_Init(&hmac, key, keylen, EVP_sha1());
+    hmac = HMAC_CTX_new();
+    if (!hmac)
+        return -1;
+    HMAC_Init_ex(hmac, key, keylen, EVP_sha1(), NULL);
     va_start(argp, keylen);
     for (;;) {
         dlen = (unsigned int) va_arg(argp, unsigned int);
         if (dlen == 0)
             break;
         data = (unsigned char *) va_arg(argp, int);
-        if (data == NULL)
+        if (data == NULL) {
+            HMAC_CTX_free(hmac);
             return -1;
-        HMAC_Update(&hmac, data, dlen);
+        }
+        HMAC_Update(hmac, data, dlen);
     }
-    HMAC_Final(&hmac, digest, &dlen);
-    HMAC_cleanup(&hmac);
+    HMAC_Final(hmac, digest, &dlen);
     va_end(argp);
+    HMAC_CTX_free(hmac);
     return 0;
 }