| #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 |