@sphereon/oid4vci-client 0.2.0 → 0.4.1-next.285

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 (107) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +494 -371
  3. package/dist/AccessTokenClient.d.ts +30 -0
  4. package/dist/AccessTokenClient.d.ts.map +1 -0
  5. package/dist/AccessTokenClient.js +222 -0
  6. package/dist/AccessTokenClient.js.map +1 -0
  7. package/dist/AuthorizationDetailsBuilder.d.ts +11 -0
  8. package/dist/AuthorizationDetailsBuilder.d.ts.map +1 -0
  9. package/dist/AuthorizationDetailsBuilder.js +44 -0
  10. package/dist/AuthorizationDetailsBuilder.js.map +1 -0
  11. package/dist/CredentialOfferClient.d.ts +10 -0
  12. package/dist/CredentialOfferClient.d.ts.map +1 -0
  13. package/dist/CredentialOfferClient.js +101 -0
  14. package/dist/CredentialOfferClient.js.map +1 -0
  15. package/dist/CredentialRequestClient.d.ts +33 -0
  16. package/dist/CredentialRequestClient.d.ts.map +1 -0
  17. package/dist/CredentialRequestClient.js +118 -0
  18. package/dist/CredentialRequestClient.js.map +1 -0
  19. package/dist/CredentialRequestClientBuilder.d.ts +34 -0
  20. package/dist/CredentialRequestClientBuilder.d.ts.map +1 -0
  21. package/dist/CredentialRequestClientBuilder.js +87 -0
  22. package/dist/CredentialRequestClientBuilder.js.map +1 -0
  23. package/dist/{main/lib/MetadataClient.d.ts → MetadataClient.d.ts} +39 -38
  24. package/dist/MetadataClient.d.ts.map +1 -0
  25. package/dist/MetadataClient.js +148 -0
  26. package/dist/MetadataClient.js.map +1 -0
  27. package/dist/OpenID4VCIClient.d.ts +75 -0
  28. package/dist/OpenID4VCIClient.d.ts.map +1 -0
  29. package/dist/OpenID4VCIClient.js +403 -0
  30. package/dist/OpenID4VCIClient.js.map +1 -0
  31. package/dist/ProofOfPossessionBuilder.d.ts +38 -0
  32. package/dist/ProofOfPossessionBuilder.d.ts.map +1 -0
  33. package/dist/ProofOfPossessionBuilder.js +129 -0
  34. package/dist/ProofOfPossessionBuilder.js.map +1 -0
  35. package/dist/functions/ProofUtil.d.ts +29 -0
  36. package/dist/functions/ProofUtil.d.ts.map +1 -0
  37. package/dist/functions/ProofUtil.js +104 -0
  38. package/dist/functions/ProofUtil.js.map +1 -0
  39. package/dist/functions/index.d.ts +4 -0
  40. package/dist/functions/index.d.ts.map +1 -0
  41. package/dist/{main → functions}/index.js +20 -18
  42. package/dist/functions/index.js.map +1 -0
  43. package/dist/index.d.ts +9 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/{main/lib/index.js → index.js} +25 -24
  46. package/dist/index.js.map +1 -0
  47. package/lib/AccessTokenClient.ts +249 -0
  48. package/lib/AuthorizationDetailsBuilder.ts +46 -0
  49. package/lib/CredentialOfferClient.ts +108 -0
  50. package/lib/CredentialRequestClient.ts +137 -0
  51. package/lib/CredentialRequestClientBuilder.ts +110 -0
  52. package/lib/MetadataClient.ts +147 -0
  53. package/lib/OpenID4VCIClient.ts +523 -0
  54. package/lib/ProofOfPossessionBuilder.ts +181 -0
  55. package/lib/__tests__/AccessTokenClient.spec.ts +225 -0
  56. package/lib/__tests__/AuthorizationDetailsBuilder.spec.ts +65 -0
  57. package/lib/__tests__/AuthzFlowType.spec.ts +39 -0
  58. package/lib/__tests__/CredentialRequestClient.spec.ts +291 -0
  59. package/lib/__tests__/CredentialRequestClientBuilder.spec.ts +121 -0
  60. package/lib/__tests__/HttpUtils.spec.ts +37 -0
  61. package/lib/__tests__/IT.spec.ts +173 -0
  62. package/lib/__tests__/IssuanceInitiation.spec.ts +48 -0
  63. package/lib/__tests__/JsonURIConversions.spec.ts +146 -0
  64. package/lib/__tests__/MetadataClient.spec.ts +203 -0
  65. package/lib/__tests__/MetadataMocks.ts +444 -0
  66. package/lib/__tests__/OpenID4VCIClient.spec.ts +166 -0
  67. package/lib/__tests__/OpenID4VCIClientPAR.spec.ts +112 -0
  68. package/lib/__tests__/ProofOfPossessionBuilder.spec.ts +110 -0
  69. package/lib/__tests__/data/VciDataFixtures.ts +744 -0
  70. package/lib/functions/ProofUtil.ts +120 -0
  71. package/lib/functions/index.ts +3 -0
  72. package/{dist/main/lib/index.d.ts → lib/index.ts} +8 -7
  73. package/package.json +68 -71
  74. package/CHANGELOG.md +0 -21
  75. package/dist/main/index.d.ts +0 -1
  76. package/dist/main/lib/AccessTokenClient.d.ts +0 -20
  77. package/dist/main/lib/AccessTokenClient.js +0 -141
  78. package/dist/main/lib/CredentialRequestClient.d.ts +0 -31
  79. package/dist/main/lib/CredentialRequestClient.js +0 -66
  80. package/dist/main/lib/CredentialRequestClientBuilder.d.ts +0 -21
  81. package/dist/main/lib/CredentialRequestClientBuilder.js +0 -56
  82. package/dist/main/lib/IssuanceInitiation.d.ts +0 -5
  83. package/dist/main/lib/IssuanceInitiation.js +0 -29
  84. package/dist/main/lib/MetadataClient.js +0 -127
  85. package/dist/main/lib/functions/Encoding.d.ts +0 -17
  86. package/dist/main/lib/functions/Encoding.js +0 -138
  87. package/dist/main/lib/functions/HttpUtils.d.ts +0 -17
  88. package/dist/main/lib/functions/HttpUtils.js +0 -133
  89. package/dist/main/lib/functions/ProofUtil.d.ts +0 -9
  90. package/dist/main/lib/functions/ProofUtil.js +0 -76
  91. package/dist/main/lib/functions/index.d.ts +0 -3
  92. package/dist/main/lib/functions/index.js +0 -20
  93. package/dist/main/lib/types/Authorization.types.d.ts +0 -66
  94. package/dist/main/lib/types/Authorization.types.js +0 -35
  95. package/dist/main/lib/types/CredentialIssuance.types.d.ts +0 -88
  96. package/dist/main/lib/types/CredentialIssuance.types.js +0 -8
  97. package/dist/main/lib/types/Generic.types.d.ts +0 -19
  98. package/dist/main/lib/types/Generic.types.js +0 -11
  99. package/dist/main/lib/types/OAuth2ASMetadata.d.ts +0 -37
  100. package/dist/main/lib/types/OAuth2ASMetadata.js +0 -3
  101. package/dist/main/lib/types/OID4VCIServerMetadata.d.ts +0 -65
  102. package/dist/main/lib/types/OID4VCIServerMetadata.js +0 -3
  103. package/dist/main/lib/types/Oidc4vciErrors.d.ts +0 -3
  104. package/dist/main/lib/types/Oidc4vciErrors.js +0 -7
  105. package/dist/main/lib/types/index.d.ts +0 -6
  106. package/dist/main/lib/types/index.js +0 -23
  107. package/dist/main/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,744 @@
1
+ import { CredentialSupportedBrief, IssuerCredentialSubjectDisplay, IssuerMetadataV1_0_08 } from '@sphereon/oid4vci-common';
2
+ import { ICredentialStatus, W3CVerifiableCredential } from '@sphereon/ssi-types';
3
+
4
+ export function getMockData(issuerName: string): IssuerMockData | null {
5
+ if (issuerName in mockData) {
6
+ return mockData[issuerName];
7
+ }
8
+ return null;
9
+ }
10
+
11
+ export interface VciMockDataStructure {
12
+ [issuerName: string]: IssuerMockData;
13
+ }
14
+
15
+ export interface IssuerMockData {
16
+ metadata: {
17
+ issuer?: string;
18
+ token_endpoint: string;
19
+ credential_endpoint: string;
20
+ openid4vci_metadata: IssuerMetadataV1_0_08;
21
+ };
22
+ auth: {
23
+ url: string;
24
+ method?: string;
25
+ request: {
26
+ client_id: string;
27
+ grant_type: 'urn:ietf:params:oauth:grant-type:pre-authorized_code' | 'authorization_code' | 'password';
28
+ 'pre-authorized_code'?: string;
29
+ };
30
+ response: {
31
+ access_token: string;
32
+ token_type: string;
33
+ expires_in: number;
34
+ c_nonce?: string;
35
+ c_nonce_expires_in?: number;
36
+ refresh_token?: string;
37
+ id_token?: string;
38
+ scope?: string;
39
+ };
40
+ };
41
+ credential: {
42
+ url: string;
43
+ deeplink: string;
44
+ request: {
45
+ types: [string];
46
+ format: 'jwt_vc' | 'ldp_vc' | 'jwt_vc_json-ld' | string;
47
+ proof: {
48
+ proof_type: 'jwt' | string;
49
+ jwt: string;
50
+ };
51
+ };
52
+ response: {
53
+ format?: 'jwt_vc' | 'w3cvc-jsonld' | string;
54
+ credential: W3CVerifiableCredential;
55
+ acceptance_token?: string;
56
+ c_nonce?: string;
57
+ c_nonce_expires_in?: number;
58
+ };
59
+ };
60
+ }
61
+
62
+ const mockData: VciMockDataStructure = {
63
+ spruce: {
64
+ metadata: {
65
+ issuer: 'https://ngi-oidc4vci-test.spruceid.xyz',
66
+ token_endpoint: 'https://ngi-oidc4vci-testspruceid.xyz/token',
67
+ credential_endpoint: 'https://ngi-oidc4vci-test.spruceid.xyz/credential',
68
+ openid4vci_metadata: {
69
+ issuer: 'https://ngi-oidc4vci-test.spruceid.xyz',
70
+ credential_endpoint: 'https://ngi-oidc4vci-test.spruceid.xyz/credential',
71
+ token_endpoint: 'https://ngi-oidc4vci-test.spruceid.xyz/token',
72
+ jwks_uri: 'https://ngi-oidc4vci-test.spruceid.xyz/jwks',
73
+ grant_types_supported: ['urn:ietf:params:oauth:grant-type:pre-authorized_code'],
74
+ credentials_supported: {
75
+ OpenBadgeCredential: {
76
+ formats: {
77
+ jwt_vc: {
78
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
79
+ cryptographic_binding_methods_supported: ['did'],
80
+ cryptographic_suites_supported: ['ES256', 'ES256K'],
81
+ },
82
+ ldp_vc: {
83
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
84
+ cryptographic_binding_methods_supported: ['did'],
85
+ cryptographic_suites_supported: ['Ed25519Signature2018'],
86
+ },
87
+ },
88
+ },
89
+ },
90
+ },
91
+ },
92
+ auth: {
93
+ url: 'https://ngi-oidc4vci-test.spruceid.xyz/token',
94
+ method: 'POST',
95
+ request: {
96
+ client_id: 'sphereon:ssi-wallet',
97
+ grant_type: 'urn:ietf:params:oauth:grant-type:pre-authorized_code',
98
+ 'pre-authorized_code':
99
+ 'eyJhbGciOiJFUzI1NiJ9.eyJjcmVkZW50aWFsX3R5cGUiOlsiT3BlbkJhZGdlQ3JlZGVudGlhbCJdLCJleHAiOiIyMDIzLTA0LTE5VDExOjUzOjM4WiIsIm5vbmNlIjoiN3F4YldMcktpNTZjNjRlWjljaHJZeVUxbFVVQzMzV1YifQ.tDxAC8CsqN-DALOmY5ANEVf96fZfTzqHL4Aiq4IZzMJ-zSCrNkNBeuOK5D3RsJhSZcDMu2XvuG1RrSXJV0zHRg',
100
+ },
101
+ response: {
102
+ access_token:
103
+ 'eyJhbGciOiJFUzI1NiJ9.eyJvcF9zdGF0ZSI6eyJjcmVkZW50aWFsX3R5cGUiOlsiT3BlbkJhZGdlQ3JlZGVudGlhbCJdfSwiaWF0IjoxNjgxOTA0OTUwLjAsImV4cCI6MTY4MTk5MTM1MC4wfQ.0CT_o2woWAQf_8mcPfC7uVtp_Cu8N4BLNOAgJGcQc-IcoS61QL2pArp7KdZGXGjqRmx9u4JjoVZuZHJSaDIyDg',
104
+ token_type: 'bearer',
105
+ expires_in: 84600,
106
+ },
107
+ },
108
+ credential: {
109
+ url: 'https://ngi-oidc4vci-test.spruceid.xyz/credential',
110
+ deeplink:
111
+ 'openid-initiate-issuance://?issuer=https%3A%2F%2Fngi%2Doidc4vci%2Dtest%2Espruceid%2Exyz&credential_type=OpenBadgeCredential&pre-authorized_code=eyJhbGciOiJFUzI1NiJ9.eyJjcmVkZW50aWFsX3R5cGUiOlsiT3BlbkJhZGdlQ3JlZGVudGlhbCJdLCJleHAiOiIyMDIzLTA0LTIwVDA5OjA0OjM2WiIsIm5vbmNlIjoibWFibmVpT0VSZVB3V3BuRFFweEt3UnRsVVRFRlhGUEwifQ.qOZRPN8sTv_knhp7WaWte2-aDULaPZX--2i9unF6QDQNUllqDhvxgIHMDCYHCV8O2_Gj-T2x1J84fDMajE3asg&user_pin_required=false',
112
+ request: {
113
+ types: ['OpenBadgeCredential'],
114
+ format: 'jwt_vc_json-ld',
115
+ proof: {
116
+ proof_type: 'jwt',
117
+ jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSMwIn0.eyJhdWQiOiJodHRwczovL25naS1vaWRjNHZjaS10ZXN0LnNwcnVjZWlkLnh5eiIsImlhdCI6MTY4MTkxMTA2MC45NDIsImV4cCI6MTY4MTkxMTcyMC45NDIsImlzcyI6InNwaGVyZW9uOnNzaS13YWxsZXQiLCJqdGkiOiJhNjA4MzMxZi02ZmE0LTQ0ZjAtYWNkZWY5NmFjMjdmNmQ3MCJ9.NwF3_41gwnlIdd_6Uk9CczeQHzIQt6UcvTT5Cxv72j9S1vNwiY9annA2kLsjsTiR5-WMBdUhJCO7wYCtZ15mxw',
118
+ },
119
+ },
120
+ response: {
121
+ format: 'jwt_vc',
122
+ credential:
123
+ 'eyJhbGciOiJFUzI1NiIsImtpZCI6ImRpZDpqd2s6ZXlKamNuWWlPaUpRTFRJMU5pSXNJbXQwZVNJNklrVkRJaXdpZUNJNklrUTNXblZZUldKRWF6bFFURzFDYkVGZldEVnVOa3N3V1dOSVdrRlZTbHBLZDFkYVVFNDBhRVppYlhjaUxDSjVJam9pYkY5b1F6Y3liREkyTFVnMlFrMURWVEp3TWxReVIxWkRSWGxoYUVWRFIyaFVaMnB2VDBkRmRESlJSU0o5IzAifQeyJleHAiOjE2ODE5OTc1MTguMCwiaXNzIjoiZGlkOmp3azpleUpqY25ZaU9pSlFMVEkxTmlJc0ltdDBlU0k2SWtWRElpd2llQ0k2SWtRM1duVllSV0pFYXpsUVRHMUNiRUZmV0RWdU5rc3dXV05JV2tGVlNscEtkMWRhVUU0MGFFWmliWGNpTENKNUlqb2liRjlvUXpjeWJESTJMVWcyUWsxRFZUSndNbFF5UjFaRFJYbGhhRVZEUjJoVVoycHZUMGRGZERKUlJTSjkiLCJuYmYiOjE2ODE5MTExMTguMCwianRpIjoidXJuOnV1aWQ6MDVhMThiMTMtYjA5Mi00MTZhLWI4OTgtY2I1OTU4N2IxNzNiIiwic3ViIjoiZGlkOmp3azpleUpoYkdjaU9pSkZVekkxTmtzaUxDSjFjMlVpT2lKemFXY2lMQ0pyZEhraU9pSkZReUlzSW1OeWRpSTZJbk5sWTNBeU5UWnJNU0lzSW5naU9pSnJablZqU2tFdFRISnJPVVowT0ZseUxVZDJUM0pqYmtzd2IzZHNkalJYTW5VMFN6SXhTR2R2U1ZSM0lpd2llU0k2SWpaM2NGQlBNazlDUVVwU1NGRTFUV3RLV1ZSWldHbEJSRVF3TjFOTk5VdGplV3AzWDJFM1VFMVplRmtpZlEiLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vcHVybC5pbXNnbG9iYWwub3JnL3NwZWMvb2IvdjNwMC9jb250ZXh0Lmpzb24iXSwiaWQiOiJ1cm46dXVpZDowNWExOGIxMy1iMDkyLTQxNmEtYjg5OC1jYjU5NTg3YjE3M2IiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiT3BlbkJhZGdlQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJpZCI6ImRpZDpqd2s6ZXlKaGJHY2lPaUpGVXpJMU5rc2lMQ0oxYzJVaU9pSnphV2NpTENKcmRIa2lPaUpGUXlJc0ltTnlkaUk2SW5ObFkzQXlOVFpyTVNJc0luZ2lPaUpyWm5WalNrRXRUSEpyT1VaME9GbHlMVWQyVDNKamJrc3diM2RzZGpSWE1uVTBTekl4U0dkdlNWUjNJaXdpZVNJNklqWjNjRkJQTWs5Q1FVcFNTRkUxVFd0S1dWUlpXR2xCUkVRd04xTk5OVXRqZVdwM1gyRTNVRTFaZUZraWZRIiwidHlwZSI6WyJBY2hpZXZlbWVudFN1YmplY3QiXSwiYWNoaWV2ZW1lbnQiOnsiaWQiOiJ1cm46dXVpZDo1YTNmODE3Mi0zMjJiLTRhNzEtYTI1Ny1iMTFjMTA5MGI4YjkiLCJ0eXBlIjpbIkFjaGlldmVtZW50Il0sIm5hbWUiOiJKRkYgeCB2Yy1lZHUgUGx1Z0Zlc3QgMiBJbnRlcm9wZXJhYmlsaXR5IiwiZGVzY3JpcHRpb24iOiJUaGlzIGNyZWRlbnRpYWwgc29sdXRpb24gc3VwcG9ydHMgdGhlIHVzZSBvZiBPQnYzIGFuZCB3M2MgVmVyaWZpYWJsZSBDcmVkZW50aWFscyBhbmQgaXMgaW50ZXJvcGVyYWJsZSB3aXRoIGF0IGxlYXN0IHR3byBvdGhlciBzb2x1dGlvbnMuICBUaGlzIHdhcyBkZW1vbnN0cmF0ZWQgc3VjY2Vzc2Z1bGx5IGR1cmluZyBKRkYgeCB2Yy1lZHUgUGx1Z0Zlc3QgMi4iLCJjcml0ZXJpYSI6eyJuYXJyYXRpdmUiOiJTb2x1dGlvbnMgcHJvdmlkZXJzIGVhcm5lZCB0aGlzIGJhZGdlIGJ5IGRlbW9uc3RyYXRpbmcgaW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIG11bHRpcGxlIHByb3ZpZGVycyBiYXNlZCBvbiB0aGUgT0J2MyBjYW5kaWRhdGUgZmluYWwgc3RhbmRhcmQsIHdpdGggc29tZSBhZGRpdGlvbmFsIHJlcXVpcmVkIGZpZWxkcy4gQ3JlZGVudGlhbCBpc3N1ZXJzIGVhcm5pbmcgdGhpcyBiYWRnZSBzdWNjZXNzZnVsbHkgaXNzdWVkIGEgY3JlZGVudGlhbCBpbnRvIGF0IGxlYXN0IHR3byB3YWxsZXRzLiAgV2FsbGV0IGltcGxlbWVudGVycyBlYXJuaW5nIHRoaXMgYmFkZ2Ugc3VjY2Vzc2Z1bGx5IGRpc3BsYXllZCBjcmVkZW50aWFscyBpc3N1ZWQgYnkgYXQgbGVhc3QgdHdvIGRpZmZlcmVudCBjcmVkZW50aWFsIGlzc3VlcnMuIn0sImltYWdlIjp7ImlkIjoiaHR0cHM6Ly93M2MtY2NnLmdpdGh1Yi5pby92Yy1lZC9wbHVnZmVzdC0yLTIwMjIvaW1hZ2VzL0pGRi1WQy1FRFUtUExVR0ZFU1QyLWJhZGdlLWltYWdlLnBuZyIsInR5cGUiOiJJbWFnZSJ9fX0sImlzc3VlciI6eyJpZCI6ImRpZDpqd2s6ZXlKamNuWWlPaUpRTFRJMU5pSXNJbXQwZVNJNklrVkRJaXdpZUNJNklrUTNXblZZUldKRWF6bFFURzFDYkVGZldEVnVOa3N3V1dOSVdrRlZTbHBLZDFkYVVFNDBhRVppYlhjaUxDSjVJam9pYkY5b1F6Y3liREkyTFVnMlFrMURWVEp3TWxReVIxWkRSWGxoYUVWRFIyaFVaMnB2VDBkRmRESlJSU0o5IiwibmFtZSI6IkpvYnMgZm9yIHRoZSBGdXR1cmUgKEpGRikiLCJpbWFnZSI6eyJpZCI6Imh0dHBzOi8vdzNjLWNjZy5naXRodWIuaW8vdmMtZWQvcGx1Z2Zlc3QtMi0yMDIyL2ltYWdlcy9KRkYtVkMtRURVLVBMVUdGRVNUMi1iYWRnZS1pbWFnZS5wbmciLCJ0eXBlIjoiSW1hZ2UifSwidHlwZSI6WyJQcm9maWxlIl0sInVybCI6Imh0dHBzOi8vd3d3LmpmZi5vcmcvIn0sImlzc3VhbmNlRGF0ZSI6IjIwMjMtMDQtMTlUMTM6MzE6NThaIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDIzLTA0LTIwVDEzOjMxOjU4WiIsIm5hbWUiOiJKRkYgeCB2Yy1lZHUgUGx1Z0Zlc3QgMiBJbnRlcm9wZXJhYmlsaXR5In19.8GQEtIZGTApWBpyOC3dFX8heAo3nKxb6RXzZroM3YtLVIIzWP60adgXk5IYsgsHgvoVRq9UP9igJpycH4Rxa8w',
124
+ },
125
+ },
126
+ },
127
+ walt: {
128
+ metadata: {
129
+ issuer: 'https://jff.walt.id/issuer-api/default/oidc/',
130
+ token_endpoint: 'https://jff.walt.id/issuer-api/default/oidc/token',
131
+ credential_endpoint: 'https://jff.walt.id/issuer-api/default/oidc/credential',
132
+ openid4vci_metadata: {
133
+ authorization_endpoint: 'https://jff.walt.id/issuer-api/default/oidc/fulfillPAR',
134
+ token_endpoint: 'https://jff.walt.id/issuer-api/default/oidc/token',
135
+ pushed_authorization_request_endpoint: 'https://jff.walt.id/issuer-api/default/oidc/par',
136
+ issuer: 'https://jff.walt.id/issuer-api/default',
137
+ jwks_uri: 'https://jff.walt.id/issuer-api/default/oidc',
138
+ grant_types_supported: ['authorization_code', 'urn:ietf:params:oauth:grant-type:pre-authorized_code'],
139
+ request_uri_parameter_supported: true,
140
+ credentials_supported: {
141
+ VerifiableId: {
142
+ display: [
143
+ {
144
+ name: 'VerifiableId',
145
+ },
146
+ ],
147
+ formats: {
148
+ ldp_vc: {
149
+ cryptographic_binding_methods_supported: ['did'],
150
+ cryptographic_suites_supported: [
151
+ 'Ed25519Signature2018',
152
+ 'Ed25519Signature2020',
153
+ 'EcdsaSecp256k1Signature2019',
154
+ 'RsaSignature2018',
155
+ 'JsonWebSignature2020',
156
+ 'JcsEd25519Signature2020',
157
+ ],
158
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'VerifiableId'],
159
+ },
160
+ jwt_vc: {
161
+ cryptographic_binding_methods_supported: ['did'],
162
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
163
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'VerifiableId'],
164
+ },
165
+ },
166
+ },
167
+ VerifiableDiploma: {
168
+ display: [
169
+ {
170
+ name: 'VerifiableDiploma',
171
+ },
172
+ ],
173
+ formats: {
174
+ ldp_vc: {
175
+ cryptographic_binding_methods_supported: ['did'],
176
+ cryptographic_suites_supported: [
177
+ 'Ed25519Signature2018',
178
+ 'Ed25519Signature2020',
179
+ 'EcdsaSecp256k1Signature2019',
180
+ 'RsaSignature2018',
181
+ 'JsonWebSignature2020',
182
+ 'JcsEd25519Signature2020',
183
+ ],
184
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'VerifiableDiploma'],
185
+ },
186
+ jwt_vc: {
187
+ cryptographic_binding_methods_supported: ['did'],
188
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
189
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'VerifiableDiploma'],
190
+ },
191
+ },
192
+ },
193
+ VerifiableVaccinationCertificate: {
194
+ display: [
195
+ {
196
+ name: 'VerifiableVaccinationCertificate',
197
+ },
198
+ ],
199
+ formats: {
200
+ ldp_vc: {
201
+ cryptographic_binding_methods_supported: ['did'],
202
+ cryptographic_suites_supported: [
203
+ 'Ed25519Signature2018',
204
+ 'Ed25519Signature2020',
205
+ 'EcdsaSecp256k1Signature2019',
206
+ 'RsaSignature2018',
207
+ 'JsonWebSignature2020',
208
+ 'JcsEd25519Signature2020',
209
+ ],
210
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'VerifiableVaccinationCertificate'],
211
+ },
212
+ jwt_vc: {
213
+ cryptographic_binding_methods_supported: ['did'],
214
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
215
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'VerifiableVaccinationCertificate'],
216
+ },
217
+ },
218
+ },
219
+ ProofOfResidence: {
220
+ display: [
221
+ {
222
+ name: 'ProofOfResidence',
223
+ },
224
+ ],
225
+ formats: {
226
+ ldp_vc: {
227
+ cryptographic_binding_methods_supported: ['did'],
228
+ cryptographic_suites_supported: [
229
+ 'Ed25519Signature2018',
230
+ 'Ed25519Signature2020',
231
+ 'EcdsaSecp256k1Signature2019',
232
+ 'RsaSignature2018',
233
+ 'JsonWebSignature2020',
234
+ 'JcsEd25519Signature2020',
235
+ ],
236
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'ProofOfResidence'],
237
+ },
238
+ jwt_vc: {
239
+ cryptographic_binding_methods_supported: ['did'],
240
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
241
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'ProofOfResidence'],
242
+ },
243
+ },
244
+ },
245
+ ParticipantCredential: {
246
+ display: [
247
+ {
248
+ name: 'ParticipantCredential',
249
+ },
250
+ ],
251
+ formats: {
252
+ ldp_vc: {
253
+ cryptographic_binding_methods_supported: ['did'],
254
+ cryptographic_suites_supported: [
255
+ 'Ed25519Signature2018',
256
+ 'Ed25519Signature2020',
257
+ 'EcdsaSecp256k1Signature2019',
258
+ 'RsaSignature2018',
259
+ 'JsonWebSignature2020',
260
+ 'JcsEd25519Signature2020',
261
+ ],
262
+ types: ['VerifiableCredential', 'ParticipantCredential'],
263
+ },
264
+ jwt_vc: {
265
+ cryptographic_binding_methods_supported: ['did'],
266
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
267
+ types: ['VerifiableCredential', 'ParticipantCredential'],
268
+ },
269
+ },
270
+ },
271
+ Europass: {
272
+ display: [
273
+ {
274
+ name: 'Europass',
275
+ },
276
+ ],
277
+ formats: {
278
+ ldp_vc: {
279
+ cryptographic_binding_methods_supported: ['did'],
280
+ cryptographic_suites_supported: [
281
+ 'Ed25519Signature2018',
282
+ 'Ed25519Signature2020',
283
+ 'EcdsaSecp256k1Signature2019',
284
+ 'RsaSignature2018',
285
+ 'JsonWebSignature2020',
286
+ 'JcsEd25519Signature2020',
287
+ ],
288
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'Europass'],
289
+ },
290
+ jwt_vc: {
291
+ cryptographic_binding_methods_supported: ['did'],
292
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
293
+ types: ['VerifiableCredential', 'VerifiableAttestation', 'Europass'],
294
+ },
295
+ },
296
+ },
297
+ OpenBadgeCredential: {
298
+ display: [
299
+ {
300
+ name: 'OpenBadgeCredential',
301
+ },
302
+ ],
303
+ formats: {
304
+ ldp_vc: {
305
+ cryptographic_binding_methods_supported: ['did'],
306
+ cryptographic_suites_supported: [
307
+ 'Ed25519Signature2018',
308
+ 'Ed25519Signature2020',
309
+ 'EcdsaSecp256k1Signature2019',
310
+ 'RsaSignature2018',
311
+ 'JsonWebSignature2020',
312
+ 'JcsEd25519Signature2020',
313
+ ],
314
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
315
+ },
316
+ jwt_vc: {
317
+ cryptographic_binding_methods_supported: ['did'],
318
+ cryptographic_suites_supported: ['ES256', 'ES256K', 'EdDSA', 'RS256', 'PS256'],
319
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
320
+ },
321
+ },
322
+ },
323
+ },
324
+ credential_issuer: {
325
+ display: [
326
+ {
327
+ name: 'https://jff.walt.id/issuer-api/default',
328
+ },
329
+ ],
330
+ },
331
+ credential_endpoint: 'https://jff.walt.id/issuer-api/default/oidc/credential',
332
+ subject_types_supported: ['public'],
333
+ },
334
+ },
335
+ auth: {
336
+ url: 'https://jff.walt.id/issuer-api/default/oidc/token',
337
+ method: 'POST',
338
+ request: {
339
+ client_id: 'sphereon:ssi-wallet',
340
+ grant_type: 'urn:ietf:params:oauth:grant-type:pre-authorized_code',
341
+ 'pre-authorized_code':
342
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1NzhkZWZjOS0wMTFlLTQ3ZTAtYmQ5YS03MWFlOGU4ZTJjYzYiLCJwcmUtYXV0aG9yaXplZCI6dHJ1ZX0.uh1rX4qVqlp-YW-itLON8Zmov8t-xugCFDXlUSPuTSQ',
343
+ },
344
+ response: {
345
+ access_token: '578defc9-011e-47e0-bd9a-71ae8e8e2cc6',
346
+ refresh_token: 'zx6cildNnkqLpdCoCVnr5d77OJ6m0ugl-0sVSoEb3go',
347
+ c_nonce: 'f06a3105-a2ed-44fc-954b-4a259703493b',
348
+ id_token:
349
+ 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1NzhkZWZjOS0wMTFlLTQ3ZTAtYmQ5YS03MWFlOGU4ZTJjYzYifQ.MlWL2L-YucfugV573GbGFI8UHiDrGQatlekpgPq5nBY',
350
+ token_type: 'Bearer',
351
+ expires_in: 300,
352
+ },
353
+ },
354
+ credential: {
355
+ deeplink:
356
+ 'openid-initiate-issuance://?issuer=https%3A%2F%2Fjff.walt.id%2Fissuer-api%2Fdefault%2Foidc%2F&credential_type=OpenBadgeCredential&pre-authorized_code=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIwMTc4OTNjYy04ZTY3LTQxNzItYWZlOS1lODcyYmYxNDBlNWMiLCJwcmUtYXV0aG9yaXplZCI6dHJ1ZX0.ODfq2AIhOcB61dAb3zMrXBJjPJaf53zkeHh_AssYyYA&user_pin_required=false',
357
+ url: 'https://jff.walt.id/issuer-api/default/oidc/credential',
358
+ request: {
359
+ types: ['OpenBadgeCredential'],
360
+ format: 'jwt_vc_json',
361
+ proof: {
362
+ proof_type: 'jwt',
363
+ jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSMwIn0.eyJhdWQiOiJodHRwczovL2pmZi53YWx0LmlkL2lzc3Vlci1hcGkvZGVmYXVsdC9vaWRjLyIsImlhdCI6MTY4MTkxMTk0Mi4yMzgsImV4cCI6MTY4MTkxMjYwMi4yMzgsIm5vbmNlIjoiZjA2YTMxMDUtYTJlZC00NGZjLTk1NGItNGEyNTk3MDM0OTNiIiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6IjA1OWM3ODA5LTlmOGYtNGE3ZS1hZDI4YTNhMTNhMGIzNmViIn0.RfiWyybxpe3nkx3b0yIsqDHQtvB1WwhDW4t0X-kijy2dsSfv2cYhSEmAzs1shg7OV4EW8fSzt_Te79xiVl6jCw',
364
+ },
365
+ },
366
+ response: {
367
+ credential:
368
+ 'eyJraWQiOiJkaWQ6andrOmV5SnJkSGtpT2lKUFMxQWlMQ0oxYzJVaU9pSnphV2NpTENKamNuWWlPaUpGWkRJMU5URTVJaXdpYTJsa0lqb2lOMlEyWTJKbU1qUTRPV0l6TkRJM05tSXhOekl4T1RBMU5EbGtNak01TVRnaUxDSjRJam9pUm01RlZWVmhkV1J0T1RsT016QmlPREJxY3poV2REUkJiazk0ZGxKM1dIUm5VbU5MY1ROblFrbDFPQ0lzSW1Gc1p5STZJa1ZrUkZOQkluMCMwIiwidHlwIjoiSldUIiwiYWxnIjoiRWREU0EifQ.eyJpc3MiOiJkaWQ6andrOmV5SnJkSGtpT2lKUFMxQWlMQ0oxYzJVaU9pSnphV2NpTENKamNuWWlPaUpGWkRJMU5URTVJaXdpYTJsa0lqb2lOMlEyWTJKbU1qUTRPV0l6TkRJM05tSXhOekl4T1RBMU5EbGtNak01TVRnaUxDSjRJam9pUm01RlZWVmhkV1J0T1RsT016QmlPREJxY3poV2REUkJiazk0ZGxKM1dIUm5VbU5MY1ROblFrbDFPQ0lzSW1Gc1p5STZJa1ZrUkZOQkluMCIsInN1YiI6ImRpZDpqd2s6ZXlKaGJHY2lPaUpGVXpJMU5rc2lMQ0oxYzJVaU9pSnphV2NpTENKcmRIa2lPaUpGUXlJc0ltTnlkaUk2SW5ObFkzQXlOVFpyTVNJc0luZ2lPaUpyWm5WalNrRXRUSEpyT1VaME9GbHlMVWQyVDNKamJrc3diM2RzZGpSWE1uVTBTekl4U0dkdlNWUjNJaXdpZVNJNklqWjNjRkJQTWs5Q1FVcFNTRkUxVFd0S1dWUlpXR2xCUkVRd04xTk5OVXRqZVdwM1gyRTNVRTFaZUZraWZRIiwibmJmIjoxNjgxOTExOTk5LCJpYXQiOjE2ODE5MTE5OTksInZjIjp7InR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJPcGVuQmFkZ2VDcmVkZW50aWFsIl0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIiwiaHR0cHM6Ly9wdXJsLmltc2dsb2JhbC5vcmcvc3BlYy9vYi92M3AwL2NvbnRleHQuanNvbiJdLCJpZCI6InVybjp1dWlkOmM0YTA4MDYzLTc4ZTUtNDdkNS04NGY5LTg2YTFmNjNiYzNkYSIsImlzc3VlciI6eyJpZCI6ImRpZDpqd2s6ZXlKcmRIa2lPaUpQUzFBaUxDSjFjMlVpT2lKemFXY2lMQ0pqY25ZaU9pSkZaREkxTlRFNUlpd2lhMmxrSWpvaU4yUTJZMkptTWpRNE9XSXpOREkzTm1JeE56SXhPVEExTkRsa01qTTVNVGdpTENKNElqb2lSbTVGVlZWaGRXUnRPVGxPTXpCaU9EQnFjemhXZERSQmJrOTRkbEozV0hSblVtTkxjVE5uUWtsMU9DSXNJbUZzWnlJNklrVmtSRk5CSW4wIiwiaW1hZ2UiOnsiaWQiOiJodHRwczovL3czYy1jY2cuZ2l0aHViLmlvL3ZjLWVkL3BsdWdmZXN0LTItMjAyMi9pbWFnZXMvSkZGLVZDLUVEVS1QTFVHRkVTVDItYmFkZ2UtaW1hZ2UucG5nIiwidHlwZSI6IkltYWdlIn0sIm5hbWUiOiJKb2JzIGZvciB0aGUgRnV0dXJlIChKRkYpIiwidHlwZSI6IlByb2ZpbGUiLCJ1cmwiOiJodHRwczovL3czYy1jY2cuZ2l0aHViLmlvL3ZjLWVkL3BsdWdmZXN0LTItMjAyMi9pbWFnZXMvSkZGLVZDLUVEVS1QTFVHRkVTVDItYmFkZ2UtaW1hZ2UucG5nIn0sImlzc3VhbmNlRGF0ZSI6IjIwMjMtMDQtMTlUMTM6NDY6MzlaIiwiaXNzdWVkIjoiMjAyMy0wNC0xOVQxMzo0NjozOVoiLCJ2YWxpZEZyb20iOiIyMDIzLTA0LTE5VDEzOjQ2OjM5WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmp3azpleUpoYkdjaU9pSkZVekkxTmtzaUxDSjFjMlVpT2lKemFXY2lMQ0pyZEhraU9pSkZReUlzSW1OeWRpSTZJbk5sWTNBeU5UWnJNU0lzSW5naU9pSnJablZqU2tFdFRISnJPVVowT0ZseUxVZDJUM0pqYmtzd2IzZHNkalJYTW5VMFN6SXhTR2R2U1ZSM0lpd2llU0k2SWpaM2NGQlBNazlDUVVwU1NGRTFUV3RLV1ZSWldHbEJSRVF3TjFOTk5VdGplV3AzWDJFM1VFMVplRmtpZlEiLCJhY2hpZXZlbWVudCI6eyJjcml0ZXJpYSI6eyJuYXJyYXRpdmUiOiJUaGUgY29ob3J0IG9mIHRoZSBKRkYgUGx1Z2Zlc3QgMiBpbiBBdWd1c3QtTm92ZW1iZXIgb2YgMjAyMiBjb2xsYWJvcmF0ZWQgdG8gcHVzaCBpbnRlcm9wZXJhYmlsaXR5IG9mIFZDcyBpbiBlZHVjYXRpb24gZm9yd2FyZC4iLCJ0eXBlIjoiQ3JpdGVyaWEifSwiZGVzY3JpcHRpb24iOiJUaGlzIHdhbGxldCBjYW4gZGlzcGxheSB0aGlzIE9wZW4gQmFkZ2UgMy4wIiwiaWQiOiIwIiwiaW1hZ2UiOnsiaWQiOiJodHRwczovL3czYy1jY2cuZ2l0aHViLmlvL3ZjLWVkL3BsdWdmZXN0LTItMjAyMi9pbWFnZXMvSkZGLVZDLUVEVS1QTFVHRkVTVDItYmFkZ2UtaW1hZ2UucG5nIiwidHlwZSI6IkltYWdlIn0sIm5hbWUiOiJPdXIgV2FsbGV0IFBhc3NlZCBKRkYgUGx1Z2Zlc3QgIzIgMjAyMiIsInR5cGUiOiJBY2hpZXZlbWVudCJ9LCJ0eXBlIjoiQWNoaWV2ZW1lbnRTdWJqZWN0In0sIm5hbWUiOiJBY2hpZXZlbWVudCBDcmVkZW50aWFsIn0sImp0aSI6InVybjp1dWlkOmM0YTA4MDYzLTc4ZTUtNDdkNS04NGY5LTg2YTFmNjNiYzNkYSJ9.AM-lAUjCjcuQgy1QhQXctd3YrUoC2UdXvOwDHcHsi_UuHX0nt__QrYlfcwUutc9gSsz-U9SZ1e6iAGarTNVbDQ',
369
+ format: 'jwt_vc_json-ld',
370
+ },
371
+ },
372
+ },
373
+ uniissuer: {
374
+ metadata: {
375
+ issuer: 'https://oidc4vc.uniissuer.io/',
376
+ token_endpoint: 'https://oidc4vc.uniissuer.io/1.0/token',
377
+ credential_endpoint: 'https: //oidc4vc.uniissuer.io/1.0/credential',
378
+ openid4vci_metadata: {
379
+ response_types_supported: ['code', 'token'],
380
+ credentials_supported: {
381
+ OpenBadgeCredential: {
382
+ display: [
383
+ {
384
+ name: 'Open Badge V3',
385
+ locale: 'en-US',
386
+ logo: {
387
+ url: 'https: //uniissuer.io/images/logo.jpg',
388
+ },
389
+ },
390
+ ],
391
+ formats: {
392
+ ldp_vc: {
393
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
394
+ cryptographic_binding_methods_supported: ['did'],
395
+ cryptographic_suites_supported: [
396
+ 'Ed25519Signature2018',
397
+ 'Ed25519Signature2020',
398
+ 'EcdsaSecp256k1Signature2019',
399
+ 'JsonWebSignature2020',
400
+ ],
401
+ },
402
+ jwt_vc: {
403
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
404
+ cryptographic_binding_methods_supported: ['did'],
405
+ cryptographic_suites_supported: ['ES256', 'EdDSA', 'ES256K', 'RS256', 'PS256'],
406
+ },
407
+ },
408
+ claims: {
409
+ achievement: {
410
+ mandatory: true,
411
+ value_type: 'object',
412
+ } as IssuerCredentialSubjectDisplay,
413
+ },
414
+ },
415
+ VaccinationCertificate: {
416
+ formats: {
417
+ ldp_vc: {
418
+ types: ['VerifiableCredential', 'VaccinationCertificate'],
419
+ cryptographic_binding_methods_supported: ['did'],
420
+ cryptographic_suites_supported: [
421
+ 'Ed25519Signature2018',
422
+ 'Ed25519Signature2020',
423
+ 'EcdsaSecp256k1Signature2019',
424
+ 'JsonWebSignature2020',
425
+ ],
426
+ },
427
+ jwt_vc: {
428
+ types: ['VerifiableCredential', 'VaccinationCertificate'],
429
+ cryptographic_binding_methods_supported: ['did'],
430
+ cryptographic_suites_supported: ['ES256', 'EdDSA', 'ES256K', 'RS256', 'PS256'],
431
+ },
432
+ },
433
+ },
434
+ },
435
+ credential_issuer: {
436
+ display: [
437
+ {
438
+ name: 'Danube Tech',
439
+ locale: 'en-US',
440
+ logo: {
441
+ url: 'https: //uniissuer.io/images/logo.jpg',
442
+ },
443
+ },
444
+ ],
445
+ },
446
+ code_challenge_methods_supported: ['plain', 'S256'],
447
+ grant_types_supported: ['authorization_code', 'urn:ietf:params:oauth:grant-type:pre-authorized_code'],
448
+ token_endpoint_auth_methods_supported: ['client_secret_post', 'client_secret_basic'],
449
+ issuer: 'https: //oidc4vc.uniissuer.io/',
450
+ authorization_endpoint: 'https://oidc4vc.uniissuer.io/1.0/authorize',
451
+ token_endpoint: 'https://oidc4vc.uniissuer.io/1.0/token',
452
+ credential_endpoint: 'https: //oidc4vc.uniissuer.io/1.0/credential',
453
+ },
454
+ },
455
+ auth: {
456
+ url: 'https://oidc4vc.uniissuer.io/1.0/token',
457
+ method: 'POST',
458
+ request: {
459
+ client_id: 'sphereon:ssi-wallet',
460
+ grant_type: 'urn:ietf:params:oauth:grant-type:pre-authorized_code',
461
+ 'pre-authorized_code': 'rQhxqvmEQef2pFChuedmDWlp6iIifUVI',
462
+ },
463
+ response: {
464
+ access_token:
465
+ 'eyJraWQiOiJrZXlfMSIsInR5cCI6IkpXVCIsImFsZyI6IkVTMjU2SyJ9.eyJzdWIiOiJPcGVuV2FsbGV0IiwiYXVkIjoiT3BlbldhbGxldCIsIm5iZiI6MTY4MTkxMjg5NCwic2NvcGUiOiJPcGVuQmFkZ2VDcmVkZW50aWFsIiwiaXNzIjoiaHR0cHM6Ly91bmlpc3N1ZXIuaW8vIiwiZXhwIjoxNjgxOTEzMDc0LCJpYXQiOjE2ODE5MTI4OTQsIm5vbmNlIjoiMzhkMzZmM2ItNzJlMy00ODg2LWI2MGMtMzZiNzcwZDBlNGVhIiwianRpIjoiODkxMjhiODktNWZhMy00MjUwLTgyMGQtMGFkYzc3NjA1MWE5In0.xmR62cbZKQCQkp7aFp3LwLvTX1gV47GdB1hIxmflEZ7ShivnJx0W_bY5aGnEXmP-wSRGaC881zZKMJDDvN7frQ',
466
+ token_type: 'Bearer',
467
+ expires_in: 180,
468
+ c_nonce: '38d36f3b-72e3-4886-b60c-36b770d0e4ea',
469
+ c_nonce_expires_in: 180,
470
+ },
471
+ },
472
+ credential: {
473
+ deeplink:
474
+ 'https://oidc4vc.uniissuer.io/&credential_type=OpenBadgeCredential&pre-authorized_code=0ApoI8rxVmdQ44RIpuDbFIURIIkOhyek&user_pin_required=false',
475
+ url: 'https://oidc4vc.uniissuer.io/1.0/credential',
476
+ request: {
477
+ types: ['OpenBadgeCredential'],
478
+ format: 'jwt_vc',
479
+ proof: {
480
+ proof_type: 'jwt',
481
+ jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJraWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSMwIn0.eyJhdWQiOiJodHRwczovL29pZGM0dmMudW5paXNzdWVyLmlvLyIsImlhdCI6MTY4MTkxMjgzNy40MTQsImV4cCI6MTY4MTkxMzQ5Ny40MTQsIm5vbmNlIjoiMzhkMzZmM2ItNzJlMy00ODg2LWI2MGMtMzZiNzcwZDBlNGVhIiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6ImIzYWEyMmFkLWExZTItNDJjOC1iMGI4ZTdjNDgzZDg4M2U4In0.awwIJ0422HSdOsCIe8k7zjxqY6RVaHK2ItUFqbmVjqLXxWt-Mp7cXF84n9HGgC8fgGOKmjlgXdNLr_Jiio_e3g',
482
+ },
483
+ },
484
+ response: {
485
+ format: 'jwt_vc',
486
+ credential:
487
+ 'eyJraWQiOiJkaWQ6a2V5OnpEbmFldEZmbXF5TThkRHBRTml6Q2VmOWs4SEdiSEt4NmQxYm5DdlYxZGFxeW5EUGcjekRuYWV0RmZtcXlNOGREcFFOaXpDZWY5azhIR2JIS3g2ZDFibkN2VjFkYXF5bkRQZyIsInR5cCI6IkpXVCIsImFsZyI6IkVTMjU2In0.eyJzdWIiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKclpuVmpTa0V0VEhKck9VWjBPRmx5TFVkMlQzSmpia3N3YjNkc2RqUlhNblUwU3pJeFNHZHZTVlIzSWl3aWVTSTZJalozY0ZCUE1rOUNRVXBTU0ZFMVRXdEtXVlJaV0dsQlJFUXdOMU5OTlV0amVXcDNYMkUzVUUxWmVGa2lmUSIsIm5iZiI6MTY4MTkxMjg5NSwiaXNzIjoiZGlkOmtleTp6RG5hZXRGZm1xeU04ZERwUU5pekNlZjlrOEhHYkhLeDZkMWJuQ3ZWMWRhcXluRFBnIiwidmMiOnsibmFtZSI6IkpGRiB4IHZjLWVkdSBQbHVnRmVzdCAyIEludGVyb3BlcmFiaWxpdHkiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiT3BlbkJhZGdlQ3JlZGVudGlhbCJdLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vcHVybC5pbXNnbG9iYWwub3JnL3NwZWMvb2IvdjNwMC9jb250ZXh0Lmpzb24iXSwiaXNzdWVyIjp7InR5cGUiOiJQcm9maWxlIiwiaWQiOiJkaWQ6a2V5OnpEbmFldEZmbXF5TThkRHBRTml6Q2VmOWs4SEdiSEt4NmQxYm5DdlYxZGFxeW5EUGciLCJuYW1lIjoiVW5pdmVyc2FsIElzc3VlciIsInVybCI6Imh0dHBzOi8vaWRjNHZjLnVuaWlzc3Vlci5pby8iLCJpbWFnZSI6Imh0dHBzOi8vdW5paXNzdWVyLmlvL2ltYWdlcy9sb2dvLmpwZyJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJhY2hpZXZlbWVudCI6eyJpbWFnZSI6eyJpZCI6Imh0dHBzOi8vdzNjLWNjZy5naXRodWIuaW8vdmMtZWQvcGx1Z2Zlc3QtMi0yMDIyL2ltYWdlcy9KRkYtVkMtRURVLVBMVUdGRVNUMi1iYWRnZS1pbWFnZS5wbmciLCJ0eXBlIjoiSW1hZ2UifSwiY3JpdGVyaWEiOnsibmFycmF0aXZlIjoiVGhlIGZpcnN0IGNvaG9ydCBvZiB0aGUgSkZGIFBsdWdmZXN0IDIgaW4gT2N0L05vdiBvZiAyMDIyIGNvbGxhYm9yYXRlZCB0byBwdXNoIGludGVyb3BlcmFiaWxpdHkgb2YgVkNzIGluIGVkdWNhdGlvbiBmb3J3YXJkLiIsInR5cGUiOiJDcml0ZXJpYSJ9LCJuYW1lIjoiVW5pdmVyc2FsIElzc3VlciBpc3N1ZWQgT3BlbiBCYWRnZSB2MyBjcmVkZW50aWFsIiwiZGVzY3JpcHRpb24iOiJXYWxsZXQgY2FuIHN0b3JlIGFuZCBkaXNwbGF5IEJhZGdlIHYzIGNyZWRlbnRpYWwiLCJ0eXBlIjoiQWNoaWV2ZW1lbnQifSwidHlwZSI6IkFjaGlldmVtZW50U3ViamVjdCJ9fX0.MEQCIENGRXVx49P1gXnRUIzaLKUeZwA9fyQKIhShjeByQDkJAiA3W89GOGUG0K6ynx1A3kpCQr25mPQfGizzVnT08C2ltw',
488
+ },
489
+ },
490
+ },
491
+ mattr: {
492
+ metadata: {
493
+ issuer: 'https://launchpad.mattrlabs.com',
494
+ token_endpoint: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/token',
495
+ credential_endpoint: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/credential',
496
+ openid4vci_metadata: {
497
+ authorization_endpoint: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/authorize',
498
+ token_endpoint: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/token',
499
+ jwks_uri: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/jwks',
500
+ token_endpoint_auth_methods_supported: ['none', 'client_secret_basic', 'client_secret_jwt', 'client_secret_post', 'private_key_jwt'],
501
+ code_challenge_methods_supported: ['S256'],
502
+ grant_types_supported: ['authorization_code', 'urn:ietf:params:oauth:grant-type:pre-authorized_code'],
503
+ response_modes_supported: ['form_post', 'fragment', 'query'],
504
+ response_types_supported: ['code id_token', 'code', 'id_token', 'none'],
505
+ scopes_supported: ['PermanentResidentCard', 'AcademicAward', 'LearnerProfile', 'OpenBadgeCredential'],
506
+ token_endpoint_auth_signing_alg_values_supported: ['HS256', 'RS256', 'PS256', 'ES256', 'EdDSA'],
507
+ credential_endpoint: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/credential',
508
+ credentials_supported: {
509
+ PermanentResidentCard: {
510
+ formats: {
511
+ ldp_vc: {
512
+ name: 'Permanent Resident Card',
513
+ description: 'Government of Kakapo PRC.',
514
+ types: ['PermanentResidentCard'],
515
+ binding_methods_supported: ['did'],
516
+ cryptographic_suites_supported: ['Ed25519Signature2018'],
517
+ } as CredentialSupportedBrief,
518
+ },
519
+ },
520
+ AcademicAward: {
521
+ formats: {
522
+ ldp_vc: {
523
+ name: 'Academic Award',
524
+ description: 'Microcredential from the MyCreds Network.',
525
+ types: ['AcademicAward'],
526
+ binding_methods_supported: ['did'],
527
+ cryptographic_suites_supported: ['Ed25519Signature2018'],
528
+ } as CredentialSupportedBrief,
529
+ },
530
+ },
531
+ LearnerProfile: {
532
+ formats: {
533
+ ldp_vc: {
534
+ name: 'Digitary Learner Profile',
535
+ description: 'Example',
536
+ types: ['LearnerProfile'],
537
+ binding_methods_supported: ['did'],
538
+ cryptographic_suites_supported: ['Ed25519Signature2018'],
539
+ } as CredentialSupportedBrief,
540
+ },
541
+ },
542
+ OpenBadgeCredential: {
543
+ formats: {
544
+ ldp_vc: {
545
+ name: 'JFF x vc-edu PlugFest 2',
546
+ description: "MATTR's submission for JFF Plugfest 2",
547
+ types: ['OpenBadgeCredential'],
548
+ binding_methods_supported: ['did'],
549
+ cryptographic_suites_supported: ['Ed25519Signature2018'],
550
+ } as CredentialSupportedBrief,
551
+ },
552
+ },
553
+ },
554
+ },
555
+ },
556
+ auth: {
557
+ url: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/token',
558
+ method: 'POST',
559
+ request: {
560
+ client_id: 'sphereon:ssi-wallet',
561
+ grant_type: 'urn:ietf:params:oauth:grant-type:pre-authorized_code',
562
+ 'pre-authorized_code': 'kI_19c0PtisCJBG-ngd9mA47UCKx4uoKglUp0gqmxKt',
563
+ },
564
+ response: {
565
+ access_token: 'DYaZrXQ3lCgwdU7Te93N5q1OovKXnfPDWm9Rq7fC5Ws',
566
+ expires_in: 3600,
567
+ scope: 'OpenBadgeCredential',
568
+ token_type: 'Bearer',
569
+ },
570
+ },
571
+ credential: {
572
+ deeplink:
573
+ 'openid-initiate-issuance://?issuer=https://launchpad.mattrlabs.com&credential_type=OpenBadgeCredential&pre-authorized_code=g0UCOj6RAN5AwHU6gczm_GzB4_lH6GW39Z0Dl2DOOiO',
574
+ url: 'https://launchpad.vii.electron.mattrlabs.io/oidc/v1/auth/credential',
575
+ request: {
576
+ types: ['OpenBadgeCredential'],
577
+ format: 'jwt_vc_json-ld',
578
+ proof: {
579
+ proof_type: 'jwt',
580
+ jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3AxM3N6QUFMVFN0cDV1OGtMcnl5YW5vYWtrVWtFUGZXazdvOHY3dms0RW1KI3o2TWtwMTNzekFBTFRTdHA1dThrTHJ5eWFub2Fra1VrRVBmV2s3bzh2N3ZrNEVtSiJ9.eyJhdWQiOiJodHRwczovL2xhdW5jaHBhZC5tYXR0cmxhYnMuY29tIiwiaWF0IjoxNjgxOTE0NDgyLjUxOSwiZXhwIjoxNjgxOTE1MTQyLjUxOSwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6ImI5NDY1ZGE5LTY4OGYtNDdjNi04MjUwNDA0ZGNiOWI5Y2E5In0.uQ8ewOfIjy_1p_Gk6PjeEWccBJnjOca1pwbTWiCAFMQX9wlIsfeUdGtXUoHjH5_PQtpwytodx7WU456_CT9iBQ',
581
+ },
582
+ },
583
+ response: {
584
+ format: 'w3cvc-jsonld',
585
+ credential: {
586
+ type: ['VerifiableCredential', 'VerifiableCredentialExtension', 'OpenBadgeCredential'],
587
+ issuer: {
588
+ id: 'did:web:launchpad.vii.electron.mattrlabs.io',
589
+ name: 'Jobs for the Future (JFF)',
590
+ iconUrl: 'https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png',
591
+ image: 'https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png',
592
+ },
593
+ name: 'JFF x vc-edu PlugFest 2',
594
+ description: "MATTR's submission for JFF Plugfest 2",
595
+ credentialBranding: {
596
+ backgroundColor: '#464c49',
597
+ },
598
+ issuanceDate: '2023-04-19T14:29:00.232Z',
599
+ credentialSubject: {
600
+ id: 'did:key:z6Mkp13szAALTStp5u8kLryyanoakkUkEPfWk7o8v7vk4EmJ',
601
+ type: ['AchievementSubject'],
602
+ achievement: {
603
+ id: 'urn:uuid:bd6d9316-f7ae-4073-a1e5-2f7f5bd22922',
604
+ name: 'JFF x vc-edu PlugFest 2 Interoperability',
605
+ type: ['Achievement'],
606
+ image: {
607
+ id: 'https://w3c-ccg.github.io/vc-ed/plugfest-2-2022/images/JFF-VC-EDU-PLUGFEST2-badge-image.png',
608
+ type: 'Image',
609
+ },
610
+ criteria: {
611
+ type: 'Criteria',
612
+ narrative:
613
+ 'Solutions providers earned this badge by demonstrating interoperability between multiple providers based on the OBv3 candidate final standard, with some additional required fields. Credential issuers earning this badge successfully issued a credential into at least two wallets. Wallet implementers earning this badge successfully displayed credentials issued by at least two different credential issuers.',
614
+ },
615
+ description:
616
+ 'This credential solutionsupports the use of OBv3 and w3c Verifiable Credentials and is interoperable with at least two other solutions. This was demonstrated successfully during JFF x vc-edu PlugFest 2.',
617
+ },
618
+ },
619
+ '@context': [
620
+ 'https://www.w3.org/2018/credentials/v1',
621
+ {
622
+ '@vocab': 'https://w3id.org/security/undefinedTerm#',
623
+ },
624
+ 'https://mattr.global/contexts/vc-extensions/v1',
625
+ 'https://purl.imsglobal.org/spec/ob/v3p0/context.json',
626
+ 'https://w3id.org/vc-revocation-list-2020/v1',
627
+ ],
628
+ credentialStatus: {
629
+ id: 'https://launchpad.vii.electron.mattrlabs.io/core/v1/revocation-lists/25ce0f22-975a-43f8-8936-b93983b3e8f0#39',
630
+ type: 'RevocationList2020Status',
631
+ revocationListIndex: '39',
632
+ revocationListCredential: 'https://launchpad.vii.electron.mattrlabs.io/core/v1/revocation-lists/25ce0f22-975a-43f8-8936-b93983b3e8f0',
633
+ } as ICredentialStatus,
634
+ proof: {
635
+ type: 'Ed25519Signature2018',
636
+ created: '2023-04-19T14:29:01Z',
637
+ jws: 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..hz5x6dCdV4C0YmpEjJx8XzpwJdD78CnEkuhx5AxfNTZavAL3HnW1m4s8nQXgejYu_a6m79Fbbakm6PZ1yEd8CA',
638
+ proofPurpose: 'assertionMethod',
639
+ verificationMethod: 'did:web:launchpad.vii.electron.mattrlabs.io#6BhFMCGTJg',
640
+ },
641
+ },
642
+ },
643
+ },
644
+ },
645
+ diwala: {
646
+ metadata: {
647
+ issuer: 'https://oidc4vc.diwala.io',
648
+ token_endpoint: 'https://oidc4vc.diwala.io/token',
649
+ credential_endpoint: 'https://oidc4vc.diwala.io/credential',
650
+ openid4vci_metadata: {
651
+ issuer: 'https://oidc4vc.diwala.io',
652
+ credential_endpoint: 'https://oidc4vc.diwala.io/credential',
653
+ token_endpoint: 'https://oidc4vc.diwala.io/token',
654
+ jwks_uri: 'https://oidc4vc.diwala.io/jwks',
655
+ grant_types_supported: ['urn:ietf:params:oauth:grant-type:pre-authorized_code'],
656
+ credentials_supported: {
657
+ OpenBadgeCredential: {
658
+ formats: {
659
+ ldp_vc: {
660
+ types: ['VerifiableCredential', 'OpenBadgeCredential'],
661
+ cryptographic_suites_supported: ['Ed25519Signature2018'],
662
+ cryptographic_binding_methods_supported: ['did'],
663
+ },
664
+ },
665
+ },
666
+ },
667
+ },
668
+ },
669
+ auth: {
670
+ url: 'https://oidc4vc.diwala.io/token',
671
+ method: 'POST',
672
+ request: {
673
+ client_id: 'sphereon:ssi-wallet',
674
+ grant_type: 'urn:ietf:params:oauth:grant-type:pre-authorized_code',
675
+ 'pre-authorized_code':
676
+ 'eyJhbGciOiJIUzI1NiJ9.eyJjcmVkZW50aWFsX3R5cGUiOiJPcGVuQmFkZ2VDcmVkZW50aWFsIiwiZXhwIjoxNjgxOTE1NzI5fQ.JmhU1jhMfw3f_DaIqnxurPyIW1makcwUs49Fm253z5Q',
677
+ },
678
+ response: {
679
+ access_token:
680
+ 'eyJhbGciOiJIUzI1NiJ9.eyJub25jZSI6ImJNV1JnODlRTjljeVkwbTBHWW9FaWQ1YVEwcGQzUlNCM2FFUGJnZWciLCJtc0lhdCI6MTY4MTkxNjk1MjEzOSwiaWF0IjoxNjgxOTE2OTUyLCJpc3MiOiJkaXdhbGEuaW8iLCJhdWQiOiJodHRwczovL29pZGM0dmMuZGl3YWxhLmlvIiwiZXhwIjoxNzEzNDcyNzUyfQ.ERukn43tgQ-elNSZAIHo7oXLnalzHDqVh7HcDQSy6sY',
681
+ token_type: 'bearer',
682
+ expires_in: 31555800,
683
+ },
684
+ },
685
+ credential: {
686
+ deeplink:
687
+ 'openid-initiate-issuance://?issuer=https://oidc4vc.diwala.io&credential_type=OpenBadgeCredential&pre-authorized_code=eyJhbGciOiJIUzI1NiJ9.eyJjcmVkZW50aWFsX3R5cGUiOiJPcGVuQmFkZ2VDcmVkZW50aWFsIiwiZXhwIjoxNjgxOTg0NDY3fQ.fEAHKz2nuWfiYHw406iNxr-81pWkNkbi31bWsYSf6Ng',
688
+ url: 'https://oidc4vc.diwala.io/credential',
689
+ request: {
690
+ types: ['OpenBadgeCredential'],
691
+ format: 'jwt_vc_json-ld',
692
+ proof: {
693
+ proof_type: 'jwt',
694
+ jwt: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3AxM3N6QUFMVFN0cDV1OGtMcnl5YW5vYWtrVWtFUGZXazdvOHY3dms0RW1KI3o2TWtwMTNzekFBTFRTdHA1dThrTHJ5eWFub2Fra1VrRVBmV2s3bzh2N3ZrNEVtSiJ9.eyJhdWQiOiJodHRwczovL29pZGM0dmMuZGl3YWxhLmlvIiwiaWF0IjoxNjgxOTE1MDk1LjIwMiwiZXhwIjoxNjgxOTE1NzU1LjIwMiwiaXNzIjoic3BoZXJlb246c3NpLXdhbGxldCIsImp0aSI6IjYxN2MwM2EzLTM3MTUtNGJlMy1hYjkxNzM4MTlmYzYxNTYzIn0.KA-cHjecaYp9FSaWHkz5cqtNyhBIVT_0I7cJnpHn03T4UWFvdhjhn8Hpe-BU247enFyWOWJ6v3NQZyZgle7xBA',
695
+ },
696
+ },
697
+ response: {
698
+ credential: {
699
+ '@context': ['https://www.w3.org/2018/credentials/v1', 'https://purl.imsglobal.org/spec/ob/v3p0/context.json'],
700
+ id: 'urn:uuid:38beb3c1-611e-42b4-99b8-cf3e8b0fd9ae',
701
+ type: ['VerifiableCredential', 'OpenBadgeCredential'],
702
+ name: 'JFF x vc-edu PlugFest 2 Interoperability',
703
+ issuer: {
704
+ type: ['Profile'],
705
+ id: 'did:key:z6MkrzXCdarP1kaZcJb3pmNi295wfxerDrmTqPv5c6MkP2r9',
706
+ name: 'Jobs for the Future (JFF)',
707
+ url: 'https://www.jff.org/',
708
+ image: {
709
+ id: 'https://w3c-ccg.github.io/vc-ed/plugfest-1-2022/images/JFF_LogoLockup.png',
710
+ type: 'Image',
711
+ },
712
+ },
713
+ issuanceDate: '2023-04-19T14:39:13Z',
714
+ credentialSubject: {
715
+ type: ['AchievementSubject'],
716
+ id: 'did:key:z6Mkp13szAALTStp5u8kLryyanoakkUkEPfWk7o8v7vk4EmJ',
717
+ achievement: {
718
+ id: 'urn:uuid:7e202d65-4286-4e7b-aa34-e018f05a5341',
719
+ type: ['Achievement'],
720
+ name: 'Diwala issued JFF x vc-edu PlugFest 2 Interoperability',
721
+ description:
722
+ 'This credential solution supports the use of OBv3 and w3c Verifiable Credentials and is interoperable with at least two other solutions. This was demonstrated successfully during JFF x vc-edu PlugFest 2.',
723
+ criteria: {
724
+ narrative:
725
+ 'Solutions providers earned this badge by demonstrating interoperability between multiple providers based on the OBv3 candidate final standard, with some additional required fields. Credential issuers earning this badge successfully issued a credential into at least two wallets. Wallet implementers earning this badge successfully displayed credentials issued by at least two different credential issuers.',
726
+ },
727
+ image: {
728
+ id: 'https://w3c-ccg.github.io/vc-ed/plugfest-2-2022/images/JFF-VC-EDU-PLUGFEST2-badge-image.png',
729
+ type: 'Image',
730
+ },
731
+ },
732
+ },
733
+ proof: {
734
+ type: 'Ed25519Signature2018',
735
+ created: '2023-04-19T14:39:13Z',
736
+ verificationMethod: 'did:key:z6MkrzXCdarP1kaZcJb3pmNi295wfxerDrmTqPv5c6MkP2r9#z6MkrzXCdarP1kaZcJb3pmNi295wfxerDrmTqPv5c6MkP2r9',
737
+ proofPurpose: 'assertionMethod',
738
+ jws: 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..QDxjecY7YazXD6z3lsWeQ6DTGDw4KDWphzKFmkOo8DCr4ctGH7wB9ZW2EAz4qRv7s0g0O1-fXGIbAjPXfETKBw',
739
+ },
740
+ },
741
+ },
742
+ },
743
+ },
744
+ };