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 { @@ -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 fun buildSignString( url: URL, - method: HttpMethod, + method: HttpMethodBase, headers: HttpHeaders, signHeaders: List ): 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, 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==:" + ) ) }