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; } } }