@sd-jwt/core 0.9.3-next.3 → 0.10.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 +11 -0
- package/dist/index.js +17 -5
- package/dist/index.mjs +17 -5
- 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/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.10.0](https://github.com/openwallet-foundation-labs/sd-jwt-js/compare/v0.9.2...v0.10.0) (2025-03-24)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* fix encoding bug for flattenJSON and generalJSON ([#277](https://github.com/openwallet-foundation-labs/sd-jwt-js/issues/277)) ([cc455a6](https://github.com/openwallet-foundation-labs/sd-jwt-js/commit/cc455a6f3d431fa59cca1d21dad49daac135d3bc))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [0.9.2](https://github.com/openwallet-foundation-labs/sd-jwt-js/compare/v0.9.1...v0.9.2) (2025-01-29)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @sd-jwt/core
|
package/dist/index.js
CHANGED
|
@@ -489,10 +489,16 @@ var FlattenJSON = class _FlattenJSON {
|
|
|
489
489
|
}
|
|
490
490
|
toEncoded() {
|
|
491
491
|
var _a;
|
|
492
|
+
const data = [];
|
|
492
493
|
const jwt = `${this.protected}.${this.payload}.${this.signature}`;
|
|
493
|
-
|
|
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
|
+
}
|
|
494
499
|
const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
|
|
495
|
-
|
|
500
|
+
data.push(kb_jwt);
|
|
501
|
+
return data.join(import_types3.SD_SEPARATOR);
|
|
496
502
|
}
|
|
497
503
|
};
|
|
498
504
|
|
|
@@ -576,11 +582,17 @@ var GeneralJSON = class _GeneralJSON {
|
|
|
576
582
|
if (index < 0 || index >= this.signatures.length) {
|
|
577
583
|
throw new import_utils6.SDJWTException("Index out of bounds");
|
|
578
584
|
}
|
|
585
|
+
const data = [];
|
|
579
586
|
const { protected: protectedHeader, signature } = this.signatures[index];
|
|
580
|
-
const disclosures = this.disclosures.join(import_types4.SD_SEPARATOR);
|
|
581
|
-
const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
|
|
582
587
|
const jwt = `${protectedHeader}.${this.payload}.${signature}`;
|
|
583
|
-
|
|
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);
|
|
584
596
|
}
|
|
585
597
|
addSignature(protectedHeader, signer, kid) {
|
|
586
598
|
return __async(this, null, function* () {
|
package/dist/index.mjs
CHANGED
|
@@ -474,10 +474,16 @@ var FlattenJSON = class _FlattenJSON {
|
|
|
474
474
|
}
|
|
475
475
|
toEncoded() {
|
|
476
476
|
var _a;
|
|
477
|
+
const data = [];
|
|
477
478
|
const jwt = `${this.protected}.${this.payload}.${this.signature}`;
|
|
478
|
-
|
|
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
|
+
}
|
|
479
484
|
const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
|
|
480
|
-
|
|
485
|
+
data.push(kb_jwt);
|
|
486
|
+
return data.join(SD_SEPARATOR2);
|
|
481
487
|
}
|
|
482
488
|
};
|
|
483
489
|
|
|
@@ -561,11 +567,17 @@ var GeneralJSON = class _GeneralJSON {
|
|
|
561
567
|
if (index < 0 || index >= this.signatures.length) {
|
|
562
568
|
throw new SDJWTException5("Index out of bounds");
|
|
563
569
|
}
|
|
570
|
+
const data = [];
|
|
564
571
|
const { protected: protectedHeader, signature } = this.signatures[index];
|
|
565
|
-
const disclosures = this.disclosures.join(SD_SEPARATOR3);
|
|
566
|
-
const kb_jwt = (_a = this.kb_jwt) != null ? _a : "";
|
|
567
572
|
const jwt = `${protectedHeader}.${this.payload}.${signature}`;
|
|
568
|
-
|
|
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);
|
|
569
581
|
}
|
|
570
582
|
addSignature(protectedHeader, signer, kid) {
|
|
571
583
|
return __async(this, null, function* () {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sd-jwt/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
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.
|
|
41
|
+
"@sd-jwt/crypto-nodejs": "0.10.0"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@sd-jwt/decode": "0.
|
|
45
|
-
"@sd-jwt/present": "0.
|
|
46
|
-
"@sd-jwt/types": "0.
|
|
47
|
-
"@sd-jwt/utils": "0.
|
|
44
|
+
"@sd-jwt/decode": "0.10.0",
|
|
45
|
+
"@sd-jwt/present": "0.10.0",
|
|
46
|
+
"@sd-jwt/types": "0.10.0",
|
|
47
|
+
"@sd-jwt/utils": "0.10.0"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"esm"
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "afd604d1f15a3b59bcbc43589a13815f657b89fd"
|
|
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');
|