mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 11:36:10 +00:00
LibWeb: Implement the importKey algorithm for Ed25519
This commit is contained in:
parent
8cb371b2ce
commit
4d25369f29
Notes:
github-actions[bot]
2024-11-24 22:29:42 +00:00
Author: https://github.com/awesomekling Commit: https://github.com/LadybirdBrowser/ladybird/commit/4d25369f296 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
6 changed files with 526 additions and 266 deletions
|
@ -37,7 +37,7 @@ constexpr static Array<int, 7>
|
|||
ed25519_oid { 1, 3, 101, 112 },
|
||||
ed448_oid { 1, 3, 101, 113 };
|
||||
|
||||
constexpr static Array<Array<int, 7>, 10> known_algorithm_identifiers {
|
||||
constexpr static Array<Array<int, 7>, 11> known_algorithm_identifiers {
|
||||
rsa_encryption_oid,
|
||||
rsa_md5_encryption_oid,
|
||||
rsa_sha1_encryption_oid,
|
||||
|
@ -47,7 +47,8 @@ constexpr static Array<Array<int, 7>, 10> known_algorithm_identifiers {
|
|||
ecdsa_with_sha256_encryption_oid,
|
||||
ecdsa_with_sha384_encryption_oid,
|
||||
ec_public_key_encryption_oid,
|
||||
x25519_oid
|
||||
x25519_oid,
|
||||
ed25519_oid,
|
||||
};
|
||||
|
||||
constexpr static Array<int, 7>
|
||||
|
|
|
@ -2693,6 +2693,263 @@ WebIDL::ExceptionOr<Variant<GC::Ref<CryptoKey>, GC::Ref<CryptoKeyPair>>> ED25519
|
|||
return Variant<GC::Ref<CryptoKey>, GC::Ref<CryptoKeyPair>> { CryptoKeyPair::create(m_realm, public_key, private_key) };
|
||||
}
|
||||
|
||||
// https://wicg.github.io/webcrypto-secure-curves/#ed25519-operations
|
||||
WebIDL::ExceptionOr<GC::Ref<CryptoKey>> ED25519::import_key(
|
||||
[[maybe_unused]] Web::Crypto::AlgorithmParams const& params,
|
||||
Bindings::KeyFormat format,
|
||||
CryptoKey::InternalKeyData key_data,
|
||||
bool extractable,
|
||||
Vector<Bindings::KeyUsage> const& usages)
|
||||
{
|
||||
GC::Ptr<CryptoKey> key = nullptr;
|
||||
|
||||
// 1. Let keyData be the key data to be imported.
|
||||
|
||||
// 2. If format is "spki":
|
||||
if (format == Bindings::KeyFormat::Spki) {
|
||||
// 1. If usages contains a value which is not "verify" then throw a SyntaxError.
|
||||
for (auto const& usage : usages) {
|
||||
if (usage != Bindings::KeyUsage::Verify) {
|
||||
return WebIDL::SyntaxError::create(m_realm, MUST(String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage))));
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Let spki be the result of running the parse a subjectPublicKeyInfo algorithm over keyData.
|
||||
// 3. If an error occurred while parsing, then throw a DataError.
|
||||
auto spki = TRY(parse_a_subject_public_key_info(m_realm, key_data.get<ByteBuffer>()));
|
||||
|
||||
// 4. If the algorithm object identifier field of the algorithm AlgorithmIdentifier field of spki
|
||||
// is not equal to the id-Ed25519 object identifier defined in [RFC8410], then throw a DataError.
|
||||
if (spki.algorithm.identifier != TLS::ed25519_oid)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid algorithm identifier"_string);
|
||||
|
||||
// 5. If the parameters field of the algorithm AlgorithmIdentifier field of spki is present, then throw a DataError.
|
||||
if (static_cast<u16>(spki.algorithm.ec_parameters) != 0)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid algorithm parameters"_string);
|
||||
|
||||
// 6. Let publicKey be the Ed25519 public key identified by the subjectPublicKey field of spki.
|
||||
auto const& public_key = spki.raw_key;
|
||||
|
||||
// 7. Let key be a new CryptoKey associated with the relevant global object of this [HTML],
|
||||
// and that represents publicKey.
|
||||
key = CryptoKey::create(m_realm, CryptoKey::InternalKeyData { public_key });
|
||||
|
||||
// 8. Set the [[type]] internal slot of key to "public"
|
||||
key->set_type(Bindings::KeyType::Public);
|
||||
|
||||
// 9. Let algorithm be a new KeyAlgorithm.
|
||||
auto algorithm = KeyAlgorithm::create(m_realm);
|
||||
|
||||
// 10. Set the name attribute of algorithm to "Ed25519".
|
||||
algorithm->set_name("Ed25519"_string);
|
||||
|
||||
// 11. Set the [[algorithm]] internal slot of key to algorithm.
|
||||
key->set_algorithm(algorithm);
|
||||
}
|
||||
|
||||
// 2. If format is "pkcs8":
|
||||
else if (format == Bindings::KeyFormat::Pkcs8) {
|
||||
// 1. If usages contains a value which is not "sign" then throw a SyntaxError.
|
||||
for (auto const& usage : usages) {
|
||||
if (usage != Bindings::KeyUsage::Sign) {
|
||||
return WebIDL::SyntaxError::create(m_realm, MUST(String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage))));
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Let privateKeyInfo be the result of running the parse a privateKeyInfo algorithm over keyData.
|
||||
// 3. If an error occurs while parsing, then throw a DataError.
|
||||
auto private_key_info = TRY(parse_a_private_key_info(m_realm, key_data.get<ByteBuffer>()));
|
||||
|
||||
// 4. If the algorithm object identifier field of the privateKeyAlgorithm PrivateKeyAlgorithm field
|
||||
// of privateKeyInfo is not equal to the id-Ed25519 object identifier defined in [RFC8410], then throw a DataError.
|
||||
if (private_key_info.algorithm.identifier != TLS::ed25519_oid)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid algorithm identifier"_string);
|
||||
|
||||
// 5. If the parameters field of the privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field of privateKeyInfo is present,
|
||||
// then throw a DataError.
|
||||
if (static_cast<u16>(private_key_info.algorithm.ec_parameters) != 0)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid algorithm parameters"_string);
|
||||
|
||||
// 6. Let curvePrivateKey be the result of performing the parse an ASN.1 structure algorithm,
|
||||
// with data as the privateKey field of privateKeyInfo, structure as the ASN.1 CurvePrivateKey structure
|
||||
// specified in Section 7 of [RFC8410], and exactData set to true.
|
||||
// 7. If an error occurred while parsing, then throw a DataError.
|
||||
auto curve_private_key = TRY(parse_an_ASN1_structure<StringView>(m_realm, private_key_info.raw_key, true));
|
||||
auto curve_private_key_bytes = TRY_OR_THROW_OOM(m_realm->vm(), ByteBuffer::copy(curve_private_key.bytes()));
|
||||
|
||||
// 8. Let key be a new CryptoKey associated with the relevant global object of this [HTML],
|
||||
// and that represents the Ed25519 private key identified by curvePrivateKey.
|
||||
key = CryptoKey::create(m_realm, CryptoKey::InternalKeyData { curve_private_key_bytes });
|
||||
|
||||
// 9. Set the [[type]] internal slot of key to "private"
|
||||
key->set_type(Bindings::KeyType::Private);
|
||||
|
||||
// 10. Let algorithm be a new KeyAlgorithm.
|
||||
auto algorithm = KeyAlgorithm::create(m_realm);
|
||||
|
||||
// 11. Set the name attribute of algorithm to "Ed25519".
|
||||
algorithm->set_name("Ed25519"_string);
|
||||
|
||||
// 12. Set the [[algorithm]] internal slot of key to algorithm.
|
||||
key->set_algorithm(algorithm);
|
||||
}
|
||||
|
||||
// 2. If format is "jwk":
|
||||
else if (format == Bindings::KeyFormat::Jwk) {
|
||||
// 1. If keyData is a JsonWebKey dictionary: Let jwk equal keyData.
|
||||
// Otherwise: Throw a DataError.
|
||||
if (!key_data.has<Bindings::JsonWebKey>())
|
||||
return WebIDL::DataError::create(m_realm, "keyData is not a JsonWebKey dictionary"_string);
|
||||
auto& jwk = key_data.get<Bindings::JsonWebKey>();
|
||||
|
||||
// 2. If the d field is present and usages contains a value which is not "sign",
|
||||
// or, if the d field is not present and usages contains a value which is not "verify" then throw a SyntaxError.
|
||||
if (jwk.d.has_value()) {
|
||||
for (auto const& usage : usages) {
|
||||
if (usage != Bindings::KeyUsage::Sign) {
|
||||
return WebIDL::SyntaxError::create(m_realm, MUST(String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage))));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (auto const& usage : usages) {
|
||||
if (usage != Bindings::KeyUsage::Verify) {
|
||||
return WebIDL::SyntaxError::create(m_realm, MUST(String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. If the kty field of jwk is not "OKP", then throw a DataError.
|
||||
if (jwk.kty != "OKP"sv)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid key type"_string);
|
||||
|
||||
// 4. If the crv field of jwk is not "Ed25519", then throw a DataError.
|
||||
if (jwk.crv != "Ed25519"sv)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid curve"_string);
|
||||
|
||||
// 5. If usages is non-empty and the use field of jwk is present and is not "sig", then throw a DataError.
|
||||
if (!usages.is_empty() && jwk.use.has_value() && jwk.use.value() != "sig")
|
||||
return WebIDL::DataError::create(m_realm, "Invalid key usage"_string);
|
||||
|
||||
// 6. If the key_ops field of jwk is present, and is invalid according to the requirements of JSON Web Key [JWK],
|
||||
// or it does not contain all of the specified usages values, then throw a DataError.
|
||||
TRY(validate_jwk_key_ops(m_realm, jwk, usages));
|
||||
|
||||
// 7. If the ext field of jwk is present and has the value false and extractable is true, then throw a DataError.
|
||||
if (jwk.ext.has_value() && !jwk.ext.value() && extractable)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid extractable"_string);
|
||||
|
||||
// 8. If the d field is present:
|
||||
if (jwk.d.has_value()) {
|
||||
// 1. If jwk does not meet the requirements of the JWK private key format described in Section 2 of [RFC8037],
|
||||
// then throw a DataError.
|
||||
// o The parameter "kty" MUST be "OKP".
|
||||
if (jwk.kty != "OKP"sv)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid key type"_string);
|
||||
|
||||
// https://www.iana.org/assignments/jose/jose.xhtml#web-key-elliptic-curve
|
||||
// o The parameter "crv" MUST be present and contain the subtype of the key (from the "JSON Web Elliptic Curve" registry).
|
||||
if (jwk.crv != "Ed25519"sv)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid curve"_string);
|
||||
|
||||
// o The parameter "x" MUST be present and contain the public key encoded using the base64url [RFC4648] encoding.
|
||||
if (!jwk.x.has_value())
|
||||
return WebIDL::DataError::create(m_realm, "Missing x field"_string);
|
||||
|
||||
// o The parameter "d" MUST be present for private keys and contain the private key encoded using the base64url encoding.
|
||||
// This parameter MUST NOT be present for public keys.
|
||||
if (!jwk.d.has_value())
|
||||
return WebIDL::DataError::create(m_realm, "Present d field"_string);
|
||||
|
||||
// 2. Let key be a new CryptoKey object that represents the Ed25519 private key identified by interpreting jwk according to Section 2 of [RFC8037].
|
||||
auto private_key_base_64 = jwk.d.value();
|
||||
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".
|
||||
key->set_type(Bindings::KeyType::Private);
|
||||
}
|
||||
// Otherwise:
|
||||
else {
|
||||
// 1. If jwk does not meet the requirements of the JWK public key format described in Section 2 of [RFC8037], then throw a DataError.
|
||||
// o The parameter "kty" MUST be "OKP".
|
||||
if (jwk.kty != "OKP"sv)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid key type"_string);
|
||||
|
||||
// https://www.iana.org/assignments/jose/jose.xhtml#web-key-elliptic-curve
|
||||
// o The parameter "crv" MUST be present and contain the subtype of the key (from the "JSON Web Elliptic Curve" registry).
|
||||
if (jwk.crv != "Ed25519"sv)
|
||||
return WebIDL::DataError::create(m_realm, "Invalid curve"_string);
|
||||
|
||||
// o The parameter "x" MUST be present and contain the public key encoded using the base64url [RFC4648] encoding.
|
||||
if (!jwk.x.has_value())
|
||||
return WebIDL::DataError::create(m_realm, "Missing x field"_string);
|
||||
|
||||
// o The parameter "d" MUST be present for private keys and contain the private key encoded using the base64url encoding.
|
||||
// This parameter MUST NOT be present for public keys.
|
||||
if (jwk.d.has_value())
|
||||
return WebIDL::DataError::create(m_realm, "Present d field"_string);
|
||||
|
||||
// 2. Let key be a new CryptoKey object that represents the Ed25519 public key identified by interpreting jwk according to Section 2 of [RFC8037].
|
||||
auto public_key_base_64 = jwk.x.value();
|
||||
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".
|
||||
key->set_type(Bindings::KeyType::Public);
|
||||
}
|
||||
|
||||
// 9. Let algorithm be a new instance of a KeyAlgorithm object.
|
||||
auto algorithm = KeyAlgorithm::create(m_realm);
|
||||
|
||||
// 10. Set the name attribute of algorithm to "Ed25519".
|
||||
algorithm->set_name("Ed25519"_string);
|
||||
|
||||
// 11. Set the [[algorithm]] internal slot of key to algorithm.
|
||||
key->set_algorithm(algorithm);
|
||||
}
|
||||
|
||||
// 2. If format is "raw":
|
||||
else if (format == Bindings::KeyFormat::Raw) {
|
||||
// 1. If usages contains a value which is not "verify" then throw a SyntaxError.
|
||||
for (auto const& usage : usages) {
|
||||
if (usage != Bindings::KeyUsage::Verify) {
|
||||
return WebIDL::SyntaxError::create(m_realm, MUST(String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage))));
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Let algorithm be a new KeyAlgorithm object.
|
||||
auto algorithm = KeyAlgorithm::create(m_realm);
|
||||
|
||||
// 3. Set the name attribute of algorithm to "Ed25519".
|
||||
algorithm->set_name("Ed25519"_string);
|
||||
|
||||
// 4. Let key be a new CryptoKey associated with the relevant global object of this [HTML], and representing the key data provided in keyData.
|
||||
key = CryptoKey::create(m_realm, key_data);
|
||||
|
||||
// 5. Set the [[type]] internal slot of key to "public"
|
||||
key->set_type(Bindings::KeyType::Public);
|
||||
|
||||
// 6. Set the [[algorithm]] internal slot of key to algorithm.
|
||||
key->set_algorithm(algorithm);
|
||||
}
|
||||
|
||||
// 2. Otherwise:
|
||||
else {
|
||||
// throw a NotSupportedError.
|
||||
return WebIDL::NotSupportedError::create(m_realm, "Invalid key format"_string);
|
||||
}
|
||||
|
||||
return GC::Ref { *key };
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<GC::Ref<JS::ArrayBuffer>> ED25519::sign([[maybe_unused]] AlgorithmParams const& params, GC::Ref<CryptoKey> key, ByteBuffer const& message)
|
||||
{
|
||||
auto& realm = *m_realm;
|
||||
|
|
|
@ -515,6 +515,7 @@ public:
|
|||
virtual WebIDL::ExceptionOr<JS::Value> verify(AlgorithmParams const&, GC::Ref<CryptoKey>, ByteBuffer const&, ByteBuffer const&) override;
|
||||
|
||||
virtual WebIDL::ExceptionOr<Variant<GC::Ref<CryptoKey>, GC::Ref<CryptoKeyPair>>> generate_key(AlgorithmParams const&, bool, Vector<Bindings::KeyUsage> const&) override;
|
||||
virtual WebIDL::ExceptionOr<GC::Ref<CryptoKey>> import_key(AlgorithmParams const&, Bindings::KeyFormat, CryptoKey::InternalKeyData, bool, Vector<Bindings::KeyUsage> const&) override;
|
||||
|
||||
static NonnullOwnPtr<AlgorithmMethods> create(JS::Realm& realm) { return adopt_own(*new ED25519(realm)); }
|
||||
|
||||
|
|
|
@ -878,7 +878,7 @@ SupportedAlgorithmsMap supported_algorithms()
|
|||
define_an_algorithm<ED25519>("sign"_string, "Ed25519"_string);
|
||||
define_an_algorithm<ED25519>("verify"_string, "Ed25519"_string);
|
||||
define_an_algorithm<ED25519>("generateKey"_string, "Ed25519"_string);
|
||||
// FIXME: define_an_algorithm<ED25519>("importKey"_string, "Ed25519"_string);
|
||||
define_an_algorithm<ED25519>("importKey"_string, "Ed25519"_string);
|
||||
// FIXME: define_an_algorithm<ED25519>("exportKey"_string, "Ed25519"_string);
|
||||
|
||||
// https://wicg.github.io/webcrypto-secure-curves/#ed448-registration
|
||||
|
|
|
@ -6,7 +6,8 @@ Rerun
|
|||
|
||||
Found 62 tests
|
||||
|
||||
62 Fail
|
||||
26 Pass
|
||||
36 Fail
|
||||
Details
|
||||
Result Test Name MessageFail Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, true, [verify])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, true, [verify])
|
||||
|
@ -44,29 +45,29 @@ Fail Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}
|
|||
Fail Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), Ed25519, true, [sign, sign])
|
||||
Fail Good parameters with ignored JWK alg: Ed25519 (jwk, object(crv, d, x, kty), {name: Ed25519}, true, [sign, sign])
|
||||
Fail Good parameters with ignored JWK alg: Ed25519 (jwk, object(crv, d, x, kty), Ed25519, true, [sign, sign])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [verify])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, false, [verify])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [verify])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(kty, crv, x), Ed25519, false, [verify])
|
||||
Fail Good parameters: Ed25519 bits (raw, buffer(32), {name: Ed25519}, false, [verify])
|
||||
Fail Good parameters: Ed25519 bits (raw, buffer(32), Ed25519, false, [verify])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, false, [])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(kty, crv, x), Ed25519, false, [])
|
||||
Fail Good parameters: Ed25519 bits (raw, buffer(32), {name: Ed25519}, false, [])
|
||||
Fail Good parameters: Ed25519 bits (raw, buffer(32), Ed25519, false, [])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [verify, verify])
|
||||
Fail Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, false, [verify, verify])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [verify, verify])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(kty, crv, x), Ed25519, false, [verify, verify])
|
||||
Fail Good parameters: Ed25519 bits (raw, buffer(32), {name: Ed25519}, false, [verify, verify])
|
||||
Fail Good parameters: Ed25519 bits (raw, buffer(32), Ed25519, false, [verify, verify])
|
||||
Fail Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, false, [sign])
|
||||
Fail Good parameters: Ed25519 bits (pkcs8, buffer(48), Ed25519, false, [sign])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, false, [sign])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), Ed25519, false, [sign])
|
||||
Fail Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, false, [sign, sign])
|
||||
Fail Good parameters: Ed25519 bits (pkcs8, buffer(48), Ed25519, false, [sign, sign])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, false, [sign, sign])
|
||||
Fail Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), Ed25519, false, [sign, sign])
|
||||
Pass Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [verify])
|
||||
Pass Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, false, [verify])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [verify])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(kty, crv, x), Ed25519, false, [verify])
|
||||
Pass Good parameters: Ed25519 bits (raw, buffer(32), {name: Ed25519}, false, [verify])
|
||||
Pass Good parameters: Ed25519 bits (raw, buffer(32), Ed25519, false, [verify])
|
||||
Pass Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [])
|
||||
Pass Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, false, [])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(kty, crv, x), Ed25519, false, [])
|
||||
Pass Good parameters: Ed25519 bits (raw, buffer(32), {name: Ed25519}, false, [])
|
||||
Pass Good parameters: Ed25519 bits (raw, buffer(32), Ed25519, false, [])
|
||||
Pass Good parameters: Ed25519 bits (spki, buffer(44), {name: Ed25519}, false, [verify, verify])
|
||||
Pass Good parameters: Ed25519 bits (spki, buffer(44), Ed25519, false, [verify, verify])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(kty, crv, x), {name: Ed25519}, false, [verify, verify])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(kty, crv, x), Ed25519, false, [verify, verify])
|
||||
Pass Good parameters: Ed25519 bits (raw, buffer(32), {name: Ed25519}, false, [verify, verify])
|
||||
Pass Good parameters: Ed25519 bits (raw, buffer(32), Ed25519, false, [verify, verify])
|
||||
Pass Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, false, [sign])
|
||||
Pass Good parameters: Ed25519 bits (pkcs8, buffer(48), Ed25519, false, [sign])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, false, [sign])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), Ed25519, false, [sign])
|
||||
Pass Good parameters: Ed25519 bits (pkcs8, buffer(48), {name: Ed25519}, false, [sign, sign])
|
||||
Pass Good parameters: Ed25519 bits (pkcs8, buffer(48), Ed25519, false, [sign, sign])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), {name: Ed25519}, false, [sign, sign])
|
||||
Pass Good parameters: Ed25519 bits (jwk, object(crv, d, x, kty), Ed25519, false, [sign, sign])
|
|
@ -6,231 +6,231 @@ Rerun
|
|||
|
||||
Found 258 tests
|
||||
|
||||
10 Pass
|
||||
248 Fail
|
||||
244 Pass
|
||||
14 Fail
|
||||
Details
|
||||
Result Test Name MessageFail Bad usages: importKey(spki, {name: Ed25519}, true, [encrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [encrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, encrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, encrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, encrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, encrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [decrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [decrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, decrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, decrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, decrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, decrypt])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [sign])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [sign])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, sign])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, sign])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, sign])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, sign])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [wrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [wrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, wrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, wrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, wrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, wrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [unwrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [unwrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, unwrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, unwrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, unwrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, unwrapKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [deriveKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [deriveKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, deriveKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, deriveKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, deriveKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, deriveKey])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [deriveBits])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [deriveBits])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, deriveBits])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, deriveBits])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, deriveBits])
|
||||
Fail Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, deriveBits])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [encrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [encrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, encrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, encrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, encrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, encrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [decrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [decrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, decrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, decrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, decrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, decrypt])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [verify])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [verify])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, verify])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, verify])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, verify])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, verify])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [wrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [wrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, wrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, wrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, wrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, wrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [unwrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [unwrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, unwrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, unwrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, unwrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, unwrapKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [deriveKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [deriveKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, deriveKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, deriveKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, deriveKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, deriveKey])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [deriveBits])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [deriveBits])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, deriveBits])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, deriveBits])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, deriveBits])
|
||||
Fail Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, deriveBits])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [encrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [encrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, encrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, encrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, encrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, encrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [decrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [decrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, decrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, decrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, decrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, decrypt])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [sign])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [sign])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, sign])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, sign])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, sign])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, sign])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [wrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [wrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, wrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, wrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, wrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, wrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [unwrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [unwrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, unwrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, unwrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, unwrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, unwrapKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [deriveKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [deriveKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, deriveKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, deriveKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, deriveKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, deriveKey])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [deriveBits])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [deriveBits])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, deriveBits])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, deriveBits])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, deriveBits])
|
||||
Fail Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, deriveBits])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [encrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [encrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, encrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, encrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, encrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, encrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [decrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [decrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, decrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, decrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, decrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, decrypt])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [verify])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [verify])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, verify])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, verify])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, verify])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, verify])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [wrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [wrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, wrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, wrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, wrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, wrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [unwrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [unwrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [deriveKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [deriveKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, deriveKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, deriveKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, deriveKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, deriveKey])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [deriveBits])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [deriveBits])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, deriveBits])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, deriveBits])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, deriveBits])
|
||||
Fail Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, deriveBits])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [encrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [encrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, encrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, encrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, encrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, encrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [decrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [decrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, decrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, decrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, decrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, decrypt])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [sign])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [sign])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, sign])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, sign])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, sign])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, sign])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [wrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [wrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, wrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, wrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, wrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, wrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [unwrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [unwrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, unwrapKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [deriveKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [deriveKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, deriveKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, deriveKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, deriveKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, deriveKey])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [deriveBits])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [deriveBits])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, deriveBits])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, deriveBits])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, deriveBits])
|
||||
Fail Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, deriveBits])
|
||||
Fail Empty usages: importKey(pkcs8, {name: Ed25519}, true, [])
|
||||
Fail Empty usages: importKey(pkcs8, {name: Ed25519}, false, [])
|
||||
Fail Empty usages: importKey(jwk(private), {name: Ed25519}, true, [])
|
||||
Fail Empty usages: importKey(jwk(private), {name: Ed25519}, false, [])
|
||||
Fail Bad key length: importKey(spki, {name: Ed25519}, true, [verify])
|
||||
Fail Bad key length: importKey(spki, {name: Ed25519}, false, [verify])
|
||||
Fail Bad key length: importKey(spki, {name: Ed25519}, true, [verify, verify])
|
||||
Fail Bad key length: importKey(spki, {name: Ed25519}, false, [verify, verify])
|
||||
Fail Bad key length: importKey(pkcs8, {name: Ed25519}, true, [sign])
|
||||
Fail Bad key length: importKey(pkcs8, {name: Ed25519}, false, [sign])
|
||||
Fail Bad key length: importKey(pkcs8, {name: Ed25519}, true, [sign, sign])
|
||||
Fail Bad key length: importKey(pkcs8, {name: Ed25519}, false, [sign, sign])
|
||||
Result Test Name MessagePass Bad usages: importKey(spki, {name: Ed25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, encrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, decrypt])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [sign])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [sign])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, sign])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, sign])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, sign])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, sign])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, wrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, unwrapKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, deriveKey])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, deriveBits])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, deriveBits])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, true, [verify, verify, deriveBits])
|
||||
Pass Bad usages: importKey(spki, {name: Ed25519}, false, [verify, verify, deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, encrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, decrypt])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, verify])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, wrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, unwrapKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, deriveKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, deriveKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, deriveKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, deriveKey])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, true, [sign, sign, deriveBits])
|
||||
Pass Bad usages: importKey(pkcs8, {name: Ed25519}, false, [sign, sign, deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, encrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, decrypt])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [sign])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [sign])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, sign])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, sign])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, sign])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, sign])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, wrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, unwrapKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, deriveKey])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, true, [verify, verify, deriveBits])
|
||||
Pass Bad usages: importKey(raw, {name: Ed25519}, false, [verify, verify, deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, encrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, decrypt])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, verify])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, wrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, deriveKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, deriveKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, deriveKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, deriveKey])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, true, [sign, sign, deriveBits])
|
||||
Pass Bad usages: importKey(jwk(private), {name: Ed25519}, false, [sign, sign, deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, encrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, decrypt])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, sign])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, wrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, unwrapKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, deriveKey])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify, deriveBits])
|
||||
Pass Bad usages: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify, deriveBits])
|
||||
Pass Empty usages: importKey(pkcs8, {name: Ed25519}, true, [])
|
||||
Pass Empty usages: importKey(pkcs8, {name: Ed25519}, false, [])
|
||||
Pass Empty usages: importKey(jwk(private), {name: Ed25519}, true, [])
|
||||
Pass Empty usages: importKey(jwk(private), {name: Ed25519}, false, [])
|
||||
Pass Bad key length: importKey(spki, {name: Ed25519}, true, [verify])
|
||||
Pass Bad key length: importKey(spki, {name: Ed25519}, false, [verify])
|
||||
Pass Bad key length: importKey(spki, {name: Ed25519}, true, [verify, verify])
|
||||
Pass Bad key length: importKey(spki, {name: Ed25519}, false, [verify, verify])
|
||||
Pass Bad key length: importKey(pkcs8, {name: Ed25519}, true, [sign])
|
||||
Pass Bad key length: importKey(pkcs8, {name: Ed25519}, false, [sign])
|
||||
Pass Bad key length: importKey(pkcs8, {name: Ed25519}, true, [sign, sign])
|
||||
Pass Bad key length: importKey(pkcs8, {name: Ed25519}, false, [sign, sign])
|
||||
Fail Bad key length: importKey(raw, {name: Ed25519}, true, [verify])
|
||||
Fail Bad key length: importKey(raw, {name: Ed25519}, false, [verify])
|
||||
Fail Bad key length: importKey(raw, {name: Ed25519}, true, [verify, verify])
|
||||
|
@ -243,18 +243,18 @@ Fail Bad key length: importKey(jwk (public) , {name: Ed25519}, true, [verify])
|
|||
Fail Bad key length: importKey(jwk (public) , {name: Ed25519}, false, [verify])
|
||||
Fail Bad key length: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify])
|
||||
Fail Bad key length: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify])
|
||||
Fail Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])
|
||||
Fail Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])
|
||||
Fail Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])
|
||||
Fail Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])
|
||||
Fail Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])
|
||||
Fail Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])
|
||||
Fail Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])
|
||||
Fail Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])
|
||||
Fail Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, true, [verify])
|
||||
Fail Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, false, [verify])
|
||||
Fail Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify])
|
||||
Fail Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])
|
||||
Pass Missing JWK 'x' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])
|
||||
Pass Missing JWK 'kty' parameter: importKey(jwk(private), {name: Ed25519}, false, [sign, sign])
|
||||
Pass Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, true, [verify])
|
||||
Pass Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, false, [verify])
|
||||
Pass Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, true, [verify, verify])
|
||||
Pass Missing JWK 'crv' parameter: importKey(jwk (public) , {name: Ed25519}, false, [verify, verify])
|
||||
Fail Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign])
|
||||
Fail Invalid key pair: importKey(jwk(private), {name: Ed25519}, true, [sign, sign])
|
||||
Pass Missing algorithm name: importKey(spki, {}, true, verify)
|
||||
|
|
Loading…
Add table
Reference in a new issue