Skip to content

Commit

Permalink
feat: add sendTokenRequest() function in OID4VCI
Browse files Browse the repository at this point in the history
  • Loading branch information
chsavvaidis committed Feb 25, 2025
1 parent 02ea7b0 commit 4106235
Showing 1 changed file with 22 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import id.walt.oid4vc.requests.TokenRequest
import id.walt.oid4vc.responses.AuthorizationCodeWithAuthorizationRequestResponse
import id.walt.oid4vc.responses.CredentialErrorCode
import id.walt.oid4vc.responses.TokenErrorCode
import id.walt.oid4vc.responses.TokenResponse
import id.walt.oid4vc.util.JwtUtils
import id.walt.oid4vc.util.http
import id.walt.policies.Verifier
Expand All @@ -45,7 +46,9 @@ import id.walt.sdjwt.SDJwtVC.Companion.defaultPayloadProperties
import id.walt.sdjwt.SDMap
import id.walt.sdjwt.SDPayload
import io.github.oshai.kotlinlogging.KotlinLogging
import io.ktor.client.call.*
import io.ktor.client.request.*
import io.ktor.client.request.forms.*
import io.ktor.client.statement.*
import io.ktor.http.*
import io.ktor.util.*
Expand Down Expand Up @@ -172,6 +175,25 @@ object OpenID4VCI {
return AuthorizationRequest.fromHttpQueryString(authorizationRequestQueryString)
}

suspend fun sendTokenRequest(
metadata: OpenIDProviderMetadata,
tokenRequest: TokenRequest,
): TokenResponse {
val tokenEndpoint = metadata.tokenEndpoint
?: throw IllegalArgumentException("Missing token endpoint in issuer metadata.")

val response = http.submitForm(
url = tokenEndpoint,
formParameters = parametersOf(tokenRequest.toHttpParameters())
)

if (!response.status.isSuccess()) {
throw IllegalArgumentException("Failed to get token: ${response.status.value} - ${response.bodyAsText()}")
}

return response.body<TokenResponse>()
}

fun validateTokenRequestRaw(tokenRequestRaw: Map<String, List<String>>, authorizationCode: String): TokenRequest {
val tokenRequest = parseTokenRequest(tokenRequestRaw)
validateAuthorizationCode(tokenRequest, authorizationCode).let {
Expand Down

0 comments on commit 4106235

Please sign in to comment.