diff options
Diffstat (limited to 'src/_cffi_src/openssl')
| -rw-r--r-- | src/_cffi_src/openssl/engine.py | 4 | ||||
| -rw-r--r-- | src/_cffi_src/openssl/evp.py | 26 | ||||
| -rw-r--r-- | src/_cffi_src/openssl/hmac.py | 31 | 
3 files changed, 49 insertions, 12 deletions
| diff --git a/src/_cffi_src/openssl/engine.py b/src/_cffi_src/openssl/engine.py index 77c97fe5..afdd54e4 100644 --- a/src/_cffi_src/openssl/engine.py +++ b/src/_cffi_src/openssl/engine.py @@ -16,12 +16,10 @@ typedef ... RSA_METHOD;  typedef ... DSA_METHOD;  typedef ... DH_METHOD;  typedef struct { -    void (*seed)(const void *, int);      int (*bytes)(unsigned char *, int); -    void (*cleanup)(); -    void (*add)(const void *, int, double);      int (*pseudorand)(unsigned char *, int);      int (*status)(); +    ...;  } RAND_METHOD;  typedef int (*ENGINE_GEN_INT_FUNC_PTR)(ENGINE *);  typedef ... *ENGINE_CTRL_FUNC_PTR; diff --git a/src/_cffi_src/openssl/evp.py b/src/_cffi_src/openssl/evp.py index a91a9666..5abc6451 100644 --- a/src/_cffi_src/openssl/evp.py +++ b/src/_cffi_src/openssl/evp.py @@ -12,9 +12,7 @@ TYPES = """  typedef ... EVP_CIPHER;  typedef ... EVP_CIPHER_CTX;  typedef ... EVP_MD; -typedef struct env_md_ctx_st { -    ...; -} EVP_MD_CTX; +typedef struct { ...; } EVP_MD_CTX;  typedef ... EVP_PKEY;  typedef ... EVP_PKEY_CTX; @@ -55,13 +53,11 @@ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);  void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *);  int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *, int); -EVP_MD_CTX *EVP_MD_CTX_create(void);  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_MD_CTX_cleanup(EVP_MD_CTX *); -void EVP_MD_CTX_destroy(EVP_MD_CTX *);  const EVP_MD *EVP_get_digestbyname(const char *);  EVP_PKEY *EVP_PKEY_new(void); @@ -115,6 +111,12 @@ int EVP_PKEY_cmp(const EVP_PKEY *, const EVP_PKEY *);  EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *);  int Cryptography_EVP_PKEY_id(const EVP_PKEY *); + +/* in 1.1.0 _create and _destroy were renamed to _new and _free. The following +   two functions wrap both the old and new functions so we can call them +   without worrying about what OpenSSL we're running against. */ +EVP_MD_CTX *Cryptography_EVP_MD_CTX_new(void); +void Cryptography_EVP_MD_CTX_free(EVP_MD_CTX *);  """  MACROS = """ @@ -235,4 +237,18 @@ int Cryptography_EVP_PKEY_id(const EVP_PKEY *key) {          return key->type;      #endif  } +EVP_MD_CTX *Cryptography_EVP_MD_CTX_new(void) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) +    return EVP_MD_CTX_create(); +#else +    return EVP_MD_CTX_new(); +#endif +} +void Cryptography_EVP_MD_CTX_free(EVP_MD_CTX *ctx) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) +    EVP_MD_CTX_destroy(ctx); +#else +    EVP_MD_CTX_free(ctx); +#endif +}  """ diff --git a/src/_cffi_src/openssl/hmac.py b/src/_cffi_src/openssl/hmac.py index 7178e573..bcc8a861 100644 --- a/src/_cffi_src/openssl/hmac.py +++ b/src/_cffi_src/openssl/hmac.py @@ -9,18 +9,17 @@ INCLUDES = """  """  TYPES = """ -typedef struct { ...; } HMAC_CTX; +typedef ... HMAC_CTX;  """  FUNCTIONS = """ -void HMAC_CTX_init(HMAC_CTX *); -void HMAC_CTX_cleanup(HMAC_CTX *); -  int Cryptography_HMAC_Init_ex(HMAC_CTX *, const void *, int, const EVP_MD *,                                ENGINE *);  int Cryptography_HMAC_Update(HMAC_CTX *, const unsigned char *, size_t);  int Cryptography_HMAC_Final(HMAC_CTX *, unsigned char *, unsigned int *);  int Cryptography_HMAC_CTX_copy(HMAC_CTX *, HMAC_CTX *); +HMAC_CTX *Cryptography_HMAC_CTX_new(void); +void Cryptography_HMAC_CTX_free(HMAC_CTX *ctx);  """  MACROS = """ @@ -80,4 +79,28 @@ int Cryptography_HMAC_CTX_copy(HMAC_CTX *dst_ctx, HMAC_CTX *src_ctx) {          return 0;  #endif  } + +HMAC_CTX *Cryptography_HMAC_CTX_new(void) { +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) +    return HMAC_CTX_new(); +#else +    /* This uses OPENSSL_zalloc in 1.1.0, which is malloc + memset */ +    HMAC_CTX *ctx = (HMAC_CTX *)OPENSSL_malloc(sizeof(HMAC_CTX)); +    memset(ctx, 0, sizeof(HMAC_CTX)); +    return ctx; +#endif +} + + + +void Cryptography_HMAC_CTX_free(HMAC_CTX *ctx) { +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) +    return HMAC_CTX_free(ctx); +#else +    if (ctx != NULL) { +        HMAC_CTX_cleanup(ctx); +        OPENSSL_free(ctx); +    } +#endif +}  """ | 
