@credo-ts/openid4vc 0.6.0-pr-2134-20241217213340 → 0.6.0-pr-2195-20250217170804
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/build/openid4vc-holder/OpenId4VcHolderApi.d.ts +61 -11
- package/build/openid4vc-holder/OpenId4VcHolderApi.js +17 -19
- package/build/openid4vc-holder/OpenId4VcHolderApi.js.map +1 -1
- package/build/openid4vc-holder/OpenId4VcHolderModule.js +1 -1
- package/build/openid4vc-holder/OpenId4VcHolderModule.js.map +1 -1
- package/build/openid4vc-holder/OpenId4VciHolderService.d.ts +7 -8
- package/build/openid4vc-holder/OpenId4VciHolderService.js +60 -45
- package/build/openid4vc-holder/OpenId4VciHolderService.js.map +1 -1
- package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.d.ts +3 -3
- package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.js +1 -1
- package/build/openid4vc-holder/OpenId4VciHolderServiceOptions.js.map +1 -1
- package/build/openid4vc-holder/OpenId4vcSiopHolderService.d.ts +59 -13
- package/build/openid4vc-holder/OpenId4vcSiopHolderService.js +232 -172
- package/build/openid4vc-holder/OpenId4vcSiopHolderService.js.map +1 -1
- package/build/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.d.ts +18 -1
- package/build/openid4vc-issuer/OpenId4VcIssuerApi.d.ts +196 -46
- package/build/openid4vc-issuer/OpenId4VcIssuerApi.js +8 -19
- package/build/openid4vc-issuer/OpenId4VcIssuerApi.js.map +1 -1
- package/build/openid4vc-issuer/OpenId4VcIssuerModule.js +3 -3
- package/build/openid4vc-issuer/OpenId4VcIssuerModule.js.map +1 -1
- package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.d.ts +13 -13
- package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.js +19 -40
- package/build/openid4vc-issuer/OpenId4VcIssuerModuleConfig.js.map +1 -1
- package/build/openid4vc-issuer/OpenId4VcIssuerService.d.ts +198 -48
- package/build/openid4vc-issuer/OpenId4VcIssuerService.js +45 -37
- package/build/openid4vc-issuer/OpenId4VcIssuerService.js.map +1 -1
- package/build/openid4vc-issuer/OpenId4VcIssuerServiceOptions.d.ts +8 -3
- package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.d.ts +1 -1
- package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.js +26 -12
- package/build/openid4vc-issuer/repository/OpenId4VcIssuanceSessionRecord.js.map +1 -1
- package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.js +19 -22
- package/build/openid4vc-issuer/repository/OpenId4VcIssuerRecord.js.map +1 -1
- package/build/openid4vc-issuer/router/accessTokenEndpoint.js +11 -9
- package/build/openid4vc-issuer/router/accessTokenEndpoint.js.map +1 -1
- package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.js +17 -6
- package/build/openid4vc-issuer/router/authorizationChallengeEndpoint.js.map +1 -1
- package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.js +1 -1
- package/build/openid4vc-issuer/router/authorizationServerMetadataEndpoint.js.map +1 -1
- package/build/openid4vc-issuer/router/credentialEndpoint.js +11 -9
- package/build/openid4vc-issuer/router/credentialEndpoint.js.map +1 -1
- package/build/openid4vc-issuer/router/issuerMetadataEndpoint.js +7 -3
- package/build/openid4vc-issuer/router/issuerMetadataEndpoint.js.map +1 -1
- package/build/openid4vc-issuer/util/txCode.js +2 -3
- package/build/openid4vc-issuer/util/txCode.js.map +1 -1
- package/build/openid4vc-verifier/OpenId4VcSiopVerifierService.d.ts +21 -7
- package/build/openid4vc-verifier/OpenId4VcSiopVerifierService.js +499 -263
- package/build/openid4vc-verifier/OpenId4VcSiopVerifierService.js.map +1 -1
- package/build/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.d.ts +23 -3
- package/build/openid4vc-verifier/OpenId4VcVerifierApi.d.ts +3 -3
- package/build/openid4vc-verifier/OpenId4VcVerifierApi.js +11 -18
- package/build/openid4vc-verifier/OpenId4VcVerifierApi.js.map +1 -1
- package/build/openid4vc-verifier/OpenId4VcVerifierModule.js +3 -3
- package/build/openid4vc-verifier/OpenId4VcVerifierModule.js.map +1 -1
- package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.js +11 -8
- package/build/openid4vc-verifier/OpenId4VcVerifierModuleConfig.js.map +1 -1
- package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartyEventEmitter.d.ts +23 -4
- package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartyEventEmitter.js +25 -29
- package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartyEventEmitter.js.map +1 -1
- package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartySessionManager.js +4 -6
- package/build/openid4vc-verifier/repository/OpenId4VcRelyingPartySessionManager.js.map +1 -1
- package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.js +11 -6
- package/build/openid4vc-verifier/repository/OpenId4VcVerificationSessionRecord.js.map +1 -1
- package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.js +7 -5
- package/build/openid4vc-verifier/repository/OpenId4VcVerifierRecord.js.map +1 -1
- package/build/openid4vc-verifier/router/authorizationEndpoint.js +5 -104
- package/build/openid4vc-verifier/router/authorizationEndpoint.js.map +1 -1
- package/build/shared/callbacks.d.ts +16 -5
- package/build/shared/callbacks.js +120 -24
- package/build/shared/callbacks.js.map +1 -1
- package/build/shared/issuerMetadataUtils.d.ts +102 -144
- package/build/shared/models/index.d.ts +10 -8
- package/build/shared/models/index.js +5 -5
- package/build/shared/models/index.js.map +1 -1
- package/build/shared/router/context.d.ts +2 -2
- package/build/shared/router/context.js +5 -5
- package/build/shared/router/context.js.map +1 -1
- package/build/shared/router/tenants.js +1 -2
- package/build/shared/router/tenants.js.map +1 -1
- package/build/shared/utils.d.ts +6 -6
- package/build/shared/utils.js +22 -61
- package/build/shared/utils.js.map +1 -1
- package/package.json +7 -6
- package/build/shared/transform.d.ts +0 -5
- package/build/shared/transform.js +0 -73
- package/build/shared/transform.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenId4VcIssuerModuleConfig.js","sourceRoot":"","sources":["../../src/openid4vc-issuer/OpenId4VcIssuerModuleConfig.ts"],"names":[],"mappings":";;;AAMA,6CAAgD;AAEhD,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,WAAW;AACrD,MAAM,qCAAqC,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,WAAW;AAChE,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,YAAY;AACpD,MAAM,
|
|
1
|
+
{"version":3,"file":"OpenId4VcIssuerModuleConfig.js","sourceRoot":"","sources":["../../src/openid4vc-issuer/OpenId4VcIssuerModuleConfig.ts"],"names":[],"mappings":";;;AAMA,6CAAgD;AAEhD,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,WAAW;AACrD,MAAM,qCAAqC,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,WAAW;AAChE,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,YAAY;AACpD,MAAM,4CAA4C,GAAG,CAAC,GAAG,EAAE,CAAA,CAAC,YAAY;AAuHxE,MAAa,2BAA2B;IAatC,YAAmB,OAA2C;QAC5D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,qDAAqD;YACxD,OAAO,CAAC,qDAAqD,CAAA;QAE/D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAA,sBAAa,GAAE,CAAC,MAAM,EAAE,CAAA;IAC1D,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,IAAW,mCAAmC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAA;IACzD,CAAC;IAED;;;;OAIG;IACH,IAAW,sBAAsB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,0BAA0B,CAAA;IAC1E,CAAC;IAED;;;;;;OAMG;IACH,IAAW,0CAA0C;QACnD,OAAO,IAAI,CAAC,OAAO,CAAC,0CAA0C,IAAI,4CAA4C,CAAA;IAChH,CAAC;IAED;;;;OAIG;IACH,IAAW,iCAAiC;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,iCAAiC,IAAI,qCAAqC,CAAA;IAChG,CAAC;IAED;;;;OAIG;IACH,IAAW,2BAA2B;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,IAAI,wBAAwB,CAAA;IAC7E,CAAC;IAED;;;;;;OAMG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,KAAK,CAAA;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACH,IAAW,4BAA4B;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,4BAA4B,IAAI,KAAK,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,QAAQ,CAAA;IAClD,CAAC;IAED;;OAEG;IACH,IAAW,kCAAkC;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,sBAAsB,IAAI,YAAY,CAAA;IACvE,CAAC;IAED;;OAEG;IACH,IAAW,2BAA2B;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,IAAI,SAAS,CAAA;IAC7D,CAAC;IAED;;OAEG;IACH,IAAW,sBAAsB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,IAAI,aAAa,CAAA;IAC5D,CAAC;IAED;;OAEG;IACH,IAAW,uBAAuB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,IAAI,QAAQ,CAAA;IACxD,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,IAAI,OAAO,CAAA;IAChD,CAAC;CACF;AAxID,kEAwIC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { OpenId4VciCreateCredentialResponseOptions, OpenId4VciCreateCredentialOfferOptions, OpenId4VciCreateIssuerOptions, OpenId4VciCreateStatelessCredentialOfferOptions } from './OpenId4VcIssuerServiceOptions';
|
|
2
|
-
import type { OpenId4VciMetadata } from '../shared';
|
|
3
1
|
import type { AgentContext, Query, QueryOptions } from '@credo-ts/core';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import type { OpenId4VciMetadata } from '../shared';
|
|
3
|
+
import type { OpenId4VciCreateCredentialOfferOptions, OpenId4VciCreateCredentialResponseOptions, OpenId4VciCreateIssuerOptions, OpenId4VciCreateStatelessCredentialOfferOptions } from './OpenId4VcIssuerServiceOptions';
|
|
4
|
+
import { Oauth2AuthorizationServer, Oauth2Client, Oauth2ResourceServer } from '@openid4vc/oauth2';
|
|
5
|
+
import { Oid4vciIssuer } from '@openid4vc/oid4vci';
|
|
6
6
|
import { W3cCredentialService } from '@credo-ts/core';
|
|
7
7
|
import { OpenId4VcIssuanceSessionState } from './OpenId4VcIssuanceSessionState';
|
|
8
8
|
import { OpenId4VcIssuerModuleConfig } from './OpenId4VcIssuerModuleConfig';
|
|
9
|
-
import {
|
|
9
|
+
import { OpenId4VcIssuanceSessionRecord, OpenId4VcIssuanceSessionRepository, OpenId4VcIssuerRecord, OpenId4VcIssuerRepository } from './repository';
|
|
10
10
|
/**
|
|
11
11
|
* @internal
|
|
12
12
|
*/
|
|
@@ -20,35 +20,191 @@ export declare class OpenId4VcIssuerService {
|
|
|
20
20
|
issuer: OpenId4VcIssuerRecord;
|
|
21
21
|
}): Promise<{
|
|
22
22
|
credentialOffer: string;
|
|
23
|
-
credentialOfferObject: {
|
|
24
|
-
credential_issuer: string
|
|
25
|
-
credential_configuration_ids:
|
|
26
|
-
grants
|
|
27
|
-
authorization_code
|
|
28
|
-
issuer_state
|
|
29
|
-
authorization_server
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
authorization_server
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
23
|
+
credentialOfferObject: import("zod").objectInputType<{
|
|
24
|
+
credential_issuer: import("zod").ZodEffects<import("zod").ZodString, string, string>;
|
|
25
|
+
credential_configuration_ids: import("zod").ZodArray<import("zod").ZodString, "many">;
|
|
26
|
+
grants: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
27
|
+
authorization_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
28
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
29
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
30
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
31
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
32
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
33
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
34
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
35
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
36
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
37
|
+
"urn:ietf:params:oauth:grant-type:pre-authorized_code": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
38
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
39
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
40
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
41
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
42
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
43
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
44
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
45
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
46
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
47
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
48
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
49
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
50
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
51
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
52
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
53
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
54
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
55
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
56
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
57
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
58
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
59
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
60
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
61
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
62
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
63
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
64
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
65
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
66
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
67
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
68
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
69
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
70
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
71
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
72
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
73
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
74
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
75
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
76
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
77
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
78
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
79
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
80
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
81
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
82
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
83
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
84
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
85
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
86
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
87
|
+
authorization_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
88
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
89
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
90
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
91
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
92
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
93
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
94
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
95
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
96
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
97
|
+
"urn:ietf:params:oauth:grant-type:pre-authorized_code": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
98
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
99
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
100
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
101
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
102
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
103
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
104
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
105
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
106
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
107
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
108
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
109
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
110
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
111
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
112
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
113
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
114
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
115
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
116
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
117
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
118
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
119
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
120
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
121
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
122
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
123
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
124
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
125
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
126
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
127
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
128
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
129
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
130
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
131
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
132
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
133
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
134
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
135
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
136
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
137
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
138
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
139
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
140
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
141
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
142
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
143
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
144
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
145
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
146
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
147
|
+
authorization_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
148
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
149
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
150
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
151
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
152
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
153
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
154
|
+
issuer_state: import("zod").ZodOptional<import("zod").ZodString>;
|
|
155
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
156
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
157
|
+
"urn:ietf:params:oauth:grant-type:pre-authorized_code": import("zod").ZodOptional<import("zod").ZodObject<{
|
|
158
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
159
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
160
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
161
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
162
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
163
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
164
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
165
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
166
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
167
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
168
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
169
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
170
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
171
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
172
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
173
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
174
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
175
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
176
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
177
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
178
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
179
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
180
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
181
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
182
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
183
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
184
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
185
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
186
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
187
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
188
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
189
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
190
|
+
"pre-authorized_code": import("zod").ZodString;
|
|
191
|
+
tx_code: import("zod").ZodOptional<import("zod").ZodObject<{
|
|
192
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
193
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
194
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
195
|
+
}, "passthrough", import("zod").ZodTypeAny, import("zod").objectOutputType<{
|
|
196
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
197
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
198
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
199
|
+
}, import("zod").ZodTypeAny, "passthrough">, import("zod").objectInputType<{
|
|
200
|
+
input_mode: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodLiteral<"numeric">, import("zod").ZodLiteral<"text">]>>;
|
|
201
|
+
length: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
202
|
+
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
203
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
204
|
+
authorization_server: import("zod").ZodOptional<import("zod").ZodEffects<import("zod").ZodString, string, string>>;
|
|
205
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
206
|
+
}, import("zod").ZodTypeAny, "passthrough">>>;
|
|
207
|
+
}, import("zod").ZodTypeAny, "passthrough">;
|
|
52
208
|
}>;
|
|
53
209
|
createCredentialOffer(agentContext: AgentContext, options: OpenId4VciCreateCredentialOfferOptions & {
|
|
54
210
|
issuer: OpenId4VcIssuerRecord;
|
|
@@ -59,20 +215,14 @@ export declare class OpenId4VcIssuerService {
|
|
|
59
215
|
createCredentialResponse(agentContext: AgentContext, options: OpenId4VciCreateCredentialResponseOptions & {
|
|
60
216
|
issuanceSession: OpenId4VcIssuanceSessionRecord;
|
|
61
217
|
}): Promise<{
|
|
62
|
-
credentialResponse: {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
} | undefined;
|
|
71
|
-
transaction_id?: string | undefined;
|
|
72
|
-
notification_id?: string | undefined;
|
|
73
|
-
} & {
|
|
74
|
-
[key: string]: unknown;
|
|
75
|
-
};
|
|
218
|
+
credentialResponse: import("zod").objectOutputType<{
|
|
219
|
+
credential: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>]>>;
|
|
220
|
+
credentials: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnion<[import("zod").ZodString, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>]>, "many">>;
|
|
221
|
+
transaction_id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
222
|
+
c_nonce: import("zod").ZodOptional<import("zod").ZodString>;
|
|
223
|
+
c_nonce_expires_in: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
224
|
+
notification_id: import("zod").ZodOptional<import("zod").ZodString>;
|
|
225
|
+
}, import("zod").ZodTypeAny, "passthrough">;
|
|
76
226
|
issuanceSession: OpenId4VcIssuanceSessionRecord;
|
|
77
227
|
}>;
|
|
78
228
|
findIssuanceSessionsByQuery(agentContext: AgentContext, query: Query<OpenId4VcIssuanceSessionRecord>, queryOptions?: QueryOptions): Promise<OpenId4VcIssuanceSessionRecord[]>;
|
|
@@ -10,8 +10,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.OpenId4VcIssuerService = void 0;
|
|
13
|
-
const oauth2_1 = require("@
|
|
14
|
-
const oid4vci_1 = require("@
|
|
13
|
+
const oauth2_1 = require("@openid4vc/oauth2");
|
|
14
|
+
const oid4vci_1 = require("@openid4vc/oid4vci");
|
|
15
15
|
const core_1 = require("@credo-ts/core");
|
|
16
16
|
const openid4vc_verifier_1 = require("../openid4vc-verifier");
|
|
17
17
|
const shared_1 = require("../shared");
|
|
@@ -43,7 +43,7 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
43
43
|
throw new core_1.CredoError('All offered credentials must have unique ids.');
|
|
44
44
|
}
|
|
45
45
|
// Check if all the offered credential configuration ids have a scope value. If not, it won't be possible to actually request
|
|
46
|
-
// issuance of the
|
|
46
|
+
// issuance of the credential later on
|
|
47
47
|
(0, oid4vci_1.extractScopesForCredentialConfigurationIds)({
|
|
48
48
|
credentialConfigurationIds: options.offeredCredentials,
|
|
49
49
|
issuerMetadata,
|
|
@@ -68,7 +68,6 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
70
|
async createCredentialOffer(agentContext, options) {
|
|
71
|
-
var _a, _b, _c, _d, _e, _f;
|
|
72
71
|
const { preAuthorizedCodeFlowConfig, authorizationCodeFlowConfig, issuer, offeredCredentials, version = 'v1.draft11-13', } = options;
|
|
73
72
|
if (!preAuthorizedCodeFlowConfig && !authorizationCodeFlowConfig) {
|
|
74
73
|
throw new core_1.CredoError('Authorization Config or Pre-Authorized Config must be provided.');
|
|
@@ -89,7 +88,7 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
89
88
|
core_1.utils.uuid(),
|
|
90
89
|
]);
|
|
91
90
|
// Check if all the offered credential configuration ids have a scope value. If not, it won't be possible to actually request
|
|
92
|
-
// issuance of the
|
|
91
|
+
// issuance of the credential later on. For pre-auth it's not needed to add a scope.
|
|
93
92
|
if (options.authorizationCodeFlowConfig) {
|
|
94
93
|
(0, oid4vci_1.extractScopesForCredentialConfigurationIds)({
|
|
95
94
|
credentialConfigurationIds: options.offeredCredentials,
|
|
@@ -107,7 +106,10 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
107
106
|
grants,
|
|
108
107
|
credentialOfferUri: hostedCredentialOfferUri,
|
|
109
108
|
credentialOfferScheme: options.baseUri,
|
|
110
|
-
issuerMetadata:
|
|
109
|
+
issuerMetadata: {
|
|
110
|
+
originalDraftVersion: version === 'v1.draft11-13' ? oid4vci_1.Oid4vciDraftVersion.Draft11 : oid4vci_1.Oid4vciDraftVersion.Draft14,
|
|
111
|
+
...issuerMetadata,
|
|
112
|
+
},
|
|
111
113
|
});
|
|
112
114
|
const issuanceSessionRepository = this.openId4VcIssuanceSessionRepository;
|
|
113
115
|
const issuanceSession = new repository_1.OpenId4VcIssuanceSessionRecord({
|
|
@@ -115,19 +117,19 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
115
117
|
credentialOfferUri: hostedCredentialOfferUri,
|
|
116
118
|
issuerId: issuer.issuerId,
|
|
117
119
|
state: OpenId4VcIssuanceSessionState_1.OpenId4VcIssuanceSessionState.OfferCreated,
|
|
118
|
-
authorization:
|
|
120
|
+
authorization: credentialOfferObject.grants?.authorization_code?.issuer_state
|
|
119
121
|
? {
|
|
120
|
-
issuerState:
|
|
122
|
+
issuerState: credentialOfferObject.grants?.authorization_code?.issuer_state,
|
|
121
123
|
}
|
|
122
124
|
: undefined,
|
|
123
|
-
presentation:
|
|
125
|
+
presentation: authorizationCodeFlowConfig?.requirePresentationDuringIssuance
|
|
124
126
|
? {
|
|
125
127
|
required: true,
|
|
126
128
|
}
|
|
127
129
|
: undefined,
|
|
128
130
|
// TODO: how to mix pre-auth and auth? Need to do state checks
|
|
129
|
-
preAuthorizedCode:
|
|
130
|
-
userPin:
|
|
131
|
+
preAuthorizedCode: credentialOfferObject.grants?.[oauth2_1.preAuthorizedCodeGrantIdentifier]?.['pre-authorized_code'],
|
|
132
|
+
userPin: preAuthorizedCodeFlowConfig?.txCode
|
|
131
133
|
? (0, txCode_1.generateTxCode)(agentContext, preAuthorizedCodeFlowConfig.txCode)
|
|
132
134
|
: undefined,
|
|
133
135
|
issuanceMetadata: options.issuanceMetadata,
|
|
@@ -168,7 +170,7 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
168
170
|
error_description: `Unsupported credential format '${credentialRequest.format}'`,
|
|
169
171
|
});
|
|
170
172
|
}
|
|
171
|
-
if (!
|
|
173
|
+
if (!proofs?.jwt || proofs.jwt.length === 0) {
|
|
172
174
|
const { cNonce, cNonceExpiresInSeconds } = await this.createNonce(agentContext, issuer);
|
|
173
175
|
throw new oauth2_1.Oauth2ServerErrorResponseError({
|
|
174
176
|
error: oauth2_1.Oauth2ErrorCodes.InvalidProof,
|
|
@@ -269,15 +271,14 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
269
271
|
return this.openId4VcIssuerRepository.update(agentContext, issuer);
|
|
270
272
|
}
|
|
271
273
|
async createIssuer(agentContext, options) {
|
|
272
|
-
var _a, _b;
|
|
273
274
|
// TODO: ideally we can store additional data with a key, such as:
|
|
274
275
|
// - createdAt
|
|
275
276
|
// - purpose
|
|
276
277
|
const accessTokenSignerKey = await agentContext.wallet.createKey({
|
|
277
|
-
keyType:
|
|
278
|
+
keyType: options.accessTokenSignerKeyType ?? core_1.KeyType.Ed25519,
|
|
278
279
|
});
|
|
279
280
|
const openId4VcIssuer = new repository_1.OpenId4VcIssuerRecord({
|
|
280
|
-
issuerId:
|
|
281
|
+
issuerId: options.issuerId ?? core_1.utils.uuid(),
|
|
281
282
|
display: options.display,
|
|
282
283
|
dpopSigningAlgValuesSupported: options.dpopSigningAlgValuesSupported,
|
|
283
284
|
accessTokenPublicKeyFingerprint: accessTokenSignerKey.fingerprint,
|
|
@@ -290,9 +291,8 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
290
291
|
return openId4VcIssuer;
|
|
291
292
|
}
|
|
292
293
|
async rotateAccessTokenSigningKey(agentContext, issuer, options) {
|
|
293
|
-
var _a;
|
|
294
294
|
const accessTokenSignerKey = await agentContext.wallet.createKey({
|
|
295
|
-
keyType:
|
|
295
|
+
keyType: options?.accessTokenSignerKeyType ?? core_1.KeyType.Ed25519,
|
|
296
296
|
});
|
|
297
297
|
// TODO: ideally we can remove the previous key
|
|
298
298
|
issuer.accessTokenPublicKeyFingerprint = accessTokenSignerKey.fingerprint;
|
|
@@ -302,7 +302,6 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
302
302
|
* @param fetchExternalAuthorizationServerMetadata defaults to false
|
|
303
303
|
*/
|
|
304
304
|
async getIssuerMetadata(agentContext, issuerRecord, fetchExternalAuthorizationServerMetadata = false) {
|
|
305
|
-
var _a;
|
|
306
305
|
const config = agentContext.dependencyManager.resolve(OpenId4VcIssuerModuleConfig_1.OpenId4VcIssuerModuleConfig);
|
|
307
306
|
const issuerUrl = (0, core_1.joinUriParts)(config.baseUrl, [issuerRecord.issuerId]);
|
|
308
307
|
const oauth2Client = this.getOauth2Client(agentContext);
|
|
@@ -324,7 +323,7 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
324
323
|
const credentialIssuerMetadata = {
|
|
325
324
|
credential_issuer: issuerUrl,
|
|
326
325
|
credential_endpoint: (0, core_1.joinUriParts)(issuerUrl, [config.credentialEndpointPath]),
|
|
327
|
-
credential_configurations_supported:
|
|
326
|
+
credential_configurations_supported: issuerRecord.credentialConfigurationsSupported ?? {},
|
|
328
327
|
authorization_servers: authorizationServers,
|
|
329
328
|
display: issuerRecord.display,
|
|
330
329
|
nonce_endpoint: (0, core_1.joinUriParts)(issuerUrl, [config.nonceEndpointPath]),
|
|
@@ -406,22 +405,25 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
406
405
|
}
|
|
407
406
|
getIssuer(agentContext) {
|
|
408
407
|
return new oid4vci_1.Oid4vciIssuer({
|
|
409
|
-
callbacks: (0, callbacks_1.
|
|
408
|
+
callbacks: (0, callbacks_1.getOid4vcCallbacks)(agentContext),
|
|
410
409
|
});
|
|
411
410
|
}
|
|
412
411
|
getOauth2Client(agentContext) {
|
|
413
412
|
return new oauth2_1.Oauth2Client({
|
|
414
|
-
callbacks: (0, callbacks_1.
|
|
413
|
+
callbacks: (0, callbacks_1.getOid4vcCallbacks)(agentContext),
|
|
415
414
|
});
|
|
416
415
|
}
|
|
417
416
|
getOauth2AuthorizationServer(agentContext) {
|
|
418
417
|
return new oauth2_1.Oauth2AuthorizationServer({
|
|
419
|
-
callbacks: (0, callbacks_1.
|
|
418
|
+
callbacks: (0, callbacks_1.getOid4vcCallbacks)(agentContext),
|
|
420
419
|
});
|
|
421
420
|
}
|
|
422
421
|
getResourceServer(agentContext, issuerRecord) {
|
|
423
422
|
return new oauth2_1.Oauth2ResourceServer({
|
|
424
|
-
callbacks:
|
|
423
|
+
callbacks: {
|
|
424
|
+
...(0, callbacks_1.getOid4vcCallbacks)(agentContext),
|
|
425
|
+
clientAuthentication: (0, callbacks_1.dynamicOid4vciClientAuthentication)(agentContext, issuerRecord),
|
|
426
|
+
},
|
|
425
427
|
});
|
|
426
428
|
}
|
|
427
429
|
/**
|
|
@@ -446,7 +448,6 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
446
448
|
});
|
|
447
449
|
}
|
|
448
450
|
async getGrantsFromConfig(agentContext, config) {
|
|
449
|
-
var _a;
|
|
450
451
|
const { preAuthorizedCodeFlowConfig, authorizationCodeFlowConfig, issuerMetadata } = config;
|
|
451
452
|
// TOOD: export type
|
|
452
453
|
const grants = {};
|
|
@@ -454,7 +455,7 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
454
455
|
if (preAuthorizedCodeFlowConfig) {
|
|
455
456
|
const { txCode, authorizationServerUrl, preAuthorizedCode } = preAuthorizedCodeFlowConfig;
|
|
456
457
|
grants[oauth2_1.preAuthorizedCodeGrantIdentifier] = {
|
|
457
|
-
'pre-authorized_code': preAuthorizedCode
|
|
458
|
+
'pre-authorized_code': preAuthorizedCode ?? (await agentContext.wallet.generateNonce()),
|
|
458
459
|
tx_code: txCode,
|
|
459
460
|
authorization_server: config.issuerMetadata.credentialIssuer.authorization_servers
|
|
460
461
|
? authorizationServerUrl
|
|
@@ -475,7 +476,8 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
475
476
|
issuer_state:
|
|
476
477
|
// TODO: the issuer_state should not be guessable, so it's best if we generate it and now allow the user to provide it?
|
|
477
478
|
// but same is true for the pre-auth code and users of credo can also provide that value. We can't easily do unique constraint with askat
|
|
478
|
-
|
|
479
|
+
authorizationCodeFlowConfig.issuerState ??
|
|
480
|
+
core_1.TypedArrayEncoder.toBase64URL(agentContext.wallet.getRandomValues(32)),
|
|
479
481
|
authorization_server: config.issuerMetadata.credentialIssuer.authorization_servers
|
|
480
482
|
? authorizationServerUrl
|
|
481
483
|
: undefined,
|
|
@@ -509,7 +511,6 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
509
511
|
return credentialHolderBindings;
|
|
510
512
|
}
|
|
511
513
|
getCredentialConfigurationsForRequest(options) {
|
|
512
|
-
var _a, _b;
|
|
513
514
|
const { requestFormat, issuanceSession, issuerMetadata, authorization } = options;
|
|
514
515
|
// Check against all credential configurations
|
|
515
516
|
const configurationsMatchingRequest = (0, oid4vci_1.getCredentialConfigurationsMatchingRequestFormat)({
|
|
@@ -547,7 +548,7 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
547
548
|
}
|
|
548
549
|
// Limit to scopes from the token
|
|
549
550
|
// We only do this for auth flow, so it's not required to add a scope for every configuration.
|
|
550
|
-
const configurationsMatchingRequestOfferScope = (0, issuerMetadataUtils_1.getCredentialConfigurationsSupportedForScopes)(configurationsMatchingRequestAndOfferNotIssued,
|
|
551
|
+
const configurationsMatchingRequestOfferScope = (0, issuerMetadataUtils_1.getCredentialConfigurationsSupportedForScopes)(configurationsMatchingRequestAndOfferNotIssued, authorization.accessToken.payload.scope?.split(' ') ?? []);
|
|
551
552
|
if (Object.keys(configurationsMatchingRequestOfferScope).length === 0) {
|
|
552
553
|
throw new oauth2_1.Oauth2ServerErrorResponseError({
|
|
553
554
|
error: oauth2_1.Oauth2ErrorCodes.InsufficientScope,
|
|
@@ -562,7 +563,6 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
562
563
|
};
|
|
563
564
|
}
|
|
564
565
|
async getSignedCredentials(agentContext, options) {
|
|
565
|
-
var _a, _b;
|
|
566
566
|
const { issuanceSession, issuer, requestFormat, authorization } = options;
|
|
567
567
|
const issuerMetadata = await this.getIssuerMetadata(agentContext, issuer);
|
|
568
568
|
const { credentialConfigurations, credentialConfigurationIds } = this.getCredentialConfigurationsForRequest({
|
|
@@ -571,21 +571,29 @@ let OpenId4VcIssuerService = class OpenId4VcIssuerService {
|
|
|
571
571
|
requestFormat,
|
|
572
572
|
authorization,
|
|
573
573
|
});
|
|
574
|
-
const mapper =
|
|
574
|
+
const mapper = options.credentialRequestToCredentialMapper ?? this.openId4VcIssuerConfig.credentialRequestToCredentialMapper;
|
|
575
575
|
let verification = undefined;
|
|
576
576
|
// NOTE: this will throw an error if the verifier module is not registered and there is a
|
|
577
577
|
// verification session. But you can't get here without the verifier module anyway
|
|
578
|
-
if (
|
|
578
|
+
if (issuanceSession.presentation?.openId4VcVerificationSessionId) {
|
|
579
579
|
const verifierApi = agentContext.dependencyManager.resolve(openid4vc_verifier_1.OpenId4VcVerifierApi);
|
|
580
580
|
const session = await verifierApi.getVerificationSessionById(issuanceSession.presentation.openId4VcVerificationSessionId);
|
|
581
581
|
const response = await verifierApi.getVerifiedAuthorizationResponse(issuanceSession.presentation.openId4VcVerificationSessionId);
|
|
582
|
-
if (
|
|
583
|
-
|
|
582
|
+
if (response.presentationExchange) {
|
|
583
|
+
verification = {
|
|
584
|
+
session,
|
|
585
|
+
presentationExchange: response.presentationExchange,
|
|
586
|
+
};
|
|
587
|
+
}
|
|
588
|
+
else if (response.dcql) {
|
|
589
|
+
verification = {
|
|
590
|
+
session,
|
|
591
|
+
dcql: response.dcql,
|
|
592
|
+
};
|
|
593
|
+
}
|
|
594
|
+
else {
|
|
595
|
+
throw new core_1.CredoError(`Verified authorization response for verification session with id '${session.id}' does not have presenationExchange or dcql defined.`);
|
|
584
596
|
}
|
|
585
|
-
verification = {
|
|
586
|
-
session,
|
|
587
|
-
presentationExchange: response.presentationExchange,
|
|
588
|
-
};
|
|
589
597
|
}
|
|
590
598
|
const holderBindings = await this.getHolderBindingFromRequestProofs(agentContext, options.proofSigners);
|
|
591
599
|
const signOptions = await mapper({
|