Skip to content

Commit

Permalink
PBKDF2 allows zero length and returns and empty string
Browse files Browse the repository at this point in the history
This CL adapts our implementation to the spec change described in the
PR#380 [1]. Instead of trowing an OperationError exception, we allow now
zero as value for the 'length' parameter.

Given that the deriveBits operation must result in an empty string, this
change early returns to avoid the unnecessary computation of the bits
derivation.

The specific WTP defined for this case are modified in this CL as well,
so no additional test cases are needed.

[1] w3c/webcrypto#380

Bug: 376493194
Change-Id: If685c349a0a9d134a8e8f7c902e8aac342945226
  • Loading branch information
javifernandez authored and chromium-wpt-export-bot committed Nov 7, 2024
1 parent 1b37e8e commit 7669912
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ var testCases = {
{length: 256, expected: algorithms["HKDF"].derivation},
{length: 384, expected: algorithms["HKDF"].derivation384},
{length: 230, expected: undefined}, // should throw an exception, not multiple of 8
{length: 0, expected: undefined}, // explicitly disallowed, so should throw
{length: 0, expected: emptyArray},
{length: null, expected: undefined }, // should throw an exception
{length: undefined, expected: undefined }, // should throw an exception
{length: "omitted", expected: undefined }, // default value is null, so should throw
Expand All @@ -12,7 +12,7 @@ var testCases = {
{length: 256, expected: algorithms["PBKDF2"].derivation},
{length: 384, expected: algorithms["PBKDF2"].derivation384},
{length: 230, expected: undefined}, // should throw an exception, not multiple of 8
{length: 0, expected: undefined}, // explicitly disallowed, so should throw
{length: 0, expected: emptyArray},
{length: null, expected: undefined }, // should throw an exception
{length: undefined, expected: undefined }, // should throw an exception
{length: "omitted", expected: undefined }, // default value is null, so should throw
Expand Down
10 changes: 0 additions & 10 deletions WebCryptoAPI/derive_bits_keys/pbkdf2.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,6 @@ function define_tests() {

});

// 0 length (OperationError)
subsetTest(promise_test, function(test) {
return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 0)
.then(function(derivation) {
assert_unreached("0 length should have thrown an OperationError");
}, function(err) {
assert_equals(err.name, "OperationError", "deriveBits with 0 length correctly threw OperationError: " + err.message);
});
}, testName + " with 0 length");

// length not multiple of 8 (OperationError)
subsetTest(promise_test, function(test) {
return subtle.deriveBits({name: "PBKDF2", salt: salts[saltSize], hash: hashName, iterations: parseInt(iterations)}, baseKeys[passwordSize], 44)
Expand Down

0 comments on commit 7669912

Please sign in to comment.