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 64