forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
crypto: gcm - helper functions for assoclen/authsize check
Added inline helper functions to check authsize and assoclen for gcm, rfc4106 and rfc4543. These are used in the generic implementation of gcm, rfc4106 and rfc4543. Signed-off-by: Iuliana Prodan <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
- Loading branch information
1 parent
1bfaac7
commit 65526f6
Showing
2 changed files
with
70 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,63 @@ | ||
#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 |