PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-lib/dist/test/bitgo/zcash

Просмотр файла: hashZip0244.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const assert = require("assert");
const vectors = require("./fixtures/vectorsZip0244.json");
const bitgo_1 = require("../../../src/bitgo");
const src_1 = require("../../../src");
function parseHashType(hashTypeStr) {
    return hashTypeStr.split('|').reduce((v, str) => {
        if (str in src_1.Transaction) {
            return v | src_1.Transaction[str];
        }
        throw new Error(`invalid hashType ${str}`);
    }, 0);
}
function runVector(v, i) {
    const [txHex, txid, 
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    authDigest, transparentInput, pubScriptHex, amount, ...sigHashHex /* sighash_all, sighash_none, sighash_single, sighash_all_anyone, sighash_none_anyone, sighash_single_anyone */] = v;
    describe(`Vector ${i}, txid=${txid}`, function () {
        let tx;
        before('parse', function () {
            try {
                tx = bitgo_1.ZcashTransaction.fromBuffer(Buffer.from(txHex, 'hex'), false, 'number', src_1.networks.zcash);
            }
            catch (e) {
                if (e instanceof bitgo_1.UnsupportedTransactionError) {
                    this.skip();
                }
                throw e;
            }
        });
        it('has expected txid', function () {
            // getId() returns the reversed hash
            assert.strictEqual(tx.getHash().toString('hex'), txid);
        });
        [
            'SIGHASH_ALL',
            'SIGHASH_NONE',
            'SIGHASH_SINGLE',
            'SIGHASH_ALL|SIGHASH_ANYONECANPAY',
            'SIGHASH_NONE|SIGHASH_ANYONECANPAY',
            'SIGHASH_SINGLE|SIGHASH_ANYONECANPAY',
        ].forEach((hashTypeStr, i) => {
            if (sigHashHex[i] === null) {
                return;
            }
            const hashType = parseHashType(hashTypeStr);
            it(`has expected value for ${hashTypeStr} ${hashType}`, function () {
                assert.strictEqual(tx
                    .hashForSignatureByNetwork(transparentInput ?? undefined, pubScriptHex ? Buffer.from(pubScriptHex, 'hex') : Buffer.of(), amount, hashType)
                    .toString('hex'), sigHashHex[i]);
            });
        });
    });
}
describe('ZcashTransaction ZIP-0244', function () {
    vectors
        .filter((v) => v.length > 1)
        .forEach((v, i) => {
        runVector(v, i);
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaFppcDAyNDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L2JpdGdvL3pjYXNoL2hhc2haaXAwMjQ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWlDO0FBQ2pDLDBEQUEwRDtBQUMxRCw4Q0FBbUY7QUFDbkYsc0NBQXFEO0FBaUJyRCxTQUFTLGFBQWEsQ0FBQyxXQUFtQjtJQUN4QyxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQzlDLElBQUksR0FBRyxJQUFJLGlCQUFXLEVBQUUsQ0FBQztZQUN2QixPQUFPLENBQUMsR0FBRyxpQkFBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUNyQyxNQUFNLENBQ0osS0FBSyxFQUNMLElBQUk7SUFDSiw2REFBNkQ7SUFDN0QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osTUFBTSxFQUNOLEdBQUcsVUFBVSxDQUFDLCtHQUErRyxDQUM5SCxHQUFHLENBQUMsQ0FBQztJQUVOLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRTtRQUNwQyxJQUFJLEVBQW9CLENBQUM7UUFDekIsTUFBTSxDQUFDLE9BQU8sRUFBRTtZQUNkLElBQUksQ0FBQztnQkFDSCxFQUFFLEdBQUcsd0JBQWdCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsY0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxZQUFZLG1DQUEyQixFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZCxDQUFDO2dCQUNELE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1CQUFtQixFQUFFO1lBQ3RCLG9DQUFvQztZQUNwQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7UUFFSDtZQUNFLGFBQWE7WUFDYixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLGtDQUFrQztZQUNsQyxtQ0FBbUM7WUFDbkMscUNBQXFDO1NBQ3RDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMzQixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1QyxFQUFFLENBQUMsMEJBQTBCLFdBQVcsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDdEQsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsRUFBRTtxQkFDQyx5QkFBeUIsQ0FDeEIsZ0JBQWdCLElBQUksU0FBUyxFQUM3QixZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQzdELE1BQU0sRUFDTixRQUFRLENBQ1Q7cUJBQ0EsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUNsQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ2QsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxRQUFRLENBQUMsMkJBQTJCLEVBQUU7SUFDcEMsT0FBTztTQUNKLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDM0IsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ2hCLFNBQVMsQ0FBQyxDQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdmVjdG9ycyBmcm9tICcuL2ZpeHR1cmVzL3ZlY3RvcnNaaXAwMjQ0Lmpzb24nO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yLCBaY2FzaFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2JpdGdvJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBuZXR3b3JrcyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5cbnR5cGUgVmVjdG9yID0gW1xuICB0eDogc3RyaW5nLFxuICB0eGlkOiBzdHJpbmcsXG4gIGF1dGhfZGlnZXN0OiBzdHJpbmcsXG4gIHRyYW5zcGFyZW50X2lucHV0OiBudW1iZXIsXG4gIHNjcmlwdF9jb2RlOiBzdHJpbmcsXG4gIGFtb3VudDogbnVtYmVyLFxuICBzaWdoYXNoX2FsbDogc3RyaW5nLFxuICBzaWdoYXNoX25vbmU6IHN0cmluZyxcbiAgc2lnaGFzaF9zaW5nbGU6IHN0cmluZyxcbiAgc2lnaGFzaF9hbGxfYW55b25lOiBzdHJpbmcsXG4gIHNpZ2hhc2hfbm9uZV9hbnlvbmU6IHN0cmluZyxcbiAgc2lnaGFzaF9zaW5nbGVfYW55b25lOiBzdHJpbmdcbl07XG5cbmZ1bmN0aW9uIHBhcnNlSGFzaFR5cGUoaGFzaFR5cGVTdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBoYXNoVHlwZVN0ci5zcGxpdCgnfCcpLnJlZHVjZSgodiwgc3RyKSA9PiB7XG4gICAgaWYgKHN0ciBpbiBUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuIHYgfCBUcmFuc2FjdGlvbltzdHJdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgaGFzaFR5cGUgJHtzdHJ9YCk7XG4gIH0sIDApO1xufVxuXG5mdW5jdGlvbiBydW5WZWN0b3IodjogVmVjdG9yLCBpOiBudW1iZXIpIHtcbiAgY29uc3QgW1xuICAgIHR4SGV4LFxuICAgIHR4aWQsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGF1dGhEaWdlc3QsXG4gICAgdHJhbnNwYXJlbnRJbnB1dCxcbiAgICBwdWJTY3JpcHRIZXgsXG4gICAgYW1vdW50LFxuICAgIC4uLnNpZ0hhc2hIZXggLyogc2lnaGFzaF9hbGwsIHNpZ2hhc2hfbm9uZSwgc2lnaGFzaF9zaW5nbGUsIHNpZ2hhc2hfYWxsX2FueW9uZSwgc2lnaGFzaF9ub25lX2FueW9uZSwgc2lnaGFzaF9zaW5nbGVfYW55b25lICovXG4gIF0gPSB2O1xuXG4gIGRlc2NyaWJlKGBWZWN0b3IgJHtpfSwgdHhpZD0ke3R4aWR9YCwgZnVuY3Rpb24gKCkge1xuICAgIGxldCB0eDogWmNhc2hUcmFuc2FjdGlvbjtcbiAgICBiZWZvcmUoJ3BhcnNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdHggPSBaY2FzaFRyYW5zYWN0aW9uLmZyb21CdWZmZXIoQnVmZmVyLmZyb20odHhIZXgsICdoZXgnKSwgZmFsc2UsICdudW1iZXInLCBuZXR3b3Jrcy56Y2FzaCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlIGluc3RhbmNlb2YgVW5zdXBwb3J0ZWRUcmFuc2FjdGlvbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5za2lwKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgdHhpZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIGdldElkKCkgcmV0dXJucyB0aGUgcmV2ZXJzZWQgaGFzaFxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHR4LmdldEhhc2goKS50b1N0cmluZygnaGV4JyksIHR4aWQpO1xuICAgIH0pO1xuXG4gICAgW1xuICAgICAgJ1NJR0hBU0hfQUxMJyxcbiAgICAgICdTSUdIQVNIX05PTkUnLFxuICAgICAgJ1NJR0hBU0hfU0lOR0xFJyxcbiAgICAgICdTSUdIQVNIX0FMTHxTSUdIQVNIX0FOWU9ORUNBTlBBWScsXG4gICAgICAnU0lHSEFTSF9OT05FfFNJR0hBU0hfQU5ZT05FQ0FOUEFZJyxcbiAgICAgICdTSUdIQVNIX1NJTkdMRXxTSUdIQVNIX0FOWU9ORUNBTlBBWScsXG4gICAgXS5mb3JFYWNoKChoYXNoVHlwZVN0ciwgaSkgPT4ge1xuICAgICAgaWYgKHNpZ0hhc2hIZXhbaV0gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaGFzaFR5cGUgPSBwYXJzZUhhc2hUeXBlKGhhc2hUeXBlU3RyKTtcbiAgICAgIGl0KGBoYXMgZXhwZWN0ZWQgdmFsdWUgZm9yICR7aGFzaFR5cGVTdHJ9ICR7aGFzaFR5cGV9YCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICAgICAgdHhcbiAgICAgICAgICAgIC5oYXNoRm9yU2lnbmF0dXJlQnlOZXR3b3JrKFxuICAgICAgICAgICAgICB0cmFuc3BhcmVudElucHV0ID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgcHViU2NyaXB0SGV4ID8gQnVmZmVyLmZyb20ocHViU2NyaXB0SGV4LCAnaGV4JykgOiBCdWZmZXIub2YoKSxcbiAgICAgICAgICAgICAgYW1vdW50LFxuICAgICAgICAgICAgICBoYXNoVHlwZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBzaWdIYXNoSGV4W2ldXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmRlc2NyaWJlKCdaY2FzaFRyYW5zYWN0aW9uIFpJUC0wMjQ0JywgZnVuY3Rpb24gKCkge1xuICB2ZWN0b3JzXG4gICAgLmZpbHRlcigodikgPT4gdi5sZW5ndGggPiAxKVxuICAgIC5mb3JFYWNoKCh2LCBpKSA9PiB7XG4gICAgICBydW5WZWN0b3IodiBhcyBWZWN0b3IsIGkpO1xuICAgIH0pO1xufSk7XG4iXX0=

Выполнить команду


Для локальной разработки. Не используйте в интернете!