CamScanner.apk(点击下载) / EvernoteUtil.java


package com.evernote.client.android;

import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Build;
import android.os.Looper;
import android.util.Base64;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.ValueCallback;
import androidx.annotation.Nullable;
import com.evernote.client.android.helper.Cat;
import com.evernote.edam.type.Resource;
import com.microsoft.aad.adal.AuthenticationConstants;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;

public final class EvernoteUtil {
    public static final String ACTION_AUTHORIZE = "com.evernote.action.AUTHORIZE";
    public static final String ACTION_GET_BOOTSTRAP_PROFILE_NAME = "com.evernote.action.GET_BOOTSTRAP_PROFILE_NAME";
    private static final Cat CAT = new Cat("EvernoteUtil");
    private static final String EDAM_HASH_ALGORITHM = "MD5";
    private static final String EVERNOTE_SIGNATURE = "XS7HhF3x8-kho4iOnAQIdP7_m4UsbRKgaEAr1HaXwnc=";
    public static final String EXTRA_AUTHORIZATION_URL = "authorization_url";
    public static final String EXTRA_BOOTSTRAP_PROFILE_NAME = "bootstrap_profile_name";
    public static final String EXTRA_OAUTH_CALLBACK_URL = "oauth_callback_url";
    private static final MessageDigest HASH_DIGEST;
    public static final String NOTE_PREFIX = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\"><en-note>";
    public static final String NOTE_SUFFIX = "</en-note>";
    private static final String PACKAGE_NAME = "com.evernote";

    public enum EvernoteInstallStatus {
        INSTALLED,
        OLD_VERSION,
        NOT_INSTALLED
    }

    private static final class EvernoteUtilException extends RuntimeException {
        public EvernoteUtilException(String str, Throwable th) {
            super(str, th);
        }
    }

    static {
        MessageDigest messageDigest;
        try {
            messageDigest = MessageDigest.getInstance(EDAM_HASH_ALGORITHM);
        } catch (NoSuchAlgorithmException unused) {
            messageDigest = null;
        }
        HASH_DIGEST = messageDigest;
    }

    private EvernoteUtil() {
    }

    public static String bytesToHex(byte[] bArr) {
        return bytesToHex(bArr, false);
    }

    public static String bytesToHex(byte[] bArr, boolean z10) {
        StringBuilder sb2 = new StringBuilder();
        for (byte b10 : bArr) {
            int i10 = b10 & 255;
            if (i10 < 16) {
                sb2.append('0');
            }
            sb2.append(Integer.toHexString(i10));
            if (z10) {
                sb2.append(' ');
            }
        }
        return sb2.toString();
    }

    public static Intent createAuthorizationIntent(Context context, String str, boolean z10) {
        Intent intent;
        if (z10 || !EvernoteInstallStatus.INSTALLED.equals(getEvernoteInstallStatus(context, ACTION_AUTHORIZE))) {
            intent = new Intent(context, EvernoteOAuthActivity.class);
        } else {
            intent = new Intent(ACTION_AUTHORIZE);
            intent.setPackage(PACKAGE_NAME);
        }
        intent.putExtra(EXTRA_AUTHORIZATION_URL, str);
        return intent;
    }

    public static String createEnMediaTag(Resource resource) {
        return "<en-media hash=\"" + bytesToHex(resource.getData().getBodyHash()) + "\" type=\"" + resource.getMime() + "\"/>";
    }

    public static Intent createGetBootstrapProfileNameIntent(Context context, EvernoteSession evernoteSession) {
        if (evernoteSession.isForceAuthenticationInThirdPartyApp()) {
            return null;
        }
        if (!EvernoteInstallStatus.INSTALLED.equals(getEvernoteInstallStatus(context, ACTION_GET_BOOTSTRAP_PROFILE_NAME))) {
            return null;
        }
        return new Intent(ACTION_GET_BOOTSTRAP_PROFILE_NAME).setPackage(PACKAGE_NAME);
    }

    private static String encodeBase64(byte[] bArr) {
        return Base64.encodeToString(bArr, 10);
    }

    /* JADX WARNING: Removed duplicated region for block: B:11:0x0039  */
    /* JADX WARNING: Removed duplicated region for block: B:12:0x0053  */
    public static String generateUserAgentString(Context context) {
        String str;
        Locale locale;
        String str2;
        PackageManager.NameNotFoundException e10;
        int i10 = 0;
        try {
            str = context.getPackageName();
            try {
                i10 = context.getPackageManager().getPackageInfo(str, 0).versionCode;
            } catch (PackageManager.NameNotFoundException e11) {
                e10 = e11;
            }
        } catch (PackageManager.NameNotFoundException e12) {
            e10 = e12;
            str = null;
            CAT.e(e10.getMessage());
            String str3 = str + " Android/" + i10;
            locale = Locale.getDefault();
            if (locale != null) {
            }
            return (str2 + "Android/" + Build.VERSION.RELEASE + "; ") + Build.MODEL + "/" + Build.VERSION.SDK_INT + AuthenticationConstants.Broker.CHALLENGE_REQUEST_CERT_AUTH_DELIMETER;
        }
        String str32 = str + " Android/" + i10;
        locale = Locale.getDefault();
        if (locale != null) {
            str2 = str32 + " (" + Locale.US + ");";
        } else {
            str2 = str32 + " (" + locale.toString() + "); ";
        }
        return (str2 + "Android/" + Build.VERSION.RELEASE + "; ") + Build.MODEL + "/" + Build.VERSION.SDK_INT + AuthenticationConstants.Broker.CHALLENGE_REQUEST_CERT_AUTH_DELIMETER;
    }

    public static EvernoteInstallStatus getEvernoteInstallStatus(Context context, String str) {
        PackageManager packageManager = context.getPackageManager();
        if (!packageManager.queryIntentActivities(new Intent(str).setPackage(PACKAGE_NAME), 65536).isEmpty()) {
            return validateSignature(packageManager);
        }
        try {
            packageManager.getPackageInfo(PACKAGE_NAME, 1);
            return EvernoteInstallStatus.OLD_VERSION;
        } catch (Exception unused) {
            return EvernoteInstallStatus.NOT_INSTALLED;
        }
    }

    @Nullable
    private static MessageDigest getSha256Digest() {
        try {
            return MessageDigest.getInstance("SHA-256");
        } catch (NoSuchAlgorithmException unused) {
            return null;
        }
    }

    public static byte[] hash(InputStream inputStream) throws IOException {
        if (HASH_DIGEST != null) {
            byte[] bArr = new byte[1024];
            while (true) {
                int read = inputStream.read(bArr);
                if (read == -1) {
                    return HASH_DIGEST.digest();
                }
                HASH_DIGEST.update(bArr, 0, read);
            }
        } else {
            throw new EvernoteUtilException("MD5 not supported", new NoSuchAlgorithmException(EDAM_HASH_ALGORITHM));
        }
    }

    public static byte[] hash(byte[] bArr) {
        MessageDigest messageDigest = HASH_DIGEST;
        if (messageDigest != null) {
            return messageDigest.digest(bArr);
        }
        throw new EvernoteUtilException("MD5 not supported", new NoSuchAlgorithmException(EDAM_HASH_ALGORITHM));
    }

    public static byte[] hexToBytes(String str) {
        int length = str.length() / 2;
        byte[] bArr = new byte[length];
        for (int i10 = 0; i10 < length; i10++) {
            int i11 = i10 * 2;
            bArr[i10] = (byte) Integer.parseInt(str.substring(i11, i11 + 2), 16);
        }
        return bArr;
    }

    public static void removeAllCookies(Context context) {
        if (Build.VERSION.SDK_INT >= 21) {
            removeAllCookiesV21();
        } else {
            removeAllCookiesV14(context.getApplicationContext());
        }
    }

    private static void removeAllCookiesV14(Context context) {
        CookieSyncManager.createInstance(context);
        CookieManager.getInstance().removeAllCookie();
    }

    @TargetApi(21)
    private static void removeAllCookiesV21() {
        boolean z10;
        Looper myLooper;
        final CookieManager instance = CookieManager.getInstance();
        if (Looper.myLooper() == null) {
            Looper.prepare();
            z10 = true;
        } else {
            z10 = false;
        }
        instance.removeAllCookies(new ValueCallback<Boolean>() {
            /* class com.evernote.client.android.EvernoteUtil.AnonymousClass1 */

            public void onReceiveValue(Boolean bool) {
                new Thread() {
                    /* class com.evernote.client.android.EvernoteUtil.AnonymousClass1.AnonymousClass1 */

                    public void run() {
                        instance.flush();
                    }
                }.start();
            }
        });
        if (z10 && (myLooper = Looper.myLooper()) != null) {
            myLooper.quit();
        }
    }

    @SuppressLint({"PackageManagerGetSignatures"})
    private static EvernoteInstallStatus validateSignature(PackageManager packageManager) {
        MessageDigest sha256Digest = getSha256Digest();
        if (sha256Digest == null) {
            return EvernoteInstallStatus.NOT_INSTALLED;
        }
        try {
            Signature[] signatureArr = packageManager.getPackageInfo(PACKAGE_NAME, 64).signatures;
            if (signatureArr == null || signatureArr.length == 0) {
                return EvernoteInstallStatus.NOT_INSTALLED;
            }
            for (Signature signature : signatureArr) {
                sha256Digest.update(signature.toByteArray());
                if (EVERNOTE_SIGNATURE.equals(encodeBase64(sha256Digest.digest()))) {
                    return EvernoteInstallStatus.INSTALLED;
                }
            }
            return EvernoteInstallStatus.NOT_INSTALLED;
        } catch (PackageManager.NameNotFoundException unused) {
            return EvernoteInstallStatus.NOT_INSTALLED;
        }
    }
}