Merge "Add Keystore get option that supresses caught exceptions warnings."
diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java
index 330d24d..6dfe1fd 100644
--- a/keystore/java/android/security/KeyStore.java
+++ b/keystore/java/android/security/KeyStore.java
@@ -222,6 +222,15 @@
     }
 
     public byte[] get(String key, int uid) {
+        return get(key, uid, false);
+    }
+
+    @UnsupportedAppUsage
+    public byte[] get(String key) {
+        return get(key, UID_SELF);
+    }
+
+    public byte[] get(String key, int uid, boolean suppressKeyNotFoundWarning) {
         try {
             key = key != null ? key : "";
             return mBinder.get(key, uid);
@@ -229,16 +238,18 @@
             Log.w(TAG, "Cannot connect to keystore", e);
             return null;
         } catch (android.os.ServiceSpecificException e) {
-            Log.w(TAG, "KeyStore exception", e);
+            if (!suppressKeyNotFoundWarning || e.errorCode != KEY_NOT_FOUND) {
+                Log.w(TAG, "KeyStore exception", e);
+            }
             return null;
         }
     }
 
-    @UnsupportedAppUsage
-    public byte[] get(String key) {
-        return get(key, UID_SELF);
+    public byte[] get(String key, boolean suppressKeyNotFoundWarning) {
+        return get(key, UID_SELF, suppressKeyNotFoundWarning);
     }
 
+
     public boolean put(String key, byte[] value, int uid, int flags) {
         return insert(key, value, uid, flags) == NO_ERROR;
     }