Move in memory data structures into project.
This commit is contained in:
parent
af48198d9c
commit
7262e6970b
|
@ -1,5 +1,9 @@
|
||||||
package org.whispersystems.libaxolotl;
|
package org.whispersystems.libaxolotl.state.impl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.AxolotlAddress;
|
||||||
|
import org.whispersystems.libaxolotl.IdentityKey;
|
||||||
|
import org.whispersystems.libaxolotl.IdentityKeyPair;
|
||||||
|
import org.whispersystems.libaxolotl.InvalidKeyIdException;
|
||||||
import org.whispersystems.libaxolotl.state.AxolotlStore;
|
import org.whispersystems.libaxolotl.state.AxolotlStore;
|
||||||
import org.whispersystems.libaxolotl.state.PreKeyRecord;
|
import org.whispersystems.libaxolotl.state.PreKeyRecord;
|
||||||
import org.whispersystems.libaxolotl.state.SessionRecord;
|
import org.whispersystems.libaxolotl.state.SessionRecord;
|
||||||
|
@ -9,11 +13,15 @@ import java.util.List;
|
||||||
|
|
||||||
public class InMemoryAxolotlStore implements AxolotlStore {
|
public class InMemoryAxolotlStore implements AxolotlStore {
|
||||||
|
|
||||||
private final InMemoryIdentityKeyStore identityKeyStore = new InMemoryIdentityKeyStore();
|
|
||||||
private final InMemoryPreKeyStore preKeyStore = new InMemoryPreKeyStore();
|
private final InMemoryPreKeyStore preKeyStore = new InMemoryPreKeyStore();
|
||||||
private final InMemorySessionStore sessionStore = new InMemorySessionStore();
|
private final InMemorySessionStore sessionStore = new InMemorySessionStore();
|
||||||
private final InMemorySignedPreKeyStore signedPreKeyStore = new InMemorySignedPreKeyStore();
|
private final InMemorySignedPreKeyStore signedPreKeyStore = new InMemorySignedPreKeyStore();
|
||||||
|
|
||||||
|
private final InMemoryIdentityKeyStore identityKeyStore;
|
||||||
|
|
||||||
|
public InMemoryAxolotlStore(IdentityKeyPair identityKeyPair, int registrationId) {
|
||||||
|
this.identityKeyStore = new InMemoryIdentityKeyStore(identityKeyPair, registrationId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IdentityKeyPair getIdentityKeyPair() {
|
public IdentityKeyPair getIdentityKeyPair() {
|
|
@ -1,5 +1,7 @@
|
||||||
package org.whispersystems.libaxolotl;
|
package org.whispersystems.libaxolotl.state.impl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.IdentityKey;
|
||||||
|
import org.whispersystems.libaxolotl.IdentityKeyPair;
|
||||||
import org.whispersystems.libaxolotl.ecc.Curve;
|
import org.whispersystems.libaxolotl.ecc.Curve;
|
||||||
import org.whispersystems.libaxolotl.ecc.ECKeyPair;
|
import org.whispersystems.libaxolotl.ecc.ECKeyPair;
|
||||||
import org.whispersystems.libaxolotl.state.IdentityKeyStore;
|
import org.whispersystems.libaxolotl.state.IdentityKeyStore;
|
||||||
|
@ -16,16 +18,9 @@ public class InMemoryIdentityKeyStore implements IdentityKeyStore {
|
||||||
private final IdentityKeyPair identityKeyPair;
|
private final IdentityKeyPair identityKeyPair;
|
||||||
private final int localRegistrationId;
|
private final int localRegistrationId;
|
||||||
|
|
||||||
public InMemoryIdentityKeyStore() {
|
public InMemoryIdentityKeyStore(IdentityKeyPair identityKeyPair, int localRegistrationId) {
|
||||||
try {
|
this.identityKeyPair = identityKeyPair;
|
||||||
ECKeyPair identityKeyPairKeys = Curve.generateKeyPair();
|
this.localRegistrationId = localRegistrationId;
|
||||||
|
|
||||||
this.identityKeyPair = new IdentityKeyPair(new IdentityKey(identityKeyPairKeys.getPublicKey()),
|
|
||||||
identityKeyPairKeys.getPrivateKey());
|
|
||||||
this.localRegistrationId = SecureRandom.getInstance("SHA1PRNG").nextInt(16380) + 1;
|
|
||||||
} catch (NoSuchAlgorithmException e) {
|
|
||||||
throw new AssertionError(e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
|
@ -1,5 +1,6 @@
|
||||||
package org.whispersystems.libaxolotl;
|
package org.whispersystems.libaxolotl.state.impl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.InvalidKeyIdException;
|
||||||
import org.whispersystems.libaxolotl.state.PreKeyRecord;
|
import org.whispersystems.libaxolotl.state.PreKeyRecord;
|
||||||
import org.whispersystems.libaxolotl.state.PreKeyStore;
|
import org.whispersystems.libaxolotl.state.PreKeyStore;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.whispersystems.libaxolotl;
|
package org.whispersystems.libaxolotl.state.impl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.AxolotlAddress;
|
||||||
import org.whispersystems.libaxolotl.state.SessionRecord;
|
import org.whispersystems.libaxolotl.state.SessionRecord;
|
||||||
import org.whispersystems.libaxolotl.state.SessionStore;
|
import org.whispersystems.libaxolotl.state.SessionStore;
|
||||||
|
|
||||||
|
@ -33,7 +34,9 @@ public class InMemorySessionStore implements SessionStore {
|
||||||
List<Integer> deviceIds = new LinkedList<>();
|
List<Integer> deviceIds = new LinkedList<>();
|
||||||
|
|
||||||
for (AxolotlAddress key : sessions.keySet()) {
|
for (AxolotlAddress key : sessions.keySet()) {
|
||||||
if (key.getName().equals(name)) {
|
if (key.getName().equals(name) &&
|
||||||
|
key.getDeviceId() != 1)
|
||||||
|
{
|
||||||
deviceIds.add(key.getDeviceId());
|
deviceIds.add(key.getDeviceId());
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package org.whispersystems.libaxolotl;
|
package org.whispersystems.libaxolotl.state.impl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.InvalidKeyIdException;
|
||||||
import org.whispersystems.libaxolotl.state.SignedPreKeyRecord;
|
import org.whispersystems.libaxolotl.state.SignedPreKeyRecord;
|
||||||
import org.whispersystems.libaxolotl.state.SignedPreKeyStore;
|
import org.whispersystems.libaxolotl.state.SignedPreKeyStore;
|
||||||
|
|
|
@ -25,10 +25,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
|
|
||||||
public void testBasicPreKeyV2()
|
public void testBasicPreKeyV2()
|
||||||
throws InvalidKeyException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, UntrustedIdentityException, NoSessionException {
|
throws InvalidKeyException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, UntrustedIdentityException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
PreKeyBundle bobPreKey = new PreKeyBundle(bobStore.getLocalRegistrationId(), 1,
|
PreKeyBundle bobPreKey = new PreKeyBundle(bobStore.getLocalRegistrationId(), 1,
|
||||||
31337, bobPreKeyPair.getPublicKey(),
|
31337, bobPreKeyPair.getPublicKey(),
|
||||||
|
@ -64,7 +64,7 @@ public class SessionBuilderTest extends TestCase {
|
||||||
|
|
||||||
runInteraction(aliceStore, bobStore);
|
runInteraction(aliceStore, bobStore);
|
||||||
|
|
||||||
aliceStore = new InMemoryAxolotlStore();
|
aliceStore = new TestInMemoryAxolotlStore();
|
||||||
aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
aliceSessionCipher = new SessionCipher(aliceStore, BOB_ADDRESS);
|
aliceSessionCipher = new SessionCipher(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
|
@ -104,10 +104,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
|
|
||||||
public void testBasicPreKeyV3()
|
public void testBasicPreKeyV3()
|
||||||
throws InvalidKeyException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, UntrustedIdentityException, NoSessionException {
|
throws InvalidKeyException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, UntrustedIdentityException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
final AxolotlStore bobStore = new InMemoryAxolotlStore();
|
final AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
||||||
byte[] bobSignedPreKeySignature = Curve.calculateSignature(bobStore.getIdentityKeyPair().getPrivateKey(),
|
byte[] bobSignedPreKeySignature = Curve.calculateSignature(bobStore.getIdentityKeyPair().getPrivateKey(),
|
||||||
|
@ -156,7 +156,7 @@ public class SessionBuilderTest extends TestCase {
|
||||||
|
|
||||||
runInteraction(aliceStore, bobStore);
|
runInteraction(aliceStore, bobStore);
|
||||||
|
|
||||||
aliceStore = new InMemoryAxolotlStore();
|
aliceStore = new TestInMemoryAxolotlStore();
|
||||||
aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
aliceSessionCipher = new SessionCipher(aliceStore, BOB_ADDRESS);
|
aliceSessionCipher = new SessionCipher(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
|
@ -198,10 +198,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBadSignedPreKeySignature() throws InvalidKeyException, UntrustedIdentityException {
|
public void testBadSignedPreKeySignature() throws InvalidKeyException, UntrustedIdentityException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
IdentityKeyStore bobIdentityKeyStore = new InMemoryIdentityKeyStore();
|
IdentityKeyStore bobIdentityKeyStore = new TestInMemoryIdentityKeyStore();
|
||||||
|
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
||||||
|
@ -237,10 +237,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRepeatBundleMessageV2() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, NoSessionException {
|
public void testRepeatBundleMessageV2() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
||||||
|
@ -290,10 +290,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRepeatBundleMessageV3() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, NoSessionException {
|
public void testRepeatBundleMessageV3() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, InvalidKeyIdException, DuplicateMessageException, LegacyMessageException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
||||||
|
@ -344,10 +344,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBadMessageBundle() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, DuplicateMessageException, LegacyMessageException, InvalidKeyIdException {
|
public void testBadMessageBundle() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, DuplicateMessageException, LegacyMessageException, InvalidKeyIdException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
||||||
|
@ -397,10 +397,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBasicKeyExchange() throws InvalidKeyException, LegacyMessageException, InvalidMessageException, DuplicateMessageException, UntrustedIdentityException, StaleKeyExchangeException, InvalidVersionException, NoSessionException {
|
public void testBasicKeyExchange() throws InvalidKeyException, LegacyMessageException, InvalidMessageException, DuplicateMessageException, UntrustedIdentityException, StaleKeyExchangeException, InvalidVersionException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder bobSessionBuilder = new SessionBuilder(bobStore, ALICE_ADDRESS);
|
SessionBuilder bobSessionBuilder = new SessionBuilder(bobStore, ALICE_ADDRESS);
|
||||||
|
|
||||||
KeyExchangeMessage aliceKeyExchangeMessage = aliceSessionBuilder.process();
|
KeyExchangeMessage aliceKeyExchangeMessage = aliceSessionBuilder.process();
|
||||||
|
@ -420,7 +420,7 @@ public class SessionBuilderTest extends TestCase {
|
||||||
|
|
||||||
runInteraction(aliceStore, bobStore);
|
runInteraction(aliceStore, bobStore);
|
||||||
|
|
||||||
aliceStore = new InMemoryAxolotlStore();
|
aliceStore = new TestInMemoryAxolotlStore();
|
||||||
aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
aliceKeyExchangeMessage = aliceSessionBuilder.process();
|
aliceKeyExchangeMessage = aliceSessionBuilder.process();
|
||||||
|
|
||||||
|
@ -439,10 +439,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
|
|
||||||
public void testSimultaneousKeyExchange()
|
public void testSimultaneousKeyExchange()
|
||||||
throws InvalidKeyException, DuplicateMessageException, LegacyMessageException, InvalidMessageException, UntrustedIdentityException, StaleKeyExchangeException, NoSessionException {
|
throws InvalidKeyException, DuplicateMessageException, LegacyMessageException, InvalidMessageException, UntrustedIdentityException, StaleKeyExchangeException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder bobSessionBuilder = new SessionBuilder(bobStore, ALICE_ADDRESS);
|
SessionBuilder bobSessionBuilder = new SessionBuilder(bobStore, ALICE_ADDRESS);
|
||||||
|
|
||||||
KeyExchangeMessage aliceKeyExchange = aliceSessionBuilder.process();
|
KeyExchangeMessage aliceKeyExchange = aliceSessionBuilder.process();
|
||||||
|
@ -467,10 +467,10 @@ public class SessionBuilderTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOptionalOneTimePreKey() throws Exception {
|
public void testOptionalOneTimePreKey() throws Exception {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobPreKeyPair = Curve.generateKeyPair();
|
||||||
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
ECKeyPair bobSignedPreKeyPair = Curve.generateKeyPair();
|
||||||
|
|
|
@ -49,8 +49,8 @@ public class SessionCipherTest extends TestCase {
|
||||||
|
|
||||||
private void runInteraction(SessionRecord aliceSessionRecord, SessionRecord bobSessionRecord)
|
private void runInteraction(SessionRecord aliceSessionRecord, SessionRecord bobSessionRecord)
|
||||||
throws DuplicateMessageException, LegacyMessageException, InvalidMessageException, NoSuchAlgorithmException, NoSessionException {
|
throws DuplicateMessageException, LegacyMessageException, InvalidMessageException, NoSuchAlgorithmException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
aliceStore.storeSession(new AxolotlAddress("+14159999999", 1), aliceSessionRecord);
|
aliceStore.storeSession(new AxolotlAddress("+14159999999", 1), aliceSessionRecord);
|
||||||
bobStore.storeSession(new AxolotlAddress("+14158888888", 1), bobSessionRecord);
|
bobStore.storeSession(new AxolotlAddress("+14158888888", 1), bobSessionRecord);
|
||||||
|
|
|
@ -32,8 +32,8 @@ public class SimultaneousInitiateTests extends TestCase {
|
||||||
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
||||||
InvalidKeyIdException, NoSessionException
|
InvalidKeyIdException, NoSessionException
|
||||||
{
|
{
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
||||||
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
||||||
|
@ -86,8 +86,8 @@ public class SimultaneousInitiateTests extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testLostSimultaneousInitiate() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, DuplicateMessageException, LegacyMessageException, InvalidKeyIdException, NoSessionException {
|
public void testLostSimultaneousInitiate() throws InvalidKeyException, UntrustedIdentityException, InvalidVersionException, InvalidMessageException, DuplicateMessageException, LegacyMessageException, InvalidKeyIdException, NoSessionException {
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
||||||
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
||||||
|
@ -138,8 +138,8 @@ public class SimultaneousInitiateTests extends TestCase {
|
||||||
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
||||||
InvalidKeyIdException, NoSessionException
|
InvalidKeyIdException, NoSessionException
|
||||||
{
|
{
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
||||||
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
||||||
|
@ -197,8 +197,8 @@ public class SimultaneousInitiateTests extends TestCase {
|
||||||
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
||||||
InvalidKeyIdException, NoSessionException
|
InvalidKeyIdException, NoSessionException
|
||||||
{
|
{
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
PreKeyBundle alicePreKeyBundle = createAlicePreKeyBundle(aliceStore);
|
||||||
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
PreKeyBundle bobPreKeyBundle = createBobPreKeyBundle(bobStore);
|
||||||
|
@ -273,8 +273,8 @@ public class SimultaneousInitiateTests extends TestCase {
|
||||||
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
||||||
InvalidKeyIdException, NoSessionException
|
InvalidKeyIdException, NoSessionException
|
||||||
{
|
{
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
|
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
@ -352,8 +352,8 @@ public class SimultaneousInitiateTests extends TestCase {
|
||||||
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
InvalidMessageException, DuplicateMessageException, LegacyMessageException,
|
||||||
InvalidKeyIdException, NoSessionException
|
InvalidKeyIdException, NoSessionException
|
||||||
{
|
{
|
||||||
AxolotlStore aliceStore = new InMemoryAxolotlStore();
|
AxolotlStore aliceStore = new TestInMemoryAxolotlStore();
|
||||||
AxolotlStore bobStore = new InMemoryAxolotlStore();
|
AxolotlStore bobStore = new TestInMemoryAxolotlStore();
|
||||||
|
|
||||||
|
|
||||||
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
SessionBuilder aliceSessionBuilder = new SessionBuilder(aliceStore, BOB_ADDRESS);
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package org.whispersystems.libaxolotl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.ecc.Curve;
|
||||||
|
import org.whispersystems.libaxolotl.ecc.ECKeyPair;
|
||||||
|
import org.whispersystems.libaxolotl.util.KeyHelper;
|
||||||
|
|
||||||
|
public class TestInMemoryAxolotlStore extends org.whispersystems.libaxolotl.state.impl.InMemoryAxolotlStore {
|
||||||
|
public TestInMemoryAxolotlStore() {
|
||||||
|
super(generateIdentityKeyPair(), generateRegistrationId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IdentityKeyPair generateIdentityKeyPair() {
|
||||||
|
ECKeyPair identityKeyPairKeys = Curve.generateKeyPair();
|
||||||
|
|
||||||
|
return new IdentityKeyPair(new IdentityKey(identityKeyPairKeys.getPublicKey()),
|
||||||
|
identityKeyPairKeys.getPrivateKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int generateRegistrationId() {
|
||||||
|
return KeyHelper.generateRegistrationId(false);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package org.whispersystems.libaxolotl;
|
||||||
|
|
||||||
|
import org.whispersystems.libaxolotl.ecc.Curve;
|
||||||
|
import org.whispersystems.libaxolotl.ecc.ECKeyPair;
|
||||||
|
import org.whispersystems.libaxolotl.util.KeyHelper;
|
||||||
|
|
||||||
|
public class TestInMemoryIdentityKeyStore extends org.whispersystems.libaxolotl.state.impl.InMemoryIdentityKeyStore {
|
||||||
|
public TestInMemoryIdentityKeyStore() {
|
||||||
|
super(generateIdentityKeyPair(), generateRegistrationId());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IdentityKeyPair generateIdentityKeyPair() {
|
||||||
|
ECKeyPair identityKeyPairKeys = Curve.generateKeyPair();
|
||||||
|
|
||||||
|
return new IdentityKeyPair(new IdentityKey(identityKeyPairKeys.getPublicKey()),
|
||||||
|
identityKeyPairKeys.getPrivateKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int generateRegistrationId() {
|
||||||
|
return KeyHelper.generateRegistrationId(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue