@sd-jwt/decode 0.2.0 → 0.3.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/build/disclosures/calculateDigest.d.ts +1 -2
- package/build/disclosures/calculateDigest.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.js +2 -1
- package/build/index.js.map +1 -1
- package/build/keyBinding/index.d.ts +1 -0
- package/build/keyBinding/index.js +1 -0
- package/build/keyBinding/index.js.map +1 -1
- package/build/keyBinding/sdHash.d.ts +2 -0
- package/build/keyBinding/sdHash.js +17 -0
- package/build/keyBinding/sdHash.js.map +1 -0
- package/build/sdJwtVc/decode.js +3 -3
- package/build/sdJwtVc/decode.js.map +1 -1
- package/package.json +4 -4
- package/build/keyBinding/assertValid.d.ts +0 -0
- package/build/keyBinding/assertValid.js +0 -2
- package/build/keyBinding/assertValid.js.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { AsyncHasher, Hasher } from '@sd-jwt/types';
|
|
1
|
+
import type { AsyncHasher, Hasher, HasherAlgorithm } from '@sd-jwt/types';
|
|
2
2
|
import type { Disclosure } from '@sd-jwt/types';
|
|
3
|
-
import { HasherAlgorithm } from '@sd-jwt/utils';
|
|
4
3
|
export type CalculateDigestReturnType<HasherImplementation extends Hasher | AsyncHasher> = ReturnType<HasherImplementation> extends Promise<any> ? Promise<string> : string;
|
|
5
4
|
export declare const disclosureCalculateDigest: <HI extends Hasher | AsyncHasher>(disclosure: Disclosure, algorithm: HasherAlgorithm, hasher: HI) => CalculateDigestReturnType<HI>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculateDigest.js","sourceRoot":"","sources":["../../src/disclosures/calculateDigest.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"calculateDigest.js","sourceRoot":"","sources":["../../src/disclosures/calculateDigest.ts"],"names":[],"mappings":";;;AAEA,yCAAoD;AACpD,uCAA6C;AAQtC,MAAM,yBAAyB,GAAG,CACrC,UAAsB,EACtB,SAA0B,EAC1B,MAAU,EACmB,EAAE;IAC/B,MAAM,OAAO,GAAG,iBAAS,CAAC,cAAc,CAAC,IAAA,2BAAiB,EAAC,UAAU,CAAC,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAEzC,OAAO,CACH,IAAA,iBAAS,EAAC,MAAM,CAAC;QACb,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAS,CAAC,MAAM,CAAC;QAC/B,CAAC,CAAC,iBAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CACA,CAAA;AACtC,CAAC,CAAA;AAbY,QAAA,yBAAyB,6BAarC"}
|
package/build/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { jwtFromCompact } from './jwt';
|
|
2
2
|
export { sdJwtFromCompact } from './sdJwt';
|
|
3
3
|
export { decodeSdJwtVc, sdJwtVcFromCompact } from './sdJwtVc';
|
|
4
|
-
export { keyBindingFromCompact } from './keyBinding';
|
|
4
|
+
export { keyBindingFromCompact, calculateSdHash } from './keyBinding';
|
|
5
5
|
export { disclosureCalculateDigest, disclosureToArray, disclosureFromArray, disclosureFromString, decodeDisclosuresInPayload } from './disclosures';
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decodeDisclosuresInPayload = exports.disclosureFromString = exports.disclosureFromArray = exports.disclosureToArray = exports.disclosureCalculateDigest = exports.keyBindingFromCompact = exports.sdJwtVcFromCompact = exports.decodeSdJwtVc = exports.sdJwtFromCompact = exports.jwtFromCompact = void 0;
|
|
3
|
+
exports.decodeDisclosuresInPayload = exports.disclosureFromString = exports.disclosureFromArray = exports.disclosureToArray = exports.disclosureCalculateDigest = exports.calculateSdHash = exports.keyBindingFromCompact = exports.sdJwtVcFromCompact = exports.decodeSdJwtVc = exports.sdJwtFromCompact = exports.jwtFromCompact = void 0;
|
|
4
4
|
var jwt_1 = require("./jwt");
|
|
5
5
|
Object.defineProperty(exports, "jwtFromCompact", { enumerable: true, get: function () { return jwt_1.jwtFromCompact; } });
|
|
6
6
|
var sdJwt_1 = require("./sdJwt");
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "decodeSdJwtVc", { enumerable: true, get: functio
|
|
|
10
10
|
Object.defineProperty(exports, "sdJwtVcFromCompact", { enumerable: true, get: function () { return sdJwtVc_1.sdJwtVcFromCompact; } });
|
|
11
11
|
var keyBinding_1 = require("./keyBinding");
|
|
12
12
|
Object.defineProperty(exports, "keyBindingFromCompact", { enumerable: true, get: function () { return keyBinding_1.keyBindingFromCompact; } });
|
|
13
|
+
Object.defineProperty(exports, "calculateSdHash", { enumerable: true, get: function () { return keyBinding_1.calculateSdHash; } });
|
|
13
14
|
var disclosures_1 = require("./disclosures");
|
|
14
15
|
Object.defineProperty(exports, "disclosureCalculateDigest", { enumerable: true, get: function () { return disclosures_1.disclosureCalculateDigest; } });
|
|
15
16
|
Object.defineProperty(exports, "disclosureToArray", { enumerable: true, get: function () { return disclosures_1.disclosureToArray; } });
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6BAAsC;AAA7B,qGAAA,cAAc,OAAA;AACvB,iCAA0C;AAAjC,yGAAA,gBAAgB,OAAA;AACzB,qCAA6D;AAApD,wGAAA,aAAa,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAC1C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6BAAsC;AAA7B,qGAAA,cAAc,OAAA;AACvB,iCAA0C;AAAjC,yGAAA,gBAAgB,OAAA;AACzB,qCAA6D;AAApD,wGAAA,aAAa,OAAA;AAAE,6GAAA,kBAAkB,OAAA;AAC1C,2CAAqE;AAA5D,mHAAA,qBAAqB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAE/C,6CAMsB;AALlB,wHAAA,yBAAyB,OAAA;AACzB,gHAAA,iBAAiB,OAAA;AACjB,kHAAA,mBAAmB,OAAA;AACnB,mHAAA,oBAAoB,OAAA;AACpB,yHAAA,0BAA0B,OAAA"}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./fromCompact"), exports);
|
|
18
|
+
__exportStar(require("./sdHash"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keyBinding/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keyBinding/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B;AAC7B,2CAAwB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { HasherAndAlgorithm, AsyncHasher, Hasher } from '@sd-jwt/types';
|
|
2
|
+
export declare function calculateSdHash<HasherImplementation extends Hasher | AsyncHasher>(compactSdJwt: string, hasherAndAlgorithm: HasherAndAlgorithm<HasherImplementation>): ReturnType<HasherImplementation> extends Promise<any> ? Promise<string> : string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateSdHash = void 0;
|
|
4
|
+
const utils_1 = require("@sd-jwt/utils");
|
|
5
|
+
function calculateSdHash(compactSdJwt, hasherAndAlgorithm) {
|
|
6
|
+
// If we don't end with a '~' we probably need to remove the
|
|
7
|
+
// kb-jwt first
|
|
8
|
+
const sdJwtWithoutKbJwt = compactSdJwt.endsWith('~')
|
|
9
|
+
? compactSdJwt
|
|
10
|
+
: compactSdJwt.split('~').slice(0, -1).join('~') + '~';
|
|
11
|
+
const hashResult = hasherAndAlgorithm.hasher(sdJwtWithoutKbJwt, hasherAndAlgorithm.algorithm);
|
|
12
|
+
return ((0, utils_1.isPromise)(hashResult)
|
|
13
|
+
? hashResult.then((hash) => utils_1.Base64url.encode(hash))
|
|
14
|
+
: utils_1.Base64url.encode(hashResult));
|
|
15
|
+
}
|
|
16
|
+
exports.calculateSdHash = calculateSdHash;
|
|
17
|
+
//# sourceMappingURL=sdHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdHash.js","sourceRoot":"","sources":["../../src/keyBinding/sdHash.ts"],"names":[],"mappings":";;;AACA,yCAAoD;AAEpD,SAAgB,eAAe,CAG3B,YAAoB,EACpB,kBAA4D;IAI5D,4DAA4D;IAC5D,eAAe;IACf,MAAM,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;IAE1D,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CACxC,iBAAiB,EACjB,kBAAkB,CAAC,SAAS,CAC/B,CAAA;IAED,OAAO,CACH,IAAA,iBAAS,EAAC,UAAU,CAAC;QACjB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CAAC,iBAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAC9B,CAAA;AACZ,CAAC;AAxBD,0CAwBC"}
|
package/build/sdJwtVc/decode.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.decodeSdJwtVc = void 0;
|
|
4
|
+
const types_1 = require("@sd-jwt/types");
|
|
4
5
|
const utils_1 = require("@sd-jwt/utils");
|
|
5
|
-
const utils_2 = require("@sd-jwt/utils");
|
|
6
6
|
const fromCompact_1 = require("./fromCompact");
|
|
7
|
-
const
|
|
7
|
+
const utils_2 = require("@sd-jwt/utils");
|
|
8
8
|
const calculateDigest_1 = require("../disclosures/calculateDigest");
|
|
9
9
|
const disclosures_1 = require("../disclosures");
|
|
10
10
|
const decodeSdJwtVc = (compact, hasher) => {
|
|
11
11
|
var _a, _b;
|
|
12
12
|
const { header, payload, signature, keyBinding, disclosures } = (0, fromCompact_1.sdJwtVcFromCompact)(compact);
|
|
13
|
-
const hasherAlgorithm = (_a = (0,
|
|
13
|
+
const hasherAlgorithm = (_a = (0, utils_2.getValueByKeyAnyLevel)(payload, '_sd_alg')) !== null && _a !== void 0 ? _a : types_1.HasherAlgorithm.Sha256;
|
|
14
14
|
const disclosuresWithDigestsResult = ((_b = disclosures === null || disclosures === void 0 ? void 0 : disclosures.map((disclosure) => {
|
|
15
15
|
const digestResult = (0, calculateDigest_1.disclosureCalculateDigest)(disclosure, hasherAlgorithm, hasher);
|
|
16
16
|
return (0, utils_1.isPromise)(digestResult)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/sdJwtVc/decode.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/sdJwtVc/decode.ts"],"names":[],"mappings":";;;AACA,yCAA+C;AAC/C,yCAAyC;AACzC,+CAAkD;AAClD,yCAAqD;AACrD,oEAA0E;AAC1E,gDAA2D;AAYpD,MAAM,aAAa,GAAG,CACzB,OAAe,EACf,MAAU,EAGY,EAAE;;IACxB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,GACzD,IAAA,gCAAkB,EAAC,OAAO,CAAC,CAAA;IAE/B,MAAM,eAAe,GACjB,MAAA,IAAA,6BAAqB,EAAkB,OAAO,EAAE,SAAS,CAAC,mCAC1D,uBAAe,CAAC,MAAM,CAAA;IAE1B,MAAM,4BAA4B,GAAG,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClE,MAAM,YAAY,GAAG,IAAA,2CAAyB,EAC1C,UAAU,EACV,eAAe,EACf,MAAM,CACT,CAAA;QAED,OAAO,IAAA,iBAAS,EAAC,YAAY,CAAC;YAC1B,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iCAAM,UAAU,KAAE,MAAM,IAAG,CAAC;YAC5D,CAAC,iCAAM,UAAU,KAAE,MAAM,EAAE,YAAY,GAAE,CAAA;IACjD,CAAC,CAAC,mCAAI,EAAE,CAEkC,CAAA;IAE1C,MAAM,WAAW,GAAG;QAChB,cAAc,EAAE,OAAO;QACvB,aAAa,EAAE,OAAO;QACtB,MAAM;QACN,SAAS;QACT,UAAU;KACJ,CAAA;IAEV,IAAI,gCAAgC,CAAC,4BAA4B,CAAC,EAAE,CAAC;QACjE,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CACjD,CAAC,qBAAqB,EAAE,EAAE,CAAC,iCACpB,WAAW,KACd,WAAW,EAAE,qBAAqB,EAClC,cAAc,EAAE,IAAA,wCAA0B,EACtC,WAAW,CAAC,aAAa,EACzB,qBAAqB,CACxB,IACH,CAGmB,CAAA;IAC7B,CAAC;SAAM,CAAC;QACJ,OAAO,gCACA,WAAW,KACd,WAAW,EAAE,4BAA4B,EACzC,cAAc,EAAE,IAAA,wCAA0B,EACtC,WAAW,CAAC,aAAa,EACzB,4BAA4B,CAC/B,GAGoB,CAAA;IAC7B,CAAC;AACL,CAAC,CAAA;AA5DY,QAAA,aAAa,iBA4DzB;AAED,SAAS,gCAAgC,CACrC,qBAEC;IAED,OAAO,IAAA,iBAAS,EAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sd-jwt/decode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Decode implementation of 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,13 +37,13 @@
|
|
|
37
37
|
"test": "node --require ts-node/register --test ./tests/*.test.ts"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@sd-jwt/types": "0.
|
|
41
|
-
"@sd-jwt/utils": "0.
|
|
40
|
+
"@sd-jwt/types": "0.3.0",
|
|
41
|
+
"@sd-jwt/utils": "0.3.0"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "*",
|
|
45
45
|
"ts-node": "*",
|
|
46
46
|
"typescript": "*"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "38e6729c173b08d2b6adb437efa72e8bbb21cb2c"
|
|
49
49
|
}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertValid.js","sourceRoot":"","sources":["../../src/keyBinding/assertValid.ts"],"names":[],"mappings":""}
|