summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasey Marshall <csm@gnu.org>2006-06-11 07:23:24 +0000
committerCasey Marshall <csm@gnu.org>2006-06-11 07:23:24 +0000
commit0d6b3c6bd6181ca9bd6c2b3fd1dc5caf0b8433c4 (patch)
treea3f8191e4ae8622ec146f38ef841390f388e228d
parentbbc0c3289deeb1a685316abd0bffee15bd40a46a (diff)
downloadclasspath-0d6b3c6bd6181ca9bd6c2b3fd1dc5caf0b8433c4.tar.gz
2006-06-10 Casey Marshall <csm@gnu.org>
* jessie-tests/testClientHello.java: update for extensions changes. * jessie-tests/testExtensionList.java: likewise. * jessie-tests/testServerHello.java: likewise.
-rw-r--r--ChangeLog-ssl-nio38
-rw-r--r--jessie-tests/testClientHello.java93
-rw-r--r--jessie-tests/testServerHello.java64
3 files changed, 193 insertions, 2 deletions
diff --git a/ChangeLog-ssl-nio b/ChangeLog-ssl-nio
index ffca8bdac..4da5570cb 100644
--- a/ChangeLog-ssl-nio
+++ b/ChangeLog-ssl-nio
@@ -1,3 +1,41 @@
+2006-06-10 Casey Marshall <csm@gnu.org>
+
+ * jessie-tests/testClientHello.java: update for extensions
+ changes.
+ * jessie-tests/testExtensionList.java: likewise.
+ * jessie-tests/testServerHello.java: likewise.
+
+2006-06-10 Casey Marshall <csm@gnu.org>
+
+ * gnu/javax/net/ssl/provider/ServerHello.java (extensions): return
+ an ExtensionList.
+ (setExtensionsLength): set the length in the buffer.
+ (toString): print out individual extensions.
+ * gnu/javax/net/ssl/provider/Extension.java (valueBytes): new
+ method.
+ (valueBuffer): new method.
+ (value): return an Extenion.Value.
+ (toString): print out extension value.
+ (Value): new abstract inner class.
+ * gnu/javax/net/ssl/provider/ClientHello.java (extensions): return
+ an ExtensionList.
+ (setExtensionListLength): set the length in the buffer.
+ (toString): print out extensions.
+ * gnu/javax/net/ssl/provider/ServerHandshake.java
+ (chooseSuite, chooseCompression): use generics and foreach loops.
+ * gnu/javax/net/ssl/provider/ExtensionList.java: new class.
+ * gnu/javax/net/ssl/provider/MaxFragmentLength.java: new class.
+ * gnu/javax/net/ssl/provider/CertificateURL.java: new class.
+ * gnu/javax/net/ssl/provider/UnresolvedExtensionValue.java: new
+ class.
+ * gnu/javax/net/ssl/provider/TruncatedHMAC.java: new class.
+ * gnu/javax/net/ssl/provider/ServerNameList.java: new class.
+ * gnu/javax/net/ssl/provider/TrustedAuthorities.java: new class.
+ * gnu/javax/net/ssl/provider/CertificateStatusType.java: new
+ class.
+ * gnu/javax/net/ssl/provider/CertificateStatusRequest.java: new
+ class.
+
2006-06-05 Casey Marshall <csm@gnu.org>
* gnu/javax/net/ssl/provider/Extension.java: add Javadoc.
diff --git a/jessie-tests/testClientHello.java b/jessie-tests/testClientHello.java
index d3c8ba802..3cfedf97c 100644
--- a/jessie-tests/testClientHello.java
+++ b/jessie-tests/testClientHello.java
@@ -5,6 +5,8 @@ import gnu.javax.net.ssl.provider.CipherSuiteList;
import gnu.javax.net.ssl.provider.ClientHello;
import gnu.javax.net.ssl.provider.CompressionMethod;
import gnu.javax.net.ssl.provider.CompressionMethodList;
+import gnu.javax.net.ssl.provider.Extension;
+import gnu.javax.net.ssl.provider.ExtensionList;
import gnu.javax.net.ssl.provider.ProtocolVersion;
import gnu.javax.net.ssl.provider.Handshake;
import gnu.javax.net.ssl.provider.Random;
@@ -71,7 +73,15 @@ class testClientHello
comps.put (0, CompressionMethod.NULL);
comps.put (1, CompressionMethod.ZLIB);
- hello.setExtensionsLength (0);
+ hello.setExtensionsLength (12);
+ ExtensionList exts = hello.extensions();
+ // Max fragment length of 2^9-1
+ exts.set (0, Extension.Type.MAX_FRAGMENT_LENGTH, 1); // 2 + 2 + 1
+ exts.get (0).setValue (new byte[] { 1 });
+ // Zero-length server name.
+ exts.set (1, Extension.Type.SERVER_NAME, 3); // 2 + 2 + 3
+ exts.get(1).setValue(new byte[3]);
+
handshake.setLength (hello.length ());
handshake = new Handshake (buffer);
@@ -101,7 +111,88 @@ class testClientHello
System.out.println ("PASS: compressionMethods()");
else
System.out.println ("FAIL: compressionMethods()");
+
+ exts = hello.extensions();
+ if (exts.size() == 2)
+ System.out.println ("PASS: extensions().size");
+ else
+ System.out.println ("FAIL: extensions().size");
+ if (exts.length () == 12)
+ System.out.println ("PASS: extensions().length");
+ else
+ System.out.println ("FAIL: extensions().length");
+
+ Extension e = exts.get(0);
+ if (e.type() == Extension.Type.MAX_FRAGMENT_LENGTH)
+ System.out.println ("PASS: get(0).type()");
+ else
+ System.out.println ("FAIL: get(0).type()");
+ if (Arrays.equals (e.valueBytes(), new byte[] { 1 }))
+ System.out.println ("PASS: get(0).value()");
+ else
+ System.out.println ("FAIL: get(0).value()");
+
+ e = exts.get(1);
+ if (e.type () == Extension.Type.SERVER_NAME)
+ System.out.println ("PASS: get(1).type()");
+ else
+ System.out.println ("FAIL: get(1).type()");
+ if (Arrays.equals(e.valueBytes(), new byte[3]))
+ System.out.println ("PASS: get(1).value()");
+ else
+ System.out.println ("FAIL: get(1).value()");
System.err.println (handshake);
+
+ // Part 2: no extensions.
+ buffer = ByteBuffer.allocate(96);
+ handshake = new Handshake (buffer);
+
+ handshake.setType (Handshake.Type.CLIENT_HELLO);
+ handshake.setLength (92);
+
+ hello = null;
+ hello = (ClientHello) handshake.body ();
+
+ sessionId = new byte[32];
+ for (int i = 0; i < 32; i++)
+ sessionId[i] = (byte) i;
+
+ hello.setVersion (ProtocolVersion.TLS_1); // 2
+ hello.setSessionId (sessionId); // +33 (1 + 32)
+
+ random = hello.random (); // +32
+ random.setGmtUnixTime (123456);
+ nonce = new byte [28];
+ for (int i = 0; i < nonce.length; i++)
+ nonce[i] = (byte) i;
+ random.setRandomBytes (nonce);
+
+ suites = hello.cipherSuites ();
+ suites.setSize (10); // + 22 (2 + 2*10)
+ suites.put (0, CipherSuite.TLS_NULL_WITH_NULL_NULL);
+ suites.put (1, CipherSuite.TLS_RSA_WITH_NULL_MD5);
+ suites.put (2, CipherSuite.TLS_RSA_WITH_NULL_SHA);
+ suites.put (3, CipherSuite.TLS_RSA_EXPORT_WITH_RC4_40_MD5);
+ suites.put (4, CipherSuite.TLS_RSA_WITH_RC4_128_MD5);
+ suites.put (5, CipherSuite.TLS_RSA_WITH_RC4_128_SHA);
+ suites.put (6, CipherSuite.TLS_RSA_EXPORT_WITH_DES40_CBC_SHA);
+ suites.put (7, CipherSuite.TLS_RSA_WITH_DES_CBC_SHA);
+ suites.put (8, CipherSuite.TLS_RSA_WITH_3DES_EDE_CBC_SHA);
+ suites.put (9, CipherSuite.TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA);
+
+ comps = hello.compressionMethods (); // + 3 (1 + 2*1)
+ comps.setSize (2);
+ comps.put (0, CompressionMethod.NULL);
+ comps.put (1, CompressionMethod.ZLIB);
+
+ handshake = new Handshake(buffer);
+ hello = (ClientHello) handshake.body();
+ if (hello.extensions() == null)
+ System.out.println("PASS: extensions() == null");
+ else
+ System.out.println("FAIL: extensions() != null");
+
+ System.err.println(handshake);
}
}
diff --git a/jessie-tests/testServerHello.java b/jessie-tests/testServerHello.java
index 04471767c..fb6f0cbe1 100644
--- a/jessie-tests/testServerHello.java
+++ b/jessie-tests/testServerHello.java
@@ -1,6 +1,8 @@
import gnu.javax.net.ssl.provider.CipherSuite;
import gnu.javax.net.ssl.provider.CompressionMethod;
+import gnu.javax.net.ssl.provider.Extension;
+import gnu.javax.net.ssl.provider.ExtensionList;
import gnu.javax.net.ssl.provider.Handshake;
import gnu.javax.net.ssl.provider.ProtocolVersion;
import gnu.javax.net.ssl.provider.Random;
@@ -48,7 +50,14 @@ class testServerHello
hello.setSessionId (sessionId);
hello.setCipherSuite (CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA);
hello.setCompressionMethod (CompressionMethod.ZLIB);
- hello.setExtensionsLength (0);
+ hello.setExtensionsLength (12);
+ ExtensionList exts = hello.extensions();
+ // Max fragment length of 2^9-1
+ exts.set (0, Extension.Type.MAX_FRAGMENT_LENGTH, 1); // 2 + 2 + 1
+ exts.get (0).setValue (new byte[] { 1 });
+ // Zero-length server name.
+ exts.set (1, Extension.Type.SERVER_NAME, 3); // 2 + 2 + 3
+ exts.get(1).setValue(new byte[3]);
handshake.setLength (hello.length ());
System.err.println (handshake);
@@ -69,5 +78,58 @@ class testServerHello
System.out.println ("PASS: compressionMethod");
else
System.out.println ("FAIL: compressionMethod");
+
+ exts = hello.extensions();
+ Extension e = exts.get(0);
+ if (e.type() == Extension.Type.MAX_FRAGMENT_LENGTH)
+ System.out.println ("PASS: extensions().get(0).type");
+ else
+ System.out.println ("FAIL: extensions().get(0).type");
+ if (Arrays.equals(e.valueBytes(), new byte[] { 1 }))
+ System.out.println ("PASS: extensions().get(0).value");
+ else
+ System.out.println ("FAIL: extensions().get(0).value");
+
+ e = exts.get(1);
+ if (e.type() == Extension.Type.SERVER_NAME)
+ System.out.println ("PASS: extensions().get(1).type");
+ else
+ System.out.println ("FAIL: extensions().get(1).type");
+ if (Arrays.equals(e.valueBytes(), new byte[3]))
+ System.out.println ("PASS: extensions().get(1).value");
+ else
+ System.out.println ("FAIL: extensions().get(1).value");
+
+ // Part 2: with no extensions.
+ buffer = ByteBuffer.allocate (74);
+ handshake = new Handshake (buffer);
+
+ handshake.setType (Handshake.Type.SERVER_HELLO);
+ handshake.setLength (70);
+
+ hello = (ServerHello) handshake.body ();
+
+ hello.setVersion (ProtocolVersion.TLS_1); // 2
+ random = hello.random ();
+ random.setGmtUnixTime (123456);
+ nonce = new byte[28];
+ for (int i = 0; i < nonce.length; i++)
+ nonce[i] = (byte) i;
+ random.setRandomBytes (nonce); // + 32
+ sessionId = new byte[32];
+ for (int i = 0; i < sessionId.length; i++)
+ sessionId[i] = (byte) i;
+ hello.setSessionId (sessionId); // + 33
+ hello.setCipherSuite (CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA); // + 2
+ hello.setCompressionMethod (CompressionMethod.ZLIB); // + 1
+
+ handshake = new Handshake (buffer);
+ hello = (ServerHello) handshake.body();
+ if (hello.extensions() == null)
+ System.out.println ("PASS: hello.extensions() == null");
+ else
+ System.out.println ("FAIL: hello.extensions() != null");
+
+ System.err.println (handshake);
}
}