]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
pkcs11: fix passing of incorrect variable in privkey_get_pubkey
authorJan Vcelak <jan.vcelak@nic.cz>
Sat, 5 Dec 2015 23:46:39 +0000 (00:46 +0100)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sun, 6 Dec 2015 09:30:40 +0000 (10:30 +0100)
The code worked for RSA because the content of the variables matched.
But it doesn't match for ECC.

CKM_RSA_PKCS_KEY_PAIR_GEN (0x0) == CKK_RSA (0x0)
CKM_ECDSA_KEY_PAIR_GEN (0x1040) != CKK_ECDSA (0x3)

Signed-off-by: Jan Vcelak <jan.vcelak@nic.cz>
lib/pkcs11_privkey.c

index 2b4179b75e4e7d3c4e2ed9df6b3fc3a319fc8982..1785bbfc552d347a3731a17d9e5f0b2f8a54ec0e 100644 (file)
@@ -1022,7 +1022,7 @@ _pkcs11_privkey_get_pubkey (gnutls_pkcs11_privkey_t pkey, gnutls_pubkey_t *pub,
        obj->pk_algorithm = gnutls_pkcs11_privkey_get_pk_algorithm(pkey, 0);
        obj->type = GNUTLS_PKCS11_OBJ_PUBKEY;
        mech.mechanism = pk_to_genmech(obj->pk_algorithm, &key_type);
-       ret = pkcs11_read_pubkey(pkey->sinfo.module, pkey->sinfo.pks, pkey->ref, mech.mechanism, obj->pubkey);
+       ret = pkcs11_read_pubkey(pkey->sinfo.module, pkey->sinfo.pks, pkey->ref, key_type, obj->pubkey);
        if (ret < 0) {
                gnutls_assert();
                goto cleanup;