1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #include <linux/types.h> 3*4882a593Smuzhiyun #include <crypto/aes.h> 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun struct aes_key { 6*4882a593Smuzhiyun u8 key[AES_MAX_KEYLENGTH]; 7*4882a593Smuzhiyun int rounds; 8*4882a593Smuzhiyun }; 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun int aes_p8_set_encrypt_key(const u8 *userKey, const int bits, 11*4882a593Smuzhiyun struct aes_key *key); 12*4882a593Smuzhiyun int aes_p8_set_decrypt_key(const u8 *userKey, const int bits, 13*4882a593Smuzhiyun struct aes_key *key); 14*4882a593Smuzhiyun void aes_p8_encrypt(const u8 *in, u8 *out, const struct aes_key *key); 15*4882a593Smuzhiyun void aes_p8_decrypt(const u8 *in, u8 *out, const struct aes_key *key); 16*4882a593Smuzhiyun void aes_p8_cbc_encrypt(const u8 *in, u8 *out, size_t len, 17*4882a593Smuzhiyun const struct aes_key *key, u8 *iv, const int enc); 18*4882a593Smuzhiyun void aes_p8_ctr32_encrypt_blocks(const u8 *in, u8 *out, 19*4882a593Smuzhiyun size_t len, const struct aes_key *key, 20*4882a593Smuzhiyun const u8 *iv); 21*4882a593Smuzhiyun void aes_p8_xts_encrypt(const u8 *in, u8 *out, size_t len, 22*4882a593Smuzhiyun const struct aes_key *key1, const struct aes_key *key2, u8 *iv); 23*4882a593Smuzhiyun void aes_p8_xts_decrypt(const u8 *in, u8 *out, size_t len, 24*4882a593Smuzhiyun const struct aes_key *key1, const struct aes_key *key2, u8 *iv); 25