Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.webapk.lib.client; | 5 package org.chromium.webapk.lib.client; |
| 6 | 6 |
| 7 import static org.chromium.webapk.lib.common.WebApkConstants.WEBAPK_PACKAGE_PREF IX; | 7 import static org.chromium.webapk.lib.common.WebApkConstants.WEBAPK_PACKAGE_PREF IX; |
| 8 | 8 |
| 9 import android.content.Context; | 9 import android.content.Context; |
| 10 import android.content.Intent; | 10 import android.content.Intent; |
| 11 import android.content.pm.PackageInfo; | 11 import android.content.pm.PackageInfo; |
| 12 import android.content.pm.PackageManager; | 12 import android.content.pm.PackageManager; |
| 13 import android.content.pm.PackageManager.NameNotFoundException; | 13 import android.content.pm.PackageManager.NameNotFoundException; |
| 14 import android.content.pm.ResolveInfo; | 14 import android.content.pm.ResolveInfo; |
| 15 import android.content.pm.Signature; | 15 import android.content.pm.Signature; |
| 16 import android.util.Log; | 16 import android.util.Log; |
| 17 | 17 |
| 18 import java.util.Arrays; | 18 import java.util.Arrays; |
| 19 import java.util.List; | 19 import java.util.List; |
| 20 | 20 |
| 21 /** | 21 /** |
| 22 * Checks whether a URL belongs to a WebAPK, and whether a WebAPK is signed by t he WebAPK Minting | 22 * Checks whether a URL belongs to a WebAPK, and whether a WebAPK is signed by t he WebAPK Minting |
| 23 * Server. | 23 * Server. |
| 24 */ | 24 */ |
| 25 public class WebApkValidator { | 25 public class WebApkValidator { |
| 26 | 26 |
| 27 private static final String TAG = "WebApkValidator"; | 27 private static final String TAG = "WebApkValidator"; |
| 28 private static byte[] sExpectedSignature; | 28 private static byte[] sExpectedSignature; |
| 29 private static boolean sIsInitialized = false; | |
| 29 | 30 |
| 30 /** | 31 /** |
| 31 * Queries the PackageManager to determine whether a WebAPK can handle the U RL. Ignores | 32 * Queries the PackageManager to determine whether a WebAPK can handle the U RL. Ignores |
| 32 * whether the user has selected a default handler for the URL and whether t he default | 33 * whether the user has selected a default handler for the URL and whether t he default |
| 33 * handler is the WebAPK. | 34 * handler is the WebAPK. |
| 34 * | 35 * |
| 35 * NOTE(yfriedman): This can fail if multiple WebAPKs can match the supplied url. | 36 * NOTE(yfriedman): This can fail if multiple WebAPKs can match the supplied url. |
| 36 * | 37 * |
| 37 * @param context The application context. | 38 * @param context The application context. |
| 38 * @param url The url to check. | 39 * @param url The url to check. |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 111 Log.d(TAG, "WebApk invalid"); | 112 Log.d(TAG, "WebApk invalid"); |
| 112 return false; | 113 return false; |
| 113 } | 114 } |
| 114 | 115 |
| 115 /** | 116 /** |
| 116 * Initializes the WebApkValidator with the expected signature that WebAPKs must be signed | 117 * Initializes the WebApkValidator with the expected signature that WebAPKs must be signed |
| 117 * with for the current host. | 118 * with for the current host. |
| 118 * @param expectedSignature | 119 * @param expectedSignature |
| 119 */ | 120 */ |
| 120 public static void initWithBrowserHostSignature(byte[] expectedSignature) { | 121 public static void initWithBrowserHostSignature(byte[] expectedSignature) { |
| 122 if (sIsInitialized) { | |
|
pkotwicz
2016/06/10 21:34:14
Can we return if sExpectedSignature != null ?
Xi Han
2016/06/13 20:10:53
Done.
| |
| 123 return; | |
| 124 } | |
| 121 sExpectedSignature = Arrays.copyOf(expectedSignature, expectedSignature. length); | 125 sExpectedSignature = Arrays.copyOf(expectedSignature, expectedSignature. length); |
| 126 sIsInitialized = true; | |
| 122 } | 127 } |
| 123 } | 128 } |
| OLD | NEW |