Loading wifi/java/android/net/wifi/WifiConfigStore.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -1468,6 +1468,8 @@ class WifiConfigStore { if (config.enterpriseConfig.migrateOldEapTlsNative(mWifiNative, netId)) { if (config.enterpriseConfig.migrateOldEapTlsNative(mWifiNative, netId)) { saveConfig(); saveConfig(); } } config.enterpriseConfig.migrateCerts(mKeyStore); } } private String removeDoubleQuotes(String string) { private String removeDoubleQuotes(String string) { Loading wifi/java/android/net/wifi/WifiEnterpriseConfig.java +32 −9 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,9 @@ package android.net.wifi; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import android.os.Process; import android.security.Credentials; import android.security.Credentials; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import com.android.org.bouncycastle.asn1.ASN1InputStream; import com.android.org.bouncycastle.asn1.ASN1InputStream; import com.android.org.bouncycastle.asn1.ASN1Sequence; import com.android.org.bouncycastle.asn1.ASN1Sequence; Loading Loading @@ -481,7 +481,7 @@ public class WifiEnterpriseConfig implements Parcelable { String caCertName = Credentials.CA_CERTIFICATE + name; String caCertName = Credentials.CA_CERTIFICATE + name; if (mClientCertificate != null) { if (mClientCertificate != null) { byte[] privKeyData = mClientPrivateKey.getEncoded(); byte[] privKeyData = mClientPrivateKey.getEncoded(); ret = keyStore.importKey(privKeyName, privKeyData); ret = keyStore.importKey(privKeyName, privKeyData, Process.WIFI_UID); if (ret == false) { if (ret == false) { return ret; return ret; } } Loading @@ -489,7 +489,7 @@ public class WifiEnterpriseConfig implements Parcelable { ret = putCertInKeyStore(keyStore, userCertName, mClientCertificate); ret = putCertInKeyStore(keyStore, userCertName, mClientCertificate); if (ret == false) { if (ret == false) { // Remove private key installed // Remove private key installed keyStore.delKey(privKeyName); keyStore.delKey(privKeyName, Process.WIFI_UID); return ret; return ret; } } } } Loading @@ -499,8 +499,8 @@ public class WifiEnterpriseConfig implements Parcelable { if (ret == false) { if (ret == false) { if (mClientCertificate != null) { if (mClientCertificate != null) { // Remove client key+cert // Remove client key+cert keyStore.delKey(privKeyName); keyStore.delKey(privKeyName, Process.WIFI_UID); keyStore.delete(userCertName); keyStore.delete(userCertName, Process.WIFI_UID); } } return ret; return ret; } } Loading @@ -525,7 +525,7 @@ public class WifiEnterpriseConfig implements Parcelable { Certificate cert) { Certificate cert) { try { try { byte[] certData = Credentials.convertToPem(cert); byte[] certData = Credentials.convertToPem(cert); return keyStore.put(name, certData); return keyStore.put(name, certData, Process.WIFI_UID); } catch (IOException e1) { } catch (IOException e1) { return false; return false; } catch (CertificateException e2) { } catch (CertificateException e2) { Loading @@ -537,14 +537,14 @@ public class WifiEnterpriseConfig implements Parcelable { String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX); String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX); // a valid client certificate is configured // a valid client certificate is configured if (!TextUtils.isEmpty(client)) { if (!TextUtils.isEmpty(client)) { keyStore.delKey(Credentials.USER_PRIVATE_KEY + client); keyStore.delKey(Credentials.USER_PRIVATE_KEY + client, Process.WIFI_UID); keyStore.delete(Credentials.USER_CERTIFICATE + client); keyStore.delete(Credentials.USER_CERTIFICATE + client, Process.WIFI_UID); } } String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX); String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX); // a valid ca certificate is configured // a valid ca certificate is configured if (!TextUtils.isEmpty(ca)) { if (!TextUtils.isEmpty(ca)) { keyStore.delete(Credentials.CA_CERTIFICATE + ca); keyStore.delete(Credentials.CA_CERTIFICATE + ca, Process.WIFI_UID); } } } } Loading Loading @@ -625,6 +625,29 @@ public class WifiEnterpriseConfig implements Parcelable { return true; return true; } } /** Migrate certs from global pool to wifi UID if not already done */ void migrateCerts(android.security.KeyStore keyStore) { String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX); // a valid client certificate is configured if (!TextUtils.isEmpty(client)) { if (!keyStore.contains(Credentials.USER_PRIVATE_KEY + client, Process.WIFI_UID)) { keyStore.duplicate(Credentials.USER_PRIVATE_KEY + client, -1, Credentials.USER_PRIVATE_KEY + client, Process.WIFI_UID); keyStore.duplicate(Credentials.USER_CERTIFICATE + client, -1, Credentials.USER_CERTIFICATE + client, Process.WIFI_UID); } } String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX); // a valid ca certificate is configured if (!TextUtils.isEmpty(ca)) { if (!keyStore.contains(Credentials.CA_CERTIFICATE + ca, Process.WIFI_UID)) { keyStore.duplicate(Credentials.CA_CERTIFICATE + ca, -1, Credentials.CA_CERTIFICATE + ca, Process.WIFI_UID); } } } private String removeDoubleQuotes(String string) { private String removeDoubleQuotes(String string) { int length = string.length(); int length = string.length(); if ((length > 1) && (string.charAt(0) == '"') if ((length > 1) && (string.charAt(0) == '"') Loading Loading
wifi/java/android/net/wifi/WifiConfigStore.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -1468,6 +1468,8 @@ class WifiConfigStore { if (config.enterpriseConfig.migrateOldEapTlsNative(mWifiNative, netId)) { if (config.enterpriseConfig.migrateOldEapTlsNative(mWifiNative, netId)) { saveConfig(); saveConfig(); } } config.enterpriseConfig.migrateCerts(mKeyStore); } } private String removeDoubleQuotes(String string) { private String removeDoubleQuotes(String string) { Loading
wifi/java/android/net/wifi/WifiEnterpriseConfig.java +32 −9 Original line number Original line Diff line number Diff line Loading @@ -17,9 +17,9 @@ package android.net.wifi; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import android.os.Process; import android.security.Credentials; import android.security.Credentials; import android.text.TextUtils; import android.text.TextUtils; import android.util.Log; import com.android.org.bouncycastle.asn1.ASN1InputStream; import com.android.org.bouncycastle.asn1.ASN1InputStream; import com.android.org.bouncycastle.asn1.ASN1Sequence; import com.android.org.bouncycastle.asn1.ASN1Sequence; Loading Loading @@ -481,7 +481,7 @@ public class WifiEnterpriseConfig implements Parcelable { String caCertName = Credentials.CA_CERTIFICATE + name; String caCertName = Credentials.CA_CERTIFICATE + name; if (mClientCertificate != null) { if (mClientCertificate != null) { byte[] privKeyData = mClientPrivateKey.getEncoded(); byte[] privKeyData = mClientPrivateKey.getEncoded(); ret = keyStore.importKey(privKeyName, privKeyData); ret = keyStore.importKey(privKeyName, privKeyData, Process.WIFI_UID); if (ret == false) { if (ret == false) { return ret; return ret; } } Loading @@ -489,7 +489,7 @@ public class WifiEnterpriseConfig implements Parcelable { ret = putCertInKeyStore(keyStore, userCertName, mClientCertificate); ret = putCertInKeyStore(keyStore, userCertName, mClientCertificate); if (ret == false) { if (ret == false) { // Remove private key installed // Remove private key installed keyStore.delKey(privKeyName); keyStore.delKey(privKeyName, Process.WIFI_UID); return ret; return ret; } } } } Loading @@ -499,8 +499,8 @@ public class WifiEnterpriseConfig implements Parcelable { if (ret == false) { if (ret == false) { if (mClientCertificate != null) { if (mClientCertificate != null) { // Remove client key+cert // Remove client key+cert keyStore.delKey(privKeyName); keyStore.delKey(privKeyName, Process.WIFI_UID); keyStore.delete(userCertName); keyStore.delete(userCertName, Process.WIFI_UID); } } return ret; return ret; } } Loading @@ -525,7 +525,7 @@ public class WifiEnterpriseConfig implements Parcelable { Certificate cert) { Certificate cert) { try { try { byte[] certData = Credentials.convertToPem(cert); byte[] certData = Credentials.convertToPem(cert); return keyStore.put(name, certData); return keyStore.put(name, certData, Process.WIFI_UID); } catch (IOException e1) { } catch (IOException e1) { return false; return false; } catch (CertificateException e2) { } catch (CertificateException e2) { Loading @@ -537,14 +537,14 @@ public class WifiEnterpriseConfig implements Parcelable { String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX); String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX); // a valid client certificate is configured // a valid client certificate is configured if (!TextUtils.isEmpty(client)) { if (!TextUtils.isEmpty(client)) { keyStore.delKey(Credentials.USER_PRIVATE_KEY + client); keyStore.delKey(Credentials.USER_PRIVATE_KEY + client, Process.WIFI_UID); keyStore.delete(Credentials.USER_CERTIFICATE + client); keyStore.delete(Credentials.USER_CERTIFICATE + client, Process.WIFI_UID); } } String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX); String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX); // a valid ca certificate is configured // a valid ca certificate is configured if (!TextUtils.isEmpty(ca)) { if (!TextUtils.isEmpty(ca)) { keyStore.delete(Credentials.CA_CERTIFICATE + ca); keyStore.delete(Credentials.CA_CERTIFICATE + ca, Process.WIFI_UID); } } } } Loading Loading @@ -625,6 +625,29 @@ public class WifiEnterpriseConfig implements Parcelable { return true; return true; } } /** Migrate certs from global pool to wifi UID if not already done */ void migrateCerts(android.security.KeyStore keyStore) { String client = getFieldValue(CLIENT_CERT_KEY, CLIENT_CERT_PREFIX); // a valid client certificate is configured if (!TextUtils.isEmpty(client)) { if (!keyStore.contains(Credentials.USER_PRIVATE_KEY + client, Process.WIFI_UID)) { keyStore.duplicate(Credentials.USER_PRIVATE_KEY + client, -1, Credentials.USER_PRIVATE_KEY + client, Process.WIFI_UID); keyStore.duplicate(Credentials.USER_CERTIFICATE + client, -1, Credentials.USER_CERTIFICATE + client, Process.WIFI_UID); } } String ca = getFieldValue(CA_CERT_KEY, CA_CERT_PREFIX); // a valid ca certificate is configured if (!TextUtils.isEmpty(ca)) { if (!keyStore.contains(Credentials.CA_CERTIFICATE + ca, Process.WIFI_UID)) { keyStore.duplicate(Credentials.CA_CERTIFICATE + ca, -1, Credentials.CA_CERTIFICATE + ca, Process.WIFI_UID); } } } private String removeDoubleQuotes(String string) { private String removeDoubleQuotes(String string) { int length = string.length(); int length = string.length(); if ((length > 1) && (string.charAt(0) == '"') if ((length > 1) && (string.charAt(0) == '"') Loading