Bug 1158296 - Allow ECDSA key export in WebCrypto, r=rbarnes

--HG--
extra : rebase_source : 40b14fe47652045c063ac40974147b5bfcc91630
This commit is contained in:
Martin Thomson 2015-04-24 12:56:46 -07:00
parent 903081acfe
commit 4c2b709af0
3 changed files with 24 additions and 3 deletions

View File

@ -2992,6 +2992,7 @@ WebCryptoTask::CreateExportKeyTask(const nsAString& aFormat,
algName.EqualsLiteral(WEBCRYPTO_ALG_HMAC) ||
algName.EqualsLiteral(WEBCRYPTO_ALG_RSASSA_PKCS1) ||
algName.EqualsLiteral(WEBCRYPTO_ALG_RSA_OAEP) ||
algName.EqualsLiteral(WEBCRYPTO_ALG_ECDSA) ||
algName.EqualsLiteral(WEBCRYPTO_ALG_ECDH) ||
algName.EqualsLiteral(WEBCRYPTO_ALG_DH)) {
return new ExportKeyTask(aFormat, aKey);

View File

@ -10,6 +10,7 @@ support-files =
[test_WebCrypto.html]
[test_WebCrypto_DH.html]
[test_WebCrypto_ECDH.html]
[test_WebCrypto_ECDSA.html]
[test_WebCrypto_JWK.html]
[test_WebCrypto_Normalize.html]
[test_WebCrypto_PBKDF2.html]

View File

@ -67,6 +67,25 @@ TestArray.addTest(
}
);
// -----------------------------------------------------------------------------
TestArray.addTest(
"ECDSA key generation with public key export",
function() {
var that = this;
var alg = { name: "ECDSA", namedCurve: "P-256", hash: "SHA-256" };
var msg = Uint8Array.from([1]);
crypto.subtle.generateKey(alg, false, ["sign", "verify"])
.then(pair => Promise.all([
crypto.subtle.sign(alg, pair.privateKey, msg),
crypto.subtle.exportKey("spki", pair.publicKey)
.then(spki => crypto.subtle.importKey("spki", spki, alg, false, ["verify"]))
]))
.then(sigAndKey => crypto.subtle.verify(alg, sigAndKey[1], sigAndKey[0], msg))
.then(complete(that), error(that))
}
);
// -----------------------------------------------------------------------------
TestArray.addTest(
"ECDSA JWK import and reject a known-bad signature",
@ -131,9 +150,9 @@ TestArray.addTest(
<body>
<div id="content">
<div id="head">
<b>Web</b>Crypto<br>
</div>
<div id="head">
<b>Web</b>Crypto<br>
</div>
<div id="start" onclick="start();">RUN ALL</div>