tls: Check RSA presence in .pem certificate

Disable Private Key File choise if RSA key is in .pem

Refs #45008
diff --git a/src/org/sflphone/account/TLSManager.java b/src/org/sflphone/account/TLSManager.java
index 2b9b9b6..63d3c03 100644
--- a/src/org/sflphone/account/TLSManager.java
+++ b/src/org/sflphone/account/TLSManager.java
@@ -112,13 +112,16 @@
                     File crt = new File(mAccount.getTlsDetails().getDetailString(AccountDetailTls.CONFIG_TLS_CA_LIST_FILE));
                     current.setSummary(crt.getName());
                     current.setOnPreferenceClickListener(filePickerListener);
-                    setFeedbackIcon(crt.getAbsolutePath());
+                    setFeedbackIcon(current, crt.getAbsolutePath());
                 } else if (current.getKey().contentEquals(AccountDetailTls.CONFIG_TLS_PRIVATE_KEY_FILE)) {
                     current.setSummary(new File(mAccount.getTlsDetails().getDetailString(AccountDetailTls.CONFIG_TLS_PRIVATE_KEY_FILE)).getName());
                     current.setOnPreferenceClickListener(filePickerListener);
                 } else if (current.getKey().contentEquals(AccountDetailTls.CONFIG_TLS_CERTIFICATE_FILE)) {
-                    current.setSummary(new File(mAccount.getTlsDetails().getDetailString(AccountDetailTls.CONFIG_TLS_CERTIFICATE_FILE)).getName());
+                    File pem = new File(mAccount.getTlsDetails().getDetailString(AccountDetailTls.CONFIG_TLS_CERTIFICATE_FILE));
+                    current.setSummary(pem.getName());
                     current.setOnPreferenceClickListener(filePickerListener);
+                    setFeedbackIcon(current, pem.getAbsolutePath());
+                    checkForRSAKey(pem.getAbsolutePath());
                 } else if (current.getKey().contentEquals(AccountDetailTls.CONFIG_TLS_METHOD)) {
                     String[] values = mFrag.getTlsMethods();
                     ((ListPreference)current).setEntries(values);
@@ -135,11 +138,19 @@
         }
     }
 
-    private void setFeedbackIcon(String crtPath) {
+    private void checkForRSAKey(String path) {
+        if(mFrag.findRSAKey(path)){
+            mScreen.findPreference(AccountDetailTls.CONFIG_TLS_PRIVATE_KEY_FILE).setEnabled(false);
+        }else {
+            mScreen.findPreference(AccountDetailTls.CONFIG_TLS_PRIVATE_KEY_FILE).setEnabled(true);
+        }
+    }
+
+    private void setFeedbackIcon(Preference current, String crtPath) {
         if(!mFrag.checkCertificate(crtPath)){
-            mScreen.findPreference(AccountDetailTls.CONFIG_TLS_CA_LIST_FILE).setIcon(R.drawable.ic_error);
+            current.setIcon(R.drawable.ic_error);
         } else {
-            mScreen.findPreference(AccountDetailTls.CONFIG_TLS_CA_LIST_FILE).setIcon(R.drawable.ic_good);
+            current.setIcon(R.drawable.ic_good);
         }
     }
 
@@ -180,13 +191,14 @@
             return;
 
         File myFile = new File(data.getData().getEncodedPath());
-        Log.i(TAG, "file selected:" + data.getData());
+        Preference pref;
         switch (requestCode) {
             case SELECT_CA_LIST_RC:
-                mScreen.findPreference(AccountDetailTls.CONFIG_TLS_CA_LIST_FILE).setSummary(myFile.getName());
+                pref = mScreen.findPreference(AccountDetailTls.CONFIG_TLS_CA_LIST_FILE);
+                pref.setSummary(myFile.getName());
                 mAccount.getTlsDetails().setDetailString(AccountDetailTls.CONFIG_TLS_CA_LIST_FILE, myFile.getAbsolutePath());
                 mAccount.notifyObservers();
-                setFeedbackIcon(myFile.getAbsolutePath());
+                setFeedbackIcon(pref, myFile.getAbsolutePath());
                 break;
             case SELECT_PRIVATE_KEY_RC:
                 mScreen.findPreference(AccountDetailTls.CONFIG_TLS_PRIVATE_KEY_FILE).setSummary(myFile.getName());
@@ -194,9 +206,12 @@
                 mAccount.notifyObservers();
                 break;
             case SELECT_CERTIFICATE_RC:
-                mScreen.findPreference(AccountDetailTls.CONFIG_TLS_CERTIFICATE_FILE).setSummary(myFile.getName());
+                pref = mScreen.findPreference(AccountDetailTls.CONFIG_TLS_CERTIFICATE_FILE);
+                pref.setSummary(myFile.getName());
                 mAccount.getTlsDetails().setDetailString(AccountDetailTls.CONFIG_TLS_CERTIFICATE_FILE, myFile.getAbsolutePath());
                 mAccount.notifyObservers();
+                setFeedbackIcon(pref, myFile.getAbsolutePath());
+                checkForRSAKey(myFile.getAbsolutePath());
                 break;
         }
 
diff --git a/src/org/sflphone/fragments/NestedSettingsFragment.java b/src/org/sflphone/fragments/NestedSettingsFragment.java
index ead7cda..6dab587 100644
--- a/src/org/sflphone/fragments/NestedSettingsFragment.java
+++ b/src/org/sflphone/fragments/NestedSettingsFragment.java
@@ -97,6 +97,15 @@
         return false;
     }
 
+    public boolean findRSAKey(String pemPath) {
+        try {
+            return mCallbacks.getService().checkForPrivateKey(pemPath);
+        } catch (RemoteException e) {
+            e.printStackTrace();
+        }
+        return false;
+    }
+
     public interface Callbacks {
 
         public Account getAccount();