@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 +23 -14
- package/dist/index.mjs +20 -11
- package/package.json +7 -7
- package/src/flattenJSON.ts +11 -2
- package/src/generalJSON.ts +11 -3
- package/src/index.ts +0 -1
- package/src/test/flattenJSON.spec.ts +66 -0
- package/src/test/generalJSON.spec.ts +76 -2
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
|
|
59
|
-
__export(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
41
|
+
"@sd-jwt/crypto-nodejs": "0.9.3-next.4+cc455a6"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@sd-jwt/decode": "0.9.3-next.
|
|
45
|
-
"@sd-jwt/present": "0.9.3-next.
|
|
46
|
-
"@sd-jwt/types": "0.9.3-next.
|
|
47
|
-
"@sd-jwt/utils": "0.9.3-next.
|
|
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": "
|
|
65
|
+
"gitHead": "cc455a6f3d431fa59cca1d21dad49daac135d3bc"
|
|
66
66
|
}
|
package/src/flattenJSON.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
96
|
+
data.push(kb_jwt);
|
|
97
|
+
return data.join(SD_SEPARATOR);
|
|
89
98
|
}
|
|
90
99
|
}
|
package/src/generalJSON.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
@@ -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('
|
|
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');
|