UNPKG

@stricahq/bip32ed25519

Version:

Pure javascript implementation of Bip32Ed25519, used for Cardano blockchain key pair.

40 lines (39 loc) 1.38 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const buffer_1 = require("buffer"); const utils_1 = require("./utils"); const PublicKey_1 = __importDefault(require("./PublicKey")); const EDDSA = require("./ed25519e"); const eddsa = new EDDSA(); class PrivateKey { constructor(privKey) { this.privKey = privKey; } static fromSecretKey(secretKey) { let extendedSecret = utils_1.sha512(secretKey); extendedSecret[0] &= 248; extendedSecret[31] &= 63; extendedSecret[31] |= 64; return new PrivateKey(extendedSecret); } toBytes() { return this.privKey; } toPublicKey() { const keyPair = eddsa.keyFromSecret(this.privKey); return new PublicKey_1.default(buffer_1.Buffer.from(keyPair.pubBytes())); } sign(data) { const keyPair = eddsa.keyFromSecret(this.privKey); const signature = keyPair.sign(data.toString("hex")); return buffer_1.Buffer.from(signature.toBytes()); } verify(signature, message) { const keyPair = eddsa.keyFromSecret(this.privKey); return keyPair.verify(message.toString("hex"), signature.toString("hex")); } } exports.default = PrivateKey;