fixed a couple of pgp bugs

Daniel Gultsch created

Change summary

res/layout/activity_contact_details.xml                        | 13 ++
src/eu/siacs/conversations/crypto/PgpEngine.java               | 17 ++-
src/eu/siacs/conversations/services/XmppConnectionService.java |  4 
src/eu/siacs/conversations/ui/XmppActivity.java                |  2 
4 files changed, 22 insertions(+), 14 deletions(-)

Detailed changes

res/layout/activity_contact_details.xml 🔗

@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical"
-    android:background="#e5e5e5">
+        android:background="#e5e5e5">
+
+<LinearLayout 
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
 
      <TextView
         style="@style/sectionHeader"
@@ -107,4 +111,5 @@
         android:showDividers="middle">
  </LinearLayout>
     
-</LinearLayout>
+</LinearLayout>
+</ScrollView>

src/eu/siacs/conversations/crypto/PgpEngine.java 🔗

@@ -40,7 +40,6 @@ public class PgpEngine {
 	}
 
 	public String encrypt(long keyId, String message) {
-		Log.d("xmppService","encrypt message: "+message+" for key "+keyId);
 		long[] keys = {keyId};
 		Intent params = new Intent();
 		params.setAction(OpenPgpApi.ACTION_ENCRYPT);
@@ -51,8 +50,6 @@ public class PgpEngine {
 		ByteArrayOutputStream os = new ByteArrayOutputStream();
 		Intent result = api.executeApi(params, is, os);
 		StringBuilder encryptedMessageBody = new StringBuilder();
-		Log.d("xmppService","intent: "+result.toString());
-		Log.d("xmppService","output: "+os.toString());
 		String[] lines = os.toString().split("\n");
 		for (int i = 3; i < lines.length - 1; ++i) {
 			encryptedMessageBody.append(lines[i].trim());
@@ -62,11 +59,15 @@ public class PgpEngine {
 
 	public long fetchKeyId(String status, String signature)
 			throws OpenPgpException {
+		if (signature==null) {
+			return 0;
+		}
+		if (status==null) {
+			status="";
+		}
 		StringBuilder pgpSig = new StringBuilder();
 		pgpSig.append("-----BEGIN PGP SIGNED MESSAGE-----");
 		pgpSig.append('\n');
-		pgpSig.append("Hash: SHA1");
-		pgpSig.append('\n');
 		pgpSig.append('\n');
 		pgpSig.append(status);
 		pgpSig.append('\n');
@@ -86,7 +87,11 @@ public class PgpEngine {
 		case OpenPgpApi.RESULT_CODE_SUCCESS:
 			OpenPgpSignatureResult sigResult
             = result.getParcelableExtra(OpenPgpApi.RESULT_SIGNATURE);
-			return sigResult.getKeyId();
+			if (sigResult==null) {
+				return 0;
+			} else {
+				return sigResult.getKeyId();
+			}
 		case OpenPgpApi.RESULT_CODE_USER_INTERACTION_REQUIRED:
 			break;
 		case OpenPgpApi.RESULT_CODE_ERROR:

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -253,7 +253,6 @@ public class XmppConnectionService extends Service {
 						if ((x != null)
 								&& (x.getAttribute("xmlns").equals("jabber:x:signed"))) {
 							try {
-								Log.d(LOGTAG,"pgp signature for contact" +packet.getAttribute("from"));
 								contact.setPgpKeyId(pgp.fetchKeyId(packet.findChild("status")
 										.getContent(), x.getContent()));
 							} catch (OpenPgpException e) {
@@ -287,7 +286,7 @@ public class XmppConnectionService extends Service {
 						// TODO: ask user to handle it maybe
 					}
 				} else {
-					//Log.d(LOGTAG, packet.toString());
+					Log.d(LOGTAG, packet.toString());
 				}
 				replaceContactInConversation(contact.getJid(), contact);
 			}
@@ -508,7 +507,6 @@ public class XmppConnectionService extends Service {
 				x.setContent(this.getPgpEngine().encrypt(keyId,
 						message.getBody()));
 				packet.addChild(x);
-				Log.d(LOGTAG,"pgp message"+packet.toString());
 				account.getXmppConnection().sendMessagePacket(packet);
 				message.setStatus(Message.STATUS_SEND);
 				message.setEncryption(Message.ENCRYPTION_DECRYPTED);

src/eu/siacs/conversations/ui/XmppActivity.java 🔗

@@ -71,7 +71,7 @@ public abstract class XmppActivity extends Activity {
 		if (xmppConnectionService.getPgpEngine()!=null) {
 			return true;
 		} else {
-			Builder builder = new AlertDialog.Builder(getApplicationContext());
+			Builder builder = new AlertDialog.Builder(this);
 			builder.setTitle("OpenKeychain not found");
 			builder.setIconAttribute(android.R.attr.alertDialogIcon);
 			builder.setMessage("Please make sure you have installed OpenKeychain");