summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt2
-rw-r--r--api/system-removed.txt8
-rw-r--r--core/java/android/security/keystore/recovery/WrappedApplicationKey.java32
-rw-r--r--core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java86
4 files changed, 105 insertions, 23 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index 093222391f29..6c6847e045f2 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4326,7 +4326,6 @@ package android.security.keystore.recovery {
public final class WrappedApplicationKey implements android.os.Parcelable {
method public int describeContents();
- method public byte[] getAccount();
method public java.lang.String getAlias();
method public byte[] getEncryptedKeyMaterial();
method public void writeToParcel(android.os.Parcel, int);
@@ -4336,7 +4335,6 @@ package android.security.keystore.recovery {
public static class WrappedApplicationKey.Builder {
ctor public WrappedApplicationKey.Builder();
method public android.security.keystore.recovery.WrappedApplicationKey build();
- method public android.security.keystore.recovery.WrappedApplicationKey.Builder setAccount(byte[]);
method public android.security.keystore.recovery.WrappedApplicationKey.Builder setAlias(java.lang.String);
method public android.security.keystore.recovery.WrappedApplicationKey.Builder setEncryptedKeyMaterial(byte[]);
}
diff --git a/api/system-removed.txt b/api/system-removed.txt
index cd56c468644b..f26f20e64bb4 100644
--- a/api/system-removed.txt
+++ b/api/system-removed.txt
@@ -108,6 +108,14 @@ package android.security.keystore.recovery {
method public deprecated byte[] start(byte[], byte[], byte[], java.util.List<android.security.keystore.recovery.KeyChainProtectionParams>) throws java.security.cert.CertificateException, android.security.keystore.recovery.InternalRecoveryServiceException;
}
+ public final class WrappedApplicationKey implements android.os.Parcelable {
+ method public deprecated byte[] getAccount();
+ }
+
+ public static class WrappedApplicationKey.Builder {
+ method public deprecated android.security.keystore.recovery.WrappedApplicationKey.Builder setAccount(byte[]);
+ }
+
}
package android.service.notification {
diff --git a/core/java/android/security/keystore/recovery/WrappedApplicationKey.java b/core/java/android/security/keystore/recovery/WrappedApplicationKey.java
index f360bbe99ba1..df9766d84843 100644
--- a/core/java/android/security/keystore/recovery/WrappedApplicationKey.java
+++ b/core/java/android/security/keystore/recovery/WrappedApplicationKey.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,6 @@ package android.security.keystore.recovery;
import android.annotation.NonNull;
import android.annotation.SystemApi;
-
import android.os.Parcel;
import android.os.Parcelable;
@@ -29,7 +28,6 @@ import com.android.internal.util.Preconditions;
*
* <ul>
* <li>Alias - Keystore alias of the key.
- * <li>Account Recovery Agent specific account associated with the key.
* <li>Encrypted key material.
* </ul>
*
@@ -43,7 +41,6 @@ public final class WrappedApplicationKey implements Parcelable {
private String mAlias;
// The only supported format is AES-256 symmetric key.
private byte[] mEncryptedKeyMaterial;
- private byte[] mAccount;
/**
* Builder for creating {@link WrappedApplicationKey}.
@@ -63,13 +60,11 @@ public final class WrappedApplicationKey implements Parcelable {
}
/**
- * Sets Recovery agent specific account.
- *
- * @param account The account.
- * @return This builder.
+ * @deprecated AOSP does not associate keys with accounts. This may be done by system app.
+ * @removed
*/
+ @Deprecated
public Builder setAccount(@NonNull byte[] account) {
- mInstance.mAccount = account;
return this;
}
@@ -94,15 +89,11 @@ public final class WrappedApplicationKey implements Parcelable {
@NonNull public WrappedApplicationKey build() {
Preconditions.checkNotNull(mInstance.mAlias);
Preconditions.checkNotNull(mInstance.mEncryptedKeyMaterial);
- if (mInstance.mAccount == null) {
- mInstance.mAccount = new byte[]{};
- }
return mInstance;
}
}
- private WrappedApplicationKey() {
- }
+ private WrappedApplicationKey() { }
/**
* Deprecated - consider using Builder.
@@ -127,12 +118,13 @@ public final class WrappedApplicationKey implements Parcelable {
return mEncryptedKeyMaterial;
}
- /** Account, default value is empty array */
+ /**
+ * @deprecated AOSP does not associate keys with accounts. This may be done by system app.
+ * @removed
+ */
+ @Deprecated
public @NonNull byte[] getAccount() {
- if (mAccount == null) {
- return new byte[]{};
- }
- return mAccount;
+ return new byte[0];
}
public static final Parcelable.Creator<WrappedApplicationKey> CREATOR =
@@ -150,7 +142,6 @@ public final class WrappedApplicationKey implements Parcelable {
public void writeToParcel(Parcel out, int flags) {
out.writeString(mAlias);
out.writeByteArray(mEncryptedKeyMaterial);
- out.writeByteArray(mAccount);
}
/**
@@ -159,7 +150,6 @@ public final class WrappedApplicationKey implements Parcelable {
protected WrappedApplicationKey(Parcel in) {
mAlias = in.readString();
mEncryptedKeyMaterial = in.createByteArray();
- mAccount = in.createByteArray();
}
@Override
diff --git a/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java b/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java
new file mode 100644
index 000000000000..15afbddf6f02
--- /dev/null
+++ b/core/tests/coretests/src/android/security/keystore/recovery/WrappedApplicationKeyTest.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.security.keystore.recovery;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+import android.os.Parcel;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class WrappedApplicationKeyTest {
+
+ private static final String ALIAS = "karlin";
+ private static final byte[] KEY_MATERIAL = new byte[] { 0, 1, 2, 3, 4 };
+
+ private Parcel mParcel;
+
+ @Before
+ public void setUp() {
+ mParcel = Parcel.obtain();
+ }
+
+ @After
+ public void tearDown() {
+ mParcel.recycle();
+ }
+
+ @Test
+ public void build_setsAlias() {
+ assertEquals(ALIAS, buildTestKey().getAlias());
+ }
+
+ @Test
+ public void build_setsEncryptedKeyMaterial() {
+ assertArrayEquals(KEY_MATERIAL, buildTestKey().getEncryptedKeyMaterial());
+ }
+
+ @Test
+ public void writeToParcel_writesAliasToParcel() {
+ buildTestKey().writeToParcel(mParcel, /*flags=*/ 0);
+
+ mParcel.setDataPosition(0);
+ WrappedApplicationKey readFromParcel =
+ WrappedApplicationKey.CREATOR.createFromParcel(mParcel);
+ assertEquals(ALIAS, readFromParcel.getAlias());
+ }
+
+ @Test
+ public void writeToParcel_writesKeyMaterial() {
+ buildTestKey().writeToParcel(mParcel, /*flags=*/ 0);
+
+ mParcel.setDataPosition(0);
+ WrappedApplicationKey readFromParcel =
+ WrappedApplicationKey.CREATOR.createFromParcel(mParcel);
+ assertArrayEquals(KEY_MATERIAL, readFromParcel.getEncryptedKeyMaterial());
+ }
+
+ private WrappedApplicationKey buildTestKey() {
+ return new WrappedApplicationKey.Builder()
+ .setAlias(ALIAS)
+ .setEncryptedKeyMaterial(KEY_MATERIAL)
+ .build();
+ }
+}