Load raw keys before possibly destroying the identity
If no identity (or %any) is configured the identification_t object is destroyed and an invalid object was associated with the created pubkey certificate. Actually using %any does not work as the certificate would not match when the client later provides an identity.
This commit is contained in:
@@ -485,6 +485,17 @@ static auth_cfg_t *build_auth_cfg(private_stroke_config_t *this,
|
|||||||
identity = identity->clone(identity);
|
identity = identity->clone(identity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* add raw RSA public key */
|
||||||
|
pubkey = end->rsakey;
|
||||||
|
if (pubkey && !streq(pubkey, "") && !streq(pubkey, "%cert"))
|
||||||
|
{
|
||||||
|
certificate = this->cred->load_pubkey(this->cred, KEY_RSA, pubkey,
|
||||||
|
identity);
|
||||||
|
if (certificate)
|
||||||
|
{
|
||||||
|
cfg->add(cfg, AUTH_RULE_SUBJECT_CERT, certificate);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (identity->get_type(identity) != ID_ANY)
|
if (identity->get_type(identity) != ID_ANY)
|
||||||
{
|
{
|
||||||
cfg->add(cfg, AUTH_RULE_IDENTITY, identity);
|
cfg->add(cfg, AUTH_RULE_IDENTITY, identity);
|
||||||
@@ -498,18 +509,6 @@ static auth_cfg_t *build_auth_cfg(private_stroke_config_t *this,
|
|||||||
identity->destroy(identity);
|
identity->destroy(identity);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add raw RSA public key */
|
|
||||||
pubkey = end->rsakey;
|
|
||||||
if (pubkey && !streq(pubkey, "") && !streq(pubkey, "%cert"))
|
|
||||||
{
|
|
||||||
certificate = this->cred->load_pubkey(this->cred, KEY_RSA, pubkey,
|
|
||||||
identity);
|
|
||||||
if (certificate)
|
|
||||||
{
|
|
||||||
cfg->add(cfg, AUTH_RULE_SUBJECT_CERT, certificate);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CA constraint */
|
/* CA constraint */
|
||||||
if (ca)
|
if (ca)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user