From 64f7c1687b9d8955f20ec7faa33639450f0a4377 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Pr=C3=BCnster?= Date: Sun, 26 Jan 2025 20:49:54 +0100 Subject: [PATCH] make hmac identifable --- CHANGELOG.md | 11 +++++++---- .../at/asitplus/signum/indispensable/mac/MAC.kt | 16 ++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb37abdb3..1beb9173f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,13 @@ ### NEXT * HMAC Support -* AES Support - * CBC - * CBC-HMAC - * GCM +* Symmetric Encryption + * AES + * GCM + * CBC-HMAC + * CBC + * ECB + * ChaCha-Poly1305 * Moved `HazardousMaterials` annotation from `supreme` to `indispensable` diff --git a/indispensable/src/commonMain/kotlin/at/asitplus/signum/indispensable/mac/MAC.kt b/indispensable/src/commonMain/kotlin/at/asitplus/signum/indispensable/mac/MAC.kt index 8e0b2bf2e..6c7810b84 100644 --- a/indispensable/src/commonMain/kotlin/at/asitplus/signum/indispensable/mac/MAC.kt +++ b/indispensable/src/commonMain/kotlin/at/asitplus/signum/indispensable/mac/MAC.kt @@ -1,6 +1,9 @@ package at.asitplus.signum.indispensable.mac import at.asitplus.signum.indispensable.Digest +import at.asitplus.signum.indispensable.asn1.Identifiable +import at.asitplus.signum.indispensable.asn1.KnownOIDs +import at.asitplus.signum.indispensable.asn1.ObjectIdentifier import at.asitplus.signum.indispensable.misc.BitLength sealed interface MAC { @@ -15,13 +18,14 @@ sealed interface MAC { /** * RFC 2104 HMAC */ -enum class HMAC(val digest: Digest) : MAC { - SHA1(Digest.SHA1), - SHA256(Digest.SHA256), - SHA384(Digest.SHA384), - SHA512(Digest.SHA512); +enum class HMAC(val digest: Digest, override val oid: ObjectIdentifier) : MAC, Identifiable { + SHA1(Digest.SHA1, KnownOIDs.hmacWithSHA1), + SHA256(Digest.SHA256, KnownOIDs.hmacWithSHA256), + SHA384(Digest.SHA384, KnownOIDs.hmacWithSHA384), + SHA512(Digest.SHA512, KnownOIDs.hmacWithSHA512), + ; - override fun toString()= "HMAC-$digest" + override fun toString() = "HMAC-$digest" companion object { operator fun invoke(digest: Digest) = when (digest) {