@authereum/resolution
Version:
Domain Resolution for blockchain domains
34 lines (33 loc) • 1.51 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var _1 = require(".");
var js_sha3_1 = require("js-sha3");
var recoverSignature_1 = require("./recoverSignature");
var Cns_1 = __importDefault(require("../Cns"));
var standardKeys_1 = __importDefault(require("./standardKeys"));
var bn_js_1 = __importDefault(require("bn.js"));
exports.isValidTwitterSignature = function (_a) {
var tokenId = _a.tokenId, owner = _a.owner, twitterHandle = _a.twitterHandle, validationSignature = _a.validationSignature;
var tokenIdInDecimals = fromHexStringToDecimals(tokenId);
var message = [
tokenIdInDecimals,
owner,
standardKeys_1.default.twitter_username,
twitterHandle,
]
.map(function (value) { return '0x' + js_sha3_1.keccak256(value.startsWith('0x') ? _1.hexToBytes(value) : value); })
.reduce(function (message, hashedValue) { return message + hashedValue; }, '');
var signerAddress = recoverSignature_1.recover(message, validationSignature);
return signerAddress === Cns_1.default.TwitterVerificationAddress;
};
var fromHexStringToDecimals = function (value) {
if (value.startsWith('0x')) {
var valueWithoutPrefix = value.slice(2, value.length);
var bn = new bn_js_1.default(valueWithoutPrefix, 16);
return bn.toString(10);
}
return value;
};