Skip to content

Commit

Permalink
Don't use SHA1 for stable IDs
Browse files Browse the repository at this point in the history
// FREEBIE
  • Loading branch information
moxie0 committed Jan 20, 2017
1 parent 9f23284 commit 7286fd9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 35 deletions.
46 changes: 15 additions & 31 deletions src/org/thoughtcrime/securesms/ConversationAdapter.java
Expand Up @@ -29,7 +29,6 @@
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;

import org.thoughtcrime.redphone.util.Conversions;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter;
import org.thoughtcrime.securesms.database.DatabaseFactory;
Expand All @@ -42,8 +41,6 @@
import org.thoughtcrime.securesms.util.ViewUtil;

import java.lang.ref.SoftReference;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
Expand Down Expand Up @@ -78,7 +75,6 @@ public class ConversationAdapter <V extends View & BindableConversationItem>
private final @NonNull Recipients recipients;
private final @NonNull MmsSmsDatabase db;
private final @NonNull LayoutInflater inflater;
private final @NonNull MessageDigest digest;

protected static class ViewHolder extends RecyclerView.ViewHolder {
public <V extends View & BindableConversationItem> ViewHolder(final @NonNull V itemView) {
Expand All @@ -100,17 +96,12 @@ public interface ItemClickListener {
@VisibleForTesting
ConversationAdapter(Context context, Cursor cursor) {
super(context, cursor);
try {
this.masterSecret = null;
this.locale = null;
this.clickListener = null;
this.recipients = null;
this.inflater = null;
this.db = null;
this.digest = MessageDigest.getInstance("SHA1");
} catch (NoSuchAlgorithmException nsae) {
throw new AssertionError("SHA1 isn't supported!");
}
this.masterSecret = null;
this.locale = null;
this.clickListener = null;
this.recipients = null;
this.inflater = null;
this.db = null;
}

public ConversationAdapter(@NonNull Context context,
Expand All @@ -121,19 +112,14 @@ public ConversationAdapter(@NonNull Context context,
@NonNull Recipients recipients)
{
super(context, cursor);
try {
this.masterSecret = masterSecret;
this.locale = locale;
this.clickListener = clickListener;
this.recipients = recipients;
this.inflater = LayoutInflater.from(context);
this.db = DatabaseFactory.getMmsSmsDatabase(context);
this.digest = MessageDigest.getInstance("SHA1");

setHasStableIds(true);
} catch (NoSuchAlgorithmException nsae) {
throw new AssertionError("SHA1 isn't supported!");
}
this.masterSecret = masterSecret;
this.locale = locale;
this.clickListener = clickListener;
this.recipients = recipients;
this.inflater = LayoutInflater.from(context);
this.db = DatabaseFactory.getMmsSmsDatabase(context);

setHasStableIds(true);
}

@Override
Expand Down Expand Up @@ -208,9 +194,7 @@ public int getItemViewType(@NonNull Cursor cursor) {

@Override
public long getItemId(@NonNull Cursor cursor) {
final String unique = cursor.getString(cursor.getColumnIndexOrThrow(MmsSmsColumns.UNIQUE_ROW_ID));
final byte[] bytes = digest.digest(unique.getBytes());
return Conversions.byteArrayToLong(bytes);
return cursor.getLong(cursor.getColumnIndexOrThrow(MmsSmsColumns.UNIQUE_ROW_ID));
}

private MessageRecord getMessageRecord(long messageId, Cursor cursor, String type) {
Expand Down
6 changes: 2 additions & 4 deletions src/org/thoughtcrime/securesms/database/MmsSmsDatabase.java
Expand Up @@ -138,8 +138,7 @@ private Cursor queryTables(String[] projection, String selection, String order,
String[] mmsProjection = {MmsDatabase.DATE_SENT + " AS " + MmsSmsColumns.NORMALIZED_DATE_SENT,
MmsDatabase.DATE_RECEIVED + " AS " + MmsSmsColumns.NORMALIZED_DATE_RECEIVED,
MmsDatabase.TABLE_NAME + "." + MmsDatabase.ID + " AS " + MmsSmsColumns.ID,
"'MMS::' || " + MmsDatabase.TABLE_NAME + "." + MmsDatabase.ID
+ " || '::' || " + MmsDatabase.DATE_SENT
"CAST('2' || " + MmsDatabase.TABLE_NAME + "." + MmsDatabase.ID + " || " + MmsDatabase.DATE_SENT + " AS INTEGER)"
+ " AS " + MmsSmsColumns.UNIQUE_ROW_ID,
AttachmentDatabase.TABLE_NAME + "." + AttachmentDatabase.ROW_ID + " AS " + AttachmentDatabase.ATTACHMENT_ID_ALIAS,
SmsDatabase.BODY, MmsSmsColumns.READ, MmsSmsColumns.THREAD_ID,
Expand All @@ -164,8 +163,7 @@ private Cursor queryTables(String[] projection, String selection, String order,
String[] smsProjection = {SmsDatabase.DATE_SENT + " AS " + MmsSmsColumns.NORMALIZED_DATE_SENT,
SmsDatabase.DATE_RECEIVED + " AS " + MmsSmsColumns.NORMALIZED_DATE_RECEIVED,
MmsSmsColumns.ID,
"'SMS::' || " + MmsSmsColumns.ID
+ " || '::' || " + SmsDatabase.DATE_SENT
"CAST('1' || " + MmsSmsColumns.ID + " || " + SmsDatabase.DATE_SENT + " AS INTEGER)"
+ " AS " + MmsSmsColumns.UNIQUE_ROW_ID,
"NULL AS " + AttachmentDatabase.ATTACHMENT_ID_ALIAS,
SmsDatabase.BODY, MmsSmsColumns.READ, MmsSmsColumns.THREAD_ID,
Expand Down

0 comments on commit 7286fd9

Please sign in to comment.