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