That fuck shit the fascists are using
at master 89 lines 3.4 kB view raw
1package org.signal.devicetransfer; 2 3import androidx.annotation.NonNull; 4 5import org.junit.Before; 6import org.junit.Test; 7import org.signal.devicetransfer.DeviceTransferAuthentication.Client; 8import org.signal.devicetransfer.DeviceTransferAuthentication.DeviceTransferAuthenticationException; 9import org.signal.devicetransfer.DeviceTransferAuthentication.Server; 10 11import java.util.Random; 12 13import static org.junit.Assert.assertEquals; 14import static org.junit.Assert.assertNotEquals; 15import static org.whispersystems.signalservice.test.LibSignalLibraryUtil.assumeLibSignalSupportedOnOS; 16 17public class DeviceTransferAuthenticationTest { 18 19 private byte[] certificate; 20 21 @Before 22 public void ensureNativeSupported() throws KeyGenerationFailedException { 23 assumeLibSignalSupportedOnOS(); 24 25 certificate = SelfSignedIdentity.create().getX509Encoded(); 26 } 27 28 @Test 29 public void testCompute_withNoChanges() throws DeviceTransferAuthenticationException { 30 Client client = new Client(certificate); 31 Server server = new Server(certificate, client.getCommitment()); 32 33 byte[] clientRandom = client.setServerRandomAndGetClientRandom(server.getRandom()); 34 35 server.setClientRandom(clientRandom); 36 assertEquals(client.computeShortAuthenticationCode(), server.computeShortAuthenticationCode()); 37 } 38 39 @Test(expected = DeviceTransferAuthenticationException.class) 40 public void testServerCompute_withChangedClientCertificate() throws DeviceTransferAuthenticationException, KeyGenerationFailedException { 41 byte[] badCertificate = SelfSignedIdentity.create().getX509Encoded(); 42 Client client = new Client(badCertificate); 43 Server server = new Server(certificate, client.getCommitment()); 44 45 byte[] clientRandom = client.setServerRandomAndGetClientRandom(server.getRandom()); 46 47 server.setClientRandom(clientRandom); 48 server.computeShortAuthenticationCode(); 49 } 50 51 @Test(expected = DeviceTransferAuthenticationException.class) 52 public void testServerCompute_withChangedClientCommitment() throws DeviceTransferAuthenticationException { 53 Client client = new Client(certificate); 54 Server server = new Server(certificate, randomBytes()); 55 56 byte[] clientRandom = client.setServerRandomAndGetClientRandom(server.getRandom()); 57 58 server.setClientRandom(clientRandom); 59 server.computeShortAuthenticationCode(); 60 } 61 62 @Test(expected = DeviceTransferAuthenticationException.class) 63 public void testServerCompute_withChangedClientRandom() throws DeviceTransferAuthenticationException { 64 Client client = new Client(certificate); 65 Server server = new Server(certificate, client.getCommitment()); 66 67 client.setServerRandomAndGetClientRandom(server.getRandom()); 68 69 server.setClientRandom(randomBytes()); 70 server.computeShortAuthenticationCode(); 71 } 72 73 @Test 74 public void testClientCompute_withChangedServerSecret() throws DeviceTransferAuthenticationException { 75 Client client = new Client(certificate); 76 Server server = new Server(certificate, client.getCommitment()); 77 78 byte[] clientRandom = client.setServerRandomAndGetClientRandom(randomBytes()); 79 80 server.setClientRandom(clientRandom); 81 assertNotEquals(client.computeShortAuthenticationCode(), server.computeShortAuthenticationCode()); 82 } 83 84 private @NonNull byte[] randomBytes() { 85 byte[] bytes = new byte[32]; 86 new Random().nextBytes(bytes); 87 return bytes; 88 } 89}