From cc55006fea1f44b729891e85088051122605fafa Mon Sep 17 00:00:00 2001 From: usbharu <i@usbharu.dev> Date: Wed, 25 Sep 2024 12:43:17 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BA=92=E6=8F=9B=E6=80=A7?= =?UTF-8?q?=E3=82=92=E3=82=82=E3=81=9F=E3=81=9B=E3=81=AA=E3=81=8C=E3=82=89?= =?UTF-8?q?=E6=96=B0=E3=81=97=E3=81=84API=E3=81=AB=E5=AF=BE=E5=BF=9C?= =?UTF-8?q?=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/usbharu/httpsignature/common/HttpMethod.kt | 6 +++--- .../dev/usbharu/httpsignature/common/HttpMethodBase.kt | 5 +++++ .../dev/usbharu/httpsignature/common/HttpRequest.kt | 2 +- .../httpsignature/sign/AbstractHttpSignatureSigner.kt | 8 ++++---- .../httpsignature/sign/Hs2019HttpSignatureSigner.kt | 6 +++--- .../usbharu/httpsignature/sign/HttpSignatureSigner.kt | 4 ++-- .../httpsignature/verify/Hs2019HttpSignatureVerifier.kt | 6 +++--- .../httpsignature/sign/Hs2019HttpSignatureSignerTest.kt | 4 +--- .../v2/DefaultHttpSignatureHeaderParserTest.kt | 9 ++++++++- 9 files changed, 30 insertions(+), 20 deletions(-) create mode 100644 src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethodBase.kt diff --git a/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethod.kt b/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethod.kt index 08e9075..5f09e30 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethod.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethod.kt @@ -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") } diff --git a/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethodBase.kt b/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethodBase.kt new file mode 100644 index 0000000..29fa46c --- /dev/null +++ b/src/main/kotlin/dev/usbharu/httpsignature/common/HttpMethodBase.kt @@ -0,0 +1,5 @@ +package dev.usbharu.httpsignature.common + +interface HttpMethodBase { + val methodName: String +} \ No newline at end of file diff --git a/src/main/kotlin/dev/usbharu/httpsignature/common/HttpRequest.kt b/src/main/kotlin/dev/usbharu/httpsignature/common/HttpRequest.kt index 870753a..b796b3b 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/common/HttpRequest.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/common/HttpRequest.kt @@ -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) diff --git a/src/main/kotlin/dev/usbharu/httpsignature/sign/AbstractHttpSignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/sign/AbstractHttpSignatureSigner.kt index a7008b7..883c4f1 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/sign/AbstractHttpSignatureSigner.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/sign/AbstractHttpSignatureSigner.kt @@ -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: 複数ヘッダーの正規化をする diff --git a/src/main/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSigner.kt index b80fa09..d9607a8 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSigner.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSigner.kt @@ -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)" -> { diff --git a/src/main/kotlin/dev/usbharu/httpsignature/sign/HttpSignatureSigner.kt b/src/main/kotlin/dev/usbharu/httpsignature/sign/HttpSignatureSigner.kt index f1cf76a..828a09f 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/sign/HttpSignatureSigner.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/sign/HttpSignatureSigner.kt @@ -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 diff --git a/src/main/kotlin/dev/usbharu/httpsignature/verify/Hs2019HttpSignatureVerifier.kt b/src/main/kotlin/dev/usbharu/httpsignature/verify/Hs2019HttpSignatureVerifier.kt index 6019cf8..b2c1b8a 100644 --- a/src/main/kotlin/dev/usbharu/httpsignature/verify/Hs2019HttpSignatureVerifier.kt +++ b/src/main/kotlin/dev/usbharu/httpsignature/verify/Hs2019HttpSignatureVerifier.kt @@ -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)" -> { diff --git a/src/test/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSignerTest.kt b/src/test/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSignerTest.kt index e517c4b..c8fb563 100644 --- a/src/test/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSignerTest.kt +++ b/src/test/kotlin/dev/usbharu/httpsignature/sign/Hs2019HttpSignatureSignerTest.kt @@ -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 diff --git a/src/test/kotlin/dev/usbharu/httpsignature/v2/DefaultHttpSignatureHeaderParserTest.kt b/src/test/kotlin/dev/usbharu/httpsignature/v2/DefaultHttpSignatureHeaderParserTest.kt index dbde403..57c6d2f 100644 --- a/src/test/kotlin/dev/usbharu/httpsignature/v2/DefaultHttpSignatureHeaderParserTest.kt +++ b/src/test/kotlin/dev/usbharu/httpsignature/v2/DefaultHttpSignatureHeaderParserTest.kt @@ -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==:" + ) ) }