mirror of
https://github.com/bisq-network/bisq.git
synced 2024-11-19 09:52:23 +01:00
Code review changes.
This commit is contained in:
parent
3878a9f564
commit
0e2b13924b
@ -7,6 +7,8 @@ import bisq.core.xmr.org.nem.core.crypto.ed25519.arithmetic.Ed25519EncodedGroupE
|
||||
import bisq.core.xmr.org.nem.core.crypto.ed25519.arithmetic.Ed25519Group;
|
||||
import bisq.core.xmr.org.nem.core.crypto.ed25519.arithmetic.Ed25519GroupElement;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static bisq.core.xmr.knaccc.monero.address.ByteUtil.concat;
|
||||
@ -130,17 +132,20 @@ public class WalletAddress {
|
||||
return getSubaddressBase58(new Scalar(privateViewKeyHex), hexToBytes(getPublicSpendKeyHex()), accountId, subaddressId);
|
||||
}
|
||||
|
||||
public boolean checkPrivateViewKey(String privateViewKey) {
|
||||
return isPrivateKeyValid(privateViewKey) && arePubPrivKeysRelated(this.publicViewKeyHex, privateViewKey);
|
||||
@VisibleForTesting
|
||||
boolean checkPrivateViewKey(String privateViewKey) {
|
||||
return isPrivateKeyReduced(privateViewKey) && doesPrivateKeyResolveToPublicKey(privateViewKey, this.publicViewKeyHex);
|
||||
}
|
||||
|
||||
public static boolean isPrivateKeyValid(String privateKey) {
|
||||
@VisibleForTesting
|
||||
static boolean isPrivateKeyReduced(String privateKey) {
|
||||
byte[] input = hexToBytes(privateKey);
|
||||
byte[] reduced = CryptoUtil.scReduce32(input);
|
||||
return Arrays.equals(input, reduced);
|
||||
}
|
||||
|
||||
public static boolean arePubPrivKeysRelated(String publicKey, String privateKey) {
|
||||
@VisibleForTesting
|
||||
static boolean doesPrivateKeyResolveToPublicKey(String privateKey, String publicKey) {
|
||||
Scalar m = new Scalar(privateKey);
|
||||
Ed25519GroupElement M = G.scalarMultiply(new Ed25519EncodedFieldElement(m.bytes));
|
||||
byte[] generatedPubKey = M.encode().getRaw();
|
||||
|
@ -15,7 +15,7 @@
|
||||
* along with Bisq. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package knaccc.monero.address;
|
||||
package bisq.core.xmr.knaccc.monero.address;
|
||||
|
||||
import bisq.core.xmr.knaccc.monero.crypto.CryptoUtil;
|
||||
|
||||
|
@ -15,13 +15,13 @@
|
||||
* along with Bisq. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package knaccc.monero.address;
|
||||
|
||||
import bisq.core.xmr.knaccc.monero.address.WalletAddress;
|
||||
package bisq.core.xmr.knaccc.monero.address;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
|
||||
public class WalletAddressTest {
|
||||
@Test
|
||||
@ -48,27 +48,24 @@ public class WalletAddressTest {
|
||||
assertEquals(walletAddress.getSubaddressBase58(privateViewKeyHex, 1, 0), addr10);
|
||||
assertEquals(walletAddress.getSubaddressBase58(privateViewKeyHex, 1, 1), addr11);
|
||||
|
||||
assertEquals(walletAddress.checkPrivateViewKey(privateViewKeyHex), true);
|
||||
assertEquals(WalletAddress.arePubPrivKeysRelated(publicViewKeyHex, privateViewKeyHex), true);
|
||||
assertEquals(WalletAddress.arePubPrivKeysRelated(privateViewKeyHex, privateViewKeyHex), false);
|
||||
assertTrue(walletAddress.checkPrivateViewKey(privateViewKeyHex));
|
||||
assertTrue(WalletAddress.doesPrivateKeyResolveToPublicKey(privateViewKeyHex, publicViewKeyHex));
|
||||
assertFalse(WalletAddress.doesPrivateKeyResolveToPublicKey(privateViewKeyHex, privateViewKeyHex));
|
||||
|
||||
assertEquals(WalletAddress.arePubPrivKeysRelated(
|
||||
"bdc158199c8933353627d54edb4bbae547dbbde3130860d7940313210edca0a6",
|
||||
"a82a9017a1d259c71f5392ad9091b743b86dac7a21f5e402ea0a55e5c8a6750f"),
|
||||
true);
|
||||
assertTrue(WalletAddress.doesPrivateKeyResolveToPublicKey(
|
||||
"a82a9017a1d259c71f5392ad9091b743b86dac7a21f5e402ea0a55e5c8a6750f",
|
||||
"bdc158199c8933353627d54edb4bbae547dbbde3130860d7940313210edca0a6"));
|
||||
|
||||
assertEquals(WalletAddress.arePubPrivKeysRelated(
|
||||
"d17698d07fe9edbc41552299b90a93de73bb1bd4b94b8083af0bbe3a1931e2ec",
|
||||
"dae1bceeb2563b8c376f8e0456e5fe7aa3d6291b38ace18c6ad5647424a3b104"),
|
||||
true);
|
||||
assertTrue(WalletAddress.doesPrivateKeyResolveToPublicKey(
|
||||
"dae1bceeb2563b8c376f8e0456e5fe7aa3d6291b38ace18c6ad5647424a3b104",
|
||||
"d17698d07fe9edbc41552299b90a93de73bb1bd4b94b8083af0bbe3a1931e2ec"));
|
||||
|
||||
assertEquals(WalletAddress.arePubPrivKeysRelated(
|
||||
assertFalse(WalletAddress.doesPrivateKeyResolveToPublicKey(
|
||||
"0000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFF",
|
||||
"0000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFF"),
|
||||
false);
|
||||
"0000111122223333444455556666777788889999AAAABBBBCCCCDDDDEEEEFFFF"));
|
||||
|
||||
String nonReducedPrivateKey = "42594aba0e809490dec97b2dfaf64f7ae5bef1c2d19af636eb84544773df5b5f";
|
||||
assertEquals(WalletAddress.isPrivateKeyValid(nonReducedPrivateKey), false);
|
||||
assertEquals(WalletAddress.isPrivateKeyValid(privateViewKeyHex), true);
|
||||
String nonReducedPrivateKey = "680bceef3ca8b2ca1a9a29283c184f6f590a9bd2881825f0542ad99cdaba091a";
|
||||
assertFalse(WalletAddress.isPrivateKeyReduced(nonReducedPrivateKey));
|
||||
assertTrue(WalletAddress.isPrivateKeyReduced(privateViewKeyHex));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user