mirror of
https://github.com/strongswan/strongswan.git
synced 2025-11-22 00:01:45 -05:00
ikev2: Use helpers to build signature auth data
This commit is contained in:
parent
eae80fdedc
commit
3fc66e5743
@ -63,9 +63,7 @@ struct private_pubkey_authenticator_t {
|
|||||||
static bool parse_signature_auth_data(chunk_t *auth_data, key_type_t *key_type,
|
static bool parse_signature_auth_data(chunk_t *auth_data, key_type_t *key_type,
|
||||||
signature_params_t *params)
|
signature_params_t *params)
|
||||||
{
|
{
|
||||||
chunk_t parameters = chunk_empty;
|
|
||||||
uint8_t len;
|
uint8_t len;
|
||||||
int oid;
|
|
||||||
|
|
||||||
if (!auth_data->len)
|
if (!auth_data->len)
|
||||||
{
|
{
|
||||||
@ -73,27 +71,9 @@ static bool parse_signature_auth_data(chunk_t *auth_data, key_type_t *key_type,
|
|||||||
}
|
}
|
||||||
len = auth_data->ptr[0];
|
len = auth_data->ptr[0];
|
||||||
*auth_data = chunk_skip(*auth_data, 1);
|
*auth_data = chunk_skip(*auth_data, 1);
|
||||||
oid = asn1_parse_algorithmIdentifier(*auth_data, 1, ¶meters);
|
if (!signature_params_parse(*auth_data, 1, params))
|
||||||
params->scheme = signature_scheme_from_oid(oid);
|
|
||||||
switch (params->scheme)
|
|
||||||
{
|
{
|
||||||
case SIGN_UNKNOWN:
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
case SIGN_RSA_EMSA_PSS:
|
|
||||||
{
|
|
||||||
rsa_pss_params_t *pss = malloc_thing(rsa_pss_params_t);
|
|
||||||
|
|
||||||
if (!rsa_pss_params_parse(parameters, 0, pss))
|
|
||||||
{
|
|
||||||
DBG1(DBG_IKE, "failed parsing RSASSA-PSS parameters");
|
|
||||||
free(pss);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
params->params = pss;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
*key_type = key_type_from_signature_scheme(params->scheme);
|
*key_type = key_type_from_signature_scheme(params->scheme);
|
||||||
*auth_data = chunk_skip(*auth_data, len);
|
*auth_data = chunk_skip(*auth_data, len);
|
||||||
@ -106,30 +86,14 @@ static bool parse_signature_auth_data(chunk_t *auth_data, key_type_t *key_type,
|
|||||||
static bool build_signature_auth_data(chunk_t *auth_data,
|
static bool build_signature_auth_data(chunk_t *auth_data,
|
||||||
signature_params_t *params)
|
signature_params_t *params)
|
||||||
{
|
{
|
||||||
chunk_t data, parameters = chunk_empty;
|
chunk_t data;
|
||||||
uint8_t len;
|
uint8_t len;
|
||||||
int oid;
|
|
||||||
|
|
||||||
oid = signature_scheme_to_oid(params->scheme);
|
if (!signature_params_build(params, &data))
|
||||||
if (oid == OID_UNKNOWN)
|
|
||||||
{
|
{
|
||||||
chunk_free(auth_data);
|
chunk_free(auth_data);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (params->scheme == SIGN_RSA_EMSA_PSS &&
|
|
||||||
!rsa_pss_params_build(params->params, ¶meters))
|
|
||||||
{
|
|
||||||
chunk_free(auth_data);
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
if (parameters.len)
|
|
||||||
{
|
|
||||||
data = asn1_algorithmIdentifier_params(oid, parameters);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
data = asn1_algorithmIdentifier(oid);
|
|
||||||
}
|
|
||||||
len = data.len;
|
len = data.len;
|
||||||
*auth_data = chunk_cat("cmm", chunk_from_thing(len), data, *auth_data);
|
*auth_data = chunk_cat("cmm", chunk_from_thing(len), data, *auth_data);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user