Code cleanup
1 files changed, 11 insertions, 22 deletions
diff --git a/crypto/src/asn1/DerApplicationSpecific.cs b/crypto/src/asn1/DerApplicationSpecific.cs
index 52467fabe..a2d57bf9d 100644
--- a/crypto/src/asn1/DerApplicationSpecific.cs
+++ b/crypto/src/asn1/DerApplicationSpecific.cs
@@ -199,38 +199,27 @@ namespace Org.BouncyCastle.Asn1
{
int tagNo = input[0] & 0x1f;
int index = 1;
- //
- // with tagged object tag number is bottom 5 bits, or stored at the start of the content
- //
+
+ // with tagged object tag number is bottom 5 bits, or stored at the start of the content
if (tagNo == 0x1f)
{
- tagNo = 0;
-
- int b = input[index++] & 0xff;
+ int b = input[index++];
- // X.690-0207 8.1.2.4.2
+ // X.690-0207 8.1.2.4.2
// "c) bits 7 to 1 of the first subsequent octet shall not all be zero."
if ((b & 0x7f) == 0) // Note: -1 will pass
- {
- throw new InvalidOperationException("corrupted stream - invalid high tag number found");
- }
+ throw new IOException("corrupted stream - invalid high tag number found");
- while ((b >= 0) && ((b & 0x80) != 0))
+ while ((b & 0x80) != 0)
{
- tagNo |= (b & 0x7f);
- tagNo <<= 7;
- b = input[index++] & 0xff;
+ b = input[index++];
}
-
- tagNo |= (b & 0x7f);
}
- byte[] tmp = new byte[input.Length - index + 1];
-
- Array.Copy(input, index, tmp, 1, tmp.Length - 1);
-
- tmp[0] = (byte)newTag;
-
+ int remaining = input.Length - index;
+ byte[] tmp = new byte[1 + remaining];
+ tmp[0] = (byte)newTag;
+ Array.Copy(input, index, tmp, 1, remaining);
return tmp;
}
}
|