Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[sfrench/cifs-2.6.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