@@ -29,12 +29,15 @@ import com.credman.cmwallet.mdoc.MDoc
2929import com.credman.cmwallet.openid4vci.OpenId4VCI
3030import com.credman.cmwallet.openid4vci.data.AuthorizationDetailResponseOpenIdCredential
3131import com.credman.cmwallet.openid4vci.data.CredentialConfigurationMDoc
32+ import com.credman.cmwallet.openid4vci.data.CredentialConfigurationSdJwtVc
3233import com.credman.cmwallet.openid4vci.data.CredentialRequest
3334import com.credman.cmwallet.openid4vci.data.GrantAuthorizationCode
3435import com.credman.cmwallet.openid4vci.data.TokenRequest
3536import com.credman.cmwallet.openid4vci.data.TokenResponse
3637import com.credman.cmwallet.openid4vci.data.imageUriToImageB64
3738import com.credman.cmwallet.openid4vp.OpenId4VP
39+ import com.credman.cmwallet.sdjwt.IssuerJwt
40+ import com.credman.cmwallet.toBase64UrlNoPadding
3841import com.credman.cmwallet.toFixedByteArray
3942import kotlinx.coroutines.launch
4043import org.json.JSONObject
@@ -148,6 +151,16 @@ class CreateCredentialViewModel : ViewModel() {
148151 x == deviceKey.first && y == deviceKey.second
149152 }
150153 }
154+ is CredentialConfigurationSdJwtVc -> {
155+ val issuerJwtString = it.credential.split(' ~' )[0 ]
156+ val cnfKey = IssuerJwt (issuerJwtString).payload.getJSONObject(" cnf" ).getJSONObject(" jwk" )
157+ deviceKeys.firstOrNull {
158+ val public = it.public as ECPublicKey
159+ val x = public.w.affineX.toFixedByteArray(32 ).toBase64UrlNoPadding()
160+ val y = public.w.affineY.toFixedByteArray(32 ).toBase64UrlNoPadding()
161+ x == cnfKey.getString(" x" ) && y == cnfKey.getString(" y" )
162+ }
163+ }
151164 else -> throw UnsupportedOperationException (" Unknown configuration $config " )
152165 }
153166 Credential (
0 commit comments