@pagopa/io-react-native-wallet 3.4.4 → 3.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/credential/issuance/README.md +10 -5
- package/lib/commonjs/credential/issuance/v1.0.0/03-complete-user-authorization.js +2 -3
- package/lib/commonjs/credential/issuance/v1.0.0/03-complete-user-authorization.js.map +1 -1
- package/lib/commonjs/credential/issuance/v1.3.3/03-complete-user-authorization.js +7 -8
- package/lib/commonjs/credential/issuance/v1.3.3/03-complete-user-authorization.js.map +1 -1
- package/lib/commonjs/credential/presentation/api/types.js.map +1 -1
- package/lib/commonjs/credential/status/README.md +15 -13
- package/lib/commonjs/credential/status/api/index.js.map +1 -1
- package/lib/commonjs/credential/status/api/types.js +27 -0
- package/lib/commonjs/credential/status/api/types.js.map +1 -1
- package/lib/commonjs/credential/status/v1.3.3/01-status-list.js +26 -22
- package/lib/commonjs/credential/status/v1.3.3/01-status-list.js.map +1 -1
- package/lib/commonjs/credential/status/v1.3.3/02-verify-and-parse-status-list.js +4 -25
- package/lib/commonjs/credential/status/v1.3.3/02-verify-and-parse-status-list.js.map +1 -1
- package/lib/commonjs/credential/status/v1.3.3/03-get-status.js +34 -0
- package/lib/commonjs/credential/status/v1.3.3/03-get-status.js.map +1 -0
- package/lib/commonjs/credential/status/v1.3.3/index.js +4 -1
- package/lib/commonjs/credential/status/v1.3.3/index.js.map +1 -1
- package/lib/commonjs/credentials-catalogue/common/get-status-l10n-ids.js +1 -1
- package/lib/module/credential/issuance/README.md +10 -5
- package/lib/module/credential/issuance/v1.0.0/03-complete-user-authorization.js +2 -3
- package/lib/module/credential/issuance/v1.0.0/03-complete-user-authorization.js.map +1 -1
- package/lib/module/credential/issuance/v1.3.3/03-complete-user-authorization.js +7 -8
- package/lib/module/credential/issuance/v1.3.3/03-complete-user-authorization.js.map +1 -1
- package/lib/module/credential/presentation/api/types.js.map +1 -1
- package/lib/module/credential/status/README.md +15 -13
- package/lib/module/credential/status/api/index.js +3 -1
- package/lib/module/credential/status/api/index.js.map +1 -1
- package/lib/module/credential/status/api/types.js +20 -0
- package/lib/module/credential/status/api/types.js.map +1 -1
- package/lib/module/credential/status/v1.3.3/01-status-list.js +24 -21
- package/lib/module/credential/status/v1.3.3/01-status-list.js.map +1 -1
- package/lib/module/credential/status/v1.3.3/02-verify-and-parse-status-list.js +5 -26
- package/lib/module/credential/status/v1.3.3/02-verify-and-parse-status-list.js.map +1 -1
- package/lib/module/credential/status/v1.3.3/03-get-status.js +27 -0
- package/lib/module/credential/status/v1.3.3/03-get-status.js.map +1 -0
- package/lib/module/credential/status/v1.3.3/index.js +5 -2
- package/lib/module/credential/status/v1.3.3/index.js.map +1 -1
- package/lib/module/credentials-catalogue/common/get-status-l10n-ids.js +1 -1
- package/lib/typescript/credential/issuance/api/03-complete-user-authorization.d.ts +9 -6
- package/lib/typescript/credential/issuance/api/03-complete-user-authorization.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/api/index.d.ts +1 -0
- package/lib/typescript/credential/issuance/api/index.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/v1.0.0/03-complete-user-authorization.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/v1.3.3/03-complete-user-authorization.d.ts.map +1 -1
- package/lib/typescript/credential/issuance/v1.3.3/mappers.d.ts.map +1 -1
- package/lib/typescript/credential/presentation/api/06-evaluate-dcql-query.d.ts +2 -3
- package/lib/typescript/credential/presentation/api/06-evaluate-dcql-query.d.ts.map +1 -1
- package/lib/typescript/credential/presentation/api/types.d.ts +2 -0
- package/lib/typescript/credential/presentation/api/types.d.ts.map +1 -1
- package/lib/typescript/credential/status/api/index.d.ts +3 -1
- package/lib/typescript/credential/status/api/index.d.ts.map +1 -1
- package/lib/typescript/credential/status/api/status-assertion.d.ts +1 -1
- package/lib/typescript/credential/status/api/status-list.d.ts +27 -9
- package/lib/typescript/credential/status/api/status-list.d.ts.map +1 -1
- package/lib/typescript/credential/status/api/types.d.ts +20 -0
- package/lib/typescript/credential/status/api/types.d.ts.map +1 -1
- package/lib/typescript/credential/status/v1.3.3/01-status-list.d.ts +1 -0
- package/lib/typescript/credential/status/v1.3.3/01-status-list.d.ts.map +1 -1
- package/lib/typescript/credential/status/v1.3.3/02-verify-and-parse-status-list.d.ts.map +1 -1
- package/lib/typescript/credential/status/v1.3.3/03-get-status.d.ts +3 -0
- package/lib/typescript/credential/status/v1.3.3/03-get-status.d.ts.map +1 -0
- package/lib/typescript/credential/status/v1.3.3/index.d.ts.map +1 -1
- package/lib/typescript/credentials-catalogue/api/index.d.ts +1 -1
- package/lib/typescript/credentials-catalogue/common/get-status-l10n-ids.d.ts +1 -1
- package/package.json +6 -6
- package/src/credential/issuance/README.md +10 -5
- package/src/credential/issuance/api/03-complete-user-authorization.ts +10 -6
- package/src/credential/issuance/api/index.ts +1 -0
- package/src/credential/issuance/v1.0.0/03-complete-user-authorization.ts +2 -8
- package/src/credential/issuance/v1.3.3/03-complete-user-authorization.ts +21 -19
- package/src/credential/presentation/api/06-evaluate-dcql-query.ts +2 -2
- package/src/credential/presentation/api/types.ts +3 -0
- package/src/credential/status/README.md +15 -13
- package/src/credential/status/api/index.ts +3 -1
- package/src/credential/status/api/status-assertion.ts +1 -1
- package/src/credential/status/api/status-list.ts +35 -12
- package/src/credential/status/api/types.ts +27 -0
- package/src/credential/status/v1.3.3/01-status-list.ts +30 -18
- package/src/credential/status/v1.3.3/02-verify-and-parse-status-list.ts +5 -27
- package/src/credential/status/v1.3.3/03-get-status.ts +40 -0
- package/src/credential/status/v1.3.3/index.ts +4 -1
- package/src/credentials-catalogue/api/index.ts +1 -1
- package/src/credentials-catalogue/common/get-status-l10n-ids.ts +1 -1
|
@@ -71,19 +71,18 @@ export const getRequestedCredentialToBePresented = async function (issuerRequest
|
|
|
71
71
|
}
|
|
72
72
|
return requestObject.data.payload;
|
|
73
73
|
};
|
|
74
|
-
export const completeUserAuthorizationWithFormPostJwtMode = async (requestObject, _issuerConfig,
|
|
74
|
+
export const completeUserAuthorizationWithFormPostJwtMode = async (requestObject, _issuerConfig, evaluatedDcqlQuery, _ref) => {
|
|
75
75
|
let {
|
|
76
76
|
wiaCryptoContext,
|
|
77
77
|
appFetch = fetch
|
|
78
78
|
} = _ref;
|
|
79
79
|
Logger.log(LogLevel.DEBUG, `The requeste credential is not a PersonIdentificationData, completing the user authorization with form_post.jwt mode`);
|
|
80
|
-
const dcqlQueryResult = await RemotePresentationFlow.evaluateDcqlQuery(requestObject.dcql_query, [pid]);
|
|
81
80
|
const authRequestObject = {
|
|
82
81
|
nonce: requestObject.nonce,
|
|
83
82
|
clientId: requestObject.client_id,
|
|
84
83
|
responseUri: requestObject.response_uri
|
|
85
84
|
};
|
|
86
|
-
const remotePresentation = await RemotePresentationFlow.prepareRemotePresentations(
|
|
85
|
+
const remotePresentation = await RemotePresentationFlow.prepareRemotePresentations(evaluatedDcqlQuery, authRequestObject);
|
|
87
86
|
const authzResponsePayload = await createAuthzResponsePayload({
|
|
88
87
|
state: requestObject.state,
|
|
89
88
|
remotePresentation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AuthorizationChallengeResultShape","AuthorizationErrorShape","AuthorizationResultShape","hasStatusOrThrow","parseUrl","IssuerResponseError","UnimplementedFeatureError","ValidationFailed","decode","SignJWT","ResponseUriResultShape","getJwtFromFormPost","AuthorizationError","AuthorizationIdpError","LogLevel","Logger","RawRequestObject","RemotePresentation","RemotePresentationFlow","continueUserAuthorizationWithMRTDPoPChallenge","authRedirectUrl","log","DEBUG","query","authResParsed","safeParse","success","authErr","ERROR","error","message","JSON","stringify","data","error_description","buildAuthorizationUrl","issuerRequestUri","clientId","issuerConf","idpHint","authzRequestEndpoint","authorization_endpoint","params","URLSearchParams","client_id","request_uri","append","authUrl","completePidUserAuthorizationWithQueryMode","parseAuthorizationResponse","completeEaaUserAuthorizationWithQueryMode","getRequestedCredentialToBePresented","appFetch","arguments","length","undefined","fetch","toString","requestObject","method","then","res","text","jws","reqObj","header","protectedHeader","payload","reason","completeUserAuthorizationWithFormPostJwtMode","_issuerConfig","
|
|
1
|
+
{"version":3,"names":["AuthorizationChallengeResultShape","AuthorizationErrorShape","AuthorizationResultShape","hasStatusOrThrow","parseUrl","IssuerResponseError","UnimplementedFeatureError","ValidationFailed","decode","SignJWT","ResponseUriResultShape","getJwtFromFormPost","AuthorizationError","AuthorizationIdpError","LogLevel","Logger","RawRequestObject","RemotePresentation","RemotePresentationFlow","continueUserAuthorizationWithMRTDPoPChallenge","authRedirectUrl","log","DEBUG","query","authResParsed","safeParse","success","authErr","ERROR","error","message","JSON","stringify","data","error_description","buildAuthorizationUrl","issuerRequestUri","clientId","issuerConf","idpHint","authzRequestEndpoint","authorization_endpoint","params","URLSearchParams","client_id","request_uri","append","authUrl","completePidUserAuthorizationWithQueryMode","parseAuthorizationResponse","completeEaaUserAuthorizationWithQueryMode","getRequestedCredentialToBePresented","appFetch","arguments","length","undefined","fetch","toString","requestObject","method","then","res","text","jws","reqObj","header","protectedHeader","payload","reason","completeUserAuthorizationWithFormPostJwtMode","_issuerConfig","evaluatedDcqlQuery","_ref","wiaCryptoContext","authRequestObject","nonce","responseUri","response_uri","remotePresentation","prepareRemotePresentations","authzResponsePayload","createAuthzResponsePayload","state","body","response","resUriRes","headers","reqUri","json","redirect_uri","cbRes","decodedJwt","authRes","_ref2","kid","getPublicKey","setProtectedHeader","typ","setPayload","vp_token","presentations","reduce","_ref3","credentialId","vpToken","setIssuedAt","setExpirationTime","sign"],"sourceRoot":"../../../../../src","sources":["credential/issuance/v1.0.0/03-complete-user-authorization.ts"],"mappings":"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"}
|
|
@@ -68,7 +68,7 @@ export const getRequestedCredentialToBePresented = async function (issuerRequest
|
|
|
68
68
|
};
|
|
69
69
|
|
|
70
70
|
// NOTE: this function is not used in the 1.3 issuance flow. It may be removed in the future.
|
|
71
|
-
export const completeUserAuthorizationWithFormPostJwtMode = async (requestObject, issuerConfig,
|
|
71
|
+
export const completeUserAuthorizationWithFormPostJwtMode = async (requestObject, issuerConfig, evaluatedDcqlQuery, _ref) => {
|
|
72
72
|
let {
|
|
73
73
|
appFetch = fetch
|
|
74
74
|
} = _ref;
|
|
@@ -76,7 +76,7 @@ export const completeUserAuthorizationWithFormPostJwtMode = async (requestObject
|
|
|
76
76
|
const authzResponse = await processPidPresentationAndCreateAuthzResponse({
|
|
77
77
|
requestObject,
|
|
78
78
|
issuerConfig,
|
|
79
|
-
|
|
79
|
+
evaluatedDcqlQuery
|
|
80
80
|
});
|
|
81
81
|
Logger.log(LogLevel.DEBUG, `Authz response: ${authzResponse}`);
|
|
82
82
|
const issuerSigKey = issuerConfig.keys.find(key => key.use === "sig");
|
|
@@ -101,7 +101,7 @@ export const completeUserAuthorizationWithFormPostJwtMode = async (requestObject
|
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
103
|
};
|
|
104
|
-
export const completeEaaUserAuthorizationWithQueryMode = async function (requestObject, issuerConfig,
|
|
104
|
+
export const completeEaaUserAuthorizationWithQueryMode = async function (requestObject, issuerConfig, evaluatedDcqlQuery, clientRedirectUri) {
|
|
105
105
|
let {
|
|
106
106
|
appFetch = fetch,
|
|
107
107
|
fetchFinalRedirectUri
|
|
@@ -110,7 +110,7 @@ export const completeEaaUserAuthorizationWithQueryMode = async function (request
|
|
|
110
110
|
const authzResponse = await processPidPresentationAndCreateAuthzResponse({
|
|
111
111
|
requestObject,
|
|
112
112
|
issuerConfig,
|
|
113
|
-
|
|
113
|
+
evaluatedDcqlQuery
|
|
114
114
|
});
|
|
115
115
|
Logger.log(LogLevel.DEBUG, `Authz response: ${JSON.stringify(authzResponse)}`);
|
|
116
116
|
const {
|
|
@@ -174,17 +174,16 @@ export const parseAuthorizationResponse = authRes => {
|
|
|
174
174
|
* Utility function to process the DCQL query for PID presentation and to create the authorization response to send to the Issuer.
|
|
175
175
|
* @param params.requestObject - The request object containing the DCQL query
|
|
176
176
|
* @param params.issuerConfig - The Issuer unified configuration
|
|
177
|
-
* @param params.
|
|
177
|
+
* @param params.evaluatedDcqlQuery - Credentials that satisfy the request object's DCQL query
|
|
178
178
|
* @returns The authorization response containing the JARM to be sent to the Issuer
|
|
179
179
|
*/
|
|
180
180
|
const processPidPresentationAndCreateAuthzResponse = async _ref2 => {
|
|
181
181
|
let {
|
|
182
182
|
requestObject,
|
|
183
183
|
issuerConfig,
|
|
184
|
-
|
|
184
|
+
evaluatedDcqlQuery
|
|
185
185
|
} = _ref2;
|
|
186
|
-
const
|
|
187
|
-
const remotePresentation = await RemotePresentationFlow.prepareRemotePresentations(dcqlQueryResult, {
|
|
186
|
+
const remotePresentation = await RemotePresentationFlow.prepareRemotePresentations(evaluatedDcqlQuery, {
|
|
188
187
|
clientId: requestObject.client_id,
|
|
189
188
|
nonce: requestObject.nonce,
|
|
190
189
|
responseUri: requestObject.response_uri
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AuthorizationErrorShape","AuthorizationResultShape","parseUrl","createAuthorizationResponse","parseAuthorizeRequest","fetchAuthorizationResponse","sendAuthorizationResponseAndExtractCode","parseMrtdChallenge","AuthorizationError","AuthorizationIdpError","LogLevel","Logger","RemotePresentation","RemotePresentationFlow","createVerifyJwtFromJwks","partialCallbacks","sdkConfigV1_3","sdkConfigV1_4","IoWalletError","IssuerResponseError","mapToRequestObject","hasStatusOrThrow","continueUserAuthorizationWithMRTDPoPChallenge","authRedirectUrl","log","DEBUG","parsedChallenge","redirectUrl","challenge_info","challengeJwt","err","errorMessage","Error","message","ERROR","buildAuthorizationUrl","issuerRequestUri","clientId","issuerConf","idpHint","authzRequestEndpoint","authorization_endpoint","params","URLSearchParams","client_id","request_uri","append","authUrl","completePidUserAuthorizationWithQueryMode","query","parseAuthorizationResponse","getRequestedCredentialToBePresented","appFetch","arguments","length","undefined","fetch","toString","requestObjectJwt","method","then","res","text","parsedAuthRequest","config","callbacks","verifyJwt","keys","completeUserAuthorizationWithFormPostJwtMode","requestObject","issuerConfig","
|
|
1
|
+
{"version":3,"names":["AuthorizationErrorShape","AuthorizationResultShape","parseUrl","createAuthorizationResponse","parseAuthorizeRequest","fetchAuthorizationResponse","sendAuthorizationResponseAndExtractCode","parseMrtdChallenge","AuthorizationError","AuthorizationIdpError","LogLevel","Logger","RemotePresentation","RemotePresentationFlow","createVerifyJwtFromJwks","partialCallbacks","sdkConfigV1_3","sdkConfigV1_4","IoWalletError","IssuerResponseError","mapToRequestObject","hasStatusOrThrow","continueUserAuthorizationWithMRTDPoPChallenge","authRedirectUrl","log","DEBUG","parsedChallenge","redirectUrl","challenge_info","challengeJwt","err","errorMessage","Error","message","ERROR","buildAuthorizationUrl","issuerRequestUri","clientId","issuerConf","idpHint","authzRequestEndpoint","authorization_endpoint","params","URLSearchParams","client_id","request_uri","append","authUrl","completePidUserAuthorizationWithQueryMode","query","parseAuthorizationResponse","getRequestedCredentialToBePresented","appFetch","arguments","length","undefined","fetch","toString","requestObjectJwt","method","then","res","text","parsedAuthRequest","config","callbacks","verifyJwt","keys","completeUserAuthorizationWithFormPostJwtMode","requestObject","issuerConfig","evaluatedDcqlQuery","_ref","authzResponse","processPidPresentationAndCreateAuthzResponse","issuerSigKey","find","key","use","authorizationResponseJarm","jarm","responseJwe","iss","state","presentationResponseUri","response_uri","signer","alg","publicJwk","completeEaaUserAuthorizationWithQueryMode","clientRedirectUri","fetchFinalRedirectUri","JSON","stringify","redirect_uri","finalRedirectUri","response","catch","ok","url","startsWith","authRes","authResParsed","safeParse","success","authErr","error","data","error_description","_ref2","remotePresentation","prepareRemotePresentations","nonce","responseUri","vp_token","presentations","reduce","acc","_ref3","credentialId","vpToken","rpJwks","jwks","encrypted_response_enc_values_supported","encryptJwe","generateRandom"],"sourceRoot":"../../../../../src","sources":["credential/issuance/v1.3.3/03-complete-user-authorization.ts"],"mappings":"AAAA,SACEA,uBAAuB,EACvBC,wBAAwB,QAEnB,qBAAqB;AAC5B,OAAOC,QAAQ,MAAM,WAAW;AAChC,SACEC,2BAA2B,EAC3BC,qBAAqB,EACrBC,0BAA0B,QAErB,0BAA0B;AACjC,SAASC,uCAAuC,QAAQ,2BAA2B;AAEnF,SAASC,kBAAkB,QAAQ,0BAA0B;AAC7D,SAASC,kBAAkB,EAAEC,qBAAqB,QAAQ,kBAAkB;AAC5E,SAASC,QAAQ,EAAEC,MAAM,QAAQ,wBAAwB;AACzD,SAASC,kBAAkB,IAAIC,sBAAsB,QAAQ,2BAA2B;AACxF,SACEC,uBAAuB,EACvBC,gBAAgB,QACX,0BAA0B;AACjC,SAASC,aAAa,EAAEC,aAAa,QAAQ,uBAAuB;AACpE,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,uBAAuB;AAE1E,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,OAAO,MAAMC,6CAA2G,GACtH,MAAOC,eAAe,IAAK;EACzBZ,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACd,0GACF,CAAC;EACD,IAAI;IACF,MAAMC,eAAe,GAAGnB,kBAAkB,CAAC;MACzCoB,WAAW,EAAEJ;IACf,CAAC,CAAC;IACF,OAAO;MAAEK,cAAc,EAAEF,eAAe,CAACG;IAAa,CAAC;EACzD,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZ,MAAMC,YAAY,GAChBD,GAAG,YAAYE,KAAK,GAAGF,GAAG,CAACG,OAAO,GAAG,+BAA+B;IACtEtB,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACwB,KAAK,EACb,mDAAkDH,YAAa,EAClE,CAAC;IACD,MAAM,IAAIvB,kBAAkB,CAACuB,YAAY,CAAC;EAC5C;AACF,CAAC;AAEH,OAAO,MAAMI,qBAA2D,GACtE,MAAAA,CAAOC,gBAAgB,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,KAAK;EACzD,MAAMC,oBAAoB,GAAGF,UAAU,CAACG,sBAAsB;EAE9D,MAAMC,MAAM,GAAG,IAAIC,eAAe,CAAC;IACjCC,SAAS,EAAEP,QAAQ;IACnBQ,WAAW,EAAET;EACf,CAAC,CAAC;EAEF,IAAIG,OAAO,EAAE;IACXG,MAAM,CAACI,MAAM,CAAC,SAAS,EAAEP,OAAO,CAAC;EACnC;EAEA,MAAMQ,OAAO,GAAI,GAAEP,oBAAqB,IAAGE,MAAO,EAAC;EAEnD,OAAO;IAAEK;EAAQ,CAAC;AACpB,CAAC;AAEH,OAAO,MAAMC,yCAAmG,GAC9G,MAAOzB,eAAe,IAAK;EACzBZ,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACd,sFACF,CAAC;EACD,MAAMwB,KAAK,GAAG/C,QAAQ,CAACqB,eAAe,CAAC,CAAC0B,KAAK;EAE7C,OAAOC,0BAA0B,CAACD,KAAK,CAAC;AAC1C,CAAC;AAEH,OAAO,MAAME,mCAAuF,GAClG,eAAAA,CAAOf,gBAAgB,EAAEC,QAAQ,EAAEC,UAAU,EAAuB;EAAA,IAArBc,QAAQ,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,KAAK;EAC7D7C,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACd,kFACF,CAAC;EAED,MAAMe,oBAAoB,GAAGF,UAAU,CAACG,sBAAsB;EAC9D,MAAMC,MAAM,GAAG,IAAIC,eAAe,CAAC;IACjCC,SAAS,EAAEP,QAAQ;IACnBQ,WAAW,EAAET;EACf,CAAC,CAAC;EAEFzB,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACb,oCAAmCe,oBAAqB,IAAGE,MAAM,CAACe,QAAQ,CAAC,CAAE,EAChF,CAAC;EAED,MAAMC,gBAAgB,GAAG,MAAMN,QAAQ,CACpC,GAAEZ,oBAAqB,IAAGE,MAAM,CAACe,QAAQ,CAAC,CAAE,EAAC,EAC9C;IAAEE,MAAM,EAAE;EAAM,CAClB,CAAC,CACEC,IAAI,CAACvC,gBAAgB,CAAC,GAAG,EAAEF,mBAAmB,CAAC,CAAC,CAChDyC,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC;EAE5B,MAAMC,iBAAiB,GAAG,MAAM3D,qBAAqB,CAAC;IACpD4D,MAAM,EAAEhD,aAAa;IACrB0C,gBAAgB;IAChBO,SAAS,EAAE;MACTC,SAAS,EAAEpD,uBAAuB,CAACwB,UAAU,CAAC6B,IAAI;IACpD;EACF,CAAC,CAAC;EAEF,OAAO/C,kBAAkB,CAAC2C,iBAAiB,CAAC;AAC9C,CAAC;;AAEH;AACA,OAAO,MAAMK,4CAAyG,GACpH,MAAAA,CACEC,aAAa,EACbC,YAAY,EACZC,kBAAkB,EAAAC,IAAA,KAEf;EAAA,IADH;IAAEpB,QAAQ,GAAGI;EAAM,CAAC,GAAAgB,IAAA;EAEpB7D,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACd,kGACF,CAAC;EAED,MAAMgD,aAAa,GAAG,MAAMC,4CAA4C,CAAC;IACvEL,aAAa;IACbC,YAAY;IACZC;EACF,CAAC,CAAC;EAEF5D,MAAM,CAACa,GAAG,CAACd,QAAQ,CAACe,KAAK,EAAG,mBAAkBgD,aAAc,EAAC,CAAC;EAE9D,MAAME,YAAY,GAAGL,YAAY,CAACH,IAAI,CAACS,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,GAAG,KAAK,KAAK,CAAC;EACvE,IAAI,CAACH,YAAY,EAAE;IACjB,MAAM5C,YAAY,GAAG,gDAAgD;IACrEpB,MAAM,CAACa,GAAG,CAACd,QAAQ,CAACwB,KAAK,EAAEH,YAAY,CAAC;IACxC,MAAM,IAAIb,aAAa,CAACa,YAAY,CAAC;EACvC;EAEA,OAAOzB,uCAAuC,CAAC;IAC7CyE,yBAAyB,EAAEN,aAAa,CAACO,IAAI,CAACC,WAAW;IACzDhB,SAAS,EAAE;MACT,GAAGlD,gBAAgB;MACnByC,KAAK,EAAEJ;IACT,CAAC;IACD8B,GAAG,EAAEb,aAAa,CAACa,GAAG;IACtBC,KAAK,EAAEd,aAAa,CAACc,KAAK,IAAI,EAAE;IAChCC,uBAAuB,EAAEf,aAAa,CAACgB,YAAY;IACnDC,MAAM,EAAE;MACNC,GAAG,EAAE,OAAO;MACZ5B,MAAM,EAAE,KAAK;MACb6B,SAAS,EAAEb;IACb;EACF,CAAC,CAAC;AACJ,CAAC;AAEH,OAAO,MAAMc,yCAAmG,GAC9G,eAAAA,CACEpB,aAAa,EACbC,YAAY,EACZC,kBAAkB,EAClBmB,iBAAiB,EAEd;EAAA,IADH;IAAEtC,QAAQ,GAAGI,KAAK;IAAEmC;EAAsB,CAAC,GAAAtC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEhD1C,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACd,0FACF,CAAC;EAED,MAAMgD,aAAa,GAAG,MAAMC,4CAA4C,CAAC;IACvEL,aAAa;IACbC,YAAY;IACZC;EACF,CAAC,CAAC;EAEF5D,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACe,KAAK,EACb,mBAAkBmE,IAAI,CAACC,SAAS,CAACpB,aAAa,CAAE,EACnD,CAAC;EAED,MAAM;IAAEqB;EAAa,CAAC,GAAG,MAAMzF,0BAA0B,CAAC;IACxD0E,yBAAyB,EAAEN,aAAa,CAACO,IAAI,CAACC,WAAW;IACzDG,uBAAuB,EAAEf,aAAa,CAACgB,YAAY;IACnDpB,SAAS,EAAE;MACT,GAAGlD,gBAAgB;MACnByC,KAAK,EAAEJ;IACT;EACF,CAAC,CAAC;EAEF,IAAI,CAAC0C,YAAY,EAAE;IACjB,MAAM/D,YAAY,GAChB,2FAA2F;IAC7FpB,MAAM,CAACa,GAAG,CAACd,QAAQ,CAACwB,KAAK,EAAEH,YAAY,CAAC;IACxC,MAAM,IAAIvB,kBAAkB,CAACuB,YAAY,CAAC;EAC5C;EAEA,IAAIgE,gBAAoC;EAExC,IAAIJ,qBAAqB,EAAE;IACzBI,gBAAgB,GAAG,MAAMJ,qBAAqB,CAACG,YAAY,CAAC;EAC9D,CAAC,MAAM;IACL,MAAME,QAAQ,GAAG,MAAM5C,QAAQ,CAAC0C,YAAY,CAAC,CAACG,KAAK,CAAC,MAAM,IAAI,CAAC;IAC/D,IAAI,CAACD,QAAQ,IAAI,CAACA,QAAQ,CAACE,EAAE,EAAE;MAC7B,MAAMnE,YAAY,GAAI,qEAAoE2D,iBAAkB,mCAAkC;MAC9I/E,MAAM,CAACa,GAAG,CAACd,QAAQ,CAACwB,KAAK,EAAEH,YAAY,CAAC;MACxC,MAAM,IAAIvB,kBAAkB,CAACuB,YAAY,CAAC;IAC5C;IACAgE,gBAAgB,GAAGC,QAAQ,CAACG,GAAG;EACjC;EAEA,IAAI,CAACJ,gBAAgB,IAAI,CAACA,gBAAgB,CAACK,UAAU,CAACV,iBAAiB,CAAC,EAAE;IACxE,MAAM3D,YAAY,GAAI,4FAA2F2D,iBAAkB,UAASK,gBAAiB,EAAC;IAC9JpF,MAAM,CAACa,GAAG,CAACd,QAAQ,CAACwB,KAAK,EAAEH,YAAY,CAAC;IACxC,MAAM,IAAIvB,kBAAkB,CAACuB,YAAY,CAAC;EAC5C;EAEA,OAAOmB,0BAA0B,CAAChD,QAAQ,CAAC6F,gBAAgB,CAAC,CAAC9C,KAAK,CAAC;AACrE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GACrCmD,OAAgB,IACQ;EACxB,MAAMC,aAAa,GAAGrG,wBAAwB,CAACsG,SAAS,CAACF,OAAO,CAAC;EACjE,IAAI,CAACC,aAAa,CAACE,OAAO,EAAE;IAC1B,MAAMC,OAAO,GAAGzG,uBAAuB,CAACuG,SAAS,CAACF,OAAO,CAAC;IAC1D,IAAI,CAACI,OAAO,CAACD,OAAO,EAAE;MACpB7F,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACwB,KAAK,EACb,mDAAkDoE,aAAa,CAACI,KAAK,CAACzE,OAAQ,EACjF,CAAC;MACD,MAAM,IAAIzB,kBAAkB,CAAC8F,aAAa,CAACI,KAAK,CAACzE,OAAO,CAAC,CAAC,CAAC;IAC7D;;IACAtB,MAAM,CAACa,GAAG,CACRd,QAAQ,CAACwB,KAAK,EACb,2CAA0C0D,IAAI,CAACC,SAAS,CAACY,OAAO,CAAE,EACrE,CAAC;IACD,MAAM,IAAIhG,qBAAqB,CAC7BgG,OAAO,CAACE,IAAI,CAACD,KAAK,EAClBD,OAAO,CAACE,IAAI,CAACC,iBACf,CAAC;EACH;EACA,OAAON,aAAa,CAACK,IAAI;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMjC,4CAA4C,GAAG,MAAAmC,KAAA,IAQH;EAAA,IARU;IAC1DxC,aAAa;IACbC,YAAY;IACZC;EAKF,CAAC,GAAAsC,KAAA;EACC,MAAMC,kBAAkB,GACtB,MAAMjG,sBAAsB,CAACkG,0BAA0B,CACrDxC,kBAAkB,EAClB;IACElC,QAAQ,EAAEgC,aAAa,CAACzB,SAAS;IACjCoE,KAAK,EAAE3C,aAAa,CAAC2C,KAAK;IAC1BC,WAAW,EAAE5C,aAAa,CAACgB;EAC7B,CACF,CAAC;EAEH,MAAM6B,QAAQ,GAAGJ,kBAAkB,CAACK,aAAa,CAACC,MAAM,CACtD,CAACC,GAAG,EAAAC,KAAA;IAAA,IAAE;MAAEC,YAAY;MAAEC;IAAQ,CAAC,GAAAF,KAAA;IAAA,OAAM;MAAE,GAAGD,GAAG;MAAE,CAACE,YAAY,GAAG,CAACC,OAAO;IAAE,CAAC;EAAA,CAAC,EAC3E,CAAC,CACH,CAAC;EAED,OAAOrH,2BAA2B,CAAC;IACjC;IACA;IACA6D,MAAM,EAAE/C,aAAa;IACrBoD,aAAa;IACboD,MAAM,EAAE;MACNC,IAAI,EAAE;QAAEvD,IAAI,EAAEG,YAAY,CAACH;MAAK,CAAkB;MAClDwD,uCAAuC,EACrCrD,YAAY,CAACqD;IACjB,CAAC;IACDT,QAAQ;IACRjD,SAAS,EAAE;MACT2D,UAAU,EAAE7G,gBAAgB,CAAC6G,UAAU;MACvCC,cAAc,EAAE9G,gBAAgB,CAAC8G;IACnC;EACF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["z","PresentationParams","object","client_id","string","nonempty","request","optional","request_uri","url","request_uri_method","enum","state","WalletMetadata","authorization_endpoint","client_id_schemes_supported","array","client_id_prefixes_supported","response_types_supported","response_modes_supported","request_object_signing_alg_values_supported","vp_formats_supported","record","RequestObjectWalletCapabilities","wallet_metadata","wallet_nonce","ErrorResponse"],"sourceRoot":"../../../../../src","sources":["credential/presentation/api/types.ts"],"mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,KAAK;
|
|
1
|
+
{"version":3,"names":["z","PresentationParams","object","client_id","string","nonempty","request","optional","request_uri","url","request_uri_method","enum","state","WalletMetadata","authorization_endpoint","client_id_schemes_supported","array","client_id_prefixes_supported","response_types_supported","response_modes_supported","request_object_signing_alg_values_supported","vp_formats_supported","record","RequestObjectWalletCapabilities","wallet_metadata","wallet_nonce","ErrorResponse"],"sourceRoot":"../../../../../src","sources":["credential/presentation/api/types.ts"],"mappings":"AAAA,OAAO,KAAKA,CAAC,MAAM,KAAK;AAOxB,OAAO,MAAMC,kBAAkB,GAAGD,CAAC,CAACE,MAAM,CAAC;EACzCC,SAAS,EAAEH,CAAC,CAACI,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAChCC,OAAO,EAAEN,CAAC,CAACI,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EAC9BC,WAAW,EAAER,CAAC,CAACI,MAAM,CAAC,CAAC,CAACK,GAAG,CAAC,CAAC,CAACF,QAAQ,CAAC,CAAC;EACxCG,kBAAkB,EAAEV,CAAC,CAACW,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAACJ,QAAQ,CAAC,CAAC;EACtDK,KAAK,EAAEZ,CAAC,CAACI,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC;AAC7B,CAAC,CAAC;AAGF,OAAO,MAAMM,cAAc,GAAGb,CAAC,CAACE,MAAM,CAAC;EACrCY,sBAAsB,EAAEd,CAAC,CAACI,MAAM,CAAC,CAAC,CAACK,GAAG,CAAC,CAAC;EACxCM,2BAA2B,EAAEf,CAAC,CAACgB,KAAK,CAAChB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EAC3DU,4BAA4B,EAAEjB,CAAC,CAACgB,KAAK,CAAChB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EAC5DW,wBAAwB,EAAElB,CAAC,CAACgB,KAAK,CAAChB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EACxDY,wBAAwB,EAAEnB,CAAC,CAACgB,KAAK,CAAChB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EACxDa,2CAA2C,EAAEpB,CAAC,CAACgB,KAAK,CAAChB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC;EAC3Ec,oBAAoB,EAAErB,CAAC,CAACsB,MAAM,CAC5BtB,CAAC,CAACI,MAAM,CAAC,CAAC,EACVJ,CAAC,CAACE,MAAM,CAAC;IACP,mBAAmB,EAAEF,CAAC,CAACgB,KAAK,CAAChB,CAAC,CAACI,MAAM,CAAC,CAAC,CAAC,CAACG,QAAQ,CAAC,CAAC,CAAE;EACvD,CAAC,CACH;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;;AAIA,OAAO,MAAMgB,+BAA+B,GAAGvB,CAAC,CAACE,MAAM,CAAC;EACtDsB,eAAe,EAAEX,cAAc;EAC/BY,YAAY,EAAEzB,CAAC,CAACI,MAAM,CAAC,CAAC,CAACG,QAAQ,CAAC;AACpC,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;;AAEA,OAAO,MAAMmB,aAAa,GAAG1B,CAAC,CAACW,IAAI,CAAC,CAClC,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,gBAAgB,CACjB,CAAC;;AAMF;AACA;AACA;AACA;;AAeA;AACA;AACA;;AAeA;AACA;AACA;;AAWA;AACA;AACA;;AAKA;AACA;AACA;AACA;;AAKA;AACA;AACA"}
|
|
@@ -31,8 +31,10 @@ graph TD;
|
|
|
31
31
|
1[verifyAndParseStatusAssertion]
|
|
32
32
|
2[getStatusList]
|
|
33
33
|
3[verifyAndParseStatusList]
|
|
34
|
+
4[getStatus]
|
|
34
35
|
0 --> 1
|
|
35
36
|
2 --> 3
|
|
37
|
+
3 --> 4
|
|
36
38
|
```
|
|
37
39
|
|
|
38
40
|
## Mapped results
|
|
@@ -104,24 +106,24 @@ const credentialIssuerUrl = "https://issuer.example.com";
|
|
|
104
106
|
|
|
105
107
|
const { issuerConf } = await wallet.CredentialIssuance.evaluateIssuerTrust(credentialIssuerUrl);
|
|
106
108
|
|
|
107
|
-
// Get the status list
|
|
108
|
-
const
|
|
109
|
-
credential,
|
|
110
|
-
|
|
109
|
+
// Get the status list token and credential reference index
|
|
110
|
+
const { statusList: statusListJwt, idx } =
|
|
111
|
+
await wallet.CredentialStatus.statusList.get(credential, format);
|
|
112
|
+
|
|
113
|
+
// Verify and parse the status list token
|
|
114
|
+
const statusList = await wallet.CredentialStatus.statusList.verifyAndParse(
|
|
115
|
+
issuerConf.keys,
|
|
116
|
+
statusListJwt,
|
|
111
117
|
);
|
|
112
118
|
|
|
113
|
-
//
|
|
114
|
-
const { status,
|
|
115
|
-
await wallet.CredentialStatus.statusList.verifyAndParse(
|
|
116
|
-
issuerConf.keys,
|
|
117
|
-
res
|
|
118
|
-
);
|
|
119
|
+
// Read the credential status from the decoded status list
|
|
120
|
+
const { status, rawStatus } = wallet.CredentialStatus.statusList.getStatus(statusList, idx);
|
|
119
121
|
|
|
120
122
|
return {
|
|
121
|
-
statusList
|
|
123
|
+
statusList,
|
|
122
124
|
status,
|
|
123
|
-
|
|
125
|
+
rawStatus,
|
|
124
126
|
};
|
|
125
127
|
```
|
|
126
128
|
|
|
127
|
-
</details>
|
|
129
|
+
</details>
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @example
|
|
7
7
|
* if (CredentialStatus.statusList.isSupported) {
|
|
8
|
-
* const statusList = await CredentialStatus.statusList.get(credential, format)
|
|
8
|
+
* const { statusList: statusListJwt, idx } = await CredentialStatus.statusList.get(credential, format)
|
|
9
|
+
* const statusList = await CredentialStatus.statusList.verifyAndParse(keys, statusListJwt)
|
|
10
|
+
* const status = CredentialStatus.statusList.getStatus(statusList, idx)
|
|
9
11
|
* }
|
|
10
12
|
*/
|
|
11
13
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["credential/status/api/index.ts"],"mappings":"AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,cAAc,SAAS;AAAC"}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["credential/status/api/index.ts"],"mappings":"AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,cAAc,SAAS;AAAC"}
|
|
@@ -1,2 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { UnixTime } from "../../../utils/zod";
|
|
1
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Common type for a parsed Status Assertion
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const StatusListBits = z.union([z.literal(1), z.literal(2), z.literal(4), z.literal(8)]);
|
|
9
|
+
export const StatusListContent = z.object({
|
|
10
|
+
bits: StatusListBits,
|
|
11
|
+
lst: z.string().min(1),
|
|
12
|
+
aggregation_uri: z.url().optional()
|
|
13
|
+
});
|
|
14
|
+
export const StatusList = z.object({
|
|
15
|
+
sub: z.url(),
|
|
16
|
+
iat: UnixTime,
|
|
17
|
+
iss: z.url().optional(),
|
|
18
|
+
exp: UnixTime.optional(),
|
|
19
|
+
ttl: z.number().positive().optional(),
|
|
20
|
+
status_list: StatusListContent
|
|
21
|
+
});
|
|
2
22
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["credential/status/api/types.ts"],"mappings":""}
|
|
1
|
+
{"version":3,"names":["z","UnixTime","StatusListBits","union","literal","StatusListContent","object","bits","lst","string","min","aggregation_uri","url","optional","StatusList","sub","iat","iss","exp","ttl","number","positive","status_list"],"sourceRoot":"../../../../../src","sources":["credential/status/api/types.ts"],"mappings":"AAAA,SAASA,CAAC,QAAQ,KAAK;AACvB,SAASC,QAAQ,QAAQ,oBAAoB;;AAE7C;AACA;AACA;;AAcA,MAAMC,cAAc,GAAGF,CAAC,CAACG,KAAK,CAAC,CAC7BH,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,EACZJ,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,EACZJ,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,EACZJ,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,CACb,CAAC;AAGF,OAAO,MAAMC,iBAAiB,GAAGL,CAAC,CAACM,MAAM,CAAC;EACxCC,IAAI,EAAEL,cAAc;EACpBM,GAAG,EAAER,CAAC,CAACS,MAAM,CAAC,CAAC,CAACC,GAAG,CAAC,CAAC,CAAC;EACtBC,eAAe,EAAEX,CAAC,CAACY,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC;AACpC,CAAC,CAAC;AAGF,OAAO,MAAMC,UAAU,GAAGd,CAAC,CAACM,MAAM,CAAC;EACjCS,GAAG,EAAEf,CAAC,CAACY,GAAG,CAAC,CAAC;EACZI,GAAG,EAAEf,QAAQ;EACbgB,GAAG,EAAEjB,CAAC,CAACY,GAAG,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EACvBK,GAAG,EAAEjB,QAAQ,CAACY,QAAQ,CAAC,CAAC;EACxBM,GAAG,EAAEnB,CAAC,CAACoB,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACR,QAAQ,CAAC,CAAC;EACrCS,WAAW,EAAEjB;AACf,CAAC,CAAC"}
|
|
@@ -19,28 +19,23 @@ const getStatusListEntry = async (credential, format) => {
|
|
|
19
19
|
}
|
|
20
20
|
return statusListEntry;
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
const fetchStatusList = function (uri, appFetch) {
|
|
23
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
24
|
+
return appFetch(uri, {
|
|
25
|
+
headers: {
|
|
26
|
+
Accept: "application/statuslist+jwt",
|
|
27
|
+
...(options.cacheDisabled && {
|
|
28
|
+
"Cache-Control": "no-cache"
|
|
29
|
+
})
|
|
30
|
+
}
|
|
31
|
+
}).then(hasStatusOrThrow(200)).then(response => response.text());
|
|
32
|
+
};
|
|
33
|
+
export const getStatusListByUri = async function (uri) {
|
|
23
34
|
let {
|
|
24
35
|
appFetch = fetch
|
|
25
|
-
} = arguments.length >
|
|
26
|
-
const {
|
|
27
|
-
uri,
|
|
28
|
-
idx
|
|
29
|
-
} = await getStatusListEntry(credential, format);
|
|
30
|
-
const fetchStatusList = function () {
|
|
31
|
-
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
32
|
-
return appFetch(uri, {
|
|
33
|
-
headers: {
|
|
34
|
-
Accept: "application/statuslist+jwt",
|
|
35
|
-
...(options.cacheDisabled && {
|
|
36
|
-
"Cache-Control": "no-cache"
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
}).then(hasStatusOrThrow(200)).then(response => response.text());
|
|
40
|
-
};
|
|
41
|
-
|
|
36
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
42
37
|
// When the HTTP response includes cache headers, fetch will return a cached response and the JWT might be expired
|
|
43
|
-
let statusList = await fetchStatusList();
|
|
38
|
+
let statusList = await fetchStatusList(uri, appFetch);
|
|
44
39
|
const decoded = decodeJwt(statusList);
|
|
45
40
|
const {
|
|
46
41
|
exp
|
|
@@ -49,14 +44,22 @@ export const getStatusList = async function (credential, format) {
|
|
|
49
44
|
// If the status list JWT is expired, try to fetch it again bypassing the HTTP cache.
|
|
50
45
|
// If it is still expired after the refetch, `verifyAndParseStatusList` will throw.
|
|
51
46
|
if (exp && exp < Math.floor(Date.now() / 1000)) {
|
|
52
|
-
statusList = await fetchStatusList({
|
|
47
|
+
statusList = await fetchStatusList(uri, appFetch, {
|
|
53
48
|
cacheDisabled: true
|
|
54
49
|
});
|
|
55
50
|
}
|
|
51
|
+
return statusList;
|
|
52
|
+
};
|
|
53
|
+
export const getStatusList = async (credential, format, context) => {
|
|
54
|
+
const {
|
|
55
|
+
uri,
|
|
56
|
+
idx
|
|
57
|
+
} = await getStatusListEntry(credential, format);
|
|
58
|
+
const statusList = await getStatusListByUri(uri, context);
|
|
56
59
|
return {
|
|
57
|
-
statusList,
|
|
58
60
|
uri,
|
|
59
61
|
idx,
|
|
62
|
+
statusList,
|
|
60
63
|
format: "jwt"
|
|
61
64
|
};
|
|
62
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CBOR","decode","decodeJwt","getStatusListFromJWT","IoWalletError","hasStatusOrThrow","getStatusListEntry","credential","format","statusListEntry","_decoded$issuerAuth","decoded","issuerAuth","payload","status","status_list","
|
|
1
|
+
{"version":3,"names":["CBOR","decode","decodeJwt","getStatusListFromJWT","IoWalletError","hasStatusOrThrow","getStatusListEntry","credential","format","statusListEntry","_decoded$issuerAuth","decoded","issuerAuth","payload","status","status_list","fetchStatusList","uri","appFetch","options","arguments","length","undefined","headers","Accept","cacheDisabled","then","response","text","getStatusListByUri","fetch","statusList","exp","Math","floor","Date","now","getStatusList","context","idx"],"sourceRoot":"../../../../../src","sources":["credential/status/v1.3.3/01-status-list.ts"],"mappings":"AAAA,SAASA,IAAI,QAAQ,kCAAkC;AACvD,SAASC,MAAM,IAAIC,SAAS,QAAQ,6BAA6B;AACjE,SACEC,oBAAoB,QAEf,yBAAyB;AAChC,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,gBAAgB,QAAQ,qBAAqB;AAItD,MAAMC,kBAAkB,GAAG,MAAAA,CACzBC,UAAkB,EAClBC,MAAwB,KACK;EAC7B,IAAIC,eAA4C;EAEhD,IAAID,MAAM,KAAK,UAAU,EAAE;IAAA,IAAAE,mBAAA;IACzB;IACA,MAAMC,OAAO,GAAG,MAAMX,IAAI,CAACC,MAAM,CAACM,UAAU,CAAC;IAC7CE,eAAe,IAAAC,mBAAA,GAAGC,OAAO,CAACC,UAAU,cAAAF,mBAAA,gBAAAA,mBAAA,GAAlBA,mBAAA,CAAoBG,OAAO,cAAAH,mBAAA,gBAAAA,mBAAA,GAA3BA,mBAAA,CAA6BI,MAAM,cAAAJ,mBAAA,uBAAnCA,mBAAA,CAAqCK,WAAW;EACpE;EAEA,IAAIP,MAAM,KAAK,WAAW,EAAE;IAC1BC,eAAe,GAAGN,oBAAoB,CAACI,UAAU,CAAC;EACpD;EAEA,IAAI,CAACE,eAAe,EAAE;IACpB,MAAM,IAAIL,aAAa,CAAC,+CAA+C,CAAC;EAC1E;EAEA,OAAOK,eAAe;AACxB,CAAC;AAED,MAAMO,eAAe,GAAG,SAAAA,CACtBC,GAAW,EACXC,QAA8B;EAAA,IAC9BC,OAAoC,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OAEzCF,QAAQ,CAACD,GAAG,EAAE;IACZM,OAAO,EAAE;MACPC,MAAM,EAAE,4BAA4B;MACpC,IAAIL,OAAO,CAACM,aAAa,IAAI;QAAE,eAAe,EAAE;MAAW,CAAC;IAC9D;EACF,CAAC,CAAC,CACCC,IAAI,CAACrB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC3BqB,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,IAAI,CAAC,CAAC,CAAC;AAAA;AAExC,OAAO,MAAMC,kBAA6C,GAAG,eAAAA,CAC3DZ,GAAG,EAEA;EAAA,IADH;IAAEC,QAAQ,GAAGY;EAAM,CAAC,GAAAV,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAEzB;EACA,IAAIW,UAAU,GAAG,MAAMf,eAAe,CAACC,GAAG,EAAEC,QAAQ,CAAC;EACrD,MAAMP,OAAO,GAAGT,SAAS,CAAC6B,UAAU,CAAC;EAErC,MAAM;IAAEC;EAAI,CAAC,GAAGrB,OAAO,CAACE,OAAO;;EAE/B;EACA;EACA,IAAImB,GAAG,IAAIA,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;IAC9CL,UAAU,GAAG,MAAMf,eAAe,CAACC,GAAG,EAAEC,QAAQ,EAAE;MAAEO,aAAa,EAAE;IAAK,CAAC,CAAC;EAC5E;EAEA,OAAOM,UAAU;AACnB,CAAC;AAED,OAAO,MAAMM,aAAmC,GAAG,MAAAA,CACjD9B,UAAU,EACVC,MAAM,EACN8B,OAAO,KACJ;EACH,MAAM;IAAErB,GAAG;IAAEsB;EAAI,CAAC,GAAG,MAAMjC,kBAAkB,CAACC,UAAU,EAAEC,MAAM,CAAC;EACjE,MAAMuB,UAAU,GAAG,MAAMF,kBAAkB,CAACZ,GAAG,EAAEqB,OAAO,CAAC;EACzD,OAAO;IAAErB,GAAG;IAAEsB,GAAG;IAAER,UAAU;IAAEvB,MAAM,EAAE;EAAM,CAAC;AAChD,CAAC"}
|
|
@@ -1,28 +1,7 @@
|
|
|
1
|
-
import { verify } from "@pagopa/io-react-native-jwt";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
const CredentialStatusMap = {
|
|
8
|
-
0x00: "VALID",
|
|
9
|
-
0x01: "INVALID",
|
|
10
|
-
0x02: "SUSPENDED",
|
|
11
|
-
0x03: "UPDATE",
|
|
12
|
-
0x0b: "ATTRIBUTE_UPDATE"
|
|
13
|
-
};
|
|
14
|
-
export const verifyAndParseStatusList = async (keys, _ref) => {
|
|
15
|
-
let {
|
|
16
|
-
statusList: rawStatusList,
|
|
17
|
-
idx
|
|
18
|
-
} = _ref;
|
|
19
|
-
await verify(rawStatusList, keys);
|
|
20
|
-
const statusList = getListFromStatusListJWT(rawStatusList);
|
|
21
|
-
const statusBit = statusList.getStatus(idx);
|
|
22
|
-
const status = CredentialStatusMap[statusBit];
|
|
23
|
-
return {
|
|
24
|
-
status,
|
|
25
|
-
statusBit: `0x${statusBit.toString(16).padStart(2, "0").toUpperCase()}`
|
|
26
|
-
};
|
|
1
|
+
import { decode as decodeJwt, verify } from "@pagopa/io-react-native-jwt";
|
|
2
|
+
import { StatusList } from "../api/types";
|
|
3
|
+
export const verifyAndParseStatusList = async (keys, statusList) => {
|
|
4
|
+
await verify(statusList, keys);
|
|
5
|
+
return StatusList.parse(decodeJwt(statusList).payload);
|
|
27
6
|
};
|
|
28
7
|
//# sourceMappingURL=02-verify-and-parse-status-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["decode","decodeJwt","verify","StatusList","verifyAndParseStatusList","keys","statusList","parse","payload"],"sourceRoot":"../../../../../src","sources":["credential/status/v1.3.3/02-verify-and-parse-status-list.ts"],"mappings":"AAAA,SAASA,MAAM,IAAIC,SAAS,EAAEC,MAAM,QAAQ,6BAA6B;AAEzE,SAASC,UAAU,QAAQ,cAAc;AAEzC,OAAO,MAAMC,wBAAyD,GAAG,MAAAA,CACvEC,IAAI,EACJC,UAAU,KACP;EACH,MAAMJ,MAAM,CAACI,UAAU,EAAED,IAAI,CAAC;EAC9B,OAAOF,UAAU,CAACI,KAAK,CAACN,SAAS,CAACK,UAAU,CAAC,CAACE,OAAO,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { StatusList as JwtStatusList } from "@sd-jwt/jwt-status-list";
|
|
2
|
+
import { IoWalletError } from "../../../utils/errors";
|
|
3
|
+
/**
|
|
4
|
+
* Mapping of status bits to their corresponding meaning as defined in the specification.
|
|
5
|
+
* @see https://italia.github.io/eid-wallet-it-docs/releases/1.3.3/en/credential-revocation.html#token-status-lists
|
|
6
|
+
*/
|
|
7
|
+
const CredentialStatusMap = {
|
|
8
|
+
0x00: "VALID",
|
|
9
|
+
0x01: "INVALID",
|
|
10
|
+
0x02: "SUSPENDED",
|
|
11
|
+
0x03: "UPDATE",
|
|
12
|
+
0x0b: "ATTRIBUTE_UPDATE"
|
|
13
|
+
};
|
|
14
|
+
const formatStatusBit = statusBit => `0x${statusBit.toString(16).padStart(2, "0").toUpperCase()}`;
|
|
15
|
+
export const getStatus = (statusList, idx) => {
|
|
16
|
+
const decodedStatusList = JwtStatusList.decompressStatusList(statusList.lst, statusList.bits);
|
|
17
|
+
const statusBit = decodedStatusList.getStatus(idx);
|
|
18
|
+
const status = CredentialStatusMap[statusBit];
|
|
19
|
+
if (!status) {
|
|
20
|
+
throw new IoWalletError(`Unsupported credential status bit: ${formatStatusBit(statusBit)}`);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
status,
|
|
24
|
+
rawStatus: formatStatusBit(statusBit)
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=03-get-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StatusList","JwtStatusList","IoWalletError","CredentialStatusMap","formatStatusBit","statusBit","toString","padStart","toUpperCase","getStatus","statusList","idx","decodedStatusList","decompressStatusList","lst","bits","status","rawStatus"],"sourceRoot":"../../../../../src","sources":["credential/status/v1.3.3/03-get-status.ts"],"mappings":"AAAA,SAASA,UAAU,IAAIC,aAAa,QAAQ,yBAAyB;AACrE,SAASC,aAAa,QAAQ,uBAAuB;AAGrD;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG;EAC1B,IAAI,EAAE,OAAO;EACb,IAAI,EAAE,SAAS;EACf,IAAI,EAAE,WAAW;EACjB,IAAI,EAAE,QAAQ;EACd,IAAI,EAAE;AACR,CAAU;AAIV,MAAMC,eAAe,GAAIC,SAAiB,IACvC,KAAIA,SAAS,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAACC,WAAW,CAAC,CAAE,EAAC;AAE9D,OAAO,MAAMC,SAAqC,GAAGA,CAACC,UAAU,EAAEC,GAAG,KAAK;EACxE,MAAMC,iBAAiB,GAAGX,aAAa,CAACY,oBAAoB,CAC1DH,UAAU,CAACI,GAAG,EACdJ,UAAU,CAACK,IACb,CAAC;EACD,MAAMV,SAAS,GAAGO,iBAAiB,CAACH,SAAS,CAACE,GAAG,CAAwB;EACzE,MAAMK,MAAM,GAAGb,mBAAmB,CAACE,SAAS,CAAC;EAE7C,IAAI,CAACW,MAAM,EAAE;IACX,MAAM,IAAId,aAAa,CACpB,sCAAqCE,eAAe,CAACC,SAAS,CAAE,EACnE,CAAC;EACH;EAEA,OAAO;IACLW,MAAM;IACNC,SAAS,EAAEb,eAAe,CAACC,SAAS;EACtC,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { getStatusList } from "./01-status-list";
|
|
1
|
+
import { getStatusList, getStatusListByUri } from "./01-status-list";
|
|
2
2
|
import { verifyAndParseStatusList } from "./02-verify-and-parse-status-list";
|
|
3
|
+
import { getStatus } from "./03-get-status";
|
|
3
4
|
export const CredentialStatus = {
|
|
4
5
|
statusAssertion: {
|
|
5
6
|
isSupported: false
|
|
@@ -7,7 +8,9 @@ export const CredentialStatus = {
|
|
|
7
8
|
statusList: {
|
|
8
9
|
isSupported: true,
|
|
9
10
|
get: getStatusList,
|
|
10
|
-
|
|
11
|
+
getByUri: getStatusListByUri,
|
|
12
|
+
verifyAndParse: verifyAndParseStatusList,
|
|
13
|
+
getStatus
|
|
11
14
|
}
|
|
12
15
|
};
|
|
13
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getStatusList","verifyAndParseStatusList","CredentialStatus","statusAssertion","isSupported","statusList","get","verifyAndParse"],"sourceRoot":"../../../../../src","sources":["credential/status/v1.3.3/index.ts"],"mappings":"AACA,SAASA,aAAa,QAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"names":["getStatusList","getStatusListByUri","verifyAndParseStatusList","getStatus","CredentialStatus","statusAssertion","isSupported","statusList","get","getByUri","verifyAndParse"],"sourceRoot":"../../../../../src","sources":["credential/status/v1.3.3/index.ts"],"mappings":"AACA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,kBAAkB;AACpE,SAASC,wBAAwB,QAAQ,mCAAmC;AAC5E,SAASC,SAAS,QAAQ,iBAAiB;AAE3C,OAAO,MAAMC,gBAAqC,GAAG;EACnDC,eAAe,EAAE;IACfC,WAAW,EAAE;EACf,CAAC;EACDC,UAAU,EAAE;IACVD,WAAW,EAAE,IAAI;IACjBE,GAAG,EAAER,aAAa;IAClBS,QAAQ,EAAER,kBAAkB;IAC5BS,cAAc,EAAER,wBAAwB;IACxCC;EACF;AACF,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Given a statusBit (e.g. "0x00", "0x0B") and a DigitalCredential from the
|
|
3
3
|
* catalogue, returns the matching l10n IDs or undefined if not found.
|
|
4
4
|
* The comparison is case-insensitive to handle uppercase statusBit values
|
|
5
|
-
* returned by
|
|
5
|
+
* returned by getStatus against lowercase keys in the catalogue.
|
|
6
6
|
*/
|
|
7
7
|
export const getStatusL10nIds = (statusBit, credentialConfig) => {
|
|
8
8
|
const normalizedBit = statusBit.toLowerCase();
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { CryptoContext } from "@pagopa/io-react-native-jwt";
|
|
2
2
|
import type { AuthorizationChallengeResult, AuthorizationResult } from "../../../utils/auth";
|
|
3
3
|
import type { RequestObject } from "../../../credential/presentation/api";
|
|
4
|
+
import type { EvaluateDcqlQueryApi } from "../../../credential/presentation/api/06-evaluate-dcql-query";
|
|
5
|
+
import type { Out } from "../../../utils/misc";
|
|
4
6
|
import type { IssuerConfig } from "./IssuerConfig";
|
|
7
|
+
export type EvaluatedDcqlQuery = Out<EvaluateDcqlQueryApi["evaluateDcqlQuery"]>;
|
|
5
8
|
export interface CompleteUserAuthorizationApi {
|
|
6
9
|
/**
|
|
7
|
-
* WARNING: This function must be called after {@link startUserAuthorization}. The next
|
|
10
|
+
* WARNING: This function must be called after {@link startUserAuthorization}. The next step is evaluating the returned request object's DCQL query with {@link EvaluateDcqlQueryApi.evaluateDcqlQuery}.
|
|
8
11
|
*
|
|
9
12
|
* The interface of the phase to complete User authorization via presentation of existing credentials when the response mode is "form_post.jwt".
|
|
10
13
|
* It is used as a first step to complete the user authorization by obtaining the requested credential to be presented from the authorization server.
|
|
@@ -37,18 +40,18 @@ export interface CompleteUserAuthorizationApi {
|
|
|
37
40
|
*
|
|
38
41
|
* @param requestObject The request object containing the necessary parameters for authorization.
|
|
39
42
|
* @param issuerConfig The issuer configuration returned by {@link evaluateIssuerTrust}
|
|
40
|
-
* @param
|
|
43
|
+
* @param evaluatedDcqlQuery The result of evaluating the request object's DCQL query against the credentials to present.
|
|
41
44
|
* @param redirectUri The client redirect URI to which the authorization server will redirect after completing the authorization process.
|
|
42
45
|
* @returns The authorization response which contains code, state and iss
|
|
43
46
|
*/
|
|
44
|
-
completeEaaUserAuthorizationWithQueryMode(requestObject: RequestObject, issuerConf: IssuerConfig,
|
|
47
|
+
completeEaaUserAuthorizationWithQueryMode(requestObject: RequestObject, issuerConf: IssuerConfig, evaluatedDcqlQuery: EvaluatedDcqlQuery, redirectUri: string, context?: {
|
|
45
48
|
/** Fetch api implementation. Default: built-in fetch. */
|
|
46
49
|
appFetch?: GlobalFetch["fetch"];
|
|
47
50
|
/** Function to fetch the final redirect uri; it allows full control on how redirects are handled. If not provided, `appFetch` is used. */
|
|
48
51
|
fetchFinalRedirectUri?: (url: string) => Promise<string | undefined>;
|
|
49
52
|
}): Promise<AuthorizationResult>;
|
|
50
53
|
/**
|
|
51
|
-
* WARNING: This function must be called after {@link getRequestedCredentialToBePresented}. The next function to be called is {@link authorizeAccess}.
|
|
54
|
+
* WARNING: This function must be called after {@link getRequestedCredentialToBePresented} and after evaluating the request object's DCQL query with {@link EvaluateDcqlQueryApi.evaluateDcqlQuery}. The next function to be called is {@link authorizeAccess}.
|
|
52
55
|
*
|
|
53
56
|
* The interface of the phase to complete User authorization via presentation of existing credentials when the response mode is "form_post.jwt".
|
|
54
57
|
* The information is obtained by performing a POST request to the endpoint received in the response_uri field of the requestObject, where the Authorization Response payload is posted.
|
|
@@ -56,12 +59,12 @@ export interface CompleteUserAuthorizationApi {
|
|
|
56
59
|
* @since 1.0.0
|
|
57
60
|
*
|
|
58
61
|
* @param requestObject The request object containing the necessary parameters for authorization.
|
|
59
|
-
* @param
|
|
62
|
+
* @param evaluatedDcqlQuery The result of evaluating the request object's DCQL query against the credentials to present.
|
|
60
63
|
* @param appFetch (optional) fetch api implementation. Default: built-in fetch
|
|
61
64
|
* @returns the authorization response which contains code, state and iss
|
|
62
65
|
* @throws {ValidationFailed} if an error while validating the response
|
|
63
66
|
*/
|
|
64
|
-
completeUserAuthorizationWithFormPostJwtMode(requestObject: RequestObject, issuerConf: IssuerConfig,
|
|
67
|
+
completeUserAuthorizationWithFormPostJwtMode(requestObject: RequestObject, issuerConf: IssuerConfig, evaluatedDcqlQuery: EvaluatedDcqlQuery, context: {
|
|
65
68
|
wiaCryptoContext: CryptoContext;
|
|
66
69
|
appFetch?: GlobalFetch["fetch"];
|
|
67
70
|
}): Promise<AuthorizationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"03-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/api/03-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;;;;;;;;OAcG;IACH,mCAAmC,CACjC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,YAAY,EACxB,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B;;;;;;;;;OASG;IACH,yCAAyC,CACvC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,yCAAyC,CACvC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,YAAY,EACxB,
|
|
1
|
+
{"version":3,"file":"03-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/api/03-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AACxG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAEhF,MAAM,WAAW,4BAA4B;IAC3C;;;;;;;;;;;;;;OAcG;IACH,mCAAmC,CACjC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,YAAY,EACxB,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC,CAAC;IAE1B;;;;;;;;;OASG;IACH,yCAAyC,CACvC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,yCAAyC,CACvC,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,YAAY,EACxB,kBAAkB,EAAE,kBAAkB,EACtC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QACR,yDAAyD;QACzD,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAChC,0IAA0I;QAC1I,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KACtE,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;;;;;;;OAaG;IACH,4CAA4C,CAC1C,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,YAAY,EACxB,kBAAkB,EAAE,kBAAkB,EACtC,OAAO,EAAE;QACP,gBAAgB,EAAE,aAAa,CAAC;QAChC,QAAQ,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;KACjC,GACA,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;OAOG;IACH,6CAA6C,CAC3C,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAEzC;;;;;;;;;;;;OAYG;IACH,qBAAqB,CACnB,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC"}
|
|
@@ -9,6 +9,7 @@ export interface IssuanceApi extends EvaluateIssuerTrustApi, StartUserAuthorizat
|
|
|
9
9
|
MRTDPoP: MRTDPoPApi;
|
|
10
10
|
}
|
|
11
11
|
export type { IssuerConfig } from "./IssuerConfig";
|
|
12
|
+
export type { EvaluatedDcqlQuery } from "./03-complete-user-authorization";
|
|
12
13
|
export type * as MRTDPoP from "./mrtd-pop";
|
|
13
14
|
export type * from "./types";
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,WACf,SAAQ,sBAAsB,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,KAAK,OAAO,MAAM,YAAY,CAAC;AAC3C,mBAAmB,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,WACf,SAAQ,sBAAsB,EAC5B,yBAAyB,EACzB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,2BAA2B;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,YAAY,KAAK,OAAO,MAAM,YAAY,CAAC;AAC3C,mBAAmB,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"03-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/v1.0.0/03-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"03-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/v1.0.0/03-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAmB7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,eAAO,MAAM,6CAA6C,EAAE,WAAW,CAAC,+CAA+C,CA4BpH,CAAC;AAEJ,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,uBAAuB,CAgBpE,CAAC;AAEJ,eAAO,MAAM,yCAAyC,EAAE,WAAW,CAAC,2CAA2C,CAS5G,CAAC;AAEJ,eAAO,MAAM,yCAAyC,EAAE,WAAW,CAAC,2CAA2C,CAM5G,CAAC;AAEJ,eAAO,MAAM,mCAAmC,EAAE,WAAW,CAAC,qCAAqC,CA0ChG,CAAC;AAEJ,eAAO,MAAM,4CAA4C,EAAE,WAAW,CAAC,8CAA8C,CA2ElH,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,OAAO,KACf,mBAqBF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"03-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/v1.3.3/03-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"03-complete-user-authorization.d.ts","sourceRoot":"","sources":["../../../../../src/credential/issuance/v1.3.3/03-complete-user-authorization.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAoB7B,OAAO,KAAK,EAAsB,WAAW,EAAgB,MAAM,QAAQ,CAAC;AAK5E,eAAO,MAAM,6CAA6C,EAAE,WAAW,CAAC,+CAA+C,CAoBpH,CAAC;AAEJ,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,uBAAuB,CAgBpE,CAAC;AAEJ,eAAO,MAAM,yCAAyC,EAAE,WAAW,CAAC,2CAA2C,CAS5G,CAAC;AAEJ,eAAO,MAAM,mCAAmC,EAAE,WAAW,CAAC,qCAAqC,CAkChG,CAAC;AAGJ,eAAO,MAAM,4CAA4C,EAAE,WAAW,CAAC,8CAA8C,CA0ClH,CAAC;AAEJ,eAAO,MAAM,yCAAyC,EAAE,WAAW,CAAC,2CAA2C,CA6D5G,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,OAAO,KACf,mBAqBF,CAAC"}
|