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
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -498,6 +498,7 @@ public class TelecomManager {
|
||||
mContext = context;
|
||||
}
|
||||
mTelecomServiceOverride = telecomServiceImpl;
|
||||
android.telecom.Log.initMd5Sum();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user