blob: 381f24c9022d2aa8a0ea0a350bc7b6cc6dc7e4e4 [file] [log] [blame]
bellarde4d4fe32004-08-01 21:54:53 +00001#ifndef QEMU_AES_H
2#define QEMU_AES_H
3
4#define AES_MAXNR 14
5#define AES_BLOCK_SIZE 16
6
7struct aes_key_st {
8 uint32_t rd_key[4 *(AES_MAXNR + 1)];
9 int rounds;
10};
11typedef struct aes_key_st AES_KEY;
12
Mike Frysingerc8d70e52016-06-06 18:05:35 -040013/* FreeBSD/OpenSSL have their own AES functions with the same names in -lcrypto
14 * (which might be pulled in via curl), so redefine to avoid conflicts. */
Sean Bruno9f6f7f12014-06-16 08:02:07 -070015#define AES_set_encrypt_key QEMU_AES_set_encrypt_key
16#define AES_set_decrypt_key QEMU_AES_set_decrypt_key
17#define AES_encrypt QEMU_AES_encrypt
18#define AES_decrypt QEMU_AES_decrypt
Sean Bruno9f6f7f12014-06-16 08:02:07 -070019
bellarde4d4fe32004-08-01 21:54:53 +000020int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
Yeqi Fu48805df2023-03-15 11:26:49 +080021 AES_KEY *key);
bellarde4d4fe32004-08-01 21:54:53 +000022int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
Yeqi Fu48805df2023-03-15 11:26:49 +080023 AES_KEY *key);
bellarde4d4fe32004-08-01 21:54:53 +000024
25void AES_encrypt(const unsigned char *in, unsigned char *out,
Yeqi Fu48805df2023-03-15 11:26:49 +080026 const AES_KEY *key);
bellarde4d4fe32004-08-01 21:54:53 +000027void AES_decrypt(const unsigned char *in, unsigned char *out,
Yeqi Fu48805df2023-03-15 11:26:49 +080028 const AES_KEY *key);
bellarde4d4fe32004-08-01 21:54:53 +000029
Tom Musta40c84b52014-03-13 09:13:25 -050030extern const uint8_t AES_sbox[256];
31extern const uint8_t AES_isbox[256];
32
Ard Biesheuvel9ea17002023-07-31 10:40:43 +020033/*
34AES_Te0[x] = S [x].[02, 01, 01, 03];
35AES_Td0[x] = Si[x].[0e, 09, 0d, 0b];
36*/
37
38extern const uint32_t AES_Te0[256], AES_Td0[256];
39
bellarde4d4fe32004-08-01 21:54:53 +000040#endif