refactor: 互換性をもたせながら新しいAPIに対応できるように変更
This commit is contained in:
parent
9f02f19ca7
commit
cc55006fea
|
@ -1,6 +1,6 @@
|
||||||
package dev.usbharu.httpsignature.common
|
package dev.usbharu.httpsignature.common
|
||||||
|
|
||||||
enum class HttpMethod(val value: String) {
|
enum class HttpMethod(val value: String, override val methodName: String) : HttpMethodBase {
|
||||||
GET("get"),
|
GET("get", "GET"),
|
||||||
POST("post")
|
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
|
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
|
package dev.usbharu.httpsignature.sign
|
||||||
|
|
||||||
import dev.usbharu.httpsignature.common.HttpHeaders
|
import dev.usbharu.httpsignature.common.HttpHeaders
|
||||||
import dev.usbharu.httpsignature.common.HttpMethod
|
import dev.usbharu.httpsignature.common.HttpMethodBase
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
|
||||||
@Deprecated("")
|
@Deprecated("")
|
||||||
abstract class AbstractHttpSignatureSigner : HttpSignatureSigner {
|
abstract class AbstractHttpSignatureSigner : HttpSignatureSigner {
|
||||||
override fun buildSignString(
|
override fun buildSignString(
|
||||||
url: URL,
|
url: URL,
|
||||||
method: HttpMethod,
|
method: HttpMethodBase,
|
||||||
headers: HttpHeaders,
|
headers: HttpHeaders,
|
||||||
signHeaders: List<String>
|
signHeaders: List<String>
|
||||||
): String {
|
): String {
|
||||||
|
@ -22,11 +22,11 @@ abstract class AbstractHttpSignatureSigner : HttpSignatureSigner {
|
||||||
return result
|
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)") {
|
if (fieldName != "(request-target)") {
|
||||||
throw IllegalArgumentException(fieldName + "is unsupported type")
|
throw IllegalArgumentException(fieldName + "is unsupported type")
|
||||||
}
|
}
|
||||||
return "(request-target): ${method.value.lowercase()} ${url.path}"
|
return "(request-target): ${method.methodName.lowercase()} ${url.path}"
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: 複数ヘッダーの正規化をする
|
// TODO: 複数ヘッダーの正規化をする
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package dev.usbharu.httpsignature.sign
|
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.HttpRequest
|
||||||
import dev.usbharu.httpsignature.common.PrivateKey
|
import dev.usbharu.httpsignature.common.PrivateKey
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
@ -46,10 +46,10 @@ class Hs2019HttpSignatureSigner(private val expires: Long,private val salt:Int =
|
||||||
}
|
}
|
||||||
|
|
||||||
@Throws(IllegalArgumentException::class)
|
@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) {
|
return when (fieldName) {
|
||||||
"(request-target)" -> {
|
"(request-target)" -> {
|
||||||
"(request-target): ${method.value.lowercase()} ${url.path}"
|
"(request-target): ${method.methodName.lowercase()} ${url.path}"
|
||||||
}
|
}
|
||||||
|
|
||||||
"(created)" -> {
|
"(created)" -> {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package dev.usbharu.httpsignature.sign
|
package dev.usbharu.httpsignature.sign
|
||||||
|
|
||||||
import dev.usbharu.httpsignature.common.HttpHeaders
|
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.HttpRequest
|
||||||
import dev.usbharu.httpsignature.common.PrivateKey
|
import dev.usbharu.httpsignature.common.PrivateKey
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
@ -12,7 +12,7 @@ interface HttpSignatureSigner {
|
||||||
fun signRaw(signString: String, privateKey: PrivateKey, signHeaders: List<String>): String
|
fun signRaw(signString: String, privateKey: PrivateKey, signHeaders: List<String>): String
|
||||||
fun buildSignString(
|
fun buildSignString(
|
||||||
url: URL,
|
url: URL,
|
||||||
method: HttpMethod,
|
method: HttpMethodBase,
|
||||||
headers: HttpHeaders,
|
headers: HttpHeaders,
|
||||||
signHeaders: List<String>
|
signHeaders: List<String>
|
||||||
): String
|
): String
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package dev.usbharu.httpsignature.verify
|
package dev.usbharu.httpsignature.verify
|
||||||
|
|
||||||
import dev.usbharu.httpsignature.common.HttpHeaders
|
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.HttpRequest
|
||||||
import dev.usbharu.httpsignature.common.PublicKey
|
import dev.usbharu.httpsignature.common.PublicKey
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
|
@ -79,7 +79,7 @@ class Hs2019HttpSignatureVerifier(
|
||||||
|
|
||||||
private fun buildSignString(
|
private fun buildSignString(
|
||||||
url: URL,
|
url: URL,
|
||||||
method: HttpMethod,
|
method: HttpMethodBase,
|
||||||
headers: HttpHeaders,
|
headers: HttpHeaders,
|
||||||
signHeaders: List<String>,
|
signHeaders: List<String>,
|
||||||
created: Long?,
|
created: Long?,
|
||||||
|
@ -88,7 +88,7 @@ class Hs2019HttpSignatureVerifier(
|
||||||
return signHeaders.joinToString("\n") {
|
return signHeaders.joinToString("\n") {
|
||||||
when (it) {
|
when (it) {
|
||||||
"(request-target)" -> {
|
"(request-target)" -> {
|
||||||
"(request-target): ${method.value.lowercase()} ${url.path}"
|
"(request-target): ${method.methodName.lowercase()} ${url.path}"
|
||||||
}
|
}
|
||||||
|
|
||||||
"(created)" -> {
|
"(created)" -> {
|
||||||
|
|
|
@ -4,14 +4,12 @@ import dev.usbharu.httpsignature.common.HttpHeaders
|
||||||
import dev.usbharu.httpsignature.common.HttpMethod
|
import dev.usbharu.httpsignature.common.HttpMethod
|
||||||
import dev.usbharu.httpsignature.common.HttpRequest
|
import dev.usbharu.httpsignature.common.HttpRequest
|
||||||
import dev.usbharu.httpsignature.common.PrivateKey
|
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.junit.jupiter.api.Test
|
||||||
import org.mockito.MockSettings
|
|
||||||
import org.mockito.Mockito
|
import org.mockito.Mockito
|
||||||
import org.mockito.Mockito.*
|
import org.mockito.Mockito.*
|
||||||
import java.net.URL
|
import java.net.URL
|
||||||
import java.security.KeyFactory
|
import java.security.KeyFactory
|
||||||
import java.security.SignatureSpi
|
|
||||||
import java.security.interfaces.RSAPrivateKey
|
import java.security.interfaces.RSAPrivateKey
|
||||||
import java.security.interfaces.RSAPublicKey
|
import java.security.interfaces.RSAPublicKey
|
||||||
import java.security.spec.PKCS8EncodedKeySpec
|
import java.security.spec.PKCS8EncodedKeySpec
|
||||||
|
|
|
@ -12,7 +12,14 @@ class DefaultHttpSignatureHeaderParserTest {
|
||||||
"sig1=(\"@method\" \"@target-uri\" \"@authority\" " +
|
"sig1=(\"@method\" \"@target-uri\" \"@authority\" " +
|
||||||
" \"content-digest\" \"cache-control\");" +
|
" \"content-digest\" \"cache-control\");" +
|
||||||
" created=1618884475;keyid=\"test-key-rsa-pss\""
|
" 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