From 42b7c2aa61556dbda067f0126863c284da9654d6 Mon Sep 17 00:00:00 2001 From: tripathyr Date: Sun, 15 Oct 2023 11:32:30 +0530 Subject: [PATCH] Update messengerEthereum.js --- scripts/messengerEthereum.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/scripts/messengerEthereum.js b/scripts/messengerEthereum.js index f451863..713f854 100644 --- a/scripts/messengerEthereum.js +++ b/scripts/messengerEthereum.js @@ -4,16 +4,19 @@ 'use strict'; const floEthereum = EXPORTS; - -const ethAddressFromPrivateKey = floEthereum.ethAddressFromPrivateKey = function(privateKey){ - var t1,t1_x,t1_y,t1_x_BigInt,t1_y_BigInt,t2,t3,t4; +// onlyEvenY is usually false. It is needed to be true only when taproot private keys are input +const ethAddressFromPrivateKey = floEthereum.ethAddressFromPrivateKey = function(privateKey, onlyEvenY = false){ + var t1,t1_x,t1_y,t1_y_BigInt,t2,t3,t4; var groupOrder = BigInt("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F"); t1 = bitjs.newPubkey(privateKey); t1_x = t1.slice(2, 66); t1_y = t1.slice(-64); -//Suspending Odd Even checks for Messenger App - // t1_x_BigInt = BigInt("0x"+t1_x);t1_y_BigInt = BigInt("0x"+t1_y); - // if (t1_y_BigInt % 2n !== 0n) { t1_y_BigInt = (groupOrder-t1_y_BigInt)%groupOrder; t1_y=t1_y_BigInt.toString(16)}; + + if (onlyEvenY) { + t1_y_BigInt = BigInt("0x"+t1_y); + if (t1_y_BigInt % 2n !== 0n) { t1_y_BigInt = (groupOrder-t1_y_BigInt)%groupOrder; t1_y=t1_y_BigInt.toString(16)}; + } + t2 = t1_x.toString(16) + t1_y.toString(16); t3 = keccak.keccak_256(Crypto.util.hexToBytes(t2)); t4 = keccak.extractLast20Bytes(t3);