1 /* 2 * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 #include <openssl/aes.h> 11 #include "prov/ciphercommon.h" 12 #include "crypto/aes_platform.h" 13 14 /* 15 * Available in cipher_fips.c, and compiled with different values depending 16 * on we're in the FIPS module or not. 17 */ 18 extern const int ossl_aes_xts_allow_insecure_decrypt; 19 20 PROV_CIPHER_FUNC(void, xts_stream, 21 (const unsigned char *in, unsigned char *out, size_t len, 22 const AES_KEY *key1, const AES_KEY *key2, 23 const unsigned char iv[16])); 24 25 typedef struct prov_aes_xts_ctx_st { 26 PROV_CIPHER_CTX base; /* Must be first */ 27 union { 28 OSSL_UNION_ALIGN; 29 AES_KEY ks; 30 } ks1, ks2; /* AES key schedules to use */ 31 XTS128_CONTEXT xts; 32 OSSL_xts_stream_fn stream; 33 } PROV_AES_XTS_CTX; 34 35 const PROV_CIPHER_HW *ossl_prov_cipher_hw_aes_xts(size_t keybits); 36