@coolwallet/sol
Version:
Coolwallet Solana sdk
38 lines (37 loc) • 5.46 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createProgramAddressSync = createProgramAddressSync;
var _bs = _interopRequireDefault(require("bs58"));
var _bn = _interopRequireDefault(require("bn.js"));
var _jsSha = require("js-sha256");
var _stringUtil = require("./stringUtil");
var _ed = require("./ed25519");
var MAX_SEED_LENGTH = 32;
var toBuffer = function toBuffer(arr) {
if (Buffer.isBuffer(arr)) {
return arr;
} else if (arr instanceof Uint8Array) {
return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);
} else {
return Buffer.from(arr);
}
};
function createProgramAddressSync(seeds, programId) {
var buffer = Buffer.alloc(0);
seeds.forEach(function (seed) {
if (seed.length > MAX_SEED_LENGTH) {
throw new TypeError("Max seed length exceeded");
}
buffer = Buffer.concat([buffer, toBuffer(seed)]);
});
buffer = Buffer.concat([buffer, (0, _stringUtil.toBase58Buffer)(programId), Buffer.from('ProgramDerivedAddress')]);
var publicKeyBytes = new _bn["default"]((0, _jsSha.sha256)(buffer), 16).toArray(undefined, 32);
if ((0, _ed.is_on_curve)(publicKeyBytes)) {
throw new Error("Invalid seeds, address must fall off the curve");
}
return _bs["default"].encode(publicKeyBytes);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ibiIsIl9qc1NoYSIsIl9zdHJpbmdVdGlsIiwiX2VkIiwiTUFYX1NFRURfTEVOR1RIIiwidG9CdWZmZXIiLCJhcnIiLCJCdWZmZXIiLCJpc0J1ZmZlciIsIlVpbnQ4QXJyYXkiLCJmcm9tIiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJjcmVhdGVQcm9ncmFtQWRkcmVzc1N5bmMiLCJzZWVkcyIsInByb2dyYW1JZCIsImFsbG9jIiwiZm9yRWFjaCIsInNlZWQiLCJsZW5ndGgiLCJUeXBlRXJyb3IiLCJjb25jYXQiLCJ0b0Jhc2U1OEJ1ZmZlciIsInB1YmxpY0tleUJ5dGVzIiwiQk4iLCJzaGEyNTYiLCJ0b0FycmF5IiwidW5kZWZpbmVkIiwiaXNfb25fY3VydmUiLCJFcnJvciIsImJhc2U1OCIsImVuY29kZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hY2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBiYXNlNTggZnJvbSAnYnM1OCc7XG5pbXBvcnQgQk4gZnJvbSAnYm4uanMnO1xuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSAnanMtc2hhMjU2JztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4uL2NvbmZpZy90eXBlcyc7XG5pbXBvcnQgeyB0b0Jhc2U1OEJ1ZmZlciB9IGZyb20gJy4vc3RyaW5nVXRpbCc7XG5pbXBvcnQgeyBpc19vbl9jdXJ2ZSB9IGZyb20gJy4vZWQyNTUxOSc7XG5cbmNvbnN0IE1BWF9TRUVEX0xFTkdUSCA9IDMyO1xuXG5jb25zdCB0b0J1ZmZlciA9IChhcnI6IEJ1ZmZlciB8IFVpbnQ4QXJyYXkgfCBBcnJheTxudW1iZXI+KTogQnVmZmVyID0+IHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihhcnIpKSB7XG4gICAgcmV0dXJuIGFycjtcbiAgfSBlbHNlIGlmIChhcnIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFyci5idWZmZXIsIGFyci5ieXRlT2Zmc2V0LCBhcnIuYnl0ZUxlbmd0aCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGFycik7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVByb2dyYW1BZGRyZXNzU3luYyhzZWVkczogQXJyYXk8QnVmZmVyIHwgVWludDhBcnJheT4sIHByb2dyYW1JZDogdHlwZXMuQWRkcmVzcyk6IHN0cmluZyB7XG4gIGxldCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoMCk7XG4gIHNlZWRzLmZvckVhY2goZnVuY3Rpb24gKHNlZWQpIHtcbiAgICBpZiAoc2VlZC5sZW5ndGggPiBNQVhfU0VFRF9MRU5HVEgpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE1heCBzZWVkIGxlbmd0aCBleGNlZWRlZGApO1xuICAgIH1cbiAgICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIHRvQnVmZmVyKHNlZWQpXSk7XG4gIH0pO1xuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIHRvQmFzZTU4QnVmZmVyKHByb2dyYW1JZCksIEJ1ZmZlci5mcm9tKCdQcm9ncmFtRGVyaXZlZEFkZHJlc3MnKV0pO1xuICBjb25zdCBwdWJsaWNLZXlCeXRlcyA9IG5ldyBCTihzaGEyNTYoYnVmZmVyKSwgMTYpLnRvQXJyYXkodW5kZWZpbmVkLCAzMik7XG4gIGlmIChpc19vbl9jdXJ2ZShwdWJsaWNLZXlCeXRlcykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VlZHMsIGFkZHJlc3MgbXVzdCBmYWxsIG9mZiB0aGUgY3VydmVgKTtcbiAgfVxuICByZXR1cm4gYmFzZTU4LmVuY29kZShwdWJsaWNLZXlCeXRlcyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZVByb2dyYW1BZGRyZXNzU3luYyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsR0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBRUEsSUFBQUcsV0FBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksR0FBQSxHQUFBSixPQUFBO0FBRUEsSUFBTUssZUFBZSxHQUFHLEVBQUU7QUFFMUIsSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUlDLEdBQXdDLEVBQWE7RUFDckUsSUFBSUMsTUFBTSxDQUFDQyxRQUFRLENBQUNGLEdBQUcsQ0FBQyxFQUFFO0lBQ3hCLE9BQU9BLEdBQUc7RUFDWixDQUFDLE1BQU0sSUFBSUEsR0FBRyxZQUFZRyxVQUFVLEVBQUU7SUFDcEMsT0FBT0YsTUFBTSxDQUFDRyxJQUFJLENBQUNKLEdBQUcsQ0FBQ0ssTUFBTSxFQUFFTCxHQUFHLENBQUNNLFVBQVUsRUFBRU4sR0FBRyxDQUFDTyxVQUFVLENBQUM7RUFDaEUsQ0FBQyxNQUFNO0lBQ0wsT0FBT04sTUFBTSxDQUFDRyxJQUFJLENBQUNKLEdBQUcsQ0FBQztFQUN6QjtBQUNGLENBQUM7QUFFRCxTQUFTUSx3QkFBd0JBLENBQUNDLEtBQWlDLEVBQUVDLFNBQXdCLEVBQVU7RUFDckcsSUFBSUwsTUFBTSxHQUFHSixNQUFNLENBQUNVLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDNUJGLEtBQUssQ0FBQ0csT0FBTyxDQUFDLFVBQVVDLElBQUksRUFBRTtJQUM1QixJQUFJQSxJQUFJLENBQUNDLE1BQU0sR0FBR2hCLGVBQWUsRUFBRTtNQUNqQyxNQUFNLElBQUlpQixTQUFTLDJCQUEyQixDQUFDO0lBQ2pEO0lBQ0FWLE1BQU0sR0FBR0osTUFBTSxDQUFDZSxNQUFNLENBQUMsQ0FBQ1gsTUFBTSxFQUFFTixRQUFRLENBQUNjLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDbEQsQ0FBQyxDQUFDO0VBQ0ZSLE1BQU0sR0FBR0osTUFBTSxDQUFDZSxNQUFNLENBQUMsQ0FBQ1gsTUFBTSxFQUFFLElBQUFZLDBCQUFjLEVBQUNQLFNBQVMsQ0FBQyxFQUFFVCxNQUFNLENBQUNHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7RUFDakcsSUFBTWMsY0FBYyxHQUFHLElBQUlDLGNBQUUsQ0FBQyxJQUFBQyxhQUFNLEVBQUNmLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDZ0IsT0FBTyxDQUFDQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0VBQ3hFLElBQUksSUFBQUMsZUFBVyxFQUFDTCxjQUFjLENBQUMsRUFBRTtJQUMvQixNQUFNLElBQUlNLEtBQUssaURBQWlELENBQUM7RUFDbkU7RUFDQSxPQUFPQyxjQUFNLENBQUNDLE1BQU0sQ0FBQ1IsY0FBYyxDQUFDO0FBQ3RDIiwiaWdub3JlTGlzdCI6W119
;