mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-11-22 12:22:06 +01:00
Fix detection of non-armored data
This commit is contained in:
parent
78269e0294
commit
cf1881a140
1 changed files with 19 additions and 15 deletions
|
@ -122,23 +122,23 @@ public final class DecryptionStreamFactory {
|
||||||
private DecryptionStream parseOpenPGPDataAndCreateDecryptionStream(InputStream inputStream) throws IOException, PGPException {
|
private DecryptionStream parseOpenPGPDataAndCreateDecryptionStream(InputStream inputStream) throws IOException, PGPException {
|
||||||
// Make sure we handle armored and non-armored data properly
|
// Make sure we handle armored and non-armored data properly
|
||||||
BufferedInputStream bufferedIn = new BufferedInputStream(inputStream);
|
BufferedInputStream bufferedIn = new BufferedInputStream(inputStream);
|
||||||
InputStream decoderStream = PGPUtilWrapper.getDecoderStream(bufferedIn);
|
InputStream decoderStream;
|
||||||
|
PGPObjectFactory objectFactory;
|
||||||
decoderStream = CRCingArmoredInputStreamWrapper.possiblyWrap(decoderStream);
|
|
||||||
|
|
||||||
if (decoderStream instanceof ArmoredInputStream) {
|
|
||||||
ArmoredInputStream armor = (ArmoredInputStream) decoderStream;
|
|
||||||
|
|
||||||
if (armor.isClearText()) {
|
|
||||||
throw new WrongConsumingMethodException("Message appears to be using the Cleartext Signature Framework. " +
|
|
||||||
"Use PGPainless.verifyCleartextSignedMessage() to verify this message instead.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PGPObjectFactory objectFactory = new PGPObjectFactory(
|
|
||||||
decoderStream, keyFingerprintCalculator);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
decoderStream = PGPUtilWrapper.getDecoderStream(bufferedIn);
|
||||||
|
decoderStream = CRCingArmoredInputStreamWrapper.possiblyWrap(decoderStream);
|
||||||
|
|
||||||
|
if (decoderStream instanceof ArmoredInputStream) {
|
||||||
|
ArmoredInputStream armor = (ArmoredInputStream) decoderStream;
|
||||||
|
|
||||||
|
if (armor.isClearText()) {
|
||||||
|
throw new WrongConsumingMethodException("Message appears to be using the Cleartext Signature Framework. " +
|
||||||
|
"Use PGPainless.verifyCleartextSignedMessage() to verify this message instead.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
objectFactory = new PGPObjectFactory(decoderStream, keyFingerprintCalculator);
|
||||||
// Parse OpenPGP message
|
// Parse OpenPGP message
|
||||||
inputStream = processPGPPackets(objectFactory, 1);
|
inputStream = processPGPPackets(objectFactory, 1);
|
||||||
} catch (EOFException e) {
|
} catch (EOFException e) {
|
||||||
|
@ -149,12 +149,16 @@ public final class DecryptionStreamFactory {
|
||||||
// to allow for detached signature verification.
|
// to allow for detached signature verification.
|
||||||
LOGGER.debug("The message appears to not be an OpenPGP message. This is probably data signed with detached signatures?");
|
LOGGER.debug("The message appears to not be an OpenPGP message. This is probably data signed with detached signatures?");
|
||||||
bufferedIn.reset();
|
bufferedIn.reset();
|
||||||
|
decoderStream = bufferedIn;
|
||||||
|
objectFactory = new PGPObjectFactory(decoderStream, keyFingerprintCalculator);
|
||||||
inputStream = wrapInVerifySignatureStream(bufferedIn, objectFactory);
|
inputStream = wrapInVerifySignatureStream(bufferedIn, objectFactory);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (e.getMessage().contains("invalid armor") || e.getMessage().contains("invalid header encountered")) {
|
if (e.getMessage().contains("invalid armor") || e.getMessage().contains("invalid header encountered")) {
|
||||||
// We falsely assumed the data to be armored.
|
// We falsely assumed the data to be armored.
|
||||||
LOGGER.debug("The message is apparently not armored.");
|
LOGGER.debug("The message is apparently not armored.");
|
||||||
bufferedIn.reset();
|
bufferedIn.reset();
|
||||||
|
decoderStream = bufferedIn;
|
||||||
|
objectFactory = new PGPObjectFactory(decoderStream, keyFingerprintCalculator);
|
||||||
inputStream = wrapInVerifySignatureStream(bufferedIn, objectFactory);
|
inputStream = wrapInVerifySignatureStream(bufferedIn, objectFactory);
|
||||||
} else {
|
} else {
|
||||||
throw e;
|
throw e;
|
||||||
|
|
Loading…
Reference in a new issue