diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2020-07-29 03:39:12 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-07-29 03:39:12 +0000 |
commit | c5f0d59a3d37818992a6a53d9383925b5ce1a816 (patch) | |
tree | 5cb709a63204c5924529a8f00af0d74d5ecf8dff | |
parent | 1d20368acabe397134124ce4eeede9f736f95f67 (diff) | |
parent | 6facb40a23be06104991c949797596c72680d3a3 (diff) | |
download | support-sparse-6719730-L62000000753047059.tar.gz |
Merge "Merge cherrypicks of [1375213, 1375214, 1375215, 1374646] into sparse-6547930-L06700000650220878" into sparse-6547930-L06700000650220878temp_b_175814077sparse-6719730-L79600000752972521sparse-6719730-L70900000753046352sparse-6719730-L70000000752543170sparse-6719730-L69500000752926162sparse-6719730-L62000000753047059sparse-6719730-L53700000753168461sparse-6719730-L39700000771111717sparse-6719730-L38400000761257854sparse-6719730-L00900000753049483snap-temp-L12900000752330767
8 files changed, 161 insertions, 2 deletions
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt index b72b280dfdb..dfca2fd2703 100644 --- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt +++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt @@ -89,7 +89,7 @@ object LibraryVersions { val REMOTECALLBACK = Version("1.0.0-alpha02") val ROOM = Version("2.3.0-alpha01") val SAVEDSTATE = Version("1.1.0-alpha01") - val SECURITY = Version("1.0.0-rc02") + val SECURITY = Version("1.0.0-rc03") val SECURITY_BIOMETRIC = Version("1.0.0-alpha01") val SECURITY_IDENTITY_CREDENTIAL = Version("1.0.0-alpha01") val SERIALIZATION = Version("1.0.0-alpha01") diff --git a/security/crypto/api/1.0.0-rc03.txt b/security/crypto/api/1.0.0-rc03.txt new file mode 100644 index 00000000000..3fb36a894d1 --- /dev/null +++ b/security/crypto/api/1.0.0-rc03.txt @@ -0,0 +1,49 @@ +// Signature format: 3.0 +package androidx.security.crypto { + + public final class EncryptedFile { + method public java.io.FileInputStream openFileInput() throws java.security.GeneralSecurityException, java.io.IOException; + method public java.io.FileOutputStream openFileOutput() throws java.security.GeneralSecurityException, java.io.IOException; + } + + public static final class EncryptedFile.Builder { + ctor public EncryptedFile.Builder(java.io.File, android.content.Context, String, androidx.security.crypto.EncryptedFile.FileEncryptionScheme); + method public androidx.security.crypto.EncryptedFile build() throws java.security.GeneralSecurityException, java.io.IOException; + method public androidx.security.crypto.EncryptedFile.Builder setKeysetAlias(String); + method public androidx.security.crypto.EncryptedFile.Builder setKeysetPrefName(String); + } + + public enum EncryptedFile.FileEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedFile.FileEncryptionScheme AES256_GCM_HKDF_4KB; + } + + public final class EncryptedSharedPreferences implements android.content.SharedPreferences { + method public boolean contains(String?); + method public static android.content.SharedPreferences create(String, String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme) throws java.security.GeneralSecurityException, java.io.IOException; + method public android.content.SharedPreferences.Editor edit(); + method public java.util.Map<java.lang.String!,?> getAll(); + method public boolean getBoolean(String?, boolean); + method public float getFloat(String?, float); + method public int getInt(String?, int); + method public long getLong(String?, long); + method public String? getString(String?, String?); + method public java.util.Set<java.lang.String!>? getStringSet(String?, java.util.Set<java.lang.String!>?); + method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener); + method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener); + } + + public enum EncryptedSharedPreferences.PrefKeyEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme AES256_SIV; + } + + public enum EncryptedSharedPreferences.PrefValueEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme AES256_GCM; + } + + public final class MasterKeys { + method public static String getOrCreate(android.security.keystore.KeyGenParameterSpec) throws java.security.GeneralSecurityException, java.io.IOException; + field public static final android.security.keystore.KeyGenParameterSpec AES256_GCM_SPEC; + } + +} + diff --git a/security/crypto/api/public_plus_experimental_1.0.0-rc03.txt b/security/crypto/api/public_plus_experimental_1.0.0-rc03.txt new file mode 100644 index 00000000000..3fb36a894d1 --- /dev/null +++ b/security/crypto/api/public_plus_experimental_1.0.0-rc03.txt @@ -0,0 +1,49 @@ +// Signature format: 3.0 +package androidx.security.crypto { + + public final class EncryptedFile { + method public java.io.FileInputStream openFileInput() throws java.security.GeneralSecurityException, java.io.IOException; + method public java.io.FileOutputStream openFileOutput() throws java.security.GeneralSecurityException, java.io.IOException; + } + + public static final class EncryptedFile.Builder { + ctor public EncryptedFile.Builder(java.io.File, android.content.Context, String, androidx.security.crypto.EncryptedFile.FileEncryptionScheme); + method public androidx.security.crypto.EncryptedFile build() throws java.security.GeneralSecurityException, java.io.IOException; + method public androidx.security.crypto.EncryptedFile.Builder setKeysetAlias(String); + method public androidx.security.crypto.EncryptedFile.Builder setKeysetPrefName(String); + } + + public enum EncryptedFile.FileEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedFile.FileEncryptionScheme AES256_GCM_HKDF_4KB; + } + + public final class EncryptedSharedPreferences implements android.content.SharedPreferences { + method public boolean contains(String?); + method public static android.content.SharedPreferences create(String, String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme) throws java.security.GeneralSecurityException, java.io.IOException; + method public android.content.SharedPreferences.Editor edit(); + method public java.util.Map<java.lang.String!,?> getAll(); + method public boolean getBoolean(String?, boolean); + method public float getFloat(String?, float); + method public int getInt(String?, int); + method public long getLong(String?, long); + method public String? getString(String?, String?); + method public java.util.Set<java.lang.String!>? getStringSet(String?, java.util.Set<java.lang.String!>?); + method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener); + method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener); + } + + public enum EncryptedSharedPreferences.PrefKeyEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme AES256_SIV; + } + + public enum EncryptedSharedPreferences.PrefValueEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme AES256_GCM; + } + + public final class MasterKeys { + method public static String getOrCreate(android.security.keystore.KeyGenParameterSpec) throws java.security.GeneralSecurityException, java.io.IOException; + field public static final android.security.keystore.KeyGenParameterSpec AES256_GCM_SPEC; + } + +} + diff --git a/security/crypto/api/res-1.0.0-rc03.txt b/security/crypto/api/res-1.0.0-rc03.txt new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/security/crypto/api/res-1.0.0-rc03.txt diff --git a/security/crypto/api/restricted_1.0.0-rc03.txt b/security/crypto/api/restricted_1.0.0-rc03.txt new file mode 100644 index 00000000000..3fb36a894d1 --- /dev/null +++ b/security/crypto/api/restricted_1.0.0-rc03.txt @@ -0,0 +1,49 @@ +// Signature format: 3.0 +package androidx.security.crypto { + + public final class EncryptedFile { + method public java.io.FileInputStream openFileInput() throws java.security.GeneralSecurityException, java.io.IOException; + method public java.io.FileOutputStream openFileOutput() throws java.security.GeneralSecurityException, java.io.IOException; + } + + public static final class EncryptedFile.Builder { + ctor public EncryptedFile.Builder(java.io.File, android.content.Context, String, androidx.security.crypto.EncryptedFile.FileEncryptionScheme); + method public androidx.security.crypto.EncryptedFile build() throws java.security.GeneralSecurityException, java.io.IOException; + method public androidx.security.crypto.EncryptedFile.Builder setKeysetAlias(String); + method public androidx.security.crypto.EncryptedFile.Builder setKeysetPrefName(String); + } + + public enum EncryptedFile.FileEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedFile.FileEncryptionScheme AES256_GCM_HKDF_4KB; + } + + public final class EncryptedSharedPreferences implements android.content.SharedPreferences { + method public boolean contains(String?); + method public static android.content.SharedPreferences create(String, String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme) throws java.security.GeneralSecurityException, java.io.IOException; + method public android.content.SharedPreferences.Editor edit(); + method public java.util.Map<java.lang.String!,?> getAll(); + method public boolean getBoolean(String?, boolean); + method public float getFloat(String?, float); + method public int getInt(String?, int); + method public long getLong(String?, long); + method public String? getString(String?, String?); + method public java.util.Set<java.lang.String!>? getStringSet(String?, java.util.Set<java.lang.String!>?); + method public void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener); + method public void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences.OnSharedPreferenceChangeListener); + } + + public enum EncryptedSharedPreferences.PrefKeyEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme AES256_SIV; + } + + public enum EncryptedSharedPreferences.PrefValueEncryptionScheme { + enum_constant public static final androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme AES256_GCM; + } + + public final class MasterKeys { + method public static String getOrCreate(android.security.keystore.KeyGenParameterSpec) throws java.security.GeneralSecurityException, java.io.IOException; + field public static final android.security.keystore.KeyGenParameterSpec AES256_GCM_SPEC; + } + +} + diff --git a/security/crypto/build.gradle b/security/crypto/build.gradle index 2bd04a689a2..4403e5836a2 100644 --- a/security/crypto/build.gradle +++ b/security/crypto/build.gradle @@ -28,7 +28,7 @@ plugins { dependencies { api("androidx.annotation:annotation:1.1.0") - implementation("com.google.crypto.tink:tink-android:1.4.0-rc2") + implementation("com.google.crypto.tink:tink-android:1.4.0") androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT) androidTestImplementation(ANDROIDX_TEST_CORE) diff --git a/security/crypto/src/androidTest/java/androidx/security/crypto/EncryptedSharedPreferencesTest.java b/security/crypto/src/androidTest/java/androidx/security/crypto/EncryptedSharedPreferencesTest.java index 5e9f0adf6c9..0807ca9fd7e 100644 --- a/security/crypto/src/androidTest/java/androidx/security/crypto/EncryptedSharedPreferencesTest.java +++ b/security/crypto/src/androidTest/java/androidx/security/crypto/EncryptedSharedPreferencesTest.java @@ -332,6 +332,17 @@ public class EncryptedSharedPreferencesTest { Assert.assertEquals("Data should not exist", null, sharedPreferences.getString(twiceKey, null)); + editor.clear(); + editor.commit(); + + // test clear after put with apply + editor.putString("New Data", "New"); + editor.apply(); + editor.clear(); + editor.apply(); + + Assert.assertEquals("Get all size should be equal", 0, + sharedPreferences.getAll().size()); } @Test diff --git a/security/crypto/src/main/java/androidx/security/crypto/EncryptedSharedPreferences.java b/security/crypto/src/main/java/androidx/security/crypto/EncryptedSharedPreferences.java index 5223548ad0f..b7dbdc9e517 100644 --- a/security/crypto/src/main/java/androidx/security/crypto/EncryptedSharedPreferences.java +++ b/security/crypto/src/main/java/androidx/security/crypto/EncryptedSharedPreferences.java @@ -313,6 +313,7 @@ public final class EncryptedSharedPreferences implements SharedPreferences { clearKeysIfNeeded(); mEditor.apply(); notifyListeners(); + mKeysChanged.clear(); } private void clearKeysIfNeeded() { |