summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilip Skokan <panva.ip@gmail.com>2022-10-15 07:23:35 +0200
committerGitHub <noreply@github.com>2022-10-15 10:53:35 +0530
commit225d516466a37a3695e051ca29456e424cb99aa2 (patch)
tree0ea582b946264f45bd778a406a98e7c207635343
parente7d7585065a70ea388bfccce3681671d25f737b4 (diff)
fix(ext/crypto): correct HMAC get key length op (#16201)
fixes #16180 `HMAC`'s `get key length` `op` uses the hash function's block size, not output size. refs https://github.com/cloudflare/workerd/issues/68#issuecomment-1271189657
-rw-r--r--cli/tests/unit/webcrypto_test.ts2
-rw-r--r--ext/crypto/00_crypto.js8
2 files changed, 5 insertions, 5 deletions
diff --git a/cli/tests/unit/webcrypto_test.ts b/cli/tests/unit/webcrypto_test.ts
index 48d7012db..13fb2d3f7 100644
--- a/cli/tests/unit/webcrypto_test.ts
+++ b/cli/tests/unit/webcrypto_test.ts
@@ -675,7 +675,7 @@ Deno.test(async function testDeriveKey() {
const algorithm = derivedKey.algorithm as HmacKeyAlgorithm;
assertEquals(algorithm.name, "HMAC");
assertEquals(algorithm.hash.name, "SHA-256");
- assertEquals(algorithm.length, 256);
+ assertEquals(algorithm.length, 512);
});
Deno.test(async function testAesCbcEncryptDecrypt() {
diff --git a/ext/crypto/00_crypto.js b/ext/crypto/00_crypto.js
index 7b21c9287..857283623 100644
--- a/ext/crypto/00_crypto.js
+++ b/ext/crypto/00_crypto.js
@@ -393,16 +393,16 @@
if (algorithm.length === undefined) {
switch (algorithm.hash.name) {
case "SHA-1":
- length = 160;
+ length = 512;
break;
case "SHA-256":
- length = 256;
+ length = 512;
break;
case "SHA-384":
- length = 384;
+ length = 1024;
break;
case "SHA-512":
- length = 512;
+ length = 1024;
break;
default:
throw new DOMException(