LibWeb: Test subtleties in HKDF 'salt' interpretation

This also doubles as HKDF implementation test.
This commit is contained in:
Ben Wiederhake 2024-10-20 06:30:41 +02:00 committed by Andrew Kaster
commit 6d68d6ddb2
Notes: github-actions[bot] 2024-10-23 18:21:48 +00:00
3 changed files with 44 additions and 1 deletions

View file

@ -1467,7 +1467,10 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<JS::ArrayBuffer>> HKDF::derive_bits(Algorit
// * the contents of the salt member of normalizedAlgorithm as salt,
// * the contents of the info member of normalizedAlgorithm as info,
// * length divided by 8 as the value of L,
// FIXME: salt null versus salt empty?!
// Note: Although HKDF technically supports absent salt (treating it as hashLen many NUL bytes),
// all major browsers instead raise a TypeError, for example:
// "Failed to execute 'deriveBits' on 'SubtleCrypto': HkdfParams: salt: Not a BufferSource"
// Because we are forced by neither peer pressure nor the spec, we don't support it either.
auto const& hash_algorithm = TRY(normalized_algorithm.hash.visit(
[](String const& name) -> JS::ThrowCompletionOr<String> { return name; },
[&](JS::Handle<JS::Object> const& obj) -> JS::ThrowCompletionOr<String> {