pkcs11: Register ECDSA feature.
authorTobias Brunner <tobias@strongswan.org>
Wed, 2 Nov 2011 18:24:57 +0000 (19:24 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 2 Nov 2011 19:27:55 +0000 (20:27 +0100)
src/libstrongswan/plugins/pkcs11/pkcs11_plugin.c

index 554e07f..fc085e6 100644 (file)
@@ -219,6 +219,11 @@ METHOD(plugin_t, get_features, int,
                        PLUGIN_PROVIDE(DH, ECP_384_BIT),
                        PLUGIN_PROVIDE(DH, ECP_521_BIT),
        };
+       static plugin_feature_t f_ecdsa[] = {
+               /* *_connect is already registered for KEY_ANY */
+               PLUGIN_REGISTER(PUBKEY, pkcs11_public_key_load, TRUE),
+                       PLUGIN_PROVIDE(PUBKEY, KEY_ECDSA),
+       };
        static plugin_feature_t f_manager[] = {
                PLUGIN_CALLBACK((plugin_feature_callback_t)handle_certs, NULL),
                        PLUGIN_PROVIDE(CUSTOM, "pkcs11-certs"),
@@ -226,7 +231,7 @@ METHOD(plugin_t, get_features, int,
        };
        static plugin_feature_t f[countof(f_hash) + countof(f_dh) + countof(f_rng) +
                                                          countof(f_key) + countof(f_ecdh) +
-                                                         countof(f_manager)] = {};
+                                                         countof(f_ecdsa) + countof(f_manager)] = {};
        static int count = 0;
 
        if (!count)
@@ -254,6 +259,10 @@ METHOD(plugin_t, get_features, int,
                                add_features(f, f_ecdh, countof(f_ecdh), &count);
                        }
                }
+               if (use_ecc)
+               {
+                       add_features(f, f_ecdsa, countof(f_ecdsa), &count);
+               }
        }
        *features = f;
        return count;