summaryrefslogtreecommitdiff
path: root/lib/cryptohi
diff options
context:
space:
mode:
authorTim Taubert <ttaubert@mozilla.com>2017-02-02 15:50:56 +0100
committerTim Taubert <ttaubert@mozilla.com>2017-02-02 15:50:56 +0100
commit1aecb544bed7048844655e0f6328b51fbf00ca2b (patch)
tree6de688dd6e273c67e413f42b8ee2e6baa16f6f90 /lib/cryptohi
parente271322723ffb06cc0a1060389d399560db055eb (diff)
downloadnss-hg-1aecb544bed7048844655e0f6328b51fbf00ca2b.tar.gz
Bug 1295121 - Add the ability to load PKCS#8 ECDSA private keys r=franziskus
Differential Revision: https://nss-review.dev.mozaws.net/D185
Diffstat (limited to 'lib/cryptohi')
-rw-r--r--lib/cryptohi/seckey.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/cryptohi/seckey.c b/lib/cryptohi/seckey.c
index 1f053e583..df976f46c 100644
--- a/lib/cryptohi/seckey.c
+++ b/lib/cryptohi/seckey.c
@@ -1242,6 +1242,22 @@ SECKEY_ConvertToPublicKey(SECKEYPrivateKey *privk)
break;
return pubk;
break;
+ case ecKey:
+ rv = PK11_ReadAttribute(privk->pkcs11Slot, privk->pkcs11ID,
+ CKA_EC_PARAMS, arena, &pubk->u.ec.DEREncodedParams);
+ if (rv != SECSuccess) {
+ break;
+ }
+ rv = PK11_ReadAttribute(privk->pkcs11Slot, privk->pkcs11ID,
+ CKA_EC_POINT, arena, &pubk->u.ec.publicValue);
+ if (rv != SECSuccess || pubk->u.ec.publicValue.len == 0) {
+ break;
+ }
+ rv = seckey_SetPointEncoding(arena, pubk);
+ if (rv != SECSuccess) {
+ break;
+ }
+ return pubk;
default:
break;
}