From dfb9222ccda659ddeff472a4a21b64b4b6d2e412 Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Thu, 21 Jan 2016 02:36:21 +0000 Subject: [PATCH] Modify IdenticonBase to use Briar's hashing and to use byte[] instead of String --- .../identicons/AsymmetricIdenticon.java | 13 ++++++++++ .../android/identicons/IdenticonBase.java | 25 ++++++++----------- .../android/identicons/IdenticonDrawable.java | 9 ++++++- .../android/identicons/IdenticonView.java | 8 ++++-- .../identicons/SymmetricIdenticon.java | 13 ++++++++++ 5 files changed, 51 insertions(+), 17 deletions(-) diff --git a/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java b/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java index bce32ff9e1..b1d98d9b35 100644 --- a/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java +++ b/briar-android/src/im/delight/android/identicons/AsymmetricIdenticon.java @@ -20,8 +20,15 @@ import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; +import org.briarproject.api.crypto.CryptoComponent; + +import javax.inject.Inject; + +import roboguice.RoboGuice; + public class AsymmetricIdenticon extends IdenticonView { + @Inject private CryptoComponent mCrypto; private IdenticonBase mDelegate; public AsymmetricIdenticon(Context context) { @@ -45,7 +52,13 @@ public class AsymmetricIdenticon extends IdenticonView { } private void initDelegate() { + RoboGuice.injectMembers(getContext(), this); mDelegate = new IdenticonBase() { + @Override + protected CryptoComponent getCrypto() { + return mCrypto; + } + @Override protected int getRowCount() { return 4; diff --git a/briar-android/src/im/delight/android/identicons/IdenticonBase.java b/briar-android/src/im/delight/android/identicons/IdenticonBase.java index a1a5d5dd30..8a7153ed99 100644 --- a/briar-android/src/im/delight/android/identicons/IdenticonBase.java +++ b/briar-android/src/im/delight/android/identicons/IdenticonBase.java @@ -4,15 +4,13 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; -import java.security.MessageDigest; +import org.briarproject.api.crypto.CryptoComponent; /** * Created by saiimons on 05/10/14. */ public abstract class IdenticonBase { - private static final String HASH_ALGORITHM = "SHA-256"; - - + private final CryptoComponent mCrypto; private final int mRowCount; private final int mColumnCount; private final Paint mPaint; @@ -23,6 +21,7 @@ public abstract class IdenticonBase { private volatile boolean mReady; public IdenticonBase() { + mCrypto = getCrypto(); mRowCount = getRowCount(); mColumnCount = getColumnCount(); mPaint = new Paint(); @@ -32,20 +31,16 @@ public abstract class IdenticonBase { mPaint.setDither(true); } - public static byte[] getHash(String input) { + public byte[] getHash(byte[] input) { byte[] mHash; // if the input was null if (input == null) { // we can't create a hash value and have nothing to show (draw to the view) mHash = null; - } - // if the input was a proper string (non-null) - else { - // generate a hash from the string to get unique but deterministic byte values + } else { + // generate a hash from the input to get unique but deterministic byte values try { - final MessageDigest digest = java.security.MessageDigest.getInstance(HASH_ALGORITHM); - digest.update(input == null ? new byte[0] : input.getBytes()); - mHash = digest.digest(); + mHash = mCrypto.hash(input); } catch (Exception e) { mHash = null; } @@ -68,9 +63,9 @@ public abstract class IdenticonBase { } } - public void show(String input) { + public void show(byte[] input) { if(input != null) { - mHash = IdenticonBase.getHash(input); + mHash = getHash(input); } else { mHash = null; } @@ -89,6 +84,8 @@ public abstract class IdenticonBase { } } + abstract protected CryptoComponent getCrypto(); + abstract protected int getRowCount(); abstract protected int getColumnCount(); diff --git a/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java b/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java index 19a5094b91..4a5032428f 100644 --- a/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java +++ b/briar-android/src/im/delight/android/identicons/IdenticonDrawable.java @@ -7,6 +7,8 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.Log; +import org.briarproject.api.crypto.CryptoComponent; + /** * Created by saiimons on 05/10/14. */ @@ -15,9 +17,14 @@ public class IdenticonDrawable extends Drawable { private static final int CENTER_COLUMN_INDEX = 3; - public IdenticonDrawable(String toShow) { + public IdenticonDrawable(final CryptoComponent crypto, byte[] toShow) { super(); mDelegate = new IdenticonBase() { + @Override + protected CryptoComponent getCrypto() { + return crypto; + } + @Override protected int getRowCount() { return 5; diff --git a/briar-android/src/im/delight/android/identicons/IdenticonView.java b/briar-android/src/im/delight/android/identicons/IdenticonView.java index 061ba953cb..32a4f863c0 100644 --- a/briar-android/src/im/delight/android/identicons/IdenticonView.java +++ b/briar-android/src/im/delight/android/identicons/IdenticonView.java @@ -49,11 +49,15 @@ abstract public class IdenticonView extends View { } } - public void show(String input) { + public void show(byte[] input) { getDelegate().show(input); invalidate(); } + public void show(String input) { + show(input.getBytes()); + } + public void show(int input) { show(String.valueOf(input)); } @@ -71,7 +75,7 @@ abstract public class IdenticonView extends View { } public void show(byte input) { - show(String.valueOf(input)); + show(new byte[] { input }); } public void show(char input) { diff --git a/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java b/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java index 170ed77ef5..9a267a2f95 100644 --- a/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java +++ b/briar-android/src/im/delight/android/identicons/SymmetricIdenticon.java @@ -20,10 +20,17 @@ import android.content.Context; import android.graphics.Color; import android.util.AttributeSet; +import org.briarproject.api.crypto.CryptoComponent; + +import javax.inject.Inject; + +import roboguice.RoboGuice; + public class SymmetricIdenticon extends IdenticonView { private static final int CENTER_COLUMN_INDEX = 3; + @Inject private CryptoComponent mCrypto; private IdenticonBase mDelegate; public SymmetricIdenticon(Context context) { @@ -42,7 +49,13 @@ public class SymmetricIdenticon extends IdenticonView { } private void initDelegate() { + RoboGuice.injectMembers(getContext(), this); mDelegate = new IdenticonBase() { + @Override + protected CryptoComponent getCrypto() { + return mCrypto; + } + @Override protected int getRowCount() { return 5; -- GitLab