bitgo
Version:
BitGo JavaScript SDK
54 lines • 9.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
require("should");
const crypto_1 = require("crypto");
const sdk_test_1 = require("@bitgo/sdk-test");
const bitgo_1 = require("../../../../src/bitgo");
describe('OFC:', function () {
let bitgo;
let ofcCoin;
before(function () {
bitgo = sdk_test_1.TestBitGo.decorate(bitgo_1.BitGo, { env: 'test' });
bitgo.initializeTestVars();
ofcCoin = bitgo.coin('ofc');
});
it('functions that return constants', function () {
ofcCoin.getChain().should.equal('ofc');
ofcCoin.getFullName().should.equal('Offchain');
});
it('isValidMofNSetup', function () {
ofcCoin.isValidMofNSetup({ m: 2, n: 3 }).should.be.false();
ofcCoin.isValidMofNSetup({ m: 1, n: 3 }).should.be.false();
ofcCoin.isValidMofNSetup({ m: 1, n: 1 }).should.be.true();
});
describe('isValidPub', () => {
it('accepts a BIP-32 xpub (user key)', () => {
const { pub } = ofcCoin.keychains().create();
ofcCoin.isValidPub(pub).should.equal(true);
});
it('accepts a base64 SPKI secp256k1 public key (BitGo key)', () => {
const { publicKey } = (0, crypto_1.generateKeyPairSync)('ec', { namedCurve: 'secp256k1' });
const spkiBase64 = publicKey.export({ type: 'spki', format: 'der' }).toString('base64');
ofcCoin.isValidPub(spkiBase64).should.equal(true);
});
it('rejects a BIP-32 xprv (private key)', () => {
const { prv } = ofcCoin.keychains().create();
ofcCoin.isValidPub(prv).should.equal(false);
});
it('rejects a SPKI public key on the wrong curve (P-256)', () => {
const { publicKey } = (0, crypto_1.generateKeyPairSync)('ec', { namedCurve: 'prime256v1' });
const spkiBase64 = publicKey.export({ type: 'spki', format: 'der' }).toString('base64');
ofcCoin.isValidPub(spkiBase64).should.equal(false);
});
it('rejects garbage base64', () => {
ofcCoin.isValidPub(Buffer.from('not a key').toString('base64')).should.equal(false);
});
it('rejects an empty string', () => {
ofcCoin.isValidPub('').should.equal(false);
});
it('rejects a raw (non-SPKI) secp256k1 hex public key', () => {
ofcCoin.isValidPub('02' + '11'.repeat(32)).should.equal(false);
});
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC92Mi91bml0L2NvaW5zL29mYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtCQUFnQjtBQUNoQixtQ0FBNkM7QUFFN0MsOENBQTRDO0FBQzVDLGlEQUE4QztBQUU5QyxRQUFRLENBQUMsTUFBTSxFQUFFO0lBQ2YsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLE9BQU8sQ0FBQztJQUVaLE1BQU0sQ0FBQztRQUNMLEtBQUssR0FBRyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxhQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNuRCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMzQixPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRTtRQUNwQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrQkFBa0IsRUFBRTtRQUNyQixPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1RCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQzFCLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7WUFDMUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1lBQ2hFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDRCQUFtQixFQUFDLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzdFLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RixPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFO1lBQzdDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNEQUFzRCxFQUFFLEdBQUcsRUFBRTtZQUM5RCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBQSw0QkFBbUIsRUFBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUM5RSxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEYsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtZQUNoQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7WUFDakMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMzRCxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBnZW5lcmF0ZUtleVBhaXJTeW5jIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgVGVzdEJpdEdvIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IEJpdEdvIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvJztcblxuZGVzY3JpYmUoJ09GQzonLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiaXRnbztcbiAgbGV0IG9mY0NvaW47XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHbywgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5pbml0aWFsaXplVGVzdFZhcnMoKTtcbiAgICBvZmNDb2luID0gYml0Z28uY29pbignb2ZjJyk7XG4gIH0pO1xuXG4gIGl0KCdmdW5jdGlvbnMgdGhhdCByZXR1cm4gY29uc3RhbnRzJywgZnVuY3Rpb24gKCkge1xuICAgIG9mY0NvaW4uZ2V0Q2hhaW4oKS5zaG91bGQuZXF1YWwoJ29mYycpO1xuICAgIG9mY0NvaW4uZ2V0RnVsbE5hbWUoKS5zaG91bGQuZXF1YWwoJ09mZmNoYWluJyk7XG4gIH0pO1xuXG4gIGl0KCdpc1ZhbGlkTW9mTlNldHVwJywgZnVuY3Rpb24gKCkge1xuICAgIG9mY0NvaW4uaXNWYWxpZE1vZk5TZXR1cCh7IG06IDIsIG46IDMgfSkuc2hvdWxkLmJlLmZhbHNlKCk7XG4gICAgb2ZjQ29pbi5pc1ZhbGlkTW9mTlNldHVwKHsgbTogMSwgbjogMyB9KS5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICBvZmNDb2luLmlzVmFsaWRNb2ZOU2V0dXAoeyBtOiAxLCBuOiAxIH0pLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpc1ZhbGlkUHViJywgKCkgPT4ge1xuICAgIGl0KCdhY2NlcHRzIGEgQklQLTMyIHhwdWIgKHVzZXIga2V5KScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcHViIH0gPSBvZmNDb2luLmtleWNoYWlucygpLmNyZWF0ZSgpO1xuICAgICAgb2ZjQ29pbi5pc1ZhbGlkUHViKHB1Yikuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FjY2VwdHMgYSBiYXNlNjQgU1BLSSBzZWNwMjU2azEgcHVibGljIGtleSAoQml0R28ga2V5KScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgcHVibGljS2V5IH0gPSBnZW5lcmF0ZUtleVBhaXJTeW5jKCdlYycsIHsgbmFtZWRDdXJ2ZTogJ3NlY3AyNTZrMScgfSk7XG4gICAgICBjb25zdCBzcGtpQmFzZTY0ID0gcHVibGljS2V5LmV4cG9ydCh7IHR5cGU6ICdzcGtpJywgZm9ybWF0OiAnZGVyJyB9KS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICBvZmNDb2luLmlzVmFsaWRQdWIoc3BraUJhc2U2NCkuc2hvdWxkLmVxdWFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBCSVAtMzIgeHBydiAocHJpdmF0ZSBrZXkpJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBwcnYgfSA9IG9mY0NvaW4ua2V5Y2hhaW5zKCkuY3JlYXRlKCk7XG4gICAgICBvZmNDb2luLmlzVmFsaWRQdWIocHJ2KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBTUEtJIHB1YmxpYyBrZXkgb24gdGhlIHdyb25nIGN1cnZlIChQLTI1NiknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IHB1YmxpY0tleSB9ID0gZ2VuZXJhdGVLZXlQYWlyU3luYygnZWMnLCB7IG5hbWVkQ3VydmU6ICdwcmltZTI1NnYxJyB9KTtcbiAgICAgIGNvbnN0IHNwa2lCYXNlNjQgPSBwdWJsaWNLZXkuZXhwb3J0KHsgdHlwZTogJ3Nwa2knLCBmb3JtYXQ6ICdkZXInIH0pLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIG9mY0NvaW4uaXNWYWxpZFB1YihzcGtpQmFzZTY0KS5zaG91bGQuZXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgZ2FyYmFnZSBiYXNlNjQnLCAoKSA9PiB7XG4gICAgICBvZmNDb2luLmlzVmFsaWRQdWIoQnVmZmVyLmZyb20oJ25vdCBhIGtleScpLnRvU3RyaW5nKCdiYXNlNjQnKSkuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGFuIGVtcHR5IHN0cmluZycsICgpID0+IHtcbiAgICAgIG9mY0NvaW4uaXNWYWxpZFB1YignJykuc2hvdWxkLmVxdWFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWplY3RzIGEgcmF3IChub24tU1BLSSkgc2VjcDI1NmsxIGhleCBwdWJsaWMga2V5JywgKCkgPT4ge1xuICAgICAgb2ZjQ29pbi5pc1ZhbGlkUHViKCcwMicgKyAnMTEnLnJlcGVhdCgzMikpLnNob3VsZC5lcXVhbChmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=