diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/EcdsaP256Sha256SignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/EcdsaP256Sha256SignatureSigner.kt new file mode 100644 index 0000000..29217b0 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/EcdsaP256Sha256SignatureSigner.kt @@ -0,0 +1,14 @@ +package dev.usbharu.httpsignature.v2 + +import java.security.PrivateKey +import java.security.Signature +import java.util.* + +class EcdsaP256Sha256SignatureSigner : SignatureSigner { + override fun sign(byteArray: ByteArray, privateKey: PrivateKey): String { + val signature = Signature.getInstance("SHA256withECDSA") + signature.initSign(privateKey) + signature.update(byteArray) + return Base64.getEncoder().encodeToString(signature.sign()) + } +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/HttpMessageSignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/HttpMessageSignatureSigner.kt new file mode 100644 index 0000000..d93fd0f --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/HttpMessageSignatureSigner.kt @@ -0,0 +1,8 @@ +package dev.usbharu.httpsignature.v2 + +import dev.usbharu.httpsignature.common.HttpRequest +import java.security.PrivateKey + +class HttpMessageSignatureSigner { + fun sign(httpRequest: HttpRequest,privateKey: PrivateKey) +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/Material.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/Material.kt new file mode 100644 index 0000000..141b172 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/Material.kt @@ -0,0 +1,9 @@ +package dev.usbharu.httpsignature.v2 + +import java.security.PrivateKey + +data class Material( + val signatureBase: SignatureBase, + val privateKey: PrivateKey, + val label: String +) diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaPssSha512SignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaPssSha512SignatureSigner.kt new file mode 100644 index 0000000..cec24fe --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaPssSha512SignatureSigner.kt @@ -0,0 +1,7 @@ +package dev.usbharu.httpsignature.v2 + +import java.security.spec.MGF1ParameterSpec +import java.security.spec.PSSParameterSpec + +class RsaPssSha512SignatureSigner(salt: Int = 64) : + RsaPssSignatureSigner(PSSParameterSpec("SHA-512", "MGF1", MGF1ParameterSpec.SHA512, salt, 1)) \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaPssSignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaPssSignatureSigner.kt new file mode 100644 index 0000000..5acbeb5 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaPssSignatureSigner.kt @@ -0,0 +1,16 @@ +package dev.usbharu.httpsignature.v2 + +import java.security.PrivateKey +import java.security.Signature +import java.security.spec.PSSParameterSpec +import java.util.* + +open class RsaPssSignatureSigner(private val pssParameterSpec: PSSParameterSpec) : SignatureSigner { + override fun sign(byteArray: ByteArray, privateKey: PrivateKey): String { + val signature = Signature.getInstance("RSASSA-PSS") + signature.setParameter(pssParameterSpec) + signature.initSign(privateKey) + signature.update(byteArray) + return Base64.getEncoder().encodeToString(signature.sign()) + } +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaV1_5Sha256SignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaV1_5Sha256SignatureSigner.kt new file mode 100644 index 0000000..6ec4715 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/RsaV1_5Sha256SignatureSigner.kt @@ -0,0 +1,20 @@ +package dev.usbharu.httpsignature.v2 + +import java.security.PrivateKey +import java.security.Signature +import java.util.* + +/** + * RSASSA-PKCS1-v1.5 + */ + +class RsaV1_5Sha256SignatureSigner : SignatureSigner { + override fun sign(byteArray: ByteArray, privateKey: PrivateKey): String { + val signature = Signature.getInstance("SHA256withRSA") + signature.initSign(privateKey) + signature.update(byteArray) + val bytes = signature.sign() + + return Base64.getEncoder().encodeToString(bytes) + } +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/v2/SignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/v2/SignatureSigner.kt new file mode 100644 index 0000000..a17e0b9 --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/v2/SignatureSigner.kt @@ -0,0 +1,7 @@ +package dev.usbharu.httpsignature.v2 + +import java.security.PrivateKey + +interface SignatureSigner { + fun sign(byteArray: ByteArray,privateKey: PrivateKey): String +} \ No newline at end of file