PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-coin-xrp/dist/src/lib
Просмотр файла: keyPair.js
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.KeyPair = void 0;
const sdk_core_1 = require("@bitgo/sdk-core");
const secp256k1_1 = require("@bitgo/secp256k1");
const crypto_1 = require("crypto");
const xrpl = __importStar(require("xrpl"));
const utils_1 = __importDefault(require("./utils"));
const DEFAULT_SEED_SIZE_BYTES = 32;
/**
* XRP keys and address management.
*/
class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
/**
* Public constructor. By default, creates a key pair with a random master seed.
*
* @param {KeyPairOptions} source Either a master seed, a private key, or a public key
*/
constructor(source) {
super(source);
if (!source) {
const seed = (0, crypto_1.randomBytes)(DEFAULT_SEED_SIZE_BYTES);
this.hdNode = secp256k1_1.bip32.fromSeed(seed);
}
else if ((0, sdk_core_1.isSeed)(source)) {
this.hdNode = secp256k1_1.bip32.fromSeed(source.seed);
}
else if ((0, sdk_core_1.isPrivateKey)(source)) {
super.recordKeysFromPrivateKey(source.prv);
}
else if ((0, sdk_core_1.isPublicKey)(source)) {
super.recordKeysFromPublicKey(source.pub);
}
else {
throw new Error('Invalid key pair options');
}
if (this.hdNode) {
this.keyPair = sdk_core_1.Secp256k1ExtendedKeyPair.toKeyPair(this.hdNode);
}
}
/** @inheritdoc */
getKeys() {
return {
pub: this.getPublicKey({ compressed: true }).toString('hex'),
prv: this.getPrivateKey()?.toString('hex'),
};
}
/** @inheritdoc */
getAddress() {
return xrpl.deriveAddress(this.getKeys().pub);
}
/**
* Generates a signature for an arbitrary string with the current private key using keccak256
* hashing algorithm. Throws if there is no private key.
*
* @param {string} message to produce a signature for
* @returns {Buffer} The signature as a buffer
*/
signMessage(message) {
const messageToSign = Buffer.from(message).toString('hex');
const { prv } = this.getKeys();
if (!prv) {
throw new Error('Missing private key');
}
const signature = utils_1.default.signString(messageToSign, prv);
return Buffer.from(signature, 'hex');
}
/**
* Verifies a message signature using the current public key.
*
* @param {string} message signed
* @param {Buffer} signature to verify
* @returns {boolean} True if the message was signed with the current key pair
*/
verifySignature(message, signature) {
const messageToVerify = Buffer.from(message).toString('hex');
const pubKey = this.getKeys().pub;
return utils_1.default.verifySignature(messageToVerify, pubKey, signature.toString('hex'));
}
}
exports.KeyPair = KeyPair;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FPeUI7QUFDekIsZ0RBQXlDO0FBQ3pDLG1DQUFxQztBQUNyQywyQ0FBNkI7QUFDN0Isb0RBQTRCO0FBRTVCLE1BQU0sdUJBQXVCLEdBQUcsRUFBRSxDQUFDO0FBRW5DOztHQUVHO0FBQ0gsTUFBYSxPQUFRLFNBQVEsbUNBQXdCO0lBQ25EOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUFHLElBQUEsb0JBQVcsRUFBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksSUFBQSxpQkFBTSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQzthQUFNLElBQUksSUFBQSx1QkFBWSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQU0sSUFBSSxJQUFBLHNCQUFXLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLG1DQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTztRQUNMLE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDNUQsR0FBRyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsT0FBZTtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUNoRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2xDLE9BQU8sZUFBSyxDQUFDLGVBQWUsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0Y7QUFwRUQsMEJBb0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVmYXVsdEtleXMsXG4gIGlzUHJpdmF0ZUtleSxcbiAgaXNQdWJsaWNLZXksXG4gIGlzU2VlZCxcbiAgS2V5UGFpck9wdGlvbnMsXG4gIFNlY3AyNTZrMUV4dGVuZGVkS2V5UGFpcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvL3NlY3AyNTZrMSc7XG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyB4cnBsIGZyb20gJ3hycGwnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBERUZBVUxUX1NFRURfU0laRV9CWVRFUyA9IDMyO1xuXG4vKipcbiAqIFhSUCBrZXlzIGFuZCBhZGRyZXNzIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIGV4dGVuZHMgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyIHtcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5UGFpck9wdGlvbnN9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNlZWQgPSByYW5kb21CeXRlcyhERUZBVUxUX1NFRURfU0laRV9CWVRFUyk7XG4gICAgICB0aGlzLmhkTm9kZSA9IGJpcDMyLmZyb21TZWVkKHNlZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNTZWVkKHNvdXJjZSkpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbVNlZWQoc291cmNlLnNlZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNQcml2YXRlS2V5KHNvdXJjZSkpIHtcbiAgICAgIHN1cGVyLnJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShzb3VyY2UucHJ2KTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIHN1cGVyLnJlY29yZEtleXNGcm9tUHVibGljS2V5KHNvdXJjZS5wdWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhkTm9kZSkge1xuICAgICAgdGhpcy5rZXlQYWlyID0gU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLnRvS2V5UGFpcih0aGlzLmhkTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEtleXMoKTogRGVmYXVsdEtleXMge1xuICAgIHJldHVybiB7XG4gICAgICBwdWI6IHRoaXMuZ2V0UHVibGljS2V5KHsgY29tcHJlc3NlZDogdHJ1ZSB9KS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcnY6IHRoaXMuZ2V0UHJpdmF0ZUtleSgpPy50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHhycGwuZGVyaXZlQWRkcmVzcyh0aGlzLmdldEtleXMoKS5wdWIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNpZ25hdHVyZSBmb3IgYW4gYXJiaXRyYXJ5IHN0cmluZyB3aXRoIHRoZSBjdXJyZW50IHByaXZhdGUga2V5IHVzaW5nIGtlY2NhazI1NlxuICAgKiBoYXNoaW5nIGFsZ29yaXRobS4gVGhyb3dzIGlmIHRoZXJlIGlzIG5vIHByaXZhdGUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSB0byBwcm9kdWNlIGEgc2lnbmF0dXJlIGZvclxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBUaGUgc2lnbmF0dXJlIGFzIGEgYnVmZmVyXG4gICAqL1xuICBzaWduTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBCdWZmZXIuZnJvbShtZXNzYWdlKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgeyBwcnYgfSA9IHRoaXMuZ2V0S2V5cygpO1xuICAgIGlmICghcHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdXRpbHMuc2lnblN0cmluZyhtZXNzYWdlVG9TaWduLCBwcnYpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzaWduYXR1cmUsICdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBhIG1lc3NhZ2Ugc2lnbmF0dXJlIHVzaW5nIHRoZSBjdXJyZW50IHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIHNpZ25lZFxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWVzc2FnZSB3YXMgc2lnbmVkIHdpdGggdGhlIGN1cnJlbnQga2V5IHBhaXJcbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogQnVmZmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWVzc2FnZVRvVmVyaWZ5ID0gQnVmZmVyLmZyb20obWVzc2FnZSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHB1YktleSA9IHRoaXMuZ2V0S2V5cygpLnB1YjtcbiAgICByZXR1cm4gdXRpbHMudmVyaWZ5U2lnbmF0dXJlKG1lc3NhZ2VUb1ZlcmlmeSwgcHViS2V5LCBzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgfVxufVxuIl19Выполнить команду
Для локальной разработки. Не используйте в интернете!