@brightchain/brightchain-lib 0.1.4 → 0.1.5
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/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ECIESService, Member, PlatformID, ShortHexGuid, TypedIdProviderWrapper } from '@digitaldefiance/ecies-lib';
|
|
2
|
-
import
|
|
2
|
+
import type { Shares } from '@digitaldefiance/secrets';
|
|
3
3
|
import { QuorumDataRecord } from '../quorumDataRecord';
|
|
4
4
|
export declare class SealingService<TID extends PlatformID = Uint8Array> {
|
|
5
5
|
private readonly eciesService;
|
|
@@ -33,7 +33,7 @@ export declare class SealingService<TID extends PlatformID = Uint8Array> {
|
|
|
33
33
|
* @param membersWithPrivateKey Members with loaded private keys
|
|
34
34
|
* @returns Decrypted shares
|
|
35
35
|
*/
|
|
36
|
-
decryptShares(document: QuorumDataRecord<TID>, membersWithPrivateKey: Member<TID>[]): Promise<
|
|
36
|
+
decryptShares(document: QuorumDataRecord<TID>, membersWithPrivateKey: Member<TID>[]): Promise<Shares>;
|
|
37
37
|
/**
|
|
38
38
|
* Using Shamir's Secret Sharing, recombine the given shares into the original data
|
|
39
39
|
* @param document The document to unseal
|
|
@@ -47,20 +47,20 @@ export declare class SealingService<TID extends PlatformID = Uint8Array> {
|
|
|
47
47
|
* @param recoveredShares The shares to use for unsealing
|
|
48
48
|
* @returns The unsealed data
|
|
49
49
|
*/
|
|
50
|
-
quorumUnsealWithShares<T>(document: QuorumDataRecord<TID>, recoveredShares:
|
|
50
|
+
quorumUnsealWithShares<T>(document: QuorumDataRecord<TID>, recoveredShares: Shares): Promise<T>;
|
|
51
51
|
/**
|
|
52
52
|
* Encrypt each key share with each member's public key
|
|
53
53
|
* @param shares The shares to encrypt
|
|
54
54
|
* @param members The members to encrypt shares for
|
|
55
55
|
* @returns Map of encrypted shares by member ID
|
|
56
56
|
*/
|
|
57
|
-
encryptSharesForMembers(shares:
|
|
57
|
+
encryptSharesForMembers(shares: Shares, members: Member<TID>[]): Promise<Map<ShortHexGuid, Uint8Array>>;
|
|
58
58
|
/**
|
|
59
59
|
* Decrypt each key share with each member's private key
|
|
60
60
|
* @param encryptedSharesByMemberId Map of encrypted shares by member ID
|
|
61
61
|
* @param members Members with loaded private keys
|
|
62
62
|
* @returns Decrypted shares
|
|
63
63
|
*/
|
|
64
|
-
decryptSharesForMembers(encryptedSharesByMemberId: Map<TID, Uint8Array>, members: Member<TID>[]): Promise<
|
|
64
|
+
decryptSharesForMembers(encryptedSharesByMemberId: Map<TID, Uint8Array>, members: Member<TID>[]): Promise<Shares>;
|
|
65
65
|
}
|
|
66
66
|
//# sourceMappingURL=sealing.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sealing.service.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/sealing.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAGZ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"sealing.service.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/sealing.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAGZ,MAAM,EACN,UAAU,EACV,YAAY,EACZ,sBAAsB,EAEvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAYvD,qBAAa,cAAc,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;gBAE7D,YAAY,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,EAChC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC,GAAG,CAAC;IAMhD;;;OAGG;IACI,aAAa,CAAC,SAAS,EAAE,MAAM;IAgBtC;;OAEG;WACW,wBAAwB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACxE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7B,cAAc,CAAC,EAAE,MAAM;IAiBzB;;;;;;;OAOG;IACU,UAAU,CAAC,CAAC,EACvB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAClB,IAAI,EAAE,CAAC,EACP,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAC7B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAyCjC;;OAEG;WACW,wBAAwB,CAAC,GAAG,SAAS,UAAU,GAAG,UAAU,EACxE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GACrB,OAAO;IAWV;;;;;OAKG;IACU,aAAa,CACxB,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC/B,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GACnC,OAAO,CAAC,MAAM,CAAC;IAkClB;;;;;OAKG;IACU,YAAY,CAAC,CAAC,EACzB,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC/B,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GACnC,OAAO,CAAC,CAAC,CAAC;IAUb;;;;;OAKG;IACU,sBAAsB,CAAC,CAAC,EACnC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC/B,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;;OAKG;IACU,uBAAuB,CAClC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GACrB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IA8BzC;;;;;OAKG;IACU,uBAAuB,CAClC,yBAAyB,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,EAC/C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GACrB,OAAO,CAAC,MAAM,CAAC;CA6BnB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SealingService = void 0;
|
|
4
4
|
const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
|
|
5
|
-
const
|
|
5
|
+
const secrets_1 = require("@digitaldefiance/secrets");
|
|
6
6
|
const constants_1 = require("../constants");
|
|
7
7
|
const sealingErrorType_1 = require("../enumerations/sealingErrorType");
|
|
8
8
|
const sealingError_1 = require("../errors/sealingError");
|
|
@@ -36,8 +36,8 @@ class SealingService {
|
|
|
36
36
|
throw new sealingError_1.SealingError(sealingErrorType_1.SealingErrorType.InvalidBitRange);
|
|
37
37
|
}
|
|
38
38
|
// secrets.init requires a CSPRNG type, get the current one
|
|
39
|
-
const config =
|
|
40
|
-
|
|
39
|
+
const config = secrets_1.default.getConfig();
|
|
40
|
+
secrets_1.default.init(bits, config.typeCSPRNG);
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Validate inputs for quorum sealing operations
|
|
@@ -77,7 +77,7 @@ class SealingService {
|
|
|
77
77
|
// alice: 1 share, bob (required): 3 shares, carol: 1 share = total 5 shares
|
|
78
78
|
// split the key using shamir's secret sharing
|
|
79
79
|
this.reinitSecrets(amongstMembers.length);
|
|
80
|
-
const keyShares =
|
|
80
|
+
const keyShares = secrets_1.default.share((0, ecies_lib_1.uint8ArrayToHex)(key), amongstMembers.length, sharesRequired);
|
|
81
81
|
// distribute the key shares to the members
|
|
82
82
|
const encryptedSharesByMemberId = await this.encryptSharesForMembers(keyShares, amongstMembers);
|
|
83
83
|
return new quorumDataRecord_1.QuorumDataRecord(agent, amongstMembers.map((m) => m.id), sharesRequired, encryptedData, encryptedSharesByMemberId);
|
|
@@ -145,7 +145,7 @@ class SealingService {
|
|
|
145
145
|
try {
|
|
146
146
|
// reconstitute the document key from the shares
|
|
147
147
|
this.reinitSecrets(document.encryptedSharesByMemberId.size);
|
|
148
|
-
const combined =
|
|
148
|
+
const combined = secrets_1.default.combine(recoveredShares);
|
|
149
149
|
const key = (0, ecies_lib_1.hexToUint8Array)(combined);
|
|
150
150
|
const aesGcmService = new ecies_lib_1.AESGCMService(this.eciesService.constants);
|
|
151
151
|
return await aesGcmService.decryptJson(document.encryptedData, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sealing.service.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/sealing.service.ts"],"names":[],"mappings":";;;AAAA,0DAUoC;
|
|
1
|
+
{"version":3,"file":"sealing.service.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/services/sealing.service.ts"],"names":[],"mappings":"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"}
|