Fix SIGNATURE_UNKNOWN_PUB_KEY

This commit is contained in:
Dominik Schürmann 2014-04-16 00:18:00 +02:00
parent 08399dec4b
commit ad6ac28782
3 changed files with 27 additions and 36 deletions

View File

@ -27,7 +27,6 @@ import org.sufficientlysecure.keychain.util.Log;
*/ */
public class OpenPgpSignatureResultBuilder { public class OpenPgpSignatureResultBuilder {
// OpenPgpSignatureResult // OpenPgpSignatureResult
private int mStatus = OpenPgpSignatureResult.SIGNATURE_ERROR;
private boolean mSignatureOnly = false; private boolean mSignatureOnly = false;
private String mUserId; private String mUserId;
private long mKeyId; private long mKeyId;
@ -39,10 +38,6 @@ public class OpenPgpSignatureResultBuilder {
private boolean mValidKeyBinding = false; private boolean mValidKeyBinding = false;
private boolean mIsSignatureKeyCertified = false; private boolean mIsSignatureKeyCertified = false;
public void status(int status) {
this.mStatus = status;
}
public void signatureOnly(boolean signatureOnly) { public void signatureOnly(boolean signatureOnly) {
this.mSignatureOnly = signatureOnly; this.mSignatureOnly = signatureOnly;
} }
@ -80,9 +75,9 @@ public class OpenPgpSignatureResultBuilder {
OpenPgpSignatureResult result = new OpenPgpSignatureResult(); OpenPgpSignatureResult result = new OpenPgpSignatureResult();
result.setSignatureOnly(mSignatureOnly); result.setSignatureOnly(mSignatureOnly);
if (mValidKeyBinding && mValidSignature) { // valid sig!
// valid sig! if (mKnownKey) {
if (mKnownKey) { if (mValidKeyBinding && mValidSignature) {
result.setKeyId(mKeyId); result.setKeyId(mKeyId);
result.setUserId(mUserId); result.setUserId(mUserId);
@ -94,15 +89,15 @@ public class OpenPgpSignatureResultBuilder {
result.setStatus(OpenPgpSignatureResult.SIGNATURE_SUCCESS_UNCERTIFIED); result.setStatus(OpenPgpSignatureResult.SIGNATURE_SUCCESS_UNCERTIFIED);
} }
} else { } else {
result.setKeyId(mKeyId); Log.d(Constants.TAG, "Error!\nvalidKeyBinding: " + mValidKeyBinding
+ "\nvalidSignature: " + mValidSignature);
Log.d(Constants.TAG, "SIGNATURE_UNKNOWN_PUB_KEY"); result.setStatus(OpenPgpSignatureResult.SIGNATURE_ERROR);
result.setStatus(OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY);
} }
} else { } else {
Log.d(Constants.TAG, "Error!\nvalidKeyBinding: " + mValidKeyBinding result.setKeyId(mKeyId);
+ "\nvalidSignature: " + mValidSignature);
result.setStatus(OpenPgpSignatureResult.SIGNATURE_ERROR); Log.d(Constants.TAG, "SIGNATURE_UNKNOWN_PUB_KEY");
result.setStatus(OpenPgpSignatureResult.SIGNATURE_UNKNOWN_PUB_KEY);
} }
return result; return result;

View File

@ -405,8 +405,6 @@ public class PgpDecryptVerify {
if (dataChunk instanceof PGPOnePassSignatureList) { if (dataChunk instanceof PGPOnePassSignatureList) {
updateProgress(R.string.progress_processing_signature, currentProgress, 100); updateProgress(R.string.progress_processing_signature, currentProgress, 100);
signatureResultBuilder.signatureAvailable(true);
PGPOnePassSignatureList sigList = (PGPOnePassSignatureList) dataChunk; PGPOnePassSignatureList sigList = (PGPOnePassSignatureList) dataChunk;
// go through all signatures // go through all signatures
@ -439,6 +437,7 @@ public class PgpDecryptVerify {
// get the subkey which has been used to generate this signature // get the subkey which has been used to generate this signature
signatureKey = publicKeyRing.getPublicKey(signature.getKeyID()); signatureKey = publicKeyRing.getPublicKey(signature.getKeyID());
signatureResultBuilder.signatureAvailable(true);
signatureResultBuilder.knownKey(true); signatureResultBuilder.knownKey(true);
// TODO: uses the first pubkey for information // TODO: uses the first pubkey for information
signatureResultBuilder.userId(PgpKeyHelper.getMainUserId(publicKeyRing.getPublicKey())); signatureResultBuilder.userId(PgpKeyHelper.getMainUserId(publicKeyRing.getPublicKey()));
@ -458,9 +457,9 @@ public class PgpDecryptVerify {
signatureResultBuilder.signatureKeyCertified(isSignatureKeyCertified); signatureResultBuilder.signatureKeyCertified(isSignatureKeyCertified);
} else { } else {
// no key in our database -> return "unknown pub key" status including the first key id // no key in our database -> return "unknown pub key" status including the first key id
signatureResultBuilder.knownKey(false);
if (!sigList.isEmpty()) { if (!sigList.isEmpty()) {
signatureResultBuilder.signatureAvailable(true);
signatureResultBuilder.knownKey(false);
signatureResultBuilder.keyId(sigList.get(0).getKeyID()); signatureResultBuilder.keyId(sigList.get(0).getKeyID());
} }
} }
@ -606,8 +605,6 @@ public class PgpDecryptVerify {
throw new InvalidDataException(); throw new InvalidDataException();
} }
signatureResultBuilder.signatureAvailable(true);
// go through all signatures // go through all signatures
// and find out for which signature we have a key in our database // and find out for which signature we have a key in our database
Long masterKeyId = null; Long masterKeyId = null;
@ -641,6 +638,7 @@ public class PgpDecryptVerify {
// get the subkey which has been used to generate this signature // get the subkey which has been used to generate this signature
signatureKey = publicKeyRing.getPublicKey(signature.getKeyID()); signatureKey = publicKeyRing.getPublicKey(signature.getKeyID());
signatureResultBuilder.signatureAvailable(true);
signatureResultBuilder.knownKey(true); signatureResultBuilder.knownKey(true);
// TODO: uses the first pubkey for information // TODO: uses the first pubkey for information
signatureResultBuilder.userId(PgpKeyHelper.getMainUserId(publicKeyRing.getPublicKey())); signatureResultBuilder.userId(PgpKeyHelper.getMainUserId(publicKeyRing.getPublicKey()));
@ -660,9 +658,9 @@ public class PgpDecryptVerify {
signatureResultBuilder.signatureKeyCertified(isSignatureKeyCertified); signatureResultBuilder.signatureKeyCertified(isSignatureKeyCertified);
} else { } else {
// no key in our database -> return "unknown pub key" status including the first key id // no key in our database -> return "unknown pub key" status including the first key id
signatureResultBuilder.knownKey(false);
if (!sigList.isEmpty()) { if (!sigList.isEmpty()) {
signatureResultBuilder.signatureAvailable(true);
signatureResultBuilder.knownKey(false);
signatureResultBuilder.keyId(sigList.get(0).getKeyID()); signatureResultBuilder.keyId(sigList.get(0).getKeyID());
} }
} }

View File

@ -67,19 +67,17 @@
android:layout_toRightOf="@+id/result_signature_image" android:layout_toRightOf="@+id/result_signature_image"
android:textColor="@color/white" /> android:textColor="@color/white" />
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/lookup_key"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:padding="4dp"
android:text="@string/btn_lookup_key"
bootstrapbutton:bb_icon_left="fa-download"
bootstrapbutton:bb_type="info"
bootstrapbutton:bb_size="small"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout> </RelativeLayout>
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/lookup_key"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:text="@string/btn_lookup_key"
bootstrapbutton:bb_icon_left="fa-download"
bootstrapbutton:bb_type="info"
bootstrapbutton:bb_size="small" />
</LinearLayout> </LinearLayout>