bitcoin-tx-lib
Version:
A Typescript library for building and signing Bitcoin transactions
77 lines • 4.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const ecpairkey_1 = require("./ecpairkey");
describe("ECPairKey", () => {
test("create keypair", () => {
const PairKey = new ecpairkey_1.ECPairKey();
expect(PairKey.privateKey).toBeDefined();
});
test("get the public key", () => {
const pairKey = new ecpairkey_1.ECPairKey({ privateKey: "0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d" });
const publicKey = pairKey.getPublicKey();
expect(publicKey).toBe("04d0de0aaeaefad02b8bdc8a01a1b8b11c696bd3d66a2c5f10780d95b7df42645cd85228a6fb29940e858e7e55842ae2bd115d1ed7cc0e82d934e929c97648cb0a");
});
test("get compressed public key", () => {
let pairKey = ecpairkey_1.ECPairKey.fromWif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ");
const compressed = pairKey.getPublicKeyCompressed();
expect(compressed).toBe("qWxvCXDvALEvQJriaWj7Pucs8e8N4jzNez2mnrCotqKH");
});
test("get private key WIF", () => {
const pairKey = new ecpairkey_1.ECPairKey({ privateKey: "0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d" });
expect(pairKey.getWif()).toBe("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ");
});
test("get public key WIF", () => {
const pairKey = new ecpairkey_1.ECPairKey({ privateKey: "0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d" });
const publicWif = pairKey.getPublicWif();
expect(publicWif).toBe("KwdMAjGmerYanjeui5SHS7JkmpZvVipYvB2LJGU1ZxJwYvP98617");
});
test("sign and verify signature", () => {
let pairKey = new ecpairkey_1.ECPairKey({ privateKey: "16260783e40b16731673622ac8a5b045fc3ea4af70f727f3f9e92bdd3a1ddc42" });
let signature = pairKey.signDER("6244980fa0752e5b4643edb353fda5238a9a3d44491676788efdd25dd64855ba");
let isValid = pairKey.verifySignature("6244980fa0752e5b4643edb353fda5238a9a3d44491676788efdd25dd64855ba", signature);
expect(isValid).toBe(true);
});
test("import from wif", () => {
let pairKey = ecpairkey_1.ECPairKey.fromWif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ");
expect(pairKey.privateKey).toBe("0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d");
let error = false;
let wifVersionError = "25JBG1P53WpDHnB1NFd9cSCZ9QdKS3fv5hqDbMte2bChDkmVhXa";
try {
pairKey = ecpairkey_1.ECPairKey.fromWif(wifVersionError);
}
catch (_a) {
error = true;
}
finally {
// a validation error must occur, as the first byte, designated the version, is incorrect
expect(error).toBe(true);
}
error = false;
let wifChecksumError = "5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvykx";
try {
pairKey = ecpairkey_1.ECPairKey.fromWif(wifChecksumError);
}
catch (_b) {
error = true;
}
// a validation error should occur because the last 4 bytes assigned to the checksum are incorrect
expect(error).toBe(true);
});
test("import from hex", () => {
const pairKey = ecpairkey_1.ECPairKey.fromHex({
privateKey: "9d01e9e28cba0217c5826838596733b2cf86a54fff3eabcabec90a2acdc101d8",
network: "testnet"
});
const address = pairKey.getAddress("p2wpkh");
expect(address).toBe("tb1q4ppec5re8vpnm7qsmcjhkvf3gj500mwfw0yxaj");
});
test("get bitcoin address", () => {
const pairKey = ecpairkey_1.ECPairKey.fromWif("5KCyEgVQ93iZoJ81tYrknfpry9LopRhJgBTdMFsapamox69wdar");
let address = pairKey.getAddress("p2pkh");
expect(address).toBeDefined();
expect(address).toBe("1Kj9UWTgPmzWrmHnFUx1hGzKi3A4R5e1NA");
address = pairKey.getAddress("p2wpkh"); // bech32
expect(address).toBe("bc1qe44vaalmg0yxd56wav8xhtqp5xe30fe7mxws4z");
});
});
//# sourceMappingURL=ecpairkey.test.js.map
;