diff --git a/src/borg/crypto/_crypto_helpers.h b/src/borg/crypto/_crypto_helpers.h index cf0b3efe0..00a396a87 100644 --- a/src/borg/crypto/_crypto_helpers.h +++ b/src/borg/crypto/_crypto_helpers.h @@ -13,3 +13,8 @@ const EVP_CIPHER *EVP_aes_256_ocb(void); /* dummy, so that code compiles */ const EVP_CIPHER *EVP_chacha20_poly1305(void); /* dummy, so that code compiles */ #endif + + +#if !defined(LIBRESSL_VERSION_NUMBER) +#define LIBRESSL_VERSION_NUMBER 0 +#endif diff --git a/src/borg/crypto/low_level.pyx b/src/borg/crypto/low_level.pyx index 6d7cbcd83..9c09fe079 100644 --- a/src/borg/crypto/low_level.pyx +++ b/src/borg/crypto/low_level.pyx @@ -115,6 +115,7 @@ cdef extern from "openssl/hmac.h": cdef extern from "_crypto_helpers.h": long OPENSSL_VERSION_NUMBER + long LIBRESSL_VERSION_NUMBER ctypedef struct HMAC_CTX: pass @@ -126,7 +127,7 @@ cdef extern from "_crypto_helpers.h": const EVP_CIPHER *EVP_chacha20_poly1305() # dummy -openssl10 = OPENSSL_VERSION_NUMBER < 0x10100000 +openssl10 = OPENSSL_VERSION_NUMBER < 0x10100000 or LIBRESSL_VERSION_NUMBER import struct @@ -673,7 +674,7 @@ cdef class _CHACHA_BASE(_AEAD_BASE): cdef class AES256_OCB(_AES_BASE): @classmethod def requirements_check(cls): - if OPENSSL_VERSION_NUMBER < 0x10100000: + if openssl10: raise ValueError('AES OCB requires OpenSSL >= 1.1.0. Detected: OpenSSL %08x' % OPENSSL_VERSION_NUMBER) def __init__(self, mac_key, enc_key, iv=None, header_len=1, aad_offset=1): @@ -685,7 +686,7 @@ cdef class AES256_OCB(_AES_BASE): cdef class CHACHA20_POLY1305(_CHACHA_BASE): @classmethod def requirements_check(cls): - if OPENSSL_VERSION_NUMBER < 0x10100000: + if openssl10: raise ValueError('CHACHA20-POLY1305 requires OpenSSL >= 1.1.0. Detected: OpenSSL %08x' % OPENSSL_VERSION_NUMBER) def __init__(self, mac_key, enc_key, iv=None, header_len=1, aad_offset=1):