aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2018-11-13 22:47:34 -0500
committerAlex Gaynor <alex.gaynor@gmail.com>2018-11-13 22:47:34 -0500
commitd37346651bc4b9ebc0b8c7cfdc7c1f21de6a751d (patch)
tree5871abeda7565e32b1fbb6de35fddcba88e701f3 /src
parent0dc5e3cce5deeb05c507643dc6c36845a085684f (diff)
downloadcryptography-d37346651bc4b9ebc0b8c7cfdc7c1f21de6a751d.tar.gz
cryptography-d37346651bc4b9ebc0b8c7cfdc7c1f21de6a751d.tar.bz2
cryptography-d37346651bc4b9ebc0b8c7cfdc7c1f21de6a751d.zip
add EVPDigestFinalXOF for extendable output functions (#4589)
Diffstat (limited to 'src')
-rw-r--r--src/_cffi_src/openssl/evp.py5
-rw-r--r--src/cryptography/hazmat/bindings/openssl/_conditional.py9
2 files changed, 14 insertions, 0 deletions
diff --git a/src/_cffi_src/openssl/evp.py b/src/_cffi_src/openssl/evp.py
index 3c10aabf..9ae6025a 100644
--- a/src/_cffi_src/openssl/evp.py
+++ b/src/_cffi_src/openssl/evp.py
@@ -38,6 +38,7 @@ static const int Cryptography_HAS_EVP_PKEY_DHX;
static const int Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint;
static const int Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY;
static const long Cryptography_HAS_RAW_KEY;
+static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF;
"""
FUNCTIONS = """
@@ -69,6 +70,7 @@ int EVP_MD_CTX_copy_ex(EVP_MD_CTX *, const EVP_MD_CTX *);
int EVP_DigestInit_ex(EVP_MD_CTX *, const EVP_MD *, ENGINE *);
int EVP_DigestUpdate(EVP_MD_CTX *, const void *, size_t);
int EVP_DigestFinal_ex(EVP_MD_CTX *, unsigned char *, unsigned int *);
+int EVP_DigestFinalXOF(EVP_MD_CTX *, unsigned char *, size_t);
const EVP_MD *EVP_get_digestbyname(const char *);
const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *);
int EVP_MD_size(const EVP_MD *);
@@ -258,6 +260,8 @@ int (*EVP_PKEY_set1_tls_encodedpoint)(EVP_PKEY *, const unsigned char *,
#if CRYPTOGRAPHY_OPENSSL_LESS_THAN_111
static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 0;
static const long Cryptography_HAS_RAW_KEY = 0;
+static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF = 0;
+int (*EVP_DigestFinalXOF)(EVP_MD_CTX *, unsigned char *, size_t) = NULL;
int (*EVP_DigestSign)(EVP_MD_CTX *, unsigned char *, size_t *,
const unsigned char *tbs, size_t) = NULL;
int (*EVP_DigestVerify)(EVP_MD_CTX *, const unsigned char *, size_t,
@@ -273,6 +277,7 @@ int (*EVP_PKEY_get_raw_public_key)(const EVP_PKEY *, unsigned char *,
#else
static const long Cryptography_HAS_ONESHOT_EVP_DIGEST_SIGN_VERIFY = 1;
static const long Cryptography_HAS_RAW_KEY = 1;
+static const long Cryptography_HAS_EVP_DIGESTFINAL_XOF = 1;
#endif
/* OpenSSL 1.1.0+ does this define for us, but if not present we'll do it */
diff --git a/src/cryptography/hazmat/bindings/openssl/_conditional.py b/src/cryptography/hazmat/bindings/openssl/_conditional.py
index 06199f4a..76417934 100644
--- a/src/cryptography/hazmat/bindings/openssl/_conditional.py
+++ b/src/cryptography/hazmat/bindings/openssl/_conditional.py
@@ -252,6 +252,12 @@ def cryptography_has_oneshot_evp_digest_sign_verify():
]
+def cryptography_has_evp_digestfinal_xof():
+ return [
+ "EVP_DigestFinalXOF",
+ ]
+
+
def cryptography_has_evp_pkey_get_set_tls_encodedpoint():
return [
"EVP_PKEY_get1_tls_encodedpoint",
@@ -394,4 +400,7 @@ CONDITIONAL_NAMES = {
"Cryptography_HAS_CIPHER_DETAILS": cryptography_has_cipher_details,
"Cryptography_HAS_TLSv1_3": cryptography_has_tlsv13,
"Cryptography_HAS_RAW_KEY": cryptography_has_raw_key,
+ "Cryptography_HAS_EVP_DIGESTFINAL_XOF": (
+ cryptography_has_evp_digestfinal_xof
+ ),
}