Loading k9mail/src/main/java/com/fsck/k9/mailstore/CryptoResultAnnotation.java +10 −3 Original line number Diff line number Diff line Loading @@ -72,8 +72,14 @@ public final class CryptoResultAnnotation { return new CryptoResultAnnotation(CryptoError.OPENPGP_UI_CANCELED, null, null, null, null, null); } public static CryptoResultAnnotation createOpenPgpErrorAnnotation(OpenPgpError error) { return new CryptoResultAnnotation(CryptoError.OPENPGP_API_RETURNED_ERROR, null, null, null, null, error); public static CryptoResultAnnotation createOpenPgpSignatureErrorAnnotation( OpenPgpError error, MimeBodyPart replacementData) { return new CryptoResultAnnotation( CryptoError.OPENPGP_SIGNED_API_ERROR, replacementData, null, null, null, error); } public static CryptoResultAnnotation createOpenPgpEncryptionErrorAnnotation(OpenPgpError error) { return new CryptoResultAnnotation(CryptoError.OPENPGP_ENCRYPTED_API_ERROR, null, null, null, null, error); } public boolean isOpenPgpResult() { Loading Loading @@ -136,7 +142,8 @@ public final class CryptoResultAnnotation { public enum CryptoError { OPENPGP_OK, OPENPGP_UI_CANCELED, OPENPGP_API_RETURNED_ERROR, OPENPGP_SIGNED_API_ERROR, OPENPGP_ENCRYPTED_API_ERROR, OPENPGP_SIGNED_BUT_INCOMPLETE, OPENPGP_ENCRYPTED_BUT_INCOMPLETE, SIGNED_BUT_UNSUPPORTED, Loading k9mail/src/main/java/com/fsck/k9/ui/crypto/MessageCryptoHelper.java +11 −5 Original line number Diff line number Diff line Loading @@ -347,7 +347,7 @@ public class MessageCryptoHelper { } private void callAsyncDetachedVerify(Intent intent) throws IOException, MessagingException { OpenPgpDataSource dataSource = getDataSourceForSignedData(); OpenPgpDataSource dataSource = getDataSourceForSignedData(currentCryptoPart.part); byte[] signatureData = MessageDecryptVerifier.getSignatureData(currentCryptoPart.part); intent.putExtra(OpenPgpApi.EXTRA_DETACHED_SIGNATURE, signatureData); Loading @@ -368,12 +368,12 @@ public class MessageCryptoHelper { }); } private OpenPgpDataSource getDataSourceForSignedData() throws IOException { private OpenPgpDataSource getDataSourceForSignedData(final Part signedPart) throws IOException { return new OpenPgpDataSource() { @Override public void writeTo(OutputStream os) throws IOException { try { Multipart multipartSignedMultipart = (Multipart) currentCryptoPart.part.getBody(); Multipart multipartSignedMultipart = (Multipart) signedPart.getBody(); BodyPart signatureBodyPart = multipartSignedMultipart.getBodyPart(0); Log.d(K9.LOG_TAG, "signed data type: " + signatureBodyPart.getMimeType()); signatureBodyPart.writeTo(os); Loading Loading @@ -560,8 +560,14 @@ public class MessageCryptoHelper { } private void onCryptoOperationFailed(OpenPgpError error) { CryptoResultAnnotation errorPart = CryptoResultAnnotation.createOpenPgpErrorAnnotation(error); addCryptoResultAnnotationToMessage(errorPart); CryptoResultAnnotation annotation; if (currentCryptoPart.type == CryptoPartType.PGP_SIGNED) { MimeBodyPart replacementPart = getMultipartSignedContentPartIfAvailable(currentCryptoPart.part); annotation = CryptoResultAnnotation.createOpenPgpSignatureErrorAnnotation(error, replacementPart); } else { annotation = CryptoResultAnnotation.createOpenPgpEncryptionErrorAnnotation(error); } addCryptoResultAnnotationToMessage(annotation); onCryptoFinished(); } Loading k9mail/src/main/java/com/fsck/k9/view/MessageCryptoDisplayStatus.java +4 −1 Original line number Diff line number Diff line Loading @@ -209,7 +209,10 @@ public enum MessageCryptoDisplayStatus { case OPENPGP_UI_CANCELED: return CANCELLED; case OPENPGP_API_RETURNED_ERROR: case OPENPGP_SIGNED_API_ERROR: return UNENCRYPTED_SIGN_ERROR; case OPENPGP_ENCRYPTED_API_ERROR: return ENCRYPTED_ERROR; } throw new IllegalStateException("Unhandled case!"); Loading Loading
k9mail/src/main/java/com/fsck/k9/mailstore/CryptoResultAnnotation.java +10 −3 Original line number Diff line number Diff line Loading @@ -72,8 +72,14 @@ public final class CryptoResultAnnotation { return new CryptoResultAnnotation(CryptoError.OPENPGP_UI_CANCELED, null, null, null, null, null); } public static CryptoResultAnnotation createOpenPgpErrorAnnotation(OpenPgpError error) { return new CryptoResultAnnotation(CryptoError.OPENPGP_API_RETURNED_ERROR, null, null, null, null, error); public static CryptoResultAnnotation createOpenPgpSignatureErrorAnnotation( OpenPgpError error, MimeBodyPart replacementData) { return new CryptoResultAnnotation( CryptoError.OPENPGP_SIGNED_API_ERROR, replacementData, null, null, null, error); } public static CryptoResultAnnotation createOpenPgpEncryptionErrorAnnotation(OpenPgpError error) { return new CryptoResultAnnotation(CryptoError.OPENPGP_ENCRYPTED_API_ERROR, null, null, null, null, error); } public boolean isOpenPgpResult() { Loading Loading @@ -136,7 +142,8 @@ public final class CryptoResultAnnotation { public enum CryptoError { OPENPGP_OK, OPENPGP_UI_CANCELED, OPENPGP_API_RETURNED_ERROR, OPENPGP_SIGNED_API_ERROR, OPENPGP_ENCRYPTED_API_ERROR, OPENPGP_SIGNED_BUT_INCOMPLETE, OPENPGP_ENCRYPTED_BUT_INCOMPLETE, SIGNED_BUT_UNSUPPORTED, Loading
k9mail/src/main/java/com/fsck/k9/ui/crypto/MessageCryptoHelper.java +11 −5 Original line number Diff line number Diff line Loading @@ -347,7 +347,7 @@ public class MessageCryptoHelper { } private void callAsyncDetachedVerify(Intent intent) throws IOException, MessagingException { OpenPgpDataSource dataSource = getDataSourceForSignedData(); OpenPgpDataSource dataSource = getDataSourceForSignedData(currentCryptoPart.part); byte[] signatureData = MessageDecryptVerifier.getSignatureData(currentCryptoPart.part); intent.putExtra(OpenPgpApi.EXTRA_DETACHED_SIGNATURE, signatureData); Loading @@ -368,12 +368,12 @@ public class MessageCryptoHelper { }); } private OpenPgpDataSource getDataSourceForSignedData() throws IOException { private OpenPgpDataSource getDataSourceForSignedData(final Part signedPart) throws IOException { return new OpenPgpDataSource() { @Override public void writeTo(OutputStream os) throws IOException { try { Multipart multipartSignedMultipart = (Multipart) currentCryptoPart.part.getBody(); Multipart multipartSignedMultipart = (Multipart) signedPart.getBody(); BodyPart signatureBodyPart = multipartSignedMultipart.getBodyPart(0); Log.d(K9.LOG_TAG, "signed data type: " + signatureBodyPart.getMimeType()); signatureBodyPart.writeTo(os); Loading Loading @@ -560,8 +560,14 @@ public class MessageCryptoHelper { } private void onCryptoOperationFailed(OpenPgpError error) { CryptoResultAnnotation errorPart = CryptoResultAnnotation.createOpenPgpErrorAnnotation(error); addCryptoResultAnnotationToMessage(errorPart); CryptoResultAnnotation annotation; if (currentCryptoPart.type == CryptoPartType.PGP_SIGNED) { MimeBodyPart replacementPart = getMultipartSignedContentPartIfAvailable(currentCryptoPart.part); annotation = CryptoResultAnnotation.createOpenPgpSignatureErrorAnnotation(error, replacementPart); } else { annotation = CryptoResultAnnotation.createOpenPgpEncryptionErrorAnnotation(error); } addCryptoResultAnnotationToMessage(annotation); onCryptoFinished(); } Loading
k9mail/src/main/java/com/fsck/k9/view/MessageCryptoDisplayStatus.java +4 −1 Original line number Diff line number Diff line Loading @@ -209,7 +209,10 @@ public enum MessageCryptoDisplayStatus { case OPENPGP_UI_CANCELED: return CANCELLED; case OPENPGP_API_RETURNED_ERROR: case OPENPGP_SIGNED_API_ERROR: return UNENCRYPTED_SIGN_ERROR; case OPENPGP_ENCRYPTED_API_ERROR: return ENCRYPTED_ERROR; } throw new IllegalStateException("Unhandled case!"); Loading