mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-25 17:10:23 +00:00
LibWeb: Correctly set the key_usages on HMAC export
This commit is contained in:
parent
1c77135948
commit
19ee8ddec2
Notes:
github-actions[bot]
2024-11-14 18:49:14 +00:00
Author: https://github.com/stelar7 Commit: https://github.com/LadybirdBrowser/ladybird/commit/19ee8ddec25 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2339 Reviewed-by: https://github.com/gmta
3 changed files with 27 additions and 11 deletions
|
@ -3589,8 +3589,6 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<CryptoKey>> HMAC::import_key(Web::Crypto::A
|
|||
// https://w3c.github.io/webcrypto/#hmac-operations
|
||||
WebIDL::ExceptionOr<JS::NonnullGCPtr<JS::Object>> HMAC::export_key(Bindings::KeyFormat format, JS::NonnullGCPtr<CryptoKey> key)
|
||||
{
|
||||
auto& vm = m_realm->vm();
|
||||
|
||||
// 1. If the underlying cryptographic key material represented by the [[handle]] internal slot
|
||||
// of key cannot be accessed, then throw an OperationError.
|
||||
// NOTE: In our impl this is always accessible
|
||||
|
@ -3657,15 +3655,10 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<JS::Object>> HMAC::export_key(Bindings::Key
|
|||
}
|
||||
|
||||
// Set the key_ops attribute of jwk to equal the usages attribute of key.
|
||||
auto key_usages = verify_cast<JS::Array>(key->usages());
|
||||
auto key_usages_length = MUST(MUST(key_usages->get(vm.names.length)).to_length(vm));
|
||||
for (auto i = 0u; i < key_usages_length; ++i) {
|
||||
auto usage = key_usages->get(i);
|
||||
if (!usage.has_value())
|
||||
break;
|
||||
|
||||
auto usage_string = TRY(usage.value().to_string(vm));
|
||||
jwk.key_ops->append(usage_string);
|
||||
jwk.key_ops = Vector<String> {};
|
||||
jwk.key_ops->ensure_capacity(key->internal_usages().size());
|
||||
for (auto const& usage : key->internal_usages()) {
|
||||
jwk.key_ops->append(Bindings::idl_enum_to_string(usage));
|
||||
}
|
||||
|
||||
// Set the ext attribute of jwk to equal the [[extractable]] internal slot of key.
|
||||
|
|
1
Tests/LibWeb/Text/expected/Crypto/SubtleCrypto-hmac.txt
Normal file
1
Tests/LibWeb/Text/expected/Crypto/SubtleCrypto-hmac.txt
Normal file
|
@ -0,0 +1 @@
|
|||
Does not crash.
|
22
Tests/LibWeb/Text/input/Crypto/SubtleCrypto-hmac.html
Normal file
22
Tests/LibWeb/Text/input/Crypto/SubtleCrypto-hmac.html
Normal file
|
@ -0,0 +1,22 @@
|
|||
<script src="../include.js"></script>
|
||||
<script>
|
||||
asyncTest(async done => {
|
||||
await crypto.subtle.exportKey(
|
||||
"jwk",
|
||||
await crypto.subtle.generateKey(
|
||||
{
|
||||
name: "HMAC",
|
||||
hash: {
|
||||
name: "SHA-512",
|
||||
},
|
||||
},
|
||||
!0,
|
||||
["sign", "verify"]
|
||||
)
|
||||
);
|
||||
|
||||
println("Does not crash.");
|
||||
|
||||
done();
|
||||
});
|
||||
</script>
|
Loading…
Reference in a new issue