From 833a7cbc508b6ef46a8196fdfb1e185d0fc38ae0 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Wed, 20 Sep 2006 05:48:27 +0000 Subject: [PATCH] support of encrypted private key files --- .../credentials/local_credential_store.c | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/charon/config/credentials/local_credential_store.c b/src/charon/config/credentials/local_credential_store.c index 895743f92..db29472eb 100644 --- a/src/charon/config/credentials/local_credential_store.c +++ b/src/charon/config/credentials/local_credential_store.c @@ -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);