@sd-jwt/core 0.3.0 → 2.0.2-next.26
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/LICENSE +201 -0
- package/dist/index.d.mts +106 -0
- package/dist/index.d.ts +106 -0
- package/dist/index.js +606 -0
- package/dist/index.mjs +586 -0
- package/package.json +60 -48
- package/src/decoy.ts +15 -0
- package/src/index.ts +235 -0
- package/src/jwt.ts +107 -0
- package/src/kbjwt.ts +45 -0
- package/src/sdjwt.ts +318 -0
- package/src/test/decoy.spec.ts +30 -0
- package/src/test/index.spec.ts +379 -0
- package/src/test/jwt.spec.ts +141 -0
- package/src/test/kbjwt.spec.ts +275 -0
- package/src/test/pass.spec.ts +6 -0
- package/src/test/sdjwt.spec.ts +382 -0
- package/test/app-e2e.spec.ts +248 -0
- package/test/array_data_types.json +29 -0
- package/test/array_full_sd.json +21 -0
- package/test/array_in_sd.json +13 -0
- package/test/array_nested_in_plain.json +20 -0
- package/test/array_none_disclosed.json +17 -0
- package/test/array_of_nulls.json +15 -0
- package/test/array_of_objects.json +58 -0
- package/test/array_of_scalars.json +15 -0
- package/test/array_recursive_sd.json +35 -0
- package/test/array_recursive_sd_some_disclosed.json +55 -0
- package/test/complex.json +43 -0
- package/test/header_mod.json +44 -0
- package/test/json_serialization.json +44 -0
- package/test/key_binding.json +44 -0
- package/test/no_sd.json +36 -0
- package/test/object_data_types.json +60 -0
- package/test/recursions.json +98 -0
- package/tsconfig.json +7 -0
- package/vitest.config.mts +4 -0
- package/README.md +0 -97
- package/build/index.d.ts +0 -13
- package/build/index.js +0 -20
- package/build/index.js.map +0 -1
- package/build/jwt/error.d.ts +0 -2
- package/build/jwt/error.js +0 -7
- package/build/jwt/error.js.map +0 -1
- package/build/jwt/index.d.ts +0 -2
- package/build/jwt/index.js +0 -19
- package/build/jwt/index.js.map +0 -1
- package/build/jwt/jwt.d.ts +0 -208
- package/build/jwt/jwt.js +0 -325
- package/build/jwt/jwt.js.map +0 -1
- package/build/keyBinding/index.d.ts +0 -1
- package/build/keyBinding/index.js +0 -18
- package/build/keyBinding/index.js.map +0 -1
- package/build/keyBinding/keyBinding.d.ts +0 -64
- package/build/keyBinding/keyBinding.js +0 -119
- package/build/keyBinding/keyBinding.js.map +0 -1
- package/build/sdJwt/decoys.d.ts +0 -3
- package/build/sdJwt/decoys.js +0 -35
- package/build/sdJwt/decoys.js.map +0 -1
- package/build/sdJwt/disclosureFrame.d.ts +0 -8
- package/build/sdJwt/disclosureFrame.js +0 -87
- package/build/sdJwt/disclosureFrame.js.map +0 -1
- package/build/sdJwt/disclosures.d.ts +0 -33
- package/build/sdJwt/disclosures.js +0 -114
- package/build/sdJwt/disclosures.js.map +0 -1
- package/build/sdJwt/error.d.ts +0 -2
- package/build/sdJwt/error.js +0 -7
- package/build/sdJwt/error.js.map +0 -1
- package/build/sdJwt/index.d.ts +0 -6
- package/build/sdJwt/index.js +0 -23
- package/build/sdJwt/index.js.map +0 -1
- package/build/sdJwt/sdJwt.d.ts +0 -206
- package/build/sdJwt/sdJwt.js +0 -442
- package/build/sdJwt/sdJwt.js.map +0 -1
- package/build/sdJwt/types.d.ts +0 -5
- package/build/sdJwt/types.js +0 -3
- package/build/sdJwt/types.js.map +0 -1
- package/build/sdJwtVc/error.d.ts +0 -2
- package/build/sdJwtVc/error.js +0 -7
- package/build/sdJwtVc/error.js.map +0 -1
- package/build/sdJwtVc/index.d.ts +0 -2
- package/build/sdJwtVc/index.js +0 -19
- package/build/sdJwtVc/index.js.map +0 -1
- package/build/sdJwtVc/sdJwtVc.d.ts +0 -47
- package/build/sdJwtVc/sdJwtVc.js +0 -149
- package/build/sdJwtVc/sdJwtVc.js.map +0 -1
- package/build/signatureAndEncryptionAlgorithm.d.ts +0 -105
- package/build/signatureAndEncryptionAlgorithm.js +0 -110
- package/build/signatureAndEncryptionAlgorithm.js.map +0 -1
- package/build/types/disclosure.d.ts +0 -5
- package/build/types/disclosure.js +0 -3
- package/build/types/disclosure.js.map +0 -1
- package/build/types/index.d.ts +0 -5
- package/build/types/index.js +0 -22
- package/build/types/index.js.map +0 -1
- package/build/types/saltGenerator.d.ts +0 -17
- package/build/types/saltGenerator.js +0 -3
- package/build/types/saltGenerator.js.map +0 -1
- package/build/types/signer.d.ts +0 -2
- package/build/types/signer.js +0 -3
- package/build/types/signer.js.map +0 -1
- package/build/types/utils.d.ts +0 -2
- package/build/types/utils.js +0 -3
- package/build/types/utils.js.map +0 -1
- package/build/types/verifier.d.ts +0 -14
- package/build/types/verifier.js +0 -3
- package/build/types/verifier.js.map +0 -1
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { Jwt, JwtAdditionalOptions, JwtOptions, JwtVerificationResult } from '../jwt';
|
|
2
|
-
import { SignatureAndEncryptionAlgorithm } from '../signatureAndEncryptionAlgorithm';
|
|
3
|
-
import { MakePropertyRequired, Signer, Verifier } from '../types';
|
|
4
|
-
type ReturnKeyBindingWithHeaderAndPayload<H extends Record<string, unknown>, P extends Record<string, unknown>, T extends KeyBinding<H, P>> = MakePropertyRequired<T, 'header' | 'payload'>;
|
|
5
|
-
export type KeyBindingHeader<H extends Record<string, unknown> = Record<string, unknown>> = H & {
|
|
6
|
-
typ: 'kb+jwt';
|
|
7
|
-
alg: SignatureAndEncryptionAlgorithm | string;
|
|
8
|
-
};
|
|
9
|
-
export type KeyBindingPayload<P extends Record<string, unknown> = Record<string, unknown>> = P & {
|
|
10
|
-
iat: number;
|
|
11
|
-
aud: string;
|
|
12
|
-
nonce: string;
|
|
13
|
-
};
|
|
14
|
-
export type KeyBindingOptions<Header extends Record<string, unknown> = Record<string, unknown>, Payload extends Record<string, unknown> = Record<string, unknown>> = JwtOptions<KeyBindingHeader<Header>, KeyBindingPayload<Payload>> & {
|
|
15
|
-
/**
|
|
16
|
-
* The compact SD-JWT over which the key binding should provide integrity
|
|
17
|
-
*/
|
|
18
|
-
compactSdJwt?: string;
|
|
19
|
-
};
|
|
20
|
-
export type KeyBindingAdditionalOptions<Header extends Record<string, unknown> = Record<string, unknown>> = JwtAdditionalOptions<KeyBindingHeader<Header>>;
|
|
21
|
-
export type KeyBindingVerificationResult = JwtVerificationResult;
|
|
22
|
-
export declare class KeyBinding<Header extends Record<string, unknown> = Record<string, unknown>, Payload extends Record<string, unknown> = Record<string, unknown>> extends Jwt<Header, Payload> {
|
|
23
|
-
signer?: Signer<Header>;
|
|
24
|
-
expectedSdHash?: string;
|
|
25
|
-
constructor(options?: KeyBindingOptions<Header, Payload>, additionalOptions?: KeyBindingAdditionalOptions<Header>);
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* Convert a standard `JWT` to an instance of `KeyBinding`.
|
|
29
|
-
*
|
|
30
|
-
* @throws when the claims are not valid for key binding
|
|
31
|
-
*
|
|
32
|
-
*/
|
|
33
|
-
static fromJwt<Header extends Record<string, unknown> = Record<string, unknown>, Payload extends Record<string, unknown> = Record<string, unknown>>(jwt: Jwt<Header, Payload>): KeyBinding<Header, Payload>;
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
-
* Verify the jwt as a valid `KeyBinding` jwt.
|
|
37
|
-
*
|
|
38
|
-
* Invalid when:
|
|
39
|
-
* - The required claims for key binding are not included
|
|
40
|
-
* - The signature is invalid
|
|
41
|
-
* - The optional required additional claims are not included
|
|
42
|
-
*
|
|
43
|
-
*/
|
|
44
|
-
verify(verifySignature: Verifier<Header>, requiredClaims?: Array<keyof Payload | string>, publicKeyJwk?: Record<string, unknown>): Promise<KeyBindingVerificationResult>;
|
|
45
|
-
/**
|
|
46
|
-
*
|
|
47
|
-
* Convert a compact `JWT` into an instance of `KeyBinding`.
|
|
48
|
-
*
|
|
49
|
-
* @throws when the claims are not valid for key binding
|
|
50
|
-
*
|
|
51
|
-
*/
|
|
52
|
-
static fromCompact<Header extends Record<string, unknown> = Record<string, unknown>, Payload extends Record<string, unknown> = Record<string, unknown>>(compact: string): ReturnKeyBindingWithHeaderAndPayload<Header, Payload, KeyBinding<Header, Payload>>;
|
|
53
|
-
withSdHashClaim(sdHash: string): this;
|
|
54
|
-
withExpectedSdHash(expectedSdHash: string): this;
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* Asserts the required properties for valid key binding.
|
|
58
|
-
*
|
|
59
|
-
* @throws when a claim in the header, or payload, is invalid
|
|
60
|
-
*
|
|
61
|
-
*/
|
|
62
|
-
assertValidForKeyBinding(expectedSdHash?: string): Promise<void>;
|
|
63
|
-
}
|
|
64
|
-
export {};
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.KeyBinding = void 0;
|
|
13
|
-
const decode_1 = require("@sd-jwt/decode");
|
|
14
|
-
const jwt_1 = require("../jwt");
|
|
15
|
-
class KeyBinding extends jwt_1.Jwt {
|
|
16
|
-
constructor(options, additionalOptions) {
|
|
17
|
-
super(options);
|
|
18
|
-
this.signer = additionalOptions === null || additionalOptions === void 0 ? void 0 : additionalOptions.signer;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* Convert a standard `JWT` to an instance of `KeyBinding`.
|
|
23
|
-
*
|
|
24
|
-
* @throws when the claims are not valid for key binding
|
|
25
|
-
*
|
|
26
|
-
*/
|
|
27
|
-
static fromJwt(jwt) {
|
|
28
|
-
const keyBinding = new KeyBinding({
|
|
29
|
-
header: jwt.header,
|
|
30
|
-
payload: jwt.payload,
|
|
31
|
-
signature: jwt.signature
|
|
32
|
-
}, { signer: jwt.signer });
|
|
33
|
-
keyBinding.assertValidForKeyBinding();
|
|
34
|
-
return keyBinding;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
*
|
|
38
|
-
* Verify the jwt as a valid `KeyBinding` jwt.
|
|
39
|
-
*
|
|
40
|
-
* Invalid when:
|
|
41
|
-
* - The required claims for key binding are not included
|
|
42
|
-
* - The signature is invalid
|
|
43
|
-
* - The optional required additional claims are not included
|
|
44
|
-
*
|
|
45
|
-
*/
|
|
46
|
-
verify(verifySignature, requiredClaims, publicKeyJwk) {
|
|
47
|
-
const _super = Object.create(null, {
|
|
48
|
-
verify: { get: () => super.verify }
|
|
49
|
-
});
|
|
50
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
if (!this.expectedSdHash) {
|
|
52
|
-
throw new Error('Expected sd hash is required for verification of key binding JWT');
|
|
53
|
-
}
|
|
54
|
-
// TODO: should _sd_hash also be a verification property (true/false)
|
|
55
|
-
// or should it throw?
|
|
56
|
-
yield this.assertValidForKeyBinding(this.expectedSdHash);
|
|
57
|
-
const jwtVerificationResult = yield _super.verify.call(this, verifySignature, requiredClaims, publicKeyJwk);
|
|
58
|
-
return jwtVerificationResult;
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
*
|
|
63
|
-
* Convert a compact `JWT` into an instance of `KeyBinding`.
|
|
64
|
-
*
|
|
65
|
-
* @throws when the claims are not valid for key binding
|
|
66
|
-
*
|
|
67
|
-
*/
|
|
68
|
-
static fromCompact(compact) {
|
|
69
|
-
const { header, payload, signature } = (0, decode_1.keyBindingFromCompact)(compact);
|
|
70
|
-
const keyBinding = new KeyBinding({ header, payload, signature });
|
|
71
|
-
return keyBinding;
|
|
72
|
-
}
|
|
73
|
-
withSdHashClaim(sdHash) {
|
|
74
|
-
this.addPayloadClaim('_sd_hash', sdHash);
|
|
75
|
-
return this;
|
|
76
|
-
}
|
|
77
|
-
withExpectedSdHash(expectedSdHash) {
|
|
78
|
-
this.expectedSdHash = expectedSdHash;
|
|
79
|
-
return this;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
* Asserts the required properties for valid key binding.
|
|
84
|
-
*
|
|
85
|
-
* @throws when a claim in the header, or payload, is invalid
|
|
86
|
-
*
|
|
87
|
-
*/
|
|
88
|
-
assertValidForKeyBinding(expectedSdHash) {
|
|
89
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
-
try {
|
|
91
|
-
this.assertHeader();
|
|
92
|
-
this.assertPayload();
|
|
93
|
-
if (!this.signature) {
|
|
94
|
-
yield this.signAndAdd();
|
|
95
|
-
}
|
|
96
|
-
this.assertSignature();
|
|
97
|
-
this.assertClaimInHeader('typ', 'kb+jwt');
|
|
98
|
-
this.assertClaimInHeader('alg');
|
|
99
|
-
this.assertClaimInPayload('iat');
|
|
100
|
-
this.assertClaimInPayload('nonce');
|
|
101
|
-
this.assertClaimInPayload('aud');
|
|
102
|
-
if (expectedSdHash !== null && expectedSdHash !== void 0 ? expectedSdHash : this.expectedSdHash) {
|
|
103
|
-
this.assertClaimInPayload('_sd_hash', expectedSdHash !== null && expectedSdHash !== void 0 ? expectedSdHash : this.expectedSdHash);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
this.assertClaimInPayload('_sd_hash');
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch (e) {
|
|
110
|
-
if (e instanceof Error) {
|
|
111
|
-
e.message = `jwt is not valid for usage with key binding. Error: ${e.message}`;
|
|
112
|
-
}
|
|
113
|
-
throw e;
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.KeyBinding = KeyBinding;
|
|
119
|
-
//# sourceMappingURL=keyBinding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyBinding.js","sourceRoot":"","sources":["../../src/keyBinding/keyBinding.ts"],"names":[],"mappings":"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"}
|
package/build/sdJwt/decoys.d.ts
DELETED
package/build/sdJwt/decoys.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.createDecoys = void 0;
|
|
13
|
-
const error_1 = require("./error");
|
|
14
|
-
const utils_1 = require("@sd-jwt/utils");
|
|
15
|
-
const createDecoys = (count, saltGenerator, hasherAndAlgorithm) => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
if (count < 0) {
|
|
17
|
-
throw new error_1.SdJwtError(`Negative count of ${count} is not allowed.`);
|
|
18
|
-
}
|
|
19
|
-
if (isNaN(count)) {
|
|
20
|
-
throw new error_1.SdJwtError(`NaN is not allowed for count.`);
|
|
21
|
-
}
|
|
22
|
-
if (!isFinite(count)) {
|
|
23
|
-
throw new error_1.SdJwtError(`Infinite is not allopwed for count.`);
|
|
24
|
-
}
|
|
25
|
-
const decoys = [];
|
|
26
|
-
for (let i = 0; i < count; i++) {
|
|
27
|
-
const salt = yield saltGenerator();
|
|
28
|
-
const decoy = yield hasherAndAlgorithm.hasher(salt, hasherAndAlgorithm.algorithm);
|
|
29
|
-
const encodedDecoy = utils_1.Base64url.encode(decoy);
|
|
30
|
-
decoys.push(encodedDecoy);
|
|
31
|
-
}
|
|
32
|
-
return decoys;
|
|
33
|
-
});
|
|
34
|
-
exports.createDecoys = createDecoys;
|
|
35
|
-
//# sourceMappingURL=decoys.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decoys.js","sourceRoot":"","sources":["../../src/sdJwt/decoys.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,mCAAoC;AACpC,yCAAyC;AAElC,MAAM,YAAY,GAAG,CACxB,KAAa,EACb,aAA4B,EAC5B,kBAAsC,EACxC,EAAE;IACA,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,kBAAU,CAAC,qBAAqB,KAAK,kBAAkB,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,kBAAU,CAAC,+BAA+B,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,kBAAU,CAAC,qCAAqC,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,MAAM,GAAkB,EAAE,CAAA;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,aAAa,EAAE,CAAA;QAClC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,MAAM,CACzC,IAAI,EACJ,kBAAkB,CAAC,SAAS,CAC/B,CAAA;QACD,MAAM,YAAY,GAAG,iBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA,CAAA;AA5BY,QAAA,YAAY,gBA4BxB"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DisclosureFrame } from '../types';
|
|
2
|
-
import { DisclosureWithDigest } from './disclosures';
|
|
3
|
-
import { SaltGenerator } from '../types';
|
|
4
|
-
import type { HasherAndAlgorithm } from '@sd-jwt/types';
|
|
5
|
-
export declare const applyDisclosureFrame: <Payload extends Record<string, unknown> = Record<string, unknown>>(saltGenerator: SaltGenerator, hasherAndAlgorithm: HasherAndAlgorithm, payload: Payload, frame: DisclosureFrame<Payload>, keys?: Array<string>, cleanup?: Array<Array<string>>, disclosures?: Array<DisclosureWithDigest>) => Promise<{
|
|
6
|
-
payload: Record<string, unknown>;
|
|
7
|
-
disclosures: Array<DisclosureWithDigest>;
|
|
8
|
-
}>;
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.applyDisclosureFrame = void 0;
|
|
13
|
-
const utils_1 = require("@sd-jwt/utils");
|
|
14
|
-
const decoys_1 = require("./decoys");
|
|
15
|
-
const disclosures_1 = require("./disclosures");
|
|
16
|
-
const error_1 = require("./error");
|
|
17
|
-
const applyDisclosureFrame = (saltGenerator, hasherAndAlgorithm, payload, frame, keys = [], cleanup = [], disclosures = []) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
-
var _a, _b;
|
|
19
|
-
for (const [key, frameValue] of Object.entries(frame)) {
|
|
20
|
-
const newKeys = [...keys, key];
|
|
21
|
-
if (key === '__decoyCount' && typeof frameValue === 'number') {
|
|
22
|
-
const sd = Array.from((_a = payload._sd) !== null && _a !== void 0 ? _a : []);
|
|
23
|
-
const decoys = yield (0, decoys_1.createDecoys)(frameValue, saltGenerator, hasherAndAlgorithm);
|
|
24
|
-
decoys.forEach((digest) => sd.push(digest));
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
payload._sd = sd.sort();
|
|
27
|
-
}
|
|
28
|
-
else if (typeof frameValue === 'boolean') {
|
|
29
|
-
if (frameValue === true) {
|
|
30
|
-
if (!(key in payload)) {
|
|
31
|
-
throw new error_1.SdJwtError(`key, ${key}, is not inside the payload (${JSON.stringify(payload)}), but it was supplied inside the frame.`);
|
|
32
|
-
}
|
|
33
|
-
const salt = yield saltGenerator();
|
|
34
|
-
const disclosure = yield new disclosures_1.Disclosure(salt, payload[key], key).withCalculateDigest(hasherAndAlgorithm);
|
|
35
|
-
disclosures.push(disclosure);
|
|
36
|
-
const sd = Array.from((_b = payload._sd) !== null && _b !== void 0 ? _b : []);
|
|
37
|
-
sd.push(disclosure.digest);
|
|
38
|
-
//@ts-ignore
|
|
39
|
-
payload._sd = sd.sort();
|
|
40
|
-
cleanup.push(newKeys);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
else if (typeof frameValue === 'object' &&
|
|
44
|
-
!Array.isArray(frameValue)) {
|
|
45
|
-
yield (0, exports.applyDisclosureFrame)(saltGenerator, hasherAndAlgorithm, payload[key], frameValue, newKeys, cleanup, disclosures);
|
|
46
|
-
}
|
|
47
|
-
else if (typeof frameValue === 'object' &&
|
|
48
|
-
Array.isArray(frameValue)) {
|
|
49
|
-
const payloadArray = payload[key];
|
|
50
|
-
const frameValueArray = frameValue;
|
|
51
|
-
if (!Array.isArray(payloadArray)) {
|
|
52
|
-
throw new error_1.SdJwtError(`Frame expected array, but received ${typeof payload[key]} for key '${key}'.`);
|
|
53
|
-
}
|
|
54
|
-
if (frameValueArray.length > payloadArray.length) {
|
|
55
|
-
throw new error_1.SdJwtError(`Frame array is longer than the payload array for ${key}`);
|
|
56
|
-
}
|
|
57
|
-
// Fill the frame with `false` if the payloadArray is longer than the frame value array
|
|
58
|
-
if (payloadArray.length > frameValueArray.length) {
|
|
59
|
-
payloadArray.forEach((_, index) => { var _a; return ((_a = frameValueArray[index]) !== null && _a !== void 0 ? _a : (frameValueArray[index] = false)); });
|
|
60
|
-
}
|
|
61
|
-
const newPayloadArray = [];
|
|
62
|
-
for (let i = 0; i < payloadArray.length; i++) {
|
|
63
|
-
const payloadValue = payloadArray[i];
|
|
64
|
-
const frameValue = frameValueArray[i];
|
|
65
|
-
if (frameValue) {
|
|
66
|
-
const salt = yield saltGenerator();
|
|
67
|
-
const disclosure = yield new disclosures_1.Disclosure(salt, payloadValue).withCalculateDigest(hasherAndAlgorithm);
|
|
68
|
-
disclosures.push(disclosure);
|
|
69
|
-
newPayloadArray.push({ '...': disclosure.digest });
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
newPayloadArray.push(payloadValue);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// @ts-ignore
|
|
76
|
-
payload[key] = newPayloadArray;
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
throw new error_1.SdJwtError(`Invalid type in frame with key '${key}' and type '${typeof frameValue}'. Only Record<string, unknown>, arrays<boolean> and boolean are allowed.`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
const payloadClone = Object.assign({}, payload);
|
|
83
|
-
cleanup.forEach((path) => (0, utils_1.deleteByPath)(payloadClone, path));
|
|
84
|
-
return { payload: payloadClone, disclosures };
|
|
85
|
-
});
|
|
86
|
-
exports.applyDisclosureFrame = applyDisclosureFrame;
|
|
87
|
-
//# sourceMappingURL=disclosureFrame.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"disclosureFrame.js","sourceRoot":"","sources":["../../src/sdJwt/disclosureFrame.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { AsyncHasher, Hasher, HasherAndAlgorithm } from '@sd-jwt/types';
|
|
2
|
-
import { DisclosureItem } from '../types';
|
|
3
|
-
import { DisclosureWithDigest as DisclosureWithDigestJson, Disclosure as DisclosureJson } from '@sd-jwt/types';
|
|
4
|
-
export type DisclosureWithDigest = Disclosure & {
|
|
5
|
-
digest: string;
|
|
6
|
-
};
|
|
7
|
-
export declare class Disclosure {
|
|
8
|
-
#private;
|
|
9
|
-
private salt;
|
|
10
|
-
private key?;
|
|
11
|
-
private value;
|
|
12
|
-
constructor(salt: string, value: unknown, key?: string);
|
|
13
|
-
static fromString(s: string): Disclosure;
|
|
14
|
-
static fromArray(item: DisclosureItem): Disclosure;
|
|
15
|
-
get encoded(): string;
|
|
16
|
-
get decoded(): DisclosureItem;
|
|
17
|
-
get digest(): string | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* Set the digest of the disclosure.
|
|
20
|
-
*
|
|
21
|
-
* NOTE: this method statically sets the digest, and does not verify whether the digest is correct.
|
|
22
|
-
* If you want to calculate the digest, use the `withCalculateDigest` method instead.
|
|
23
|
-
*/
|
|
24
|
-
withDigest(digest: string): DisclosureWithDigest;
|
|
25
|
-
withCalculateDigest<HasherImplementation extends Hasher | AsyncHasher>(hasherAndAlgorithm: HasherAndAlgorithm<HasherImplementation>, { recalculate }?: {
|
|
26
|
-
recalculate?: boolean;
|
|
27
|
-
}): WithCalculateDigestReturnType<HasherImplementation>;
|
|
28
|
-
toString(): string;
|
|
29
|
-
asJson(): this extends DisclosureWithDigest ? DisclosureWithDigestJson : DisclosureJson;
|
|
30
|
-
static fromJson<D extends DisclosureJson | DisclosureWithDigestJson>(disclosureJson: D): D extends DisclosureWithDigestJson ? DisclosureWithDigest : Disclosure;
|
|
31
|
-
}
|
|
32
|
-
export type WithCalculateDigestReturnType<HasherImplementation extends Hasher | AsyncHasher> = ReturnType<HasherImplementation> extends Promise<any> ? Promise<DisclosureWithDigest> : DisclosureWithDigest;
|
|
33
|
-
export declare function isDisclosureWithDigest(disclosure: Disclosure): disclosure is DisclosureWithDigest;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
-
};
|
|
13
|
-
var _Disclosure_digest;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.isDisclosureWithDigest = exports.Disclosure = void 0;
|
|
16
|
-
const decode_1 = require("@sd-jwt/decode");
|
|
17
|
-
const utils_1 = require("@sd-jwt/utils");
|
|
18
|
-
const error_1 = require("./error");
|
|
19
|
-
class Disclosure {
|
|
20
|
-
constructor(salt, value, key) {
|
|
21
|
-
_Disclosure_digest.set(this, void 0);
|
|
22
|
-
if (typeof value === 'number' && isNaN(value)) {
|
|
23
|
-
throw new error_1.SdJwtError('NaN is not allowed to be used in a disclosure.');
|
|
24
|
-
}
|
|
25
|
-
if (typeof value === 'number' && !isFinite(value)) {
|
|
26
|
-
throw new error_1.SdJwtError('Infinite is not allowed to be used in a disclosure.');
|
|
27
|
-
}
|
|
28
|
-
this.salt = salt;
|
|
29
|
-
this.key = key;
|
|
30
|
-
this.value = value;
|
|
31
|
-
}
|
|
32
|
-
static fromString(s) {
|
|
33
|
-
const item = utils_1.Base64url.decodeToJson(s);
|
|
34
|
-
return Disclosure.fromArray(item);
|
|
35
|
-
}
|
|
36
|
-
static fromArray(item) {
|
|
37
|
-
return item[2] === undefined
|
|
38
|
-
? new Disclosure(item[0], item[1])
|
|
39
|
-
: new Disclosure(item[0], item[2], item[1]);
|
|
40
|
-
}
|
|
41
|
-
get encoded() {
|
|
42
|
-
return utils_1.Base64url.encodeFromJson(this.decoded);
|
|
43
|
-
}
|
|
44
|
-
get decoded() {
|
|
45
|
-
return this.key
|
|
46
|
-
? [this.salt, this.key, this.value]
|
|
47
|
-
: [this.salt, this.value];
|
|
48
|
-
}
|
|
49
|
-
get digest() {
|
|
50
|
-
return __classPrivateFieldGet(this, _Disclosure_digest, "f");
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Set the digest of the disclosure.
|
|
54
|
-
*
|
|
55
|
-
* NOTE: this method statically sets the digest, and does not verify whether the digest is correct.
|
|
56
|
-
* If you want to calculate the digest, use the `withCalculateDigest` method instead.
|
|
57
|
-
*/
|
|
58
|
-
withDigest(digest) {
|
|
59
|
-
__classPrivateFieldSet(this, _Disclosure_digest, digest, "f");
|
|
60
|
-
return this;
|
|
61
|
-
}
|
|
62
|
-
withCalculateDigest(hasherAndAlgorithm,
|
|
63
|
-
// Whether to recalculate the digest, even if it is already set
|
|
64
|
-
{ recalculate = false } = {}) {
|
|
65
|
-
// NOTE: the implementation of this method seems overly complex, but it allows
|
|
66
|
-
// us to return a promise if the hasher returns a promise, and a value otherwise.
|
|
67
|
-
// This allows this method to be used in environments where the calling scope
|
|
68
|
-
// is not async, as long as the hasher is not async either.
|
|
69
|
-
if (!recalculate && isDisclosureWithDigest(this)) {
|
|
70
|
-
return this;
|
|
71
|
-
}
|
|
72
|
-
const digestResult = (0, decode_1.disclosureCalculateDigest)(this.asJson(),
|
|
73
|
-
// TODO: string vs HasherAlgorithm
|
|
74
|
-
hasherAndAlgorithm.algorithm, hasherAndAlgorithm.hasher);
|
|
75
|
-
if ((0, utils_1.isPromise)(digestResult)) {
|
|
76
|
-
return digestResult.then((digest) => {
|
|
77
|
-
__classPrivateFieldSet(this, _Disclosure_digest, digest, "f");
|
|
78
|
-
// We know for sure that digest is defined now
|
|
79
|
-
return this;
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
__classPrivateFieldSet(this, _Disclosure_digest, digestResult, "f");
|
|
84
|
-
// We know for sure that digest is defined now
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
toString() {
|
|
89
|
-
return this.encoded;
|
|
90
|
-
}
|
|
91
|
-
asJson() {
|
|
92
|
-
return {
|
|
93
|
-
encoded: this.encoded,
|
|
94
|
-
salt: this.salt,
|
|
95
|
-
value: this.value,
|
|
96
|
-
key: this.key,
|
|
97
|
-
digest: this.digest
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
static fromJson(disclosureJson) {
|
|
101
|
-
const disclosure = new Disclosure(disclosureJson.salt, disclosureJson.value, disclosureJson.key);
|
|
102
|
-
if ('digest' in disclosureJson) {
|
|
103
|
-
disclosure.withDigest(disclosureJson.digest);
|
|
104
|
-
}
|
|
105
|
-
return disclosure;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
exports.Disclosure = Disclosure;
|
|
109
|
-
_Disclosure_digest = new WeakMap();
|
|
110
|
-
function isDisclosureWithDigest(disclosure) {
|
|
111
|
-
return disclosure.digest !== undefined;
|
|
112
|
-
}
|
|
113
|
-
exports.isDisclosureWithDigest = isDisclosureWithDigest;
|
|
114
|
-
//# sourceMappingURL=disclosures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"disclosures.js","sourceRoot":"","sources":["../../src/sdJwt/disclosures.ts"],"names":[],"mappings":"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"}
|
package/build/sdJwt/error.d.ts
DELETED
package/build/sdJwt/error.js
DELETED
package/build/sdJwt/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/sdJwt/error.ts"],"names":[],"mappings":";;;AAAA,MAAa,UAAW,SAAQ,KAAK;CAAG;AAAxC,gCAAwC"}
|
package/build/sdJwt/index.d.ts
DELETED
package/build/sdJwt/index.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./error"), exports);
|
|
18
|
-
__exportStar(require("./sdJwt"), exports);
|
|
19
|
-
__exportStar(require("./disclosures"), exports);
|
|
20
|
-
__exportStar(require("./decoys"), exports);
|
|
21
|
-
__exportStar(require("./disclosureFrame"), exports);
|
|
22
|
-
__exportStar(require("./types"), exports);
|
|
23
|
-
//# sourceMappingURL=index.js.map
|
package/build/sdJwt/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdJwt/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,0CAAuB;AACvB,gDAA6B;AAC7B,2CAAwB;AACxB,oDAAiC;AACjC,0CAAuB"}
|