| package org.bouncycastle.asn1.test; |
| |
| import java.io.IOException; |
| |
| import org.bouncycastle.asn1.ASN1InputStream; |
| import org.bouncycastle.util.test.SimpleTest; |
| |
| public class InputStreamTest |
| extends SimpleTest |
| { |
| private static final byte[] outOfBoundsLength = new byte[] { (byte)0x30, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff }; |
| private static final byte[] negativeLength = new byte[] { (byte)0x30, (byte)0x84, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff }; |
| private static final byte[] outsideLimitLength = new byte[] { (byte)0x30, (byte)0x83, (byte)0x0f, (byte)0xff, (byte)0xff }; |
| |
| |
| public String getName() |
| { |
| return "InputStream"; |
| } |
| |
| public void performTest() |
| throws Exception |
| { |
| ASN1InputStream aIn = new ASN1InputStream(outOfBoundsLength); |
| |
| try |
| { |
| aIn.readObject(); |
| fail("out of bounds length not detected."); |
| } |
| catch (IOException e) |
| { |
| if (!e.getMessage().startsWith("DER length more than 4 bytes")) |
| { |
| fail("wrong exception: " + e.getMessage()); |
| } |
| } |
| |
| aIn = new ASN1InputStream(negativeLength); |
| |
| try |
| { |
| aIn.readObject(); |
| fail("negative length not detected."); |
| } |
| catch (IOException e) |
| { |
| if (!e.getMessage().equals("corrupted stream - negative length found")) |
| { |
| fail("wrong exception: " + e.getMessage()); |
| } |
| } |
| |
| aIn = new ASN1InputStream(outsideLimitLength); |
| |
| try |
| { |
| aIn.readObject(); |
| fail("outside limit length not detected."); |
| } |
| catch (IOException e) |
| { |
| if (!e.getMessage().equals("corrupted stream - out of bounds length found")) |
| { |
| fail("wrong exception: " + e.getMessage()); |
| } |
| } |
| } |
| |
| public static void main( |
| String[] args) |
| { |
| runTest(new InputStreamTest()); |
| } |
| } |