< prev index next >
test/sun/security/ssl/X509TrustManagerImpl/CertRequestOverflow.java
Print this page
rev 14277 : [mq]: 8154947-Send-empty-list-of-authorities-in-CertificateRequest-if-server-has-too-many-of-them
@@ -26,14 +26,15 @@
// system properties in samevm/agentvm mode.
//
/*
* @test
- * @bug 7200295
+ * @bug 7200295 8154947
* @summary CertificateRequest message is wrapping when using large
* numbers of Certs
- * @run main/othervm CertRequestOverflow
+ * @run main/othervm -Djdk.tls.allowDropCertReqAuthorites=true CertRequestOverflow
+ * @run main/othervm -Djdk.tls.allowDropCertReqAuthorites=false CertRequestOverflow
*/
import java.io.*;
import java.net.*;
import java.util.*;
@@ -74,10 +75,18 @@
* Turn on SSL debugging?
*/
static boolean debug = false;
/*
+ * Is server allowed to send empty list of authorities in
+ * CertificateRequest message?
+ */
+ static boolean allowDropAuthorities =
+ System.getProperty("jdk.tls.allowDropCertReqAuthorites", "")
+ .equalsIgnoreCase("true");
+
+ /*
* If the client or server is doing some kind of object creation
* that the other side depends on, and that thread prematurely
* exits, you may experience a hang. The test harness will
* terminate all hung threads after its timeout has expired,
* currently 3 minutes by default, but you might try to be
@@ -116,20 +125,26 @@
try {
sslIS.read();
sslOS.write(85);
sslOS.flush();
-
+ if (!allowDropAuthorities) {
throw new Exception("SERVER TEST FAILED! " +
"It is expected to fail with field length overflow");
+ }
} catch (SSLException ssle) {
+ if (allowDropAuthorities) {
+ throw new RuntimeException("Unexpected exception at server side",
+ ssle);
+ } else {
Throwable cause = ssle.getCause();
if (!(cause instanceof RuntimeException)) {
System.out.println("We are expecting a RuntimeException!");
throw ssle;
}
System.out.println("The expected exception! " + ssle);
+ }
} finally {
sslSocket.close();
}
System.out.println("SERVER TEST PASSED!");
@@ -165,11 +180,16 @@
try {
sslOS.write(280);
sslOS.flush();
sslIS.read();
} catch (SSLException ssle) {
+ if (allowDropAuthorities) {
+ throw new RuntimeException("Unexpected exception at client side",
+ ssle);
+ } else {
System.out.println("An expected exception!");
+ }
} finally {
sslSocket.close();
}
}
< prev index next >