@sd-jwt/decode 0.6.2-next.1 → 0.6.2-next.2

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/index.d.mts CHANGED
@@ -16,11 +16,7 @@ declare const decodeSdJwt: (sdjwt: string, hasher: Hasher) => Promise<DecodedSDJ
16
16
  declare const decodeSdJwtSync: (sdjwt: string, hasher: HasherSync) => DecodedSDJwt;
17
17
  declare const getClaims: <T>(rawPayload: Record<string, unknown>, disclosures: Array<Disclosure>, hasher: Hasher) => Promise<T>;
18
18
  declare const getClaimsSync: <T>(rawPayload: Record<string, unknown>, disclosures: Array<Disclosure>, hasher: HasherSync) => T;
19
- declare const unpackArray: (arr: Array<unknown>, map: Record<string, Disclosure>, prefix?: string) => {
20
- unpackedObj: unknown;
21
- disclosureKeymap: Record<string, string>;
22
- };
23
- declare const unpackObj: (obj: unknown, map: Record<string, Disclosure>, prefix?: string) => {
19
+ declare const unpackObj: (obj: unknown, map: Record<string, Disclosure>) => {
24
20
  unpackedObj: unknown;
25
21
  disclosureKeymap: Record<string, string>;
26
22
  };
@@ -54,4 +50,4 @@ type DecodedSDJwt = {
54
50
  };
55
51
  };
56
52
 
57
- export { type DecodedSDJwt, createHashMapping, createHashMappingSync, decodeJwt, decodeSdJwt, decodeSdJwtSync, getClaims, getClaimsSync, getSDAlgAndPayload, splitSdJwt, unpack, unpackArray, unpackObj, unpackSync };
53
+ export { type DecodedSDJwt, createHashMapping, createHashMappingSync, decodeJwt, decodeSdJwt, decodeSdJwtSync, getClaims, getClaimsSync, getSDAlgAndPayload, splitSdJwt, unpack, unpackObj, unpackSync };
package/dist/index.d.ts CHANGED
@@ -16,11 +16,7 @@ declare const decodeSdJwt: (sdjwt: string, hasher: Hasher) => Promise<DecodedSDJ
16
16
  declare const decodeSdJwtSync: (sdjwt: string, hasher: HasherSync) => DecodedSDJwt;
17
17
  declare const getClaims: <T>(rawPayload: Record<string, unknown>, disclosures: Array<Disclosure>, hasher: Hasher) => Promise<T>;
18
18
  declare const getClaimsSync: <T>(rawPayload: Record<string, unknown>, disclosures: Array<Disclosure>, hasher: HasherSync) => T;
19
- declare const unpackArray: (arr: Array<unknown>, map: Record<string, Disclosure>, prefix?: string) => {
20
- unpackedObj: unknown;
21
- disclosureKeymap: Record<string, string>;
22
- };
23
- declare const unpackObj: (obj: unknown, map: Record<string, Disclosure>, prefix?: string) => {
19
+ declare const unpackObj: (obj: unknown, map: Record<string, Disclosure>) => {
24
20
  unpackedObj: unknown;
25
21
  disclosureKeymap: Record<string, string>;
26
22
  };
@@ -54,4 +50,4 @@ type DecodedSDJwt = {
54
50
  };
55
51
  };
56
52
 
57
- export { type DecodedSDJwt, createHashMapping, createHashMappingSync, decodeJwt, decodeSdJwt, decodeSdJwtSync, getClaims, getClaimsSync, getSDAlgAndPayload, splitSdJwt, unpack, unpackArray, unpackObj, unpackSync };
53
+ export { type DecodedSDJwt, createHashMapping, createHashMappingSync, decodeJwt, decodeSdJwt, decodeSdJwtSync, getClaims, getClaimsSync, getSDAlgAndPayload, splitSdJwt, unpack, unpackObj, unpackSync };
package/dist/index.js CHANGED
@@ -64,7 +64,6 @@ __export(src_exports, {
64
64
  getSDAlgAndPayload: () => getSDAlgAndPayload,
65
65
  splitSdJwt: () => splitSdJwt,
66
66
  unpack: () => unpack,
67
- unpackArray: () => unpackArray,
68
67
  unpackObj: () => unpackObj,
69
68
  unpackSync: () => unpackSync
70
69
  });
@@ -162,21 +161,13 @@ var unpackArray = (arr, map, prefix = "") => {
162
161
  if (disclosed) {
163
162
  const presentKey = prefix ? `${prefix}.${idx}` : `${idx}`;
164
163
  keys[presentKey] = hash;
165
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
166
- disclosed.value,
167
- map,
168
- presentKey
169
- );
164
+ const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObjInternal(disclosed.value, map, presentKey);
170
165
  unpackedArray.push(unpackedObj);
171
166
  Object.assign(keys, disclosureKeys);
172
167
  }
173
168
  } else {
174
169
  const newKey = prefix ? `${prefix}.${idx}` : `${idx}`;
175
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
176
- item,
177
- map,
178
- newKey
179
- );
170
+ const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObjInternal(item, map, newKey);
180
171
  unpackedArray.push(unpackedObj);
181
172
  Object.assign(keys, disclosureKeys);
182
173
  }
@@ -186,7 +177,11 @@ var unpackArray = (arr, map, prefix = "") => {
186
177
  });
187
178
  return { unpackedObj: unpackedArray, disclosureKeymap: keys };
188
179
  };
189
- var unpackObj = (obj, map, prefix = "") => {
180
+ var unpackObj = (obj, map) => {
181
+ const copiedObj = JSON.parse(JSON.stringify(obj));
182
+ return unpackObjInternal(copiedObj, map);
183
+ };
184
+ var unpackObjInternal = (obj, map, prefix = "") => {
190
185
  const keys = {};
191
186
  if (typeof obj === "object" && obj !== null) {
192
187
  if (Array.isArray(obj)) {
@@ -195,11 +190,7 @@ var unpackObj = (obj, map, prefix = "") => {
195
190
  for (const key in obj) {
196
191
  if (key !== import_types.SD_DIGEST && key !== import_types.SD_LIST_KEY && typeof obj[key] === "object") {
197
192
  const newKey = prefix ? `${prefix}.${key}` : key;
198
- const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObj(
199
- obj[key],
200
- map,
201
- newKey
202
- );
193
+ const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObjInternal(obj[key], map, newKey);
203
194
  obj[key] = unpackedObj2;
204
195
  Object.assign(keys, disclosureKeys);
205
196
  }
@@ -212,11 +203,7 @@ var unpackObj = (obj, map, prefix = "") => {
212
203
  if (disclosed == null ? void 0 : disclosed.key) {
213
204
  const presentKey = prefix ? `${prefix}.${disclosed.key}` : disclosed.key;
214
205
  keys[presentKey] = hash;
215
- const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObj(
216
- disclosed.value,
217
- map,
218
- presentKey
219
- );
206
+ const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObjInternal(disclosed.value, map, presentKey);
220
207
  claims[disclosed.key] = unpackedObj2;
221
208
  Object.assign(keys, disclosureKeys);
222
209
  }
@@ -276,7 +263,6 @@ var unpackSync = (SdJwtPayload, disclosures, hasher) => {
276
263
  getSDAlgAndPayload,
277
264
  splitSdJwt,
278
265
  unpack,
279
- unpackArray,
280
266
  unpackObj,
281
267
  unpackSync
282
268
  });
package/dist/index.mjs CHANGED
@@ -130,21 +130,13 @@ var unpackArray = (arr, map, prefix = "") => {
130
130
  if (disclosed) {
131
131
  const presentKey = prefix ? `${prefix}.${idx}` : `${idx}`;
132
132
  keys[presentKey] = hash;
133
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
134
- disclosed.value,
135
- map,
136
- presentKey
137
- );
133
+ const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObjInternal(disclosed.value, map, presentKey);
138
134
  unpackedArray.push(unpackedObj);
139
135
  Object.assign(keys, disclosureKeys);
140
136
  }
141
137
  } else {
142
138
  const newKey = prefix ? `${prefix}.${idx}` : `${idx}`;
143
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
144
- item,
145
- map,
146
- newKey
147
- );
139
+ const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObjInternal(item, map, newKey);
148
140
  unpackedArray.push(unpackedObj);
149
141
  Object.assign(keys, disclosureKeys);
150
142
  }
@@ -154,7 +146,11 @@ var unpackArray = (arr, map, prefix = "") => {
154
146
  });
155
147
  return { unpackedObj: unpackedArray, disclosureKeymap: keys };
156
148
  };
157
- var unpackObj = (obj, map, prefix = "") => {
149
+ var unpackObj = (obj, map) => {
150
+ const copiedObj = JSON.parse(JSON.stringify(obj));
151
+ return unpackObjInternal(copiedObj, map);
152
+ };
153
+ var unpackObjInternal = (obj, map, prefix = "") => {
158
154
  const keys = {};
159
155
  if (typeof obj === "object" && obj !== null) {
160
156
  if (Array.isArray(obj)) {
@@ -163,11 +159,7 @@ var unpackObj = (obj, map, prefix = "") => {
163
159
  for (const key in obj) {
164
160
  if (key !== SD_DIGEST && key !== SD_LIST_KEY && typeof obj[key] === "object") {
165
161
  const newKey = prefix ? `${prefix}.${key}` : key;
166
- const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObj(
167
- obj[key],
168
- map,
169
- newKey
170
- );
162
+ const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObjInternal(obj[key], map, newKey);
171
163
  obj[key] = unpackedObj2;
172
164
  Object.assign(keys, disclosureKeys);
173
165
  }
@@ -180,11 +172,7 @@ var unpackObj = (obj, map, prefix = "") => {
180
172
  if (disclosed == null ? void 0 : disclosed.key) {
181
173
  const presentKey = prefix ? `${prefix}.${disclosed.key}` : disclosed.key;
182
174
  keys[presentKey] = hash;
183
- const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObj(
184
- disclosed.value,
185
- map,
186
- presentKey
187
- );
175
+ const { unpackedObj: unpackedObj2, disclosureKeymap: disclosureKeys } = unpackObjInternal(disclosed.value, map, presentKey);
188
176
  claims[disclosed.key] = unpackedObj2;
189
177
  Object.assign(keys, disclosureKeys);
190
178
  }
@@ -243,7 +231,6 @@ export {
243
231
  getSDAlgAndPayload,
244
232
  splitSdJwt,
245
233
  unpack,
246
- unpackArray,
247
234
  unpackObj,
248
235
  unpackSync
249
236
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-jwt/decode",
3
- "version": "0.6.2-next.1+9356aee",
3
+ "version": "0.6.2-next.2+2e92cb3",
4
4
  "description": "sd-jwt draft 7 implementation in typescript",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -37,11 +37,11 @@
37
37
  },
38
38
  "license": "Apache-2.0",
39
39
  "devDependencies": {
40
- "@sd-jwt/crypto-nodejs": "0.6.2-next.1+9356aee"
40
+ "@sd-jwt/crypto-nodejs": "0.6.2-next.2+2e92cb3"
41
41
  },
42
42
  "dependencies": {
43
- "@sd-jwt/types": "0.6.2-next.1+9356aee",
44
- "@sd-jwt/utils": "0.6.2-next.1+9356aee"
43
+ "@sd-jwt/types": "0.6.2-next.2+2e92cb3",
44
+ "@sd-jwt/utils": "0.6.2-next.2+2e92cb3"
45
45
  },
46
46
  "publishConfig": {
47
47
  "access": "public"
@@ -59,5 +59,5 @@
59
59
  "esm"
60
60
  ]
61
61
  },
62
- "gitHead": "9356aee736425adf4b3f0af2123d2bcfb82a28ea"
62
+ "gitHead": "2e92cb3abc27f6dbde19c7c016bc1f8ba60f9ff6"
63
63
  }
package/src/decode.ts CHANGED
@@ -144,7 +144,7 @@ export const getClaimsSync = <T>(
144
144
  return unpackedObj as T;
145
145
  };
146
146
 
147
- export const unpackArray = (
147
+ const unpackArray = (
148
148
  arr: Array<unknown>,
149
149
  map: Record<string, Disclosure>,
150
150
  prefix = '',
@@ -160,21 +160,15 @@ export const unpackArray = (
160
160
  const presentKey = prefix ? `${prefix}.${idx}` : `${idx}`;
161
161
  keys[presentKey] = hash;
162
162
 
163
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
164
- disclosed.value,
165
- map,
166
- presentKey,
167
- );
163
+ const { unpackedObj, disclosureKeymap: disclosureKeys } =
164
+ unpackObjInternal(disclosed.value, map, presentKey);
168
165
  unpackedArray.push(unpackedObj);
169
166
  Object.assign(keys, disclosureKeys);
170
167
  }
171
168
  } else {
172
169
  const newKey = prefix ? `${prefix}.${idx}` : `${idx}`;
173
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
174
- item,
175
- map,
176
- newKey,
177
- );
170
+ const { unpackedObj, disclosureKeymap: disclosureKeys } =
171
+ unpackObjInternal(item, map, newKey);
178
172
  unpackedArray.push(unpackedObj);
179
173
  Object.assign(keys, disclosureKeys);
180
174
  }
@@ -185,7 +179,12 @@ export const unpackArray = (
185
179
  return { unpackedObj: unpackedArray, disclosureKeymap: keys };
186
180
  };
187
181
 
188
- export const unpackObj = (
182
+ export const unpackObj = (obj: unknown, map: Record<string, Disclosure>) => {
183
+ const copiedObj = JSON.parse(JSON.stringify(obj));
184
+ return unpackObjInternal(copiedObj, map);
185
+ };
186
+
187
+ const unpackObjInternal = (
189
188
  obj: unknown,
190
189
  map: Record<string, Disclosure>,
191
190
  prefix = '',
@@ -203,11 +202,8 @@ export const unpackObj = (
203
202
  typeof (obj as Record<string, unknown>)[key] === 'object'
204
203
  ) {
205
204
  const newKey = prefix ? `${prefix}.${key}` : key;
206
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
207
- (obj as Record<string, unknown>)[key],
208
- map,
209
- newKey,
210
- );
205
+ const { unpackedObj, disclosureKeymap: disclosureKeys } =
206
+ unpackObjInternal((obj as Record<string, unknown>)[key], map, newKey);
211
207
  (obj as Record<string, unknown>)[key] = unpackedObj;
212
208
  Object.assign(keys, disclosureKeys);
213
209
  }
@@ -226,11 +222,8 @@ export const unpackObj = (
226
222
  : disclosed.key;
227
223
  keys[presentKey] = hash;
228
224
 
229
- const { unpackedObj, disclosureKeymap: disclosureKeys } = unpackObj(
230
- disclosed.value,
231
- map,
232
- presentKey,
233
- );
225
+ const { unpackedObj, disclosureKeymap: disclosureKeys } =
226
+ unpackObjInternal(disclosed.value, map, presentKey);
234
227
  claims[disclosed.key] = unpackedObj;
235
228
  Object.assign(keys, disclosureKeys);
236
229
  }
@@ -281,7 +274,8 @@ export const getSDAlgAndPayload = (SdJwtPayload: Record<string, unknown>) => {
281
274
  };
282
275
 
283
276
  // Match the digests of the disclosures with the claims and extract the claims
284
- // unpack function use unpackObj and unpackArray to recursively unpack the claims
277
+ // unpack function use unpackObjInternal and unpackArray to recursively unpack the claims
278
+ // Since getSDAlgAndPayload create new object So we don't need to clone it again
285
279
  export const unpack = async (
286
280
  SdJwtPayload: Record<string, unknown>,
287
281
  disclosures: Array<Disclosure>,
@@ -1,5 +1,6 @@
1
1
  import { describe, expect, test } from 'vitest';
2
2
  import {
3
+ createHashMapping,
3
4
  decodeJwt,
4
5
  decodeSdJwt,
5
6
  decodeSdJwtSync,
@@ -7,6 +8,7 @@ import {
7
8
  getClaimsSync,
8
9
  getSDAlgAndPayload,
9
10
  splitSdJwt,
11
+ unpackObj,
10
12
  } from '../index';
11
13
  import { digest } from '@sd-jwt/crypto-nodejs';
12
14
 
@@ -93,6 +95,26 @@ describe('decode tests', () => {
93
95
  expect(decodedSdJwt.jwt).toBeDefined();
94
96
  });
95
97
 
98
+ test('decode sdjwt sync (with KB)', () => {
99
+ const sdjwt =
100
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd~WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ~WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ~eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA';
101
+ const decodedSdJwt = decodeSdJwtSync(sdjwt, digest);
102
+ expect(decodedSdJwt).toBeDefined();
103
+ expect(decodedSdJwt.kbJwt).toBeDefined();
104
+ expect(decodedSdJwt.disclosures.length).toEqual(3);
105
+ expect(decodedSdJwt.jwt).toBeDefined();
106
+ });
107
+
108
+ test('decode sdjwt (with KB)', async () => {
109
+ const sdjwt =
110
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd~WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ~WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ~eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA';
111
+ const decodedSdJwt = await decodeSdJwt(sdjwt, digest);
112
+ expect(decodedSdJwt).toBeDefined();
113
+ expect(decodedSdJwt.kbJwt).toBeDefined();
114
+ expect(decodedSdJwt.disclosures.length).toEqual(3);
115
+ expect(decodedSdJwt.jwt).toBeDefined();
116
+ });
117
+
96
118
  test('get claims', async () => {
97
119
  const sdjwt =
98
120
  'eyJ0eXAiOiJzZC1qd3QiLCJhbGciOiJFZERTQSJ9.eyJfc2QiOlsiaWQ1azZ1ZVplVTY4bExaMlU2YjJJbF9QR3ZKb1RDMlpkMkpwY0RwMzFIWSJdLCJfc2RfYWxnIjoic2hhLTI1NiJ9.GiLF_HhacrstqCJ223VvWOoJJWU8qk4dYQHklSMwxv36pPF_7ER53Wbty1qYRlQ6NeMUdBRRdj9JQLLCzz1gCQ~WyI2NTMxNDA2ZmVhZmU0YjBmIiwiZm9vIiwiYmFyIl0~';
@@ -161,4 +183,20 @@ describe('decode tests', () => {
161
183
  const { _sd_alg, payload } = getSDAlgAndPayload({});
162
184
  expect(_sd_alg).toBe('sha-256');
163
185
  });
186
+
187
+ test('unpackObj clone', async () => {
188
+ const sdjwt =
189
+ 'eyJ0eXAiOiJzZC1qd3QiLCJhbGciOiJFZERTQSJ9.eyJ0ZXN0Ijp7Il9zZCI6WyJqVEszMHNleDZhYV9kUk1KSWZDR056Q0FwbVB5MzRRNjNBa3QzS3hhSktzIl19LCJfc2QiOlsiME9nMi1ReG95eW1UOGNnVzZZUjVSSFpQLUJuR2tHUi1NM2otLV92RWlzSSIsIkcwZ3lHNnExVFMyUlQxMkZ3X2RRRDVVcjlZc1AwZlVWOXVtQWdGMC1jQ1EiXSwiX3NkX2FsZyI6InNoYS0yNTYifQ.ggEyE4SeDO2Hu3tol3VLmi7NQj56yKzKQDaafocgkLrUBdivghohtzrfcbrMN7CRufJ_Cnh0EL54kymXLGTdDQ~WyIwNGU0MjAzOWU4ZWFiOWRjIiwiYSIsIjEiXQ~WyIwOGE1Yjc5MjMyYjAzYzBhIiwiMSJd~WyJiNWE2YjUzZGQwYTFmMGIwIiwienp6IiwieHh4Il0~WyIxYzdmOTE4ZTE0MjA2NzZiIiwiZm9vIiwiYmFyIl0~WyJmZjYxYzQ5ZGU2NjFiYzMxIiwiYXJyIixbeyIuLi4iOiJTSG96VW5KNUpkd0ZtTjVCbXB5dXZCWGZfZWRjckVvcExPYThTVlBFUmg0In0sIjIiLHsiX3NkIjpbIkpuODNhZkp0OGx4NG1FMzZpRkZyS2U2R2VnN0dlVUQ4Z3UwdVo3NnRZcW8iXX1dXQ~';
190
+ const decodedSdJwt = await decodeSdJwt(sdjwt, digest);
191
+ const jwtPayload = JSON.parse(JSON.stringify(decodedSdJwt.jwt.payload));
192
+
193
+ const { _sd_alg, payload } = getSDAlgAndPayload(decodedSdJwt.jwt.payload);
194
+ const hash = { hasher: digest, alg: _sd_alg };
195
+ const map = await createHashMapping(decodedSdJwt.disclosures, hash);
196
+
197
+ const { unpackedObj } = unpackObj(decodedSdJwt.jwt.payload, map);
198
+
199
+ expect(unpackedObj).toBeDefined();
200
+ expect(jwtPayload).toStrictEqual(decodedSdJwt.jwt.payload);
201
+ });
164
202
  });