@sphereon/oid4vci-common 0.10.4-unstable.39 → 0.10.4-unstable.41

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.
Files changed (32) hide show
  1. package/dist/functions/IssuerMetadataUtils.d.ts.map +1 -1
  2. package/dist/functions/IssuerMetadataUtils.js +3 -4
  3. package/dist/functions/IssuerMetadataUtils.js.map +1 -1
  4. package/lib/__tests__/CredentialOfferUtil.spec.ts +104 -104
  5. package/lib/__tests__/Encoding.spec.ts +15 -15
  6. package/lib/__tests__/IssuerMetadataUtils.spec.ts +38 -0
  7. package/lib/__tests__/randomBytes.spec.ts +15 -15
  8. package/lib/functions/AuthorizationResponseUtil.ts +18 -18
  9. package/lib/functions/CredentialOfferUtil.ts +485 -485
  10. package/lib/functions/CredentialRequestUtil.ts +53 -53
  11. package/lib/functions/CredentialResponseUtil.ts +90 -90
  12. package/lib/functions/Encoding.ts +165 -165
  13. package/lib/functions/FormatUtils.ts +52 -52
  14. package/lib/functions/HttpUtils.ts +186 -186
  15. package/lib/functions/IssuerMetadataUtils.ts +153 -152
  16. package/lib/functions/RandomUtils.ts +43 -43
  17. package/lib/functions/index.ts +12 -12
  18. package/lib/functions/randomBytes.js +61 -61
  19. package/lib/types/Authorization.types.ts +328 -328
  20. package/lib/types/CredentialIssuance.types.ts +208 -208
  21. package/lib/types/Generic.types.ts +369 -369
  22. package/lib/types/OpenID4VCIErrors.ts +40 -40
  23. package/lib/types/OpenID4VCIVersions.types.ts +13 -13
  24. package/lib/types/ServerMetadata.ts +70 -70
  25. package/lib/types/StateManager.types.ts +68 -68
  26. package/lib/types/index.ts +13 -13
  27. package/lib/types/v1_0_08.types.ts +49 -49
  28. package/lib/types/v1_0_09.types.ts +36 -36
  29. package/lib/types/v1_0_11.types.ts +109 -109
  30. package/lib/types/v1_0_12.types.ts +42 -42
  31. package/lib/types/v1_0_13.types.ts +141 -141
  32. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"IssuerMetadataUtils.d.ts","sourceRoot":"","sources":["../../lib/functions/IssuerMetadataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,uCAAuC,EACvC,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,cAAc,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAAC;IAC3D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,uBAAuB,GAAG,MAAM,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC;CAClF,GAAG,MAAM,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAgB1D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IAC5C,cAAc,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAAC;IAC3D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,uBAAuB,GAAG,MAAM,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC;CAClF,GAAG,MAAM,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAuB1D;AAGD,wBAAgB,+BAA+B,CAC7C,mBAAmB,EAAE,gCAAgC,EACrD,IAAI,CAAC,EAAE;IAAE,0BAA0B,EAAE,OAAO,CAAA;CAAE,YA2B/C;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAQzI;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAiBjJ;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,eAAe,EAAE,CAM1I;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,wBAAwB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,wBAAwB,GAAG,cAAc,CAAC,GAC5G,MAAM,CAUR"}
1
+ {"version":3,"file":"IssuerMetadataUtils.d.ts","sourceRoot":"","sources":["../../lib/functions/IssuerMetadataUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,uCAAuC,EACvC,wBAAwB,EACxB,8BAA8B,EAC9B,0BAA0B,EAC1B,cAAc,EACd,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAElB,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,cAAc,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAAC;IAC3D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,uBAAuB,GAAG,MAAM,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC;CAClF,GAAG,MAAM,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAgB1D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,CAAC,EAAE;IAC5C,cAAc,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAAC;IAC3D,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,uBAAuB,GAAG,MAAM,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,EAAE,CAAC;CAClF,GAAG,MAAM,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAyB1D;AAED,wBAAgB,+BAA+B,CAC7C,mBAAmB,EAAE,gCAAgC,EACrD,IAAI,CAAC,EAAE;IAAE,0BAA0B,EAAE,OAAO,CAAA;CAAE,YA2B/C;AAED,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,8BAA8B,GAAG,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAQzI;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,GAAG,MAAM,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAiBjJ;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,cAAc,EAAE,IAAI,CAAC,EAAE;IAAE,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,eAAe,EAAE,CAM1I;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,wBAAwB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,wBAAwB,GAAG,cAAc,CAAC,GAC5G,MAAM,CAUR"}
@@ -20,12 +20,11 @@ function getSupportedCredential(opts) {
20
20
  if (!issuerMetadata || !issuerMetadata.credential_configurations_supported) {
21
21
  return {};
22
22
  }
23
- const configurationIds = Object.keys(issuerMetadata.credential_configurations_supported);
23
+ const credentialConfigurations = issuerMetadata.credential_configurations_supported;
24
24
  const normalizedTypes = Array.isArray(types) ? types : types ? [types] : [];
25
25
  const normalizedFormats = Array.isArray(format) ? format : format ? [format] : [];
26
- return configurationIds.reduce((filteredConfigs, id) => {
27
- const config = issuerMetadata.credential_configurations_supported[id];
28
- const isTypeMatch = normalizedTypes.length === 0 || normalizedTypes.includes(id);
26
+ return Object.entries(credentialConfigurations).reduce((filteredConfigs, [id, config]) => {
27
+ const isTypeMatch = normalizedTypes.length === 0 || normalizedTypes.some((type) => config.credential_definition.type.includes(type));
29
28
  const isFormatMatch = normalizedFormats.length === 0 || normalizedFormats.includes(config.format);
30
29
  if (isTypeMatch && isFormatMatch) {
31
30
  filteredConfigs[id] = config;
@@ -1 +1 @@
1
- {"version":3,"file":"IssuerMetadataUtils.js","sourceRoot":"","sources":["../../lib/functions/IssuerMetadataUtils.ts"],"names":[],"mappings":";;;AAaA,SAAgB,uBAAuB,CAAC,OAKvC;IACC,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC,KAAK;aACjB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACf,OAAO,sBAAsB,iCAAM,OAAO,KAAE,KAAK,EAAE,OAAO,IAAG,CAAC;QAChE,CAAC,CAAC;aACD,MAAM,CACL,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAA6D,CAC9D,CAAC;IACN,CAAC;IAED,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC,iCAAM,OAAO,KAAE,KAAK,EAAE,SAAS,IAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AACxF,CAAC;AArBD,0DAqBC;AAED,SAAgB,sBAAsB,CAAC,IAKtC;IACC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC;IAErD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,mCAAmC,EAAE,CAAC;QAC3E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,gBAAgB,GAAa,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;IACnG,MAAM,eAAe,GAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,MAAM,iBAAiB,GAAa,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE5F,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE;QACrD,MAAM,MAAM,GAAI,cAAc,CAAC,mCAA+F,CAAC,EAAE,CAAC,CAAC;QAEnI,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjF,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAElG,IAAI,WAAW,IAAI,aAAa,EAAE,CAAC;YACjC,eAAe,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QAC/B,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC,EAAE,EAA6D,CAAC,CAAC;AACpE,CAAC;AA5BD,wDA4BC;AAGD,SAAgB,+BAA+B,CAC7C,mBAAqD,EACrD,IAA8C;IAE9C,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IACE,mBAAmB,CAAC,MAAM,KAAK,aAAa;QAC5C,mBAAmB,CAAC,MAAM,KAAK,QAAQ;QACvC,mBAAmB,CAAC,MAAM,KAAK,gBAAgB;QAC/C,mBAAmB,CAAC,MAAM,KAAK,QAAQ,EACvC,CAAC;QACD,KAAK,GAAG,mBAAmB,CAAC,KAAK;YAC/B,CAAC,CAAE,mBAAmB,CAAC,KAAkB;YACzC,CAAC,CAAC,uBAAuB,IAAI,mBAAmB;gBAC9C,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI;gBAChD,CAAC,CAAC,EAAE,CAAC;IACX,CAAC;SAAM,IAAI,mBAAmB,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACtD,6DAA6D;QAC7D,aAAa;QACb,KAAK,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,0BAA0B,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AA7BD,0EA6BC;AAED,SAAgB,2BAA2B,CAAC,WAA2C;IACrF,MAAM,0BAA0B,GAAqD,EAAE,CAAC;IACxF,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IACH,OAAO,0BAA0B,CAAC;AACpC,CAAC;AARD,kEAQC;AAED,SAAgB,0BAA0B,CAAC,GAAW,EAAE,WAAuC;IAC7F,MAAM,0BAA0B,GAAqD,EAAE,CAAC;IACxF,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,yBAAyB,iCAC7B,MAAM,EAAE,MAAiC,EACzC,OAAO,EAAE,WAAW,CAAC,OAAO,IACzB,sBAAsB,KACzB,iBAAiB,EAAE,WAAW,CAAC,MAAM,GACtC,CAAC;QACF,0BAA0B,CAAC,GAAG,CAAC,GAAG,yBAA6D,CAAC;IAClG,CAAC,CAAC,CAAC;IACH,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAjBD,gEAiBC;AAED,SAAgB,iBAAiB,CAAC,QAAmD,EAAE,IAAgC;;IACrH,MAAM,eAAe,GACnB,MAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,MAAM,CACtB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACzI,mCAAI,EAAE,CAAC;IACV,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,mCAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA,EAAA,CAAC,CAAC;AACxH,CAAC;AAND,8CAMC;AAED;;GAEG;AACH,SAAgB,aAAa,CAC3B,GAAW,EACX,wBAA6G;IAE7G,IAAI,wBAAwB,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAA2B,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAbD,sCAaC"}
1
+ {"version":3,"file":"IssuerMetadataUtils.js","sourceRoot":"","sources":["../../lib/functions/IssuerMetadataUtils.ts"],"names":[],"mappings":"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"}
@@ -1,104 +1,104 @@
1
- import { determineSpecVersionFromURI, getClientIdFromCredentialOfferPayload } from '../functions';
2
- import { CredentialOfferPayload, CredentialOfferPayloadV1_0_11, OpenId4VCIVersion } from '../types';
3
-
4
- export const UNIT_TEST_TIMEOUT = 30000;
5
-
6
- describe('CredentialOfferUtil should', () => {
7
- const INITIATE_QR_V8 =
8
- 'openid-initiate-issuance://?' +
9
- 'issuer=https%3A%2F%2Fissuer.research.identiproof.io&' +
10
- 'credential_type=OpenBadgeCredentialUrl&' +
11
- 'pre-authorized_code=4jLs9xZHEfqcoow0kHE7d1a8hUk6Sy-5bVSV2MqBUGUgiFFQi-ImL62T-FmLIo8hKA1UdMPH0lM1xAgcFkJfxIw9L-lI3mVs0hRT8YVwsEM1ma6N3wzuCdwtMU4bcwKp&' +
12
- 'user_pin_required=true';
13
-
14
- const INITIATE_QR_DATA_MIXED_V9 =
15
- 'openid-initiate-issuance://?' +
16
- 'credential_offer=%7B%22credential_issuer%22:%22https://credential-issuer.example.com%22,%22credentials%22:%5B%7B%22format%22:%22jwt_vc_json%22,%22types%22:%5B%22VerifiableCredential%22,%22UniversityDegreeCredential%22%5D%7D%5D,%22issuer_state%22:%22eyJhbGciOiJSU0Et...FYUaBy%22%7D';
17
-
18
- const CREDENTIAL_OFFER_QR_V11 =
19
- 'openid-credential-offer://?' +
20
- 'credential_offer=%7B%22credential_issuer%22:%22https://credential-issuer.example.com%22,%22credentials%22:%5B%7B%22format%22:%22jwt_vc_json%22,%22types%22:%5B%22VerifiableCredential%22,%22UniversityDegreeCredential%22%5D%7D%5D,%22issuer_state%22:%22eyJhbGciOiJSU0Et...FYUaBy%22%7D';
21
-
22
- it(
23
- 'get version 8 with sample URL',
24
- async () => {
25
- expect(determineSpecVersionFromURI(INITIATE_QR_V8)).toEqual(OpenId4VCIVersion.VER_1_0_08);
26
- },
27
- UNIT_TEST_TIMEOUT,
28
- );
29
-
30
- it(
31
- 'get version 11 with sample URL',
32
- async () => {
33
- expect(determineSpecVersionFromURI(CREDENTIAL_OFFER_QR_V11)).toEqual(OpenId4VCIVersion.VER_1_0_11);
34
- },
35
- UNIT_TEST_TIMEOUT,
36
- );
37
-
38
- it(
39
- 'get exception for mixed attributes in URL',
40
- async () => {
41
- expect(() => determineSpecVersionFromURI(INITIATE_QR_DATA_MIXED_V9)).toThrow(
42
- Error("Invalid param. Some keys have been used from version: 1008 version while 'credentials' is used from version: 1011"),
43
- );
44
- },
45
- UNIT_TEST_TIMEOUT,
46
- );
47
-
48
- it(
49
- 'get version 11 as default value',
50
- async () => {
51
- expect(determineSpecVersionFromURI('test://uri')).toEqual(OpenId4VCIVersion.VER_1_0_13);
52
- },
53
- UNIT_TEST_TIMEOUT,
54
- );
55
-
56
- it('get client_id from JWT pre-auth code offer', () => {
57
- const offer: CredentialOfferPayload = {
58
- credential_issuer: 'https://conformance-test.ebsi.eu/conformance/v3/issuer-mock',
59
- credentials: [
60
- {
61
- format: 'jwt_vc',
62
- types: ['VerifiableCredential', 'VerifiableAttestation', 'CTWalletCrossPreAuthorisedInTime'],
63
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
64
- // @ts-ignore
65
- trust_framework: { name: 'ebsi', type: 'Accreditation', uri: 'TIR link towards accreditation' },
66
- },
67
- ],
68
- grants: {
69
- 'urn:ietf:params:oauth:grant-type:pre-authorized_code': {
70
- 'pre-authorized_code':
71
- 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJFTmRqRGZhdGxLai11UW92WUpsT184U2pPY1ZIdmk2SHJYS0xLRUI3UG8ifQ.eyJjbGllbnRfaWQiOiJkaWQ6a2V5OnoyZG16RDgxY2dQeDhWa2k3SmJ1dU1tRllyV1BnWW95dHlrVVozZXlxaHQxajlLYnFTWlpGakc0dFZnS2hFd0twcm9qcUxCM0MyWXBqNEg3M1N0Z2pNa1NYZzJtUXh1V0xmenVSMTJRc052Z1FXenJ6S1NmN1lSQk5yUlhLNzF2ZnExMkJieXhUTEZFWkJXZm5IcWV6QlZHUWlOTGZxZXV5d1pIZ3N0TUNjUzQ0VFhmYjIiLCJhdXRob3JpemF0aW9uX2RldGFpbHMiOlt7InR5cGUiOiJvcGVuaWRfY3JlZGVudGlhbCIsImZvcm1hdCI6Imp3dF92YyIsImxvY2F0aW9ucyI6WyJodHRwczovL2NvbmZvcm1hbmNlLXRlc3QuZWJzaS5ldS9jb25mb3JtYW5jZS92My9pc3N1ZXItbW9jayJdLCJ0eXBlcyI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlZlcmlmaWFibGVBdHRlc3RhdGlvbiIsIkNUV2FsbGV0Q3Jvc3NQcmVBdXRob3Jpc2VkSW5UaW1lIl19XSwiaWF0IjoxNzA2MTI2NDI5LCJleHAiOjE3MDYxMjY3MjksImlzcyI6Imh0dHBzOi8vY29uZm9ybWFuY2UtdGVzdC5lYnNpLmV1L2NvbmZvcm1hbmNlL3YzL2lzc3Vlci1tb2NrIiwiYXVkIjoiaHR0cHM6Ly9jb25mb3JtYW5jZS10ZXN0LmVic2kuZXUvY29uZm9ybWFuY2UvdjMvYXV0aC1tb2NrIiwic3ViIjoiZGlkOmtleTp6MmRtekQ4MWNnUHg4VmtpN0pidXVNbUZZcldQZ1lveXR5a1VaM2V5cWh0MWo5S2JxU1paRmpHNHRWZ0toRXdLcHJvanFMQjNDMllwajRINzNTdGdqTWtTWGcybVF4dVdMZnp1UjEyUXNOdmdRV3pyektTZjdZUkJOclJYSzcxdmZxMTJCYnl4VExGRVpCV2ZuSHFlekJWR1FpTkxmcWV1eXdaSGdzdE1DY1M0NFRYZmIyIn0.Zq2o33CU4wlRNtWOIITI5qbJcuNc2c9hLwIio7OlsHBa5ZAyQR8UUU_r5EufSChe4ji15Ihrr20m5-oUiZW80A',
72
- user_pin_required: true,
73
- },
74
- },
75
- } as CredentialOfferPayloadV1_0_11;
76
- expect(getClientIdFromCredentialOfferPayload(offer)).toEqual(
77
- 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbqSZZFjG4tVgKhEwKprojqLB3C2Ypj4H73StgjMkSXg2mQxuWLfzuR12QsNvgQWzrzKSf7YRBNrRXK71vfq12BbyxTLFEZBWfnHqezBVGQiNLfqeuywZHgstMCcS44TXfb2',
78
- );
79
- });
80
-
81
- it('get client_id from JWT authorization code offer', () => {
82
- const offer: CredentialOfferPayload = {
83
- credential_issuer: 'https://conformance-test.ebsi.eu/conformance/v3/issuer-mock',
84
- credentials: [
85
- {
86
- format: 'jwt_vc',
87
- types: ['VerifiableCredential', 'VerifiableAttestation', 'CTWalletCrossAuthorisedInTime'],
88
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
89
- // @ts-ignore
90
- trust_framework: { name: 'ebsi', type: 'Accreditation', uri: 'TIR link towards accreditation' },
91
- },
92
- ],
93
- grants: {
94
- authorization_code: {
95
- issuer_state:
96
- 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJFTmRqRGZhdGxLai11UW92WUpsT184U2pPY1ZIdmk2SHJYS0xLRUI3UG8ifQ.eyJjbGllbnRfaWQiOiJkaWQ6a2V5OnoyZG16RDgxY2dQeDhWa2k3SmJ1dU1tRllyV1BnWW95dHlrVVozZXlxaHQxajlLYnFTWlpGakc0dFZnS2hFd0twcm9qcUxCM0MyWXBqNEg3M1N0Z2pNa1NYZzJtUXh1V0xmenVSMTJRc052Z1FXenJ6S1NmN1lSQk5yUlhLNzF2ZnExMkJieXhUTEZFWkJXZm5IcWV6QlZHUWlOTGZxZXV5d1pIZ3N0TUNjUzQ0VFhmYjIiLCJjcmVkZW50aWFsX3R5cGVzIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiVmVyaWZpYWJsZUF0dGVzdGF0aW9uIiwiQ1RXYWxsZXRDcm9zc0F1dGhvcmlzZWRJblRpbWUiXSwiaWF0IjoxNzA2MTI1ODUwLCJleHAiOjE3MDYxMjYxNTAsImlzcyI6Imh0dHBzOi8vY29uZm9ybWFuY2UtdGVzdC5lYnNpLmV1L2NvbmZvcm1hbmNlL3YzL2lzc3Vlci1tb2NrIiwiYXVkIjoiaHR0cHM6Ly9jb25mb3JtYW5jZS10ZXN0LmVic2kuZXUvY29uZm9ybWFuY2UvdjMvYXV0aC1tb2NrIiwic3ViIjoiZGlkOmtleTp6MmRtekQ4MWNnUHg4VmtpN0pidXVNbUZZcldQZ1lveXR5a1VaM2V5cWh0MWo5S2JxU1paRmpHNHRWZ0toRXdLcHJvanFMQjNDMllwajRINzNTdGdqTWtTWGcybVF4dVdMZnp1UjEyUXNOdmdRV3pyektTZjdZUkJOclJYSzcxdmZxMTJCYnl4VExGRVpCV2ZuSHFlekJWR1FpTkxmcWV1eXdaSGdzdE1DY1M0NFRYZmIyIn0.jxzbE6OdqnJfLzSfwYcgRZQURI5UcAtuYU9gPOZYyUwjWMDtVo1k4PCYH4mnjok7pfj47ik8FnaHWE7d99u-_w',
97
- },
98
- },
99
- } as CredentialOfferPayloadV1_0_11;
100
- expect(getClientIdFromCredentialOfferPayload(offer)).toEqual(
101
- 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbqSZZFjG4tVgKhEwKprojqLB3C2Ypj4H73StgjMkSXg2mQxuWLfzuR12QsNvgQWzrzKSf7YRBNrRXK71vfq12BbyxTLFEZBWfnHqezBVGQiNLfqeuywZHgstMCcS44TXfb2',
102
- );
103
- });
104
- });
1
+ import { determineSpecVersionFromURI, getClientIdFromCredentialOfferPayload } from '../functions';
2
+ import { CredentialOfferPayload, CredentialOfferPayloadV1_0_11, OpenId4VCIVersion } from '../types';
3
+
4
+ export const UNIT_TEST_TIMEOUT = 30000;
5
+
6
+ describe('CredentialOfferUtil should', () => {
7
+ const INITIATE_QR_V8 =
8
+ 'openid-initiate-issuance://?' +
9
+ 'issuer=https%3A%2F%2Fissuer.research.identiproof.io&' +
10
+ 'credential_type=OpenBadgeCredentialUrl&' +
11
+ 'pre-authorized_code=4jLs9xZHEfqcoow0kHE7d1a8hUk6Sy-5bVSV2MqBUGUgiFFQi-ImL62T-FmLIo8hKA1UdMPH0lM1xAgcFkJfxIw9L-lI3mVs0hRT8YVwsEM1ma6N3wzuCdwtMU4bcwKp&' +
12
+ 'user_pin_required=true';
13
+
14
+ const INITIATE_QR_DATA_MIXED_V9 =
15
+ 'openid-initiate-issuance://?' +
16
+ 'credential_offer=%7B%22credential_issuer%22:%22https://credential-issuer.example.com%22,%22credentials%22:%5B%7B%22format%22:%22jwt_vc_json%22,%22types%22:%5B%22VerifiableCredential%22,%22UniversityDegreeCredential%22%5D%7D%5D,%22issuer_state%22:%22eyJhbGciOiJSU0Et...FYUaBy%22%7D';
17
+
18
+ const CREDENTIAL_OFFER_QR_V11 =
19
+ 'openid-credential-offer://?' +
20
+ 'credential_offer=%7B%22credential_issuer%22:%22https://credential-issuer.example.com%22,%22credentials%22:%5B%7B%22format%22:%22jwt_vc_json%22,%22types%22:%5B%22VerifiableCredential%22,%22UniversityDegreeCredential%22%5D%7D%5D,%22issuer_state%22:%22eyJhbGciOiJSU0Et...FYUaBy%22%7D';
21
+
22
+ it(
23
+ 'get version 8 with sample URL',
24
+ async () => {
25
+ expect(determineSpecVersionFromURI(INITIATE_QR_V8)).toEqual(OpenId4VCIVersion.VER_1_0_08);
26
+ },
27
+ UNIT_TEST_TIMEOUT,
28
+ );
29
+
30
+ it(
31
+ 'get version 11 with sample URL',
32
+ async () => {
33
+ expect(determineSpecVersionFromURI(CREDENTIAL_OFFER_QR_V11)).toEqual(OpenId4VCIVersion.VER_1_0_11);
34
+ },
35
+ UNIT_TEST_TIMEOUT,
36
+ );
37
+
38
+ it(
39
+ 'get exception for mixed attributes in URL',
40
+ async () => {
41
+ expect(() => determineSpecVersionFromURI(INITIATE_QR_DATA_MIXED_V9)).toThrow(
42
+ Error("Invalid param. Some keys have been used from version: 1008 version while 'credentials' is used from version: 1011"),
43
+ );
44
+ },
45
+ UNIT_TEST_TIMEOUT,
46
+ );
47
+
48
+ it(
49
+ 'get version 11 as default value',
50
+ async () => {
51
+ expect(determineSpecVersionFromURI('test://uri')).toEqual(OpenId4VCIVersion.VER_1_0_13);
52
+ },
53
+ UNIT_TEST_TIMEOUT,
54
+ );
55
+
56
+ it('get client_id from JWT pre-auth code offer', () => {
57
+ const offer: CredentialOfferPayload = {
58
+ credential_issuer: 'https://conformance-test.ebsi.eu/conformance/v3/issuer-mock',
59
+ credentials: [
60
+ {
61
+ format: 'jwt_vc',
62
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'CTWalletCrossPreAuthorisedInTime'],
63
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
64
+ // @ts-ignore
65
+ trust_framework: { name: 'ebsi', type: 'Accreditation', uri: 'TIR link towards accreditation' },
66
+ },
67
+ ],
68
+ grants: {
69
+ 'urn:ietf:params:oauth:grant-type:pre-authorized_code': {
70
+ 'pre-authorized_code':
71
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJFTmRqRGZhdGxLai11UW92WUpsT184U2pPY1ZIdmk2SHJYS0xLRUI3UG8ifQ.eyJjbGllbnRfaWQiOiJkaWQ6a2V5OnoyZG16RDgxY2dQeDhWa2k3SmJ1dU1tRllyV1BnWW95dHlrVVozZXlxaHQxajlLYnFTWlpGakc0dFZnS2hFd0twcm9qcUxCM0MyWXBqNEg3M1N0Z2pNa1NYZzJtUXh1V0xmenVSMTJRc052Z1FXenJ6S1NmN1lSQk5yUlhLNzF2ZnExMkJieXhUTEZFWkJXZm5IcWV6QlZHUWlOTGZxZXV5d1pIZ3N0TUNjUzQ0VFhmYjIiLCJhdXRob3JpemF0aW9uX2RldGFpbHMiOlt7InR5cGUiOiJvcGVuaWRfY3JlZGVudGlhbCIsImZvcm1hdCI6Imp3dF92YyIsImxvY2F0aW9ucyI6WyJodHRwczovL2NvbmZvcm1hbmNlLXRlc3QuZWJzaS5ldS9jb25mb3JtYW5jZS92My9pc3N1ZXItbW9jayJdLCJ0eXBlcyI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCIsIlZlcmlmaWFibGVBdHRlc3RhdGlvbiIsIkNUV2FsbGV0Q3Jvc3NQcmVBdXRob3Jpc2VkSW5UaW1lIl19XSwiaWF0IjoxNzA2MTI2NDI5LCJleHAiOjE3MDYxMjY3MjksImlzcyI6Imh0dHBzOi8vY29uZm9ybWFuY2UtdGVzdC5lYnNpLmV1L2NvbmZvcm1hbmNlL3YzL2lzc3Vlci1tb2NrIiwiYXVkIjoiaHR0cHM6Ly9jb25mb3JtYW5jZS10ZXN0LmVic2kuZXUvY29uZm9ybWFuY2UvdjMvYXV0aC1tb2NrIiwic3ViIjoiZGlkOmtleTp6MmRtekQ4MWNnUHg4VmtpN0pidXVNbUZZcldQZ1lveXR5a1VaM2V5cWh0MWo5S2JxU1paRmpHNHRWZ0toRXdLcHJvanFMQjNDMllwajRINzNTdGdqTWtTWGcybVF4dVdMZnp1UjEyUXNOdmdRV3pyektTZjdZUkJOclJYSzcxdmZxMTJCYnl4VExGRVpCV2ZuSHFlekJWR1FpTkxmcWV1eXdaSGdzdE1DY1M0NFRYZmIyIn0.Zq2o33CU4wlRNtWOIITI5qbJcuNc2c9hLwIio7OlsHBa5ZAyQR8UUU_r5EufSChe4ji15Ihrr20m5-oUiZW80A',
72
+ user_pin_required: true,
73
+ },
74
+ },
75
+ } as CredentialOfferPayloadV1_0_11;
76
+ expect(getClientIdFromCredentialOfferPayload(offer)).toEqual(
77
+ 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbqSZZFjG4tVgKhEwKprojqLB3C2Ypj4H73StgjMkSXg2mQxuWLfzuR12QsNvgQWzrzKSf7YRBNrRXK71vfq12BbyxTLFEZBWfnHqezBVGQiNLfqeuywZHgstMCcS44TXfb2',
78
+ );
79
+ });
80
+
81
+ it('get client_id from JWT authorization code offer', () => {
82
+ const offer: CredentialOfferPayload = {
83
+ credential_issuer: 'https://conformance-test.ebsi.eu/conformance/v3/issuer-mock',
84
+ credentials: [
85
+ {
86
+ format: 'jwt_vc',
87
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'CTWalletCrossAuthorisedInTime'],
88
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
89
+ // @ts-ignore
90
+ trust_framework: { name: 'ebsi', type: 'Accreditation', uri: 'TIR link towards accreditation' },
91
+ },
92
+ ],
93
+ grants: {
94
+ authorization_code: {
95
+ issuer_state:
96
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkJFTmRqRGZhdGxLai11UW92WUpsT184U2pPY1ZIdmk2SHJYS0xLRUI3UG8ifQ.eyJjbGllbnRfaWQiOiJkaWQ6a2V5OnoyZG16RDgxY2dQeDhWa2k3SmJ1dU1tRllyV1BnWW95dHlrVVozZXlxaHQxajlLYnFTWlpGakc0dFZnS2hFd0twcm9qcUxCM0MyWXBqNEg3M1N0Z2pNa1NYZzJtUXh1V0xmenVSMTJRc052Z1FXenJ6S1NmN1lSQk5yUlhLNzF2ZnExMkJieXhUTEZFWkJXZm5IcWV6QlZHUWlOTGZxZXV5d1pIZ3N0TUNjUzQ0VFhmYjIiLCJjcmVkZW50aWFsX3R5cGVzIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiVmVyaWZpYWJsZUF0dGVzdGF0aW9uIiwiQ1RXYWxsZXRDcm9zc0F1dGhvcmlzZWRJblRpbWUiXSwiaWF0IjoxNzA2MTI1ODUwLCJleHAiOjE3MDYxMjYxNTAsImlzcyI6Imh0dHBzOi8vY29uZm9ybWFuY2UtdGVzdC5lYnNpLmV1L2NvbmZvcm1hbmNlL3YzL2lzc3Vlci1tb2NrIiwiYXVkIjoiaHR0cHM6Ly9jb25mb3JtYW5jZS10ZXN0LmVic2kuZXUvY29uZm9ybWFuY2UvdjMvYXV0aC1tb2NrIiwic3ViIjoiZGlkOmtleTp6MmRtekQ4MWNnUHg4VmtpN0pidXVNbUZZcldQZ1lveXR5a1VaM2V5cWh0MWo5S2JxU1paRmpHNHRWZ0toRXdLcHJvanFMQjNDMllwajRINzNTdGdqTWtTWGcybVF4dVdMZnp1UjEyUXNOdmdRV3pyektTZjdZUkJOclJYSzcxdmZxMTJCYnl4VExGRVpCV2ZuSHFlekJWR1FpTkxmcWV1eXdaSGdzdE1DY1M0NFRYZmIyIn0.jxzbE6OdqnJfLzSfwYcgRZQURI5UcAtuYU9gPOZYyUwjWMDtVo1k4PCYH4mnjok7pfj47ik8FnaHWE7d99u-_w',
97
+ },
98
+ },
99
+ } as CredentialOfferPayloadV1_0_11;
100
+ expect(getClientIdFromCredentialOfferPayload(offer)).toEqual(
101
+ 'did:key:z2dmzD81cgPx8Vki7JbuuMmFYrWPgYoytykUZ3eyqht1j9KbqSZZFjG4tVgKhEwKprojqLB3C2Ypj4H73StgjMkSXg2mQxuWLfzuR12QsNvgQWzrzKSf7YRBNrRXK71vfq12BbyxTLFEZBWfnHqezBVGQiNLfqeuywZHgstMCcS44TXfb2',
102
+ );
103
+ });
104
+ });
@@ -1,15 +1,15 @@
1
- import { convertURIToJsonObject } from '../functions';
2
-
3
- import { UNIT_TEST_TIMEOUT } from './CredentialOfferUtil.spec';
4
-
5
- describe('URI to json enconding', () => {
6
- const CREDENTIAL_OFFER_CODE = 'openid-credential-offer://code=1234-1234-1234';
7
-
8
- it(
9
- 'should get code from auth-code redirect URI',
10
- async () => {
11
- expect(convertURIToJsonObject(CREDENTIAL_OFFER_CODE)).toEqual({ code: '1234-1234-1234' });
12
- },
13
- UNIT_TEST_TIMEOUT,
14
- );
15
- });
1
+ import { convertURIToJsonObject } from '../functions';
2
+
3
+ import { UNIT_TEST_TIMEOUT } from './CredentialOfferUtil.spec';
4
+
5
+ describe('URI to json enconding', () => {
6
+ const CREDENTIAL_OFFER_CODE = 'openid-credential-offer://code=1234-1234-1234';
7
+
8
+ it(
9
+ 'should get code from auth-code redirect URI',
10
+ async () => {
11
+ expect(convertURIToJsonObject(CREDENTIAL_OFFER_CODE)).toEqual({ code: '1234-1234-1234' });
12
+ },
13
+ UNIT_TEST_TIMEOUT,
14
+ );
15
+ });
@@ -0,0 +1,38 @@
1
+ import { getTypesFromCredentialSupported } from '../functions';
2
+ import { CredentialConfigurationSupportedV1_0_13 } from '../types';
3
+
4
+ describe('IssuerMetadataUtils should', () => {
5
+ it('return the types from a credential supported with jwt_vc_json format', () => {
6
+ const credentialSupported: CredentialConfigurationSupportedV1_0_13 = {
7
+ format: 'jwt_vc_json',
8
+ credential_definition: {
9
+ type: ['VerifiableCredential', 'BevoegdheidUittreksel'],
10
+ },
11
+ };
12
+
13
+ const result: string[] = getTypesFromCredentialSupported(credentialSupported);
14
+ expect(result).toEqual(['VerifiableCredential', 'BevoegdheidUittreksel']);
15
+ });
16
+
17
+ it('filter out "VerifiableCredential" type if filterVerifiableCredential option is true', () => {
18
+ const credentialSupported: CredentialConfigurationSupportedV1_0_13 = {
19
+ format: 'jwt_vc_json',
20
+ credential_definition: {
21
+ type: ['VerifiableCredential', 'BevoegdheidUittreksel'],
22
+ },
23
+ };
24
+
25
+ const result: string[] = getTypesFromCredentialSupported(credentialSupported, { filterVerifiableCredential: true });
26
+ expect(result).toEqual(['BevoegdheidUittreksel']);
27
+ });
28
+
29
+ it('throw an error if types cannot be deduced', () => {
30
+ const credentialSupported: CredentialConfigurationSupportedV1_0_13 = {
31
+ format: 'unknown_format',
32
+ } as unknown as CredentialConfigurationSupportedV1_0_13;
33
+
34
+ expect(() => {
35
+ getTypesFromCredentialSupported(credentialSupported);
36
+ }).toThrow('Could not deduce types from credential supported');
37
+ });
38
+ });
@@ -1,15 +1,15 @@
1
- import { randomBytes } from '../functions';
2
-
3
- import { UNIT_TEST_TIMEOUT } from './CredentialOfferUtil.spec';
4
-
5
- describe('randomBytes should', () => {
6
- it(
7
- 'generate random bytes of length 32',
8
- () => {
9
- const bytes = randomBytes(32);
10
- expect(bytes).toBeDefined();
11
- expect(bytes.length).toEqual(32);
12
- },
13
- UNIT_TEST_TIMEOUT,
14
- );
15
- });
1
+ import { randomBytes } from '../functions';
2
+
3
+ import { UNIT_TEST_TIMEOUT } from './CredentialOfferUtil.spec';
4
+
5
+ describe('randomBytes should', () => {
6
+ it(
7
+ 'generate random bytes of length 32',
8
+ () => {
9
+ const bytes = randomBytes(32);
10
+ expect(bytes).toBeDefined();
11
+ expect(bytes.length).toEqual(32);
12
+ },
13
+ UNIT_TEST_TIMEOUT,
14
+ );
15
+ });
@@ -1,18 +1,18 @@
1
- import { AuthorizationResponse } from '../types';
2
-
3
- import { convertURIToJsonObject } from './Encoding';
4
-
5
- export const toAuthorizationResponsePayload = (input: AuthorizationResponse | string): AuthorizationResponse => {
6
- let response = input;
7
- if (typeof input === 'string') {
8
- if (input.trim().startsWith('{') && input.trim().endsWith('}')) {
9
- response = JSON.parse(input);
10
- } else if (input.includes('?') && input.includes('code')) {
11
- response = convertURIToJsonObject(input) as AuthorizationResponse;
12
- }
13
- }
14
- if (response && typeof response !== 'string') {
15
- return response;
16
- }
17
- throw Error(`Could not create authorization response from the input ${input}`);
18
- };
1
+ import { AuthorizationResponse } from '../types';
2
+
3
+ import { convertURIToJsonObject } from './Encoding';
4
+
5
+ export const toAuthorizationResponsePayload = (input: AuthorizationResponse | string): AuthorizationResponse => {
6
+ let response = input;
7
+ if (typeof input === 'string') {
8
+ if (input.trim().startsWith('{') && input.trim().endsWith('}')) {
9
+ response = JSON.parse(input);
10
+ } else if (input.includes('?') && input.includes('code')) {
11
+ response = convertURIToJsonObject(input) as AuthorizationResponse;
12
+ }
13
+ }
14
+ if (response && typeof response !== 'string') {
15
+ return response;
16
+ }
17
+ throw Error(`Could not create authorization response from the input ${input}`);
18
+ };