fixed last commit

This commit is contained in:
DrKLO 2013-12-23 15:54:31 +04:00
parent 50a92dc44a
commit d2a6fa4d6d
3 changed files with 6 additions and 12 deletions

View file

@ -345,12 +345,12 @@ public class HandshakeAction extends Action implements TcpConnection.TcpConnecti
} }
BigInteger p = new BigInteger(1, dhInnerData.dh_prime); BigInteger p = new BigInteger(1, dhInnerData.dh_prime);
BigInteger g_b = BigInteger.valueOf(dhInnerData.g);
BigInteger g_a = new BigInteger(1, dhInnerData.g_a); BigInteger g_a = new BigInteger(1, dhInnerData.g_a);
if (!Utilities.isGoodGaAndGb(g_a, g_b, p)) { if (!Utilities.isGoodGaAndGb(g_a, p)) {
throw new RuntimeException("bad prime"); throw new RuntimeException("bad prime");
} }
BigInteger g_b = BigInteger.valueOf(dhInnerData.g);
g_b = g_b.modPow(new BigInteger(1, b), p); g_b = g_b.modPow(new BigInteger(1, b), p);
g_a = g_a.modPow(new BigInteger(1, b), p); g_a = g_a.modPow(new BigInteger(1, b), p);

View file

@ -4814,7 +4814,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
BigInteger p = new BigInteger(1, MessagesStorage.secretPBytes); BigInteger p = new BigInteger(1, MessagesStorage.secretPBytes);
BigInteger i_authKey = new BigInteger(1, encryptedChat.g_a_or_b); BigInteger i_authKey = new BigInteger(1, encryptedChat.g_a_or_b);
if (!Utilities.isGoodGaAndGb(null, i_authKey, p)) { if (!Utilities.isGoodGaAndGb(i_authKey, p)) {
declineSecretChat(encryptedChat.id); declineSecretChat(encryptedChat.id);
return; return;
} }
@ -4911,7 +4911,7 @@ public class MessagesController implements NotificationCenter.NotificationCenter
g_b = g_b.modPow(new BigInteger(1, salt), p); g_b = g_b.modPow(new BigInteger(1, salt), p);
BigInteger g_a = new BigInteger(1, encryptedChat.g_a); BigInteger g_a = new BigInteger(1, encryptedChat.g_a);
if (!Utilities.isGoodGaAndGb(g_a, g_b, p)) { if (!Utilities.isGoodGaAndGb(g_a, p)) {
acceptingChats.remove(encryptedChat.id); acceptingChats.remove(encryptedChat.id);
declineSecretChat(encryptedChat.id); declineSecretChat(encryptedChat.id);
return; return;

View file

@ -124,14 +124,8 @@ public class Utilities {
return true; return true;
} }
public static boolean isGoodGaAndGb(BigInteger g_a, BigInteger g_b, BigInteger p) { public static boolean isGoodGaAndGb(BigInteger g_a, BigInteger p) {
if (g_a != null && g_a.compareTo(BigInteger.valueOf(1)) != 1) { return !(g_a.compareTo(BigInteger.valueOf(1)) != 1 || g_a.compareTo(p.subtract(BigInteger.valueOf(1))) != -1);
return false;
}
if (g_b != null && p != null && g_b.compareTo(p.subtract(BigInteger.valueOf(1))) != -1) {
return false;
}
return true;
} }
public static TPFactorizedValue getFactorizedValue(long what) { public static TPFactorizedValue getFactorizedValue(long what) {