This commit is contained in:
Moxie Marlinspike
2014-01-14 00:26:43 -08:00
parent 4851a555e7
commit 49daa45dca
19 changed files with 1674 additions and 244 deletions

View File

@@ -7,19 +7,35 @@ message IncomingPushMessageSignal {
optional uint32 type = 1;
optional string source = 2;
optional string relay = 3;
repeated string destinations = 4;
// repeated string destinations = 4; // No longer supported
optional uint64 timestamp = 5;
optional bytes message = 6; // Contains an encrypted PushMessageContent
}
message PushMessageContent {
optional string body = 1;
message AttachmentPointer {
optional fixed64 id = 1;
optional string contentType = 2;
optional bytes key = 3;
}
message GroupContext {
enum Type {
UNKNOWN = 0;
CREATE = 1;
MODIFY = 2;
DELIVER = 3;
ADD = 4;
QUIT = 5;
}
optional bytes id = 1;
optional Type type = 2;
optional string name = 3;
repeated string members = 4;
optional AttachmentPointer avatar = 5;
}
optional string body = 1;
repeated AttachmentPointer attachments = 2;
optional GroupContext group = 3;
}

View File

@@ -21,9 +21,6 @@ import android.os.Parcelable;
import org.whispersystems.textsecure.push.PushMessageProtos.IncomingPushMessageSignal;
import java.util.LinkedList;
import java.util.List;
public class IncomingPushMessage implements PushMessage, Parcelable {
public static final Parcelable.Creator<IncomingPushMessage> CREATOR = new Parcelable.Creator<IncomingPushMessage>() {
@@ -40,7 +37,6 @@ public class IncomingPushMessage implements PushMessage, Parcelable {
private int type;
private String source;
private List<String> destinations;
private byte[] message;
private long timestamp;
private String relay;
@@ -51,21 +47,17 @@ public class IncomingPushMessage implements PushMessage, Parcelable {
this.timestamp = message.timestamp;
this.relay = message.relay;
this.message = body;
this.destinations = new LinkedList<String>();
this.destinations.addAll(message.destinations);
}
public IncomingPushMessage(IncomingPushMessageSignal signal) {
this.type = signal.getType();
this.source = signal.getSource();
this.destinations = signal.getDestinationsList();
this.message = signal.getMessage().toByteArray();
this.timestamp = signal.getTimestamp();
this.relay = signal.getRelay();
}
public IncomingPushMessage(Parcel in) {
this.destinations = new LinkedList<String>();
this.type = in.readInt();
this.source = in.readString();
@@ -73,19 +65,16 @@ public class IncomingPushMessage implements PushMessage, Parcelable {
this.relay = in.readString();
}
in.readStringList(destinations);
this.message = new byte[in.readInt()];
in.readByteArray(this.message);
this.timestamp = in.readLong();
}
public IncomingPushMessage(int type, String source,
List<String> destinations,
byte[] body, long timestamp)
{
this.type = type;
this.source = source;
this.destinations = destinations;
this.message = body;
this.timestamp = timestamp;
}
@@ -106,10 +95,6 @@ public class IncomingPushMessage implements PushMessage, Parcelable {
return message;
}
public List<String> getDestinations() {
return destinations;
}
@Override
public int describeContents() {
return 0;
@@ -123,7 +108,6 @@ public class IncomingPushMessage implements PushMessage, Parcelable {
if (relay != null) {
dest.writeString(relay);
}
dest.writeStringList(destinations);
dest.writeInt(message.length);
dest.writeByteArray(message);
dest.writeLong(timestamp);

View File

@@ -2,6 +2,7 @@ package org.whispersystems.textsecure.util;
import android.app.AlertDialog;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.widget.EditText;
import java.io.ByteArrayOutputStream;
@@ -169,6 +170,22 @@ public class Util {
return results;
}
public static String getDeviceE164Number(Context context) {
String localNumber = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE))
.getLine1Number();
if (!org.whispersystems.textsecure.util.Util.isEmpty(localNumber) &&
!localNumber.startsWith("+"))
{
if (localNumber.length() == 10) localNumber = "+1" + localNumber;
else localNumber = "+" + localNumber;
return localNumber;
}
return null;
}
public static SecureRandom getSecureRandom() {
try {
return SecureRandom.getInstance("SHA1PRNG");