diff options
Diffstat (limited to 'src/libstrongswan/plugins/pkcs8')
-rw-r--r-- | src/libstrongswan/plugins/pkcs8/Makefile.in | 2 | ||||
-rw-r--r-- | src/libstrongswan/plugins/pkcs8/pkcs8_builder.c | 15 | ||||
-rw-r--r-- | src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c | 2 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/libstrongswan/plugins/pkcs8/Makefile.in b/src/libstrongswan/plugins/pkcs8/Makefile.in index 3d27d61f1..475de08fb 100644 --- a/src/libstrongswan/plugins/pkcs8/Makefile.in +++ b/src/libstrongswan/plugins/pkcs8/Makefile.in @@ -358,7 +358,6 @@ exec_prefix = @exec_prefix@ fips_mode = @fips_mode@ gtk_CFLAGS = @gtk_CFLAGS@ gtk_LIBS = @gtk_LIBS@ -h_plugins = @h_plugins@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -393,6 +392,7 @@ nm_LIBS = @nm_LIBS@ nm_ca_dir = @nm_ca_dir@ nm_plugins = @nm_plugins@ oldincludedir = @oldincludedir@ +p_plugins = @p_plugins@ pcsclite_CFLAGS = @pcsclite_CFLAGS@ pcsclite_LIBS = @pcsclite_LIBS@ pdfdir = @pdfdir@ diff --git a/src/libstrongswan/plugins/pkcs8/pkcs8_builder.c b/src/libstrongswan/plugins/pkcs8/pkcs8_builder.c index e93a8361c..beb8866f8 100644 --- a/src/libstrongswan/plugins/pkcs8/pkcs8_builder.c +++ b/src/libstrongswan/plugins/pkcs8/pkcs8_builder.c @@ -47,6 +47,7 @@ static private_key_t *parse_private_key(chunk_t blob) int objectID; private_key_t *key = NULL; key_type_t type = KEY_ANY; + builder_part_t part = BUILD_BLOB_ASN1_DER; parser = asn1_parser_create(pkinfoObjects, blob); parser->set_flags(parser, FALSE, TRUE); @@ -68,6 +69,14 @@ static private_key_t *parse_private_key(chunk_t blob) case OID_EC_PUBLICKEY: type = KEY_ECDSA; break; + case OID_ED25519: + type = KEY_ED25519; + part = BUILD_EDDSA_PRIV_ASN1_DER; + break; + case OID_ED448: + type = KEY_ED448; + part = BUILD_EDDSA_PRIV_ASN1_DER; + break; default: /* key type not supported */ goto end; @@ -81,14 +90,12 @@ static private_key_t *parse_private_key(chunk_t blob) { key = lib->creds->create(lib->creds, CRED_PRIVATE_KEY, type, BUILD_BLOB_ALGID_PARAMS, - params, BUILD_BLOB_ASN1_DER, - object, BUILD_END); + params, part, object, BUILD_END); } else { key = lib->creds->create(lib->creds, CRED_PRIVATE_KEY, - type, BUILD_BLOB_ASN1_DER, object, - BUILD_END); + type, part, object, BUILD_END); } DBG2(DBG_ASN, "-- < --"); break; diff --git a/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c b/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c index 129fbb045..fcd8f119e 100644 --- a/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c +++ b/src/libstrongswan/plugins/pkcs8/pkcs8_plugin.c @@ -46,6 +46,8 @@ METHOD(plugin_t, get_features, int, PLUGIN_PROVIDE(PRIVKEY, KEY_ANY), PLUGIN_PROVIDE(PRIVKEY, KEY_RSA), PLUGIN_PROVIDE(PRIVKEY, KEY_ECDSA), + PLUGIN_PROVIDE(PRIVKEY, KEY_ED25519), + PLUGIN_PROVIDE(PRIVKEY, KEY_ED448), }; *features = f; return countof(f); |