diff options
Diffstat (limited to 'providers/implementations/ciphers/cipher_aes.h')
-rw-r--r-- | providers/implementations/ciphers/cipher_aes.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/providers/implementations/ciphers/cipher_aes.h b/providers/implementations/ciphers/cipher_aes.h new file mode 100644 index 0000000000..d00fab13ef --- /dev/null +++ b/providers/implementations/ciphers/cipher_aes.h @@ -0,0 +1,62 @@ +/* + * 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 <openssl/aes.h> +#include "prov/ciphercommon.h" + +typedef struct prov_aes_ctx_st { + PROV_CIPHER_CTX base; /* Must be first */ + union { + OSSL_UNION_ALIGN; + AES_KEY ks; + } ks; + + /* Platform specific data */ + union { + int dummy; +#if defined(OPENSSL_CPUID_OBJ) && defined(__s390__) + struct { + union { + OSSL_UNION_ALIGN; + /*- + * KM-AES parameter block - begin + * (see z/Architecture Principles of Operation >= SA22-7832-06) + */ + struct { + unsigned char k[32]; + } km; + /* KM-AES parameter block - end */ + /*- + * KMO-AES/KMF-AES parameter block - begin + * (see z/Architecture Principles of Operation >= SA22-7832-08) + */ + struct { + unsigned char cv[16]; + unsigned char k[32]; + } kmo_kmf; + /* KMO-AES/KMF-AES parameter block - end */ + } param; + unsigned int fc; + int res; + } s390x; +#endif /* defined(OPENSSL_CPUID_OBJ) && defined(__s390__) */ + } plat; + +} PROV_AES_CTX; + +#define PROV_CIPHER_HW_aes_ofb PROV_CIPHER_HW_aes_ofb128 +#define PROV_CIPHER_HW_aes_cfb PROV_CIPHER_HW_aes_cfb128 +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_ecb(size_t keybits); +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cbc(size_t keybits); +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_ofb128(size_t keybits); +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cfb128(size_t keybits); +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cfb1(size_t keybits); +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_cfb8(size_t keybits); +const PROV_CIPHER_HW *PROV_CIPHER_HW_aes_ctr(size_t keybits); + |