pgpdecryptverify: only use keys for verification which are allowed to sign (OKC-01-013)

This commit is contained in:
Vincent Breitmoser
2015-10-08 20:01:04 +02:00
parent 084d6f1d3d
commit ba9b8f3a60

View File

@@ -132,8 +132,12 @@ class PgpSignatureChecker {
CanonicalizedPublicKeyRing signingRing = mProviderHelper.getCanonicalizedPublicKeyRing( CanonicalizedPublicKeyRing signingRing = mProviderHelper.getCanonicalizedPublicKeyRing(
KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(sigKeyId) KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(sigKeyId)
); );
CanonicalizedPublicKey keyCandidate = signingRing.getPublicKey(sigKeyId);
if ( ! signingKey.canSign()) {
continue;
}
signatureIndex = i; signatureIndex = i;
signingKey = signingRing.getPublicKey(sigKeyId); signingKey = keyCandidate;
onePassSignature = sigList.get(i); onePassSignature = sigList.get(i);
return; return;
} catch (ProviderHelper.NotFoundException e) { } catch (ProviderHelper.NotFoundException e) {
@@ -151,8 +155,12 @@ class PgpSignatureChecker {
CanonicalizedPublicKeyRing signingRing = mProviderHelper.getCanonicalizedPublicKeyRing( CanonicalizedPublicKeyRing signingRing = mProviderHelper.getCanonicalizedPublicKeyRing(
KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(sigKeyId) KeyRings.buildUnifiedKeyRingsFindBySubkeyUri(sigKeyId)
); );
CanonicalizedPublicKey keyCandidate = signingRing.getPublicKey(sigKeyId);
if ( ! signingKey.canSign()) {
continue;
}
signatureIndex = i; signatureIndex = i;
signingKey = signingRing.getPublicKey(sigKeyId); signingKey = keyCandidate;
signature = sigList.get(i); signature = sigList.get(i);
return; return;
} catch (ProviderHelper.NotFoundException e) { } catch (ProviderHelper.NotFoundException e) {