Skip to content

Commit

Permalink
Move API around a little, eliminate TransportDetails interface.
Browse files Browse the repository at this point in the history
  • Loading branch information
moxie0 committed Nov 12, 2014
1 parent cafe03a commit ae178fc
Show file tree
Hide file tree
Showing 18 changed files with 22 additions and 88 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.whispersystems.libaxolotl.InvalidMessageException;
import org.whispersystems.libaxolotl.state.AxolotlStore;
import org.whispersystems.textsecure.api.messages.TextSecureAttachmentPointer;
import org.whispersystems.textsecure.crypto.AttachmentCipherInputStream;
import org.whispersystems.textsecure.api.crypto.AttachmentCipherInputStream;
import org.whispersystems.textsecure.push.PushServiceSocket;

import java.io.File;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
import org.whispersystems.textsecure.api.messages.TextSecureAttachmentStream;
import org.whispersystems.textsecure.api.messages.TextSecureGroup;
import org.whispersystems.textsecure.api.messages.TextSecureMessage;
import org.whispersystems.textsecure.crypto.TextSecureCipher;
import org.whispersystems.textsecure.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.api.crypto.TextSecureCipher;
import org.whispersystems.textsecure.api.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.push.MismatchedDevices;
import org.whispersystems.textsecure.push.OutgoingPushMessage;
import org.whispersystems.textsecure.push.OutgoingPushMessageList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.whispersystems.textsecure.crypto;
package org.whispersystems.textsecure.api.crypto;

import android.util.Log;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.whispersystems.textsecure.crypto;
package org.whispersystems.textsecure.api.crypto;

import org.whispersystems.textsecure.util.Util;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.whispersystems.textsecure.crypto;
package org.whispersystems.textsecure.api.crypto;

import com.google.protobuf.InvalidProtocolBufferException;

Expand Down Expand Up @@ -30,8 +30,8 @@

public class TextSecureCipher {

private final SessionCipher sessionCipher;
private final TransportDetails transportDetails;
private final SessionCipher sessionCipher;
private final PushTransportDetails transportDetails;

public TextSecureCipher(AxolotlStore axolotlStore, long recipientId, int deviceId) {
int sessionVersion = axolotlStore.loadSession(recipientId, deviceId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.whispersystems.textsecure.crypto;
package org.whispersystems.textsecure.api.crypto;

import org.whispersystems.libaxolotl.IdentityKey;

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import org.whispersystems.libaxolotl.state.PreKeyBundle;
import org.whispersystems.libaxolotl.state.PreKeyRecord;
import org.whispersystems.libaxolotl.state.SignedPreKeyRecord;
import org.whispersystems.textsecure.crypto.AttachmentCipherOutputStream;
import org.whispersystems.textsecure.api.crypto.AttachmentCipherOutputStream;
import org.whispersystems.textsecure.push.exceptions.AuthorizationFailedException;
import org.whispersystems.textsecure.push.exceptions.ExpectationFailedException;
import org.whispersystems.textsecure.push.exceptions.MismatchedDevicesException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,14 @@

import android.util.Log;

import org.whispersystems.textsecure.crypto.TransportDetails;

import java.io.IOException;

public class PushTransportDetails implements TransportDetails {
public class PushTransportDetails {

private final int messageVersion;

public PushTransportDetails(int messageVersion) {
this.messageVersion = messageVersion;
}

@Override
public byte[] getStrippedPaddingMessageBody(byte[] messageWithPadding) {
if (messageVersion < 2) throw new AssertionError("Unknown version: " + messageVersion);
else if (messageVersion == 2) return messageWithPadding;
Expand All @@ -53,7 +48,6 @@ public byte[] getStrippedPaddingMessageBody(byte[] messageWithPadding) {
return strippedMessage;
}

@Override
public byte[] getPaddedMessageBody(byte[] messageBody) {
if (messageVersion < 2) throw new AssertionError("Unknown version: " + messageVersion);
else if (messageVersion == 2) return messageBody;
Expand All @@ -68,16 +62,6 @@ public byte[] getPaddedMessageBody(byte[] messageBody) {
return paddedMessage;
}

@Override
public byte[] getEncodedMessage(byte[] messageWithMac) {
return messageWithMac;
}

@Override
public byte[] getDecodedMessage(byte[] encodedMessageBytes) throws IOException {
return encodedMessageBytes;
}

private int getPaddedMessageLength(int messageLength) {
int messageLengthWithTerminator = messageLength + 1;
int messagePartCount = messageLengthWithTerminator / 160;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.whispersystems.textsecure.push.exceptions;

import org.whispersystems.textsecure.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.api.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.push.UnregisteredUserException;

import java.util.List;
Expand Down
6 changes: 1 addition & 5 deletions src/org/thoughtcrime/securesms/crypto/MmsCipher.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
import android.content.Context;
import android.util.Log;

import org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore;
import org.thoughtcrime.securesms.mms.TextTransport;
import org.thoughtcrime.securesms.protocol.WirePrefix;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientFactory;
import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException;
import org.whispersystems.libaxolotl.DuplicateMessageException;
import org.whispersystems.libaxolotl.InvalidMessageException;
import org.whispersystems.libaxolotl.LegacyMessageException;
Expand All @@ -20,7 +17,6 @@
import org.whispersystems.libaxolotl.protocol.WhisperMessage;
import org.whispersystems.libaxolotl.state.AxolotlStore;
import org.whispersystems.libaxolotl.util.guava.Optional;
import org.whispersystems.textsecure.crypto.TextSecureCipher;
import org.whispersystems.textsecure.storage.RecipientDevice;
import org.whispersystems.textsecure.util.Util;

Expand Down Expand Up @@ -101,7 +97,7 @@ public SendReq encrypt(Context context, SendReq message)
}

SessionCipher cipher = new SessionCipher(axolotlStore, recipientId, RecipientDevice.DEFAULT_DEVICE_ID);
CiphertextMessage ciphertextMessage = cipher.encrypt(textTransport.getPaddedMessageBody(pduBytes));
CiphertextMessage ciphertextMessage = cipher.encrypt(pduBytes);
byte[] encryptedPduBytes = textTransport.getEncodedMessage(ciphertextMessage.serialize());

PduBody body = new PduBody();
Expand Down
2 changes: 1 addition & 1 deletion src/org/thoughtcrime/securesms/jobs/AvatarDownloadJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import org.whispersystems.jobqueue.JobParameters;
import org.whispersystems.jobqueue.requirements.NetworkRequirement;
import org.whispersystems.libaxolotl.InvalidMessageException;
import org.whispersystems.textsecure.crypto.AttachmentCipherInputStream;
import org.whispersystems.textsecure.api.crypto.AttachmentCipherInputStream;
import org.whispersystems.textsecure.push.PushServiceSocket;
import org.whispersystems.textsecure.push.exceptions.NonSuccessfulResponseCodeException;

Expand Down
2 changes: 1 addition & 1 deletion src/org/thoughtcrime/securesms/jobs/PushDecryptJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
import org.whispersystems.textsecure.api.messages.TextSecureEnvelope;
import org.whispersystems.textsecure.api.messages.TextSecureGroup;
import org.whispersystems.textsecure.api.messages.TextSecureMessage;
import org.whispersystems.textsecure.crypto.TextSecureCipher;
import org.whispersystems.textsecure.api.crypto.TextSecureCipher;
import org.whispersystems.textsecure.util.Base64;

import ws.com.google.android.mms.MmsException;
Expand Down
2 changes: 1 addition & 1 deletion src/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import org.whispersystems.textsecure.api.messages.TextSecureAttachment;
import org.whispersystems.textsecure.api.messages.TextSecureGroup;
import org.whispersystems.textsecure.api.messages.TextSecureMessage;
import org.whispersystems.textsecure.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.api.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.push.PushAddress;
import org.whispersystems.textsecure.push.PushMessageProtos;
import org.whispersystems.textsecure.push.exceptions.EncapsulatedExceptions;
Expand Down
2 changes: 1 addition & 1 deletion src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import org.whispersystems.textsecure.api.TextSecureMessageSender;
import org.whispersystems.textsecure.api.messages.TextSecureAttachment;
import org.whispersystems.textsecure.api.messages.TextSecureMessage;
import org.whispersystems.textsecure.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.api.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.push.PushAddress;
import org.whispersystems.textsecure.push.UnregisteredUserException;
import org.whispersystems.textsecure.storage.RecipientDevice;
Expand Down
3 changes: 1 addition & 2 deletions src/org/thoughtcrime/securesms/jobs/PushTextSendJob.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.EncryptingSmsDatabase;
import org.thoughtcrime.securesms.database.NoSuchMessageException;
import org.thoughtcrime.securesms.database.SmsDatabase;
import org.thoughtcrime.securesms.database.model.SmsMessageRecord;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.push.TextSecureMessageSenderFactory;
Expand All @@ -22,7 +21,7 @@
import org.whispersystems.libaxolotl.state.AxolotlStore;
import org.whispersystems.textsecure.api.TextSecureMessageSender;
import org.whispersystems.textsecure.api.messages.TextSecureMessage;
import org.whispersystems.textsecure.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.api.crypto.UntrustedIdentityException;
import org.whispersystems.textsecure.push.PushAddress;
import org.whispersystems.textsecure.push.UnregisteredUserException;
import org.whispersystems.textsecure.storage.RecipientDevice;
Expand Down
17 changes: 2 additions & 15 deletions src/org/thoughtcrime/securesms/mms/TextTransport.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/**
* Copyright (C) 2011 Whisper Systems
* Copyright (C) 2014 Open Whisper Systems
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -18,29 +19,15 @@

import java.io.IOException;

import org.whispersystems.textsecure.crypto.TransportDetails;
import org.whispersystems.textsecure.util.Base64;

public class TextTransport implements TransportDetails {
public class TextTransport {

@Override
public byte[] getDecodedMessage(byte[] encodedMessageBytes) throws IOException {
return Base64.decode(encodedMessageBytes);
}

@Override
public byte[] getEncodedMessage(byte[] messageWithMac) {
return Base64.encodeBytes(messageWithMac).getBytes();
}

@Override
public byte[] getPaddedMessageBody(byte[] messageBody) {
return messageBody;
}

@Override
public byte[] getStrippedPaddingMessageBody(byte[] messageWithPadding) {
return messageWithPadding;
}

}
8 changes: 2 additions & 6 deletions src/org/thoughtcrime/securesms/sms/SmsTransportDetails.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/**
* Copyright (C) 2011 Whisper Systems
* Copyright (C) 2014 Open Whisper Systems
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Expand All @@ -20,12 +21,11 @@

import org.thoughtcrime.securesms.protocol.WirePrefix;
import org.whispersystems.libaxolotl.protocol.CiphertextMessage;
import org.whispersystems.textsecure.crypto.TransportDetails;
import org.whispersystems.textsecure.util.Base64;

import java.io.IOException;

public class SmsTransportDetails implements TransportDetails {
public class SmsTransportDetails {

public static final int SMS_SIZE = 160;
public static final int MULTIPART_SMS_SIZE = 153;
Expand All @@ -37,20 +37,17 @@ public class SmsTransportDetails implements TransportDetails {

public static final int ENCRYPTED_SINGLE_MESSAGE_BODY_MAX_SIZE = SINGLE_MESSAGE_MAX_BYTES - CiphertextMessage.ENCRYPTED_MESSAGE_OVERHEAD;

@Override
public byte[] getEncodedMessage(byte[] messageWithMac) {
String encodedMessage = Base64.encodeBytesWithoutPadding(messageWithMac);
Log.w("SmsTransportDetails", "Encoded Message Length: " + encodedMessage.length());
return encodedMessage.getBytes();
}

@Override
public byte[] getDecodedMessage(byte[] encodedMessageBytes) throws IOException {
String encodedMessage = new String(encodedMessageBytes);
return Base64.decodeWithoutPadding(encodedMessage);
}

@Override
public byte[] getStrippedPaddingMessageBody(byte[] messageWithPadding) {
int paddingBeginsIndex = 0;

Expand All @@ -70,7 +67,6 @@ public byte[] getStrippedPaddingMessageBody(byte[] messageWithPadding) {
return message;
}

@Override
public byte[] getPaddedMessageBody(byte[] messageBody) {
int paddedBodySize = getMaxBodySizeForBytes(messageBody.length);
Log.w("SmsTransportDetails", "Padding message body out to: " + paddedBodySize);
Expand Down

0 comments on commit ae178fc

Please sign in to comment.