@sd-jwt/utils 0.2.0 → 0.2.1
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/build/base64url.d.ts +1 -0
- package/build/base64url.js +9 -5
- package/build/base64url.js.map +1 -1
- package/build/index.d.ts +0 -1
- package/build/index.js +0 -1
- package/build/index.js.map +1 -1
- package/build/swapClaims.d.ts +2 -0
- package/build/swapClaims.js +73 -0
- package/build/swapClaims.js.map +1 -0
- package/package.json +3 -3
package/build/base64url.d.ts
CHANGED
package/build/base64url.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Base64url = void 0;
|
|
3
|
+
exports.base64ToBase64URL = exports.Base64url = void 0;
|
|
4
4
|
const buffer_1 = require("buffer");
|
|
5
5
|
class Base64url {
|
|
6
6
|
/**
|
|
@@ -9,7 +9,7 @@ class Base64url {
|
|
|
9
9
|
*
|
|
10
10
|
*/
|
|
11
11
|
static encode(input) {
|
|
12
|
-
return buffer_1.Buffer.from(input).toString('
|
|
12
|
+
return base64ToBase64URL(buffer_1.Buffer.from(input).toString('base64'));
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
*
|
|
@@ -17,7 +17,7 @@ class Base64url {
|
|
|
17
17
|
*
|
|
18
18
|
*/
|
|
19
19
|
static encodeFromJson(input) {
|
|
20
|
-
return buffer_1.Buffer.from(JSON.stringify(input)).toString('
|
|
20
|
+
return base64ToBase64URL(buffer_1.Buffer.from(JSON.stringify(input)).toString('base64'));
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
*
|
|
@@ -25,7 +25,7 @@ class Base64url {
|
|
|
25
25
|
*
|
|
26
26
|
*/
|
|
27
27
|
static decodeToJson(input) {
|
|
28
|
-
return JSON.parse(buffer_1.Buffer.from(input, '
|
|
28
|
+
return JSON.parse(buffer_1.Buffer.from(input, 'base64').toString());
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
31
|
*
|
|
@@ -33,8 +33,12 @@ class Base64url {
|
|
|
33
33
|
*
|
|
34
34
|
*/
|
|
35
35
|
static decode(input) {
|
|
36
|
-
return Uint8Array.from(buffer_1.Buffer.from(input, '
|
|
36
|
+
return Uint8Array.from(buffer_1.Buffer.from(input, 'base64'));
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
exports.Base64url = Base64url;
|
|
40
|
+
function base64ToBase64URL(base64) {
|
|
41
|
+
return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
42
|
+
}
|
|
43
|
+
exports.base64ToBase64URL = base64ToBase64URL;
|
|
40
44
|
//# sourceMappingURL=base64url.js.map
|
package/build/base64url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64url.js","sourceRoot":"","sources":["../src/base64url.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,MAAa,SAAS;IAClB;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,KAAmC;QACpD,OAAO,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"base64url.js","sourceRoot":"","sources":["../src/base64url.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAE/B,MAAa,SAAS;IAClB;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,KAAmC;QACpD,OAAO,iBAAiB,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;IACnE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,cAAc,CACxB,KAA+C;QAE/C,OAAO,iBAAiB,CACpB,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACxD,CAAA;IACL,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,YAAY,CAKxB,KAAa;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAM,CAAA;IACnE,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,MAAM,CAAC,KAAa;QAC9B,OAAO,UAAU,CAAC,IAAI,CAAC,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IACxD,CAAC;CACJ;AA7CD,8BA6CC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;AAC3E,CAAC;AAFD,8CAEC"}
|
package/build/index.d.ts
CHANGED
package/build/index.js
CHANGED
|
@@ -18,7 +18,6 @@ __exportStar(require("./base64url"), exports);
|
|
|
18
18
|
__exportStar(require("./assert"), exports);
|
|
19
19
|
__exportStar(require("./getValueByKeyAnyLevel"), exports);
|
|
20
20
|
__exportStar(require("./isPromise"), exports);
|
|
21
|
-
__exportStar(require("./hasherAlgorithm"), exports);
|
|
22
21
|
__exportStar(require("./object"), exports);
|
|
23
22
|
__exportStar(require("./simpleDeepEqual"), exports);
|
|
24
23
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,2CAAwB;AACxB,0DAAuC;AACvC,8CAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,2CAAwB;AACxB,0DAAuC;AACvC,8CAA2B;AAC3B,2CAAwB;AACxB,oDAAiC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.swapClaims = void 0;
|
|
4
|
+
const shouldInsertDisclosure = (key, value, disclosures) => {
|
|
5
|
+
if (key !== '_sd')
|
|
6
|
+
return [];
|
|
7
|
+
if (!Array.isArray(value))
|
|
8
|
+
return [];
|
|
9
|
+
const filteredDisclosures = [];
|
|
10
|
+
for (const d of disclosures) {
|
|
11
|
+
if (value.includes(d.digest)) {
|
|
12
|
+
filteredDisclosures.push(d);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return filteredDisclosures;
|
|
16
|
+
};
|
|
17
|
+
const shouldIncludeCleartextClaim = (key, value) => key !== '_sd' && key !== '_sd_alg' && typeof value !== 'object';
|
|
18
|
+
const swapClaims = (payload, disclosures, newPayload = {}) => {
|
|
19
|
+
const entries = Object.entries(payload);
|
|
20
|
+
// Loop over de payload
|
|
21
|
+
for (let i = 0; i < entries.length; i++) {
|
|
22
|
+
const [key, value] = entries[i];
|
|
23
|
+
// See whether we have an `_sd` key with an array of disclosures.
|
|
24
|
+
const foundDisclosures = shouldInsertDisclosure(key, value, disclosures);
|
|
25
|
+
// Add the disclosed items to the pretty payload
|
|
26
|
+
foundDisclosures.forEach((d) => {
|
|
27
|
+
newPayload[d.key] = d.value;
|
|
28
|
+
});
|
|
29
|
+
// Skip the rest as `_sd` is a special case
|
|
30
|
+
if (key === '_sd') {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Include all the primitive claims into the new payload
|
|
34
|
+
if (shouldIncludeCleartextClaim(key, value)) {
|
|
35
|
+
newPayload[key] = value;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (typeof value === 'object' && Array.isArray(value)) {
|
|
39
|
+
newPayload[key] = swapClaimsInsideArray(value, disclosures);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (typeof value === 'object' &&
|
|
43
|
+
value !== null &&
|
|
44
|
+
!Array.isArray(value)) {
|
|
45
|
+
newPayload[key] = (0, exports.swapClaims)(value, disclosures);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return newPayload;
|
|
49
|
+
};
|
|
50
|
+
exports.swapClaims = swapClaims;
|
|
51
|
+
const swapClaimsInsideArray = (array, disclosures) => {
|
|
52
|
+
const processedArray = [];
|
|
53
|
+
for (const el of array) {
|
|
54
|
+
if (typeof el === 'object' && el !== null && '...' in el) {
|
|
55
|
+
const hash = el['...'];
|
|
56
|
+
let disclosureFound = false;
|
|
57
|
+
let disclosureValue;
|
|
58
|
+
disclosureLoop: for (const d of disclosures) {
|
|
59
|
+
if (d.digest === hash && d.key === undefined) {
|
|
60
|
+
disclosureValue = d.value;
|
|
61
|
+
disclosureFound = true;
|
|
62
|
+
break disclosureLoop;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
processedArray.push(disclosureFound ? disclosureValue : el);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
processedArray.push(el);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return processedArray;
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=swapClaims.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swapClaims.js","sourceRoot":"","sources":["../src/swapClaims.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sd-jwt/utils",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Utility functions for sd-jwt Draft 06 and sd-jwt-vc Draft 01",
|
|
5
5
|
"license": "(MIT OR Apache-2.0)",
|
|
6
6
|
"author": "Berend Sliedrecht <sliedrecht@berend.io>",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"test": "node --require ts-node/register --test ./tests/*.test.ts"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@sd-jwt/types": "0.2.
|
|
40
|
+
"@sd-jwt/types": "0.2.1",
|
|
41
41
|
"buffer": "*"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"ts-node": "*",
|
|
46
46
|
"typescript": "*"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "a1fb5fad0b938081e033233bae5569ae3b9fe8cb"
|
|
49
49
|
}
|