Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
crypto4xx_sa.h
Go to the documentation of this file.
1 
21 #ifndef __CRYPTO4XX_SA_H__
22 #define __CRYPTO4XX_SA_H__
23 
24 #define AES_IV_SIZE 16
25 
30  struct {
34  u32 iv3:1;
35  u32 iv2:1;
36  u32 iv1:1;
37  u32 iv0:1;
44  u32 spi:1;
49  } bf;
50  u32 w;
51 } __attribute__((packed));
52 
53 #define DIR_OUTBOUND 0
54 #define DIR_INBOUND 1
55 #define SA_OP_GROUP_BASIC 0
56 #define SA_OPCODE_ENCRYPT 0
57 #define SA_OPCODE_DECRYPT 0
58 #define SA_OPCODE_HASH 3
59 #define SA_CIPHER_ALG_DES 0
60 #define SA_CIPHER_ALG_3DES 1
61 #define SA_CIPHER_ALG_ARC4 2
62 #define SA_CIPHER_ALG_AES 3
63 #define SA_CIPHER_ALG_KASUMI 4
64 #define SA_CIPHER_ALG_NULL 15
65 
66 #define SA_HASH_ALG_MD5 0
67 #define SA_HASH_ALG_SHA1 1
68 #define SA_HASH_ALG_NULL 15
69 #define SA_HASH_ALG_SHA1_DIGEST_SIZE 20
70 
71 #define SA_LOAD_HASH_FROM_SA 0
72 #define SA_LOAD_HASH_FROM_STATE 2
73 #define SA_NOT_LOAD_HASH 3
74 #define SA_LOAD_IV_FROM_SA 0
75 #define SA_LOAD_IV_FROM_INPUT 1
76 #define SA_LOAD_IV_FROM_STATE 2
77 #define SA_LOAD_IV_GEN_IV 3
78 
79 #define SA_PAD_TYPE_CONSTANT 2
80 #define SA_PAD_TYPE_ZERO 3
81 #define SA_PAD_TYPE_TLS 5
82 #define SA_PAD_TYPE_DTLS 5
83 #define SA_NOT_SAVE_HASH 0
84 #define SA_SAVE_HASH 1
85 #define SA_NOT_SAVE_IV 0
86 #define SA_SAVE_IV 1
87 #define SA_HEADER_PROC 1
88 #define SA_NO_HEADER_PROC 0
89 
90 union sa_command_0 {
91  struct {
102  u32 rsv:1;
107  u32 dir:1;
109  } bf;
111 } __attribute__((packed));
112 
113 #define CRYPTO_MODE_ECB 0
114 #define CRYPTO_MODE_CBC 1
116 #define CRYPTO_FEEDBACK_MODE_NO_FB 0
117 #define CRYPTO_FEEDBACK_MODE_64BIT_OFB 0
118 #define CRYPTO_FEEDBACK_MODE_8BIT_CFB 1
119 #define CRYPTO_FEEDBACK_MODE_1BIT_CFB 2
120 #define CRYPTO_FEEDBACK_MODE_128BIT_CFB 3
122 #define SA_AES_KEY_LEN_128 2
123 #define SA_AES_KEY_LEN_192 3
124 #define SA_AES_KEY_LEN_256 4
126 #define SA_REV2 1
132 #define SA_HASH_MODE_HASH 0
133 #define SA_HASH_MODE_HMAC 1
134 #define SA_MC_ENABLE 0
135 #define SA_MC_DISABLE 1
136 #define SA_NOT_COPY_HDR 0
137 #define SA_COPY_HDR 1
138 #define SA_NOT_COPY_PAD 0
139 #define SA_COPY_PAD 1
140 #define SA_NOT_COPY_PAYLOAD 0
141 #define SA_COPY_PAYLOAD 1
142 #define SA_EXTENDED_SN_OFF 0
143 #define SA_EXTENDED_SN_ON 1
144 #define SA_SEQ_MASK_OFF 0
145 #define SA_SEQ_MASK_ON 1
146 
148  struct {
167  } bf;
169 } __attribute__((packed));
170 
175 } __attribute__((packed));
184 } __attribute__((packed));
192  u32 key[4];
193  u32 iv[4]; /* for CBC, OFC, and CFB mode */
196 } __attribute__((packed));
198 #define SA_AES128_LEN (sizeof(struct dynamic_sa_aes128)/4)
199 #define SA_AES128_CONTENTS 0x3e000042
200 
201 /*
202  * Security Association (SA) for AES192
203  */
206  u32 key[6];
207  u32 iv[4]; /* for CBC, OFC, and CFB mode */
210 } __attribute__((packed));
211 
212 #define SA_AES192_LEN (sizeof(struct dynamic_sa_aes192)/4)
213 #define SA_AES192_CONTENTS 0x3e000062
214 
220  u32 key[8];
221  u32 iv[4]; /* for CBC, OFC, and CFB mode */
224 } __attribute__((packed));
225 
226 #define SA_AES256_LEN (sizeof(struct dynamic_sa_aes256)/4)
227 #define SA_AES256_CONTENTS 0x3e000082
228 #define SA_AES_CONTENTS 0x3e000002
229 
239 } __attribute__((packed));
240 #define SA_HASH160_LEN (sizeof(struct dynamic_sa_hash160)/4)
241 #define SA_HASH160_CONTENTS 0x2000a502
243 #endif