Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f646df16 authored by Eran Messeri's avatar Eran Messeri Committed by Android (Google) Code Review
Browse files

Merge "KeyChain: Unify manual and programmatic key installation flows"

parents e02001e2 d6ee4aae
Loading
Loading
Loading
Loading
+4 −13
Original line number Original line Diff line number Diff line
@@ -16,11 +16,12 @@


package android.security;
package android.security;


import android.annotation.UnsupportedAppUsage;

import com.android.org.bouncycastle.util.io.pem.PemObject;
import com.android.org.bouncycastle.util.io.pem.PemObject;
import com.android.org.bouncycastle.util.io.pem.PemReader;
import com.android.org.bouncycastle.util.io.pem.PemReader;
import com.android.org.bouncycastle.util.io.pem.PemWriter;
import com.android.org.bouncycastle.util.io.pem.PemWriter;


import android.annotation.UnsupportedAppUsage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.IOException;
@@ -90,30 +91,20 @@ public class Credentials {
    public static final String EXTRA_INSTALL_AS_UID = "install_as_uid";
    public static final String EXTRA_INSTALL_AS_UID = "install_as_uid";


    /**
    /**
     * Intent extra: name for the user's private key.
     * Intent extra: name for the user's key pair.
     */
     */
    public static final String EXTRA_USER_PRIVATE_KEY_NAME = "user_private_key_name";
    public static final String EXTRA_USER_KEY_ALIAS = "user_key_pair_name";


    /**
    /**
     * Intent extra: data for the user's private key in PEM-encoded PKCS#8.
     * Intent extra: data for the user's private key in PEM-encoded PKCS#8.
     */
     */
    public static final String EXTRA_USER_PRIVATE_KEY_DATA = "user_private_key_data";
    public static final String EXTRA_USER_PRIVATE_KEY_DATA = "user_private_key_data";


    /**
     * Intent extra: name for the user's certificate.
     */
    public static final String EXTRA_USER_CERTIFICATE_NAME = "user_certificate_name";

    /**
    /**
     * Intent extra: data for the user's certificate in PEM-encoded X.509.
     * Intent extra: data for the user's certificate in PEM-encoded X.509.
     */
     */
    public static final String EXTRA_USER_CERTIFICATE_DATA = "user_certificate_data";
    public static final String EXTRA_USER_CERTIFICATE_DATA = "user_certificate_data";


    /**
     * Intent extra: name for CA certificate chain
     */
    public static final String EXTRA_CA_CERTIFICATES_NAME = "ca_certificates_name";

    /**
    /**
     * Intent extra: data for CA certificate chain in PEM-encoded X.509.
     * Intent extra: data for CA certificate chain in PEM-encoded X.509.
     */
     */
+2 −1
Original line number Original line Diff line number Diff line
@@ -43,7 +43,8 @@ interface IKeyChainService {
    String installCaCertificate(in byte[] caCertificate);
    String installCaCertificate(in byte[] caCertificate);


    // APIs used by DevicePolicyManager
    // APIs used by DevicePolicyManager
    boolean installKeyPair(in byte[] privateKey, in byte[] userCert, in byte[] certChain, String alias);
    boolean installKeyPair(
        in byte[] privateKey, in byte[] userCert, in byte[] certChain, String alias, int uid);
    boolean removeKeyPair(String alias);
    boolean removeKeyPair(String alias);


    // APIs used by Settings
    // APIs used by Settings
+1 −1
Original line number Original line Diff line number Diff line
@@ -5645,7 +5645,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
                    KeyChain.bindAsUser(mContext, UserHandle.getUserHandleForUid(callingUid));
                    KeyChain.bindAsUser(mContext, UserHandle.getUserHandleForUid(callingUid));
            try {
            try {
                IKeyChainService keyChain = keyChainConnection.getService();
                IKeyChainService keyChain = keyChainConnection.getService();
                if (!keyChain.installKeyPair(privKey, cert, chain, alias)) {
                if (!keyChain.installKeyPair(privKey, cert, chain, alias, KeyStore.UID_SELF)) {
                    return false;
                    return false;
                }
                }
                if (requestAccess) {
                if (requestAccess) {