@sphereon/oid4vci-client 0.10.4-unstable.26 → 0.10.4-unstable.28
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/README.md +19 -0
- package/dist/AccessTokenClient.d.ts +5 -5
- package/dist/AccessTokenClient.d.ts.map +1 -1
- package/dist/AccessTokenClient.js +34 -59
- package/dist/AccessTokenClient.js.map +1 -1
- package/dist/AuthorizationCodeClient.d.ts +5 -5
- package/dist/AuthorizationCodeClient.d.ts.map +1 -1
- package/dist/AuthorizationCodeClient.js +8 -19
- package/dist/AuthorizationCodeClient.js.map +1 -1
- package/dist/CredentialOfferClient.d.ts.map +1 -1
- package/dist/CredentialOfferClient.js +28 -16
- package/dist/CredentialOfferClient.js.map +1 -1
- package/dist/CredentialRequestClient.d.ts +15 -4
- package/dist/CredentialRequestClient.d.ts.map +1 -1
- package/dist/CredentialRequestClient.js +25 -29
- package/dist/CredentialRequestClient.js.map +1 -1
- package/dist/CredentialRequestClientBuilder.d.ts +5 -3
- package/dist/CredentialRequestClientBuilder.d.ts.map +1 -1
- package/dist/CredentialRequestClientBuilder.js +8 -4
- package/dist/CredentialRequestClientBuilder.js.map +1 -1
- package/dist/MetadataClient.d.ts +15 -5
- package/dist/MetadataClient.d.ts.map +1 -1
- package/dist/MetadataClient.js +32 -13
- package/dist/MetadataClient.js.map +1 -1
- package/dist/OpenID4VCIClient.d.ts +21 -8
- package/dist/OpenID4VCIClient.d.ts.map +1 -1
- package/dist/OpenID4VCIClient.js +101 -42
- package/dist/OpenID4VCIClient.js.map +1 -1
- package/dist/ProofOfPossessionBuilder.d.ts.map +1 -1
- package/dist/ProofOfPossessionBuilder.js +2 -3
- package/dist/ProofOfPossessionBuilder.js.map +1 -1
- package/dist/functions/index.d.ts +2 -3
- package/dist/functions/index.d.ts.map +1 -1
- package/dist/functions/index.js +2 -3
- package/dist/functions/index.js.map +1 -1
- package/dist/functions/notifications.d.ts +4 -0
- package/dist/functions/notifications.d.ts.map +1 -0
- package/dist/functions/notifications.js +39 -0
- package/dist/functions/notifications.js.map +1 -0
- package/dist/index.d.ts +1 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -1
- package/lib/AccessTokenClient.ts +244 -277
- package/lib/AuthorizationCodeClient.ts +163 -183
- package/lib/CredentialOfferClient.ts +113 -99
- package/lib/CredentialRequestClient.ts +227 -212
- package/lib/CredentialRequestClientBuilder.ts +162 -156
- package/lib/MetadataClient.ts +207 -186
- package/lib/OpenID4VCIClient.ts +657 -585
- package/lib/ProofOfPossessionBuilder.ts +203 -204
- package/lib/__tests__/AccessTokenClient.spec.ts +211 -239
- package/lib/__tests__/CredentialRequestClient.spec.ts +315 -328
- package/lib/__tests__/CredentialRequestClientBuilder.spec.ts +131 -131
- package/lib/__tests__/EBSIE2E.spec.test.ts +145 -145
- package/lib/__tests__/HttpUtils.spec.ts +1 -1
- package/lib/__tests__/IT.spec.ts +210 -382
- package/lib/__tests__/IssuanceInitiation.spec.ts +83 -64
- package/lib/__tests__/JsonURIConversions.spec.ts +146 -146
- package/lib/__tests__/MattrE2E.spec.test.ts +104 -104
- package/lib/__tests__/MetadataClient.spec.ts +260 -324
- package/lib/__tests__/MetadataMocks.ts +444 -483
- package/lib/__tests__/OpenID4VCIClient.spec.ts +202 -225
- package/lib/__tests__/{OpenID4VCIClientPARV1_0_11.spec.ts → OpenID4VCIClientPAR.spec.ts} +122 -122
- package/lib/__tests__/ProofOfPossessionBuilder.spec.ts +110 -110
- package/lib/__tests__/SdJwt.spec.ts +165 -173
- package/lib/__tests__/SphereonE2E.spec.test.ts +170 -169
- package/lib/__tests__/data/VciDataFixtures.ts +745 -1382
- package/lib/functions/AuthorizationUtil.ts +18 -18
- package/lib/functions/index.ts +2 -3
- package/lib/functions/notifications.ts +32 -0
- package/lib/index.ts +9 -16
- package/lib/types/index.ts +6 -0
- package/package.json +4 -4
- package/dist/AccessTokenClientV1_0_11.d.ts +0 -29
- package/dist/AccessTokenClientV1_0_11.d.ts.map +0 -1
- package/dist/AccessTokenClientV1_0_11.js +0 -212
- package/dist/AccessTokenClientV1_0_11.js.map +0 -1
- package/dist/AuthorizationCodeClientV1_0_11.d.ts +0 -9
- package/dist/AuthorizationCodeClientV1_0_11.d.ts.map +0 -1
- package/dist/AuthorizationCodeClientV1_0_11.js +0 -132
- package/dist/AuthorizationCodeClientV1_0_11.js.map +0 -1
- package/dist/CredentialOfferClientV1_0_11.d.ts +0 -10
- package/dist/CredentialOfferClientV1_0_11.d.ts.map +0 -1
- package/dist/CredentialOfferClientV1_0_11.js +0 -103
- package/dist/CredentialOfferClientV1_0_11.js.map +0 -1
- package/dist/CredentialRequestClientBuilderV1_0_11.d.ts +0 -46
- package/dist/CredentialRequestClientBuilderV1_0_11.d.ts.map +0 -1
- package/dist/CredentialRequestClientBuilderV1_0_11.js +0 -117
- package/dist/CredentialRequestClientBuilderV1_0_11.js.map +0 -1
- package/dist/CredentialRequestClientV1_0_11.d.ts +0 -44
- package/dist/CredentialRequestClientV1_0_11.d.ts.map +0 -1
- package/dist/CredentialRequestClientV1_0_11.js +0 -151
- package/dist/CredentialRequestClientV1_0_11.js.map +0 -1
- package/dist/MetadataClientV1_0_11.d.ts +0 -31
- package/dist/MetadataClientV1_0_11.d.ts.map +0 -1
- package/dist/MetadataClientV1_0_11.js +0 -182
- package/dist/MetadataClientV1_0_11.js.map +0 -1
- package/dist/OpenID4VCIClientV1_0_11.d.ts +0 -107
- package/dist/OpenID4VCIClientV1_0_11.d.ts.map +0 -1
- package/dist/OpenID4VCIClientV1_0_11.js +0 -462
- package/dist/OpenID4VCIClientV1_0_11.js.map +0 -1
- package/dist/functions/OpenIDUtils.d.ts +0 -12
- package/dist/functions/OpenIDUtils.d.ts.map +0 -1
- package/dist/functions/OpenIDUtils.js +0 -37
- package/dist/functions/OpenIDUtils.js.map +0 -1
- package/dist/functions/ProofUtil.d.ts +0 -30
- package/dist/functions/ProofUtil.d.ts.map +0 -1
- package/dist/functions/ProofUtil.js +0 -106
- package/dist/functions/ProofUtil.js.map +0 -1
- package/lib/AccessTokenClientV1_0_11.ts +0 -255
- package/lib/AuthorizationCodeClientV1_0_11.ts +0 -167
- package/lib/CredentialOfferClientV1_0_11.ts +0 -112
- package/lib/CredentialRequestClientBuilderV1_0_11.ts +0 -156
- package/lib/CredentialRequestClientV1_0_11.ts +0 -190
- package/lib/MetadataClientV1_0_11.ts +0 -186
- package/lib/OpenID4VCIClientV1_0_11.ts +0 -644
- package/lib/__tests__/CredentialRequestClientV1_0_11.spec.ts +0 -316
- package/lib/__tests__/IssuanceInitiationV1_0_11.spec.ts +0 -62
- package/lib/__tests__/OpenID4VCIClientV1_0_11.spec.ts +0 -202
- package/lib/functions/OpenIDUtils.ts +0 -25
- package/lib/functions/ProofUtil.ts +0 -128
package/README.md
CHANGED
|
@@ -68,6 +68,25 @@ console.log(client.getCredentialEndpoint()); // https://issuer.research.identipr
|
|
|
68
68
|
console.log(client.getAccessTokenEndpoint()); // https://auth.research.identiproof.io/oauth2/token
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
Using https scheme
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
import { OpenID4VCIClient } from '@sphereon/oid4vci-client';
|
|
75
|
+
|
|
76
|
+
// The client is initiated from a URI. This URI is provided by the Issuer, typically as a URL or QR code.
|
|
77
|
+
const client = await OpenID4VCIClient.fromURI({
|
|
78
|
+
uri: 'https://launchpad.vii.electron.mattrlabs.io?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Flaunchpad.vii.electron.mattrlabs.io%22%2C%22credentials%22%3A%5B%7B%22format%22%3A%22ldp_vc%22%2C%22types%22%3A%5B%22OpenBadgeCredential%22%5D%7D%5D%2C%22grants%22%3A%7B%22urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Apre-authorized_code%22%3A%7B%22pre-authorized_code%22%3A%22UPZohaodPlLBnGsqB02n2tIupCIg8nKRRUEUHWA665X%22%7D%7D%7D',
|
|
79
|
+
kid: 'did:example:ebfeb1f712ebc6f1c276e12ec21#key-1', // Our DID. You can defer this also to when the acquireCredential method is called
|
|
80
|
+
alg: Alg.ES256, // The signing Algorithm we will use. You can defer this also to when the acquireCredential method is called
|
|
81
|
+
clientId: 'test-clientId', // The clientId if the Authrozation Service requires it. If a clientId is needed you can defer this also to when the acquireAccessToken method is called
|
|
82
|
+
retrieveServerMetadata: true, // Already retrieve the server metadata. Can also be done afterwards by invoking a method yourself.
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
console.log(client.getIssuer()); // https://launchpad.vii.electron.mattrlabs.io
|
|
86
|
+
console.log(client.getCredentialEndpoint()); // https://launchpad.vii.electron.mattrlabs.io/credential
|
|
87
|
+
console.log(client.getAccessTokenEndpoint()); // https://launchpad.vii.electron.mattrlabs.io/oauth2/token
|
|
88
|
+
```
|
|
89
|
+
|
|
71
90
|
## Server metadata
|
|
72
91
|
|
|
73
92
|
The OID4VCI Server metadata contains information about token endpoints, credential endpoints, as well as additional
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AccessTokenRequest, AccessTokenRequestOpts, AccessTokenResponse, AuthorizationServerOpts, EndpointMetadata, IssuerOpts, OpenIDResponse
|
|
1
|
+
import { AccessTokenRequest, AccessTokenRequestOpts, AccessTokenResponse, AuthorizationServerOpts, EndpointMetadata, IssuerOpts, OpenIDResponse } from '@sphereon/oid4vci-common';
|
|
2
2
|
export declare class AccessTokenClient {
|
|
3
3
|
acquireAccessToken(opts: AccessTokenRequestOpts): Promise<OpenIDResponse<AccessTokenResponse>>;
|
|
4
|
-
acquireAccessTokenUsingRequest({ accessTokenRequest,
|
|
4
|
+
acquireAccessTokenUsingRequest({ accessTokenRequest, isPinRequired, metadata, asOpts, issuerOpts, }: {
|
|
5
5
|
accessTokenRequest: AccessTokenRequest;
|
|
6
|
-
|
|
6
|
+
isPinRequired?: boolean;
|
|
7
7
|
metadata?: EndpointMetadata;
|
|
8
8
|
asOpts?: AuthorizationServerOpts;
|
|
9
9
|
issuerOpts?: IssuerOpts;
|
|
@@ -11,8 +11,8 @@ export declare class AccessTokenClient {
|
|
|
11
11
|
createAccessTokenRequest(opts: AccessTokenRequestOpts): Promise<AccessTokenRequest>;
|
|
12
12
|
private assertPreAuthorizedGrantType;
|
|
13
13
|
private assertAuthorizationGrantType;
|
|
14
|
-
private
|
|
15
|
-
private
|
|
14
|
+
private isPinRequiredValue;
|
|
15
|
+
private assertNumericPin;
|
|
16
16
|
private assertNonEmptyPreAuthorizedCode;
|
|
17
17
|
private assertNonEmptyCodeVerifier;
|
|
18
18
|
private assertNonEmptyCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessTokenClient.d.ts","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEnB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"AccessTokenClient.d.ts","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEnB,uBAAuB,EAGvB,gBAAgB,EAIhB,UAAU,EAEV,cAAc,EAKf,MAAM,0BAA0B,CAAC;AAMlC,qBAAa,iBAAiB;IACf,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IA+B9F,8BAA8B,CAAC,EAC1C,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,UAAU,GACX,EAAE;QACD,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC5B,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;IAgBnC,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoChG,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,+BAA+B;IAOvC,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,QAAQ;YAcF,YAAY;WAIZ,iBAAiB,CAAC,EAC9B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;QACD,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;KAC7B,GAAG,MAAM;IAuBV,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAYnC,OAAO,CAAC,qBAAqB;CAI9B"}
|
|
@@ -8,24 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.AccessTokenClient = void 0;
|
|
16
13
|
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
17
14
|
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
18
|
-
const debug_1 = __importDefault(require("debug"));
|
|
19
15
|
const MetadataClient_1 = require("./MetadataClient");
|
|
20
|
-
const
|
|
21
|
-
const debug = (0, debug_1.default)('sphereon:oid4vci:token');
|
|
16
|
+
const types_1 = require("./types");
|
|
22
17
|
class AccessTokenClient {
|
|
23
18
|
acquireAccessToken(opts) {
|
|
19
|
+
var _a;
|
|
24
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
var _a;
|
|
26
21
|
const { asOpts, pin, codeVerifier, code, redirectUri, metadata } = opts;
|
|
27
22
|
const credentialOffer = opts.credentialOffer ? yield (0, oid4vci_common_1.assertedUniformCredentialOffer)(opts.credentialOffer) : undefined;
|
|
28
|
-
const
|
|
23
|
+
const isPinRequired = credentialOffer && this.isPinRequiredValue(credentialOffer.credential_offer);
|
|
29
24
|
const issuer = (_a = opts.credentialIssuer) !== null && _a !== void 0 ? _a : (credentialOffer ? (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(credentialOffer.credential_offer) : metadata === null || metadata === void 0 ? void 0 : metadata.issuer);
|
|
30
25
|
if (!issuer) {
|
|
31
26
|
throw Error('Issuer required at this point');
|
|
@@ -41,18 +36,17 @@ class AccessTokenClient {
|
|
|
41
36
|
code,
|
|
42
37
|
redirectUri,
|
|
43
38
|
pin,
|
|
44
|
-
pinMetadata,
|
|
45
39
|
}),
|
|
46
|
-
|
|
40
|
+
isPinRequired,
|
|
47
41
|
metadata,
|
|
48
42
|
asOpts,
|
|
49
43
|
issuerOpts,
|
|
50
44
|
});
|
|
51
45
|
});
|
|
52
46
|
}
|
|
53
|
-
acquireAccessTokenUsingRequest(
|
|
54
|
-
return __awaiter(this,
|
|
55
|
-
this.validate(accessTokenRequest,
|
|
47
|
+
acquireAccessTokenUsingRequest({ accessTokenRequest, isPinRequired, metadata, asOpts, issuerOpts, }) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
this.validate(accessTokenRequest, isPinRequired);
|
|
56
50
|
const requestTokenURL = AccessTokenClient.determineTokenURL({
|
|
57
51
|
asOpts,
|
|
58
52
|
issuerOpts,
|
|
@@ -66,19 +60,16 @@ class AccessTokenClient {
|
|
|
66
60
|
});
|
|
67
61
|
}
|
|
68
62
|
createAccessTokenRequest(opts) {
|
|
63
|
+
var _a, _b;
|
|
69
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
-
var _a, _b;
|
|
71
65
|
const { asOpts, pin, codeVerifier, code, redirectUri } = opts;
|
|
72
|
-
const credentialOfferRequest = opts.credentialOffer
|
|
73
|
-
(0, oid4vci_common_1.determineSpecVersionFromOffer)(opts.credentialOffer).valueOf() <= oid4vci_common_1.OpenId4VCIVersion.VER_1_0_13.valueOf()
|
|
74
|
-
? yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(opts.credentialOffer)
|
|
75
|
-
: undefined;
|
|
66
|
+
const credentialOfferRequest = opts.credentialOffer ? yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(opts.credentialOffer) : undefined;
|
|
76
67
|
const request = {};
|
|
77
68
|
if (asOpts === null || asOpts === void 0 ? void 0 : asOpts.clientId) {
|
|
78
69
|
request.client_id = asOpts.clientId;
|
|
79
70
|
}
|
|
80
71
|
if (credentialOfferRequest === null || credentialOfferRequest === void 0 ? void 0 : credentialOfferRequest.supportedFlows.includes(oid4vci_common_1.AuthzFlowType.PRE_AUTHORIZED_CODE_FLOW)) {
|
|
81
|
-
this.
|
|
72
|
+
this.assertNumericPin(this.isPinRequiredValue(credentialOfferRequest.credential_offer), pin);
|
|
82
73
|
request.user_pin = pin;
|
|
83
74
|
request.grant_type = oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE;
|
|
84
75
|
// we actually know it is there because of the isPreAuthCode call
|
|
@@ -95,7 +86,7 @@ class AccessTokenClient {
|
|
|
95
86
|
}
|
|
96
87
|
return request;
|
|
97
88
|
}
|
|
98
|
-
throw new Error('Credential offer request
|
|
89
|
+
throw new Error('Credential offer request follows neither pre-authorized code nor authorization code flow requirements.');
|
|
99
90
|
});
|
|
100
91
|
}
|
|
101
92
|
assertPreAuthorizedGrantType(grantType) {
|
|
@@ -108,70 +99,54 @@ class AccessTokenClient {
|
|
|
108
99
|
throw new Error("grant type must be 'authorization_code'");
|
|
109
100
|
}
|
|
110
101
|
}
|
|
111
|
-
|
|
112
|
-
var _a;
|
|
102
|
+
isPinRequiredValue(requestPayload) {
|
|
103
|
+
var _a, _b, _c;
|
|
104
|
+
let isPinRequired = false;
|
|
113
105
|
if (!requestPayload) {
|
|
114
106
|
throw new Error(oid4vci_common_1.TokenErrorResponse.invalid_request);
|
|
115
107
|
}
|
|
116
108
|
const issuer = (0, oid4vci_common_1.getIssuerFromCredentialOfferPayload)(requestPayload);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
isPinRequired,
|
|
123
|
-
};
|
|
109
|
+
if ((_a = requestPayload.grants) === null || _a === void 0 ? void 0 : _a['urn:ietf:params:oauth:grant-type:pre-authorized_code']) {
|
|
110
|
+
isPinRequired = (_c = (_b = requestPayload.grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _b === void 0 ? void 0 : _b.user_pin_required) !== null && _c !== void 0 ? _c : false;
|
|
111
|
+
}
|
|
112
|
+
types_1.LOG.warning(`Pin required for issuer ${issuer}: ${isPinRequired}`);
|
|
113
|
+
return isPinRequired;
|
|
124
114
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const { input_mode, length } = pinMeta.txCode;
|
|
131
|
-
if (input_mode === 'numeric') {
|
|
132
|
-
// Create a regex for numeric input. If no length specified, allow any length of numeric input.
|
|
133
|
-
regex = length ? new RegExp(`^\\d{1,${length}}$`) : /^\d+$/;
|
|
134
|
-
}
|
|
135
|
-
else if (input_mode === 'text') {
|
|
136
|
-
// Create a regex for text input. If no length specified, allow any length of alphanumeric input.
|
|
137
|
-
regex = length ? new RegExp(`^[a-zA-Z0-9]{1,${length}}$`) : /^[a-zA-Z0-9]+$/;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// Default regex for alphanumeric with no specific length limit if no input_mode is specified.
|
|
141
|
-
regex = regex || /^[a-zA-Z0-9]+$|^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+$/;
|
|
142
|
-
if (!pin || !regex.test(pin)) {
|
|
143
|
-
debug(`Pin is not valid. Expected format: ${((_a = pinMeta === null || pinMeta === void 0 ? void 0 : pinMeta.txCode) === null || _a === void 0 ? void 0 : _a.input_mode) || 'alphanumeric'}, Length: up to ${((_b = pinMeta === null || pinMeta === void 0 ? void 0 : pinMeta.txCode) === null || _b === void 0 ? void 0 : _b.length) || 'any number of'} characters`);
|
|
144
|
-
throw new Error('A valid pin must be present according to the specified transaction code requirements.');
|
|
115
|
+
assertNumericPin(isPinRequired, pin) {
|
|
116
|
+
if (isPinRequired) {
|
|
117
|
+
if (!pin || !/^\d{1,8}$/.test(pin)) {
|
|
118
|
+
types_1.LOG.warning(`Pin is not 1 to 8 digits long`);
|
|
119
|
+
throw new Error('A valid pin consisting of maximal 8 numeric characters must be present.');
|
|
145
120
|
}
|
|
146
121
|
}
|
|
147
122
|
else if (pin) {
|
|
148
|
-
|
|
149
|
-
throw new Error('Cannot set a pin when the pin is not required.');
|
|
123
|
+
types_1.LOG.warning(`Pin set, whilst not required`);
|
|
124
|
+
throw new Error('Cannot set a pin, when the pin is not required.');
|
|
150
125
|
}
|
|
151
126
|
}
|
|
152
127
|
assertNonEmptyPreAuthorizedCode(accessTokenRequest) {
|
|
153
128
|
if (!accessTokenRequest[oid4vci_common_1.PRE_AUTH_CODE_LITERAL]) {
|
|
154
|
-
|
|
129
|
+
types_1.LOG.warning(`No pre-authorized code present, whilst it is required`, accessTokenRequest);
|
|
155
130
|
throw new Error('Pre-authorization must be proven by presenting the pre-authorized code. Code must be present.');
|
|
156
131
|
}
|
|
157
132
|
}
|
|
158
133
|
assertNonEmptyCodeVerifier(accessTokenRequest) {
|
|
159
134
|
if (!accessTokenRequest.code_verifier) {
|
|
160
|
-
|
|
135
|
+
types_1.LOG.warning('No code_verifier present, whilst it is required', accessTokenRequest);
|
|
161
136
|
throw new Error('Authorization flow requires the code_verifier to be present');
|
|
162
137
|
}
|
|
163
138
|
}
|
|
164
139
|
assertNonEmptyCode(accessTokenRequest) {
|
|
165
140
|
if (!accessTokenRequest.code) {
|
|
166
|
-
|
|
141
|
+
types_1.LOG.warning('No code present, whilst it is required');
|
|
167
142
|
throw new Error('Authorization flow requires the code to be present');
|
|
168
143
|
}
|
|
169
144
|
}
|
|
170
|
-
validate(accessTokenRequest,
|
|
145
|
+
validate(accessTokenRequest, isPinRequired) {
|
|
171
146
|
if (accessTokenRequest.grant_type === oid4vci_common_1.GrantTypes.PRE_AUTHORIZED_CODE) {
|
|
172
147
|
this.assertPreAuthorizedGrantType(accessTokenRequest.grant_type);
|
|
173
148
|
this.assertNonEmptyPreAuthorizedCode(accessTokenRequest);
|
|
174
|
-
this.
|
|
149
|
+
this.assertNumericPin(isPinRequired, accessTokenRequest.user_pin);
|
|
175
150
|
}
|
|
176
151
|
else if (accessTokenRequest.grant_type === oid4vci_common_1.GrantTypes.AUTHORIZATION_CODE) {
|
|
177
152
|
this.assertAuthorizationGrantType(accessTokenRequest.grant_type);
|
|
@@ -184,7 +159,7 @@ class AccessTokenClient {
|
|
|
184
159
|
}
|
|
185
160
|
sendAuthCode(requestTokenURL, accessTokenRequest) {
|
|
186
161
|
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
-
return yield (0,
|
|
162
|
+
return yield (0, oid4vci_common_1.formPost)(requestTokenURL, (0, oid4vci_common_1.convertJsonToURI)(accessTokenRequest, { mode: oid4vci_common_1.JsonURIMode.X_FORM_WWW_URLENCODED }));
|
|
188
163
|
});
|
|
189
164
|
}
|
|
190
165
|
static determineTokenURL({ asOpts, issuerOpts, metadata, }) {
|
|
@@ -207,7 +182,7 @@ class AccessTokenClient {
|
|
|
207
182
|
if (!url || !ssi_types_1.ObjectUtils.isString(url)) {
|
|
208
183
|
throw new Error('No authorization server token URL present. Cannot acquire access token');
|
|
209
184
|
}
|
|
210
|
-
debug(`Token endpoint determined to be ${url}`);
|
|
185
|
+
types_1.LOG.debug(`Token endpoint determined to be ${url}`);
|
|
211
186
|
return url;
|
|
212
187
|
}
|
|
213
188
|
static creatTokenURLFromURL(url, allowInsecureEndpoints, tokenEndpoint) {
|
|
@@ -220,7 +195,7 @@ class AccessTokenClient {
|
|
|
220
195
|
return `${scheme ? scheme + '://' : 'https://'}${hostname}${endpoint}`;
|
|
221
196
|
}
|
|
222
197
|
throwNotSupportedFlow() {
|
|
223
|
-
|
|
198
|
+
types_1.LOG.warning(`Only pre-authorized or authorization code flows supported.`);
|
|
224
199
|
throw new Error('Only pre-authorized-code or authorization code flows are supported');
|
|
225
200
|
}
|
|
226
201
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AccessTokenClient.js","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AccessTokenClient.js","sourceRoot":"","sources":["../lib/AccessTokenClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AuthorizationRequestOpts,
|
|
2
|
-
export declare const createAuthorizationRequestUrl: ({ pkce, endpointMetadata, authorizationRequest, credentialOffer,
|
|
1
|
+
import { AuthorizationRequestOpts, CredentialOfferRequestWithBaseUrl, CredentialSupported, EndpointMetadataResult, PKCEOpts } from '@sphereon/oid4vci-common';
|
|
2
|
+
export declare const createAuthorizationRequestUrl: ({ pkce, endpointMetadata, authorizationRequest, credentialOffer, credentialsSupported, }: {
|
|
3
3
|
pkce: PKCEOpts;
|
|
4
|
-
endpointMetadata:
|
|
4
|
+
endpointMetadata: EndpointMetadataResult;
|
|
5
5
|
authorizationRequest: AuthorizationRequestOpts;
|
|
6
|
-
credentialOffer?: CredentialOfferRequestWithBaseUrl;
|
|
7
|
-
|
|
6
|
+
credentialOffer?: CredentialOfferRequestWithBaseUrl | undefined;
|
|
7
|
+
credentialsSupported?: CredentialSupported[] | undefined;
|
|
8
8
|
}) => Promise<string>;
|
|
9
9
|
//# sourceMappingURL=AuthorizationCodeClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGxB,
|
|
1
|
+
{"version":3,"file":"AuthorizationCodeClient.d.ts","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGxB,iCAAiC,EACjC,mBAAmB,EACnB,sBAAsB,EAItB,QAAQ,EAGT,MAAM,0BAA0B,CAAC;AAKlC,eAAO,MAAM,6BAA6B;UAOlC,QAAQ;sBACI,sBAAsB;0BAClB,wBAAwB;;;MAG5C,QAAQ,MAAM,CA4FjB,CAAC"}
|
|
@@ -16,36 +16,25 @@ exports.createAuthorizationRequestUrl = void 0;
|
|
|
16
16
|
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
17
17
|
const debug_1 = __importDefault(require("debug"));
|
|
18
18
|
const debug = (0, debug_1.default)('sphereon:oid4vci');
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return [];
|
|
22
|
-
}
|
|
23
|
-
return credentialOffer.credential_configuration_ids.map((id) => credentialsSupported[id]).filter((cred) => cred !== undefined);
|
|
24
|
-
}
|
|
25
|
-
const createAuthorizationRequestUrl = (_a) => __awaiter(void 0, [_a], void 0, function* ({ pkce, endpointMetadata, authorizationRequest, credentialOffer, credentialConfigurationSupported, }) {
|
|
26
|
-
var _b, _c, _d, _e;
|
|
19
|
+
const createAuthorizationRequestUrl = ({ pkce, endpointMetadata, authorizationRequest, credentialOffer, credentialsSupported, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
+
var _a, _b, _c, _d;
|
|
27
21
|
const { redirectUri, clientId } = authorizationRequest;
|
|
28
22
|
let { scope, authorizationDetails } = authorizationRequest;
|
|
29
|
-
const parMode = ((
|
|
23
|
+
const parMode = ((_a = endpointMetadata === null || endpointMetadata === void 0 ? void 0 : endpointMetadata.credentialIssuerMetadata) === null || _a === void 0 ? void 0 : _a.require_pushed_authorization_requests)
|
|
30
24
|
? oid4vci_common_1.PARMode.REQUIRE
|
|
31
|
-
: (
|
|
25
|
+
: (_b = authorizationRequest.parMode) !== null && _b !== void 0 ? _b : oid4vci_common_1.PARMode.AUTO;
|
|
32
26
|
// Scope and authorization_details can be used in the same authorization request
|
|
33
27
|
// https://datatracker.ietf.org/doc/html/draft-ietf-oauth-rar-23#name-relationship-to-scope-param
|
|
34
28
|
if (!scope && !authorizationDetails) {
|
|
35
29
|
if (!credentialOffer) {
|
|
36
30
|
throw Error('Please provide a scope or authorization_details if no credential offer is present');
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
throw new Error('CredentialOffer format is wrong.');
|
|
40
|
-
}
|
|
41
|
-
const creds = (0, oid4vci_common_1.determineSpecVersionFromOffer)(credentialOffer.credential_offer) === oid4vci_common_1.OpenId4VCIVersion.VER_1_0_13
|
|
42
|
-
? filterSupportedCredentials(credentialOffer.credential_offer, credentialConfigurationSupported)
|
|
43
|
-
: [];
|
|
32
|
+
const creds = credentialOffer.credential_offer.credentials;
|
|
44
33
|
// FIXME: complains about VCT for sd-jwt
|
|
45
34
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
46
35
|
// @ts-ignore
|
|
47
36
|
authorizationDetails = creds
|
|
48
|
-
.flatMap((cred) => cred)
|
|
37
|
+
.flatMap((cred) => (typeof cred === 'string' ? credentialsSupported : cred))
|
|
49
38
|
.filter((cred) => !!cred)
|
|
50
39
|
.map((cred) => {
|
|
51
40
|
return Object.assign(Object.assign({}, cred), { type: 'openid_credential', locations: [endpointMetadata.issuer],
|
|
@@ -60,13 +49,13 @@ const createAuthorizationRequestUrl = (_a) => __awaiter(void 0, [_a], void 0, fu
|
|
|
60
49
|
if (!(endpointMetadata === null || endpointMetadata === void 0 ? void 0 : endpointMetadata.authorization_endpoint)) {
|
|
61
50
|
throw Error('Server metadata does not contain authorization endpoint');
|
|
62
51
|
}
|
|
63
|
-
const parEndpoint = (
|
|
52
|
+
const parEndpoint = (_c = endpointMetadata.credentialIssuerMetadata) === null || _c === void 0 ? void 0 : _c.pushed_authorization_request_endpoint;
|
|
64
53
|
// add 'openid' scope if not present
|
|
65
54
|
if (!(scope === null || scope === void 0 ? void 0 : scope.includes('openid'))) {
|
|
66
55
|
scope = ['openid', scope].filter((s) => !!s).join(' ');
|
|
67
56
|
}
|
|
68
57
|
let queryObj = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ response_type: oid4vci_common_1.ResponseType.AUTH_CODE }, (!pkce.disabled && {
|
|
69
|
-
code_challenge_method: (
|
|
58
|
+
code_challenge_method: (_d = pkce.codeChallengeMethod) !== null && _d !== void 0 ? _d : oid4vci_common_1.CodeChallengeMethod.S256,
|
|
70
59
|
code_challenge: pkce.codeChallenge,
|
|
71
60
|
})), { authorization_details: JSON.stringify(handleAuthorizationDetails(endpointMetadata, authorizationDetails)) }), (redirectUri && { redirect_uri: redirectUri })), (clientId && { client_id: clientId })), ((credentialOffer === null || credentialOffer === void 0 ? void 0 : credentialOffer.issuerState) && { issuer_state: credentialOffer.issuerState })), { scope });
|
|
72
61
|
if (!parEndpoint && parMode === oid4vci_common_1.PARMode.REQUIRE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthorizationCodeClient.js","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"AuthorizationCodeClient.js","sourceRoot":"","sources":["../lib/AuthorizationCodeClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialOfferClient.d.ts","sourceRoot":"","sources":["../lib/CredentialOfferClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CredentialOfferClient.d.ts","sourceRoot":"","sources":["../lib/CredentialOfferClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,iCAAiC,EAIjC,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,qBAAqB;WACZ,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iCAAiC,CAAC;WAmDpG,KAAK,CACjB,kBAAkB,EAAE,iCAAiC,EACrD,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,iBAAiB,CAAC;KAC7B,GACA,MAAM;CAsCV"}
|
|
@@ -15,12 +15,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.CredentialOfferClient = void 0;
|
|
16
16
|
const oid4vci_common_1 = require("@sphereon/oid4vci-common");
|
|
17
17
|
const debug_1 = __importDefault(require("debug"));
|
|
18
|
-
const functions_1 = require("./functions");
|
|
19
18
|
const debug = (0, debug_1.default)('sphereon:oid4vci:offer');
|
|
20
19
|
class CredentialOfferClient {
|
|
21
20
|
static fromURI(uri, opts) {
|
|
21
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
-
var _a, _b, _c, _d, _e, _f;
|
|
24
23
|
debug(`Credential Offer URI: ${uri}`);
|
|
25
24
|
if (!uri.includes('?') || !uri.includes('://')) {
|
|
26
25
|
debug(`Invalid Credential Offer URI: ${uri}`);
|
|
@@ -29,23 +28,36 @@ class CredentialOfferClient {
|
|
|
29
28
|
const scheme = uri.split('://')[0];
|
|
30
29
|
const baseUrl = uri.split('?')[0];
|
|
31
30
|
const version = (0, oid4vci_common_1.determineSpecVersionFromURI)(uri);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
let credentialOffer;
|
|
32
|
+
let credentialOfferPayload;
|
|
33
|
+
// credential offer was introduced in draft 9 and credential_offer_uri in draft 11
|
|
34
|
+
if (version < oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11) {
|
|
35
|
+
credentialOfferPayload = (0, oid4vci_common_1.convertURIToJsonObject)(uri, {
|
|
36
|
+
arrayTypeProperties: ['credential_type'],
|
|
37
|
+
requiredProperties: uri.includes('credential_offer=') ? ['credential_offer'] : ['issuer', 'credential_type'],
|
|
38
|
+
});
|
|
39
|
+
credentialOffer = {
|
|
40
|
+
credential_offer: credentialOfferPayload,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
credentialOffer = (0, oid4vci_common_1.convertURIToJsonObject)(uri, {
|
|
45
|
+
// It must have the '=' sign after credential_offer otherwise the uri will get split at openid_credential_offer
|
|
46
|
+
arrayTypeProperties: uri.includes('credential_offer_uri=') ? ['credential_offer_uri='] : ['credential_offer='],
|
|
47
|
+
requiredProperties: uri.includes('credential_offer_uri=') ? ['credential_offer_uri='] : ['credential_offer='],
|
|
48
|
+
});
|
|
49
|
+
if ((credentialOffer === null || credentialOffer === void 0 ? void 0 : credentialOffer.credential_offer_uri) === undefined && !(credentialOffer === null || credentialOffer === void 0 ? void 0 : credentialOffer.credential_offer)) {
|
|
50
|
+
throw Error('Either a credential_offer or credential_offer_uri should be present in ' + uri);
|
|
51
|
+
}
|
|
38
52
|
}
|
|
39
53
|
const request = yield (0, oid4vci_common_1.toUniformCredentialOfferRequest)(credentialOffer, Object.assign(Object.assign({}, opts), { version }));
|
|
40
54
|
const clientId = (0, oid4vci_common_1.getClientIdFromCredentialOfferPayload)(request.credential_offer);
|
|
41
55
|
const grants = (_a = request.credential_offer) === null || _a === void 0 ? void 0 : _a.grants;
|
|
42
|
-
return Object.assign(Object.assign(Object.assign(Object.assign(
|
|
43
|
-
baseUrl
|
|
56
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({ scheme,
|
|
57
|
+
baseUrl,
|
|
58
|
+
clientId }, request), (((_b = grants === null || grants === void 0 ? void 0 : grants.authorization_code) === null || _b === void 0 ? void 0 : _b.issuer_state) && { issuerState: grants.authorization_code.issuer_state })), (((_c = grants === null || grants === void 0 ? void 0 : grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _c === void 0 ? void 0 : _c['pre-authorized_code']) && {
|
|
44
59
|
preAuthorizedCode: grants['urn:ietf:params:oauth:grant-type:pre-authorized_code']['pre-authorized_code'],
|
|
45
|
-
})), ((
|
|
46
|
-
{
|
|
47
|
-
// txCode: request.credential_offer?.grants?.['urn:ietf:params:oauth:grant-type:pre-authorized_code']?.tx_code,
|
|
48
|
-
}));
|
|
60
|
+
})), { userPinRequired: (_g = (_f = (_e = (_d = request.credential_offer) === null || _d === void 0 ? void 0 : _d.grants) === null || _e === void 0 ? void 0 : _e['urn:ietf:params:oauth:grant-type:pre-authorized_code']) === null || _f === void 0 ? void 0 : _f.user_pin_required) !== null && _g !== void 0 ? _g : false });
|
|
49
61
|
});
|
|
50
62
|
}
|
|
51
63
|
static toURI(requestWithBaseUrl, opts) {
|
|
@@ -75,12 +87,12 @@ class CredentialOfferClient {
|
|
|
75
87
|
}
|
|
76
88
|
}
|
|
77
89
|
}
|
|
78
|
-
return (0,
|
|
90
|
+
return (0, oid4vci_common_1.convertJsonToURI)((_b = requestWithBaseUrl.credential_offer_uri) !== null && _b !== void 0 ? _b : requestWithBaseUrl.original_credential_offer, {
|
|
79
91
|
baseUrl,
|
|
80
92
|
arrayTypeProperties: isUri ? [] : ['credential_type'],
|
|
81
93
|
uriTypeProperties: isUri
|
|
82
94
|
? ['credential_offer_uri']
|
|
83
|
-
: version >= oid4vci_common_1.OpenId4VCIVersion.
|
|
95
|
+
: version >= oid4vci_common_1.OpenId4VCIVersion.VER_1_0_11
|
|
84
96
|
? ['credential_issuer', 'credential_type']
|
|
85
97
|
: ['issuer', 'credential_type'],
|
|
86
98
|
param,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialOfferClient.js","sourceRoot":"","sources":["../lib/CredentialOfferClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"CredentialOfferClient.js","sourceRoot":"","sources":["../lib/CredentialOfferClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CredentialResponse, OID4VCICredentialFormat, OpenId4VCIVersion, OpenIDResponse, ProofOfPossession, UniformCredentialRequest } from '@sphereon/oid4vci-common';
|
|
2
|
+
import { ExperimentalSubjectIssuance } from '@sphereon/oid4vci-common/dist/experimental/holder-vci';
|
|
2
3
|
import { CredentialFormat } from '@sphereon/ssi-types';
|
|
3
4
|
import { CredentialRequestClientBuilder } from './CredentialRequestClientBuilder';
|
|
4
5
|
import { ProofOfPossessionBuilder } from './ProofOfPossessionBuilder';
|
|
@@ -6,12 +7,14 @@ export interface CredentialRequestOpts {
|
|
|
6
7
|
deferredCredentialAwait?: boolean;
|
|
7
8
|
deferredCredentialIntervalInMS?: number;
|
|
8
9
|
credentialEndpoint: string;
|
|
10
|
+
notificationEndpoint?: string;
|
|
9
11
|
deferredCredentialEndpoint?: string;
|
|
10
12
|
credentialTypes: string[];
|
|
11
13
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
12
14
|
proof: ProofOfPossession;
|
|
13
15
|
token: string;
|
|
14
16
|
version: OpenId4VCIVersion;
|
|
17
|
+
subjectIssuance?: ExperimentalSubjectIssuance;
|
|
15
18
|
}
|
|
16
19
|
export declare function buildProof<DIDDoc>(proofInput: ProofOfPossessionBuilder<DIDDoc> | ProofOfPossession, opts: {
|
|
17
20
|
version: OpenId4VCIVersion;
|
|
@@ -30,19 +33,27 @@ export declare class CredentialRequestClient {
|
|
|
30
33
|
credentialTypes?: string | string[];
|
|
31
34
|
context?: string[];
|
|
32
35
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
subjectIssuance?: ExperimentalSubjectIssuance;
|
|
37
|
+
}): Promise<OpenIDResponse<CredentialResponse> & {
|
|
38
|
+
access_token: string;
|
|
39
|
+
}>;
|
|
40
|
+
acquireCredentialsUsingRequest(uniformRequest: UniformCredentialRequest): Promise<OpenIDResponse<CredentialResponse> & {
|
|
41
|
+
access_token: string;
|
|
42
|
+
}>;
|
|
35
43
|
acquireDeferredCredential(response: Pick<CredentialResponse, 'transaction_id' | 'acceptance_token' | 'c_nonce'>, opts?: {
|
|
36
44
|
bearerToken?: string;
|
|
37
|
-
}): Promise<OpenIDResponse<CredentialResponse
|
|
45
|
+
}): Promise<OpenIDResponse<CredentialResponse> & {
|
|
46
|
+
access_token: string;
|
|
47
|
+
}>;
|
|
38
48
|
createCredentialRequest<DIDDoc>(opts: {
|
|
39
49
|
proofInput: ProofOfPossessionBuilder<DIDDoc> | ProofOfPossession;
|
|
40
50
|
credentialTypes?: string | string[];
|
|
41
51
|
context?: string[];
|
|
42
52
|
format?: CredentialFormat | OID4VCICredentialFormat;
|
|
53
|
+
subjectIssuance?: ExperimentalSubjectIssuance;
|
|
43
54
|
version: OpenId4VCIVersion;
|
|
44
55
|
}): Promise<UniformCredentialRequest>;
|
|
45
56
|
private version;
|
|
46
|
-
private
|
|
57
|
+
private isV11OrHigher;
|
|
47
58
|
}
|
|
48
59
|
//# sourceMappingURL=CredentialRequestClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CredentialRequestClient.d.ts","sourceRoot":"","sources":["../lib/CredentialRequestClient.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"CredentialRequestClient.d.ts","sourceRoot":"","sources":["../lib/CredentialRequestClient.ts"],"names":[],"mappings":"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"}
|