fixed a couple of pgp bugs

This commit is contained in:
Daniel Gultsch 2014-03-08 00:31:29 +01:00
parent 100059b530
commit 5955da3519
4 changed files with 22 additions and 14 deletions

View file

@ -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"
@ -108,3 +112,4 @@
</LinearLayout>
</LinearLayout>
</ScrollView>

View file

@ -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:

View file

@ -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);

View file

@ -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");