@sd-jwt/core 0.7.2 → 0.8.1-next.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.8.0](https://github.com/openwallet-foundation-labs/sd-jwt-js/compare/v0.7.2...v0.8.0) (2024-11-26)
7
+
8
+
9
+ ### Features
10
+
11
+ * add jws serialization feature ([#253](https://github.com/openwallet-foundation-labs/sd-jwt-js/issues/253)) ([e83b494](https://github.com/openwallet-foundation-labs/sd-jwt-js/commit/e83b4946595d043f56647e6cdc98ad34edf0acde))
12
+
13
+
14
+
15
+
16
+
6
17
  ## [0.7.2](https://github.com/openwallet-foundation-labs/sd-jwt-js/compare/v0.7.1...v0.7.2) (2024-07-19)
7
18
 
8
19
  **Note:** Version bump only for package @sd-jwt/core
package/dist/index.d.mts CHANGED
@@ -59,6 +59,7 @@ declare class SDJwt<Header extends Record<string, unknown> = Record<string, unkn
59
59
  }>;
60
60
  static fromEncode<Header extends Record<string, unknown> = Record<string, unknown>, Payload extends Record<string, unknown> = Record<string, unknown>, KBHeader extends kbHeader = kbHeader, KBPayload extends kbPayload = kbPayload>(encodedSdJwt: SDJWTCompact, hasher: Hasher): Promise<SDJwt<Header, Payload>>;
61
61
  present<T extends Record<string, unknown>>(presentFrame: PresentationFrame<T> | undefined, hasher: Hasher): Promise<SDJWTCompact>;
62
+ getPresentDisclosures<T extends Record<string, unknown>>(presentFrame: PresentationFrame<T> | undefined, hasher: Hasher): Promise<Disclosure<unknown>[]>;
62
63
  encodeSDJwt(): SDJWTCompact;
63
64
  keys(hasher: Hasher): Promise<string[]>;
64
65
  presentableKeys(hasher: Hasher): Promise<string[]>;
@@ -70,12 +71,101 @@ declare const pack: <T extends Record<string, unknown>>(claims: T, disclosureFra
70
71
  disclosures: Array<Disclosure>;
71
72
  }>;
72
73
 
74
+ type FlattenJSONData = {
75
+ jwtData: {
76
+ protected: string;
77
+ payload: string;
78
+ signature: string;
79
+ };
80
+ disclosures: Array<string>;
81
+ kb_jwt?: string;
82
+ };
83
+ type FlattenJSONSerialized = {
84
+ payload: string;
85
+ signature: string;
86
+ protected: string;
87
+ header: {
88
+ disclosures: Array<string>;
89
+ kb_jwt?: string;
90
+ };
91
+ };
92
+ declare class FlattenJSON {
93
+ disclosures: Array<string>;
94
+ kb_jwt?: string;
95
+ payload: string;
96
+ signature: string;
97
+ protected: string;
98
+ constructor(data: FlattenJSONData);
99
+ static fromEncode(encodedSdJwt: string): FlattenJSON;
100
+ static fromSerialized(json: FlattenJSONSerialized): FlattenJSON;
101
+ toJson(): FlattenJSONSerialized;
102
+ toEncoded(): string;
103
+ }
104
+
105
+ type GeneralJSONData = {
106
+ payload: string;
107
+ disclosures: Array<string>;
108
+ kb_jwt?: string;
109
+ signatures: Array<{
110
+ protected: string;
111
+ signature: string;
112
+ kid?: string;
113
+ }>;
114
+ };
115
+ type GeneralJSONSerialized = {
116
+ payload: string;
117
+ signatures: Array<{
118
+ header: {
119
+ disclosures?: Array<string>;
120
+ kid?: string;
121
+ kb_jwt?: string;
122
+ };
123
+ protected: string;
124
+ signature: string;
125
+ }>;
126
+ };
127
+ declare class GeneralJSON {
128
+ payload: string;
129
+ disclosures: Array<string>;
130
+ kb_jwt?: string;
131
+ signatures: Array<{
132
+ protected: string;
133
+ signature: string;
134
+ kid?: string;
135
+ }>;
136
+ constructor(data: GeneralJSONData);
137
+ static fromEncode(encodedSdJwt: string): GeneralJSON;
138
+ static fromSerialized(json: GeneralJSONSerialized): GeneralJSON;
139
+ toJson(): {
140
+ payload: string;
141
+ signatures: ({
142
+ header: {
143
+ kid: string | undefined;
144
+ disclosures?: undefined;
145
+ kb_jwt?: undefined;
146
+ };
147
+ protected: string;
148
+ signature: string;
149
+ } | {
150
+ header: {
151
+ disclosures: string[];
152
+ kid: string | undefined;
153
+ kb_jwt: string | undefined;
154
+ };
155
+ protected: string;
156
+ signature: string;
157
+ })[];
158
+ };
159
+ toEncoded(index: number): string;
160
+ addSignature(protectedHeader: Record<string, unknown>, signer: Signer, kid?: string): Promise<void>;
161
+ }
162
+
73
163
  declare const createDecoy: (hash: HasherAndAlg, saltGenerator: SaltGenerator) => Promise<string>;
74
164
 
75
165
  type SdJwtPayload = Record<string, unknown>;
76
166
  declare class SDJwtInstance<ExtendedPayload extends SdJwtPayload> {
77
167
  protected type?: string;
78
- static DEFAULT_hashAlg: string;
168
+ static readonly DEFAULT_hashAlg = "sha-256";
79
169
  protected userConfig: SDJWTConfig;
80
170
  constructor(userConfig?: SDJWTConfig);
81
171
  private createKBJwt;
@@ -116,6 +206,56 @@ declare class SDJwtInstance<ExtendedPayload extends SdJwtPayload> {
116
206
  keys(endcodedSDJwt: SDJWTCompact): Promise<string[]>;
117
207
  presentableKeys(endcodedSDJwt: SDJWTCompact): Promise<string[]>;
118
208
  getClaims(endcodedSDJwt: SDJWTCompact): Promise<unknown>;
209
+ toFlattenJSON(endcodedSDJwt: SDJWTCompact): FlattenJSON;
210
+ toGeneralJSON(endcodedSDJwt: SDJWTCompact): GeneralJSON;
211
+ }
212
+ declare class SDJwtGeneralJSONInstance<ExtendedPayload extends SdJwtPayload> {
213
+ protected type?: string;
214
+ static readonly DEFAULT_hashAlg = "sha-256";
215
+ protected userConfig: SDJWTConfig;
216
+ constructor(userConfig?: SDJWTConfig);
217
+ private createKBJwt;
218
+ private encodeObj;
219
+ issue<Payload extends ExtendedPayload>(payload: Payload, disclosureFrame: DisclosureFrame<Payload> | undefined, options: {
220
+ sigs: Array<{
221
+ signer: Signer;
222
+ alg: string;
223
+ kid: string;
224
+ header?: Record<string, unknown>;
225
+ }>;
226
+ }): Promise<GeneralJSON>;
227
+ /**
228
+ * Validates if the disclosureFrame contains any reserved fields. If so it will throw an error.
229
+ * @param disclosureFrame
230
+ * @returns
231
+ */
232
+ protected validateReservedFields<T extends ExtendedPayload>(disclosureFrame: DisclosureFrame<T>): void;
233
+ present<T extends Record<string, unknown>>(generalJSON: GeneralJSON, presentationFrame?: PresentationFrame<T>, options?: {
234
+ kb?: KBOptions;
235
+ }): Promise<GeneralJSON>;
236
+ verify(generalJSON: GeneralJSON, requiredClaimKeys?: string[], requireKeyBindings?: boolean): Promise<{
237
+ payload: unknown;
238
+ headers: any[];
239
+ kb?: undefined;
240
+ } | {
241
+ payload: unknown;
242
+ headers: any[];
243
+ kb: {
244
+ payload: _sd_jwt_types.kbPayload;
245
+ header: _sd_jwt_types.kbHeader;
246
+ };
247
+ }>;
248
+ private calculateSDHash;
249
+ validate(generalJSON: GeneralJSON): Promise<{
250
+ payload: unknown;
251
+ headers: any[];
252
+ }>;
253
+ config(newConfig: SDJWTConfig): void;
254
+ encode(sdJwt: GeneralJSON, index: number): SDJWTCompact;
255
+ decode(endcodedSDJwt: SDJWTCompact): GeneralJSON;
256
+ keys(generalSdjwt: GeneralJSON): Promise<string[]>;
257
+ presentableKeys(generalSdjwt: GeneralJSON): Promise<string[]>;
258
+ getClaims(generalSdjwt: GeneralJSON): Promise<unknown>;
119
259
  }
120
260
 
121
- export { Jwt, type JwtData, KBJwt, SDJwt, type SDJwtData, SDJwtInstance, type SdJwtPayload, createDecoy, listKeys, pack };
261
+ export { FlattenJSON, type FlattenJSONData, type FlattenJSONSerialized, GeneralJSON, type GeneralJSONData, type GeneralJSONSerialized, Jwt, type JwtData, KBJwt, SDJwt, type SDJwtData, SDJwtGeneralJSONInstance, SDJwtInstance, type SdJwtPayload, createDecoy, listKeys, pack };
package/dist/index.d.ts CHANGED
@@ -59,6 +59,7 @@ declare class SDJwt<Header extends Record<string, unknown> = Record<string, unkn
59
59
  }>;
60
60
  static fromEncode<Header extends Record<string, unknown> = Record<string, unknown>, Payload extends Record<string, unknown> = Record<string, unknown>, KBHeader extends kbHeader = kbHeader, KBPayload extends kbPayload = kbPayload>(encodedSdJwt: SDJWTCompact, hasher: Hasher): Promise<SDJwt<Header, Payload>>;
61
61
  present<T extends Record<string, unknown>>(presentFrame: PresentationFrame<T> | undefined, hasher: Hasher): Promise<SDJWTCompact>;
62
+ getPresentDisclosures<T extends Record<string, unknown>>(presentFrame: PresentationFrame<T> | undefined, hasher: Hasher): Promise<Disclosure<unknown>[]>;
62
63
  encodeSDJwt(): SDJWTCompact;
63
64
  keys(hasher: Hasher): Promise<string[]>;
64
65
  presentableKeys(hasher: Hasher): Promise<string[]>;
@@ -70,12 +71,101 @@ declare const pack: <T extends Record<string, unknown>>(claims: T, disclosureFra
70
71
  disclosures: Array<Disclosure>;
71
72
  }>;
72
73
 
74
+ type FlattenJSONData = {
75
+ jwtData: {
76
+ protected: string;
77
+ payload: string;
78
+ signature: string;
79
+ };
80
+ disclosures: Array<string>;
81
+ kb_jwt?: string;
82
+ };
83
+ type FlattenJSONSerialized = {
84
+ payload: string;
85
+ signature: string;
86
+ protected: string;
87
+ header: {
88
+ disclosures: Array<string>;
89
+ kb_jwt?: string;
90
+ };
91
+ };
92
+ declare class FlattenJSON {
93
+ disclosures: Array<string>;
94
+ kb_jwt?: string;
95
+ payload: string;
96
+ signature: string;
97
+ protected: string;
98
+ constructor(data: FlattenJSONData);
99
+ static fromEncode(encodedSdJwt: string): FlattenJSON;
100
+ static fromSerialized(json: FlattenJSONSerialized): FlattenJSON;
101
+ toJson(): FlattenJSONSerialized;
102
+ toEncoded(): string;
103
+ }
104
+
105
+ type GeneralJSONData = {
106
+ payload: string;
107
+ disclosures: Array<string>;
108
+ kb_jwt?: string;
109
+ signatures: Array<{
110
+ protected: string;
111
+ signature: string;
112
+ kid?: string;
113
+ }>;
114
+ };
115
+ type GeneralJSONSerialized = {
116
+ payload: string;
117
+ signatures: Array<{
118
+ header: {
119
+ disclosures?: Array<string>;
120
+ kid?: string;
121
+ kb_jwt?: string;
122
+ };
123
+ protected: string;
124
+ signature: string;
125
+ }>;
126
+ };
127
+ declare class GeneralJSON {
128
+ payload: string;
129
+ disclosures: Array<string>;
130
+ kb_jwt?: string;
131
+ signatures: Array<{
132
+ protected: string;
133
+ signature: string;
134
+ kid?: string;
135
+ }>;
136
+ constructor(data: GeneralJSONData);
137
+ static fromEncode(encodedSdJwt: string): GeneralJSON;
138
+ static fromSerialized(json: GeneralJSONSerialized): GeneralJSON;
139
+ toJson(): {
140
+ payload: string;
141
+ signatures: ({
142
+ header: {
143
+ kid: string | undefined;
144
+ disclosures?: undefined;
145
+ kb_jwt?: undefined;
146
+ };
147
+ protected: string;
148
+ signature: string;
149
+ } | {
150
+ header: {
151
+ disclosures: string[];
152
+ kid: string | undefined;
153
+ kb_jwt: string | undefined;
154
+ };
155
+ protected: string;
156
+ signature: string;
157
+ })[];
158
+ };
159
+ toEncoded(index: number): string;
160
+ addSignature(protectedHeader: Record<string, unknown>, signer: Signer, kid?: string): Promise<void>;
161
+ }
162
+
73
163
  declare const createDecoy: (hash: HasherAndAlg, saltGenerator: SaltGenerator) => Promise<string>;
74
164
 
75
165
  type SdJwtPayload = Record<string, unknown>;
76
166
  declare class SDJwtInstance<ExtendedPayload extends SdJwtPayload> {
77
167
  protected type?: string;
78
- static DEFAULT_hashAlg: string;
168
+ static readonly DEFAULT_hashAlg = "sha-256";
79
169
  protected userConfig: SDJWTConfig;
80
170
  constructor(userConfig?: SDJWTConfig);
81
171
  private createKBJwt;
@@ -116,6 +206,56 @@ declare class SDJwtInstance<ExtendedPayload extends SdJwtPayload> {
116
206
  keys(endcodedSDJwt: SDJWTCompact): Promise<string[]>;
117
207
  presentableKeys(endcodedSDJwt: SDJWTCompact): Promise<string[]>;
118
208
  getClaims(endcodedSDJwt: SDJWTCompact): Promise<unknown>;
209
+ toFlattenJSON(endcodedSDJwt: SDJWTCompact): FlattenJSON;
210
+ toGeneralJSON(endcodedSDJwt: SDJWTCompact): GeneralJSON;
211
+ }
212
+ declare class SDJwtGeneralJSONInstance<ExtendedPayload extends SdJwtPayload> {
213
+ protected type?: string;
214
+ static readonly DEFAULT_hashAlg = "sha-256";
215
+ protected userConfig: SDJWTConfig;
216
+ constructor(userConfig?: SDJWTConfig);
217
+ private createKBJwt;
218
+ private encodeObj;
219
+ issue<Payload extends ExtendedPayload>(payload: Payload, disclosureFrame: DisclosureFrame<Payload> | undefined, options: {
220
+ sigs: Array<{
221
+ signer: Signer;
222
+ alg: string;
223
+ kid: string;
224
+ header?: Record<string, unknown>;
225
+ }>;
226
+ }): Promise<GeneralJSON>;
227
+ /**
228
+ * Validates if the disclosureFrame contains any reserved fields. If so it will throw an error.
229
+ * @param disclosureFrame
230
+ * @returns
231
+ */
232
+ protected validateReservedFields<T extends ExtendedPayload>(disclosureFrame: DisclosureFrame<T>): void;
233
+ present<T extends Record<string, unknown>>(generalJSON: GeneralJSON, presentationFrame?: PresentationFrame<T>, options?: {
234
+ kb?: KBOptions;
235
+ }): Promise<GeneralJSON>;
236
+ verify(generalJSON: GeneralJSON, requiredClaimKeys?: string[], requireKeyBindings?: boolean): Promise<{
237
+ payload: unknown;
238
+ headers: any[];
239
+ kb?: undefined;
240
+ } | {
241
+ payload: unknown;
242
+ headers: any[];
243
+ kb: {
244
+ payload: _sd_jwt_types.kbPayload;
245
+ header: _sd_jwt_types.kbHeader;
246
+ };
247
+ }>;
248
+ private calculateSDHash;
249
+ validate(generalJSON: GeneralJSON): Promise<{
250
+ payload: unknown;
251
+ headers: any[];
252
+ }>;
253
+ config(newConfig: SDJWTConfig): void;
254
+ encode(sdJwt: GeneralJSON, index: number): SDJWTCompact;
255
+ decode(endcodedSDJwt: SDJWTCompact): GeneralJSON;
256
+ keys(generalSdjwt: GeneralJSON): Promise<string[]>;
257
+ presentableKeys(generalSdjwt: GeneralJSON): Promise<string[]>;
258
+ getClaims(generalSdjwt: GeneralJSON): Promise<unknown>;
119
259
  }
120
260
 
121
- export { Jwt, type JwtData, KBJwt, SDJwt, type SDJwtData, SDJwtInstance, type SdJwtPayload, createDecoy, listKeys, pack };
261
+ export { FlattenJSON, type FlattenJSONData, type FlattenJSONSerialized, GeneralJSON, type GeneralJSONData, type GeneralJSONSerialized, Jwt, type JwtData, KBJwt, SDJwt, type SDJwtData, SDJwtGeneralJSONInstance, SDJwtInstance, type SdJwtPayload, createDecoy, listKeys, pack };