UNPKG

smartledger-sdk

Version:

A comprehensive blockchain and cryptographic operations SDK for JavaScript

170 lines (155 loc) 5.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.SmartLedger = void 0; var _Keys = _interopRequireDefault(require("./Keys.js")); var _Signature = _interopRequireDefault(require("./Signature.js")); var _Encryption = _interopRequireDefault(require("./Encryption.js")); var _SecretSharer = _interopRequireDefault(require("./SecretSharer.js")); var _Hashes = _interopRequireDefault(require("./Hashes.js")); var _uuid = require("uuid"); var _bsv = _interopRequireDefault(require("bsv")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } class SmartLedger { constructor() { this.encryption = new _Encryption.default(); this.signature = new _Signature.default(); this.keys = new _Keys.default(); this.secretSharer = new _SecretSharer.default(); this.hash = _Hashes.default; this.uuid = (0, _uuid.v4)(); this.bsv = _bsv.default; } // Key Management Methods static generateMnemonic() { return _Keys.default.generateMnemonic(); } static generateKeyPair() { return _Keys.default.generateKeyPair(); } static fromWIF(wif) { return _Keys.default.fromWIF(wif); } static fromMnemonic(mnemonic, purpose = "financial") { return _Keys.default.fromMnemonic(mnemonic, purpose); } generateAllKeys(mnemonic) { const keys = _Keys.default.generateAllKeys(mnemonic); return keys.keys; // Return just the array of keys } // Signature Methods static signWithWIF(data, wif) { const signer = _Signature.default.fromWIF(wif); return signer.sign(data); } static signWithMnemonic(data, mnemonic, purpose = "document") { const signer = _Signature.default.fromMnemonic(mnemonic, purpose); return signer.sign(data); } static verifySignature(data, signature, publicKey) { const verifier = _Signature.default.fromPublicKey(publicKey); return verifier.verify(data, signature, publicKey); } // Encryption Methods static encrypt(data, key) { return _Encryption.default.encrypt(data, key); } static decrypt(ciphertext, key) { return _Encryption.default.decrypt(ciphertext, key); } // Secret Sharing Methods splitSecret(secret, shares, threshold) { return this.secretSharer.splitSecret(secret, shares, threshold); } combineShares(shares) { return this.secretSharer.combineShares(shares); } shareToHex(share) { return this.secretSharer.shareToHex(share); } hexToShare(hexShare) { return this.secretSharer.hexToShare(hexShare); } // Hash Methods static hash256(data) { return _Hashes.default.hash256(data); } static hash512(data) { return _Hashes.default.hash512(data); } static doubleHash256(data) { return _Hashes.default.doubleHash256(data); } static hash160(data) { return _Hashes.default.hash160(data); } static verifyHash(data, hash, algorithm = "256") { return _Hashes.default.verifyHash(data, hash, algorithm); } // Instance Hash Methods hash256(data) { return this.hash.hash256(data); } hash512(data) { return this.hash.hash512(data); } doubleHash256(data) { return this.hash.doubleHash256(data); } hash160(data) { return this.hash.hash160(data); } verifyHash(data, hash, algorithm = "256") { return this.hash.verifyHash(data, hash, algorithm); } // UUID Methods getUUID() { return this.uuid; } static generateUUIDv5(name, namespace = "smartledger.example.com") { // Create a namespace UUID using a domain const namespaceUUID = (0, _uuid.v5)(namespace, _uuid.v5.DNS); // Generate a v5 UUID using the namespace and name return (0, _uuid.v5)(name, namespaceUUID); } // BSV Library Access getBSV() { return this.bsv; } } exports.SmartLedger = SmartLedger; var _default = exports.default = SmartLedger; // Example usage const ledger = new SmartLedger(); const mnemonic = SmartLedger.generateMnemonic(); const keys = ledger.generateAllKeys(mnemonic); console.log(keys); // Encryption example const encryptedData = SmartLedger.encrypt({ message: "Hello, World!" }, "my-secret-key"); console.log("Encrypted:", encryptedData); const decryptedData = SmartLedger.decrypt(encryptedData, "my-secret-key"); console.log("Decrypted:", decryptedData); // Hash example const message = "Hello, SmartLedger!"; console.log("SHA256:", SmartLedger.hash256(message)); console.log("Double SHA256:", SmartLedger.doubleHash256(message)); console.log("HASH160:", SmartLedger.hash160(message)); // UUID examples console.log("\nUUID Examples:"); console.log("Random UUIDv4:", ledger.getUUID()); // UUIDv5 examples const resourceName = "transaction/123"; const uuidForResource = SmartLedger.generateUUIDv5(resourceName); console.log("UUIDv5 for resource:", uuidForResource); // Example of consistent UUIDs const repeatedUuid1 = SmartLedger.generateUUIDv5(resourceName); const repeatedUuid2 = SmartLedger.generateUUIDv5(resourceName); console.log("UUIDv5 consistency check:", repeatedUuid1 === repeatedUuid2 ? "✓ Matching" : "✗ Not matching"); // Example with custom namespace const customNamespace = "myapp.smartledger.com"; const customResource = "user/456"; const uuidWithCustomNamespace = SmartLedger.generateUUIDv5(customResource, customNamespace); console.log("UUIDv5 with custom namespace:", uuidWithCustomNamespace);