@sd-jwt/core 0.9.3-next.2 → 0.9.3-next.4

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.js CHANGED
@@ -55,8 +55,8 @@ var __async = (__this, __arguments, generator) => {
55
55
  };
56
56
 
57
57
  // src/index.ts
58
- var src_exports = {};
59
- __export(src_exports, {
58
+ var index_exports = {};
59
+ __export(index_exports, {
60
60
  FlattenJSON: () => FlattenJSON,
61
61
  GeneralJSON: () => GeneralJSON,
62
62
  Jwt: () => Jwt,
@@ -68,7 +68,7 @@ __export(src_exports, {
68
68
  listKeys: () => listKeys,
69
69
  pack: () => pack
70
70
  });
71
- module.exports = __toCommonJS(src_exports);
71
+ module.exports = __toCommonJS(index_exports);
72
72
  var import_utils7 = require("@sd-jwt/utils");
73
73
 
74
74
  // src/jwt.ts
@@ -340,8 +340,7 @@ var SDJwt = class _SDJwt {
340
340
  var listKeys = (obj, prefix = "") => {
341
341
  const keys = [];
342
342
  for (const key in obj) {
343
- if (obj[key] === void 0)
344
- continue;
343
+ if (obj[key] === void 0) continue;
345
344
  const newKey = prefix ? `${prefix}.${key}` : key;
346
345
  keys.push(newKey);
347
346
  if (obj[key] && typeof obj[key] === "object" && obj[key] !== null) {
@@ -490,10 +489,16 @@ var FlattenJSON = class _FlattenJSON {
490
489
  }
491
490
  toEncoded() {
492
491
  var _a;
492
+ const data = [];
493
493
  const jwt = `${this.protected}.${this.payload}.${this.signature}`;
494
- const disclosures = this.disclosures.join(import_types3.SD_SEPARATOR);
494
+ data.push(jwt);
495
+ if (this.disclosures && this.disclosures.length > 0) {
496
+ const disclosures = this.disclosures.join(import_types3.SD_SEPARATOR);
497
+ data.push(disclosures);
498
+ }
495
499
  const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
496
- return [jwt, disclosures, kb_jwt].join(import_types3.SD_SEPARATOR);
500
+ data.push(kb_jwt);
501
+ return data.join(import_types3.SD_SEPARATOR);
497
502
  }
498
503
  };
499
504
 
@@ -577,11 +582,17 @@ var GeneralJSON = class _GeneralJSON {
577
582
  if (index < 0 || index >= this.signatures.length) {
578
583
  throw new import_utils6.SDJWTException("Index out of bounds");
579
584
  }
585
+ const data = [];
580
586
  const { protected: protectedHeader, signature } = this.signatures[index];
581
- const disclosures = this.disclosures.join(import_types4.SD_SEPARATOR);
582
- const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
583
587
  const jwt = `${protectedHeader}.${this.payload}.${signature}`;
584
- return [jwt, disclosures, kb_jwt].join(import_types4.SD_SEPARATOR);
588
+ data.push(jwt);
589
+ if (this.disclosures && this.disclosures.length > 0) {
590
+ const disclosures = this.disclosures.join(import_types4.SD_SEPARATOR);
591
+ data.push(disclosures);
592
+ }
593
+ const kb = (_a = this.kb_jwt) != null ? _a : "";
594
+ data.push(kb);
595
+ return data.join(import_types4.SD_SEPARATOR);
585
596
  }
586
597
  addSignature(protectedHeader, signer, kid) {
587
598
  return __async(this, null, function* () {
@@ -703,8 +714,7 @@ var _SDJwtInstance = class _SDJwtInstance {
703
714
  }
704
715
  const hasher = this.userConfig.hasher;
705
716
  const sdjwt = yield SDJwt.fromEncode(encodedSDJwt, hasher);
706
- if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload))
707
- throw new import_utils7.SDJWTException("Payload not found");
717
+ if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload)) throw new import_utils7.SDJWTException("Payload not found");
708
718
  const presentSdJwtWithoutKb = yield sdjwt.present(
709
719
  presentationFrame,
710
720
  hasher
@@ -952,8 +962,7 @@ var SDJwtGeneralJSONInstance = class {
952
962
  const hasher = this.userConfig.hasher;
953
963
  const encodedSDJwt = generalJSON.toEncoded(0);
954
964
  const sdjwt = yield SDJwt.fromEncode(encodedSDJwt, hasher);
955
- if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload))
956
- throw new import_utils7.SDJWTException("Payload not found");
965
+ if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload)) throw new import_utils7.SDJWTException("Payload not found");
957
966
  const disclosures = yield sdjwt.getPresentDisclosures(
958
967
  presentationFrame,
959
968
  hasher
package/dist/index.mjs CHANGED
@@ -322,8 +322,7 @@ var SDJwt = class _SDJwt {
322
322
  var listKeys = (obj, prefix = "") => {
323
323
  const keys = [];
324
324
  for (const key in obj) {
325
- if (obj[key] === void 0)
326
- continue;
325
+ if (obj[key] === void 0) continue;
327
326
  const newKey = prefix ? `${prefix}.${key}` : key;
328
327
  keys.push(newKey);
329
328
  if (obj[key] && typeof obj[key] === "object" && obj[key] !== null) {
@@ -475,10 +474,16 @@ var FlattenJSON = class _FlattenJSON {
475
474
  }
476
475
  toEncoded() {
477
476
  var _a;
477
+ const data = [];
478
478
  const jwt = `${this.protected}.${this.payload}.${this.signature}`;
479
- const disclosures = this.disclosures.join(SD_SEPARATOR2);
479
+ data.push(jwt);
480
+ if (this.disclosures && this.disclosures.length > 0) {
481
+ const disclosures = this.disclosures.join(SD_SEPARATOR2);
482
+ data.push(disclosures);
483
+ }
480
484
  const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
481
- return [jwt, disclosures, kb_jwt].join(SD_SEPARATOR2);
485
+ data.push(kb_jwt);
486
+ return data.join(SD_SEPARATOR2);
482
487
  }
483
488
  };
484
489
 
@@ -562,11 +567,17 @@ var GeneralJSON = class _GeneralJSON {
562
567
  if (index < 0 || index >= this.signatures.length) {
563
568
  throw new SDJWTException5("Index out of bounds");
564
569
  }
570
+ const data = [];
565
571
  const { protected: protectedHeader, signature } = this.signatures[index];
566
- const disclosures = this.disclosures.join(SD_SEPARATOR3);
567
- const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
568
572
  const jwt = `${protectedHeader}.${this.payload}.${signature}`;
569
- return [jwt, disclosures, kb_jwt].join(SD_SEPARATOR3);
573
+ data.push(jwt);
574
+ if (this.disclosures && this.disclosures.length > 0) {
575
+ const disclosures = this.disclosures.join(SD_SEPARATOR3);
576
+ data.push(disclosures);
577
+ }
578
+ const kb = (_a = this.kb_jwt) != null ? _a : "";
579
+ data.push(kb);
580
+ return data.join(SD_SEPARATOR3);
570
581
  }
571
582
  addSignature(protectedHeader, signer, kid) {
572
583
  return __async(this, null, function* () {
@@ -688,8 +699,7 @@ var _SDJwtInstance = class _SDJwtInstance {
688
699
  }
689
700
  const hasher = this.userConfig.hasher;
690
701
  const sdjwt = yield SDJwt.fromEncode(encodedSDJwt, hasher);
691
- if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload))
692
- throw new SDJWTException6("Payload not found");
702
+ if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload)) throw new SDJWTException6("Payload not found");
693
703
  const presentSdJwtWithoutKb = yield sdjwt.present(
694
704
  presentationFrame,
695
705
  hasher
@@ -937,8 +947,7 @@ var SDJwtGeneralJSONInstance = class {
937
947
  const hasher = this.userConfig.hasher;
938
948
  const encodedSDJwt = generalJSON.toEncoded(0);
939
949
  const sdjwt = yield SDJwt.fromEncode(encodedSDJwt, hasher);
940
- if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload))
941
- throw new SDJWTException6("Payload not found");
950
+ if (!((_a = sdjwt.jwt) == null ? void 0 : _a.payload)) throw new SDJWTException6("Payload not found");
942
951
  const disclosures = yield sdjwt.getPresentDisclosures(
943
952
  presentationFrame,
944
953
  hasher
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sd-jwt/core",
3
- "version": "0.9.3-next.2+68b4ec4",
3
+ "version": "0.9.3-next.4+cc455a6",
4
4
  "description": "sd-jwt draft 7 implementation in typescript",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -38,13 +38,13 @@
38
38
  },
39
39
  "license": "Apache-2.0",
40
40
  "devDependencies": {
41
- "@sd-jwt/crypto-nodejs": "0.9.3-next.2+68b4ec4"
41
+ "@sd-jwt/crypto-nodejs": "0.9.3-next.4+cc455a6"
42
42
  },
43
43
  "dependencies": {
44
- "@sd-jwt/decode": "0.9.3-next.2+68b4ec4",
45
- "@sd-jwt/present": "0.9.3-next.2+68b4ec4",
46
- "@sd-jwt/types": "0.9.3-next.2+68b4ec4",
47
- "@sd-jwt/utils": "0.9.3-next.2+68b4ec4"
44
+ "@sd-jwt/decode": "0.9.3-next.4+cc455a6",
45
+ "@sd-jwt/present": "0.9.3-next.4+cc455a6",
46
+ "@sd-jwt/types": "0.9.3-next.4+cc455a6",
47
+ "@sd-jwt/utils": "0.9.3-next.4+cc455a6"
48
48
  },
49
49
  "publishConfig": {
50
50
  "access": "public"
@@ -62,5 +62,5 @@
62
62
  "esm"
63
63
  ]
64
64
  },
65
- "gitHead": "68b4ec49db47d8fdee533646a05495bb2be729d0"
65
+ "gitHead": "cc455a6f3d431fa59cca1d21dad49daac135d3bc"
66
66
  }
@@ -82,9 +82,18 @@ export class FlattenJSON {
82
82
  }
83
83
 
84
84
  public toEncoded() {
85
+ const data: string[] = [];
86
+
85
87
  const jwt = `${this.protected}.${this.payload}.${this.signature}`;
86
- const disclosures = this.disclosures.join(SD_SEPARATOR);
88
+ data.push(jwt);
89
+
90
+ if (this.disclosures && this.disclosures.length > 0) {
91
+ const disclosures = this.disclosures.join(SD_SEPARATOR);
92
+ data.push(disclosures);
93
+ }
94
+
87
95
  const kb_jwt = this.kb_jwt ?? '';
88
- return [jwt, disclosures, kb_jwt].join(SD_SEPARATOR);
96
+ data.push(kb_jwt);
97
+ return data.join(SD_SEPARATOR);
89
98
  }
90
99
  }
@@ -116,12 +116,20 @@ export class GeneralJSON {
116
116
  if (index < 0 || index >= this.signatures.length) {
117
117
  throw new SDJWTException('Index out of bounds');
118
118
  }
119
+ const data: string[] = [];
119
120
 
120
121
  const { protected: protectedHeader, signature } = this.signatures[index];
121
- const disclosures = this.disclosures.join(SD_SEPARATOR);
122
- const kb_jwt = this.kb_jwt ?? '';
123
122
  const jwt = `${protectedHeader}.${this.payload}.${signature}`;
124
- return [jwt, disclosures, kb_jwt].join(SD_SEPARATOR);
123
+ data.push(jwt);
124
+
125
+ if (this.disclosures && this.disclosures.length > 0) {
126
+ const disclosures = this.disclosures.join(SD_SEPARATOR);
127
+ data.push(disclosures);
128
+ }
129
+
130
+ const kb = this.kb_jwt ?? '';
131
+ data.push(kb);
132
+ return data.join(SD_SEPARATOR);
125
133
  }
126
134
 
127
135
  public async addSignature(
package/src/index.ts CHANGED
@@ -18,7 +18,6 @@ import {
18
18
  type JwtPayload,
19
19
  type Signer,
20
20
  IANA_HASH_ALGORITHMS,
21
- type HashAlgorithm,
22
21
  } from '@sd-jwt/types';
23
22
  import { getSDAlgAndPayload } from '@sd-jwt/decode';
24
23
  import { FlattenJSON } from './flattenJSON';
@@ -53,4 +53,70 @@ describe('FlattenJSON', () => {
53
53
 
54
54
  expect(result.toEncoded()).toEqual(compact);
55
55
  });
56
+
57
+ test('fromSerialized without disclosures and KB JWT', () => {
58
+ const flattenJSON = {
59
+ payload:
60
+ 'eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0',
61
+ signature:
62
+ 'n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg',
63
+ protected: 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9',
64
+ header: {
65
+ disclosures: [],
66
+ },
67
+ };
68
+
69
+ const result = FlattenJSON.fromSerialized(flattenJSON);
70
+ expect(result).toBeDefined();
71
+ const compact =
72
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~';
73
+
74
+ expect(result.toEncoded()).toEqual(compact);
75
+ });
76
+
77
+ test('fromSerialized without KB JWT', () => {
78
+ const flattenJSON = {
79
+ payload:
80
+ 'eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0',
81
+ signature:
82
+ 'n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg',
83
+ protected: 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9',
84
+ header: {
85
+ disclosures: [
86
+ 'WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd',
87
+ 'WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ',
88
+ 'WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ',
89
+ ],
90
+ },
91
+ };
92
+
93
+ const result = FlattenJSON.fromSerialized(flattenJSON);
94
+ expect(result).toBeDefined();
95
+ const compact =
96
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd~WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ~WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ~';
97
+
98
+ expect(result.toEncoded()).toEqual(compact);
99
+ });
100
+
101
+ test('fromSerialized without disclosures', () => {
102
+ const flattenJSON = {
103
+ payload:
104
+ 'eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0',
105
+ signature:
106
+ 'n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg',
107
+ protected: 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9',
108
+ header: {
109
+ disclosures: [],
110
+ kb_jwt:
111
+ 'eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA',
112
+ },
113
+ };
114
+
115
+ const result = FlattenJSON.fromSerialized(flattenJSON);
116
+ expect(result).toBeDefined();
117
+ const compact =
118
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA';
119
+
120
+ expect(result.toEncoded()).toEqual(compact);
121
+ });
56
122
  });
@@ -20,7 +20,7 @@ const createSignerVerifier = () => {
20
20
  return { signer, verifier };
21
21
  };
22
22
 
23
- describe('FlattenJSON', () => {
23
+ describe('GeneralJSON', () => {
24
24
  test('fromEncode', () => {
25
25
  const compact =
26
26
  'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd~WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ~WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ~eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA';
@@ -79,6 +79,81 @@ describe('FlattenJSON', () => {
79
79
  expect(result.toEncoded(0)).toEqual(compact);
80
80
  });
81
81
 
82
+ test('fromSerialized without disclosures, KB JWT', () => {
83
+ const generalJSON = {
84
+ payload:
85
+ 'eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0',
86
+ signatures: [
87
+ {
88
+ protected: 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9',
89
+ signature:
90
+ 'n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg',
91
+ header: {
92
+ disclosures: [],
93
+ },
94
+ },
95
+ ],
96
+ };
97
+
98
+ const compact =
99
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~';
100
+ const result = GeneralJSON.fromSerialized(generalJSON);
101
+ expect(result).toBeDefined();
102
+ expect(result.toEncoded(0)).toEqual(compact);
103
+ });
104
+
105
+ test('fromSerialized without KB JWT', () => {
106
+ const generalJSON = {
107
+ payload:
108
+ 'eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0',
109
+ signatures: [
110
+ {
111
+ protected: 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9',
112
+ signature:
113
+ 'n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg',
114
+ header: {
115
+ disclosures: [
116
+ 'WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd',
117
+ 'WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ',
118
+ 'WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ',
119
+ ],
120
+ },
121
+ },
122
+ ],
123
+ };
124
+
125
+ const compact =
126
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~WyI1ZWI4Yzg2MjM0MDJjZjJlIiwiZmlyc3RuYW1lIiwiSm9obiJd~WyJjNWMzMWY2ZWYzNTg4MWJjIiwibGFzdG5hbWUiLCJEb2UiXQ~WyJmYTlkYTUzZWJjOTk3OThlIiwic3NuIiwiMTIzLTQ1LTY3ODkiXQ~';
127
+ const result = GeneralJSON.fromSerialized(generalJSON);
128
+ expect(result).toBeDefined();
129
+ expect(result.toEncoded(0)).toEqual(compact);
130
+ });
131
+
132
+ test('fromSerialized without disclosures', () => {
133
+ const generalJSON = {
134
+ payload:
135
+ 'eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0',
136
+ signatures: [
137
+ {
138
+ protected: 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9',
139
+ signature:
140
+ 'n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg',
141
+ header: {
142
+ disclosures: [],
143
+ kb_jwt:
144
+ 'eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA',
145
+ },
146
+ },
147
+ ],
148
+ };
149
+
150
+ const compact =
151
+ 'eyJ0eXAiOiJzZCtqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpZCI6IjEyMzQiLCJfc2QiOlsiYkRUUnZtNS1Zbi1IRzdjcXBWUjVPVlJJWHNTYUJrNTdKZ2lPcV9qMVZJNCIsImV0M1VmUnlsd1ZyZlhkUEt6Zzc5aGNqRDFJdHpvUTlvQm9YUkd0TW9zRmsiLCJ6V2ZaTlMxOUF0YlJTVGJvN3NKUm4wQlpRdldSZGNob0M3VVphYkZyalk4Il0sIl9zZF9hbGciOiJzaGEtMjU2In0.n27NCtnuwytlBYtUNjgkesDP_7gN7bhaLhWNL4SWT6MaHsOjZ2ZMp987GgQRL6ZkLbJ7Cd3hlePHS84GBXPuvg~eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFUzI1NiJ9.eyJpYXQiOjE3MTAwNjk3MjIsImF1ZCI6ImRpZDpleGFtcGxlOjEyMyIsIm5vbmNlIjoiazh2ZGYwbmQ2Iiwic2RfaGFzaCI6Il8tTmJWSzNmczl3VzNHaDNOUktSNEt1NmZDMUwzN0R2MFFfalBXd0ppRkUifQ.pqw2OB5IA5ya9Mxf60hE3nr2gsJEIoIlnuCa4qIisijHbwg3WzTDFmW2SuNvK_ORN0WU6RoGbJx5uYZh8k4EbA';
152
+ const result = GeneralJSON.fromSerialized(generalJSON);
153
+ expect(result).toBeDefined();
154
+ expect(result.toEncoded(0)).toEqual(compact);
155
+ });
156
+
82
157
  test('add signature', async () => {
83
158
  const { signer } = createSignerVerifier();
84
159
 
@@ -112,7 +187,6 @@ describe('FlattenJSON', () => {
112
187
  'key-1',
113
188
  );
114
189
  const resultJson = result.toJson();
115
- console.log(resultJson);
116
190
 
117
191
  expect(resultJson.signatures.length).toEqual(2);
118
192
  expect(resultJson.signatures[1].header.kid).toEqual('key-1');