From 1bd5343e71b7ebd09aabaebba282227a7786e5ba Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 25 Dec 2015 20:16:23 -0600 Subject: Add length check with test --- .../trilead/ssh2/crypto/SimpleDERReaderTest.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java (limited to 'sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java') diff --git a/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java b/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java new file mode 100644 index 0000000..3eaec20 --- /dev/null +++ b/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java @@ -0,0 +1,67 @@ +package com.trilead.ssh2.crypto; + +import org.junit.Test; + +import java.io.IOException; + +import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.*; + +/** + * Created by kenny on 12/25/15. + */ +public class SimpleDERReaderTest { + @Test + public void readLength_Extended_OverlyLongLength() throws Exception { + byte[] vector = new byte[] { + (byte) 0x85, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(-1, reader.readLength()); + } + + @Test + public void readLength_Extended_TooLongForInt() throws Exception { + byte[] vector = new byte[] { + (byte) 0x84, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(-1, reader.readLength()); + } + + @Test + public void readLength_Extended_Zero() throws Exception { + byte[] vector = new byte[] { + (byte) 0x80, (byte) 0x01 + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(-1, reader.readLength()); + } + + @Test + public void readLength_Extended_Valid() throws Exception { + byte[] vector = new byte[] { + (byte) 0x82, (byte) 0x05, (byte) 0xFF + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(0x5FF, reader.readLength()); + } + + @Test + public void readLength_Short_Zero() throws Exception { + byte[] vector = new byte[] { + (byte) 0x00 + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(0, reader.readLength()); + } + + @Test + public void readLength_Short_Regular() throws Exception { + byte[] vector = new byte[] { + (byte) 0x09 + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(9, reader.readLength()); + } +} \ No newline at end of file -- cgit v1.2.3 From d60c23560bd0464b2f8862f43711781eb45eac49 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 25 Dec 2015 20:41:18 -0600 Subject: Add tests for readInt --- .../trilead/ssh2/crypto/SimpleDERReaderTest.java | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java') diff --git a/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java b/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java index 3eaec20..cabadce 100644 --- a/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java +++ b/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java @@ -3,6 +3,7 @@ package com.trilead.ssh2.crypto; import org.junit.Test; import java.io.IOException; +import java.math.BigInteger; import static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*; @@ -64,4 +65,51 @@ public class SimpleDERReaderTest { SimpleDERReader reader = new SimpleDERReader(vector); assertEquals(9, reader.readLength()); } + + @Test + public void readInt_MaxInt() throws Exception { + byte[] vector = new byte[] { + (byte) 0x02, (byte) 0x04, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals(BigInteger.valueOf(0xFFFFFFFF), reader.readInt()); + } + + @Test + public void readInt_NotReallyInteger() throws Exception { + byte[] vector = new byte[] { + (byte) 0x01, (byte) 0x04, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, + }; + SimpleDERReader reader = new SimpleDERReader(vector); + try { + reader.readInt(); + } catch (IOException expected) { + assertThat(expected.getMessage(), containsString("Expected DER Integer")); + } + } + + @Test + public void readInt_InvalidLength() throws Exception { + byte[] vector = new byte[] { + (byte) 0x02, (byte) 0x80, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, + }; + SimpleDERReader reader = new SimpleDERReader(vector); + try { + reader.readInt(); + } catch (IOException expected) { + assertThat(expected.getMessage(), containsString("Illegal len")); + } + } + + @Test + public void readInt_ShortArray() throws Exception { + byte[] vector = new byte[] { + (byte) 0x02, (byte) 0x02, (byte) 0xFF + }; + SimpleDERReader reader = new SimpleDERReader(vector); + try { + reader.readInt(); + } catch (IOException expected) { + } + } } \ No newline at end of file -- cgit v1.2.3 From 93e998a377cf6bd4098ec38e99d6c191e274c3a9 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 25 Dec 2015 22:58:09 -0600 Subject: Add unit tests for readOid --- .../trilead/ssh2/crypto/SimpleDERReaderTest.java | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java') diff --git a/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java b/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java index cabadce..6a97218 100644 --- a/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java +++ b/sshlib/src/test/java/com/trilead/ssh2/crypto/SimpleDERReaderTest.java @@ -112,4 +112,76 @@ public class SimpleDERReaderTest { } catch (IOException expected) { } } + + @Test + public void readOid_InvalidLength() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x02, (byte) 0x80, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, + }; + SimpleDERReader reader = new SimpleDERReader(vector); + try { + reader.readOid(); + } catch (IOException expected) { + } + } + + @Test + public void readOid_TooShort() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x02, (byte) 0x00 + }; + SimpleDERReader reader = new SimpleDERReader(vector); + try { + reader.readOid(); + } catch (IOException expected) { + } + } + + @Test + public void readOid_NotOidValue() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x02, (byte) 0x04, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, + }; + SimpleDERReader reader = new SimpleDERReader(vector); + try { + reader.readOid(); + } catch (IOException expected) { + } + } + + @Test + public void readOid_Valid1() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x06, (byte) 0x01, (byte) 0x28 + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals("1.0", reader.readOid()); + } + + @Test + public void readOid_Valid1Prefix() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x0b + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals("1.2.840.113549.1.1.11", reader.readOid()); + } + + @Test + public void readOid_Valid0Prefix() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x06, (byte) 0x0A, (byte) 0x09, (byte) 0x92, (byte) 0x26, (byte) 0x89, (byte) 0x93, (byte) 0xF2, (byte) 0x2C, (byte) 0x64, (byte) 0x04, (byte) 0x0D + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals("0.9.2342.19200300.100.4.13", reader.readOid()); + } + + @Test + public void readOid_Valid2Prefix() throws Exception { + byte[] vector = new byte[]{ + (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1D, (byte) 0x0E + }; + SimpleDERReader reader = new SimpleDERReader(vector); + assertEquals("2.5.29.14", reader.readOid()); + } } \ No newline at end of file -- cgit v1.2.3