|
1 | 1 | /* |
2 | | - * Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2019, 2025, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | 4 | * |
5 | 5 | * This code is free software; you can redistribute it and/or modify it |
|
22 | 22 | */ |
23 | 23 |
|
24 | 24 | /* |
25 | | - * @test |
| 25 | + * @test id=0 |
26 | 26 | * @bug 8191808 8179502 |
27 | 27 | * @summary check that CRL download is interrupted if it takes too long |
28 | 28 | * @modules java.base/sun.security.x509 |
29 | 29 | * java.base/sun.security.util |
30 | 30 | * @library /test/lib |
31 | | - * @run main/othervm -Dcom.sun.security.crl.readtimeout=1 |
| 31 | + * @run main/othervm -Djava.security.debug=certpath -Dcom.sun.security.crl.readtimeout=1 |
32 | 32 | * CRLReadTimeout 5000 false |
33 | | - * @run main/othervm -Dcom.sun.security.crl.readtimeout=1s |
| 33 | + */ |
| 34 | + |
| 35 | +/* |
| 36 | + * @test id=1 |
| 37 | + * @bug 8191808 8179502 |
| 38 | + * @summary check that CRL download is interrupted if it takes too long |
| 39 | + * @modules java.base/sun.security.x509 |
| 40 | + * java.base/sun.security.util |
| 41 | + * @library /test/lib |
| 42 | + * @run main/othervm -Djava.security.debug=certpath -Dcom.sun.security.crl.readtimeout=1s |
34 | 43 | * CRLReadTimeout 5000 false |
35 | | - * @run main/othervm -Dcom.sun.security.crl.readtimeout=4 |
| 44 | + */ |
| 45 | + |
| 46 | +/* |
| 47 | + * @test id=2 |
| 48 | + * @bug 8191808 8179502 |
| 49 | + * @summary check that CRL download is interrupted if it takes too long |
| 50 | + * @modules java.base/sun.security.x509 |
| 51 | + * java.base/sun.security.util |
| 52 | + * @library /test/lib |
| 53 | + * @run main/othervm -Djava.security.debug=certpath -Dcom.sun.security.crl.readtimeout=200 |
36 | 54 | * CRLReadTimeout 1000 true |
37 | | - * @run main/othervm -Dcom.sun.security.crl.readtimeout=1500ms |
| 55 | + */ |
| 56 | + |
| 57 | +/* |
| 58 | + * @test id=3 |
| 59 | + * @bug 8191808 8179502 |
| 60 | + * @summary check that CRL download is interrupted if it takes too long |
| 61 | + * @modules java.base/sun.security.x509 |
| 62 | + * java.base/sun.security.util |
| 63 | + * @library /test/lib |
| 64 | + * @run main/othervm -Djava.security.debug=certpath -Dcom.sun.security.crl.readtimeout=1500ms |
38 | 65 | * CRLReadTimeout 5000 false |
39 | | - * @run main/othervm -Dcom.sun.security.crl.readtimeout=4500ms |
40 | | - * CRLReadTimeout 1000 true |
41 | 66 | */ |
42 | 67 |
|
43 | | -import java.io.*; |
| 68 | +/* |
| 69 | + * @test id=4 |
| 70 | + * @bug 8191808 8179502 |
| 71 | + * @summary check that CRL download is interrupted if it takes too long |
| 72 | + * @modules java.base/sun.security.x509 |
| 73 | + * java.base/sun.security.util |
| 74 | + * @library /test/lib |
| 75 | + * @run main/othervm -Djava.security.debug=certpath -Dcom.sun.security.crl.readtimeout=4500ms |
| 76 | + * CRLReadTimeout 100 true |
| 77 | + */ |
| 78 | + |
| 79 | +import java.io.File; |
| 80 | +import java.io.IOException; |
| 81 | +import java.io.InputStream; |
| 82 | +import java.io.OutputStream; |
44 | 83 | import java.math.BigInteger; |
| 84 | +import java.net.InetAddress; |
45 | 85 | import java.net.InetSocketAddress; |
46 | 86 | import java.net.SocketTimeoutException; |
47 | 87 | import java.security.GeneralSecurityException; |
48 | 88 | import java.security.KeyStore; |
49 | 89 | import java.security.PrivateKey; |
50 | | -import java.security.cert.*; |
| 90 | +import java.security.cert.CRLException; |
| 91 | +import java.security.cert.CertPath; |
| 92 | +import java.security.cert.CertPathValidator; |
| 93 | +import java.security.cert.CertPathValidatorException; |
| 94 | +import java.security.cert.CertificateFactory; |
| 95 | +import java.security.cert.PKIXParameters; |
| 96 | +import java.security.cert.PKIXRevocationChecker; |
| 97 | +import java.security.cert.TrustAnchor; |
| 98 | +import java.security.cert.X509CRL; |
| 99 | +import java.security.cert.X509Certificate; |
51 | 100 | import java.util.Date; |
52 | 101 | import java.util.EnumSet; |
53 | 102 | import java.util.List; |
54 | 103 | import java.util.Set; |
55 | 104 | import java.util.concurrent.TimeUnit; |
56 | 105 |
|
57 | | -import static java.security.cert.PKIXRevocationChecker.Option.*; |
| 106 | +import static java.security.cert.PKIXRevocationChecker.Option.NO_FALLBACK; |
| 107 | +import static java.security.cert.PKIXRevocationChecker.Option.PREFER_CRLS; |
| 108 | +import static java.security.cert.PKIXRevocationChecker.Option.SOFT_FAIL; |
58 | 109 |
|
59 | 110 | import com.sun.net.httpserver.HttpServer; |
60 | 111 | import jdk.test.lib.SecurityTools; |
61 | 112 | import jdk.test.lib.process.OutputAnalyzer; |
62 | 113 | import sun.security.util.SignatureUtil; |
63 | | -import sun.security.x509.*; |
| 114 | +import sun.security.x509.AuthorityKeyIdentifierExtension; |
| 115 | +import sun.security.x509.CRLExtensions; |
| 116 | +import sun.security.x509.CRLNumberExtension; |
| 117 | +import sun.security.x509.KeyIdentifier; |
| 118 | +import sun.security.x509.X500Name; |
| 119 | +import sun.security.x509.X509CRLImpl; |
64 | 120 |
|
65 | 121 | public class CRLReadTimeout { |
66 | 122 |
|
@@ -117,9 +173,10 @@ private static void testTimeout(int port, boolean expectedPass) |
117 | 173 | // unwrap soft fail exceptions and check for SocketTimeoutException |
118 | 174 | List<CertPathValidatorException> softExc = prc.getSoftFailExceptions(); |
119 | 175 | if (expectedPass) { |
120 | | - if (softExc.size() > 0) { |
| 176 | + if (!softExc.isEmpty()) { |
121 | 177 | throw new RuntimeException("Expected to pass, found " + |
122 | | - softExc.size() + " soft fail exceptions"); |
| 178 | + softExc.size() + |
| 179 | + " soft fail exceptions"); |
123 | 180 | } |
124 | 181 | } else { |
125 | 182 | boolean foundSockTOExc = false; |
@@ -182,7 +239,7 @@ public CrlHttpServer(int timeout) throws IOException { |
182 | 239 | } |
183 | 240 |
|
184 | 241 | public void start() throws IOException { |
185 | | - server.bind(new InetSocketAddress(0), 0); |
| 242 | + server.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0); |
186 | 243 | server.createContext("/crl", t -> { |
187 | 244 | try (InputStream is = t.getRequestBody()) { |
188 | 245 | is.readAllBytes(); |
|
0 commit comments