Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обратная конвертация jQuery (https://javascript.ru/forum/misc/78434-obratnaya-konvertaciya-jquery.html)

Rouge Rabbit 14.09.2019 05:29

Обратная конвертация jQuery
 
Доброго времени суток
Помогите пожалуйста конвертировать код 2 скриптов в Native и объединить в один JS файл

script1.js
var EC = elliptic.elliptic().ec;
var ec = new EC('secp256k1');
var keypair = ec.genKeyPair();
	
function update() {
	var prv = keypair.getPrivate('hex');
	var pub = keypair.getPublic('hex');
	$('#privateKey').val(bigInt(prv, 16).toString());
	$('#publicKey').val(pub);
}

function random() {
	keypair = ec.genKeyPair();
	update();
}

$(function() {
	$('#randomButton').click(random);
	$('#privateKey').bind('keyup', function() {
		$('#privateKey').val($('#privateKey').val().replace(/\D/g, ''));
		keypair = ec.keyFromPrivate(bigInt($('#privateKey').val()).toString(16));
		update();
	});
	update();
	var keyPublic = $('#publicKey').val();
	var keyPrivate = $('#privateKey').val();
});

script2.js
var EC = elliptic.elliptic().ec;
var ec = new EC('secp256k1');
var keypair = ec.genKeyPair();

function update() {
	var prv = keypair.getPrivate('hex');
	var pub = keypair.getPublic('hex');
	$('#privateKey').val(bigInt(prv, 16).toString());
	$('#publicKey').val(pub);
}

$(function() {
	$('#sign-button').click(function() {
		var binaryMessage = buffer.Buffer.from(CryptoJS.SHA256($('#sign-message').val()).toString(CryptoJS.enc.Hex));
		var hexSignature = buffer.Buffer.from(keypair.sign(binaryMessage).toDER()).toString('hex');
		$('#sign-signature').val(hexSignature);
		$('#verify-signature').val(hexSignature);
		update();
	});
	
	$('#verify-button').click(function() {
		$('#publicKey').val($('#publicKey').val().replace(/[^0-9a-fA-F]/g, ''));
		var tmpKey;
		try {
			tmpKey = ec.keyFromPublic($('#publicKey').val(), 'hex');
			var binaryMessage = buffer.Buffer.from(CryptoJS.SHA256($('#verify-message').val()).toString(CryptoJS.enc.Hex));
			if (tmpKey.verify(binaryMessage, $('#verify-signature').val())) {
				<!-- Signature accepted -->
			} else {
				<!-- Signature denied -->
			}
		} catch(e) {
			<!-- Incorrect signature -->
		}
	});

	$('#privateKey').bind('keyup', function() {
		$('#privateKey').val($('#privateKey').val().replace(/\D/g, ''));
		keypair = ec.keyFromPrivate(bigInt($('#privateKey').val()).toString(16));
		update();
	});

	$('#sign-message').bind('keyup', function() {
		$('#verify-message').val($('#sign-message').val());
	});
	
	$('#verify-message').bind('keyup', function() {
		$('#sign-message').val($('#verify-message').val());
	});
	
	update();
});

P.S. Первый скрипт генерирует ключевую пару (Public/Private), второй генерирует сигнатуру любого текстового сообщения подписанного приватным ключом и проверяет подписанный текст уже по публичному ключу
... хотелось бы привести все эти jQuery к нативному виду по типу:
function BuildKeys() {
	return {
		"Public": publicKey,
		"Private": privateKey
   }
}
function SignMessage(message, privateKey) {
	return hexSignature;
}
function VerifyMessage(message, publicKey, hexSignature) {
	return true; <!-- or false -->
}


Часовой пояс GMT +3, время: 20:40.