feat: 署名を生成できるように

This commit is contained in:
usbharu 2024-09-23 14:45:57 +09:00
parent c8e437fcb1
commit cff083af1b
Signed by: usbharu
GPG Key ID: 95CBCF7046307B77
7 changed files with 81 additions and 0 deletions

View File

@ -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())
}
}

View File

@ -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)
}

View File

@ -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
)

View File

@ -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))

View File

@ -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())
}
}

View File

@ -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)
}
}

View File

@ -0,0 +1,7 @@
package dev.usbharu.httpsignature.v2
import java.security.PrivateKey
interface SignatureSigner {
fun sign(byteArray: ByteArray,privateKey: PrivateKey): String
}