@learncard/openid4vc-plugin 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dcql/adapt.d.ts +18 -6
- package/dist/dcql/adapt.d.ts.map +1 -1
- package/dist/dcql/build.d.ts +48 -7
- package/dist/dcql/build.d.ts.map +1 -1
- package/dist/dcql/index.d.ts +3 -3
- package/dist/dcql/index.d.ts.map +1 -1
- package/dist/dcql/respond.d.ts +19 -6
- package/dist/dcql/respond.d.ts.map +1 -1
- package/dist/dcql/select.d.ts +11 -1
- package/dist/dcql/select.d.ts.map +1 -1
- package/dist/openid4vc-plugin.cjs.development.cjs +32545 -1387
- package/dist/openid4vc-plugin.cjs.development.cjs.map +4 -4
- package/dist/openid4vc-plugin.cjs.production.min.cjs +63 -19
- package/dist/openid4vc-plugin.cjs.production.min.cjs.map +4 -4
- package/dist/openid4vc-plugin.esm.js +32545 -1387
- package/dist/openid4vc-plugin.esm.js.map +4 -4
- package/dist/plugin.d.ts.map +1 -1
- package/dist/types.d.ts +39 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vci/accept.d.ts +15 -1
- package/dist/vci/accept.d.ts.map +1 -1
- package/dist/vci/auth-code.d.ts +32 -0
- package/dist/vci/auth-code.d.ts.map +1 -1
- package/dist/vci/decode.d.ts +18 -0
- package/dist/vci/decode.d.ts.map +1 -1
- package/dist/vci/index.d.ts +1 -0
- package/dist/vci/index.d.ts.map +1 -1
- package/dist/vci/nonce.d.ts +10 -0
- package/dist/vci/nonce.d.ts.map +1 -0
- package/dist/vci/sd-jwt-vc.d.ts +10 -0
- package/dist/vci/sd-jwt-vc.d.ts.map +1 -0
- package/dist/vci/store.d.ts +24 -2
- package/dist/vci/store.d.ts.map +1 -1
- package/dist/vci/types.d.ts +2 -0
- package/dist/vci/types.d.ts.map +1 -1
- package/dist/vp/index.d.ts +3 -3
- package/dist/vp/index.d.ts.map +1 -1
- package/dist/vp/present.d.ts +31 -1
- package/dist/vp/present.d.ts.map +1 -1
- package/dist/vp/select.d.ts +33 -1
- package/dist/vp/select.d.ts.map +1 -1
- package/dist/vp/sign.d.ts +41 -3
- package/dist/vp/sign.d.ts.map +1 -1
- package/package.json +5 -5
package/dist/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AA6C9F;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,eACf,2BAA2B,WAC/B,qBAAqB,KAC9B,eA+bF,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Plugin, LearnCard } from '@learncard/core';
|
|
|
2
2
|
import { UnsignedVC, VC, UnsignedVP, VP } from '@learncard/types';
|
|
3
3
|
import { ProofOptions } from '@learncard/didkit-plugin';
|
|
4
4
|
import { CredentialOffer, ParsedCredentialOfferUri } from './offer/types';
|
|
5
|
-
import { AcceptCredentialOfferOptions, AcceptedCredentialResult } from './vci/types';
|
|
5
|
+
import { AcceptCredentialOfferOptions, AcceptedCredentialResult, TokenResponse } from './vci/types';
|
|
6
6
|
import { AuthCodeFlowHandle, BeginAuthCodeFlowResult } from './vci/auth-code';
|
|
7
7
|
import { StoreAcceptedCredentialsOptions, StoreAcceptedCredentialsResult } from './vci/store';
|
|
8
8
|
import { AuthorizationRequest, ParsedAuthorizationRequest } from './vp/types';
|
|
@@ -71,6 +71,24 @@ export type OpenID4VCPluginMethods = {
|
|
|
71
71
|
* persist to the wallet" flow.
|
|
72
72
|
*/
|
|
73
73
|
acceptCredentialOffer: (input: string | CredentialOffer, options?: AcceptCredentialOfferOptions) => Promise<AcceptedCredentialResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Exchange a pre-authorized_code offer for an access token without
|
|
76
|
+
* requesting credentials yet. Use with
|
|
77
|
+
* {@link requestCredentialsFromPreAuthToken} when retry orchestration
|
|
78
|
+
* must re-use the same single-use token grant across signer attempts.
|
|
79
|
+
*/
|
|
80
|
+
exchangePreAuthCodeForToken: (input: string | CredentialOffer, options?: Omit<AcceptCredentialOfferOptions, 'signer'>) => Promise<TokenResponse>;
|
|
81
|
+
/**
|
|
82
|
+
* Request credentials using a token previously obtained from
|
|
83
|
+
* {@link exchangePreAuthCodeForToken}. This step is retry-safe across
|
|
84
|
+
* signer changes because it does not re-consume the pre-authorized code.
|
|
85
|
+
*/
|
|
86
|
+
requestCredentialsFromPreAuthToken: (options: {
|
|
87
|
+
input: string | CredentialOffer;
|
|
88
|
+
tokenResponse: TokenResponse;
|
|
89
|
+
options?: Omit<AcceptCredentialOfferOptions, 'signer'>;
|
|
90
|
+
signer?: AcceptCredentialOfferOptions['signer'];
|
|
91
|
+
}) => Promise<AcceptedCredentialResult>;
|
|
74
92
|
/**
|
|
75
93
|
* Accept a Credential Offer **and** persist the resulting credentials
|
|
76
94
|
* to the wallet's store + index planes, so they appear in the UI.
|
|
@@ -124,6 +142,26 @@ export type OpenID4VCPluginMethods = {
|
|
|
124
142
|
state?: string;
|
|
125
143
|
signer?: AcceptCredentialOfferOptions['signer'];
|
|
126
144
|
}) => Promise<AcceptedCredentialResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Exchange the OAuth authorization code for a token without issuing a
|
|
147
|
+
* credential request yet. This is the single-use half of the auth-code
|
|
148
|
+
* flow (RFC 6749 §4.1.2).
|
|
149
|
+
*/
|
|
150
|
+
exchangeAuthCodeForToken: (options: {
|
|
151
|
+
flowHandle: AuthCodeFlowHandle;
|
|
152
|
+
code: string;
|
|
153
|
+
state?: string;
|
|
154
|
+
}) => Promise<TokenResponse>;
|
|
155
|
+
/**
|
|
156
|
+
* Request credentials using a previously exchanged auth-code token.
|
|
157
|
+
* This is safe to retry across signer fallback because the OAuth code
|
|
158
|
+
* has already been consumed.
|
|
159
|
+
*/
|
|
160
|
+
requestCredentialsFromAuthCodeToken: (options: {
|
|
161
|
+
flowHandle: AuthCodeFlowHandle;
|
|
162
|
+
tokenResponse: TokenResponse;
|
|
163
|
+
signer?: AcceptCredentialOfferOptions['signer'];
|
|
164
|
+
}) => Promise<AcceptedCredentialResult>;
|
|
127
165
|
/**
|
|
128
166
|
* Parse an OpenID4VP Authorization Request URI. Does not hit the
|
|
129
167
|
* network. Returns a discriminated union so callers can detect
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vci/accept.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { CredentialOffer } from '../offer/types';
|
|
2
|
-
import { AcceptCredentialOfferOptions, AcceptedCredentialResult, ProofJwtSigner } from './types';
|
|
2
|
+
import { AcceptCredentialOfferOptions, AcceptedCredentialResult, ProofJwtSigner, TokenResponse } from './types';
|
|
3
|
+
export interface ExchangePreAuthCodeForTokenOptions {
|
|
4
|
+
offer: CredentialOffer;
|
|
5
|
+
options?: AcceptCredentialOfferOptions;
|
|
6
|
+
fetchImpl?: typeof fetch;
|
|
7
|
+
}
|
|
8
|
+
export interface RequestCredentialsFromPreAuthTokenOptions {
|
|
9
|
+
offer: CredentialOffer;
|
|
10
|
+
tokenResponse: TokenResponse;
|
|
11
|
+
signer: ProofJwtSigner;
|
|
12
|
+
options?: AcceptCredentialOfferOptions;
|
|
13
|
+
fetchImpl?: typeof fetch;
|
|
14
|
+
}
|
|
3
15
|
/**
|
|
4
16
|
* Drive the pre-authorized_code flow end-to-end for a single credential
|
|
5
17
|
* offer, returning the raw issued credentials.
|
|
@@ -21,4 +33,6 @@ export declare const acceptCredentialOffer: (args: {
|
|
|
21
33
|
options?: AcceptCredentialOfferOptions;
|
|
22
34
|
fetchImpl?: typeof fetch;
|
|
23
35
|
}) => Promise<AcceptedCredentialResult>;
|
|
36
|
+
export declare const exchangePreAuthCodeForToken: (args: ExchangePreAuthCodeForTokenOptions) => Promise<TokenResponse>;
|
|
37
|
+
export declare const requestCredentialsFromPreAuthToken: (args: RequestCredentialsFromPreAuthTokenOptions) => Promise<AcceptedCredentialResult>;
|
|
24
38
|
//# sourceMappingURL=accept.d.ts.map
|
package/dist/vci/accept.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accept.d.ts","sourceRoot":"","sources":["../../src/vci/accept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"accept.d.ts","sourceRoot":"","sources":["../../src/vci/accept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAqD,MAAM,gBAAgB,CAAC;AAUpG,OAAO,EACH,4BAA4B,EAC5B,wBAAwB,EACxB,cAAc,EACd,aAAa,EAChB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,kCAAkC;IAC/C,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,4BAA4B,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,yCAAyC;IACtD,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,4BAA4B,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,SAAgB;IAC9C,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,4BAA4B,CAAC;IACvC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC5B,KAAG,OAAO,CAAC,wBAAwB,CA4BnC,CAAC;AAEF,eAAO,MAAM,2BAA2B,SAC9B,kCAAkC,KACzC,OAAO,CAAC,aAAa,CAmBvB,CAAC;AAEF,eAAO,MAAM,kCAAkC,SACrC,yCAAyC,KAChD,OAAO,CAAC,wBAAwB,CAgBlC,CAAC"}
|
package/dist/vci/auth-code.d.ts
CHANGED
|
@@ -77,6 +77,7 @@ export interface AuthCodeFlowHandle {
|
|
|
77
77
|
issuer: string;
|
|
78
78
|
tokenEndpoint: string;
|
|
79
79
|
credentialEndpoint: string;
|
|
80
|
+
nonceEndpoint?: string;
|
|
80
81
|
configurationIds: string[];
|
|
81
82
|
redirectUri: string;
|
|
82
83
|
clientId: string;
|
|
@@ -98,6 +99,28 @@ export interface CompleteAuthCodeFlowOptions {
|
|
|
98
99
|
signer: ProofJwtSigner;
|
|
99
100
|
fetchImpl?: typeof fetch;
|
|
100
101
|
}
|
|
102
|
+
export interface ExchangeAuthCodeForTokenOptions {
|
|
103
|
+
flowHandle: AuthCodeFlowHandle;
|
|
104
|
+
code: string;
|
|
105
|
+
state?: string;
|
|
106
|
+
fetchImpl?: typeof fetch;
|
|
107
|
+
}
|
|
108
|
+
export interface FetchCredentialsForTokenOptions {
|
|
109
|
+
flowHandle: AuthCodeFlowHandle;
|
|
110
|
+
tokenResponse: TokenResponse;
|
|
111
|
+
signer: ProofJwtSigner;
|
|
112
|
+
initialNonce: {
|
|
113
|
+
c_nonce: string | undefined;
|
|
114
|
+
c_nonce_expires_in: number | undefined;
|
|
115
|
+
};
|
|
116
|
+
fetchImpl?: typeof fetch;
|
|
117
|
+
}
|
|
118
|
+
export interface RequestCredentialsFromAuthCodeTokenOptions {
|
|
119
|
+
flowHandle: AuthCodeFlowHandle;
|
|
120
|
+
tokenResponse: TokenResponse;
|
|
121
|
+
signer: ProofJwtSigner;
|
|
122
|
+
fetchImpl?: typeof fetch;
|
|
123
|
+
}
|
|
101
124
|
/**
|
|
102
125
|
* Phase 1 of the auth_code flow. Pure preparation — the only network
|
|
103
126
|
* hits are metadata lookups; no codes are exchanged yet.
|
|
@@ -111,6 +134,8 @@ export declare const beginAuthCodeFlow: (options: BeginAuthCodeFlowOptions) => P
|
|
|
111
134
|
* pipeline — only the token exchange differs.
|
|
112
135
|
*/
|
|
113
136
|
export declare const completeAuthCodeFlow: (options: CompleteAuthCodeFlowOptions) => Promise<AcceptedCredentialResult>;
|
|
137
|
+
export declare const exchangeAuthCodeForToken: (options: ExchangeAuthCodeForTokenOptions) => Promise<TokenResponse>;
|
|
138
|
+
export declare const requestCredentialsFromAuthCodeToken: (options: RequestCredentialsFromAuthCodeTokenOptions) => Promise<AcceptedCredentialResult>;
|
|
114
139
|
/**
|
|
115
140
|
* Build the authorization-endpoint URL a wallet opens in a user-agent
|
|
116
141
|
* to kick off the OAuth dance.
|
|
@@ -144,5 +169,12 @@ export declare const exchangeAuthorizationCode: (args: {
|
|
|
144
169
|
redirectUri: string;
|
|
145
170
|
fetchImpl?: typeof fetch;
|
|
146
171
|
}) => Promise<TokenResponse>;
|
|
172
|
+
/**
|
|
173
|
+
* Drive the post-token credential request loop. Identical in shape to
|
|
174
|
+
* what {@link ./accept.ts:acceptCredentialOffer} does after its token
|
|
175
|
+
* exchange; we keep a focused copy here to avoid tangling the two
|
|
176
|
+
* entry points.
|
|
177
|
+
*/
|
|
178
|
+
export declare const fetchCredentialsForToken: (args: FetchCredentialsForTokenOptions) => Promise<AcceptedCredentialResult>;
|
|
147
179
|
export type { CredentialIssuerMetadata, AuthorizationServerMetadata };
|
|
148
180
|
//# sourceMappingURL=auth-code.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-code.d.ts","sourceRoot":"","sources":["../../src/vci/auth-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,
|
|
1
|
+
{"version":3,"file":"auth-code.d.ts","sourceRoot":"","sources":["../../src/vci/auth-code.ts"],"names":[],"mappings":"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"}
|
package/dist/vci/decode.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CredentialFormat } from '@learncard/types';
|
|
1
2
|
/**
|
|
2
3
|
* Normalized representation of an issued credential, suitable for handing
|
|
3
4
|
* to the LearnCard store plane.
|
|
@@ -7,11 +8,28 @@
|
|
|
7
8
|
* - `rawFormat` — the format id the issuer returned it in (e.g. `jwt_vc_json`).
|
|
8
9
|
* - `jwt` — original compact JWS, preserved only for jwt-based formats so
|
|
9
10
|
* downstream verification can re-check the signature without re-fetching.
|
|
11
|
+
*
|
|
12
|
+
* Format-tagged metadata (optional; populated by writers that support
|
|
13
|
+
* the format-discriminated storage model — see ADR-0001):
|
|
14
|
+
* - `format` — wire-format discriminator matching the values from
|
|
15
|
+
* `@learncard/types.CredentialFormat`. Used by format-aware downstream
|
|
16
|
+
* code (verify dispatch, matcher, serializer) instead of pattern-matching
|
|
17
|
+
* `proof.type`.
|
|
18
|
+
* - `rawWireForm` — original on-the-wire representation. For SD-JWT-VC this
|
|
19
|
+
* is the compact `<JWT>~<disclosures>~` string; for JWT-VC it's the
|
|
20
|
+
* compact JWS; for W3C VCs the field stays undefined (`vc` IS the wire
|
|
21
|
+
* form). Authoritative source of truth — the `vc` wrapper is a display
|
|
22
|
+
* projection.
|
|
23
|
+
* - `semanticType` — fast filter hint without parsing. For SD-JWT-VC this
|
|
24
|
+
* is the `vct` claim; for W3C VCs it would be the last non-VC type entry.
|
|
10
25
|
*/
|
|
11
26
|
export interface NormalizedCredential {
|
|
12
27
|
vc: W3CVerifiableCredential;
|
|
13
28
|
rawFormat: string;
|
|
14
29
|
jwt?: string;
|
|
30
|
+
format?: CredentialFormat;
|
|
31
|
+
rawWireForm?: string;
|
|
32
|
+
semanticType?: string;
|
|
15
33
|
}
|
|
16
34
|
/**
|
|
17
35
|
* W3C VC Data Model shape. Only the fields we actually touch are typed —
|
package/dist/vci/decode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/vci/decode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../src/vci/decode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,uBAAuB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EACZ;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GACrC,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACnD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,yBAAyB,eACtB,OAAO,UACX,MAAM,KACf,oBAsBF,CAAC"}
|
package/dist/vci/index.d.ts
CHANGED
package/dist/vci/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vci/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vci/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type NonceEndpointResponse = {
|
|
2
|
+
c_nonce: string;
|
|
3
|
+
c_nonce_expires_in?: number;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* OID4VCI 1.0 Final §7.1 — POST to nonce_endpoint with no body and parse the
|
|
7
|
+
* returned c_nonce.
|
|
8
|
+
*/
|
|
9
|
+
export declare const fetchNonceFromEndpoint: (endpoint: string, fetchImpl?: typeof fetch) => Promise<NonceEndpointResponse>;
|
|
10
|
+
//# sourceMappingURL=nonce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonce.d.ts","sourceRoot":"","sources":["../../src/vci/nonce.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aACrB,MAAM,cACJ,OAAO,KAAK,KACzB,OAAO,CAAC,qBAAqB,CAuE/B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LearnCard } from '@learncard/core';
|
|
2
|
+
import type { NormalizedCredential, W3CVerifiableCredential } from './decode';
|
|
3
|
+
export declare const SD_JWT_VC_FORMAT = "dc+sd-jwt";
|
|
4
|
+
export declare const SD_JWT_VC_FORMAT_LEGACY = "vc+sd-jwt";
|
|
5
|
+
export declare const isSdJwtFormat: (format: string) => boolean;
|
|
6
|
+
export declare const deriveTypeFromVct: (vct: string | undefined) => string | undefined;
|
|
7
|
+
export declare const deriveNameFromVct: (vct: string | undefined) => string | undefined;
|
|
8
|
+
export declare const synthesizeSdJwtVc: (credential: unknown, format: string, learnCard: LearnCard<any, any, any>) => Promise<NormalizedCredential>;
|
|
9
|
+
export declare const extractSdJwtVct: (vc: W3CVerifiableCredential) => string | undefined;
|
|
10
|
+
//# sourceMappingURL=sd-jwt-vc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sd-jwt-vc.d.ts","sourceRoot":"","sources":["../../src/vci/sd-jwt-vc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAC5C,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,OACsB,CAAC;AAmBtE,eAAO,MAAM,iBAAiB,iDAAwB,CAAC;AACvD,eAAO,MAAM,iBAAiB,iDAAwB,CAAC;AAuHvD,eAAO,MAAM,iBAAiB,eACd,OAAO,UACX,MAAM,aACH,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KACpC,OAAO,CAAC,oBAAoB,CAoG9B,CAAC;AAEF,eAAO,MAAM,eAAe,OAAQ,uBAAuB,KAAG,MAAM,GAAG,SAOtE,CAAC"}
|
package/dist/vci/store.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LearnCard } from '@learncard/core';
|
|
2
|
+
import type { StoredCredentialEnvelope } from '@learncard/types';
|
|
2
3
|
import { W3CVerifiableCredential } from './decode';
|
|
3
4
|
import { AcceptedCredentialResult } from './types';
|
|
4
5
|
import { VciError } from './errors';
|
|
@@ -7,7 +8,20 @@ import { VciError } from './errors';
|
|
|
7
8
|
* default. Matches the LearnCloud plugin's declared `name`.
|
|
8
9
|
*/
|
|
9
10
|
export declare const DEFAULT_STORE_PLUGIN = "LearnCloud";
|
|
10
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Shape of the record passed to `learnCard.index.<plugin>.add(record)`.
|
|
13
|
+
*
|
|
14
|
+
* Index records are intentionally LIGHTWEIGHT metadata pointing at a
|
|
15
|
+
* storage URI — the credential body itself lives on the store plane.
|
|
16
|
+
* The index carries `format` and `semanticType` as queryable filter
|
|
17
|
+
* keys; the actual wire-form bytes live on the storage plane and are
|
|
18
|
+
* reached via `learnCard.read.get(record.uri)`.
|
|
19
|
+
*
|
|
20
|
+
* NOTE: do not add credential-body fields here. The storage plane
|
|
21
|
+
* holds bodies; the index holds metadata pointing at storage URIs.
|
|
22
|
+
* If you find yourself wanting `rawWireForm` or `compactSdJwt` on the
|
|
23
|
+
* index, the storage plane needs to evolve instead (see ADR-0001).
|
|
24
|
+
*/
|
|
11
25
|
export interface IndexRecord {
|
|
12
26
|
id: string;
|
|
13
27
|
uri: string;
|
|
@@ -15,6 +29,14 @@ export interface IndexRecord {
|
|
|
15
29
|
title?: string;
|
|
16
30
|
imgUrl?: string;
|
|
17
31
|
boostUri?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Format-tagged metadata. Populated by format-aware writers
|
|
34
|
+
* (currently the SD-JWT-VC path); legacy W3C paths leave these
|
|
35
|
+
* fields undefined. Format-aware readers filter by these fields
|
|
36
|
+
* without needing to read the credential body from storage.
|
|
37
|
+
*/
|
|
38
|
+
format?: import('@learncard/types').CredentialFormat;
|
|
39
|
+
semanticType?: string;
|
|
18
40
|
/** Index record schema version, matches existing wallet writes. */
|
|
19
41
|
__v: 1;
|
|
20
42
|
}
|
|
@@ -44,7 +66,7 @@ export interface StoreAcceptedCredentialsOptions {
|
|
|
44
66
|
* (e.g. tests, SQLite, a custom in-memory mock). If supplied these take
|
|
45
67
|
* precedence over the `storage` / `encrypt` defaults.
|
|
46
68
|
*/
|
|
47
|
-
upload?: (credential: W3CVerifiableCredential) => Promise<string>;
|
|
69
|
+
upload?: (credential: W3CVerifiableCredential | StoredCredentialEnvelope) => Promise<string>;
|
|
48
70
|
addToIndex?: (record: IndexRecord) => Promise<unknown>;
|
|
49
71
|
/** Custom id generator. Defaults to crypto.randomUUID() with a fallback. */
|
|
50
72
|
makeId?: () => string;
|
package/dist/vci/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/vci/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/vci/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAwB,uBAAuB,EAA6B,MAAM,UAAU,CAAC;AAEpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,kBAAkB,EAAE,gBAAgB,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,GAAG,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,+BAA+B;IAC5C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC7E,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IACtF,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,uBAAuB,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IACvF;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,uBAAuB,GAAG,wBAAwB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7F,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,4DAA4D;AAC5D,MAAM,WAAW,qBAAqB;IAClC,8DAA8D;IAC9D,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,EAAE,EAAE,uBAAuB,CAAC;IAC5B,gFAAgF;IAChF,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC;QACZ,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,QAAQ,CAAC;KACnB,CAAC,CAAC;CACN;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,cACtB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,YACzB,wBAAwB,YACzB,+BAA+B,KACzC,OAAO,CAAC,8BAA8B,CA+ExC,CAAC"}
|
package/dist/vci/types.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface CredentialIssuerMetadata {
|
|
|
16
16
|
credential_issuer: string;
|
|
17
17
|
/** Endpoint to POST credential requests to. Required. */
|
|
18
18
|
credential_endpoint: string;
|
|
19
|
+
/** Optional OID4VCI 1.0 Final endpoint for fetching a fresh c_nonce. */
|
|
20
|
+
nonce_endpoint?: string;
|
|
19
21
|
/** Optional endpoint for notification of credential acceptance. */
|
|
20
22
|
notification_endpoint?: string;
|
|
21
23
|
/**
|
package/dist/vci/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vci/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vci/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACrC,yDAAyD;IACzD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC;;;;OAIG;IACH,mCAAmC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9D,0DAA0D;IAC1D,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,iDAAiD,CAAC,EAAE,OAAO,CAAC;IAC5D,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,mDAAmD;AACnD,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sFAAsF;AACtF,MAAM,WAAW,wBAAwB;IACrC,uDAAuD;IACvD,WAAW,EAAE,KAAK,CAAC;QACf,oCAAoC;QACpC,MAAM,EAAE,MAAM,CAAC;QACf,2FAA2F;QAC3F,UAAU,EAAE,OAAO,CAAC;QACpB,yEAAyE;QACzE,gBAAgB,EAAE,MAAM,CAAC;KAC5B,CAAC,CAAC;IACH,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC3B,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChG;AAED,kFAAkF;AAClF,MAAM,WAAW,4BAA4B;IACzC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B"}
|
package/dist/vp/index.d.ts
CHANGED
|
@@ -10,8 +10,8 @@ export { parseAuthorizationRequestUri, resolvePresentationDefinitionByReference,
|
|
|
10
10
|
export type { ResolveAuthorizationRequestOptions } from './parse';
|
|
11
11
|
export { verifyAndDecodeRequestObject, RequestObjectError, builtInDidResolver, } from './request-object';
|
|
12
12
|
export type { RequestObjectErrorCode, VerifyRequestObjectOptions, DidResolver, DidDocument, VerificationMethod, } from './request-object';
|
|
13
|
-
export { selectCredentials, buildPresentationSubmission, inferCredentialFormat
|
|
14
|
-
export { evaluateField, matchInputDescriptor, queryJsonPath, satisfiesFilter
|
|
13
|
+
export { selectCredentials, buildPresentationSubmission, inferCredentialFormat } from './select';
|
|
14
|
+
export { evaluateField, matchInputDescriptor, queryJsonPath, satisfiesFilter } from './pex';
|
|
15
15
|
export type { AuthorizationRequest, ParsedAuthorizationRequest, PresentationDefinition, InputDescriptor, Constraints, Field, SubmissionRequirement, ClaimFormatDesignation, VpErrorCode, } from './types';
|
|
16
16
|
export { VpError } from './types';
|
|
17
17
|
export type { CandidateCredential, DescriptorCandidate, DescriptorSelection, SelectionResult, SelectedDescriptor, PresentationSubmission, PresentationSubmissionDescriptor, } from './select';
|
|
@@ -19,7 +19,7 @@ export type { DescriptorMatch, FieldMatch } from './pex';
|
|
|
19
19
|
export { buildPresentation, BuildPresentationError } from './present';
|
|
20
20
|
export type { VpFormat, ChosenCredential, BuildPresentationOptions, PreparedPresentation, BuildPresentationErrorCode, } from './present';
|
|
21
21
|
export { signPresentation, VpSignError } from './sign';
|
|
22
|
-
export type { VpToken, LdpVpSigner, SignPresentationOptions, SignPresentationHelpers, SignPresentationResult, VpSignErrorCode, } from './sign';
|
|
22
|
+
export type { VpToken, LdpVpSigner, SdJwtDiscloseFrame, SdJwtPresenter, SignPresentationOptions, SignPresentationHelpers, SignPresentationResult, VpSignErrorCode, } from './sign';
|
|
23
23
|
export { submitPresentation, VpSubmitError } from './submit';
|
|
24
24
|
export type { SubmitPresentationOptions, SubmitPresentationResult, VpSubmitErrorCode, } from './submit';
|
|
25
25
|
export { encryptResponseObject, JarmEncryptError, DEFAULT_JWE_ALG, DEFAULT_JWE_ENC, } from './encrypt';
|
package/dist/vp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACH,4BAA4B,EAC5B,wCAAwC,EACxC,2BAA2B,GAC9B,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,kCAAkC,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EACH,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACR,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,kBAAkB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACH,4BAA4B,EAC5B,wCAAwC,EACxC,2BAA2B,GAC9B,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,kCAAkC,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EACH,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACR,sBAAsB,EACtB,0BAA0B,EAC1B,WAAW,EACX,WAAW,EACX,kBAAkB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEjG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAE5F,YAAY,EACR,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,KAAK,EACL,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,YAAY,EACR,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,GACnC,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEtE,YAAY,EACR,QAAQ,EACR,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,GAC7B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAEvD,YAAY,EACR,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,GAClB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7D,YAAY,EACR,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,GACpB,MAAM,UAAU,CAAC;AAElB,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAClB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACR,4BAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GACxB,MAAM,WAAW,CAAC"}
|
package/dist/vp/present.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UnsignedVP } from '@learncard/types';
|
|
2
2
|
import type { CandidateCredential, PresentationSubmission } from './select';
|
|
3
3
|
import { PresentationDefinition } from './types';
|
|
4
|
+
import type { SdJwtDiscloseFrame } from './sign';
|
|
4
5
|
/**
|
|
5
6
|
* Slice 7a — **Verifiable Presentation construction**.
|
|
6
7
|
*
|
|
@@ -44,8 +45,15 @@ import { PresentationDefinition } from './types';
|
|
|
44
45
|
* `learnCard.invoke.issuePresentation`).
|
|
45
46
|
* - `jwt_vp_json` — compact JWS whose payload wraps the VP under a
|
|
46
47
|
* top-level `vp` claim (VCDM §6.3.1).
|
|
48
|
+
* - `dc+sd-jwt` / `vc+sd-jwt` — SD-JWT-VC passthrough. The compact
|
|
49
|
+
* `<JWT>~<disclosures>~<KB-JWT>` IS the presentation per OID4VP
|
|
50
|
+
* §6.1.1; the signing layer routes through
|
|
51
|
+
* `learnCard.invoke.presentSdJwtVc` instead of building a VP
|
|
52
|
+
* envelope. Mixed SD-JWT + VC selections are rejected
|
|
53
|
+
* (`unknown_credential_format`) — they would require multi-format
|
|
54
|
+
* `vp_token` arrays which Slice 3 doesn't yet model.
|
|
47
55
|
*/
|
|
48
|
-
export type VpFormat = 'ldp_vp' | 'jwt_vp_json';
|
|
56
|
+
export type VpFormat = 'ldp_vp' | 'jwt_vp_json' | 'dc+sd-jwt' | 'vc+sd-jwt';
|
|
49
57
|
/**
|
|
50
58
|
* A single user pick: "this candidate satisfies this input_descriptor".
|
|
51
59
|
* Wallets typically build this list from the SelectionResult by showing
|
|
@@ -55,6 +63,12 @@ export type VpFormat = 'ldp_vp' | 'jwt_vp_json';
|
|
|
55
63
|
export interface ChosenCredential {
|
|
56
64
|
descriptorId: string;
|
|
57
65
|
candidate: CandidateCredential;
|
|
66
|
+
/**
|
|
67
|
+
* Optional per-claim consent frame. Honored only when the chosen
|
|
68
|
+
* candidate is an SD-JWT-VC; ignored otherwise. Omitted = release
|
|
69
|
+
* every disclosable claim (no selective disclosure).
|
|
70
|
+
*/
|
|
71
|
+
disclose?: SdJwtDiscloseFrame;
|
|
58
72
|
}
|
|
59
73
|
export interface BuildPresentationOptions {
|
|
60
74
|
/** The verifier's Presentation Definition (used for `definition_id` + format hints). */
|
|
@@ -89,6 +103,10 @@ export interface PreparedPresentation {
|
|
|
89
103
|
* `learnCard.invoke.issuePresentation(unsignedVp, signingOptions)`.
|
|
90
104
|
* - For `jwt_vp_json`: wrap as the `vp` claim of a JWT and sign
|
|
91
105
|
* (Slice 7b).
|
|
106
|
+
*
|
|
107
|
+
* For SD-JWT-VC envelopes (`dc+sd-jwt` / `vc+sd-jwt`) this is a
|
|
108
|
+
* placeholder VP that the signing layer ignores; the source
|
|
109
|
+
* compact form lives in {@link sdJwtSource} instead.
|
|
92
110
|
*/
|
|
93
111
|
unsignedVp: UnsignedVP;
|
|
94
112
|
/** Ready-to-submit DIF PEX v2 Presentation Submission. */
|
|
@@ -101,6 +119,18 @@ export interface PreparedPresentation {
|
|
|
101
119
|
* decide serialization (compact JWS string vs. JSON object).
|
|
102
120
|
*/
|
|
103
121
|
innerFormats: string[];
|
|
122
|
+
/**
|
|
123
|
+
* Set ONLY when `vpFormat` is an SD-JWT-VC format. Carries the
|
|
124
|
+
* source compact `<JWT>~<disclosures>` the holder chose plus the
|
|
125
|
+
* per-claim consent frame; the signing layer feeds this into
|
|
126
|
+
* `learnCard.invoke.presentSdJwtVc` to apply selective disclosure
|
|
127
|
+
* + KB-JWT and emits the resulting compact string as the
|
|
128
|
+
* `vp_token` value (no W3C VP envelope).
|
|
129
|
+
*/
|
|
130
|
+
sdJwtSource?: {
|
|
131
|
+
compact: string;
|
|
132
|
+
disclose?: SdJwtDiscloseFrame;
|
|
133
|
+
};
|
|
104
134
|
}
|
|
105
135
|
export type BuildPresentationErrorCode = 'no_selections' | 'unknown_descriptor' | 'unknown_credential_format' | 'invalid_jwt_vc';
|
|
106
136
|
export declare class BuildPresentationError extends Error {
|
package/dist/vp/present.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../../src/vp/present.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EACR,mBAAmB,EACnB,sBAAsB,EAEzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH
|
|
1
|
+
{"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../../src/vp/present.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EACR,mBAAmB,EACnB,sBAAsB,EAEzB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,mBAAmB,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACrC,wFAAwF;IACxF,EAAE,EAAE,sBAAsB,CAAC;IAE3B;;;;OAIG;IACH,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B,uFAAuF;IACvF,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAE1B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACjC;;;;;;;;;;;;OAYG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB,0DAA0D;IAC1D,UAAU,EAAE,sBAAsB,CAAC;IAEnC,gCAAgC;IAChC,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;KACjC,CAAC;CACL;AAMD,MAAM,MAAM,0BAA0B,GAChC,eAAe,GACf,oBAAoB,GACpB,2BAA2B,GAC3B,gBAAgB,CAAC;AAEvB,qBAAa,sBAAuB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;gBAE9B,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM;CAKhE;AAMD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,YAAa,wBAAwB,KAAG,oBAmFrE,CAAC"}
|
package/dist/vp/select.d.ts
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
import { DescriptorMatch } from './pex';
|
|
2
2
|
import { PresentationDefinition } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Async parser callback used to surface SD-JWT-VC claims to the matcher.
|
|
5
|
+
*
|
|
6
|
+
* The PEX/DCQL matchers stay sync over their `subject` argument, but
|
|
7
|
+
* SD-JWT credentials carry their meaningful fields (`vct`, `iss`, plus
|
|
8
|
+
* every disclosable claim) inside the compact `proof.jwt` string —
|
|
9
|
+
* decoding requires SHA-256 hashing of disclosures, which is async-only
|
|
10
|
+
* in the browser via `crypto.subtle.digest`. Plugin-level code wires
|
|
11
|
+
* this to `learnCard.invoke.parseSdJwtVc` at runtime so the matcher
|
|
12
|
+
* stays decoupled from `@learncard/sd-jwt-vc-plugin`.
|
|
13
|
+
*
|
|
14
|
+
* Returned shape mirrors `ParsedSdJwtVc.claims` — the full reconstructed
|
|
15
|
+
* payload (envelope claims + reconstructed disclosable claims) so PEX
|
|
16
|
+
* paths like `$.vct`, `$.iss`, `$.given_name` resolve uniformly.
|
|
17
|
+
*/
|
|
18
|
+
export type SdJwtParser = (compact: string) => Promise<{
|
|
19
|
+
claims: Record<string, unknown>;
|
|
20
|
+
vct?: string;
|
|
21
|
+
issuer?: string;
|
|
22
|
+
holderPublicKey?: Record<string, unknown>;
|
|
23
|
+
}>;
|
|
24
|
+
export interface SelectCredentialsOptions {
|
|
25
|
+
/**
|
|
26
|
+
* Injected when the host LearnCard has the sd-jwt-vc plugin
|
|
27
|
+
* installed. When omitted, SD-JWT candidates fall back to the
|
|
28
|
+
* matcher's no-decode behavior — paths like `$.vct` won't resolve
|
|
29
|
+
* and the candidate effectively gets dropped. Plugin callers
|
|
30
|
+
* always provide this; direct callers can skip it for tests that
|
|
31
|
+
* don't exercise SD-JWT.
|
|
32
|
+
*/
|
|
33
|
+
sdJwtParser?: SdJwtParser;
|
|
34
|
+
}
|
|
3
35
|
/**
|
|
4
36
|
* Given the holder's full credential pool and a verifier's Presentation
|
|
5
37
|
* Definition, figure out which credentials are eligible to satisfy each
|
|
@@ -105,7 +137,7 @@ export interface SelectedDescriptor {
|
|
|
105
137
|
* The result preserves the PD's declared descriptor order so UIs can
|
|
106
138
|
* render "one row per descriptor".
|
|
107
139
|
*/
|
|
108
|
-
export declare const selectCredentials: (candidates: CandidateCredential[], pd: PresentationDefinition) => SelectionResult
|
|
140
|
+
export declare const selectCredentials: (candidates: CandidateCredential[], pd: PresentationDefinition, options?: SelectCredentialsOptions) => Promise<SelectionResult>;
|
|
109
141
|
/**
|
|
110
142
|
* Build a DIF PEX v2 Presentation Submission descriptor map. The
|
|
111
143
|
* caller is responsible for ordering selections (and computing the
|
package/dist/vp/select.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/vp/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAGH,sBAAsB,EAEzB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;GASG;AAMH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAChC,sGAAsG;IACtG,UAAU,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAEnC;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,gCAAgC,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,gCAAgC;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,gCAAgC,CAAC;CAClD;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,eACd,mBAAmB,EAAE,MAC7B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/vp/select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,eAAe,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,EAGH,sBAAsB,EAEzB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC,CAAC;AAEH,MAAM,WAAW,wBAAwB;IACrC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED;;;;;;;;;GASG;AAMH;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAChC,sGAAsG;IACtG,UAAU,EAAE,OAAO,CAAC;IACpB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAEnC;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,gCAAgC,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,gCAAgC;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,gCAAgC,CAAC;CAClD;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,eACd,mBAAmB,EAAE,MAC7B,sBAAsB,YACjB,wBAAwB,KAClC,OAAO,CAAC,eAAe,CA6DzB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,OAChC,sBAAsB,cACd,kBAAkB,EAAE,YACvB;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;CAAE,KAC1D,sBAwBF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,eAAgB,OAAO,KAAG,MAAM,GAAG,SAgCpE,CAAC"}
|
package/dist/vp/sign.d.ts
CHANGED
|
@@ -75,13 +75,15 @@ export interface SignPresentationOptions {
|
|
|
75
75
|
/**
|
|
76
76
|
* Verifier's `client_id` (from the Authorization Request). For
|
|
77
77
|
* `jwt_vp_json` this becomes the JWT `aud`; for `ldp_vp` it
|
|
78
|
-
* becomes the LD-proof `domain
|
|
78
|
+
* becomes the LD-proof `domain`; for SD-JWT-VC it becomes the
|
|
79
|
+
* KB-JWT `aud`.
|
|
79
80
|
*/
|
|
80
81
|
audience: string;
|
|
81
82
|
/**
|
|
82
83
|
* Verifier's `nonce` (from the Authorization Request). For
|
|
83
84
|
* `jwt_vp_json` this becomes the JWT `nonce`; for `ldp_vp` it
|
|
84
|
-
* becomes the LD-proof `challenge
|
|
85
|
+
* becomes the LD-proof `challenge`; for SD-JWT-VC it becomes the
|
|
86
|
+
* KB-JWT `nonce`.
|
|
85
87
|
*/
|
|
86
88
|
nonce: string;
|
|
87
89
|
/**
|
|
@@ -94,18 +96,54 @@ export interface SignPresentationOptions {
|
|
|
94
96
|
jti?: string;
|
|
95
97
|
/** Override `iat` for deterministic tests. Defaults to `Math.floor(Date.now() / 1000)`. */
|
|
96
98
|
iat?: number;
|
|
99
|
+
/**
|
|
100
|
+
* Required when `vpFormat` is `dc+sd-jwt` / `vc+sd-jwt`. Carries
|
|
101
|
+
* the source compact form from {@link buildPresentation}.sdJwtSource
|
|
102
|
+
* along with the user-chosen per-claim consent frame.
|
|
103
|
+
*/
|
|
104
|
+
sdJwtSource?: {
|
|
105
|
+
compact: string;
|
|
106
|
+
disclose?: SdJwtDiscloseFrame;
|
|
107
|
+
};
|
|
97
108
|
}
|
|
98
109
|
export interface SignPresentationHelpers {
|
|
99
110
|
/** Required when `vpFormat === 'jwt_vp_json'`. */
|
|
100
111
|
jwtSigner?: ProofJwtSigner;
|
|
101
112
|
/** Required when `vpFormat === 'ldp_vp'`. */
|
|
102
113
|
ldpVpSigner?: LdpVpSigner;
|
|
114
|
+
/** Required when `vpFormat` is `dc+sd-jwt` / `vc+sd-jwt`. */
|
|
115
|
+
sdJwtPresenter?: SdJwtPresenter;
|
|
103
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Per-claim presentation frame controlling selective disclosure. Keys
|
|
119
|
+
* map to claim names declared by the SD-JWT-VC's `_sd` array; values
|
|
120
|
+
* are `true` to release or `false`/omitted to hide. Nested objects
|
|
121
|
+
* mirror nested disclosures. Structurally compatible with
|
|
122
|
+
* `@sd-jwt/types.PresentationFrame` so openid4vc doesn't have to
|
|
123
|
+
* hard-depend on that package.
|
|
124
|
+
*/
|
|
125
|
+
export type SdJwtDiscloseFrame = {
|
|
126
|
+
[key: string]: boolean | SdJwtDiscloseFrame;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Callback that invokes `learnCard.invoke.presentSdJwtVc` (or an
|
|
130
|
+
* equivalent SD-JWT-VC presentation primitive). Receives the source
|
|
131
|
+
* compact, the verifier's audience+nonce, and the per-claim consent
|
|
132
|
+
* frame the user chose. Returns the holder-bound compact presentation
|
|
133
|
+
* that the wallet POSTs as `vp_token`.
|
|
134
|
+
*/
|
|
135
|
+
export type SdJwtPresenter = (compact: string, options: {
|
|
136
|
+
audience: string;
|
|
137
|
+
nonce: string;
|
|
138
|
+
disclose?: SdJwtDiscloseFrame;
|
|
139
|
+
}) => Promise<{
|
|
140
|
+
compact: string;
|
|
141
|
+
}>;
|
|
104
142
|
export interface SignPresentationResult {
|
|
105
143
|
vpToken: VpToken;
|
|
106
144
|
vpFormat: VpFormat;
|
|
107
145
|
}
|
|
108
|
-
export type VpSignErrorCode = 'missing_jwt_signer' | 'missing_ldp_signer' | 'jwt_sign_failed' | 'ldp_sign_failed' | 'holder_mismatch' | 'invalid_input';
|
|
146
|
+
export type VpSignErrorCode = 'missing_jwt_signer' | 'missing_ldp_signer' | 'missing_sd_jwt_presenter' | 'missing_sd_jwt_source' | 'jwt_sign_failed' | 'ldp_sign_failed' | 'sd_jwt_present_failed' | 'holder_mismatch' | 'invalid_input';
|
|
109
147
|
export declare class VpSignError extends Error {
|
|
110
148
|
readonly code: VpSignErrorCode;
|
|
111
149
|
constructor(code: VpSignErrorCode, message: string, options?: {
|