@toruslabs/metadata-helpers
Version:
Helper methods for metadata
75 lines (71 loc) • 2.35 kB
JavaScript
;
var modular_js = require('@noble/curves/abstract/modular.js');
var secp256k1_js = require('@noble/curves/secp256k1.js');
var utils_js = require('@noble/curves/utils.js');
var sha2_js = require('@noble/hashes/sha2.js');
var sha3_js = require('@noble/hashes/sha3.js');
function toEthereumSignature(recoveredSig) {
const ethSig = new Uint8Array(65);
ethSig.set(recoveredSig.slice(1, 65), 0); // r + s
ethSig[64] = recoveredSig[0]; // v at end
return ethSig;
}
function getPublicKeyCoords(privateKeyBytes) {
const pubKeyUncompressed = secp256k1_js.secp256k1.getPublicKey(privateKeyBytes, false);
const x = pubKeyUncompressed.slice(1, 33);
const y = pubKeyUncompressed.slice(33, 65);
return {
x,
y
};
}
function coordsToPublicKey(x, y) {
const pubKey = new Uint8Array(65);
pubKey[0] = 0x04; // uncompressed prefix
pubKey.set(x, 1);
pubKey.set(y, 33);
return pubKey;
}
Object.defineProperty(exports, "invert", {
enumerable: true,
get: function () { return modular_js.invert; }
});
Object.defineProperty(exports, "mod", {
enumerable: true,
get: function () { return modular_js.mod; }
});
Object.defineProperty(exports, "secp256k1", {
enumerable: true,
get: function () { return secp256k1_js.secp256k1; }
});
Object.defineProperty(exports, "bytesToHex", {
enumerable: true,
get: function () { return utils_js.bytesToHex; }
});
Object.defineProperty(exports, "bytesToNumberBE", {
enumerable: true,
get: function () { return utils_js.bytesToNumberBE; }
});
Object.defineProperty(exports, "bytesToNumberLE", {
enumerable: true,
get: function () { return utils_js.bytesToNumberLE; }
});
Object.defineProperty(exports, "numberToBytesBE", {
enumerable: true,
get: function () { return utils_js.numberToBytesBE; }
});
Object.defineProperty(exports, "numberToHexUnpadded", {
enumerable: true,
get: function () { return utils_js.numberToHexUnpadded; }
});
Object.defineProperty(exports, "sha512", {
enumerable: true,
get: function () { return sha2_js.sha512; }
});
Object.defineProperty(exports, "keccak_256", {
enumerable: true,
get: function () { return sha3_js.keccak_256; }
});
exports.coordsToPublicKey = coordsToPublicKey;
exports.getPublicKeyCoords = getPublicKeyCoords;
exports.toEthereumSignature = toEthereumSignature;