mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-17 15:27:36 +00:00
Add support for keys that include 4 byte SALT values,
including GCM and ICM/CTR modes for AES. Reviewed by: jmg MFC after: 1 week Sponsored by: Rubicon Communications (Netgate)
This commit is contained in:
parent
f87e372ef2
commit
afd010c196
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=286143
@ -100,6 +100,7 @@ extern void yyerror(const char *);
|
||||
%token F_EXT EXTENSION NOCYCLICSEQ
|
||||
%token ALG_AUTH ALG_AUTH_NOKEY
|
||||
%token ALG_ENC ALG_ENC_NOKEY ALG_ENC_DESDERIV ALG_ENC_DES32IV ALG_ENC_OLD
|
||||
%token ALG_ENC_SALT
|
||||
%token ALG_COMP
|
||||
%token F_LIFETIME_HARD F_LIFETIME_SOFT
|
||||
%token DECSTRING QUOTEDSTRING HEXSTRING STRING ANY
|
||||
@ -111,6 +112,7 @@ extern void yyerror(const char *);
|
||||
|
||||
%type <num> prefix protocol_spec upper_spec
|
||||
%type <num> ALG_ENC ALG_ENC_DESDERIV ALG_ENC_DES32IV ALG_ENC_OLD ALG_ENC_NOKEY
|
||||
%type <num> ALG_ENC_SALT
|
||||
%type <num> ALG_AUTH ALG_AUTH_NOKEY
|
||||
%type <num> ALG_COMP
|
||||
%type <num> PR_ESP PR_AH PR_IPCOMP PR_TCP
|
||||
@ -402,6 +404,27 @@ enc_alg
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
| ALG_ENC_SALT key_string
|
||||
{
|
||||
if ($1 < 0) {
|
||||
yyerror("unsupported algorithm");
|
||||
return -1;
|
||||
}
|
||||
p_alg_enc = $1;
|
||||
|
||||
p_key_enc_len = $2.len;
|
||||
|
||||
p_key_enc = $2.buf;
|
||||
/*
|
||||
* Salted keys include a 4 byte value that is
|
||||
* not part of the key.
|
||||
*/
|
||||
if (ipsec_check_keylen(SADB_EXT_SUPPORTED_ENCRYPT,
|
||||
p_alg_enc, PFKEY_UNUNIT64(p_key_enc_len - 4)) < 0) {
|
||||
yyerror(ipsec_strerror());
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
auth_alg
|
||||
|
@ -166,9 +166,9 @@ tcp { yylval.num = 0; return(PR_TCP); }
|
||||
<S_ENCALG>des-deriv { yylval.num = SADB_EALG_DESCBC; BEGIN INITIAL; return(ALG_ENC_DESDERIV); }
|
||||
<S_ENCALG>des-32iv { yylval.num = SADB_EALG_DESCBC; BEGIN INITIAL; return(ALG_ENC_DES32IV); }
|
||||
<S_ENCALG>rijndael-cbc { yylval.num = SADB_X_EALG_RIJNDAELCBC; BEGIN INITIAL; return(ALG_ENC); }
|
||||
<S_ENCALG>aes-ctr { yylval.num = SADB_X_EALG_AESCTR; BEGIN INITIAL; return(ALG_ENC); }
|
||||
<S_ENCALG>aes-ctr { yylval.num = SADB_X_EALG_AESCTR; BEGIN INITIAL; return(ALG_ENC_SALT); }
|
||||
<S_ENCALG>camellia-cbc { yylval.num = SADB_X_EALG_CAMELLIACBC; BEGIN INITIAL; return(ALG_ENC); }
|
||||
<S_ENCALG>aes-gcm-16 { yylval.num = SADB_X_EALG_AESGCM16; BEGIN INITIAL; return(ALG_ENC); }
|
||||
<S_ENCALG>aes-gcm-16 { yylval.num = SADB_X_EALG_AESGCM16; BEGIN INITIAL; return(ALG_ENC_SALT); }
|
||||
|
||||
/* compression algorithms */
|
||||
{hyphen}C { return(F_COMP); }
|
||||
|
Loading…
Reference in New Issue
Block a user