diff --git a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 62676446b7..50a5798ee7 100644 --- a/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -879,24 +879,20 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity } private void handleInviteLink() { - try { - String inviteText; + String inviteText; - boolean a = SecureRandom.getInstance("SHA1PRNG").nextBoolean(); - if (a) inviteText = getString(R.string.ConversationActivity_lets_switch_to_signal, "https://sgnl.link/1LoIMUl"); - else inviteText = getString(R.string.ConversationActivity_lets_use_this_to_chat, "https://sgnl.link/1MF56H1"); + boolean a = new SecureRandom().nextBoolean(); + if (a) inviteText = getString(R.string.ConversationActivity_lets_switch_to_signal, "https://sgnl.link/1LoIMUl"); + else inviteText = getString(R.string.ConversationActivity_lets_use_this_to_chat, "https://sgnl.link/1MF56H1"); - if (isDefaultSms) { - composeText.appendInvite(inviteText); - } else { - Intent intent = new Intent(Intent.ACTION_SENDTO); - intent.setData(Uri.parse("smsto:" + recipient.getAddress().serialize())); - intent.putExtra("sms_body", inviteText); - intent.putExtra(Intent.EXTRA_TEXT, inviteText); - startActivity(intent); - } - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); + if (isDefaultSms) { + composeText.appendInvite(inviteText); + } else { + Intent intent = new Intent(Intent.ACTION_SENDTO); + intent.setData(Uri.parse("smsto:" + recipient.getAddress().serialize())); + intent.putExtra("sms_body", inviteText); + intent.putExtra(Intent.EXTRA_TEXT, inviteText); + startActivity(intent); } } diff --git a/src/org/thoughtcrime/securesms/crypto/MasterSecretUtil.java b/src/org/thoughtcrime/securesms/crypto/MasterSecretUtil.java index e82f3e2ce7..0542dbd73f 100644 --- a/src/org/thoughtcrime/securesms/crypto/MasterSecretUtil.java +++ b/src/org/thoughtcrime/securesms/crypto/MasterSecretUtil.java @@ -264,8 +264,8 @@ public class MasterSecretUtil { } } - private static byte[] generateSalt() throws NoSuchAlgorithmException { - SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + private static byte[] generateSalt() { + SecureRandom random = new SecureRandom(); byte[] salt = new byte[16]; random.nextBytes(salt); diff --git a/src/org/thoughtcrime/securesms/database/GroupDatabase.java b/src/org/thoughtcrime/securesms/database/GroupDatabase.java index 0cc57379ef..845ba29cc6 100644 --- a/src/org/thoughtcrime/securesms/database/GroupDatabase.java +++ b/src/org/thoughtcrime/securesms/database/GroupDatabase.java @@ -308,13 +308,9 @@ public class GroupDatabase extends Database { public byte[] allocateGroupId() { - try { - byte[] groupId = new byte[16]; - SecureRandom.getInstance("SHA1PRNG").nextBytes(groupId); - return groupId; - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } + byte[] groupId = new byte[16]; + new SecureRandom().nextBytes(groupId); + return groupId; } public static class Reader implements Closeable { diff --git a/src/org/thoughtcrime/securesms/database/MmsDatabase.java b/src/org/thoughtcrime/securesms/database/MmsDatabase.java index fe93bd51c4..3184ebdcfe 100644 --- a/src/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -71,7 +71,6 @@ import org.whispersystems.libsignal.util.guava.Optional; import java.io.Closeable; import java.io.IOException; -import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Collections; import java.util.HashMap; @@ -1279,13 +1278,9 @@ public class MmsDatabase extends MessagingDatabase { private final long threadId; public OutgoingMessageReader(OutgoingMediaMessage message, long threadId) { - try { - this.message = message; - this.id = SecureRandom.getInstance("SHA1PRNG").nextLong(); - this.threadId = threadId; - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } + this.message = message; + this.id = new SecureRandom().nextLong(); + this.threadId = threadId; } public MessageRecord getCurrent() { diff --git a/src/org/thoughtcrime/securesms/database/SmsDatabase.java b/src/org/thoughtcrime/securesms/database/SmsDatabase.java index e7d6655502..4be301d9bb 100644 --- a/src/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/src/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -47,7 +47,6 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.whispersystems.libsignal.util.guava.Optional; import java.io.IOException; -import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.LinkedList; import java.util.List; @@ -818,13 +817,9 @@ public class SmsDatabase extends MessagingDatabase { private final long threadId; public OutgoingMessageReader(OutgoingTextMessage message, long threadId) { - try { - this.message = message; - this.threadId = threadId; - this.id = SecureRandom.getInstance("SHA1PRNG").nextLong(); - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } + this.message = message; + this.threadId = threadId; + this.id = new SecureRandom().nextLong(); } public MessageRecord getCurrent() { diff --git a/src/org/thoughtcrime/securesms/mms/Slide.java b/src/org/thoughtcrime/securesms/mms/Slide.java index fa33094643..05ba2ec334 100644 --- a/src/org/thoughtcrime/securesms/mms/Slide.java +++ b/src/org/thoughtcrime/securesms/mms/Slide.java @@ -144,24 +144,20 @@ public abstract class Slide { boolean voiceNote, boolean quote) { - try { - String resolvedType = Optional.fromNullable(MediaUtil.getMimeType(context, uri)).or(defaultMime); - String fastPreflightId = String.valueOf(SecureRandom.getInstance("SHA1PRNG").nextLong()); - return new UriAttachment(uri, - hasThumbnail ? uri : null, - resolvedType, - AttachmentDatabase.TRANSFER_PROGRESS_STARTED, - size, - width, - height, - fileName, - fastPreflightId, - voiceNote, - quote, - caption); - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } + String resolvedType = Optional.fromNullable(MediaUtil.getMimeType(context, uri)).or(defaultMime); + String fastPreflightId = String.valueOf(new SecureRandom().nextLong()); + return new UriAttachment(uri, + hasThumbnail ? uri : null, + resolvedType, + AttachmentDatabase.TRANSFER_PROGRESS_STARTED, + size, + width, + height, + fileName, + fastPreflightId, + voiceNote, + quote, + caption); } @Override diff --git a/src/org/thoughtcrime/securesms/service/WebRtcCallService.java b/src/org/thoughtcrime/securesms/service/WebRtcCallService.java index 533b3769d7..59e672dc17 100644 --- a/src/org/thoughtcrime/securesms/service/WebRtcCallService.java +++ b/src/org/thoughtcrime/securesms/service/WebRtcCallService.java @@ -415,72 +415,68 @@ public class WebRtcCallService extends Service implements InjectableType, if (callState != CallState.STATE_IDLE) throw new IllegalStateException("Dialing from non-idle?"); - try { - this.callState = CallState.STATE_DIALING; - this.recipient = getRemoteRecipient(intent); - this.callId = SecureRandom.getInstance("SHA1PRNG").nextLong(); - this.pendingOutgoingIceUpdates = new LinkedList<>(); - - initializeVideo(); + this.callState = CallState.STATE_DIALING; + this.recipient = getRemoteRecipient(intent); + this.callId = new SecureRandom().nextLong(); + this.pendingOutgoingIceUpdates = new LinkedList<>(); - sendMessage(WebRtcViewModel.State.CALL_OUTGOING, recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); - lockManager.updatePhoneState(LockManager.PhoneState.IN_CALL); - audioManager.initializeAudioForCall(); - audioManager.startOutgoingRinger(OutgoingRinger.Type.RINGING); - bluetoothStateManager.setWantsConnection(true); + initializeVideo(); - setCallInProgressNotification(TYPE_OUTGOING_RINGING, recipient); - DatabaseFactory.getSmsDatabase(this).insertOutgoingCall(recipient.getAddress()); + sendMessage(WebRtcViewModel.State.CALL_OUTGOING, recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); + lockManager.updatePhoneState(LockManager.PhoneState.IN_CALL); + audioManager.initializeAudioForCall(); + audioManager.startOutgoingRinger(OutgoingRinger.Type.RINGING); + bluetoothStateManager.setWantsConnection(true); - timeoutExecutor.schedule(new TimeoutRunnable(this.callId), 2, TimeUnit.MINUTES); + setCallInProgressNotification(TYPE_OUTGOING_RINGING, recipient); + DatabaseFactory.getSmsDatabase(this).insertOutgoingCall(recipient.getAddress()); - retrieveTurnServers().addListener(new SuccessOnlyListener>(this.callState, this.callId) { - @Override - public void onSuccessContinue(List result) { - try { - boolean isAlwaysTurn = TextSecurePreferences.isTurnOnly(WebRtcCallService.this); + timeoutExecutor.schedule(new TimeoutRunnable(this.callId), 2, TimeUnit.MINUTES); - WebRtcCallService.this.peerConnection = new PeerConnectionWrapper(WebRtcCallService.this, peerConnectionFactory, WebRtcCallService.this, localRenderer, result, WebRtcCallService.this, eglBase, isAlwaysTurn); - WebRtcCallService.this.localCameraState = WebRtcCallService.this.peerConnection.getCameraState(); - WebRtcCallService.this.dataChannel = WebRtcCallService.this.peerConnection.createDataChannel(DATA_CHANNEL_NAME); - WebRtcCallService.this.dataChannel.registerObserver(WebRtcCallService.this); + retrieveTurnServers().addListener(new SuccessOnlyListener>(this.callState, this.callId) { + @Override + public void onSuccessContinue(List result) { + try { + boolean isAlwaysTurn = TextSecurePreferences.isTurnOnly(WebRtcCallService.this); - SessionDescription sdp = WebRtcCallService.this.peerConnection.createOffer(new MediaConstraints()); - WebRtcCallService.this.peerConnection.setLocalDescription(sdp); + WebRtcCallService.this.peerConnection = new PeerConnectionWrapper(WebRtcCallService.this, peerConnectionFactory, WebRtcCallService.this, localRenderer, result, WebRtcCallService.this, eglBase, isAlwaysTurn); + WebRtcCallService.this.localCameraState = WebRtcCallService.this.peerConnection.getCameraState(); + WebRtcCallService.this.dataChannel = WebRtcCallService.this.peerConnection.createDataChannel(DATA_CHANNEL_NAME); + WebRtcCallService.this.dataChannel.registerObserver(WebRtcCallService.this); - Log.i(TAG, "Sending offer: " + sdp.description); + SessionDescription sdp = WebRtcCallService.this.peerConnection.createOffer(new MediaConstraints()); + WebRtcCallService.this.peerConnection.setLocalDescription(sdp); - ListenableFutureTask listenableFutureTask = sendMessage(recipient, SignalServiceCallMessage.forOffer(new OfferMessage(WebRtcCallService.this.callId, sdp.description))); + Log.i(TAG, "Sending offer: " + sdp.description); - listenableFutureTask.addListener(new FailureListener(callState, callId) { - @Override - public void onFailureContinue(Throwable error) { - Log.w(TAG, error); + ListenableFutureTask listenableFutureTask = sendMessage(recipient, SignalServiceCallMessage.forOffer(new OfferMessage(WebRtcCallService.this.callId, sdp.description))); - if (error instanceof UntrustedIdentityException) { - sendMessage(WebRtcViewModel.State.UNTRUSTED_IDENTITY, recipient, ((UntrustedIdentityException)error).getIdentityKey(), localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); - } else if (error instanceof UnregisteredUserException) { - sendMessage(WebRtcViewModel.State.NO_SUCH_USER, recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); - } else if (error instanceof IOException) { - sendMessage(WebRtcViewModel.State.NETWORK_FAILURE, recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); - } + listenableFutureTask.addListener(new FailureListener(callState, callId) { + @Override + public void onFailureContinue(Throwable error) { + Log.w(TAG, error); - terminate(); + if (error instanceof UntrustedIdentityException) { + sendMessage(WebRtcViewModel.State.UNTRUSTED_IDENTITY, recipient, ((UntrustedIdentityException)error).getIdentityKey(), localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); + } else if (error instanceof UnregisteredUserException) { + sendMessage(WebRtcViewModel.State.NO_SUCH_USER, recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); + } else if (error instanceof IOException) { + sendMessage(WebRtcViewModel.State.NETWORK_FAILURE, recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); } - }); - if (recipient != null) { - sendMessage(viewModelStateFor(callState), recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); + terminate(); } - } catch (PeerConnectionException e) { - Log.w(TAG, e); - terminate(); + }); + + if (recipient != null) { + sendMessage(viewModelStateFor(callState), recipient, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled); } + } catch (PeerConnectionException e) { + Log.w(TAG, e); + terminate(); } - }); - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } + } + }); } private void handleResponseMessage(Intent intent) { diff --git a/src/org/thoughtcrime/securesms/util/Util.java b/src/org/thoughtcrime/securesms/util/Util.java index 3422da5b15..2edcc15b36 100644 --- a/src/org/thoughtcrime/securesms/util/Util.java +++ b/src/org/thoughtcrime/securesms/util/Util.java @@ -456,11 +456,7 @@ public class Util { } public static T getRandomElement(T[] elements) { - try { - return elements[SecureRandom.getInstance("SHA1PRNG").nextInt(elements.length)]; - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } + return elements[new SecureRandom().nextInt(elements.length)]; } public static boolean equals(@Nullable Object a, @Nullable Object b) {