Revert "Initial KeySet API."

This reverts commit 9a643fe02bc960e266484547dda5572b094a4c72.
diff --git a/api/current.txt b/api/current.txt
index 0b658af..f588524 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -8344,9 +8344,6 @@
     field public java.lang.String targetPackage;
   }
 
-  public class KeySet {
-  }
-
   public class LabeledIntent extends android.content.Intent {
     ctor public LabeledIntent(android.content.Intent, java.lang.String, int, int);
     ctor public LabeledIntent(android.content.Intent, java.lang.String, java.lang.CharSequence, int);
@@ -8484,7 +8481,6 @@
     method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int);
     method public abstract java.lang.String getInstallerPackageName(java.lang.String);
     method public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String);
     method public abstract android.content.Intent getLaunchIntentForPackage(java.lang.String);
     method public abstract android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
     method public abstract java.lang.String getNameForUid(int);
@@ -8503,15 +8499,12 @@
     method public abstract android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo) throws android.content.pm.PackageManager.NameNotFoundException;
     method public abstract android.content.res.Resources getResourcesForApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException;
     method public abstract android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method public abstract android.content.pm.KeySet getSigningKeySet(java.lang.String);
     method public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
     method public abstract java.lang.String[] getSystemSharedLibraryNames();
     method public abstract java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
     method public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
     method public abstract boolean hasSystemFeature(java.lang.String);
     method public abstract boolean isSafeMode();
-    method public abstract boolean isSignedBy(java.lang.String, android.content.pm.KeySet);
-    method public abstract boolean isSignedByExactly(java.lang.String, android.content.pm.KeySet);
     method public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int);
     method public abstract java.util.List<android.content.pm.ProviderInfo> queryContentProviders(java.lang.String, int, int);
     method public abstract java.util.List<android.content.pm.InstrumentationInfo> queryInstrumentation(java.lang.String, int);
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 4730559..2935b8e 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -33,7 +33,6 @@
 import android.content.pm.IPackageMoveObserver;
 import android.content.pm.IPackageStatsObserver;
 import android.content.pm.InstrumentationInfo;
-import android.content.pm.KeySet;
 import android.content.pm.ManifestDigest;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageInstaller;
@@ -53,7 +52,6 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.IBinder;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.UserHandle;
@@ -61,7 +59,6 @@
 import android.util.ArrayMap;
 import android.util.Log;
 import android.view.Display;
-import com.android.internal.util.Preconditions;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
@@ -1450,62 +1447,6 @@
         return false;
     }
 
-    @Override
-    public KeySet getKeySetByAlias(String packageName, String alias) {
-        Preconditions.checkNotNull(packageName);
-        Preconditions.checkNotNull(alias);
-        IBinder keySetToken;
-        try {
-            keySetToken = mPM.getKeySetByAlias(packageName, alias);
-        } catch (RemoteException e) {
-            return null;
-        }
-        if (keySetToken == null) {
-            return null;
-        }
-        return new KeySet(keySetToken);
-    }
-
-    @Override
-    public KeySet getSigningKeySet(String packageName) {
-        Preconditions.checkNotNull(packageName);
-        IBinder keySetToken;
-        try {
-            keySetToken = mPM.getSigningKeySet(packageName);
-        } catch (RemoteException e) {
-            return null;
-        }
-        if (keySetToken == null) {
-            return null;
-        }
-        return new KeySet(keySetToken);
-    }
-
-
-    @Override
-    public boolean isSignedBy(String packageName, KeySet ks) {
-        Preconditions.checkNotNull(packageName);
-        Preconditions.checkNotNull(ks);
-        IBinder keySetToken = ks.getToken();
-        try {
-            return mPM.isPackageSignedByKeySet(packageName, keySetToken);
-        } catch (RemoteException e) {
-            return false;
-        }
-    }
-
-    @Override
-    public boolean isSignedByExactly(String packageName, KeySet ks) {
-        Preconditions.checkNotNull(packageName);
-        Preconditions.checkNotNull(ks);
-        IBinder keySetToken = ks.getToken();
-        try {
-            return mPM.isPackageSignedByKeySetExactly(packageName, keySetToken);
-        } catch (RemoteException e) {
-            return false;
-        }
-    }
-
     /**
      * @hide
      */
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 3a98f5d..58d3526 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -429,9 +429,4 @@
 
     boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId);
     boolean getBlockUninstallForUser(String packageName, int userId);
-
-    IBinder getKeySetByAlias(String packageName, String alias);
-    IBinder getSigningKeySet(String packageName);
-    boolean isPackageSignedByKeySet(String packageName, IBinder ks);
-    boolean isPackageSignedByKeySetExactly(String packageName, IBinder ks);
 }
diff --git a/core/java/android/content/pm/KeySet.java b/core/java/android/content/pm/KeySet.java
index fcdaa18..0ef09a4 100644
--- a/core/java/android/content/pm/KeySet.java
+++ b/core/java/android/content/pm/KeySet.java
@@ -16,36 +16,19 @@
 
 package android.content.pm;
 
-import android.os.IBinder;
+import android.os.Binder;
 
-/**
- * Represents a {@code KeySet} that has been declared in the AndroidManifest.xml
- * file for the application.  A {@code KeySet} can be used explicitly to
- * represent a trust relationship with other applications on the device.
- */
+/** @hide */
 public class KeySet {
 
-    private IBinder token;
+    private Binder token;
 
     /** @hide */
-    public KeySet(IBinder token) {
-        if (token == null) {
-            throw new NullPointerException("null value for KeySet IBinder token");
-        }
+    public KeySet(Binder token) {
         this.token = token;
     }
 
-    /** @hide */
-    public IBinder getToken() {
+    Binder getToken() {
         return token;
     }
-
-    @Override
-    public boolean equals(Object o) {
-        if (o instanceof KeySet) {
-            KeySet ks = (KeySet) o;
-            return token == ks.token;
-        }
-        return false;
-    }
 }
\ No newline at end of file
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index ec701b6..7e783eb 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -3594,33 +3594,6 @@
     public abstract boolean isSafeMode();
 
     /**
-     * Return the {@link KeySet} associated with the String alias for this
-     * application.
-     *
-     * @param Alias The alias for a given {@link KeySet} as defined in the
-     *        application's AndroidManifest.xml.
-     */
-    public abstract KeySet getKeySetByAlias(String packageName, String alias);
-
-    /** Return the signing {@link KeySet} for this application. */
-    public abstract KeySet getSigningKeySet(String packageName);
-
-    /**
-     * Return whether the package denoted by packageName has been signed by all
-     * of the keys specified by the {@link KeySet} ks.  This will return true if
-     * the package has been signed by additional keys (a superset) as well.
-     * Compare to {@link #isSignedByExactly(String packageName, KeySet ks)}.
-     */
-    public abstract boolean isSignedBy(String packageName, KeySet ks);
-
-    /**
-     * Return whether the package denoted by packageName has been signed by all
-     * of, and only, the keys specified by the {@link KeySet} ks. Compare to
-     * {@link #isSignedBy(String packageName, KeySet ks)}.
-     */
-    public abstract boolean isSignedByExactly(String packageName, KeySet ks);
-
-    /**
      * Attempts to move package resources from internal to external media or vice versa.
      * Since this may take a little while, the result will
      * be posted back to the given observer.   This call may fail if the calling context
diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml
index b524177..a2cc40c 100644
--- a/core/tests/coretests/AndroidManifest.xml
+++ b/core/tests/coretests/AndroidManifest.xml
@@ -1257,11 +1257,4 @@
     <instrumentation android:name="android.test.InstrumentationTestRunner"
             android:targetPackage="com.android.frameworks.coretests"
             android:label="Frameworks Core Tests" />
-    <key-sets>
-        <key-set android:name="A" >
-          <public-key android:name="keyA"
-                      android:value="MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJoN1Nsgqf0V4C/bbN8wo8O2X/S5D76+5Mb9mlIsHkUTUTbHCNk+LxHIUYLm89YbP9zImrV0bUHLUAZUyoMUCiMCAwEAAQ=="/>
-        </key-set>
-        <upgrade-key-set android:name="A"/>
-    </key-sets>
 </manifest>
diff --git a/core/tests/coretests/apks/keyset/Android.mk b/core/tests/coretests/apks/keyset/Android.mk
index 306dc90..e44ac6c 100644
--- a/core/tests/coretests/apks/keyset/Android.mk
+++ b/core/tests/coretests/apks/keyset/Android.mk
@@ -88,21 +88,4 @@
 LOCAL_CERTIFICATE := $(LOCAL_PATH)/../../certs/keyset_A
 LOCAL_ADDITIONAL_CERTIFICATES := $(LOCAL_PATH)/../../certs/keyset_B
 LOCAL_MANIFEST_FILE := uB/AndroidManifest.xml
-include $(FrameworkCoreTests_BUILD_PACKAGE)
-
-#apks signed by platform only
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_PACKAGE_NAME := keyset_splat_api
-LOCAL_CERTIFICATE := platform
-LOCAL_MANIFEST_FILE := api_test/AndroidManifest.xml
-include $(FrameworkCoreTests_BUILD_PACKAGE)
-
-#apks signed by platform and keyset_A
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := $(call all-subdir-java-files)
-LOCAL_PACKAGE_NAME := keyset_splata_api
-LOCAL_CERTIFICATE := platform
-LOCAL_ADDITIONAL_CERTIFICATES := $(LOCAL_PATH)/../../certs/keyset_A
-LOCAL_MANIFEST_FILE := api_test/AndroidManifest.xml
 include $(FrameworkCoreTests_BUILD_PACKAGE)
\ No newline at end of file
diff --git a/core/tests/coretests/apks/keyset/api_test/AndroidManifest.xml b/core/tests/coretests/apks/keyset/api_test/AndroidManifest.xml
deleted file mode 100644
index 4c7e968..0000000
--- a/core/tests/coretests/apks/keyset/api_test/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="com.android.frameworks.coretests.keysets_api">
-    <application android:hasCode="false">
-    </application>
-</manifest>
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index 3a80309..0244425 100644
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -26,7 +26,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.content.pm.KeySet;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -34,7 +33,6 @@
 import android.content.res.Resources;
 import android.content.res.Resources.NotFoundException;
 import android.net.Uri;
-import android.os.Binder;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.FileUtils;
@@ -3330,174 +3328,6 @@
     }
 
     /**
-     * The following tests are related to testing KeySets-based API
-     */
-
-    /*
-     * testGetSigningKeySetNull - ensure getSigningKeySet() returns null on null
-     * input and when calling a package other than that which made the call.
-     */
-    public void testGetSigningKeySet() throws Exception {
-        PackageManager pm = getPm();
-        String mPkgName = mContext.getPackageName();
-        String otherPkgName = "com.android.frameworks.coretests.keysets_api";
-        KeySet ks;
-        try {
-            ks = pm.getSigningKeySet(null);
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            ks = pm.getSigningKeySet("keysets.test.bogus.package");
-            assertTrue(false); // should have thrown
-        } catch (IllegalArgumentException e) {
-        }
-        installFromRawResource("keysetApi.apk", R.raw.keyset_splat_api,
-                0, false, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
-        try {
-            ks = pm.getSigningKeySet(otherPkgName);
-            assertTrue(false); // should have thrown
-        } catch (SecurityException e) {
-        }
-        cleanUpInstall(otherPkgName);
-        ks = pm.getSigningKeySet(mContext.getPackageName());
-        assertNotNull(ks);
-    }
-
-    /*
-     * testGetKeySetByAlias - same as getSigningKeySet, but for keysets defined
-     * by this package.
-     */
-    public void testGetKeySetByAlias() throws Exception {
-        PackageManager pm = getPm();
-        String mPkgName = mContext.getPackageName();
-        String otherPkgName = "com.android.frameworks.coretests.keysets_api";
-        KeySet ks;
-        try {
-            ks = pm.getKeySetByAlias(null, null);
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            ks = pm.getKeySetByAlias(null, "keysetBogus");
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            ks = pm.getKeySetByAlias("keysets.test.bogus.package", null);
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            ks = pm.getKeySetByAlias("keysets.test.bogus.package", "A");
-            assertTrue(false); // should have thrown
-        } catch(IllegalArgumentException e) {
-        }
-        try {
-            ks = pm.getKeySetByAlias(mPkgName, "keysetBogus");
-            assertTrue(false); // should have thrown
-        } catch(IllegalArgumentException e) {
-        }
-        installFromRawResource("keysetApi.apk", R.raw.keyset_splat_api,
-                0, false, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
-        try {
-            ks = pm.getKeySetByAlias(otherPkgName, "A");
-            assertTrue(false); // should have thrown
-        } catch (SecurityException e) {
-        }
-        cleanUpInstall(otherPkgName);
-        ks = pm.getKeySetByAlias(mPkgName, "A");
-        assertNotNull(ks);
-    }
-
-    public void testIsSignedBy() throws Exception {
-        PackageManager pm = getPm();
-        String mPkgName = mContext.getPackageName();
-        String otherPkgName = "com.android.frameworks.coretests.keysets_api";
-        KeySet mSigningKS = pm.getSigningKeySet(mPkgName);
-        KeySet mDefinedKS = pm.getKeySetByAlias(mPkgName, "A");
-
-        try {
-            assertFalse(pm.isSignedBy(null, null));
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            assertFalse(pm.isSignedBy(null, mSigningKS));
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            assertFalse(pm.isSignedBy(mPkgName, null));
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            assertFalse(pm.isSignedBy("keysets.test.bogus.package", mDefinedKS));
-        } catch(IllegalArgumentException e) {
-        }
-        assertFalse(pm.isSignedBy(mPkgName, mDefinedKS));
-        assertFalse(pm.isSignedBy(mPkgName, new KeySet(new Binder())));
-        assertTrue(pm.isSignedBy(mPkgName, mSigningKS));
-
-        installFromRawResource("keysetApi.apk", R.raw.keyset_splat_api,
-                0, false, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
-        assertFalse(pm.isSignedBy(otherPkgName, mDefinedKS));
-        assertTrue(pm.isSignedBy(otherPkgName, mSigningKS));
-        cleanUpInstall(otherPkgName);
-
-        installFromRawResource("keysetApi.apk", R.raw.keyset_splata_api,
-                0, false, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
-        assertTrue(pm.isSignedBy(otherPkgName, mDefinedKS));
-        assertTrue(pm.isSignedBy(otherPkgName, mSigningKS));
-        cleanUpInstall(otherPkgName);
-    }
-
-    public void testIsSignedByExactly() throws Exception {
-        PackageManager pm = getPm();
-        String mPkgName = mContext.getPackageName();
-        String otherPkgName = "com.android.frameworks.coretests.keysets_api";
-        KeySet mSigningKS = pm.getSigningKeySet(mPkgName);
-        KeySet mDefinedKS = pm.getKeySetByAlias(mPkgName, "A");
-        try {
-            assertFalse(pm.isSignedBy(null, null));
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            assertFalse(pm.isSignedBy(null, mSigningKS));
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            assertFalse(pm.isSignedBy(mPkgName, null));
-            assertTrue(false); // should have thrown
-        } catch (NullPointerException e) {
-        }
-        try {
-            assertFalse(pm.isSignedByExactly("keysets.test.bogus.package", mDefinedKS));
-        } catch(IllegalArgumentException e) {
-        }
-        assertFalse(pm.isSignedByExactly(mPkgName, mDefinedKS));
-        assertFalse(pm.isSignedByExactly(mPkgName, new KeySet(new Binder())));
-        assertTrue(pm.isSignedByExactly(mPkgName, mSigningKS));
-
-        installFromRawResource("keysetApi.apk", R.raw.keyset_splat_api,
-                0, false, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
-        assertFalse(pm.isSignedByExactly(otherPkgName, mDefinedKS));
-        assertTrue(pm.isSignedByExactly(otherPkgName, mSigningKS));
-        cleanUpInstall(otherPkgName);
-
-        installFromRawResource("keysetApi.apk", R.raw.keyset_splata_api,
-                0, false, false, -1, PackageInfo.INSTALL_LOCATION_UNSPECIFIED);
-        assertFalse(pm.isSignedByExactly(otherPkgName, mDefinedKS));
-        assertFalse(pm.isSignedByExactly(otherPkgName, mSigningKS));
-        cleanUpInstall(otherPkgName);
-    }
-
-
-
-    /**
      * The following tests are related to testing the checkSignatures api.
      */
     private void checkSignatures(int apk1, int apk2, int expMatchResult) throws Exception {
diff --git a/services/core/java/com/android/server/pm/KeySetHandle.java b/services/core/java/com/android/server/pm/KeySetHandle.java
deleted file mode 100644
index 640feb3..0000000
--- a/services/core/java/com/android/server/pm/KeySetHandle.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright 2014 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 com.android.server.pm;
-
-import android.os.Binder;
-
-public class KeySetHandle extends Binder {
-}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/pm/KeySetManagerService.java b/services/core/java/com/android/server/pm/KeySetManagerService.java
index 37bedf3..c19951f 100644
--- a/services/core/java/com/android/server/pm/KeySetManagerService.java
+++ b/services/core/java/com/android/server/pm/KeySetManagerService.java
@@ -16,6 +16,7 @@
 
 package com.android.server.pm;
 
+import android.content.pm.KeySet;
 import android.content.pm.PackageParser;
 import android.os.Binder;
 import android.util.ArraySet;
@@ -51,7 +52,7 @@
     /** Sentinel value returned when public key is not found. */
     protected static final long PUBLIC_KEY_NOT_FOUND = -1;
 
-    private final LongSparseArray<KeySetHandle> mKeySets;
+    private final LongSparseArray<KeySet> mKeySets;
 
     private final LongSparseArray<PublicKey> mPublicKeys;
 
@@ -64,7 +65,7 @@
     private static long lastIssuedKeyId = 0;
 
     public KeySetManagerService(Map<String, PackageSetting> packages) {
-        mKeySets = new LongSparseArray<KeySetHandle>();
+        mKeySets = new LongSparseArray<KeySet>();
         mPublicKeys = new LongSparseArray<PublicKey>();
         mKeySetMapping = new LongSparseArray<ArraySet<Long>>();
         mPackages = packages;
@@ -81,7 +82,7 @@
      *
      * Note that this can return true for multiple KeySets.
      */
-    public boolean packageIsSignedByLPr(String packageName, KeySetHandle ks) {
+    public boolean packageIsSignedByLPr(String packageName, KeySet ks) {
         PackageSetting pkg = mPackages.get(packageName);
         if (pkg == null) {
             throw new NullPointerException("Invalid package name");
@@ -90,42 +91,16 @@
             throw new NullPointerException("Package has no KeySet data");
         }
         long id = getIdByKeySetLPr(ks);
-        if (id == KEYSET_NOT_FOUND) {
-                return false;
-        }
         return pkg.keySetData.packageIsSignedBy(id);
     }
 
     /**
-     * Determine if a package is signed by the given KeySet.
-     *
-     * Returns false if the package was not signed by all the
-     * keys in the KeySet, or if the package was signed by keys
-     * not in the KeySet.
-     *
-     * Note that this can return only for one KeySet.
-     */
-    public boolean packageIsSignedByExactlyLPr(String packageName, KeySetHandle ks) {
-        PackageSetting pkg = mPackages.get(packageName);
-        if (pkg == null) {
-            throw new NullPointerException("Invalid package name");
-        }
-        if (pkg.keySetData == null
-            || pkg.keySetData.getProperSigningKeySet()
-            == PackageKeySetData.KEYSET_UNASSIGNED) {
-            throw new NullPointerException("Package has no KeySet data");
-        }
-        long id = getIdByKeySetLPr(ks);
-        return pkg.keySetData.getProperSigningKeySet() == id;
-    }
-
-    /**
      * This informs the system that the given package has defined a KeySet
      * in its manifest that a) contains the given keys and b) is named
      * alias by that package.
      */
     public void addDefinedKeySetToPackageLPw(String packageName,
-            ArraySet<PublicKey> keys, String alias) {
+            Set<PublicKey> keys, String alias) {
         if ((packageName == null) || (keys == null) || (alias == null)) {
             Slog.w(TAG, "Got null argument for a defined keyset, ignoring!");
             return;
@@ -135,7 +110,7 @@
             throw new NullPointerException("Unknown package");
         }
         // Add to KeySets, then to package
-        KeySetHandle ks = addKeySetLPw(keys);
+        KeySet ks = addKeySetLPw(keys);
         long id = getIdByKeySetLPr(ks);
         pkg.keySetData.addDefinedKeySet(id, alias);
     }
@@ -162,18 +137,19 @@
      * was signed by the provided KeySet.
      */
     public void addSigningKeySetToPackageLPw(String packageName,
-            ArraySet<PublicKey> signingKeys) {
+            Set<PublicKey> signingKeys) {
         if ((packageName == null) || (signingKeys == null)) {
             Slog.w(TAG, "Got null argument for a signing keyset, ignoring!");
             return;
         }
         // add the signing KeySet
-        KeySetHandle ks = addKeySetLPw(signingKeys);
+        KeySet ks = addKeySetLPw(signingKeys);
         long id = getIdByKeySetLPr(ks);
-        ArraySet<Long> publicKeyIds = mKeySetMapping.get(id);
+        Set<Long> publicKeyIds = mKeySetMapping.get(id);
         if (publicKeyIds == null) {
             throw new NullPointerException("Got invalid KeySet id");
         }
+
         // attach it to the package
         PackageSetting pkg = mPackages.get(packageName);
         if (pkg == null) {
@@ -184,7 +160,7 @@
         // KeySet id to the package's signing KeySets
         for (int keySetIndex = 0; keySetIndex < mKeySets.size(); keySetIndex++) {
             long keySetID = mKeySets.keyAt(keySetIndex);
-            ArraySet<Long> definedKeys = mKeySetMapping.get(keySetID);
+            Set<Long> definedKeys = mKeySetMapping.get(keySetID);
             if (publicKeyIds.containsAll(definedKeys)) {
                 pkg.keySetData.addSigningKeySet(keySetID);
             }
@@ -195,9 +171,9 @@
      * Fetches the stable identifier associated with the given KeySet. Returns
      * {@link #KEYSET_NOT_FOUND} if the KeySet... wasn't found.
      */
-    private long getIdByKeySetLPr(KeySetHandle ks) {
+    private long getIdByKeySetLPr(KeySet ks) {
         for (int keySetIndex = 0; keySetIndex < mKeySets.size(); keySetIndex++) {
-            KeySetHandle value = mKeySets.valueAt(keySetIndex);
+            KeySet value = mKeySets.valueAt(keySetIndex);
             if (ks.equals(value)) {
                 return mKeySets.keyAt(keySetIndex);
             }
@@ -211,24 +187,25 @@
      * Returns {@link #KEYSET_NOT_FOUND} if the identifier doesn't
      * identify a {@link KeySet}.
      */
-    public KeySetHandle getKeySetByIdLPr(long id) {
+    public KeySet getKeySetByIdLPr(long id) {
         return mKeySets.get(id);
     }
 
     /**
-     * Fetches the {@link KeySetHandle} that a given package refers to by the
-     * provided alias. Returns null if the package is unknown or does not have a
-     * KeySet corresponding to that alias.
+     * Fetches the {@link KeySet} that a given package refers to by the provided alias.
+     *
+     * @throws IllegalArgumentException if the package has no keyset data.
+     * @throws NullPointerException if the package is unknown.
      */
-    public KeySetHandle getKeySetByAliasAndPackageNameLPr(String packageName, String alias) {
+    public KeySet getKeySetByAliasAndPackageNameLPr(String packageName, String alias) {
         PackageSetting p = mPackages.get(packageName);
-        if (p == null || p.keySetData == null) {
-                return null;
+        if (p == null) {
+            throw new NullPointerException("Unknown package");
         }
-        Long keySetId = p.keySetData.getAliases().get(alias);
-        if (keySetId == null) {
-            throw new IllegalArgumentException("Unknown KeySet alias: " + alias);
+        if (p.keySetData == null) {
+            throw new IllegalArgumentException("Package has no keySet data");
         }
+        long keySetId = p.keySetData.getAliases().get(alias);
         return mKeySets.get(keySetId);
     }
 
@@ -237,7 +214,7 @@
      * KeySet id.
      *
      * Returns {@code null} if the identifier doesn't
-     * identify a {@link KeySetHandle}.
+     * identify a {@link KeySet}.
      */
     public ArraySet<PublicKey> getPublicKeysFromKeySetLPr(long id) {
         if(mKeySetMapping.get(id) == null) {
@@ -251,32 +228,36 @@
     }
 
     /**
-     * Fetches the proper {@link KeySetHandle KeySet} that signed the given
+     * Fetches all the known {@link KeySet KeySets} that signed the given
      * package.
      *
      * @throws IllegalArgumentException if the package has no keyset data.
      * @throws NullPointerException if the package is unknown.
      */
-    public KeySetHandle  getSigningKeySetByPackageNameLPr(String packageName) {
+    public Set<KeySet> getSigningKeySetsByPackageNameLPr(String packageName) {
+        Set<KeySet> signingKeySets = new ArraySet<KeySet>();
         PackageSetting p = mPackages.get(packageName);
-        if (p == null
-            || p.keySetData == null
-            || p.keySetData.getProperSigningKeySet()
-            == PackageKeySetData.KEYSET_UNASSIGNED) {
-            return null;
+        if (p == null) {
+            throw new NullPointerException("Unknown package");
         }
-        return mKeySets.get(p.keySetData.getProperSigningKeySet());
+        if (p.keySetData == null || p.keySetData.getSigningKeySets() == null) {
+            throw new IllegalArgumentException("Package has no keySet data");
+        }
+        for (long l : p.keySetData.getSigningKeySets()) {
+            signingKeySets.add(mKeySets.get(l));
+        }
+        return signingKeySets;
     }
 
     /**
-     * Fetches all the known {@link KeySetHandle KeySets} that may upgrade the given
+     * Fetches all the known {@link KeySet KeySets} that may upgrade the given
      * package.
      *
      * @throws IllegalArgumentException if the package has no keyset data.
      * @throws NullPointerException if the package is unknown.
      */
-    public ArraySet<KeySetHandle> getUpgradeKeySetsByPackageNameLPr(String packageName) {
-        ArraySet<KeySetHandle> upgradeKeySets = new ArraySet<KeySetHandle>();
+    public ArraySet<KeySet> getUpgradeKeySetsByPackageNameLPr(String packageName) {
+        ArraySet<KeySet> upgradeKeySets = new ArraySet<KeySet>();
         PackageSetting p = mPackages.get(packageName);
         if (p == null) {
             throw new NullPointerException("Unknown package");
@@ -306,7 +287,7 @@
      *
      * Throws if the provided set is {@code null}.
      */
-    private KeySetHandle addKeySetLPw(ArraySet<PublicKey> keys) {
+    private KeySet addKeySetLPw(Set<PublicKey> keys) {
         if (keys == null) {
             throw new NullPointerException("Provided keys cannot be null");
         }
@@ -324,7 +305,7 @@
         }
 
         // create the KeySet object
-        KeySetHandle ks = new KeySetHandle();
+        KeySet ks = new KeySet(new Binder());
         // get the first unoccupied slot in mKeySets
         long id = getFreeKeySetIDLPw();
         // add the KeySet object to it
@@ -337,7 +318,7 @@
             if (p.keySetData != null) {
                 long pProperSigning = p.keySetData.getProperSigningKeySet();
                 if (pProperSigning != PackageKeySetData.KEYSET_UNASSIGNED) {
-                    ArraySet<Long> pSigningKeys = mKeySetMapping.get(pProperSigning);
+                    Set<Long> pSigningKeys = mKeySetMapping.get(pProperSigning);
                     if (pSigningKeys.containsAll(addedKeyIds)) {
                         p.keySetData.addSigningKeySet(id);
                     }
@@ -372,7 +353,7 @@
      */
     private long getIdFromKeyIdsLPr(Set<Long> publicKeyIds) {
         for (int keyMapIndex = 0; keyMapIndex < mKeySetMapping.size(); keyMapIndex++) {
-            ArraySet<Long> value = mKeySetMapping.valueAt(keyMapIndex);
+            Set<Long> value = mKeySetMapping.valueAt(keyMapIndex);
             if (value.equals(publicKeyIds)) {
                 return mKeySetMapping.keyAt(keyMapIndex);
             }
@@ -601,7 +582,7 @@
         serializer.startTag(null, "keysets");
         for (int keySetIndex = 0; keySetIndex < mKeySetMapping.size(); keySetIndex++) {
             long id = mKeySetMapping.keyAt(keySetIndex);
-            ArraySet<Long> keys = mKeySetMapping.valueAt(keySetIndex);
+            Set<Long> keys = mKeySetMapping.valueAt(keySetIndex);
             serializer.startTag(null, "keyset");
             serializer.attribute(null, "identifier", Long.toString(id));
             for (long keyId : keys) {
@@ -681,7 +662,7 @@
             final String tagName = parser.getName();
             if (tagName.equals("keyset")) {
                 currentKeySetId = readIdentifierLPw(parser);
-                mKeySets.put(currentKeySetId, new KeySetHandle());
+                mKeySets.put(currentKeySetId, new KeySet(new Binder()));
                 mKeySetMapping.put(currentKeySetId, new ArraySet<Long>());
             } else if (tagName.equals("key-id")) {
                 long id = readIdentifierLPw(parser);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index e2009c7..9edadb5 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -13233,83 +13233,4 @@
         }
         return mUserNeedsBadging.valueAt(index);
     }
-
-    @Override
-    public KeySetHandle getKeySetByAlias(String packageName, String alias) {
-        if (packageName == null || alias == null) {
-            return null;
-        }
-        synchronized(mPackages) {
-            final PackageParser.Package pkg = mPackages.get(packageName);
-            if (pkg == null) {
-                Slog.w(TAG, "KeySet requested for unknown package:" + packageName);
-                throw new IllegalArgumentException("Unknown package: " + packageName);
-            }
-            if (pkg.applicationInfo.uid != Binder.getCallingUid()
-                    && Process.SYSTEM_UID != Binder.getCallingUid()) {
-                throw new SecurityException("May not access KeySets defined by"
-                        + " aliases in other applications.");
-            }
-            KeySetManagerService ksms = mSettings.mKeySetManagerService;
-            return ksms.getKeySetByAliasAndPackageNameLPr(packageName, alias);
-        }
-    }
-
-    @Override
-    public KeySetHandle getSigningKeySet(String packageName) {
-        if (packageName == null) {
-            return null;
-        }
-        synchronized(mPackages) {
-            final PackageParser.Package pkg = mPackages.get(packageName);
-            if (pkg == null) {
-                Slog.w(TAG, "KeySet requested for unknown package:" + packageName);
-                throw new IllegalArgumentException("Unknown package: " + packageName);
-            }
-            if (pkg.applicationInfo.uid != Binder.getCallingUid()
-                    && Process.SYSTEM_UID != Binder.getCallingUid()) {
-                throw new SecurityException("May not access signing KeySet of other apps.");
-            }
-            KeySetManagerService ksms = mSettings.mKeySetManagerService;
-            return ksms.getSigningKeySetByPackageNameLPr(packageName);
-        }
-    }
-
-    @Override
-    public boolean isPackageSignedByKeySet(String packageName, IBinder ks) {
-        if (packageName == null || ks == null) {
-            return false;
-        }
-        synchronized(mPackages) {
-            final PackageParser.Package pkg = mPackages.get(packageName);
-            if (pkg == null) {
-                Slog.w(TAG, "KeySet requested for unknown package:" + packageName);
-                throw new IllegalArgumentException("Unknown package: " + packageName);
-            }
-            if (ks instanceof KeySetHandle) {
-                KeySetManagerService ksms = mSettings.mKeySetManagerService;
-                return ksms.packageIsSignedByLPr(packageName, (KeySetHandle) ks);
-            }
-            return false;
-        }
-    }
-
-    @Override
-    public boolean isPackageSignedByKeySetExactly(String packageName, IBinder ks) {
-        if (packageName == null || ks == null) {
-            return false;
-        }
-        synchronized(mPackages) {
-            final PackageParser.Package pkg = mPackages.get(packageName);
-            if (pkg == null) {
-                Slog.w(TAG, "KeySet requested for unknown package:" + packageName);
-                throw new IllegalArgumentException("Unknown package: " + packageName);
-            }
-            if (ks instanceof KeySetHandle) {
-                KeySetManagerService ksms = mSettings.mKeySetManagerService;
-                return ksms.packageIsSignedByExactlyLPr(packageName, (KeySetHandle) ks);
-            }
-            return false;
-        }
-    }
 }
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 648c418..a14714a 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -31,7 +31,6 @@
 import android.content.pm.IPackageMoveObserver;
 import android.content.pm.IPackageStatsObserver;
 import android.content.pm.InstrumentationInfo;
-import android.content.pm.KeySet;
 import android.content.pm.ManifestDigest;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageInstaller;
@@ -617,26 +616,6 @@
         throw new UnsupportedOperationException();
     }
 
-    @Override
-    public KeySet getKeySetByAlias(String packageName, String alias) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public KeySet getSigningKeySet(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isSignedBy(String packageName, KeySet ks) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isSignedByExactly(String packageName, KeySet ks) {
-        throw new UnsupportedOperationException();
-    }
-
     /**
      * @hide
      */