4 #include <linux/errno.h>
6 #include <crypto/aes.h>
7 #include <crypto/gf128mul.h>
9 #define GCM_AES_IV_SIZE 12
10 #define GCM_RFC4106_IV_SIZE 8
11 #define GCM_RFC4543_IV_SIZE 8
14 * validate authentication tag for GCM
16 static inline int crypto_gcm_check_authsize(unsigned int authsize
)
35 * validate authentication tag for RFC4106
37 static inline int crypto_rfc4106_check_authsize(unsigned int authsize
)
52 * validate assoclen for RFC4106/RFC4543
54 static inline int crypto_ipsec_check_assoclen(unsigned int assoclen
)
69 struct crypto_aes_ctx aes_ctx
;
70 unsigned int authsize
;
73 int aesgcm_expandkey(struct aesgcm_ctx
*ctx
, const u8
*key
,
74 unsigned int keysize
, unsigned int authsize
);
76 void aesgcm_encrypt(const struct aesgcm_ctx
*ctx
, u8
*dst
, const u8
*src
,
77 int crypt_len
, const u8
*assoc
, int assoc_len
,
78 const u8 iv
[GCM_AES_IV_SIZE
], u8
*authtag
);
80 bool __must_check
aesgcm_decrypt(const struct aesgcm_ctx
*ctx
, u8
*dst
,
81 const u8
*src
, int crypt_len
, const u8
*assoc
,
82 int assoc_len
, const u8 iv
[GCM_AES_IV_SIZE
],