diff options
author | Hall Liu <hallliu@google.com> | 2016-01-07 17:35:54 -0800 |
---|---|---|
committer | Hall Liu <hallliu@google.com> | 2016-02-11 10:39:40 -0800 |
commit | e362e501ee5d8f892d705c0762eff0a584cfb439 (patch) | |
tree | 0d4f36ab39a31a983dd91271640d5ac7eb16e7f6 /telecomm/java/android/telecom/Log.java | |
parent | 7004c4407f0c76bd41d19cd6a2eb867437228ee9 (diff) |
Initialize MD5 in logging in background
Use a background task to call MessageDigest.getInstance in order to
avoid a possible disk read on initialization.
Bug: 26069217
Change-Id: I0091ce012bcd811dfca0e85c21a12c54913ed919
Diffstat (limited to 'telecomm/java/android/telecom/Log.java')
-rw-r--r-- | telecomm/java/android/telecom/Log.java | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/telecomm/java/android/telecom/Log.java b/telecomm/java/android/telecom/Log.java index 73cc4a5f6138..3f32dbe0fdbe 100644 --- a/telecomm/java/android/telecom/Log.java +++ b/telecomm/java/android/telecom/Log.java @@ -16,6 +16,8 @@ package android.telecom; +import android.os.AsyncTask; + import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.IllegalFormatException; @@ -38,8 +40,26 @@ final public class Log { public static final boolean WARN = isLoggable(android.util.Log.WARN); public static final boolean ERROR = isLoggable(android.util.Log.ERROR); + private static MessageDigest sMessageDigest; + private Log() {} + public static void initMd5Sum() { + new AsyncTask<Void, Void, Void>() { + @Override + public Void doInBackground(Void... args) { + MessageDigest md; + try { + md = MessageDigest.getInstance("SHA-1"); + } catch (NoSuchAlgorithmException e) { + md = null; + } + sMessageDigest = md; + return null; + } + }.execute(); + } + public static boolean isLoggable(int level) { return FORCE_LOGGING || android.util.Log.isLoggable(TAG, level); } @@ -137,15 +157,14 @@ final public class Log { } private static String secureHash(byte[] input) { - MessageDigest messageDigest; - try { - messageDigest = MessageDigest.getInstance("SHA-1"); - } catch (NoSuchAlgorithmException e) { - return null; + if (sMessageDigest != null) { + sMessageDigest.reset(); + sMessageDigest.update(input); + byte[] result = sMessageDigest.digest(); + return encodeHex(result); + } else { + return "Uninitialized SHA1"; } - messageDigest.update(input); - byte[] result = messageDigest.digest(); - return encodeHex(result); } private static String encodeHex(byte[] bytes) { |