#ifndef _CRYPTO_GCM_H | |
#define _CRYPTO_GCM_H | |
#include <linux/errno.h> | |
#define GCM_AES_IV_SIZE 12 | |
#define GCM_RFC4106_IV_SIZE 8 | |
#define GCM_RFC4543_IV_SIZE 8 | |
/* | |
* validate authentication tag for GCM | |
*/ | |
static inline int crypto_gcm_check_authsize(unsigned int authsize) | |
{ | |
switch (authsize) { | |
case 4: | |
case 8: | |
case 12: | |
case 13: | |
case 14: | |
case 15: | |
case 16: | |
break; | |
default: | |
return -EINVAL; | |
} | |
return 0; | |
} | |
/* | |
* validate authentication tag for RFC4106 | |
*/ | |
static inline int crypto_rfc4106_check_authsize(unsigned int authsize) | |
{ | |
switch (authsize) { | |
case 8: | |
case 12: | |
case 16: | |
break; | |
default: | |
return -EINVAL; | |
} | |
return 0; | |
} | |
/* | |
* validate assoclen for RFC4106/RFC4543 | |
*/ | |
static inline int crypto_ipsec_check_assoclen(unsigned int assoclen) | |
{ | |
switch (assoclen) { | |
case 16: | |
case 20: | |
break; | |
default: | |
return -EINVAL; | |
} | |
return 0; | |
} | |
#endif |