summary refs log tree commit diff
path: root/crypto/src/bcpg
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2021-10-14 01:05:16 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2021-10-14 01:05:16 +0700
commit1b15bfc5d4b7e478887f5202c74e563382ffa2d9 (patch)
treef4eedff7c22b12b5a9ad5b1ef474159505aa09f7 /crypto/src/bcpg
parentImprove ASN.1 set special handling (diff)
downloadBouncyCastle.NET-ed25519-1b15bfc5d4b7e478887f5202c74e563382ffa2d9.tar.xz
Ignore PGP signatures with invalid version
Diffstat (limited to 'crypto/src/bcpg')
-rw-r--r--crypto/src/bcpg/BcpgInputStream.cs2
-rw-r--r--crypto/src/bcpg/SignaturePacket.cs5
-rw-r--r--crypto/src/bcpg/UnsupportedPacketVersionException.cs13
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)
+        {
+        }
+    }
+}