PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-lib-mpc/dist/src

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCommitment = createCommitment;
exports.verifyCommitment = verifyCommitment;
const crypto_1 = require("crypto");
const util_1 = require("./util");
const minRandomnessLength = 32;
/**
 * Create hash commitment and decommietment of a secret value.
 * @param secret The secret value/message.
 * @param r The randomness/nonce to be added to the commmitment.
 * @returns The created commitment and decommitment.
 */
function createCommitment(secret, r = (0, crypto_1.randomBytes)(minRandomnessLength)) {
    if (r.length < minRandomnessLength) {
        throw new Error(`randomness must be at least ${minRandomnessLength} bytes long`);
    }
    return {
        commitment: hash(secret, r),
        decommitment: {
            blindingFactor: r,
            secret: secret,
        },
    };
}
const bytesPerUint32 = 4;
function hash(secret, r) {
    return (0, crypto_1.createHash)('sha256')
        .update((0, util_1.bigIntToBufferBE)(BigInt(secret.length), bytesPerUint32))
        .update(secret)
        .update((0, util_1.bigIntToBufferBE)(BigInt(r.length), bytesPerUint32))
        .update(r)
        .digest();
}
/**
 * Verify hash commitment and decommietment of a secret value.
 * @param commitment The commitment.
 * @param decommietment The decommitment.
 * @returns True if verification succeeds.
 */
function verifyCommitment(commitment, decommietment) {
    return hash(decommietment.secret, decommietment.blindingFactor).compare(commitment) === 0;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaENvbW1pdG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFzaENvbW1pdG1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSw0Q0FXQztBQW1CRCw0Q0FFQztBQTVDRCxtQ0FBaUQ7QUFFakQsaUNBQTBDO0FBRTFDLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxDQUFDO0FBRS9COzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBYyxFQUFFLElBQVksSUFBQSxvQkFBVyxFQUFDLG1CQUFtQixDQUFDO0lBQzNGLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxtQkFBbUIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLG1CQUFtQixhQUFhLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBQ0QsT0FBTztRQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMzQixZQUFZLEVBQUU7WUFDWixjQUFjLEVBQUUsQ0FBQztZQUNqQixNQUFNLEVBQUUsTUFBTTtTQUNmO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFFekIsU0FBUyxJQUFJLENBQUMsTUFBYyxFQUFFLENBQVM7SUFDckMsT0FBTyxJQUFBLG1CQUFVLEVBQUMsUUFBUSxDQUFDO1NBQ3hCLE1BQU0sQ0FBQyxJQUFBLHVCQUFnQixFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDL0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNkLE1BQU0sQ0FBQyxJQUFBLHVCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDMUQsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUNULE1BQU0sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxhQUErQjtJQUNsRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoLCByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBIYXNoQ29tbWl0RGVjb21taXQsIEhhc2hEZWNvbW1pdG1lbnQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGJpZ0ludFRvQnVmZmVyQkUgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCBtaW5SYW5kb21uZXNzTGVuZ3RoID0gMzI7XG5cbi8qKlxuICogQ3JlYXRlIGhhc2ggY29tbWl0bWVudCBhbmQgZGVjb21taWV0bWVudCBvZiBhIHNlY3JldCB2YWx1ZS5cbiAqIEBwYXJhbSBzZWNyZXQgVGhlIHNlY3JldCB2YWx1ZS9tZXNzYWdlLlxuICogQHBhcmFtIHIgVGhlIHJhbmRvbW5lc3Mvbm9uY2UgdG8gYmUgYWRkZWQgdG8gdGhlIGNvbW1taXRtZW50LlxuICogQHJldHVybnMgVGhlIGNyZWF0ZWQgY29tbWl0bWVudCBhbmQgZGVjb21taXRtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tbWl0bWVudChzZWNyZXQ6IEJ1ZmZlciwgcjogQnVmZmVyID0gcmFuZG9tQnl0ZXMobWluUmFuZG9tbmVzc0xlbmd0aCkpOiBIYXNoQ29tbWl0RGVjb21taXQge1xuICBpZiAoci5sZW5ndGggPCBtaW5SYW5kb21uZXNzTGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByYW5kb21uZXNzIG11c3QgYmUgYXQgbGVhc3QgJHttaW5SYW5kb21uZXNzTGVuZ3RofSBieXRlcyBsb25nYCk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjb21taXRtZW50OiBoYXNoKHNlY3JldCwgciksXG4gICAgZGVjb21taXRtZW50OiB7XG4gICAgICBibGluZGluZ0ZhY3RvcjogcixcbiAgICAgIHNlY3JldDogc2VjcmV0LFxuICAgIH0sXG4gIH07XG59XG5cbmNvbnN0IGJ5dGVzUGVyVWludDMyID0gNDtcblxuZnVuY3Rpb24gaGFzaChzZWNyZXQ6IEJ1ZmZlciwgcjogQnVmZmVyKTogQnVmZmVyIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpXG4gICAgLnVwZGF0ZShiaWdJbnRUb0J1ZmZlckJFKEJpZ0ludChzZWNyZXQubGVuZ3RoKSwgYnl0ZXNQZXJVaW50MzIpKVxuICAgIC51cGRhdGUoc2VjcmV0KVxuICAgIC51cGRhdGUoYmlnSW50VG9CdWZmZXJCRShCaWdJbnQoci5sZW5ndGgpLCBieXRlc1BlclVpbnQzMikpXG4gICAgLnVwZGF0ZShyKVxuICAgIC5kaWdlc3QoKTtcbn1cblxuLyoqXG4gKiBWZXJpZnkgaGFzaCBjb21taXRtZW50IGFuZCBkZWNvbW1pZXRtZW50IG9mIGEgc2VjcmV0IHZhbHVlLlxuICogQHBhcmFtIGNvbW1pdG1lbnQgVGhlIGNvbW1pdG1lbnQuXG4gKiBAcGFyYW0gZGVjb21taWV0bWVudCBUaGUgZGVjb21taXRtZW50LlxuICogQHJldHVybnMgVHJ1ZSBpZiB2ZXJpZmljYXRpb24gc3VjY2VlZHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlDb21taXRtZW50KGNvbW1pdG1lbnQ6IEJ1ZmZlciwgZGVjb21taWV0bWVudDogSGFzaERlY29tbWl0bWVudCk6IGJvb2xlYW4ge1xuICByZXR1cm4gaGFzaChkZWNvbW1pZXRtZW50LnNlY3JldCwgZGVjb21taWV0bWVudC5ibGluZGluZ0ZhY3RvcikuY29tcGFyZShjb21taXRtZW50KSA9PT0gMDtcbn1cbiJdfQ==

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


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