@stricahq/bip32ed25519
Version:
Pure javascript implementation of Bip32Ed25519, used for Cardano blockchain key pair.
40 lines (39 loc) • 1.38 kB
JavaScript
;
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;