Rename InitializationParameters -> AxolotlParameters

pull/1/head
Moxie Marlinspike 10 years ago
parent 3f299936bf
commit e0d2398ca5

@ -26,7 +26,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import static org.whispersystems.libaxolotl.ratchet.RatchetingSession.InitializationParameters; import static org.whispersystems.libaxolotl.ratchet.RatchetingSession.AxolotlParameters;
public class SessionCipherTest extends AndroidTestCase { public class SessionCipherTest extends AndroidTestCase {
@ -138,8 +138,8 @@ public class SessionCipherTest extends AndroidTestCase {
ECKeyPair bobBaseKey = Curve.generateKeyPair(true); ECKeyPair bobBaseKey = Curve.generateKeyPair(true);
ECKeyPair bobEphemeralKey = bobBaseKey; ECKeyPair bobEphemeralKey = bobBaseKey;
InitializationParameters aliceParameters = AxolotlParameters aliceParameters =
InitializationParameters.newBuilder() AxolotlParameters.newBuilder()
.setOurIdentityKey(aliceIdentityKey) .setOurIdentityKey(aliceIdentityKey)
.setOurBaseKey(aliceBaseKey) .setOurBaseKey(aliceBaseKey)
.setOurEphemeralKey(aliceEphemeralKey) .setOurEphemeralKey(aliceEphemeralKey)
@ -150,8 +150,8 @@ public class SessionCipherTest extends AndroidTestCase {
.setTheirPreKey(Optional.<ECPublicKey>absent()) .setTheirPreKey(Optional.<ECPublicKey>absent())
.create(); .create();
InitializationParameters bobParameters = AxolotlParameters bobParameters =
InitializationParameters.newBuilder() RatchetingSession.AxolotlParameters.newBuilder()
.setOurIdentityKey(bobIdentityKey) .setOurIdentityKey(bobIdentityKey)
.setOurBaseKey(bobBaseKey) .setOurBaseKey(bobBaseKey)
.setOurEphemeralKey(bobEphemeralKey) .setOurEphemeralKey(bobEphemeralKey)
@ -186,8 +186,8 @@ public class SessionCipherTest extends AndroidTestCase {
ECKeyPair bobPreKey = Curve.generateKeyPair(true); ECKeyPair bobPreKey = Curve.generateKeyPair(true);
InitializationParameters aliceParameters = AxolotlParameters aliceParameters =
InitializationParameters.newBuilder() AxolotlParameters.newBuilder()
.setOurIdentityKey(aliceIdentityKey) .setOurIdentityKey(aliceIdentityKey)
.setOurBaseKey(aliceBaseKey) .setOurBaseKey(aliceBaseKey)
.setOurEphemeralKey(aliceEphemeralKey) .setOurEphemeralKey(aliceEphemeralKey)
@ -198,8 +198,8 @@ public class SessionCipherTest extends AndroidTestCase {
.setTheirPreKey(Optional.of(bobPreKey.getPublicKey())) .setTheirPreKey(Optional.of(bobPreKey.getPublicKey()))
.create(); .create();
InitializationParameters bobParameters = AxolotlParameters bobParameters =
InitializationParameters.newBuilder() AxolotlParameters.newBuilder()
.setOurIdentityKey(bobIdentityKey) .setOurIdentityKey(bobIdentityKey)
.setOurBaseKey(bobBaseKey) .setOurBaseKey(bobBaseKey)
.setOurEphemeralKey(bobEphemeralKey) .setOurEphemeralKey(bobEphemeralKey)

@ -15,7 +15,7 @@ import org.whispersystems.libaxolotl.util.guava.Optional;
import java.util.Arrays; import java.util.Arrays;
import static org.whispersystems.libaxolotl.ratchet.RatchetingSession.InitializationParameters; import static org.whispersystems.libaxolotl.ratchet.RatchetingSession.AxolotlParameters;
public class RatchetingSessionTest extends AndroidTestCase { public class RatchetingSessionTest extends AndroidTestCase {
@ -108,7 +108,7 @@ public class RatchetingSessionTest extends AndroidTestCase {
ECPublicKey aliceEphemeralPublicKey = Curve.decodePoint(aliceEphemeralPublic, 0); ECPublicKey aliceEphemeralPublicKey = Curve.decodePoint(aliceEphemeralPublic, 0);
IdentityKey aliceIdentityPublicKey = new IdentityKey(aliceIdentityPublic, 0); IdentityKey aliceIdentityPublicKey = new IdentityKey(aliceIdentityPublic, 0);
InitializationParameters parameters = InitializationParameters.newBuilder() AxolotlParameters parameters = AxolotlParameters.newBuilder()
.setOurBaseKey(bobBaseKey) .setOurBaseKey(bobBaseKey)
.setOurEphemeralKey(bobEphemeralKey) .setOurEphemeralKey(bobEphemeralKey)
.setOurIdentityKey(bobIdentityKey) .setOurIdentityKey(bobIdentityKey)
@ -217,7 +217,7 @@ public class RatchetingSessionTest extends AndroidTestCase {
SessionState session = new SessionState(); SessionState session = new SessionState();
InitializationParameters parameters = InitializationParameters.newBuilder() AxolotlParameters parameters = AxolotlParameters.newBuilder()
.setOurBaseKey(aliceBaseKey) .setOurBaseKey(aliceBaseKey)
.setOurEphemeralKey(aliceEphemeralKey) .setOurEphemeralKey(aliceEphemeralKey)
.setOurIdentityKey(aliceIdentityKey) .setOurIdentityKey(aliceIdentityKey)

@ -22,7 +22,7 @@ import org.whispersystems.libaxolotl.util.guava.Optional;
import java.security.MessageDigest; import java.security.MessageDigest;
import static org.whispersystems.libaxolotl.ratchet.RatchetingSession.InitializationParameters; import static org.whispersystems.libaxolotl.ratchet.RatchetingSession.AxolotlParameters;
/** /**
* SessionBuilder is responsible for setting up encrypted sessions. * SessionBuilder is responsible for setting up encrypted sessions.
@ -118,7 +118,7 @@ public class SessionBuilder {
boolean simultaneousInitiate = sessionRecord.getSessionState().hasPendingPreKey(); boolean simultaneousInitiate = sessionRecord.getSessionState().hasPendingPreKey();
InitializationParameters.Builder parameters = InitializationParameters.newBuilder(); AxolotlParameters.Builder parameters = AxolotlParameters.newBuilder();
parameters.setTheirBaseKey(message.getBaseKey()); parameters.setTheirBaseKey(message.getBaseKey());
parameters.setTheirEphemeralKey(message.getWhisperMessage().getSenderEphemeral()); parameters.setTheirEphemeralKey(message.getWhisperMessage().getSenderEphemeral());
@ -165,10 +165,9 @@ public class SessionBuilder {
return; return;
} }
SessionRecord sessionRecord = sessionStore.loadSession(recipientId, deviceId); SessionRecord sessionRecord = sessionStore.loadSession(recipientId, deviceId);
boolean simultaneousInitiate = sessionRecord.getSessionState().hasPendingPreKey(); boolean simultaneousInitiate = sessionRecord.getSessionState().hasPendingPreKey();
AxolotlParameters.Builder parameters = RatchetingSession.AxolotlParameters.newBuilder();
InitializationParameters.Builder parameters = InitializationParameters.newBuilder();
parameters.setTheirBaseKey(message.getBaseKey()); parameters.setTheirBaseKey(message.getBaseKey());
parameters.setTheirEphemeralKey(message.getWhisperMessage().getSenderEphemeral()); parameters.setTheirEphemeralKey(message.getWhisperMessage().getSenderEphemeral());
@ -226,9 +225,9 @@ public class SessionBuilder {
throw new InvalidKeyException("Both signed and unsigned prekeys are absent!"); throw new InvalidKeyException("Both signed and unsigned prekeys are absent!");
} }
SessionRecord sessionRecord = sessionStore.loadSession(recipientId, deviceId); SessionRecord sessionRecord = sessionStore.loadSession(recipientId, deviceId);
InitializationParameters.Builder parameters = InitializationParameters.newBuilder(); AxolotlParameters.Builder parameters = AxolotlParameters.newBuilder();
ECKeyPair ourBaseKey = Curve.generateKeyPair(true); ECKeyPair ourBaseKey = Curve.generateKeyPair(true);
parameters.setOurIdentityKey(identityKeyStore.getIdentityKeyPair()); parameters.setOurIdentityKey(identityKeyStore.getIdentityKeyPair());
parameters.setOurBaseKey(ourBaseKey); parameters.setOurBaseKey(ourBaseKey);
@ -281,9 +280,9 @@ public class SessionBuilder {
} }
private KeyExchangeMessage processInitiate(KeyExchangeMessage message) throws InvalidKeyException { private KeyExchangeMessage processInitiate(KeyExchangeMessage message) throws InvalidKeyException {
InitializationParameters.Builder parameters = InitializationParameters.newBuilder(); AxolotlParameters.Builder parameters = AxolotlParameters.newBuilder();
int flags = KeyExchangeMessage.RESPONSE_FLAG; int flags = KeyExchangeMessage.RESPONSE_FLAG;
SessionRecord sessionRecord = sessionStore.loadSession(recipientId, deviceId); SessionRecord sessionRecord = sessionStore.loadSession(recipientId, deviceId);
if (message.getVersion() >= 3 && if (message.getVersion() >= 3 &&
!Curve.verifySignature(message.getIdentityKey().getPublicKey(), !Curve.verifySignature(message.getIdentityKey().getPublicKey(),
@ -305,7 +304,7 @@ public class SessionBuilder {
parameters.setOurEphemeralKey(sessionRecord.getSessionState().getPendingKeyExchangeEphemeralKey()); parameters.setOurEphemeralKey(sessionRecord.getSessionState().getPendingKeyExchangeEphemeralKey());
parameters.setOurIdentityKey(sessionRecord.getSessionState().getPendingKeyExchangeIdentityKey()); parameters.setOurIdentityKey(sessionRecord.getSessionState().getPendingKeyExchangeIdentityKey());
parameters.setOurPreKey(Optional.<ECKeyPair>absent()); parameters.setOurPreKey(Optional.<ECKeyPair>absent());
flags |= KeyExchangeMessage.SIMULTAENOUS_INITIATE_FLAG; flags |= KeyExchangeMessage.SIMULTAENOUS_INITIATE_FLAG;
} }
parameters.setTheirBaseKey(message.getBaseKey()); parameters.setTheirBaseKey(message.getBaseKey());
@ -344,17 +343,17 @@ public class SessionBuilder {
else return; else return;
} }
InitializationParameters parameters = AxolotlParameters parameters =
InitializationParameters.newBuilder() AxolotlParameters.newBuilder()
.setOurBaseKey(sessionRecord.getSessionState().getPendingKeyExchangeBaseKey()) .setOurBaseKey(sessionRecord.getSessionState().getPendingKeyExchangeBaseKey())
.setOurEphemeralKey(sessionRecord.getSessionState().getPendingKeyExchangeEphemeralKey()) .setOurEphemeralKey(sessionRecord.getSessionState().getPendingKeyExchangeEphemeralKey())
.setOurPreKey(Optional.<ECKeyPair>absent()) .setOurPreKey(Optional.<ECKeyPair>absent())
.setOurIdentityKey(sessionRecord.getSessionState().getPendingKeyExchangeIdentityKey()) .setOurIdentityKey(sessionRecord.getSessionState().getPendingKeyExchangeIdentityKey())
.setTheirBaseKey(message.getBaseKey()) .setTheirBaseKey(message.getBaseKey())
.setTheirEphemeralKey(message.getEphemeralKey()) .setTheirEphemeralKey(message.getEphemeralKey())
.setTheirPreKey(Optional.<ECPublicKey>absent()) .setTheirPreKey(Optional.<ECPublicKey>absent())
.setTheirIdentityKey(message.getIdentityKey()) .setTheirIdentityKey(message.getIdentityKey())
.create(); .create();
sessionRecord.reset(); sessionRecord.reset();

@ -37,7 +37,7 @@ public class RatchetingSession {
public static void initializeSession(SessionState sessionState, public static void initializeSession(SessionState sessionState,
int sessionVersion, int sessionVersion,
InitializationParameters parameters) AxolotlParameters parameters)
throws InvalidKeyException throws InvalidKeyException
{ {
if (isAlice(parameters)) initializeSessionAsAlice(sessionState, sessionVersion, parameters); if (isAlice(parameters)) initializeSessionAsAlice(sessionState, sessionVersion, parameters);
@ -48,7 +48,7 @@ public class RatchetingSession {
private static void initializeSessionAsAlice(SessionState sessionState, private static void initializeSessionAsAlice(SessionState sessionState,
int sessionVersion, int sessionVersion,
InitializationParameters parameters) AxolotlParameters parameters)
throws InvalidKeyException throws InvalidKeyException
{ {
sessionState.setRemoteIdentityKey(parameters.getTheirIdentityKey()); sessionState.setRemoteIdentityKey(parameters.getTheirIdentityKey());
@ -70,7 +70,7 @@ public class RatchetingSession {
private static void initializeSessionAsBob(SessionState sessionState, private static void initializeSessionAsBob(SessionState sessionState,
int sessionVersion, int sessionVersion,
InitializationParameters parameters) AxolotlParameters parameters)
throws InvalidKeyException throws InvalidKeyException
{ {
sessionState.setRemoteIdentityKey(parameters.getTheirIdentityKey()); sessionState.setRemoteIdentityKey(parameters.getTheirIdentityKey());
@ -86,7 +86,7 @@ public class RatchetingSession {
} }
} }
private static DHEResult calculate4DHE(boolean isAlice, int sessionVersion, InitializationParameters parameters) private static DHEResult calculate4DHE(boolean isAlice, int sessionVersion, AxolotlParameters parameters)
throws InvalidKeyException throws InvalidKeyException
{ {
try { try {
@ -131,7 +131,7 @@ public class RatchetingSession {
} }
private static byte[] calculateVerificationTag(boolean isAlice, VerifyKey verifyKey, private static byte[] calculateVerificationTag(boolean isAlice, VerifyKey verifyKey,
InitializationParameters parameters) AxolotlParameters parameters)
{ {
if (isAlice) { if (isAlice) {
return verifyKey.generateVerification(parameters.getOurBaseKey().getPublicKey(), return verifyKey.generateVerification(parameters.getOurBaseKey().getPublicKey(),
@ -150,7 +150,7 @@ public class RatchetingSession {
} }
} }
private static boolean isAlice(InitializationParameters parameters) private static boolean isAlice(AxolotlParameters parameters)
{ {
if (parameters.getOurEphemeralKey().equals(parameters.getOurBaseKey())) { if (parameters.getOurEphemeralKey().equals(parameters.getOurBaseKey())) {
return false; return false;
@ -172,7 +172,7 @@ public class RatchetingSession {
else return Optional.absent(); else return Optional.absent();
} }
public static class InitializationParameters { public static class AxolotlParameters {
private final ECKeyPair ourBaseKey; private final ECKeyPair ourBaseKey;
private final ECKeyPair ourEphemeralKey; private final ECKeyPair ourEphemeralKey;
private final Optional<ECKeyPair> ourPreKey; private final Optional<ECKeyPair> ourPreKey;
@ -183,10 +183,10 @@ public class RatchetingSession {
private final Optional<ECPublicKey> theirPreKey; private final Optional<ECPublicKey> theirPreKey;
private final IdentityKey theirIdentityKey; private final IdentityKey theirIdentityKey;
public InitializationParameters(ECKeyPair ourBaseKey, ECKeyPair ourEphemeralKey, public AxolotlParameters(ECKeyPair ourBaseKey, ECKeyPair ourEphemeralKey,
Optional<ECKeyPair> ourPreKey, IdentityKeyPair ourIdentityKey, Optional<ECKeyPair> ourPreKey, IdentityKeyPair ourIdentityKey,
ECPublicKey theirBaseKey, ECPublicKey theirEphemeralKey, ECPublicKey theirBaseKey, ECPublicKey theirEphemeralKey,
Optional<ECPublicKey> theirPreKey, IdentityKey theirIdentityKey) Optional<ECPublicKey> theirPreKey, IdentityKey theirIdentityKey)
{ {
this.ourBaseKey = ourBaseKey; this.ourBaseKey = ourBaseKey;
this.ourEphemeralKey = ourEphemeralKey; this.ourEphemeralKey = ourEphemeralKey;
@ -300,17 +300,15 @@ public class RatchetingSession {
return this; return this;
} }
public RatchetingSession.InitializationParameters create() { public AxolotlParameters create() {
if (ourBaseKey == null || ourEphemeralKey == null || ourPreKey == null || ourIdentityKey == null || if (ourBaseKey == null || ourEphemeralKey == null || ourPreKey == null || ourIdentityKey == null ||
theirBaseKey == null || theirEphemeralKey == null || theirPreKey == null || theirIdentityKey == null) theirBaseKey == null || theirEphemeralKey == null || theirPreKey == null || theirIdentityKey == null)
{ {
throw new IllegalArgumentException("All parameters not specified!"); throw new IllegalArgumentException("All parameters not specified!");
} }
return new RatchetingSession.InitializationParameters(ourBaseKey, ourEphemeralKey, return new AxolotlParameters(ourBaseKey, ourEphemeralKey, ourPreKey, ourIdentityKey,
ourPreKey, ourIdentityKey, theirBaseKey, theirEphemeralKey, theirPreKey, theirIdentityKey);
theirBaseKey, theirEphemeralKey,
theirPreKey, theirIdentityKey);
} }
} }
} }

Loading…
Cancel
Save