summaryrefslogtreecommitdiffstats
path: root/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java')
-rw-r--r--support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java66
1 files changed, 42 insertions, 24 deletions
diff --git a/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java b/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
index 5c424bc..8dd2085 100644
--- a/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
+++ b/support/src/test/java/libcore/javax/net/ssl/TestSSLContext.java
@@ -33,7 +33,6 @@ import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509ExtendedKeyManager;
import javax.net.ssl.X509TrustManager;
import junit.framework.Assert;
import libcore.java.security.StandardNames;
@@ -81,8 +80,8 @@ public final class TestSSLContext extends Assert {
public final char[] clientStorePassword;
public final KeyStore serverKeyStore;
public final char[] serverStorePassword;
- public final X509ExtendedKeyManager clientKeyManager;
- public final X509ExtendedKeyManager serverKeyManager;
+ public final KeyManager[] clientKeyManagers;
+ public final KeyManager[] serverKeyManagers;
public final X509TrustManager clientTrustManager;
public final X509TrustManager serverTrustManager;
public final SSLContext clientContext;
@@ -95,8 +94,8 @@ public final class TestSSLContext extends Assert {
char[] clientStorePassword,
KeyStore serverKeyStore,
char[] serverStorePassword,
- X509ExtendedKeyManager clientKeyManager,
- X509ExtendedKeyManager serverKeyManager,
+ KeyManager[] clientKeyManagers,
+ KeyManager[] serverKeyManagers,
X509TrustManager clientTrustManager,
X509TrustManager serverTrustManager,
SSLContext clientContext,
@@ -108,8 +107,8 @@ public final class TestSSLContext extends Assert {
this.clientStorePassword = clientStorePassword;
this.serverKeyStore = serverKeyStore;
this.serverStorePassword = serverStorePassword;
- this.clientKeyManager = clientKeyManager;
- this.serverKeyManager = serverKeyManager;
+ this.clientKeyManagers = clientKeyManagers;
+ this.serverKeyManagers = serverKeyManagers;
this.clientTrustManager = clientTrustManager;
this.serverTrustManager = serverTrustManager;
this.clientContext = clientContext;
@@ -141,20 +140,27 @@ public final class TestSSLContext extends Assert {
* TestSSLContext creation method that allows separate creation of server key store
*/
public static TestSSLContext create(TestKeyStore client, TestKeyStore server) {
- String provider = StandardNames.JSSE_PROVIDER_NAME;
- return create(client, server, provider, provider);
+ return createWithAdditionalKeyManagers(client, server, null, null);
}
- public static TestSSLContext create(TestKeyStore client, TestKeyStore server,
- String clientProvider, String serverProvider) {
- String protocol = "TLS";
- SSLContext clientContext = createSSLContext(protocol, clientProvider,
- client.keyManagers, client.trustManagers);
- SSLContext serverContext = createSSLContext(protocol, serverProvider,
- server.keyManagers, server.trustManagers);
+
+ /**
+ * TestSSLContext creation method that allows separate creation of server key store and
+ * the use of additional {@code KeyManager} instances
+ */
+ public static TestSSLContext createWithAdditionalKeyManagers(
+ TestKeyStore client, TestKeyStore server,
+ KeyManager[] additionalClientKeyManagers, KeyManager[] additionalServerKeyManagers) {
+ String protocol = "TLSv1.2";
+ KeyManager[] clientKeyManagers = concat(client.keyManagers, additionalClientKeyManagers);
+ KeyManager[] serverKeyManagers = concat(server.keyManagers, additionalServerKeyManagers);
+ SSLContext clientContext =
+ createSSLContext(protocol, clientKeyManagers, client.trustManagers);
+ SSLContext serverContext =
+ createSSLContext(protocol, serverKeyManagers, server.trustManagers);
return create(client.keyStore, client.storePassword,
server.keyStore, server.storePassword,
- client.keyManagers[0],
- server.keyManagers[0],
+ clientKeyManagers,
+ serverKeyManagers,
client.trustManagers[0],
server.trustManagers[0],
clientContext,
@@ -166,8 +172,8 @@ public final class TestSSLContext extends Assert {
*/
public static TestSSLContext create(KeyStore clientKeyStore, char[] clientStorePassword,
KeyStore serverKeyStore, char[] serverStorePassword,
- KeyManager clientKeyManagers,
- KeyManager serverKeyManagers,
+ KeyManager[] clientKeyManagers,
+ KeyManager[] serverKeyManagers,
TrustManager clientTrustManagers,
TrustManager serverTrustManagers,
SSLContext clientContext,
@@ -180,8 +186,8 @@ public final class TestSSLContext extends Assert {
return new TestSSLContext(clientKeyStore, clientStorePassword,
serverKeyStore, serverStorePassword,
- (X509ExtendedKeyManager) clientKeyManagers,
- (X509ExtendedKeyManager) serverKeyManagers,
+ clientKeyManagers,
+ serverKeyManagers,
(X509TrustManager) clientTrustManagers,
(X509TrustManager) serverTrustManagers,
clientContext, serverContext,
@@ -199,12 +205,11 @@ public final class TestSSLContext extends Assert {
* using the certificates authorities from the same KeyStore.
*/
public static final SSLContext createSSLContext(final String protocol,
- final String provider,
final KeyManager[] keyManagers,
final TrustManager[] trustManagers)
{
try {
- SSLContext context = SSLContext.getInstance(protocol, provider);
+ SSLContext context = SSLContext.getInstance(protocol);
context.init(keyManagers, trustManagers, new SecureRandom());
return context;
} catch (Exception e) {
@@ -302,4 +307,17 @@ public final class TestSSLContext extends Assert {
}
};
}
+
+ private static KeyManager[] concat(KeyManager[] a, KeyManager[] b) {
+ if ((a == null) || (a.length == 0)) {
+ return b;
+ }
+ if ((b == null) || (b.length == 0)) {
+ return a;
+ }
+ KeyManager[] result = new KeyManager[a.length + b.length];
+ System.arraycopy(a, 0, result, 0, a.length);
+ System.arraycopy(b, 0, result, a.length, b.length);
+ return result;
+ }
}