Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e362e501 authored by Hall Liu's avatar Hall Liu
Browse files

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
parent 7004c440
Loading
Loading
Loading
Loading
+27 −8
Original line number Diff line number Diff line
@@ -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;
        }
        messageDigest.update(input);
        byte[] result = messageDigest.digest();
        if (sMessageDigest != null) {
            sMessageDigest.reset();
            sMessageDigest.update(input);
            byte[] result = sMessageDigest.digest();
            return encodeHex(result);
        } else {
            return "Uninitialized SHA1";
        }
    }

    private static String encodeHex(byte[] bytes) {
+1 −0
Original line number Diff line number Diff line
@@ -498,6 +498,7 @@ public class TelecomManager {
            mContext = context;
        }
        mTelecomServiceOverride = telecomServiceImpl;
        android.telecom.Log.initMd5Sum();
    }

    /**