summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortb <>2019-03-17 18:17:45 +0000
committertb <>2019-03-17 18:17:45 +0000
commitaf9a3893c75bea9cdb40ebd337ad14721e571211 (patch)
treeb05f68bd83b8de77bfa409e47aaaf56b0150950b /src
parentfb0b540c39c782c9152081c2021f54363e04307c (diff)
downloadopenbsd-af9a3893c75bea9cdb40ebd337ad14721e571211.tar.gz
openbsd-af9a3893c75bea9cdb40ebd337ad14721e571211.tar.bz2
openbsd-af9a3893c75bea9cdb40ebd337ad14721e571211.zip
Provide EVP_PKEY_get0_hmac(). From OpenSSL 1.1.1 which is still
freely licensed. From jsing
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/Symbols.list1
-rw-r--r--src/lib/libcrypto/evp/evp.h4
-rw-r--r--src/lib/libcrypto/evp/evp_err.c3
-rw-r--r--src/lib/libcrypto/evp/p_lib.c18
4 files changed, 23 insertions, 3 deletions
diff --git a/src/lib/libcrypto/Symbols.list b/src/lib/libcrypto/Symbols.list
index 9fdf723f87..9a8eacc8e3 100644
--- a/src/lib/libcrypto/Symbols.list
+++ b/src/lib/libcrypto/Symbols.list
@@ -1438,6 +1438,7 @@ EVP_PKEY_get0_DSA
1438EVP_PKEY_get0_EC_KEY 1438EVP_PKEY_get0_EC_KEY
1439EVP_PKEY_get0_RSA 1439EVP_PKEY_get0_RSA
1440EVP_PKEY_get0_asn1 1440EVP_PKEY_get0_asn1
1441EVP_PKEY_get0_hmac
1441EVP_PKEY_get1_DH 1442EVP_PKEY_get1_DH
1442EVP_PKEY_get1_DSA 1443EVP_PKEY_get1_DSA
1443EVP_PKEY_get1_EC_KEY 1444EVP_PKEY_get1_EC_KEY
diff --git a/src/lib/libcrypto/evp/evp.h b/src/lib/libcrypto/evp/evp.h
index 22876f9fe9..e8ab36693a 100644
--- a/src/lib/libcrypto/evp/evp.h
+++ b/src/lib/libcrypto/evp/evp.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp.h,v 1.74 2019/03/17 18:07:41 tb Exp $ */ 1/* $OpenBSD: evp.h,v 1.75 2019/03/17 18:17:44 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -902,6 +902,7 @@ int EVP_PKEY_set_type(EVP_PKEY *pkey, int type);
902int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); 902int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
903int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); 903int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
904void *EVP_PKEY_get0(const EVP_PKEY *pkey); 904void *EVP_PKEY_get0(const EVP_PKEY *pkey);
905const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len);
905 906
906#ifndef OPENSSL_NO_RSA 907#ifndef OPENSSL_NO_RSA
907struct rsa_st; 908struct rsa_st;
@@ -1487,6 +1488,7 @@ void ERR_load_EVP_strings(void);
1487#define EVP_R_ERROR_LOADING_SECTION 165 1488#define EVP_R_ERROR_LOADING_SECTION 165
1488#define EVP_R_ERROR_SETTING_FIPS_MODE 166 1489#define EVP_R_ERROR_SETTING_FIPS_MODE 166
1489#define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 1490#define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119
1491#define EVP_R_EXPECTING_AN_HMAC_KEY 174
1490#define EVP_R_EXPECTING_AN_RSA_KEY 127 1492#define EVP_R_EXPECTING_AN_RSA_KEY 127
1491#define EVP_R_EXPECTING_A_DH_KEY 128 1493#define EVP_R_EXPECTING_A_DH_KEY 128
1492#define EVP_R_EXPECTING_A_DSA_KEY 129 1494#define EVP_R_EXPECTING_A_DSA_KEY 129
diff --git a/src/lib/libcrypto/evp/evp_err.c b/src/lib/libcrypto/evp/evp_err.c
index 814637c739..6bfb1c1dae 100644
--- a/src/lib/libcrypto/evp/evp_err.c
+++ b/src/lib/libcrypto/evp/evp_err.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: evp_err.c,v 1.23 2019/03/17 18:07:41 tb Exp $ */ 1/* $OpenBSD: evp_err.c,v 1.24 2019/03/17 18:17:44 tb Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -100,6 +100,7 @@ static ERR_STRING_DATA EVP_str_reasons[] = {
100 {ERR_REASON(EVP_R_ERROR_LOADING_SECTION) , "error loading section"}, 100 {ERR_REASON(EVP_R_ERROR_LOADING_SECTION) , "error loading section"},
101 {ERR_REASON(EVP_R_ERROR_SETTING_FIPS_MODE), "error setting fips mode"}, 101 {ERR_REASON(EVP_R_ERROR_SETTING_FIPS_MODE), "error setting fips mode"},
102 {ERR_REASON(EVP_R_EVP_PBE_CIPHERINIT_ERROR), "evp pbe cipherinit error"}, 102 {ERR_REASON(EVP_R_EVP_PBE_CIPHERINIT_ERROR), "evp pbe cipherinit error"},
103 {ERR_PACK(ERR_LIB_EVP, 0, EVP_R_EXPECTING_AN_HMAC_KEY), "expecting an hmac key"},
103 {ERR_REASON(EVP_R_EXPECTING_AN_RSA_KEY) , "expecting an rsa key"}, 104 {ERR_REASON(EVP_R_EXPECTING_AN_RSA_KEY) , "expecting an rsa key"},
104 {ERR_REASON(EVP_R_EXPECTING_A_DH_KEY) , "expecting a dh key"}, 105 {ERR_REASON(EVP_R_EXPECTING_A_DH_KEY) , "expecting a dh key"},
105 {ERR_REASON(EVP_R_EXPECTING_A_DSA_KEY) , "expecting a dsa key"}, 106 {ERR_REASON(EVP_R_EXPECTING_A_DSA_KEY) , "expecting a dsa key"},
diff --git a/src/lib/libcrypto/evp/p_lib.c b/src/lib/libcrypto/evp/p_lib.c
index 0e4c38e218..13a9d65f28 100644
--- a/src/lib/libcrypto/evp/p_lib.c
+++ b/src/lib/libcrypto/evp/p_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p_lib.c,v 1.24 2018/05/30 15:40:50 tb Exp $ */ 1/* $OpenBSD: p_lib.c,v 1.25 2019/03/17 18:17:45 tb Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -282,6 +282,22 @@ EVP_PKEY_get0(const EVP_PKEY *pkey)
282 return pkey->pkey.ptr; 282 return pkey->pkey.ptr;
283} 283}
284 284
285const unsigned char *
286EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len)
287{
288 ASN1_OCTET_STRING *os;
289
290 if (pkey->type != EVP_PKEY_HMAC) {
291 EVPerror(EVP_R_EXPECTING_AN_HMAC_KEY);
292 return NULL;
293 }
294
295 os = EVP_PKEY_get0(pkey);
296 *len = os->length;
297
298 return os->data;
299}
300
285#ifndef OPENSSL_NO_RSA 301#ifndef OPENSSL_NO_RSA
286RSA * 302RSA *
287EVP_PKEY_get0_RSA(EVP_PKEY *pkey) 303EVP_PKEY_get0_RSA(EVP_PKEY *pkey)