LibCrypto: Implement KMAC authentication support

Add a LibCrypto::Authentication::KMAC helper over OpenSSL.
Add keygen/import/export logic into WebCrypto.
Register KMAC128/KMAC256 operations with SubtleCrypto.
This commit is contained in:
mikiubo 2026-03-15 08:09:09 +01:00 committed by Jelle Raaijmakers
parent 6cc575b8a9
commit d4cf537d58
12 changed files with 1230 additions and 564 deletions

View file

@ -0,0 +1,93 @@
/*
* Copyright (c) 2026, mikiubo <michele.uboldi@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibCrypto/Authentication/KMAC.h>
#include <LibCrypto/OpenSSL.h>
#include <openssl/core_names.h>
#include <openssl/evp.h>
namespace Crypto::Authentication {
Optional<KMACKind> KMAC::kind_from_algorithm_name(StringView algorithm_name)
{
if (algorithm_name == "KMAC128"sv)
return KMACKind::KMAC128;
if (algorithm_name == "KMAC256"sv)
return KMACKind::KMAC256;
return {};
}
u32 KMAC::default_key_length(KMACKind kind)
{
switch (kind) {
case KMACKind::KMAC128:
return 128;
case KMACKind::KMAC256:
return 256;
}
VERIFY_NOT_REACHED();
}
KMAC::KMAC(KMACKind kind)
: m_kind(kind)
{
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-sign
ErrorOr<ByteBuffer> KMAC::sign(ReadonlyBytes key, ReadonlyBytes message, u32 output_length_bits, Optional<ReadonlyBytes> customization) const
{
if (output_length_bits == 0)
return Error::from_string_literal("KMAC output length must be greater than zero");
if ((output_length_bits % 8) != 0)
return Error::from_string_literal("KMAC output length must be a multiple of 8");
auto const* mac_name = (m_kind == KMACKind::KMAC128) ? OSSL_MAC_NAME_KMAC128 : OSSL_MAC_NAME_KMAC256;
auto* mac = EVP_MAC_fetch(nullptr, mac_name, nullptr);
if (!mac)
return Error::from_string_literal("EVP_MAC_fetch failed for KMAC");
auto* ctx = EVP_MAC_CTX_new(mac);
EVP_MAC_free(mac);
if (!ctx)
return Error::from_string_literal("EVP_MAC_CTX_new failed");
size_t output_size = output_length_bits / 8;
Vector<OSSL_PARAM> params;
params.append(OSSL_PARAM_size_t(OSSL_MAC_PARAM_SIZE, &output_size));
if (customization.has_value())
params.append(OSSL_PARAM_octet_string(OSSL_MAC_PARAM_CUSTOM, const_cast<u8*>(customization.value().data()), customization.value().size()));
params.append(OSSL_PARAM_END);
if (EVP_MAC_init(ctx, key.data(), key.size(), params.data()) != 1) {
EVP_MAC_CTX_free(ctx);
return Error::from_string_literal("EVP_MAC_init failed for KMAC");
}
if (EVP_MAC_update(ctx, message.data(), message.size()) != 1) {
EVP_MAC_CTX_free(ctx);
return Error::from_string_literal("EVP_MAC_update failed for KMAC");
}
auto buf = TRY(ByteBuffer::create_uninitialized(output_size));
size_t written = 0;
if (EVP_MAC_final(ctx, buf.data(), &written, output_size) != 1) {
EVP_MAC_CTX_free(ctx);
return Error::from_string_literal("EVP_MAC_final failed for KMAC");
}
EVP_MAC_CTX_free(ctx);
if (written != output_size)
return Error::from_string_literal("EVP_MAC_final returned an unexpected output length");
return buf;
}
}

View file

@ -0,0 +1,42 @@
/*
* Copyright (c) 2026, mikiubo <michele.uboldi@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/ByteBuffer.h>
#include <AK/Error.h>
#include <AK/Noncopyable.h>
#include <LibCrypto/OpenSSLForward.h>
namespace Crypto::Authentication {
enum class KMACKind {
KMAC128,
KMAC256,
};
class KMAC {
AK_MAKE_NONCOPYABLE(KMAC);
public:
explicit KMAC(KMACKind kind);
~KMAC() = default;
static Optional<KMACKind> kind_from_algorithm_name(StringView);
static u32 default_key_length(KMACKind);
ErrorOr<ByteBuffer> sign(
ReadonlyBytes key,
ReadonlyBytes message,
u32 output_length_bits,
Optional<ReadonlyBytes> customization) const;
private:
KMACKind m_kind;
};
}

View file

@ -6,6 +6,7 @@ set(SOURCES
ASN1/DER.cpp
ASN1/PEM.cpp
Authentication/HMAC.cpp
Authentication/KMAC.cpp
BigFraction/BigFraction.cpp
BigInt/SignedBigInteger.cpp
BigInt/UnsignedBigInteger.cpp

View file

@ -16,6 +16,7 @@
#include <LibCrypto/ASN1/Constants.h>
#include <LibCrypto/ASN1/DER.h>
#include <LibCrypto/Authentication/HMAC.h>
#include <LibCrypto/Authentication/KMAC.h>
#include <LibCrypto/Certificate/Certificate.h>
#include <LibCrypto/Cipher/AES.h>
#include <LibCrypto/Cipher/ChaCha.h>
@ -707,6 +708,64 @@ JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> CShakeParams::from_value(J
return adopt_own<AlgorithmParams>(*new CShakeParams { length, function_name, customization });
}
KmacParams::~KmacParams() = default;
// https://wicg.github.io/webcrypto-modern-algos/#kmac-params
JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> KmacParams::from_value(JS::VM& vm, JS::Value value)
{
VERIFY(value.is_object());
auto& object = value.as_object();
// 1. If the length member is missing, throw a TypeError.
if (!MUST(object.has_property("length"_utf16_fly_string))) {
return vm.throw_completion<JS::TypeError>(JS::ErrorType::MissingRequiredProperty, "length");
}
auto const length_value = TRY(object.get("length"_utf16_fly_string));
auto const length = TRY(WebIDL::convert_to_int<WebIDL::UnsignedLong>(vm, length_value, WebIDL::EnforceRange::Yes, WebIDL::Clamp::No));
// 2. Let customization be the optional customization member or the empty octet string.
auto const customization = TRY(get_optional_buffer_source(vm, object, "customization"_utf16_fly_string));
return adopt_own<AlgorithmParams>(*new KmacParams { length, customization });
}
KmacKeyGenParams::~KmacKeyGenParams() = default;
// https://wicg.github.io/webcrypto-modern-algos/#kmac-keygen-params
JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> KmacKeyGenParams::from_value(JS::VM& vm, JS::Value value)
{
VERIFY(value.is_object());
auto& object = value.as_object();
// 1. If the length member is present, record its unsigned long value; otherwise leave it unset.
auto maybe_length = Optional<WebIDL::UnsignedLong> {};
if (MUST(object.has_property("length"_utf16_fly_string))) {
auto length_value = TRY(object.get("length"_utf16_fly_string));
maybe_length = TRY(length_value.to_u32(vm));
}
return adopt_own<AlgorithmParams>(*new KmacKeyGenParams { maybe_length });
}
KmacImportParams::~KmacImportParams() = default;
// https://wicg.github.io/webcrypto-modern-algos/#kmac-import-params
JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> KmacImportParams::from_value(JS::VM& vm, JS::Value value)
{
VERIFY(value.is_object());
auto& object = value.as_object();
// 1. If the length member is present, record its unsigned long value; otherwise leave it unset.
auto maybe_length = Optional<WebIDL::UnsignedLong> {};
if (MUST(object.has_property("length"_utf16_fly_string))) {
auto length_value = TRY(object.get("length"_utf16_fly_string));
maybe_length = TRY(length_value.to_u32(vm));
}
return adopt_own<AlgorithmParams>(*new KmacImportParams { maybe_length });
}
// https://w3c.github.io/webcrypto/#rsa-oaep-operations-encrypt
WebIDL::ExceptionOr<GC::Ref<JS::ArrayBuffer>> RSAOAEP::encrypt(AlgorithmParams const& params, GC::Ref<CryptoKey> key, ByteBuffer const& plaintext)
{
@ -10371,4 +10430,358 @@ WebIDL::ExceptionOr<JS::Value> AesOcb::get_key_length(AlgorithmParams const& par
return JS::Value(length);
}
static WebIDL::ExceptionOr<ByteBuffer> kmac_calculate_mac(
JS::Realm& realm,
StringView algorithm_name,
ReadonlyBytes key,
ReadonlyBytes message,
u32 output_length_bits,
Optional<ReadonlyBytes> customization)
{
auto kind = ::Crypto::Authentication::KMAC::kind_from_algorithm_name(algorithm_name);
if (!kind.has_value())
return WebIDL::OperationError::create(realm, "Unsupported KMAC algorithm"_utf16);
::Crypto::Authentication::KMAC kmac(*kind);
auto maybe_result = kmac.sign(key, message, output_length_bits, customization);
if (maybe_result.is_error())
return WebIDL::OperationError::create(realm, "KMAC operation failed"_utf16);
return maybe_result.release_value();
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-sign
WebIDL::ExceptionOr<GC::Ref<JS::ArrayBuffer>> KMAC::sign(AlgorithmParams const& params, GC::Ref<CryptoKey> key, ByteBuffer const& message)
{
auto const& normalized_algorithm = static_cast<KmacParams const&>(params);
// 1. Let customization be the customization member of normalizedAlgorithm if present or the empty octet string otherwise.
auto const& customization = normalized_algorithm.customization;
auto const& key_data = key->handle().get<ByteBuffer>();
auto const output_length = normalized_algorithm.length;
// 2. If the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC128":
// Let mac be the result of performing the KMAC128 function defined in Section 4 of [NIST-SP800-185]
// using the key represented by [[handle]] internal slot of key as the K input parameter,
// message as the X input parameter, the outputLength member of normalizedAlgorithm as the L input parameter,
// and customization as the S input parameter.
// 2. If the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC256":
// Let mac be the result of performing the KMAC256 function defined in Section 4 of [NIST-SP800-185]
// using the key represented by [[handle]] internal slot of key as the K input parameter,
// message as the X input parameter, the outputLength member of normalizedAlgorithm as the L input parameter,
// and customization as the S input parameter.
auto mac = TRY(kmac_calculate_mac(
m_realm,
params.name,
key_data.bytes(),
message.bytes(),
output_length,
customization.map([](auto const& v) { return v.span(); })));
// 3. Return a byte sequence containing mac.
return JS::ArrayBuffer::create(m_realm, move(mac));
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-verify
WebIDL::ExceptionOr<JS::Value> KMAC::verify(AlgorithmParams const& params, GC::Ref<CryptoKey> key, ByteBuffer const& signature, ByteBuffer const& message)
{
auto const& normalized_algorithm = static_cast<KmacParams const&>(params);
// 1. Let customization be the customization member of normalizedAlgorithm if present or the empty octet string otherwise.
auto const& customization = normalized_algorithm.customization;
auto const& key_data = key->handle().get<ByteBuffer>();
auto const output_length = normalized_algorithm.length;
// 2. If the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC128":
// Let mac be the result of performing the KMAC128 function defined in Section 4 of [NIST-SP800-185]
// using the key represented by [[handle]] internal slot of key as the K input parameter, message as the X input parameter,
// the outputLength member of normalizedAlgorithm as the L input parameter, and customization as the S input parameter.
// 2. If the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC256":
// Let mac be the result of performing the KMAC256 function defined in Section 4 of [NIST-SP800-185]
// using the key represented by [[handle]] internal slot of key as the K input parameter, message as the X input parameter,
// the outputLength member of normalizedAlgorithm as the L input parameter, and customization as the S input parameter.
auto mac = TRY(kmac_calculate_mac(
m_realm,
params.name,
key_data.bytes(),
message.bytes(),
output_length,
customization.map([](auto const& v) { return v.span(); })));
// 3. Let computedMac be the byte sequence containing mac.
// 4. Return true if computedMac equals signature and false otherwise.
return mac == signature;
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-generate-key
WebIDL::ExceptionOr<Variant<GC::Ref<CryptoKey>, GC::Ref<CryptoKeyPair>>> KMAC::generate_key(AlgorithmParams const& params, bool extractable, Vector<Bindings::KeyUsage> const& usages)
{
// 1. If usages contains an entry which is not "sign" or "verify", then throw a SyntaxError.
for (auto const& usage : usages) {
if (usage != Bindings::KeyUsage::Sign && usage != Bindings::KeyUsage::Verify)
return WebIDL::SyntaxError::create(m_realm, Utf16String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage)));
}
auto const& normalized_algorithm = static_cast<KmacKeyGenParams const&>(params);
WebIDL::UnsignedLong length;
// 2. If the length member of normalizedAlgorithm is present:
// Let length be equal to the length member of normalizedAlgorithm.
// 2. Otherwise, if the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC128":
// Let length be 128.
// 2. Otherwise, if the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC256":
// Let length be 256.
if (!normalized_algorithm.length.has_value()) {
auto kind = ::Crypto::Authentication::KMAC::kind_from_algorithm_name(params.name);
if (!kind.has_value())
return WebIDL::OperationError::create(m_realm, "Unsupported KMAC algorithm"_utf16);
length = ::Crypto::Authentication::KMAC::default_key_length(*kind);
} else if (normalized_algorithm.length.value() != 0) {
length = normalized_algorithm.length.value();
} else {
return WebIDL::OperationError::create(m_realm, "Invalid key length"_utf16);
}
// 3. Generate a key of length bits.
// 4. If key generation fails, throw an OperationError.
auto key_data = MUST(generate_random_key(m_realm->vm(), length));
// 5. Let key be a new CryptoKey object representing the generated key.
auto key = CryptoKey::create(m_realm, move(key_data));
// 6. Set the [[type]] internal slot of key to "secret".
key->set_type(Bindings::KeyType::Secret);
// 7. Let algorithm be a new KmacKeyAlgorithm.
auto algorithm = KmacKeyAlgorithm::create(m_realm);
// 8. Set the name attribute of algorithm to the name member of normalizedAlgorithm.
algorithm->set_name(params.name);
// 9. Set the length attribute of algorithm to length.
algorithm->set_length(length);
// 10. Set the [[algorithm]] internal slot of key to algorithm.
key->set_algorithm(algorithm);
// 11. Set the [[extractable]] internal slot of key to extractable.
key->set_extractable(extractable);
// 12. Set the [[usages]] internal slot of key to usages.
key->set_usages(usages);
// 13. Return key.
return Variant<GC::Ref<CryptoKey>, GC::Ref<CryptoKeyPair>> { key };
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-import-key
WebIDL::ExceptionOr<GC::Ref<CryptoKey>> KMAC::import_key(AlgorithmParams const& params, Bindings::KeyFormat format, CryptoKey::InternalKeyData key_data, bool extractable, Vector<Bindings::KeyUsage> const& usages)
{
auto const& normalized_algorithm = static_cast<KmacImportParams const&>(params);
// 1. Let keyData be the key data to be imported.
// 2. If usages contains an entry which is not "sign" or "verify", then throw a SyntaxError.
for (auto const& usage : usages) {
if (usage != Bindings::KeyUsage::Sign && usage != Bindings::KeyUsage::Verify)
return WebIDL::SyntaxError::create(m_realm, Utf16String::formatted("Invalid key usage '{}'", idl_enum_to_string(usage)));
}
ByteBuffer data;
// 3. If format is "raw-secret":
if (format == Bindings::KeyFormat::RawSecret) {
// 1. Let data be keyData.
data = move(key_data.get<ByteBuffer>());
}
// 3. 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, "Data is not a JsonWebKey dictionary"_utf16);
auto const& jwk = key_data.get<Bindings::JsonWebKey>();
// 2. If the kty field of jwk is not "oct", then throw a DataError.
if (jwk.kty != "oct"sv)
return WebIDL::DataError::create(m_realm, "Invalid key type"_utf16);
// 3. If jwk does not meet the requirements of Section 6.4 of JSON Web Algorithms [JWA], then throw a DataError.
// NOTE: parse_jwk_symmetric_key() performs the validation required for symmetric JWKs.
// 4. Let data be the byte sequence obtained by decoding the k field of jwk.
data = TRY(parse_jwk_symmetric_key(m_realm, jwk));
// 5. -> If the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC128":
// If the alg field of jwk is present and is not "K128", then throw a DataError.
// -> If the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC256":
// If the alg field of jwk is present and is not "K256", then throw a DataError.
auto const& algorithm_name = normalized_algorithm.name;
if (algorithm_name == "KMAC128"sv) {
if (jwk.alg.has_value() && *jwk.alg != "K128"sv)
return WebIDL::DataError::create(m_realm, "Invalid alg field for KMAC128"_utf16);
} else if (algorithm_name == "KMAC256"sv) {
if (jwk.alg.has_value() && *jwk.alg != "K256"sv)
return WebIDL::DataError::create(m_realm, "Invalid alg field for KMAC256"_utf16);
}
// 6. If usages is non-empty and the use field of jwk is present and is not "sign", then throw a DataError.
if (!usages.is_empty() && jwk.use.has_value() && *jwk.use != "sign"sv)
return WebIDL::DataError::create(m_realm, "Invalid use in JsonWebKey"_utf16);
// 7. If the key_ops field of jwk is present, and is invalid according to the requirements of JSON Web Key [JWK]
// or does not contain all of the specified usages values, then throw a DataError.
TRY(validate_jwk_key_ops(m_realm, jwk, usages));
// 8. 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 && extractable)
return WebIDL::DataError::create(m_realm, "Invalid ext field"_utf16);
}
// 3. Otherwise:
else {
// 1. Throw a NotSupportedError.
return WebIDL::NotSupportedError::create(m_realm, "Only raw-secret and jwk formats are supported"_utf16);
}
// 4. Let length be the length in bits of data.
auto length = static_cast<WebIDL::UnsignedLong>(data.size() * 8);
// 5. If the length member of normalizedAlgorithm is present:
if (normalized_algorithm.length.has_value()) {
auto requested_length = normalized_algorithm.length.value();
// 1. If the length member of normalizedAlgorithm is greater than length, then throw a DataError.
if (requested_length > length)
return WebIDL::DataError::create(m_realm, "Invalid data size"_utf16);
// 2. If the length member of normalizedAlgorithm is less than or equal to length minus eight, then throw a DataError.
if (requested_length <= length - 8)
return WebIDL::DataError::create(m_realm, "Invalid data size"_utf16);
// 3. Otherwise:
// Set length equal to the length member of normalizedAlgorithm.
length = requested_length;
}
// 6. Let key be a new CryptoKey object representing a KMAC key with the first length bits of data.
auto length_in_bytes = length / 8;
if (data.size() > length_in_bytes)
data = MUST(data.slice(0, length_in_bytes));
auto key = CryptoKey::create(m_realm, move(data));
// 7. Set the [[type]] internal slot of key to "secret".
key->set_type(Bindings::KeyType::Secret);
// 8. Let algorithm be a new KmacKeyAlgorithm.
auto algorithm = KmacKeyAlgorithm::create(m_realm);
// 9. Set the name attribute of algorithm to the name member of normalizedAlgorithm.
algorithm->set_name(normalized_algorithm.name);
// 10. Set the length attribute of algorithm to length.
algorithm->set_length(length);
// 11. Set the [[algorithm]] internal slot of key to algorithm.
key->set_algorithm(algorithm);
// 12. Return key.
return key;
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-export-key
WebIDL::ExceptionOr<GC::Ref<JS::Object>> KMAC::export_key(Bindings::KeyFormat format, GC::Ref<CryptoKey> key)
{
// 1. If the underlying cryptographic key material represented by the [[handle]] internal slot of key cannot be accessed, then throw an OperationError.
// Note: In our impl this is always accessible
GC::Ptr<JS::Object> result = nullptr;
// 2. If format is "raw-secret":
if (format == Bindings::KeyFormat::RawSecret) {
// 1. Let result be the raw bits of the key represented by [[handle]] internal slot of key.
auto data = key->handle().get<ByteBuffer>();
result = JS::ArrayBuffer::create(m_realm, data);
}
// 2. If format is "jwk":
else if (format == Bindings::KeyFormat::Jwk) {
// 1. Let jwk be a new JsonWebKey dictionary.
Bindings::JsonWebKey jwk = {};
// 2. Set the kty attribute of jwk to the string "oct".
jwk.kty = "oct"_string;
// 3. Set the k attribute of jwk to be a string containing the raw bits of the key represented by [[handle]] internal slot of key,
// encoded according to JSON Web Algorithms [JWA].
auto const& key_bytes = key->handle().get<ByteBuffer>();
jwk.k = TRY_OR_THROW_OOM(m_realm->vm(), encode_base64url(key_bytes, AK::OmitPadding::Yes));
// 4. Let keyAlgorithm be the [[algorithm]] internal slot of key.
// 5. -> If the name member of keyAlgorithm is "KMAC128":
// Set the alg attribute of jwk to the string "K128".
// -> If the name member of keyAlgorithm is "KMAC256":
// Set the alg attribute of jwk to the string "K256".
auto const& algorithm_name = key->algorithm_name();
if (algorithm_name == "KMAC128"_string) {
jwk.alg = "K128"_string;
} else if (algorithm_name == "KMAC256"_string) {
jwk.alg = "K256"_string;
}
// 6. Set the key_ops attribute of jwk to equal the usages attribute of key.
jwk.key_ops = Vector<String> {};
jwk.key_ops->ensure_capacity(key->internal_usages().size());
for (auto const& usage : key->internal_usages()) {
jwk.key_ops->unchecked_append(Bindings::idl_enum_to_string(usage));
}
// 7. Set the ext attribute of jwk to equal the [[extractable]] internal slot of key.
jwk.ext = key->extractable();
// 8. Let result be jwk.
return TRY(jwk.to_object(m_realm));
}
// 2. Otherwise:
else {
// 1. throw a NotSupportedError.
return WebIDL::NotSupportedError::create(m_realm, "Cannot export to unsupported format"_utf16);
}
// 3. Return result.
return GC::Ref { *result };
}
// https://wicg.github.io/webcrypto-modern-algos/#kmac-operations-get-key-length
WebIDL::ExceptionOr<JS::Value> KMAC::get_key_length(AlgorithmParams const& params)
{
auto const& normalized_algorithm = static_cast<KmacImportParams const&>(params);
WebIDL::UnsignedLong length;
// 1. If the length member of normalizedAlgorithm is present:
// Let length be equal to the length member of normalizedAlgorithm.
if (normalized_algorithm.length.has_value()) {
length = normalized_algorithm.length.value();
}
// 1. Otherwise, if the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC128":
// Let length be 128.
// 1. Otherwise, if the name member of normalizedAlgorithm is a case-sensitive string match for "KMAC256":
// Let length be 256.
else {
auto kind = ::Crypto::Authentication::KMAC::kind_from_algorithm_name(params.name);
if (!kind.has_value())
return WebIDL::OperationError::create(m_realm, "Unsupported KMAC algorithm"_utf16);
length = ::Crypto::Authentication::KMAC::default_key_length(*kind);
}
// 2. Return length.
return JS::Value(length);
}
}

View file

@ -839,6 +839,68 @@ struct CShakeParams : public AlgorithmParams {
static JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> from_value(JS::VM&, JS::Value);
};
// https://wicg.github.io/webcrypto-modern-algos/#kmac-params
struct KmacParams : public AlgorithmParams {
virtual ~KmacParams() override;
KmacParams(u32 length, Optional<ByteBuffer> customization)
: length(length)
, customization(move(customization))
{
}
u32 length;
Optional<ByteBuffer> customization;
static JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> from_value(JS::VM&, JS::Value);
};
// https://wicg.github.io/webcrypto-modern-algos/#kmac-keygen-params
struct KmacKeyGenParams : public AlgorithmParams {
virtual ~KmacKeyGenParams() override;
KmacKeyGenParams(Optional<WebIDL::UnsignedLong> length)
: length(length)
{
}
Optional<WebIDL::UnsignedLong> length;
static JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> from_value(JS::VM&, JS::Value);
};
// https://wicg.github.io/webcrypto-modern-algos/#kmac-import-params
struct KmacImportParams : public AlgorithmParams {
virtual ~KmacImportParams() override;
KmacImportParams(Optional<WebIDL::UnsignedLong> length)
: length(length)
{
}
Optional<WebIDL::UnsignedLong> length;
static JS::ThrowCompletionOr<NonnullOwnPtr<AlgorithmParams>> from_value(JS::VM&, JS::Value);
};
class KMAC : public AlgorithmMethods {
public:
virtual WebIDL::ExceptionOr<GC::Ref<JS::ArrayBuffer>> sign(AlgorithmParams const&, GC::Ref<CryptoKey>, ByteBuffer const&) override;
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;
virtual WebIDL::ExceptionOr<GC::Ref<JS::Object>> export_key(Bindings::KeyFormat, GC::Ref<CryptoKey>) override;
virtual WebIDL::ExceptionOr<JS::Value> get_key_length(AlgorithmParams const&) override;
static NonnullOwnPtr<AlgorithmMethods> create(JS::Realm& realm) { return adopt_own(*new KMAC(realm)); }
private:
explicit KMAC(JS::Realm& realm)
: AlgorithmMethods(realm)
{
}
};
// https://wicg.github.io/webcrypto-modern-algos/#dfn-AeadParams
// NOTE: The AeadParams dictionary is identical to the AesGcmParams
struct AeadParams : public AlgorithmParams {

View file

@ -21,6 +21,7 @@ GC_DEFINE_ALLOCATOR(RsaHashedKeyAlgorithm);
GC_DEFINE_ALLOCATOR(EcKeyAlgorithm);
GC_DEFINE_ALLOCATOR(AesKeyAlgorithm);
GC_DEFINE_ALLOCATOR(HmacKeyAlgorithm);
GC_DEFINE_ALLOCATOR(KmacKeyAlgorithm);
template<typename T>
static JS::ThrowCompletionOr<T*> impl_from(JS::VM& vm, StringView Name)
@ -237,4 +238,26 @@ JS_DEFINE_NATIVE_FUNCTION(HmacKeyAlgorithm::length_getter)
return TRY(Bindings::throw_dom_exception_if_needed(vm, [&] { return impl->length(); }));
}
GC::Ref<KmacKeyAlgorithm> KmacKeyAlgorithm::create(JS::Realm& realm)
{
return realm.create<KmacKeyAlgorithm>(realm);
}
KmacKeyAlgorithm::KmacKeyAlgorithm(JS::Realm& realm)
: KeyAlgorithm(realm)
{
}
void KmacKeyAlgorithm::initialize(JS::Realm& realm)
{
Base::initialize(realm);
define_native_accessor(realm, "length"_utf16_fly_string, length_getter, {}, JS::Attribute::Enumerable | JS::Attribute::Configurable);
}
JS_DEFINE_NATIVE_FUNCTION(KmacKeyAlgorithm::length_getter)
{
auto* impl = TRY(impl_from<KmacKeyAlgorithm>(vm, "KmacKeyAlgorithm"sv));
return TRY(Bindings::throw_dom_exception_if_needed(vm, [&] { return impl->length(); }));
}
}

View file

@ -176,4 +176,28 @@ private:
WebIDL::UnsignedLong m_length;
};
// https://wicg.github.io/webcrypto-modern-algos/#KmacKeyAlgorithm-dictionary
struct KmacKeyAlgorithm : public KeyAlgorithm {
JS_OBJECT(KmacKeyAlgorithm, KeyAlgorithm);
GC_DECLARE_ALLOCATOR(KmacKeyAlgorithm);
public:
static GC::Ref<KmacKeyAlgorithm> create(JS::Realm&);
virtual ~KmacKeyAlgorithm() override = default;
WebIDL::UnsignedLong length() const { return m_length; }
void set_length(WebIDL::UnsignedLong length) { m_length = length; }
protected:
KmacKeyAlgorithm(JS::Realm&);
virtual void initialize(JS::Realm&) override;
private:
JS_DECLARE_NATIVE_FUNCTION(length_getter);
WebIDL::UnsignedLong m_length { 0 };
};
}

View file

@ -1723,6 +1723,16 @@ SupportedAlgorithmsMap const& supported_algorithms()
define_an_algorithm<AesOcb>("exportKey"_string, "AES-OCB"_string);
define_an_algorithm<AesOcb, AesDerivedKeyParams>("get key length"_string, "AES-OCB"_string);
// https://wicg.github.io/webcrypto-modern-algos/#kmac-registration
for (auto const& algorithm : { "KMAC128"_string, "KMAC256"_string }) {
define_an_algorithm<KMAC, KmacParams>("sign"_string, algorithm);
define_an_algorithm<KMAC, KmacParams>("verify"_string, algorithm);
define_an_algorithm<KMAC, KmacKeyGenParams>("generateKey"_string, algorithm);
define_an_algorithm<KMAC, KmacImportParams>("importKey"_string, algorithm);
define_an_algorithm<KMAC>("exportKey"_string, algorithm);
define_an_algorithm<KMAC, KmacImportParams>("get key length"_string, algorithm);
}
return internal_object;
}

View file

@ -2,8 +2,7 @@ Harness status: OK
Found 552 tests
360 Pass
192 Fail
552 Pass
Pass Bad algorithm: generateKey(AES, false, [decrypt])
Pass Bad algorithm: generateKey(AES, true, [decrypt])
Pass Bad algorithm: generateKey(AES, RED, [decrypt])
@ -364,195 +363,195 @@ Pass Empty algorithm: generateKey({}, false, [decrypt, sign, deriveBits, decrypt
Pass Empty algorithm: generateKey({}, true, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
Pass Empty algorithm: generateKey({}, RED, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
Pass Empty algorithm: generateKey({}, 7, [decrypt, sign, deriveBits, decrypt, sign, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, encrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, decrypt])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, wrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, unwrapKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, deriveKey])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, deriveBits])
Fail Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, encrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, decrypt])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, wrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, unwrapKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, deriveKey])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, deriveBits])
Fail Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, encrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, decrypt])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, wrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, unwrapKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, deriveKey])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, deriveBits])
Fail Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, deriveBits])
Fail Empty usages: generateKey({length: 128, name: KMAC128}, false, [])
Fail Empty usages: generateKey({length: 128, name: KMAC128}, true, [])
Fail Empty usages: generateKey({length: 160, name: KMAC128}, false, [])
Fail Empty usages: generateKey({length: 160, name: KMAC128}, true, [])
Fail Empty usages: generateKey({length: 256, name: KMAC128}, false, [])
Fail Empty usages: generateKey({length: 256, name: KMAC128}, true, [])
Fail Empty usages: generateKey({length: 128, name: KMAC256}, false, [])
Fail Empty usages: generateKey({length: 128, name: KMAC256}, true, [])
Fail Empty usages: generateKey({length: 160, name: KMAC256}, false, [])
Fail Empty usages: generateKey({length: 160, name: KMAC256}, true, [])
Fail Empty usages: generateKey({length: 256, name: KMAC256}, false, [])
Fail Empty usages: generateKey({length: 256, name: KMAC256}, true, [])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, sign, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [verify, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, sign, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [verify, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, sign, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [verify, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, encrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, decrypt])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, wrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, unwrapKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, deriveKey])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, sign, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [verify, deriveBits])
Pass Bad usages: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, encrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, decrypt])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, wrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, unwrapKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, deriveKey])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, sign, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [verify, deriveBits])
Pass Bad usages: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, encrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, decrypt])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, wrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, unwrapKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, deriveKey])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, sign, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [verify, deriveBits])
Pass Bad usages: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify, deriveBits])
Pass Empty usages: generateKey({length: 128, name: KMAC128}, false, [])
Pass Empty usages: generateKey({length: 128, name: KMAC128}, true, [])
Pass Empty usages: generateKey({length: 160, name: KMAC128}, false, [])
Pass Empty usages: generateKey({length: 160, name: KMAC128}, true, [])
Pass Empty usages: generateKey({length: 256, name: KMAC128}, false, [])
Pass Empty usages: generateKey({length: 256, name: KMAC128}, true, [])
Pass Empty usages: generateKey({length: 128, name: KMAC256}, false, [])
Pass Empty usages: generateKey({length: 128, name: KMAC256}, true, [])
Pass Empty usages: generateKey({length: 160, name: KMAC256}, false, [])
Pass Empty usages: generateKey({length: 160, name: KMAC256}, true, [])
Pass Empty usages: generateKey({length: 256, name: KMAC256}, false, [])
Pass Empty usages: generateKey({length: 256, name: KMAC256}, true, [])

View file

@ -2,148 +2,148 @@ Harness status: OK
Found 144 tests
144 Fail
Fail Success: generateKey({length: 128, name: KMAC128}, false, [sign])
Fail Success: generateKey({length: 128, name: KMAC128}, true, [sign])
Fail Success: generateKey({length: 128, name: KMAC128}, false, [verify, sign])
Fail Success: generateKey({length: 128, name: KMAC128}, true, [verify, sign])
Fail Success: generateKey({length: 128, name: KMAC128}, false, [verify])
Fail Success: generateKey({length: 128, name: KMAC128}, true, [verify])
Fail Success: generateKey({length: 128, name: KMAC128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: KMAC128}, false, [sign])
Fail Success: generateKey({length: 160, name: KMAC128}, true, [sign])
Fail Success: generateKey({length: 160, name: KMAC128}, false, [verify, sign])
Fail Success: generateKey({length: 160, name: KMAC128}, true, [verify, sign])
Fail Success: generateKey({length: 160, name: KMAC128}, false, [verify])
Fail Success: generateKey({length: 160, name: KMAC128}, true, [verify])
Fail Success: generateKey({length: 160, name: KMAC128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: KMAC128}, false, [sign])
Fail Success: generateKey({length: 256, name: KMAC128}, true, [sign])
Fail Success: generateKey({length: 256, name: KMAC128}, false, [verify, sign])
Fail Success: generateKey({length: 256, name: KMAC128}, true, [verify, sign])
Fail Success: generateKey({length: 256, name: KMAC128}, false, [verify])
Fail Success: generateKey({length: 256, name: KMAC128}, true, [verify])
Fail Success: generateKey({length: 256, name: KMAC128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: kmac128}, false, [sign])
Fail Success: generateKey({length: 128, name: kmac128}, true, [sign])
Fail Success: generateKey({length: 128, name: kmac128}, false, [verify, sign])
Fail Success: generateKey({length: 128, name: kmac128}, true, [verify, sign])
Fail Success: generateKey({length: 128, name: kmac128}, false, [verify])
Fail Success: generateKey({length: 128, name: kmac128}, true, [verify])
Fail Success: generateKey({length: 128, name: kmac128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: kmac128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: kmac128}, false, [sign])
Fail Success: generateKey({length: 160, name: kmac128}, true, [sign])
Fail Success: generateKey({length: 160, name: kmac128}, false, [verify, sign])
Fail Success: generateKey({length: 160, name: kmac128}, true, [verify, sign])
Fail Success: generateKey({length: 160, name: kmac128}, false, [verify])
Fail Success: generateKey({length: 160, name: kmac128}, true, [verify])
Fail Success: generateKey({length: 160, name: kmac128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: kmac128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: kmac128}, false, [sign])
Fail Success: generateKey({length: 256, name: kmac128}, true, [sign])
Fail Success: generateKey({length: 256, name: kmac128}, false, [verify, sign])
Fail Success: generateKey({length: 256, name: kmac128}, true, [verify, sign])
Fail Success: generateKey({length: 256, name: kmac128}, false, [verify])
Fail Success: generateKey({length: 256, name: kmac128}, true, [verify])
Fail Success: generateKey({length: 256, name: kmac128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: kmac128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: Kmac128}, false, [sign])
Fail Success: generateKey({length: 128, name: Kmac128}, true, [sign])
Fail Success: generateKey({length: 128, name: Kmac128}, false, [verify, sign])
Fail Success: generateKey({length: 128, name: Kmac128}, true, [verify, sign])
Fail Success: generateKey({length: 128, name: Kmac128}, false, [verify])
Fail Success: generateKey({length: 128, name: Kmac128}, true, [verify])
Fail Success: generateKey({length: 128, name: Kmac128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: Kmac128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: Kmac128}, false, [sign])
Fail Success: generateKey({length: 160, name: Kmac128}, true, [sign])
Fail Success: generateKey({length: 160, name: Kmac128}, false, [verify, sign])
Fail Success: generateKey({length: 160, name: Kmac128}, true, [verify, sign])
Fail Success: generateKey({length: 160, name: Kmac128}, false, [verify])
Fail Success: generateKey({length: 160, name: Kmac128}, true, [verify])
Fail Success: generateKey({length: 160, name: Kmac128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: Kmac128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: Kmac128}, false, [sign])
Fail Success: generateKey({length: 256, name: Kmac128}, true, [sign])
Fail Success: generateKey({length: 256, name: Kmac128}, false, [verify, sign])
Fail Success: generateKey({length: 256, name: Kmac128}, true, [verify, sign])
Fail Success: generateKey({length: 256, name: Kmac128}, false, [verify])
Fail Success: generateKey({length: 256, name: Kmac128}, true, [verify])
Fail Success: generateKey({length: 256, name: Kmac128}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: Kmac128}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: KMAC256}, false, [sign])
Fail Success: generateKey({length: 128, name: KMAC256}, true, [sign])
Fail Success: generateKey({length: 128, name: KMAC256}, false, [verify, sign])
Fail Success: generateKey({length: 128, name: KMAC256}, true, [verify, sign])
Fail Success: generateKey({length: 128, name: KMAC256}, false, [verify])
Fail Success: generateKey({length: 128, name: KMAC256}, true, [verify])
Fail Success: generateKey({length: 128, name: KMAC256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: KMAC256}, false, [sign])
Fail Success: generateKey({length: 160, name: KMAC256}, true, [sign])
Fail Success: generateKey({length: 160, name: KMAC256}, false, [verify, sign])
Fail Success: generateKey({length: 160, name: KMAC256}, true, [verify, sign])
Fail Success: generateKey({length: 160, name: KMAC256}, false, [verify])
Fail Success: generateKey({length: 160, name: KMAC256}, true, [verify])
Fail Success: generateKey({length: 160, name: KMAC256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: KMAC256}, false, [sign])
Fail Success: generateKey({length: 256, name: KMAC256}, true, [sign])
Fail Success: generateKey({length: 256, name: KMAC256}, false, [verify, sign])
Fail Success: generateKey({length: 256, name: KMAC256}, true, [verify, sign])
Fail Success: generateKey({length: 256, name: KMAC256}, false, [verify])
Fail Success: generateKey({length: 256, name: KMAC256}, true, [verify])
Fail Success: generateKey({length: 256, name: KMAC256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: kmac256}, false, [sign])
Fail Success: generateKey({length: 128, name: kmac256}, true, [sign])
Fail Success: generateKey({length: 128, name: kmac256}, false, [verify, sign])
Fail Success: generateKey({length: 128, name: kmac256}, true, [verify, sign])
Fail Success: generateKey({length: 128, name: kmac256}, false, [verify])
Fail Success: generateKey({length: 128, name: kmac256}, true, [verify])
Fail Success: generateKey({length: 128, name: kmac256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: kmac256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: kmac256}, false, [sign])
Fail Success: generateKey({length: 160, name: kmac256}, true, [sign])
Fail Success: generateKey({length: 160, name: kmac256}, false, [verify, sign])
Fail Success: generateKey({length: 160, name: kmac256}, true, [verify, sign])
Fail Success: generateKey({length: 160, name: kmac256}, false, [verify])
Fail Success: generateKey({length: 160, name: kmac256}, true, [verify])
Fail Success: generateKey({length: 160, name: kmac256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: kmac256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: kmac256}, false, [sign])
Fail Success: generateKey({length: 256, name: kmac256}, true, [sign])
Fail Success: generateKey({length: 256, name: kmac256}, false, [verify, sign])
Fail Success: generateKey({length: 256, name: kmac256}, true, [verify, sign])
Fail Success: generateKey({length: 256, name: kmac256}, false, [verify])
Fail Success: generateKey({length: 256, name: kmac256}, true, [verify])
Fail Success: generateKey({length: 256, name: kmac256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: kmac256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: Kmac256}, false, [sign])
Fail Success: generateKey({length: 128, name: Kmac256}, true, [sign])
Fail Success: generateKey({length: 128, name: Kmac256}, false, [verify, sign])
Fail Success: generateKey({length: 128, name: Kmac256}, true, [verify, sign])
Fail Success: generateKey({length: 128, name: Kmac256}, false, [verify])
Fail Success: generateKey({length: 128, name: Kmac256}, true, [verify])
Fail Success: generateKey({length: 128, name: Kmac256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 128, name: Kmac256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: Kmac256}, false, [sign])
Fail Success: generateKey({length: 160, name: Kmac256}, true, [sign])
Fail Success: generateKey({length: 160, name: Kmac256}, false, [verify, sign])
Fail Success: generateKey({length: 160, name: Kmac256}, true, [verify, sign])
Fail Success: generateKey({length: 160, name: Kmac256}, false, [verify])
Fail Success: generateKey({length: 160, name: Kmac256}, true, [verify])
Fail Success: generateKey({length: 160, name: Kmac256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 160, name: Kmac256}, true, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: Kmac256}, false, [sign])
Fail Success: generateKey({length: 256, name: Kmac256}, true, [sign])
Fail Success: generateKey({length: 256, name: Kmac256}, false, [verify, sign])
Fail Success: generateKey({length: 256, name: Kmac256}, true, [verify, sign])
Fail Success: generateKey({length: 256, name: Kmac256}, false, [verify])
Fail Success: generateKey({length: 256, name: Kmac256}, true, [verify])
Fail Success: generateKey({length: 256, name: Kmac256}, false, [sign, verify, sign, verify])
Fail Success: generateKey({length: 256, name: Kmac256}, true, [sign, verify, sign, verify])
144 Pass
Pass Success: generateKey({length: 128, name: KMAC128}, false, [sign])
Pass Success: generateKey({length: 128, name: KMAC128}, true, [sign])
Pass Success: generateKey({length: 128, name: KMAC128}, false, [verify, sign])
Pass Success: generateKey({length: 128, name: KMAC128}, true, [verify, sign])
Pass Success: generateKey({length: 128, name: KMAC128}, false, [verify])
Pass Success: generateKey({length: 128, name: KMAC128}, true, [verify])
Pass Success: generateKey({length: 128, name: KMAC128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: KMAC128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: KMAC128}, false, [sign])
Pass Success: generateKey({length: 160, name: KMAC128}, true, [sign])
Pass Success: generateKey({length: 160, name: KMAC128}, false, [verify, sign])
Pass Success: generateKey({length: 160, name: KMAC128}, true, [verify, sign])
Pass Success: generateKey({length: 160, name: KMAC128}, false, [verify])
Pass Success: generateKey({length: 160, name: KMAC128}, true, [verify])
Pass Success: generateKey({length: 160, name: KMAC128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: KMAC128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: KMAC128}, false, [sign])
Pass Success: generateKey({length: 256, name: KMAC128}, true, [sign])
Pass Success: generateKey({length: 256, name: KMAC128}, false, [verify, sign])
Pass Success: generateKey({length: 256, name: KMAC128}, true, [verify, sign])
Pass Success: generateKey({length: 256, name: KMAC128}, false, [verify])
Pass Success: generateKey({length: 256, name: KMAC128}, true, [verify])
Pass Success: generateKey({length: 256, name: KMAC128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: KMAC128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: kmac128}, false, [sign])
Pass Success: generateKey({length: 128, name: kmac128}, true, [sign])
Pass Success: generateKey({length: 128, name: kmac128}, false, [verify, sign])
Pass Success: generateKey({length: 128, name: kmac128}, true, [verify, sign])
Pass Success: generateKey({length: 128, name: kmac128}, false, [verify])
Pass Success: generateKey({length: 128, name: kmac128}, true, [verify])
Pass Success: generateKey({length: 128, name: kmac128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: kmac128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: kmac128}, false, [sign])
Pass Success: generateKey({length: 160, name: kmac128}, true, [sign])
Pass Success: generateKey({length: 160, name: kmac128}, false, [verify, sign])
Pass Success: generateKey({length: 160, name: kmac128}, true, [verify, sign])
Pass Success: generateKey({length: 160, name: kmac128}, false, [verify])
Pass Success: generateKey({length: 160, name: kmac128}, true, [verify])
Pass Success: generateKey({length: 160, name: kmac128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: kmac128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: kmac128}, false, [sign])
Pass Success: generateKey({length: 256, name: kmac128}, true, [sign])
Pass Success: generateKey({length: 256, name: kmac128}, false, [verify, sign])
Pass Success: generateKey({length: 256, name: kmac128}, true, [verify, sign])
Pass Success: generateKey({length: 256, name: kmac128}, false, [verify])
Pass Success: generateKey({length: 256, name: kmac128}, true, [verify])
Pass Success: generateKey({length: 256, name: kmac128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: kmac128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: Kmac128}, false, [sign])
Pass Success: generateKey({length: 128, name: Kmac128}, true, [sign])
Pass Success: generateKey({length: 128, name: Kmac128}, false, [verify, sign])
Pass Success: generateKey({length: 128, name: Kmac128}, true, [verify, sign])
Pass Success: generateKey({length: 128, name: Kmac128}, false, [verify])
Pass Success: generateKey({length: 128, name: Kmac128}, true, [verify])
Pass Success: generateKey({length: 128, name: Kmac128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: Kmac128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: Kmac128}, false, [sign])
Pass Success: generateKey({length: 160, name: Kmac128}, true, [sign])
Pass Success: generateKey({length: 160, name: Kmac128}, false, [verify, sign])
Pass Success: generateKey({length: 160, name: Kmac128}, true, [verify, sign])
Pass Success: generateKey({length: 160, name: Kmac128}, false, [verify])
Pass Success: generateKey({length: 160, name: Kmac128}, true, [verify])
Pass Success: generateKey({length: 160, name: Kmac128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: Kmac128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: Kmac128}, false, [sign])
Pass Success: generateKey({length: 256, name: Kmac128}, true, [sign])
Pass Success: generateKey({length: 256, name: Kmac128}, false, [verify, sign])
Pass Success: generateKey({length: 256, name: Kmac128}, true, [verify, sign])
Pass Success: generateKey({length: 256, name: Kmac128}, false, [verify])
Pass Success: generateKey({length: 256, name: Kmac128}, true, [verify])
Pass Success: generateKey({length: 256, name: Kmac128}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: Kmac128}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: KMAC256}, false, [sign])
Pass Success: generateKey({length: 128, name: KMAC256}, true, [sign])
Pass Success: generateKey({length: 128, name: KMAC256}, false, [verify, sign])
Pass Success: generateKey({length: 128, name: KMAC256}, true, [verify, sign])
Pass Success: generateKey({length: 128, name: KMAC256}, false, [verify])
Pass Success: generateKey({length: 128, name: KMAC256}, true, [verify])
Pass Success: generateKey({length: 128, name: KMAC256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: KMAC256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: KMAC256}, false, [sign])
Pass Success: generateKey({length: 160, name: KMAC256}, true, [sign])
Pass Success: generateKey({length: 160, name: KMAC256}, false, [verify, sign])
Pass Success: generateKey({length: 160, name: KMAC256}, true, [verify, sign])
Pass Success: generateKey({length: 160, name: KMAC256}, false, [verify])
Pass Success: generateKey({length: 160, name: KMAC256}, true, [verify])
Pass Success: generateKey({length: 160, name: KMAC256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: KMAC256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: KMAC256}, false, [sign])
Pass Success: generateKey({length: 256, name: KMAC256}, true, [sign])
Pass Success: generateKey({length: 256, name: KMAC256}, false, [verify, sign])
Pass Success: generateKey({length: 256, name: KMAC256}, true, [verify, sign])
Pass Success: generateKey({length: 256, name: KMAC256}, false, [verify])
Pass Success: generateKey({length: 256, name: KMAC256}, true, [verify])
Pass Success: generateKey({length: 256, name: KMAC256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: KMAC256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: kmac256}, false, [sign])
Pass Success: generateKey({length: 128, name: kmac256}, true, [sign])
Pass Success: generateKey({length: 128, name: kmac256}, false, [verify, sign])
Pass Success: generateKey({length: 128, name: kmac256}, true, [verify, sign])
Pass Success: generateKey({length: 128, name: kmac256}, false, [verify])
Pass Success: generateKey({length: 128, name: kmac256}, true, [verify])
Pass Success: generateKey({length: 128, name: kmac256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: kmac256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: kmac256}, false, [sign])
Pass Success: generateKey({length: 160, name: kmac256}, true, [sign])
Pass Success: generateKey({length: 160, name: kmac256}, false, [verify, sign])
Pass Success: generateKey({length: 160, name: kmac256}, true, [verify, sign])
Pass Success: generateKey({length: 160, name: kmac256}, false, [verify])
Pass Success: generateKey({length: 160, name: kmac256}, true, [verify])
Pass Success: generateKey({length: 160, name: kmac256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: kmac256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: kmac256}, false, [sign])
Pass Success: generateKey({length: 256, name: kmac256}, true, [sign])
Pass Success: generateKey({length: 256, name: kmac256}, false, [verify, sign])
Pass Success: generateKey({length: 256, name: kmac256}, true, [verify, sign])
Pass Success: generateKey({length: 256, name: kmac256}, false, [verify])
Pass Success: generateKey({length: 256, name: kmac256}, true, [verify])
Pass Success: generateKey({length: 256, name: kmac256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: kmac256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: Kmac256}, false, [sign])
Pass Success: generateKey({length: 128, name: Kmac256}, true, [sign])
Pass Success: generateKey({length: 128, name: Kmac256}, false, [verify, sign])
Pass Success: generateKey({length: 128, name: Kmac256}, true, [verify, sign])
Pass Success: generateKey({length: 128, name: Kmac256}, false, [verify])
Pass Success: generateKey({length: 128, name: Kmac256}, true, [verify])
Pass Success: generateKey({length: 128, name: Kmac256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 128, name: Kmac256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: Kmac256}, false, [sign])
Pass Success: generateKey({length: 160, name: Kmac256}, true, [sign])
Pass Success: generateKey({length: 160, name: Kmac256}, false, [verify, sign])
Pass Success: generateKey({length: 160, name: Kmac256}, true, [verify, sign])
Pass Success: generateKey({length: 160, name: Kmac256}, false, [verify])
Pass Success: generateKey({length: 160, name: Kmac256}, true, [verify])
Pass Success: generateKey({length: 160, name: Kmac256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 160, name: Kmac256}, true, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: Kmac256}, false, [sign])
Pass Success: generateKey({length: 256, name: Kmac256}, true, [sign])
Pass Success: generateKey({length: 256, name: Kmac256}, false, [verify, sign])
Pass Success: generateKey({length: 256, name: Kmac256}, true, [verify, sign])
Pass Success: generateKey({length: 256, name: Kmac256}, false, [verify])
Pass Success: generateKey({length: 256, name: Kmac256}, true, [verify])
Pass Success: generateKey({length: 256, name: Kmac256}, false, [sign, verify, sign, verify])
Pass Success: generateKey({length: 256, name: Kmac256}, true, [sign, verify, sign, verify])

View file

@ -2,124 +2,124 @@ Harness status: OK
Found 120 tests
120 Fail
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify, sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [sign])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [verify, sign])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [verify])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify, sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [sign])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [verify, sign])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [verify])
Fail Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify, sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [sign])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [verify, sign])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [verify])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify, sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [sign])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [verify, sign])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [verify])
Fail Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify, sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [sign])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [verify, sign])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [verify])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify, sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [sign])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [verify, sign])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [verify])
Fail Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify, sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [sign])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [verify, sign])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [verify])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify, sign])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify])
Fail Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [sign])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [verify, sign])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [verify])
Fail Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [sign, verify, sign, verify])
Fail Empty Usages: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify, sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [sign])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [verify, sign])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [verify])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify, sign])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify])
Fail Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [sign])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [verify, sign])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [verify])
Fail Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [sign, verify, sign, verify])
Fail Empty Usages: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify, sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [sign])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [verify, sign])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [verify])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify, sign])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify])
Fail Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [sign])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [verify, sign])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [verify])
Fail Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [sign, verify, sign, verify])
Fail Empty Usages: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [])
120 Pass
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify, sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [sign])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [verify, sign])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [verify])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, true, [])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify, sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [sign])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [verify, sign])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [verify])
Pass Good parameters: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC128}, false, [])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify, sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [sign])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [verify, sign])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [verify])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, true, [])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify, sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [sign])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [verify, sign])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [verify])
Pass Good parameters: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC128}, false, [])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify, sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [verify])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, true, [])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [sign])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [verify, sign])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [verify])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, true, [])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify, sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [verify])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC128}, false, [])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [sign])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [verify, sign])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [verify])
Pass Good parameters: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (jwk, {alg: K128, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC128}, false, [])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify, sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [sign])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [verify, sign])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [verify])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, true, [])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify, sign])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify])
Pass Good parameters: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [sign])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [verify, sign])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [verify])
Pass Good parameters: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [sign, verify, sign, verify])
Pass Empty Usages: 128 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEA, kty: oct}, {name: KMAC256}, false, [])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify, sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [sign])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [verify, sign])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [verify])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, true, [])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify, sign])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify])
Pass Good parameters: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [sign])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [verify, sign])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [verify])
Pass Good parameters: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [sign, verify, sign, verify])
Pass Empty Usages: 192 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcY, kty: oct}, {name: KMAC256}, false, [])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify, sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [verify])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, true, [])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [sign])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [verify, sign])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [verify])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, true, [])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify, sign])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [verify])
Pass Good parameters: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (raw-secret, {0: 1, 1: 2, 10: 11, 11: 12, 12: 13, 13: 14, 14: 15, 15: 16, 16: 17, 17: 18, 18: 19, 19: 20, 2: 3, 20: 21, 21: 22, 22: 23, 23: 24, 24: 25, 25: 26, 26: 27, 27: 28, 28: 29, 29: 30, 3: 4, 30: 31, 31: 32, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}, {name: KMAC256}, false, [])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [sign])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [verify, sign])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [verify])
Pass Good parameters: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [sign, verify, sign, verify])
Pass Empty Usages: 256 bits (jwk, {alg: K256, k: AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA, kty: oct}, {name: KMAC256}, false, [])

View file

@ -2,108 +2,107 @@ Harness status: OK
Found 103 tests
1 Pass
102 Fail
103 Pass
Pass setup
Fail importVectorKeys step: KMAC128 with no customization verification
Fail importVectorKeys step: KMAC128 with customization verification
Fail importVectorKeys step: KMAC128 with large data and customization verification
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification
Fail importVectorKeys step: KMAC256 with large data and no customization verification
Fail importVectorKeys step: KMAC256 with large data and customization verification
Fail importVectorKeys step: KMAC128 with no customization verification with altered signature during call
Fail importVectorKeys step: KMAC128 with customization verification with altered signature during call
Fail importVectorKeys step: KMAC128 with large data and customization verification with altered signature during call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification with altered signature during call
Fail importVectorKeys step: KMAC256 with large data and no customization verification with altered signature during call
Fail importVectorKeys step: KMAC256 with large data and customization verification with altered signature during call
Fail importVectorKeys step: KMAC128 with no customization verification with altered signature after call
Fail importVectorKeys step: KMAC128 with customization verification with altered signature after call
Fail importVectorKeys step: KMAC128 with large data and customization verification with altered signature after call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification with altered signature after call
Fail importVectorKeys step: KMAC256 with large data and no customization verification with altered signature after call
Fail importVectorKeys step: KMAC256 with large data and customization verification with altered signature after call
Fail importVectorKeys step: KMAC128 with no customization verification with transferred signature during call
Fail importVectorKeys step: KMAC128 with customization verification with transferred signature during call
Fail importVectorKeys step: KMAC128 with large data and customization verification with transferred signature during call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification with transferred signature during call
Fail importVectorKeys step: KMAC256 with large data and no customization verification with transferred signature during call
Fail importVectorKeys step: KMAC256 with large data and customization verification with transferred signature during call
Fail importVectorKeys step: KMAC128 with no customization verification with transferred signature after call
Fail importVectorKeys step: KMAC128 with customization verification with transferred signature after call
Fail importVectorKeys step: KMAC128 with large data and customization verification with transferred signature after call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification with transferred signature after call
Fail importVectorKeys step: KMAC256 with large data and no customization verification with transferred signature after call
Fail importVectorKeys step: KMAC256 with large data and customization verification with transferred signature after call
Fail importVectorKeys step: KMAC128 with no customization with altered plaintext during call
Fail importVectorKeys step: KMAC128 with customization with altered plaintext during call
Fail importVectorKeys step: KMAC128 with large data and customization with altered plaintext during call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output with altered plaintext during call
Fail importVectorKeys step: KMAC256 with large data and no customization with altered plaintext during call
Fail importVectorKeys step: KMAC256 with large data and customization with altered plaintext during call
Fail importVectorKeys step: KMAC128 with no customization with altered plaintext after call
Fail importVectorKeys step: KMAC128 with customization with altered plaintext after call
Fail importVectorKeys step: KMAC128 with large data and customization with altered plaintext after call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output with altered plaintext after call
Fail importVectorKeys step: KMAC256 with large data and no customization with altered plaintext after call
Fail importVectorKeys step: KMAC256 with large data and customization with altered plaintext after call
Fail importVectorKeys step: KMAC128 with no customization with transferred plaintext during call
Fail importVectorKeys step: KMAC128 with customization with transferred plaintext during call
Fail importVectorKeys step: KMAC128 with large data and customization with transferred plaintext during call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output with transferred plaintext during call
Fail importVectorKeys step: KMAC256 with large data and no customization with transferred plaintext during call
Fail importVectorKeys step: KMAC256 with large data and customization with transferred plaintext during call
Fail importVectorKeys step: KMAC128 with no customization with transferred plaintext after call
Fail importVectorKeys step: KMAC128 with customization with transferred plaintext after call
Fail importVectorKeys step: KMAC128 with large data and customization with transferred plaintext after call
Fail importVectorKeys step: KMAC256 with customization and 512-bit output with transferred plaintext after call
Fail importVectorKeys step: KMAC256 with large data and no customization with transferred plaintext after call
Fail importVectorKeys step: KMAC256 with large data and customization with transferred plaintext after call
Fail importVectorKeys step: KMAC128 with no customization no verify usage
Fail importVectorKeys step: KMAC128 with customization no verify usage
Fail importVectorKeys step: KMAC128 with large data and customization no verify usage
Fail importVectorKeys step: KMAC256 with customization and 512-bit output no verify usage
Fail importVectorKeys step: KMAC256 with large data and no customization no verify usage
Fail importVectorKeys step: KMAC256 with large data and customization no verify usage
Fail importVectorKeys step: KMAC128 with no customization round trip
Fail importVectorKeys step: KMAC128 with customization round trip
Fail importVectorKeys step: KMAC128 with large data and customization round trip
Fail importVectorKeys step: KMAC256 with customization and 512-bit output round trip
Fail importVectorKeys step: KMAC256 with large data and no customization round trip
Fail importVectorKeys step: KMAC256 with large data and customization round trip
Fail importVectorKeys step: KMAC128 with no customization verification failure due to wrong plaintext
Fail importVectorKeys step: KMAC128 with customization verification failure due to wrong plaintext
Fail importVectorKeys step: KMAC128 with large data and customization verification failure due to wrong plaintext
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification failure due to wrong plaintext
Fail importVectorKeys step: KMAC256 with large data and no customization verification failure due to wrong plaintext
Fail importVectorKeys step: KMAC256 with large data and customization verification failure due to wrong plaintext
Fail importVectorKeys step: KMAC128 with no customization verification failure due to wrong signature
Fail importVectorKeys step: KMAC128 with customization verification failure due to wrong signature
Fail importVectorKeys step: KMAC128 with large data and customization verification failure due to wrong signature
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification failure due to wrong signature
Fail importVectorKeys step: KMAC256 with large data and no customization verification failure due to wrong signature
Fail importVectorKeys step: KMAC256 with large data and customization verification failure due to wrong signature
Fail importVectorKeys step: KMAC128 with no customization verification failure due to short signature
Fail importVectorKeys step: KMAC128 with customization verification failure due to short signature
Fail importVectorKeys step: KMAC128 with large data and customization verification failure due to short signature
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification failure due to short signature
Fail importVectorKeys step: KMAC256 with large data and no customization verification failure due to short signature
Fail importVectorKeys step: KMAC256 with large data and customization verification failure due to short signature
Fail importVectorKeys step: KMAC128 with no customization verification failure due to wrong length parameter
Fail importVectorKeys step: KMAC128 with customization verification failure due to wrong length parameter
Fail importVectorKeys step: KMAC128 with large data and customization verification failure due to wrong length parameter
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verification failure due to wrong length parameter
Fail importVectorKeys step: KMAC256 with large data and no customization verification failure due to wrong length parameter
Fail importVectorKeys step: KMAC256 with large data and customization verification failure due to wrong length parameter
Fail importVectorKeys step: KMAC128 with no customization signing with wrong algorithm name
Fail importVectorKeys step: KMAC128 with customization signing with wrong algorithm name
Fail importVectorKeys step: KMAC128 with large data and customization signing with wrong algorithm name
Fail importVectorKeys step: KMAC256 with customization and 512-bit output signing with wrong algorithm name
Fail importVectorKeys step: KMAC256 with large data and no customization signing with wrong algorithm name
Fail importVectorKeys step: KMAC256 with large data and customization signing with wrong algorithm name
Fail importVectorKeys step: KMAC128 with no customization verifying with wrong algorithm name
Fail importVectorKeys step: KMAC128 with customization verifying with wrong algorithm name
Fail importVectorKeys step: KMAC128 with large data and customization verifying with wrong algorithm name
Fail importVectorKeys step: KMAC256 with customization and 512-bit output verifying with wrong algorithm name
Fail importVectorKeys step: KMAC256 with large data and no customization verifying with wrong algorithm name
Fail importVectorKeys step: KMAC256 with large data and customization verifying with wrong algorithm name
Pass KMAC128 with no customization verification
Pass KMAC128 with customization verification
Pass KMAC128 with large data and customization verification
Pass KMAC256 with customization and 512-bit output verification
Pass KMAC256 with large data and no customization verification
Pass KMAC256 with large data and customization verification
Pass KMAC128 with no customization verification with altered signature during call
Pass KMAC128 with customization verification with altered signature during call
Pass KMAC128 with large data and customization verification with altered signature during call
Pass KMAC256 with customization and 512-bit output verification with altered signature during call
Pass KMAC256 with large data and no customization verification with altered signature during call
Pass KMAC256 with large data and customization verification with altered signature during call
Pass KMAC128 with no customization verification with altered signature after call
Pass KMAC128 with customization verification with altered signature after call
Pass KMAC128 with large data and customization verification with altered signature after call
Pass KMAC256 with customization and 512-bit output verification with altered signature after call
Pass KMAC256 with large data and no customization verification with altered signature after call
Pass KMAC256 with large data and customization verification with altered signature after call
Pass KMAC128 with no customization verification with transferred signature during call
Pass KMAC128 with customization verification with transferred signature during call
Pass KMAC128 with large data and customization verification with transferred signature during call
Pass KMAC256 with customization and 512-bit output verification with transferred signature during call
Pass KMAC256 with large data and no customization verification with transferred signature during call
Pass KMAC256 with large data and customization verification with transferred signature during call
Pass KMAC128 with no customization verification with transferred signature after call
Pass KMAC128 with customization verification with transferred signature after call
Pass KMAC128 with large data and customization verification with transferred signature after call
Pass KMAC256 with customization and 512-bit output verification with transferred signature after call
Pass KMAC256 with large data and no customization verification with transferred signature after call
Pass KMAC256 with large data and customization verification with transferred signature after call
Pass KMAC128 with no customization with altered plaintext during call
Pass KMAC128 with customization with altered plaintext during call
Pass KMAC128 with large data and customization with altered plaintext during call
Pass KMAC256 with customization and 512-bit output with altered plaintext during call
Pass KMAC256 with large data and no customization with altered plaintext during call
Pass KMAC256 with large data and customization with altered plaintext during call
Pass KMAC128 with no customization with altered plaintext after call
Pass KMAC128 with customization with altered plaintext after call
Pass KMAC128 with large data and customization with altered plaintext after call
Pass KMAC256 with customization and 512-bit output with altered plaintext after call
Pass KMAC256 with large data and no customization with altered plaintext after call
Pass KMAC256 with large data and customization with altered plaintext after call
Pass KMAC128 with no customization with transferred plaintext during call
Pass KMAC128 with customization with transferred plaintext during call
Pass KMAC128 with large data and customization with transferred plaintext during call
Pass KMAC256 with customization and 512-bit output with transferred plaintext during call
Pass KMAC256 with large data and no customization with transferred plaintext during call
Pass KMAC256 with large data and customization with transferred plaintext during call
Pass KMAC128 with no customization with transferred plaintext after call
Pass KMAC128 with customization with transferred plaintext after call
Pass KMAC128 with large data and customization with transferred plaintext after call
Pass KMAC256 with customization and 512-bit output with transferred plaintext after call
Pass KMAC256 with large data and no customization with transferred plaintext after call
Pass KMAC256 with large data and customization with transferred plaintext after call
Pass KMAC128 with no customization no verify usage
Pass KMAC128 with customization no verify usage
Pass KMAC128 with large data and customization no verify usage
Pass KMAC256 with customization and 512-bit output no verify usage
Pass KMAC256 with large data and no customization no verify usage
Pass KMAC256 with large data and customization no verify usage
Pass KMAC128 with no customization round trip
Pass KMAC128 with customization round trip
Pass KMAC128 with large data and customization round trip
Pass KMAC256 with customization and 512-bit output round trip
Pass KMAC256 with large data and no customization round trip
Pass KMAC256 with large data and customization round trip
Pass KMAC128 with no customization signing with wrong algorithm name
Pass KMAC128 with customization signing with wrong algorithm name
Pass KMAC128 with large data and customization signing with wrong algorithm name
Pass KMAC256 with customization and 512-bit output signing with wrong algorithm name
Pass KMAC256 with large data and no customization signing with wrong algorithm name
Pass KMAC256 with large data and customization signing with wrong algorithm name
Pass KMAC128 with no customization verifying with wrong algorithm name
Pass KMAC128 with customization verifying with wrong algorithm name
Pass KMAC128 with large data and customization verifying with wrong algorithm name
Pass KMAC256 with customization and 512-bit output verifying with wrong algorithm name
Pass KMAC256 with large data and no customization verifying with wrong algorithm name
Pass KMAC256 with large data and customization verifying with wrong algorithm name
Pass KMAC128 with no customization verification failure due to wrong plaintext
Pass KMAC128 with customization verification failure due to wrong plaintext
Pass KMAC128 with large data and customization verification failure due to wrong plaintext
Pass KMAC256 with customization and 512-bit output verification failure due to wrong plaintext
Pass KMAC256 with large data and no customization verification failure due to wrong plaintext
Pass KMAC256 with large data and customization verification failure due to wrong plaintext
Pass KMAC128 with no customization verification failure due to wrong signature
Pass KMAC128 with customization verification failure due to wrong signature
Pass KMAC128 with large data and customization verification failure due to wrong signature
Pass KMAC256 with customization and 512-bit output verification failure due to wrong signature
Pass KMAC256 with large data and no customization verification failure due to wrong signature
Pass KMAC256 with large data and customization verification failure due to wrong signature
Pass KMAC128 with no customization verification failure due to short signature
Pass KMAC128 with customization verification failure due to short signature
Pass KMAC128 with large data and customization verification failure due to short signature
Pass KMAC256 with customization and 512-bit output verification failure due to short signature
Pass KMAC256 with large data and no customization verification failure due to short signature
Pass KMAC256 with large data and customization verification failure due to short signature
Pass KMAC128 with no customization verification failure due to wrong length parameter
Pass KMAC128 with customization verification failure due to wrong length parameter
Pass KMAC128 with large data and customization verification failure due to wrong length parameter
Pass KMAC256 with customization and 512-bit output verification failure due to wrong length parameter
Pass KMAC256 with large data and no customization verification failure due to wrong length parameter
Pass KMAC256 with large data and customization verification failure due to wrong length parameter