aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Doits <markus.doits@gmail.com>2010-12-29 12:11:25 +0000
committerMarkus Doits <markus.doits@gmail.com>2010-12-29 12:11:25 +0000
commit1edac5a61ee36d466daeb91dea86b4ff3c2a2ccf (patch)
tree41cf5a39ad4b4b07fb7dd94c80a727f42d4e5cb8
parent83a5d5f8f863d6df790b3fe5f406e5702b796183 (diff)
downloadopen-keychain-1edac5a61ee36d466daeb91dea86b4ff3c2a2ccf.tar.gz
open-keychain-1edac5a61ee36d466daeb91dea86b4ff3c2a2ccf.tar.bz2
open-keychain-1edac5a61ee36d466daeb91dea86b4ff3c2a2ccf.zip
Allow progress-meter to be null
No need to force people to use progressmeter
-rw-r--r--src/org/thialfihar/android/apg/Apg.java146
1 files changed, 96 insertions, 50 deletions
diff --git a/src/org/thialfihar/android/apg/Apg.java b/src/org/thialfihar/android/apg/Apg.java
index b7d327077..cf71185e1 100644
--- a/src/org/thialfihar/android/apg/Apg.java
+++ b/src/org/thialfihar/android/apg/Apg.java
@@ -400,7 +400,8 @@ public class Apg {
throws Apg.GeneralException, NoSuchProviderException, PGPException,
NoSuchAlgorithmException, SignatureException, IOException, Database.GeneralException {
- progress.setProgress(R.string.progress_buildingKey, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_buildingKey, 0, 100);
Security.addProvider(new BouncyCastleProvider());
@@ -461,7 +462,8 @@ public class Apg {
keys.add(editor.getValue());
}
- progress.setProgress(R.string.progress_preparingMasterKey, 10, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingMasterKey, 10, 100);
KeyEditor keyEditor = (KeyEditor) keyEditors.getChildAt(0);
int usageId = keyEditor.getUsage();
boolean canSign = (usageId == Id.choice.usage.sign_only ||
@@ -481,7 +483,8 @@ public class Apg {
masterKey.extractPrivateKey(oldPassPhrase.toCharArray(),
new BouncyCastleProvider());
- progress.setProgress(R.string.progress_certifyingMasterKey, 20, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_certifyingMasterKey, 20, 100);
for (int i = 0; i < userIds.size(); ++i) {
String userId = userIds.get(i);
@@ -525,7 +528,8 @@ public class Apg {
hashedPacketsGen.setKeyExpirationTime(true, numDays * 86400);
}
- progress.setProgress(R.string.progress_buildingMasterKeyRing, 30, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_buildingMasterKeyRing, 30, 100);
PGPKeyRingGenerator keyGen =
new PGPKeyRingGenerator(PGPSignature.POSITIVE_CERTIFICATION,
masterKeyPair, mainUserId,
@@ -533,9 +537,11 @@ public class Apg {
hashedPacketsGen.generate(), unhashedPacketsGen.generate(),
new SecureRandom(), new BouncyCastleProvider().getName());
- progress.setProgress(R.string.progress_addingSubKeys, 40, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_addingSubKeys, 40, 100);
for (int i = 1; i < keys.size(); ++i) {
- progress.setProgress(40 + 50 * (i - 1)/ (keys.size() - 1), 100);
+ if( progress != null )
+ progress.setProgress(40 + 50 * (i - 1)/ (keys.size() - 1), 100);
PGPSecretKey subKey = keys.get(i);
keyEditor = (KeyEditor) keyEditors.getChildAt(i);
PGPPublicKey subPublicKey = subKey.getPublicKey();
@@ -584,11 +590,13 @@ public class Apg {
PGPSecretKeyRing secretKeyRing = keyGen.generateSecretKeyRing();
PGPPublicKeyRing publicKeyRing = keyGen.generatePublicKeyRing();
- progress.setProgress(R.string.progress_savingKeyRing, 90, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_savingKeyRing, 90, 100);
mDatabase.saveKeyRing(secretKeyRing);
mDatabase.saveKeyRing(publicKeyRing);
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
}
public static Bundle importKeyRings(Activity context, int type,
@@ -598,9 +606,11 @@ public class Apg {
Bundle returnData = new Bundle();
if (type == Id.type.secret_key) {
- progress.setProgress(R.string.progress_importingSecretKeys, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_importingSecretKeys, 0, 100);
} else {
- progress.setProgress(R.string.progress_importingPublicKeys, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_importingPublicKeys, 0, 100);
}
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
@@ -671,7 +681,8 @@ public class Apg {
} else if (retValue == Id.return_value.bad) {
++badKeys;
}
- progress.setProgress((int)(100 * progressIn.position() / data.getSize()), 100);
+ if( progress != null )
+ progress.setProgress((int)(100 * progressIn.position() / data.getSize()), 100);
obj = objectFactory.nextObject();
}
}
@@ -683,7 +694,8 @@ public class Apg {
returnData.putInt("updated", oldKeys);
returnData.putInt("bad", badKeys);
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
return returnData;
}
@@ -695,9 +707,11 @@ public class Apg {
Bundle returnData = new Bundle();
if (keyRingIds.size() == 1) {
- progress.setProgress(R.string.progress_exportingKey, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_exportingKey, 0, 100);
} else {
- progress.setProgress(R.string.progress_exportingKeys, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_exportingKeys, 0, 100);
}
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
@@ -707,7 +721,8 @@ public class Apg {
int numKeys = 0;
for (int i = 0; i < keyRingIds.size(); ++i) {
- progress.setProgress(i * 100 / keyRingIds.size(), 100);
+ if( progress != null )
+ progress.setProgress(i * 100 / keyRingIds.size(), 100);
Object obj = mDatabase.getKeyRing(keyRingIds.get(i));
PGPPublicKeyRing publicKeyRing;
PGPSecretKeyRing secretKeyRing;
@@ -726,7 +741,8 @@ public class Apg {
out.close();
returnData.putInt("exported", numKeys);
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
return returnData;
}
@@ -1236,15 +1252,16 @@ public class Apg {
if (signaturePassPhrase == null) {
throw new GeneralException(context.getString(R.string.error_noSignaturePassPhrase));
}
- progress.setProgress(R.string.progress_extractingSignatureKey, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_extractingSignatureKey, 0, 100);
signaturePrivateKey = signingKey.extractPrivateKey(signaturePassPhrase.toCharArray(),
new BouncyCastleProvider());
if (signaturePrivateKey == null) {
throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey));
}
}
-
- progress.setProgress(R.string.progress_preparingStreams, 5, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingStreams, 5, 100);
// encrypt and compress input file content
PGPEncryptedDataGenerator cPk =
new PGPEncryptedDataGenerator(symmetricAlgorithm, true, new SecureRandom(),
@@ -1266,7 +1283,8 @@ public class Apg {
PGPV3SignatureGenerator signatureV3Generator = null;
if (signatureKeyId != 0) {
- progress.setProgress(R.string.progress_preparingSignature, 10, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingSignature, 10, 100);
if (forceV3Signature) {
signatureV3Generator =
new PGPV3SignatureGenerator(signingKey.getPublicKey().getAlgorithm(),
@@ -1307,8 +1325,8 @@ public class Apg {
// file name not needed, so empty string
OutputStream pOut = literalGen.open(bcpgOut, PGPLiteralData.BINARY, "",
new Date(), new byte[1 << 16]);
-
- progress.setProgress(R.string.progress_encrypting, 20, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_encrypting, 20, 100);
long done = 0;
int n = 0;
byte[] buffer = new byte[1 << 16];
@@ -1324,14 +1342,16 @@ public class Apg {
}
done += n;
if (data.getSize() != 0) {
- progress.setProgress((int) (20 + (95 - 20) * done / data.getSize()), 100);
+ if( progress != null )
+ progress.setProgress((int) (20 + (95 - 20) * done / data.getSize()), 100);
}
}
literalGen.close();
if (signatureKeyId != 0) {
- progress.setProgress(R.string.progress_generatingSignature, 95, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_generatingSignature, 95, 100);
if (forceV3Signature) {
signatureV3Generator.generate().encode(pOut);
} else {
@@ -1346,7 +1366,8 @@ public class Apg {
armorOut.close();
}
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
}
public static void signText(Context context,
@@ -1385,9 +1406,11 @@ public class Apg {
if (signaturePrivateKey == null) {
throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey));
}
- progress.setProgress(R.string.progress_preparingStreams, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingStreams, 0, 100);
- progress.setProgress(R.string.progress_preparingSignature, 30, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingSignature, 30, 100);
PGPSignatureGenerator signatureGenerator = null;
PGPV3SignatureGenerator signatureV3Generator = null;
@@ -1411,7 +1434,8 @@ public class Apg {
signatureGenerator.setHashedSubpackets(spGen.generate());
}
- progress.setProgress(R.string.progress_signing, 40, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_signing, 40, 100);
armorOut.beginClearText(hashAlgorithm);
@@ -1454,7 +1478,8 @@ public class Apg {
}
armorOut.close();
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
}
public static void generateSignature(Context context,
@@ -1501,9 +1526,11 @@ public class Apg {
if (signaturePrivateKey == null) {
throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey));
}
- progress.setProgress(R.string.progress_preparingStreams, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingStreams, 0, 100);
- progress.setProgress(R.string.progress_preparingSignature, 30, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingSignature, 30, 100);
PGPSignatureGenerator signatureGenerator = null;
PGPV3SignatureGenerator signatureV3Generator = null;
@@ -1532,7 +1559,8 @@ public class Apg {
signatureGenerator.setHashedSubpackets(spGen.generate());
}
- progress.setProgress(R.string.progress_signing, 40, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_signing, 40, 100);
InputStream inStream = data.getInputStream();
if (binary) {
@@ -1575,7 +1603,8 @@ public class Apg {
out.close();
outStream.close();
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
}
public static long getDecryptionKeyId(Context context, InputData data)
@@ -1669,7 +1698,8 @@ public class Apg {
long signatureKeyId = 0;
int currentProgress = 0;
- progress.setProgress(R.string.progress_readingData, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_readingData, currentProgress, 100);
if (o instanceof PGPEncryptedDataList) {
enc = (PGPEncryptedDataList) o;
@@ -1704,12 +1734,14 @@ public class Apg {
throw new GeneralException(context.getString(R.string.error_noSymmetricEncryptionPacket));
}
- progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100);
clear = pbe.getDataStream(passPhrase.toCharArray(), new BouncyCastleProvider());
encryptedData = pbe;
currentProgress += 5;
} else {
- progress.setProgress(R.string.progress_findingKey, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_findingKey, currentProgress, 100);
PGPPublicKeyEncryptedData pbe = null;
PGPSecretKey secretKey = null;
Iterator it = enc.getEncryptedDataObjects();
@@ -1731,7 +1763,8 @@ public class Apg {
}
currentProgress += 5;
- progress.setProgress(R.string.progress_extractingKey, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_extractingKey, currentProgress, 100);
PGPPrivateKey privateKey = null;
try {
privateKey = secretKey.extractPrivateKey(passPhrase.toCharArray(),
@@ -1743,7 +1776,8 @@ public class Apg {
throw new GeneralException(context.getString(R.string.error_couldNotExtractPrivateKey));
}
currentProgress += 5;
- progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_preparingStreams, currentProgress, 100);
clear = pbe.getDataStream(privateKey, new BouncyCastleProvider());
encryptedData = pbe;
currentProgress += 5;
@@ -1756,7 +1790,8 @@ public class Apg {
int signatureIndex = -1;
if (dataChunk instanceof PGPCompressedData) {
- progress.setProgress(R.string.progress_decompressingData, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_decompressingData, currentProgress, 100);
PGPObjectFactory fact =
new PGPObjectFactory(((PGPCompressedData) dataChunk).getDataStream());
dataChunk = fact.nextObject();
@@ -1765,7 +1800,8 @@ public class Apg {
}
if (dataChunk instanceof PGPOnePassSignatureList) {
- progress.setProgress(R.string.progress_processingSignature, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_processingSignature, currentProgress, 100);
returnData.putBoolean(EXTRA_SIGNATURE, true);
PGPOnePassSignatureList sigList = (PGPOnePassSignatureList) dataChunk;
for (int i = 0; i < sigList.size(); ++i) {
@@ -1802,7 +1838,8 @@ public class Apg {
}
if (dataChunk instanceof PGPLiteralData) {
- progress.setProgress(R.string.progress_decrypting, currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_decrypting, currentProgress, 100);
PGPLiteralData literalData = (PGPLiteralData) dataChunk;
OutputStream out = outStream;
@@ -1838,11 +1875,13 @@ public class Apg {
currentProgress = (int)(startProgress + (endProgress - startProgress) *
(data.getStreamPosition() - startPos) / (data.getSize() - startPos));
}
- progress.setProgress(currentProgress, 100);
+ if( progress != null )
+ progress.setProgress(currentProgress, 100);
}
if (signature != null) {
- progress.setProgress(R.string.progress_verifyingSignature, 90, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_verifyingSignature, 90, 100);
PGPSignatureList signatureList = (PGPSignatureList) plainFact.nextObject();
PGPSignature messageSignature = (PGPSignature) signatureList.get(signatureIndex);
if (signature.verify(messageSignature)) {
@@ -1855,7 +1894,8 @@ public class Apg {
// TODO: add integrity somewhere
if (encryptedData.isIntegrityProtected()) {
- progress.setProgress(R.string.progress_verifyingIntegrity, 95, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_verifyingIntegrity, 95, 100);
if (encryptedData.verify()) {
// passed
} else {
@@ -1865,7 +1905,8 @@ public class Apg {
// no integrity check
}
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
return returnData;
}
@@ -1878,7 +1919,8 @@ public class Apg {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ArmoredInputStream aIn = new ArmoredInputStream(data.getInputStream());
- progress.setProgress(R.string.progress_done, 0, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 0, 100);
// mostly taken from ClearSignedFileProcessor
ByteArrayOutputStream lineOut = new ByteArrayOutputStream();
@@ -1903,7 +1945,8 @@ public class Apg {
returnData.putBoolean(EXTRA_SIGNATURE, true);
- progress.setProgress(R.string.progress_processingSignature, 60, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_processingSignature, 60, 100);
PGPObjectFactory pgpFact = new PGPObjectFactory(aIn);
PGPSignatureList sigList = (PGPSignatureList) pgpFact.nextObject();
@@ -1950,7 +1993,8 @@ public class Apg {
if (signature == null) {
returnData.putBoolean(EXTRA_SIGNATURE_UNKNOWN, true);
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
return returnData;
}
@@ -1976,7 +2020,8 @@ public class Apg {
returnData.putBoolean(EXTRA_SIGNATURE_SUCCESS, signature.verify());
- progress.setProgress(R.string.progress_done, 100, 100);
+ if( progress != null )
+ progress.setProgress(R.string.progress_done, 100, 100);
return returnData;
}
@@ -2234,7 +2279,8 @@ public class Apg {
int pos = 0;
String msg = context.getString(R.string.progress_deletingSecurely, file.getName());
while (pos < length) {
- progress.setProgress(msg, (int)(100 * pos / length), 100);
+ if( progress != null )
+ progress.setProgress(msg, (int)(100 * pos / length), 100);
random.nextBytes(data);
raf.write(data);
pos += data.length;