@brightchain/brightchain-lib 0.29.19 → 0.29.21

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightchain/brightchain-lib",
3
- "version": "0.29.19",
3
+ "version": "0.29.21",
4
4
  "description": "BrightChain core library - browser-compatible blockchain storage",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
package/src/browser.d.ts CHANGED
@@ -28,6 +28,7 @@ export type { ILedgerSignatureVerifier } from './lib/interfaces/ledger/ledgerSig
28
28
  export type { ILedgerSigner } from './lib/interfaces/ledger/ledgerSigner';
29
29
  export type { ILedgerValidationError, IValidationResult as ILedgerValidationResult, LedgerValidationErrorType, } from './lib/interfaces/ledger/validationResult';
30
30
  export { EciesSignatureVerifier } from './lib/ledger/eciesSignatureVerifier';
31
+ export { BrowserSignatureVerifier } from './lib/ledger/browserSignatureVerifier';
31
32
  export { Ledger } from './lib/ledger/ledger';
32
33
  export { LedgerChainValidator } from './lib/ledger/ledgerChainValidator';
33
34
  export { LedgerEntrySerializer } from './lib/ledger/ledgerEntrySerializer';
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
package/src/browser.js CHANGED
@@ -2,7 +2,7 @@
2
2
  // Minimal browser-compatible exports
3
3
  // Only exports core functionality that works without Node.js modules
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.GovernanceActionType = exports.QuorumType = exports.SignerStatus = exports.SignerRole = exports.AuthorizedSignerSet = exports.GovernancePayloadSerializer = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.EciesSignatureVerifier = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
5
+ exports.GovernanceActionType = exports.QuorumType = exports.SignerStatus = exports.SignerRole = exports.AuthorizedSignerSet = exports.GovernancePayloadSerializer = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.BrowserSignatureVerifier = exports.EciesSignatureVerifier = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.RawDataBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./lib/brightChain"), exports);
8
8
  tslib_1.__exportStar(require("./lib/enumerations/blockSize"), exports);
@@ -50,6 +50,8 @@ var messagePriority_1 = require("./lib/enumerations/messaging/messagePriority");
50
50
  Object.defineProperty(exports, "MessagePriority", { enumerable: true, get: function () { return messagePriority_1.MessagePriority; } });
51
51
  var eciesSignatureVerifier_1 = require("./lib/ledger/eciesSignatureVerifier");
52
52
  Object.defineProperty(exports, "EciesSignatureVerifier", { enumerable: true, get: function () { return eciesSignatureVerifier_1.EciesSignatureVerifier; } });
53
+ var browserSignatureVerifier_1 = require("./lib/ledger/browserSignatureVerifier");
54
+ Object.defineProperty(exports, "BrowserSignatureVerifier", { enumerable: true, get: function () { return browserSignatureVerifier_1.BrowserSignatureVerifier; } });
53
55
  var ledger_1 = require("./lib/ledger/ledger");
54
56
  Object.defineProperty(exports, "Ledger", { enumerable: true, get: function () { return ledger_1.Ledger; } });
55
57
  var ledgerChainValidator_1 = require("./lib/ledger/ledgerChainValidator");
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAsBxB,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAE5B,sBAAsB;AACtB,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA;AAEpC,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,qEAAkE;AAAzD,0GAAA,UAAU,OAAA;AACnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAsBxB,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,kFAAiF;AAAxE,oIAAA,wBAAwB,OAAA;AACjC,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAE5B,sBAAsB;AACtB,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA;AAEpC,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,qEAAkE;AAAzD,0GAAA,UAAU,OAAA;AACnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @fileoverview BrowserSignatureVerifier — lightweight ILedgerSignatureVerifier.
3
+ *
4
+ * Calls @noble/curves secp256k1 directly to verify compact ECDSA signatures
5
+ * without requiring an ECIESService instance. Useful in browser contexts
6
+ * (e.g. the showcase demo) where you want minimal dependencies.
7
+ *
8
+ * EciesSignatureVerifier is the full-featured alternative that wraps
9
+ * ECIESService.verifyMessage().
10
+ *
11
+ * @see eciesSignatureVerifier.ts for the ECIESService-backed version
12
+ */
13
+ import type { SignatureUint8Array } from '@digitaldefiance/ecies-lib';
14
+ import type { ILedgerSignatureVerifier } from '../interfaces/ledger/ledgerSignatureVerifier';
15
+ export declare class BrowserSignatureVerifier implements ILedgerSignatureVerifier {
16
+ verify(publicKey: Uint8Array, data: Uint8Array, signature: SignatureUint8Array): boolean;
17
+ }
18
+ //# sourceMappingURL=browserSignatureVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserSignatureVerifier.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/browserSignatureVerifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAE7F,qBAAa,wBAAyB,YAAW,wBAAwB;IACvE,MAAM,CACJ,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,mBAAmB,GAC7B,OAAO;CAYX"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview BrowserSignatureVerifier — lightweight ILedgerSignatureVerifier.
4
+ *
5
+ * Calls @noble/curves secp256k1 directly to verify compact ECDSA signatures
6
+ * without requiring an ECIESService instance. Useful in browser contexts
7
+ * (e.g. the showcase demo) where you want minimal dependencies.
8
+ *
9
+ * EciesSignatureVerifier is the full-featured alternative that wraps
10
+ * ECIESService.verifyMessage().
11
+ *
12
+ * @see eciesSignatureVerifier.ts for the ECIESService-backed version
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.BrowserSignatureVerifier = void 0;
16
+ const secp256k1_1 = require("@noble/curves/secp256k1");
17
+ const sha2_1 = require("@noble/hashes/sha2");
18
+ class BrowserSignatureVerifier {
19
+ verify(publicKey, data, signature) {
20
+ try {
21
+ if (!signature || signature.length !== 64)
22
+ return false;
23
+ const hash = (0, sha2_1.sha256)(data);
24
+ return secp256k1_1.secp256k1.verify(signature, hash, publicKey, {
25
+ prehash: false,
26
+ format: 'compact',
27
+ });
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ }
34
+ exports.BrowserSignatureVerifier = BrowserSignatureVerifier;
35
+ //# sourceMappingURL=browserSignatureVerifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserSignatureVerifier.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/ledger/browserSignatureVerifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAGH,uDAAoD;AACpD,6CAA4C;AAG5C,MAAa,wBAAwB;IACnC,MAAM,CACJ,SAAqB,EACrB,IAAgB,EAChB,SAA8B;QAE9B,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;gBAAE,OAAO,KAAK,CAAC;YACxD,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC;YAC1B,OAAO,qBAAS,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClD,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAjBD,4DAiBC"}