modifyKey: error out on integrity check fails

This commit is contained in:
Vincent Breitmoser 2014-07-12 02:02:37 +02:00
parent ed0aec57bf
commit f82093c666
2 changed files with 18 additions and 10 deletions

View File

@ -188,14 +188,14 @@ public class PgpKeyOperation {
return null;
}
PGPKeyPair keyPair = createKey(add.mAlgorithm, add.mKeysize, log, indent);
if (add.mAlgorithm == Constants.choice.algorithm.elgamal) {
log.add(LogLevel.ERROR, LogType.MSG_CR_ERROR_MASTER_ELGAMAL, indent);
return null;
}
// return null if this failed (it will already have been logged by createKey)
PGPKeyPair keyPair = createKey(add.mAlgorithm, add.mKeysize, log, indent);
// return null if this failed (an error will already have been logged by createKey)
if (keyPair == null) {
return null;
}
@ -319,9 +319,10 @@ public class PgpKeyOperation {
Iterator<PGPSignature> it = modifiedPublicKey.getSignaturesForID(userId);
if (it != null) {
for (PGPSignature cert : new IterableIterator<PGPSignature>(it)) {
// if it's not a self cert, never mind
if (cert.getKeyID() != masterPublicKey.getKeyID()) {
continue;
// foreign certificate?! error error error
log.add(LogLevel.ERROR, LogType.MSG_MF_ERROR_INTEGRITY, indent);
return null;
}
if (cert.getSignatureType() == PGPSignature.CERTIFICATION_REVOCATION
|| cert.getSignatureType() == PGPSignature.NO_CERTIFICATION
@ -369,9 +370,10 @@ public class PgpKeyOperation {
// noinspection unchecked
for (PGPSignature cert : new IterableIterator<PGPSignature>(
modifiedPublicKey.getSignaturesForID(userId))) {
// if it's not a self cert, never mind
if (cert.getKeyID() != masterPublicKey.getKeyID()) {
continue;
// foreign certificate?! error error error
log.add(LogLevel.ERROR, LogType.MSG_MF_ERROR_INTEGRITY, indent);
return null;
}
// we know from canonicalization that if there is any revocation here, it
// is valid and not superseded by a newer certification.

View File

@ -39,15 +39,21 @@ public class ProgressScaler implements Progressable {
* Set progress of ProgressDialog by sending message to handler on UI thread
*/
public void setProgress(String message, int progress, int max) {
mWrapped.setProgress(message, mFrom + progress * (mTo - mFrom) / max, mMax);
if (mWrapped != null) {
mWrapped.setProgress(message, mFrom + progress * (mTo - mFrom) / max, mMax);
}
}
public void setProgress(int resourceId, int progress, int max) {
mWrapped.setProgress(resourceId, progress, mMax);
if (mWrapped != null) {
mWrapped.setProgress(resourceId, progress, mMax);
}
}
public void setProgress(int progress, int max) {
mWrapped.setProgress(progress, max);
if (mWrapped != null) {
mWrapped.setProgress(progress, max);
}
}
}