mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-09 09:34:57 +09:00
LibWeb: Decode X25519 keys as base64url + throw on bogus key data
This makes the X25519 importKey tests from WPT actually run.
This commit is contained in:
parent
e0def9d745
commit
8cb371b2ce
Notes:
github-actions[bot]
2024-11-24 22:29:50 +00:00
Author: https://github.com/awesomekling
Commit: 8cb371b2ce
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2555
Reviewed-by: https://github.com/alimpfard ✅
Reviewed-by: https://github.com/gmta ✅
Reviewed-by: https://github.com/stelar7
3 changed files with 310 additions and 2 deletions
|
@ -3188,7 +3188,11 @@ WebIDL::ExceptionOr<GC::Ref<CryptoKey>> X25519::import_key([[maybe_unused]] Web:
|
|||
|
||||
// 2. Let key be a new CryptoKey object that represents the X25519 private key identified by interpreting jwk according to Section 2 of [RFC8037].
|
||||
auto private_key_base_64 = jwk.d.value();
|
||||
auto private_key = TRY_OR_THROW_OOM(vm, decode_base64(private_key_base_64));
|
||||
auto private_key_or_error = decode_base64url(private_key_base_64);
|
||||
if (private_key_or_error.is_error()) {
|
||||
return WebIDL::DataError::create(m_realm, "Failed to decode base64"_string);
|
||||
}
|
||||
auto private_key = private_key_or_error.release_value();
|
||||
key = CryptoKey::create(m_realm, CryptoKey::InternalKeyData { private_key });
|
||||
|
||||
// 3. Set the [[type]] internal slot of Key to "private".
|
||||
|
@ -3217,7 +3221,11 @@ WebIDL::ExceptionOr<GC::Ref<CryptoKey>> X25519::import_key([[maybe_unused]] Web:
|
|||
|
||||
// 2. Let key be a new CryptoKey object that represents the X25519 public key identified by interpreting jwk according to Section 2 of [RFC8037].
|
||||
auto public_key_base_64 = jwk.x.value();
|
||||
auto public_key = TRY_OR_THROW_OOM(vm, decode_base64(public_key_base_64));
|
||||
auto public_key_or_error = decode_base64url(public_key_base_64);
|
||||
if (public_key_or_error.is_error()) {
|
||||
return WebIDL::DataError::create(m_realm, "Failed to decode base64"_string);
|
||||
}
|
||||
auto public_key = public_key_or_error.release_value();
|
||||
key = CryptoKey::create(m_realm, CryptoKey::InternalKeyData { public_key });
|
||||
|
||||
// 3. Set the [[type]] internal slot of Key to "public".
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
Summary
|
||||
|
||||
Harness status: OK
|
||||
|
||||
Rerun
|
||||
|
||||
Found 54 tests
|
||||
|
||||
24 Pass
|
||||
30 Fail
|
||||
Details
|
||||
Result Test Name MessageFail Good parameters: X25519 bits (spki, buffer(44), {name: X25519}, true, [])
|
||||
Fail Good parameters: X25519 bits (spki, buffer(44), X25519, true, [])
|
||||
Fail Good parameters: X25519 bits (jwk, object(kty, crv, x), {name: X25519}, true, [])
|
||||
Fail Good parameters: X25519 bits (jwk, object(kty, crv, x), X25519, true, [])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(kty, crv, x), {name: X25519}, true, [])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(kty, crv, x), X25519, true, [])
|
||||
Pass Good parameters: X25519 bits (raw, buffer(32), {name: X25519}, true, [])
|
||||
Pass Good parameters: X25519 bits (raw, buffer(32), X25519, true, [])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveKey])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), X25519, true, [deriveKey])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, true, [deriveKey])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), X25519, true, [deriveKey])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), X25519, true, [deriveBits, deriveKey])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, true, [deriveBits, deriveKey])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), X25519, true, [deriveBits, deriveKey])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveBits])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), X25519, true, [deriveBits])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, true, [deriveBits])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), X25519, true, [deriveBits])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Good parameters: X25519 bits (pkcs8, buffer(48), X25519, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Good parameters with ignored JWK alg: X25519 (jwk, object(crv, d, x, kty), X25519, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Good parameters: X25519 bits (spki, buffer(44), {name: X25519}, false, [])
|
||||
Pass Good parameters: X25519 bits (spki, buffer(44), X25519, false, [])
|
||||
Pass Good parameters: X25519 bits (jwk, object(kty, crv, x), {name: X25519}, false, [])
|
||||
Pass Good parameters: X25519 bits (jwk, object(kty, crv, x), X25519, false, [])
|
||||
Pass Good parameters: X25519 bits (raw, buffer(32), {name: X25519}, false, [])
|
||||
Pass Good parameters: X25519 bits (raw, buffer(32), X25519, false, [])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveKey])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), X25519, false, [deriveKey])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveKey])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, false, [deriveKey])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveBits, deriveKey])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), X25519, false, [deriveBits, deriveKey])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveBits, deriveKey])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, false, [deriveBits, deriveKey])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveBits])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), X25519, false, [deriveBits])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveBits])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, false, [deriveBits])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Good parameters: X25519 bits (pkcs8, buffer(48), X25519, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Good parameters: X25519 bits (jwk, object(crv, d, x, kty), X25519, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
|
@ -0,0 +1,235 @@
|
|||
Summary
|
||||
|
||||
Harness status: OK
|
||||
|
||||
Rerun
|
||||
|
||||
Found 224 tests
|
||||
|
||||
208 Pass
|
||||
16 Fail
|
||||
Details
|
||||
Result Test Name MessagePass Bad usages: importKey(spki, {name: X25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [sign])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [sign])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [verify])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [verify])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(spki, {name: X25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, sign])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [sign])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [sign])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [verify])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [verify])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: X25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, sign])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [verify])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [verify])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: X25519}, false, [deriveBits])
|
||||
Pass Empty usages: importKey(pkcs8, {name: X25519}, true, [])
|
||||
Pass Empty usages: importKey(pkcs8, {name: X25519}, false, [])
|
||||
Pass Empty usages: importKey(jwk(private), {name: X25519}, true, [])
|
||||
Pass Empty usages: importKey(jwk(private), {name: X25519}, false, [])
|
||||
Pass Bad key length: importKey(spki, {name: X25519}, true, [])
|
||||
Pass Bad key length: importKey(spki, {name: X25519}, false, [])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, true, [deriveKey])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, false, [deriveKey])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, false, [deriveBits, deriveKey])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, true, [deriveBits])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, false, [deriveBits])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Bad key length: importKey(pkcs8, {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Bad key length: importKey(raw, {name: X25519}, true, [])
|
||||
Fail Bad key length: importKey(raw, {name: X25519}, false, [])
|
||||
Fail Bad key length: importKey(jwk (public) , {name: X25519}, true, [])
|
||||
Fail Bad key length: importKey(jwk (public) , {name: X25519}, false, [])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveBits])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveBits])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Fail Bad key length: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits, deriveKey])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, true, [deriveBits])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, false, [deriveBits])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: X25519}, false, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Missing JWK 'crv' parameter: importKey(jwk (public) , {name: X25519}, true, [])
|
||||
Pass Missing JWK 'crv' parameter: importKey(jwk (public) , {name: X25519}, false, [])
|
||||
Fail Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey])
|
||||
Fail Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits, deriveKey])
|
||||
Fail Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveBits])
|
||||
Fail Invalid key pair: importKey(jwk(private), {name: X25519}, true, [deriveKey, deriveBits, deriveKey, deriveBits])
|
||||
Pass Missing algorithm name: importKey(pkcs8, {}, true, deriveKey)
|
||||
Pass Missing algorithm name: importKey(pkcs8, {}, false, deriveKey)
|
||||
Pass Missing algorithm name: importKey(pkcs8, {}, true, deriveBits)
|
||||
Pass Missing algorithm name: importKey(pkcs8, {}, false, deriveBits)
|
||||
Pass Missing algorithm name: importKey(jwk(private), {}, true, deriveKey)
|
||||
Pass Missing algorithm name: importKey(jwk(private), {}, false, deriveKey)
|
||||
Pass Missing algorithm name: importKey(jwk(private), {}, true, deriveBits)
|
||||
Pass Missing algorithm name: importKey(jwk(private), {}, false, deriveBits)
|
Loading…
Add table
Add a link
Reference in a new issue