support of encrypted private key files

This commit is contained in:
Andreas Steffen
2006-09-20 05:48:27 +00:00
parent b5cac6684d
commit 833a7cbc50
@@ -1011,6 +1011,11 @@ static void load_secrets(private_local_credential_store_t *this)
{
char path[PATH_BUF];
chunk_t filename;
char buf[BUF_LEN];
chunk_t secret = { buf, BUF_LEN };
chunk_t *passphrase = NULL;
rsa_private_key_t *key;
err_t ugh = extract_value(&filename, &line);
@@ -1038,7 +1043,20 @@ static void load_secrets(private_local_credential_store_t *this)
filename.len, filename.ptr);
}
key = rsa_private_key_create_from_file(path, NULL);
/* check for optional passphrase */
if (eat_whitespace(&line))
{
ugh = extract_secret(&secret, &line);
if (ugh != NULL)
{
this->logger->log(this->logger, ERROR,
"line %d: malformed passphrase: %s", line_nr, ugh);
goto error;
}
if (secret.len > 0)
passphrase = &secret;
}
key = rsa_private_key_create_from_file(path, passphrase);
if (key)
{
this->private_keys->insert_last(this->private_keys, (void*)key);