summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libcrypto/hmac/hm_ameth.c65
1 files changed, 1 insertions, 64 deletions
diff --git a/src/lib/libcrypto/hmac/hm_ameth.c b/src/lib/libcrypto/hmac/hm_ameth.c
index 818fec7d39..dfd7169ba0 100644
--- a/src/lib/libcrypto/hmac/hm_ameth.c
+++ b/src/lib/libcrypto/hmac/hm_ameth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: hm_ameth.c,v 1.16 2022/11/18 20:03:36 tb Exp $ */ 1/* $OpenBSD: hm_ameth.c,v 1.17 2022/11/19 04:32:49 tb Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2007. 3 * project 2007.
4 */ 4 */
@@ -68,13 +68,6 @@
68#include "evp_locl.h" 68#include "evp_locl.h"
69#include "hmac_local.h" 69#include "hmac_local.h"
70 70
71#define HMAC_TEST_PRIVATE_KEY_FORMAT
72
73/* HMAC "ASN1" method. This is just here to indicate the
74 * maximum HMAC output length and to free up an HMAC
75 * key.
76 */
77
78static int 71static int
79hmac_pkey_public_cmp(const EVP_PKEY *a, const EVP_PKEY *b) 72hmac_pkey_public_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
80{ 73{
@@ -157,57 +150,6 @@ hmac_get_priv_key(const EVP_PKEY *pkey, unsigned char *priv, size_t *len)
157 return CBS_write_bytes(&cbs, priv, *len, len); 150 return CBS_write_bytes(&cbs, priv, *len, len);
158} 151}
159 152
160#ifdef HMAC_TEST_PRIVATE_KEY_FORMAT
161/* A bogus private key format for test purposes. This is simply the
162 * HMAC key with "HMAC PRIVATE KEY" in the headers. When enabled the
163 * genpkey utility can be used to "generate" HMAC keys.
164 */
165
166static int
167old_hmac_decode(EVP_PKEY *pkey, const unsigned char **pder, int derlen)
168{
169 ASN1_OCTET_STRING *os;
170
171 os = ASN1_OCTET_STRING_new();
172 if (os == NULL)
173 goto err;
174 if (ASN1_OCTET_STRING_set(os, *pder, derlen) == 0)
175 goto err;
176 if (EVP_PKEY_assign(pkey, EVP_PKEY_HMAC, os) == 0)
177 goto err;
178 return 1;
179
180err:
181 ASN1_OCTET_STRING_free(os);
182 return 0;
183}
184
185static int
186old_hmac_encode(const EVP_PKEY *pkey, unsigned char **pder)
187{
188 int inc;
189 ASN1_OCTET_STRING *os = pkey->pkey.ptr;
190
191 if (pder) {
192 if (!*pder) {
193 *pder = malloc(os->length);
194 if (*pder == NULL)
195 return -1;
196 inc = 0;
197 } else
198 inc = 1;
199
200 memcpy(*pder, os->data, os->length);
201
202 if (inc)
203 *pder += os->length;
204 }
205
206 return os->length;
207}
208
209#endif
210
211const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = { 153const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = {
212 .pkey_id = EVP_PKEY_HMAC, 154 .pkey_id = EVP_PKEY_HMAC,
213 .pkey_base_id = EVP_PKEY_HMAC, 155 .pkey_base_id = EVP_PKEY_HMAC,
@@ -222,11 +164,6 @@ const EVP_PKEY_ASN1_METHOD hmac_asn1_meth = {
222 .pkey_free = hmac_key_free, 164 .pkey_free = hmac_key_free,
223 .pkey_ctrl = hmac_pkey_ctrl, 165 .pkey_ctrl = hmac_pkey_ctrl,
224 166
225#ifdef HMAC_TEST_PRIVATE_KEY_FORMAT
226 .old_priv_decode = old_hmac_decode,
227 .old_priv_encode = old_hmac_encode,
228#endif
229
230 .set_priv_key = hmac_set_priv_key, 167 .set_priv_key = hmac_set_priv_key,
231 .get_priv_key = hmac_get_priv_key, 168 .get_priv_key = hmac_get_priv_key,
232}; 169};