blob: 9525aba09cfb6c054bc4e8cb1c141aaf8cec2fd3 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001#ifndef _ASR_CIPHER_H_
2#define _ASR_CIPHER_H_
3
4#include <common.h>
5
6#define BYTES_TO_BITS 8
7
8typedef struct {
9 uint32_t paddr;
10 uint32_t size;
11 uint32_t next_desc;
12 uint32_t reserved;
13} DMA_DESC_T;
14
15struct rijndael_key {
16 uint8_t K[(60 + 60 + 4) * sizeof(uint32_t)];
17 uint32_t *eK;
18 uint32_t *dK;
19 int Nr;
20};
21
22typedef union Symmetric_key {
23 struct rijndael_key rijndael;
24} symmetric_key;
25
26typedef enum {
27 EXT_KEY = 0,
28 RK_KEY,
29 SSK_KEY,
30} AES_KEY_SELECT_T;
31
32typedef enum {
33 AES_128 = 128/8,
34 AES_192 = 192/8,
35 AES_256 = 256/8,
36} AES_KEY_LEN_T;
37
38typedef enum {
39 AES_ECB_ALG = 0,
40 AES_CBC_ALG,
41 AES_CTR_ALG,
42 AES_XTS_ALG,
43 AES_KEYWRAP,
44} AES_MODE_T;
45
46typedef enum {
47 AES_DECRYPT_OP = 0,
48 AES_ENCRYPT_OP,
49} AES_OP_MODE_T;
50
51typedef enum {
52 ENG_AES = 0,
53 ENG_DES,
54 ENG_RC4,
55} CRYPTO_ENG_SEL_T;
56
57/* aes APIs*/
58int aes_ecb_encrypt_bcm(uint8_t *key, uint32_t key_len, bool use_rkek,
59 void *in, void *out, uint32_t size);
60int aes_ecb_decrypt_bcm(uint8_t *key, uint32_t key_len, bool use_rkek,
61 void *in, void *out, uint32_t size);
62int aes_cbc_encrypt_bcm(uint8_t *iv, uint8_t *key, uint32_t key_len,
63 bool use_rkek, void *in, void *out, uint32_t size);
64int aes_cbc_decrypt_bcm(uint8_t *iv, uint8_t *key, uint32_t key_len,
65 bool use_rkek, void *in, void *out, uint32_t size);
66#endif