refactor: 互換性をもたせながら新しいAPIに対応できるように変更

This commit is contained in:
usbharu 2024-09-25 12:43:17 +09:00
parent 9f02f19ca7
commit cc55006fea
Signed by: usbharu
GPG Key ID: 95CBCF7046307B77
9 changed files with 30 additions and 20 deletions

View File

@ -1,6 +1,6 @@
package dev.usbharu.httpsignature.common
enum class HttpMethod(val value: String) {
GET("get"),
POST("post")
enum class HttpMethod(val value: String, override val methodName: String) : HttpMethodBase {
GET("get", "GET"),
POST("post", "POST")
}

View File

@ -0,0 +1,5 @@
package dev.usbharu.httpsignature.common
interface HttpMethodBase {
val methodName: String
}

View File

@ -2,4 +2,4 @@ package dev.usbharu.httpsignature.common
import java.net.URL
data class HttpRequest(val url: URL, val headers: HttpHeaders, val method: HttpMethod)
data class HttpRequest(val url: URL, val headers: HttpHeaders, val method: HttpMethodBase)

View File

@ -1,14 +1,14 @@
package dev.usbharu.httpsignature.sign
import dev.usbharu.httpsignature.common.HttpHeaders
import dev.usbharu.httpsignature.common.HttpMethod
import dev.usbharu.httpsignature.common.HttpMethodBase
import java.net.URL
@Deprecated("")
abstract class AbstractHttpSignatureSigner : HttpSignatureSigner {
override fun buildSignString(
url: URL,
method: HttpMethod,
method: HttpMethodBase,
headers: HttpHeaders,
signHeaders: List<String>
): String {
@ -22,11 +22,11 @@ abstract class AbstractHttpSignatureSigner : HttpSignatureSigner {
return result
}
protected open fun specialHeader(fieldName: String, url: URL, method: HttpMethod): String {
protected open fun specialHeader(fieldName: String, url: URL, method: HttpMethodBase): String {
if (fieldName != "(request-target)") {
throw IllegalArgumentException(fieldName + "is unsupported type")
}
return "(request-target): ${method.value.lowercase()} ${url.path}"
return "(request-target): ${method.methodName.lowercase()} ${url.path}"
}
// TODO: 複数ヘッダーの正規化をする

View File

@ -1,6 +1,6 @@
package dev.usbharu.httpsignature.sign
import dev.usbharu.httpsignature.common.HttpMethod
import dev.usbharu.httpsignature.common.HttpMethodBase
import dev.usbharu.httpsignature.common.HttpRequest
import dev.usbharu.httpsignature.common.PrivateKey
import java.net.URL
@ -46,10 +46,10 @@ class Hs2019HttpSignatureSigner(private val expires: Long,private val salt:Int =
}
@Throws(IllegalArgumentException::class)
override fun specialHeader(fieldName: String, url: URL, method: HttpMethod): String {
override fun specialHeader(fieldName: String, url: URL, method: HttpMethodBase): String {
return when (fieldName) {
"(request-target)" -> {
"(request-target): ${method.value.lowercase()} ${url.path}"
"(request-target): ${method.methodName.lowercase()} ${url.path}"
}
"(created)" -> {

View File

@ -1,7 +1,7 @@
package dev.usbharu.httpsignature.sign
import dev.usbharu.httpsignature.common.HttpHeaders
import dev.usbharu.httpsignature.common.HttpMethod
import dev.usbharu.httpsignature.common.HttpMethodBase
import dev.usbharu.httpsignature.common.HttpRequest
import dev.usbharu.httpsignature.common.PrivateKey
import java.net.URL
@ -12,7 +12,7 @@ interface HttpSignatureSigner {
fun signRaw(signString: String, privateKey: PrivateKey, signHeaders: List<String>): String
fun buildSignString(
url: URL,
method: HttpMethod,
method: HttpMethodBase,
headers: HttpHeaders,
signHeaders: List<String>
): String

View File

@ -1,7 +1,7 @@
package dev.usbharu.httpsignature.verify
import dev.usbharu.httpsignature.common.HttpHeaders
import dev.usbharu.httpsignature.common.HttpMethod
import dev.usbharu.httpsignature.common.HttpMethodBase
import dev.usbharu.httpsignature.common.HttpRequest
import dev.usbharu.httpsignature.common.PublicKey
import java.net.URL
@ -79,7 +79,7 @@ class Hs2019HttpSignatureVerifier(
private fun buildSignString(
url: URL,
method: HttpMethod,
method: HttpMethodBase,
headers: HttpHeaders,
signHeaders: List<String>,
created: Long?,
@ -88,7 +88,7 @@ class Hs2019HttpSignatureVerifier(
return signHeaders.joinToString("\n") {
when (it) {
"(request-target)" -> {
"(request-target): ${method.value.lowercase()} ${url.path}"
"(request-target): ${method.methodName.lowercase()} ${url.path}"
}
"(created)" -> {

View File

@ -4,14 +4,12 @@ import dev.usbharu.httpsignature.common.HttpHeaders
import dev.usbharu.httpsignature.common.HttpMethod
import dev.usbharu.httpsignature.common.HttpRequest
import dev.usbharu.httpsignature.common.PrivateKey
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.mockito.MockSettings
import org.mockito.Mockito
import org.mockito.Mockito.*
import java.net.URL
import java.security.KeyFactory
import java.security.SignatureSpi
import java.security.interfaces.RSAPrivateKey
import java.security.interfaces.RSAPublicKey
import java.security.spec.PKCS8EncodedKeySpec

View File

@ -12,7 +12,14 @@ class DefaultHttpSignatureHeaderParserTest {
"sig1=(\"@method\" \"@target-uri\" \"@authority\" " +
" \"content-digest\" \"cache-control\");" +
" created=1618884475;keyid=\"test-key-rsa-pss\""
), listOf()
), listOf(
"sig1=:P0wLUszWQjoi54udOtydf9IWTfNhy+r53jGFj9XZuP4uKwxyJo" +
"1RSHi+oEF1FuX6O29d+lbxwwBao1BAgadijW+7O/PyezlTnqAOVPWx9GlyntiCiHz" +
"C87qmSQjvu1CFyFuWSjdGa3qLYYlNm7pVaJFalQiKWnUaqfT4LyttaXyoyZW84jS8" +
"gyarxAiWI97mPXU+OVM64+HVBHmnEsS+lTeIsEQo36T3NFf2CujWARPQg53r58Rmp" +
"Z+J9eKR2CD6IJQvacn5A4Ix5BUAVGqlyp8JYm+S/CWJi31PNUjRRCusCVRj05NrxA" +
"BNFv3r5S9IXf2fYJK+eyW4AiGVMvMcOg==:"
)
)
}