From dc7aa029007da3849a04291a4c258587228daac8 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Wed, 11 Dec 2019 13:43:24 +0100 Subject: PROV: Move AES_GCM specialisation away from common cipher header The AES_GCM specialisation was defined in the common cipher header providers/implementations/include/prov/ciphercommon_gcm.h, when it should in fact be in a local providers/implementations/ciphers/ header. Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/10606) --- providers/implementations/ciphers/cipher_aes_gcm.c | 3 +- providers/implementations/ciphers/cipher_aes_gcm.h | 43 ++++++++++++++++++++++ .../implementations/ciphers/cipher_aes_gcm_hw.c | 3 +- .../include/prov/ciphercommon_gcm.h | 30 --------------- 4 files changed, 45 insertions(+), 34 deletions(-) create mode 100644 providers/implementations/ciphers/cipher_aes_gcm.h (limited to 'providers') diff --git a/providers/implementations/ciphers/cipher_aes_gcm.c b/providers/implementations/ciphers/cipher_aes_gcm.c index 18277c705e..bb0b8debc0 100644 --- a/providers/implementations/ciphers/cipher_aes_gcm.c +++ b/providers/implementations/ciphers/cipher_aes_gcm.c @@ -9,8 +9,7 @@ /* Dispatch functions for AES GCM mode */ -#include "prov/ciphercommon.h" -#include "prov/ciphercommon_gcm.h" +#include "cipher_aes_gcm.h" #include "prov/implementations.h" static void *aes_gcm_newctx(void *provctx, size_t keybits) diff --git a/providers/implementations/ciphers/cipher_aes_gcm.h b/providers/implementations/ciphers/cipher_aes_gcm.h new file mode 100644 index 0000000000..6c81790640 --- /dev/null +++ b/providers/implementations/ciphers/cipher_aes_gcm.h @@ -0,0 +1,43 @@ +/* + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include +#include "prov/ciphercommon.h" +#include "prov/ciphercommon_gcm.h" + +typedef struct prov_aes_gcm_ctx_st { + PROV_GCM_CTX base; /* must be first entry in struct */ + union { + OSSL_UNION_ALIGN; + AES_KEY ks; + } ks; /* AES key schedule to use */ + + /* Platform specific data */ + union { + int dummy; +#if defined(OPENSSL_CPUID_OBJ) && defined(__s390__) + struct { + union { + OSSL_UNION_ALIGN; + S390X_KMA_PARAMS kma; + } param; + unsigned int fc; + unsigned char ares[16]; + unsigned char mres[16]; + unsigned char kres[16]; + int areslen; + int mreslen; + int kreslen; + int res; + } s390x; +#endif /* defined(OPENSSL_CPUID_OBJ) && defined(__s390__) */ + } plat; +} PROV_AES_GCM_CTX; + +const PROV_GCM_HW *PROV_AES_HW_gcm(size_t keybits); diff --git a/providers/implementations/ciphers/cipher_aes_gcm_hw.c b/providers/implementations/ciphers/cipher_aes_gcm_hw.c index 6a2f8a5fd4..0373917a18 100644 --- a/providers/implementations/ciphers/cipher_aes_gcm_hw.c +++ b/providers/implementations/ciphers/cipher_aes_gcm_hw.c @@ -9,8 +9,7 @@ /* Dispatch functions for AES GCM mode */ -#include "prov/ciphercommon.h" -#include "prov/ciphercommon_gcm.h" +#include "cipher_aes_gcm.h" static int generic_aes_gcm_initkey(PROV_GCM_CTX *ctx, const unsigned char *key, size_t keylen) diff --git a/providers/implementations/include/prov/ciphercommon_gcm.h b/providers/implementations/include/prov/ciphercommon_gcm.h index 1932e14c4c..d651b3827a 100644 --- a/providers/implementations/include/prov/ciphercommon_gcm.h +++ b/providers/implementations/include/prov/ciphercommon_gcm.h @@ -79,35 +79,6 @@ typedef struct prov_gcm_ctx_st { const void *ks; } PROV_GCM_CTX; -typedef struct prov_aes_gcm_ctx_st { - PROV_GCM_CTX base; /* must be first entry in struct */ - union { - OSSL_UNION_ALIGN; - AES_KEY ks; - } ks; /* AES key schedule to use */ - - /* Platform specific data */ - union { - int dummy; -#if defined(OPENSSL_CPUID_OBJ) && defined(__s390__) - struct { - union { - OSSL_UNION_ALIGN; - S390X_KMA_PARAMS kma; - } param; - unsigned int fc; - unsigned char ares[16]; - unsigned char mres[16]; - unsigned char kres[16]; - int areslen; - int mreslen; - int kreslen; - int res; - } s390x; -#endif /* defined(OPENSSL_CPUID_OBJ) && defined(__s390__) */ - } plat; -} PROV_AES_GCM_CTX; - PROV_CIPHER_FUNC(int, GCM_setkey, (PROV_GCM_CTX *ctx, const unsigned char *key, size_t keylen)); PROV_CIPHER_FUNC(int, GCM_setiv, (PROV_GCM_CTX *dat, const unsigned char *iv, @@ -130,7 +101,6 @@ struct prov_gcm_hw_st { OSSL_GCM_cipherfinal_fn cipherfinal; OSSL_GCM_oneshot_fn oneshot; }; -const PROV_GCM_HW *PROV_AES_HW_gcm(size_t keybits); OSSL_OP_cipher_encrypt_init_fn gcm_einit; OSSL_OP_cipher_decrypt_init_fn gcm_dinit; -- cgit v1.2.3