]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blob - include/crypto/gcm.h
Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[mirror_ubuntu-focal-kernel.git] / include / crypto / gcm.h
1 #ifndef _CRYPTO_GCM_H
2 #define _CRYPTO_GCM_H
3
4 #include <linux/errno.h>
5
6 #define GCM_AES_IV_SIZE 12
7 #define GCM_RFC4106_IV_SIZE 8
8 #define GCM_RFC4543_IV_SIZE 8
9
10 /*
11 * validate authentication tag for GCM
12 */
13 static inline int crypto_gcm_check_authsize(unsigned int authsize)
14 {
15 switch (authsize) {
16 case 4:
17 case 8:
18 case 12:
19 case 13:
20 case 14:
21 case 15:
22 case 16:
23 break;
24 default:
25 return -EINVAL;
26 }
27
28 return 0;
29 }
30
31 /*
32 * validate authentication tag for RFC4106
33 */
34 static inline int crypto_rfc4106_check_authsize(unsigned int authsize)
35 {
36 switch (authsize) {
37 case 8:
38 case 12:
39 case 16:
40 break;
41 default:
42 return -EINVAL;
43 }
44
45 return 0;
46 }
47
48 /*
49 * validate assoclen for RFC4106/RFC4543
50 */
51 static inline int crypto_ipsec_check_assoclen(unsigned int assoclen)
52 {
53 switch (assoclen) {
54 case 16:
55 case 20:
56 break;
57 default:
58 return -EINVAL;
59 }
60
61 return 0;
62 }
63 #endif