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:
parent
6cc575b8a9
commit
d4cf537d58
12 changed files with 1230 additions and 564 deletions
93
Libraries/LibCrypto/Authentication/KMAC.cpp
Normal file
93
Libraries/LibCrypto/Authentication/KMAC.cpp
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
42
Libraries/LibCrypto/Authentication/KMAC.h
Normal file
42
Libraries/LibCrypto/Authentication/KMAC.h
Normal 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;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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(); }));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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, [])
|
||||
|
|
@ -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])
|
||||
|
|
@ -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, [])
|
||||
|
|
@ -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
|
||||
Loading…
Reference in a new issue