refactor: 互換性をもたせながら新しいAPIに対応できるように変更
This commit is contained in:
parent
9f02f19ca7
commit
cc55006fea
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
package dev.usbharu.httpsignature.common
|
||||
|
||||
interface HttpMethodBase {
|
||||
val methodName: String
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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: 複数ヘッダーの正規化をする
|
||||
|
|
|
@ -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)" -> {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)" -> {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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==:"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue