Ben Wiederhake
3553861046
LibWeb: Omit padding in WebCrypto AES-CBC exportKey
2024-10-28 21:15:59 +01:00
Ben Wiederhake
4a6ce210b0
LibWeb: Refuse to fill float array with random values
...
This passes an additional test in WPT:
WebCryptoAPI/getRandomValues.any
2024-10-28 10:42:27 +01:00
stelar7
37f2818e90
LibWeb: Fix modulus length being wrong for RSA-OAEP key import
2024-10-27 11:26:12 +01:00
stelar7
23fc04d264
LibWeb: Implement RSAOAEP.decrypt()
2024-10-27 11:26:12 +01:00
stelar7
3b423f1852
LibWeb: Add and use new name() helper on HashAlgorithmIdentifier
2024-10-27 11:26:12 +01:00
stelar7
48bd094712
LibWeb: Implement RSAOAEP.encrypt()
2024-10-27 11:26:12 +01:00
Ben Wiederhake
b1056121f2
LibWeb: Implement WebCrypto AES-CBC decrypt operation
...
This lets us pass an additional (roughly) 15 WPT tests:
WebCryptoAPI/encrypt_decrypt/aes_cbc.https.any
2024-10-26 17:50:22 +02:00
Ben Wiederhake
eb193251b8
LibWeb: Implement WebCrypto AES-CBC encrypt operation
...
This lets us pass an additional (roughly) 20 WPT tests:
WebCryptoAPI/encrypt_decrypt/aes_cbc.https.any
2024-10-26 17:50:22 +02:00
Ben Wiederhake
d86dcac4f7
LibWeb: Implement WebCrypto AES-CBC generateKey operation
...
This is progress towards passing more WPT tests, although none of them
gets green due to this commit.
2024-10-26 17:50:22 +02:00
Ben Wiederhake
9255a1ac2e
LibWeb: Implement WebCrypto AES-CBC exportKey operation
...
This lets us pass an additional (roughly) 40 WPT tests:
WebCryptoAPI/import_export/symmetric_importKey.https.any
2024-10-26 17:50:22 +02:00
Ben Wiederhake
6f88376e24
LibWeb: Implement WebCrypto AES-CBC importKey operation
...
This alone lets us pass around 40 WPT tests:
WebCryptoAPI/import_export/symmetric_importKey.https.any
2024-10-26 17:50:22 +02:00
Ben Wiederhake
124bd115a1
LibWeb: Fix crash when importing malformed RSAOAEP key
...
This fixes a crash in WPT:
WebCryptoAPI/import_export/rsa_importKey.https.any
This allows us to pass 240 tests!
2024-10-26 00:14:42 +02:00
Ben Wiederhake
efad0b5676
LibWeb: Remove dead write in HKDF/PBKDF importKey operation
...
This corresponds to a recent change in the spec:
https://github.com/w3c/webcrypto/pull/379
2024-10-25 23:50:31 +02:00
Ben Wiederhake
ee3b86c3f8
LibWeb: Remove superfluous step in HKDF deriveBits operation
...
This corresponds to a recent change in the spec:
https://github.com/w3c/webcrypto/pull/372
Inspired by the following review comment:
https://github.com/LadybirdBrowser/ladybird/pull/1877#discussion_r1807648283
2024-10-25 23:50:31 +02:00
Andrew Kaster
2c3531ab78
LibWeb: Move JS::Promise <-> WebIDL conversion into IDL
...
This change also removes as much direct use of JS::Promise in LibWeb
as possible. When specs refer to `Promise<T>` they should be assumed
to be referring to the WebIDL Promise type, not the JS::Promise type.
The one exception is the HostPromiseRejectionTracker hook on the JS
VM. This facility and its associated sets and events are intended to
expose the exact opaque object handles that were rejected to author
code. This is not possible with the WebIDL Promise type, so we have
to use JS::Promise or JS::Object to hold onto the promises.
It also exposes which specs need some updates in the area of
promises. WebDriver stands out in this regard. WebAudio could use
some more cross-references to WebIDL as well to clarify things.
2024-10-25 14:04:21 -06:00
Ben Wiederhake
6d68d6ddb2
LibWeb: Test subtleties in HKDF 'salt' interpretation
...
This also doubles as HKDF implementation test.
2024-10-23 11:33:58 -06:00
Ben Wiederhake
f670c68ded
LibWeb: Implement and test SubtleCrypto interface for HKDF operations
...
This fixes several hundred if not thousands of WPT tests:
https://wpt.live/WebCryptoAPI/derive_bits_keys/hkdf.https.any.html?1-1000
2024-10-23 11:33:58 -06:00
Ben Wiederhake
6072ae5bae
LibWeb: Simplify WebCrypto accesses to keys
2024-10-23 11:33:58 -06:00
Andreas Kling
175f3febb8
LibWeb: Make DOMException take error message as a String
...
There was no need to use FlyString for error messages, and it just
caused a bunch of churn since these strings typically only existed
during the lifetime of the error.
2024-10-12 21:14:18 +02:00
Asutosh Variar
229b64a4b7
Everywhere: Convert from_string_view -> from_string_literal where static
2024-09-11 10:59:04 +01:00
sideshowbarker
51528ec677
LibWeb: Normalize all WebIDL definition lines to four leading spaces
...
This change takes all existing WebIDL files in the repo that had
definition lines without four leading spaces, and fixes them so they
have four leading spaces.
2024-09-10 21:16:53 +01:00
Dennis Camera
90a2dcfde1
LibWeb: Implement KeyAlgorithms for big-endian
2024-07-10 10:23:26 -06:00
Dennis Camera
81a0aa5725
LibWeb: Implement CryptoAlgorithms for big-endian
2024-07-10 10:23:26 -06:00
Matthew Olsson
9ea6ab0ad4
LibJS+LibWeb: Fix a ton of JS_CELL-like macro issues
2024-05-30 09:29:20 -06:00
Shannon Booth
4fe0cbcf85
LibWeb: Use 'FIXME' extended attribute where possible
...
This improves the debuggability of many live web pages :^)
2024-05-19 16:24:11 +02:00
Shannon Booth
bad44f8fc9
LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h
...
This was resulting in a whole lot of rebuilding whenever a new IDL
interface was added.
Instead, just directly include the prototype in every C++ file which
needs it. While we only really need a forward declaration in each cpp
file; including the full prototype header (which itself only includes
LibJS/Object.h, which is already transitively brought in by
PlatformObject) - it seems like a small price to pay compared to what
feels like a full rebuild of LibWeb whenever a new IDL file is added.
Given all of these includes are only needed for the ::initialize
method, there is probably a smart way of avoiding this problem
altogether. I've considered both using some macro trickery or generating
these functions somehow instead.
2024-04-27 18:29:35 -04:00
Matthew Olsson
aac873fcec
LibWeb: Fix a few "missing visit_edges" warnings from the GC verifier
2024-04-07 07:03:13 +02:00
Matthew Olsson
8450041b52
LibWeb: Fix some GCVerifier warnings
2024-04-07 07:03:13 +02:00
stelar7
7c7f01b82f
LibWeb: Add RSAOAEP.exportKey for the pkcs8 format
2024-04-05 21:53:12 +02:00
stelar7
f9dd028119
LibWeb: Add RSAOAEP.exportKey for the spki format
2024-04-05 21:53:12 +02:00
stelar7
9f3c3925e0
LibWeb: Implement skeleton of SubtleCrypto.deriveKey
2024-04-04 21:00:40 +02:00
stelar7
abf55fe33d
LibWeb: Implement PBKDF2 getKeyLength for SubtleCrypto
2024-04-04 21:00:40 +02:00
stelar7
19bb62d60e
LibWeb: Implement PBKDF2 deriveBits for SubtleCrypto
2024-04-04 21:00:40 +02:00
stelar7
daf2c4ce46
LibWeb: Implement skeleton of SubtleCrypto.deriveBits
2024-04-04 21:00:40 +02:00
stelar7
35676491ec
LibWeb: Implement ED25519 verify for SubtleCrypto
2024-04-03 13:10:01 -06:00
stelar7
9ad10566b2
LibWeb: Implement ED25519 sign for SubtleCrypto
2024-04-03 13:10:01 -06:00
stelar7
ec015034bd
LibWeb: Implement ED25519 generateKey for SubtleCrypto
2024-04-03 13:10:01 -06:00
stelar7
069295d132
LibWeb: Improve NotSupported error message for normalize_an_algorithm
2024-04-03 13:10:01 -06:00
stelar7
ae230c9150
LibWeb: Implement most of ECDSA verify for SubtleCrypto
2024-04-03 13:10:01 -06:00
stelar7
6906b7c1e6
LibWeb: Implement skeleton of SubtleCrypto.verify
2024-04-03 13:10:01 -06:00
stelar7
bc2a5e24bc
LibWeb: Implement skeleton of ECDSA sign for SubtleCrypto
2024-04-03 13:10:01 -06:00
stelar7
41449814db
LibWeb: Implement generateKey for ECDSA
2024-04-03 13:10:01 -06:00
stelar7
cfae6523be
LibWeb: Implement skeleton of SubtleCrypto.sign
2024-04-03 13:10:01 -06:00
Andrew Kaster
cddbdf5ae9
LibWeb: Implement skeleton of RSA-OAEP decrypt for SubtleCrypto
...
The actual Crypto algorithm part isn't implemented yet, so we just copy
the ciphertext and claim that's the plaintext :^)
2024-03-25 17:01:23 -06:00
Andrew Kaster
29b68a1b10
LibWeb: Implement skeleton of RSA-OAEP encrypt for SubtleCrypto
...
The actual Crypto algorithm part isn't implemented yet, so we just copy
the plaintext and claim that's the ciphertext :^)
2024-03-25 17:01:23 -06:00
Andrew Kaster
d71bd185c6
LibWeb: Implement skeleton of SubtleCrypto.decrypt
2024-03-25 17:01:23 -06:00
Andrew Kaster
df3d0538a9
LibWeb: Implement skeleton of SubtleCrypto.encrypt
...
No algorithms implement this yet, but this is the high level entry
point.
2024-03-25 17:01:23 -06:00
Andrew Kaster
ae4d90c88a
LibWeb: Error out SubtleCrypto.digest with a OOM on Buffer copy error
...
Instead of returning a custom OperationError, let's just return a LibJS
defined OOM error instead.
2024-03-25 17:01:23 -06:00
Andrew Kaster
497f3ca0fd
LibWeb: Store PBKDF2Params' salt field as a ByteBuffer directly
...
Rather than trying to store a Handle to a WebIDL::BufferSource, let's
look ahead to what the spec wants us to do with this field and get a
copy of the bytes held by the buffer source right away.
2024-03-25 17:01:23 -06:00
Andrew Kaster
a0623a47de
LibWeb: Implement importKey for RSA-OAEP
2024-03-25 17:01:23 -06:00