49 lines
1.6 KiB
Java
49 lines
1.6 KiB
Java
|
/*
|
||
|
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
||
|
*/
|
||
|
|
||
|
import java.io.InputStream;
|
||
|
import java.io.OutputStream;
|
||
|
import java.net.InetSocketAddress;
|
||
|
|
||
|
import javax.net.ssl.SSLContext;
|
||
|
import javax.net.ssl.SSLSocket;
|
||
|
import javax.net.ssl.SSLSocketFactory;
|
||
|
|
||
|
/*
|
||
|
* A SSL socket client.
|
||
|
*/
|
||
|
public class JSSEClient {
|
||
|
|
||
|
public static void main(String[] args) throws Exception {
|
||
|
System.out.println("Client: arguments=" + String.join("; ", args));
|
||
|
|
||
|
int port = Integer.valueOf(args[0]);
|
||
|
String[] trustNames = args[1].split(TLSRestrictions.DELIMITER);
|
||
|
String[] certNames = args[2].split(TLSRestrictions.DELIMITER);
|
||
|
String constraint = args[3];
|
||
|
|
||
|
TLSRestrictions.setConstraint("Client", constraint);
|
||
|
|
||
|
SSLContext context = TLSRestrictions.createSSLContext(
|
||
|
trustNames, certNames);
|
||
|
SSLSocketFactory socketFactory = context.getSocketFactory();
|
||
|
try (SSLSocket socket = (SSLSocket) socketFactory.createSocket()) {
|
||
|
socket.connect(new InetSocketAddress("localhost", port),
|
||
|
TLSRestrictions.TIMEOUT);
|
||
|
socket.setSoTimeout(TLSRestrictions.TIMEOUT);
|
||
|
System.out.println("Client: connected");
|
||
|
|
||
|
InputStream sslIS = socket.getInputStream();
|
||
|
OutputStream sslOS = socket.getOutputStream();
|
||
|
sslOS.write('C');
|
||
|
sslOS.flush();
|
||
|
sslIS.read();
|
||
|
System.out.println("Client: finished");
|
||
|
} catch (Exception e) {
|
||
|
throw new RuntimeException("Client: failed.", e);
|
||
|
}
|
||
|
}
|
||
|
}
|