mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-27 19:22:14 -05:00
Merge branch 'development' of github.com:open-keychain/open-keychain into development
This commit is contained in:
commit
5b017dbf7a
@ -22,6 +22,7 @@ import org.junit.Before;
|
|||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.openintents.openpgp.OpenPgpMetadata;
|
||||||
import org.openintents.openpgp.OpenPgpSignatureResult;
|
import org.openintents.openpgp.OpenPgpSignatureResult;
|
||||||
import org.robolectric.*;
|
import org.robolectric.*;
|
||||||
import org.robolectric.shadows.ShadowLog;
|
import org.robolectric.shadows.ShadowLog;
|
||||||
@ -162,6 +163,10 @@ public class PgpEncryptDecryptTest {
|
|||||||
Assert.assertArrayEquals("decrypted ciphertext should equal plaintext",
|
Assert.assertArrayEquals("decrypted ciphertext should equal plaintext",
|
||||||
out.toByteArray(), plaintext.getBytes());
|
out.toByteArray(), plaintext.getBytes());
|
||||||
Assert.assertNull("signature should be an error", result.getSignatureResult());
|
Assert.assertNull("signature should be an error", result.getSignatureResult());
|
||||||
|
|
||||||
|
OpenPgpMetadata metadata = result.getDecryptMetadata();
|
||||||
|
Assert.assertEquals("filesize must be correct",
|
||||||
|
out.toByteArray().length, metadata.getOriginalSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // decryption with a bad passphrase should fail
|
{ // decryption with a bad passphrase should fail
|
||||||
@ -239,6 +244,11 @@ public class PgpEncryptDecryptTest {
|
|||||||
Assert.assertArrayEquals("decrypted ciphertext with provided passphrase should equal plaintext",
|
Assert.assertArrayEquals("decrypted ciphertext with provided passphrase should equal plaintext",
|
||||||
out.toByteArray(), plaintext.getBytes());
|
out.toByteArray(), plaintext.getBytes());
|
||||||
Assert.assertNull("signature be empty", result.getSignatureResult());
|
Assert.assertNull("signature be empty", result.getSignatureResult());
|
||||||
|
|
||||||
|
OpenPgpMetadata metadata = result.getDecryptMetadata();
|
||||||
|
Assert.assertEquals("filesize must be correct",
|
||||||
|
out.toByteArray().length, metadata.getOriginalSize());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO how to test passphrase cache?
|
// TODO how to test passphrase cache?
|
||||||
@ -318,6 +328,10 @@ public class PgpEncryptDecryptTest {
|
|||||||
Assert.assertArrayEquals("decrypted ciphertext with cached passphrase should equal plaintext",
|
Assert.assertArrayEquals("decrypted ciphertext with cached passphrase should equal plaintext",
|
||||||
out.toByteArray(), plaintext.getBytes());
|
out.toByteArray(), plaintext.getBytes());
|
||||||
Assert.assertNull("signature should be empty", result.getSignatureResult());
|
Assert.assertNull("signature should be empty", result.getSignatureResult());
|
||||||
|
|
||||||
|
OpenPgpMetadata metadata = result.getDecryptMetadata();
|
||||||
|
Assert.assertEquals("filesize must be correct",
|
||||||
|
out.toByteArray().length, metadata.getOriginalSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // decryption with passphrase cached should succeed for the first key
|
{ // decryption with passphrase cached should succeed for the first key
|
||||||
@ -411,6 +425,10 @@ public class PgpEncryptDecryptTest {
|
|||||||
out.toByteArray(), plaintext.getBytes());
|
out.toByteArray(), plaintext.getBytes());
|
||||||
Assert.assertEquals("signature should be verified and certified",
|
Assert.assertEquals("signature should be verified and certified",
|
||||||
OpenPgpSignatureResult.SIGNATURE_SUCCESS_CERTIFIED, result.getSignatureResult().getStatus());
|
OpenPgpSignatureResult.SIGNATURE_SUCCESS_CERTIFIED, result.getSignatureResult().getStatus());
|
||||||
|
|
||||||
|
OpenPgpMetadata metadata = result.getDecryptMetadata();
|
||||||
|
Assert.assertEquals("filesize must be correct",
|
||||||
|
out.toByteArray().length, metadata.getOriginalSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
{ // decryption with passphrase cached should succeed for the other key if first is gone
|
{ // decryption with passphrase cached should succeed for the other key if first is gone
|
||||||
|
@ -555,6 +555,7 @@ public abstract class OperationResult implements Parcelable {
|
|||||||
MSG_DC_CLEAR_META_FILE (LogLevel.DEBUG, R.string.msg_dc_clear_meta_file),
|
MSG_DC_CLEAR_META_FILE (LogLevel.DEBUG, R.string.msg_dc_clear_meta_file),
|
||||||
MSG_DC_CLEAR_META_MIME (LogLevel.DEBUG, R.string.msg_dc_clear_meta_mime),
|
MSG_DC_CLEAR_META_MIME (LogLevel.DEBUG, R.string.msg_dc_clear_meta_mime),
|
||||||
MSG_DC_CLEAR_META_SIZE (LogLevel.DEBUG, R.string.msg_dc_clear_meta_size),
|
MSG_DC_CLEAR_META_SIZE (LogLevel.DEBUG, R.string.msg_dc_clear_meta_size),
|
||||||
|
MSG_DC_CLEAR_META_SIZE_UNKNOWN (LogLevel.DEBUG, R.string.msg_dc_clear_meta_size_unknown),
|
||||||
MSG_DC_CLEAR_META_TIME (LogLevel.DEBUG, R.string.msg_dc_clear_meta_time),
|
MSG_DC_CLEAR_META_TIME (LogLevel.DEBUG, R.string.msg_dc_clear_meta_time),
|
||||||
MSG_DC_CLEAR (LogLevel.DEBUG, R.string.msg_dc_clear),
|
MSG_DC_CLEAR (LogLevel.DEBUG, R.string.msg_dc_clear),
|
||||||
MSG_DC_CLEAR_SIGNATURE_BAD (LogLevel.WARN, R.string.msg_dc_clear_signature_bad),
|
MSG_DC_CLEAR_SIGNATURE_BAD (LogLevel.WARN, R.string.msg_dc_clear_signature_bad),
|
||||||
|
@ -160,9 +160,6 @@ public class PgpDecryptVerify extends BaseOperation {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* If detachedSignature != null, it will be used exclusively to verify the signature
|
* If detachedSignature != null, it will be used exclusively to verify the signature
|
||||||
*
|
|
||||||
* @param detachedSignature
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
public Builder setDetachedSignature(byte[] detachedSignature) {
|
public Builder setDetachedSignature(byte[] detachedSignature) {
|
||||||
mDetachedSignature = detachedSignature;
|
mDetachedSignature = detachedSignature;
|
||||||
@ -540,12 +537,8 @@ public class PgpDecryptVerify extends BaseOperation {
|
|||||||
|
|
||||||
PGPLiteralData literalData = (PGPLiteralData) dataChunk;
|
PGPLiteralData literalData = (PGPLiteralData) dataChunk;
|
||||||
|
|
||||||
// TODO: how to get the real original size?
|
// reported size may be null if partial packets are involved (highly unlikely though)
|
||||||
// this is the encrypted size so if we enable compression this value is wrong!
|
Long originalSize = literalData.getDataLengthIfAvailable();
|
||||||
long originalSize = mData.getSize() - mData.getStreamPosition();
|
|
||||||
if (originalSize < 0) {
|
|
||||||
originalSize = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
String originalFilename = literalData.getFileName();
|
String originalFilename = literalData.getFileName();
|
||||||
String mimeType = null;
|
String mimeType = null;
|
||||||
@ -573,18 +566,20 @@ public class PgpDecryptVerify extends BaseOperation {
|
|||||||
originalFilename,
|
originalFilename,
|
||||||
mimeType,
|
mimeType,
|
||||||
literalData.getModificationTime().getTime(),
|
literalData.getModificationTime().getTime(),
|
||||||
originalSize);
|
originalSize == null ? 0 : originalSize);
|
||||||
|
|
||||||
if (!originalFilename.equals("")) {
|
if (!"".equals(originalFilename)) {
|
||||||
log.add(LogType.MSG_DC_CLEAR_META_FILE, indent + 1, originalFilename);
|
log.add(LogType.MSG_DC_CLEAR_META_FILE, indent + 1, originalFilename);
|
||||||
}
|
}
|
||||||
log.add(LogType.MSG_DC_CLEAR_META_MIME, indent + 1,
|
log.add(LogType.MSG_DC_CLEAR_META_MIME, indent + 1,
|
||||||
mimeType);
|
mimeType);
|
||||||
log.add(LogType.MSG_DC_CLEAR_META_TIME, indent + 1,
|
log.add(LogType.MSG_DC_CLEAR_META_TIME, indent + 1,
|
||||||
new Date(literalData.getModificationTime().getTime()).toString());
|
new Date(literalData.getModificationTime().getTime()).toString());
|
||||||
if (originalSize != 0) {
|
if (originalSize != null) {
|
||||||
log.add(LogType.MSG_DC_CLEAR_META_SIZE, indent + 1,
|
log.add(LogType.MSG_DC_CLEAR_META_SIZE, indent + 1,
|
||||||
Long.toString(originalSize));
|
Long.toString(originalSize));
|
||||||
|
} else {
|
||||||
|
log.add(LogType.MSG_DC_CLEAR_META_SIZE_UNKNOWN, indent + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return here if we want to decrypt the metadata only
|
// return here if we want to decrypt the metadata only
|
||||||
@ -633,9 +628,8 @@ public class PgpDecryptVerify extends BaseOperation {
|
|||||||
progress = 100;
|
progress = 100;
|
||||||
}
|
}
|
||||||
progressScaler.setProgress((int) progress, 100);
|
progressScaler.setProgress((int) progress, 100);
|
||||||
} else {
|
|
||||||
// TODO: slow annealing to fake a progress?
|
|
||||||
}
|
}
|
||||||
|
// TODO: slow annealing to fake a progress?
|
||||||
}
|
}
|
||||||
|
|
||||||
if (signature != null) {
|
if (signature != null) {
|
||||||
@ -851,9 +845,8 @@ public class PgpDecryptVerify extends BaseOperation {
|
|||||||
progress = 100;
|
progress = 100;
|
||||||
}
|
}
|
||||||
progressScaler.setProgress((int) progress, 100);
|
progressScaler.setProgress((int) progress, 100);
|
||||||
} else {
|
|
||||||
// TODO: slow annealing to fake a progress?
|
|
||||||
}
|
}
|
||||||
|
// TODO: slow annealing to fake a progress?
|
||||||
}
|
}
|
||||||
|
|
||||||
updateProgress(R.string.progress_verifying_signature, 90, 100);
|
updateProgress(R.string.progress_verifying_signature, 90, 100);
|
||||||
|
@ -935,6 +935,7 @@
|
|||||||
<string name="msg_dc_clear_meta_file">"Filename: %s"</string>
|
<string name="msg_dc_clear_meta_file">"Filename: %s"</string>
|
||||||
<string name="msg_dc_clear_meta_mime">"MIME type: %s"</string>
|
<string name="msg_dc_clear_meta_mime">"MIME type: %s"</string>
|
||||||
<string name="msg_dc_clear_meta_size">"Filesize: %s"</string>
|
<string name="msg_dc_clear_meta_size">"Filesize: %s"</string>
|
||||||
|
<string name="msg_dc_clear_meta_size_unknown">"Filesize is unknown"</string>
|
||||||
<string name="msg_dc_clear_meta_time">"Modification time: %s"</string>
|
<string name="msg_dc_clear_meta_time">"Modification time: %s"</string>
|
||||||
<string name="msg_dc_clear_signature_bad">"Signature check NOT OK!"</string>
|
<string name="msg_dc_clear_signature_bad">"Signature check NOT OK!"</string>
|
||||||
<string name="msg_dc_clear_signature_check">"Verifying signature data"</string>
|
<string name="msg_dc_clear_signature_check">"Verifying signature data"</string>
|
||||||
|
2
extern/spongycastle
vendored
2
extern/spongycastle
vendored
@ -1 +1 @@
|
|||||||
Subproject commit 26c232f31b62404ecb5d3ae3d2c1730fd0a0a0eb
|
Subproject commit 939914d9ffd1e8cc2710de6c600c9ccfc86aa545
|
Loading…
Reference in New Issue
Block a user