@@ -5,11 +5,12 @@ const SESSION_TTL_MS = 15 * 60_000
55const QR_SIZE = 280
66const EUDI_PID_VCTS = [ 'urn:eudi:pid:1' ]
77const LAB_AGE_VCTS = [ 'https://example.org/vct/age-credential' ]
8- const PREREGISTERED_CLIENT_ID_SCHEME = 'pre-registered '
8+ const X509_SAN_DNS_CLIENT_ID_SCHEME = 'x509_san_dns '
99
1010export type WalletVerifierProfile = {
1111 baseUrl : string
1212 clientId : string
13+ requestClientId : string
1314 legalName : string
1415}
1516
@@ -36,6 +37,7 @@ export type WalletRpSession = {
3637 state : string
3738 nonce : string
3839 clientId : string
40+ requestClientId : string
3941 legalName : string
4042 verifierApi : string
4143 requestUri : string
@@ -56,7 +58,7 @@ export type WalletDirectPostBody = {
5658
5759export type WalletRequestObject = {
5860 client_id : string
59- client_id_scheme : 'pre-registered '
61+ client_id_scheme : 'x509_san_dns '
6062 response_uri : string
6163 response_type : 'vp_token'
6264 response_mode : 'direct_post'
@@ -89,6 +91,7 @@ export function deriveWalletVerifierProfile(baseUrl: string): WalletVerifierProf
8991 return {
9092 baseUrl : url . origin ,
9193 clientId : url . host ,
94+ requestClientId : `${ X509_SAN_DNS_CLIENT_ID_SCHEME } :${ url . host } ` ,
9295 legalName : 'iProov Verifier'
9396 }
9497}
@@ -108,24 +111,25 @@ export function createWalletSession(baseUrl: string, now = Date.now()): WalletRp
108111 state,
109112 nonce,
110113 clientId : profile . clientId ,
114+ requestClientId : profile . requestClientId ,
111115 legalName : profile . legalName ,
112116 verifierApi : profile . baseUrl ,
113117 requestUri,
114118 responseUri,
115119 resultUri,
116- deepLink : buildWalletDeepLink ( profile . clientId , requestUri ) ,
120+ deepLink : buildWalletDeepLink ( profile . clientId , profile . requestClientId , requestUri ) ,
117121 outcome : { status : 'pending' }
118122 }
119123}
120124
121- export function buildWalletDeepLink ( clientId : string , requestUri : string ) {
122- return `eudi-openid4vp://${ clientId } ?client_id=${ encodeURIComponent ( clientId ) } &client_id_scheme=${ encodeURIComponent ( PREREGISTERED_CLIENT_ID_SCHEME ) } &request_uri=${ encodeURIComponent ( requestUri ) } `
125+ export function buildWalletDeepLink ( clientId : string , requestClientId : string , requestUri : string ) {
126+ return `eudi-openid4vp://${ clientId } ?client_id=${ encodeURIComponent ( requestClientId ) } &client_id_scheme=${ encodeURIComponent ( X509_SAN_DNS_CLIENT_ID_SCHEME ) } &request_uri=${ encodeURIComponent ( requestUri ) } `
123127}
124128
125129export function buildWalletRequestObject ( session : WalletRpSession , walletNonce ?: string ) : WalletRequestObject & { wallet_nonce ?: string } {
126130 return {
127- client_id : session . clientId ,
128- client_id_scheme : PREREGISTERED_CLIENT_ID_SCHEME ,
131+ client_id : session . requestClientId ,
132+ client_id_scheme : X509_SAN_DNS_CLIENT_ID_SCHEME ,
129133 response_uri : session . responseUri ,
130134 response_type : 'vp_token' ,
131135 response_mode : 'direct_post' ,
0 commit comments