Ignore PGP signatures with invalid version
3 files changed, 18 insertions, 2 deletions
diff --git a/crypto/src/bcpg/BcpgInputStream.cs b/crypto/src/bcpg/BcpgInputStream.cs
index 3dba953ea..38b5382ad 100644
--- a/crypto/src/bcpg/BcpgInputStream.cs
+++ b/crypto/src/bcpg/BcpgInputStream.cs
@@ -196,7 +196,7 @@ namespace Org.BouncyCastle.Bcpg
else
{
PartialInputStream pis = new PartialInputStream(this, partial, bodyLen);
- objStream = new BcpgInputStream(pis);
+ objStream = new BcpgInputStream(new BufferedStream(pis));
}
switch (tag)
diff --git a/crypto/src/bcpg/SignaturePacket.cs b/crypto/src/bcpg/SignaturePacket.cs
index 70138d584..9a664f902 100644
--- a/crypto/src/bcpg/SignaturePacket.cs
+++ b/crypto/src/bcpg/SignaturePacket.cs
@@ -5,6 +5,7 @@ using System.IO;
using Org.BouncyCastle.Bcpg.Sig;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.Date;
+using Org.BouncyCastle.Utilities.IO;
namespace Org.BouncyCastle.Bcpg
{
@@ -121,7 +122,9 @@ namespace Org.BouncyCastle.Bcpg
}
else
{
- throw new Exception("unsupported version: " + version);
+ Streams.Drain(bcpgIn);
+
+ throw new UnsupportedPacketVersionException("unsupported version: " + version);
}
fingerprint = new byte[2];
diff --git a/crypto/src/bcpg/UnsupportedPacketVersionException.cs b/crypto/src/bcpg/UnsupportedPacketVersionException.cs
new file mode 100644
index 000000000..447d75286
--- /dev/null
+++ b/crypto/src/bcpg/UnsupportedPacketVersionException.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace Org.BouncyCastle.Bcpg
+{
+ public class UnsupportedPacketVersionException
+ : Exception
+ {
+ public UnsupportedPacketVersionException(string msg)
+ : base(msg)
+ {
+ }
+ }
+}
|