All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.crypto.tls.test.DTLSServerTest Maven / Gradle / Ivy

Go to download

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.4.

There is a newer version: 1.78.1
Show newest version
package org.bouncycastle.crypto.tls.test;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketTimeoutException;
import java.security.SecureRandom;

import org.bouncycastle.crypto.tls.DTLSServerProtocol;
import org.bouncycastle.crypto.tls.DTLSTransport;
import org.bouncycastle.crypto.tls.DatagramTransport;
import org.bouncycastle.crypto.tls.UDPTransport;

/**
 * A simple test designed to conduct a DTLS handshake with an external DTLS client.
 * 

* Please refer to GnuTLSSetup.txt or OpenSSLSetup.txt, and x509-*.pem files in this package for * help configuring an external DTLS client. */ public class DTLSServerTest { public static void main(String[] args) throws Exception { InetAddress address = InetAddress.getLocalHost(); int port = 5556; int mtu = 1500; SecureRandom secureRandom = new SecureRandom(); DTLSServerProtocol serverProtocol = new DTLSServerProtocol(secureRandom); byte[] data = new byte[mtu]; DatagramPacket packet = new DatagramPacket(data, mtu); DatagramSocket socket = new DatagramSocket(port, address); socket.receive(packet); System.out.println("Accepting connection from " + packet.getAddress().getHostAddress() + ":" + port); socket.connect(packet.getAddress(), packet.getPort()); /* * NOTE: For simplicity, and since we don't yet have HelloVerifyRequest support, we just * discard the initial packet, which the client should re-send anyway. */ DatagramTransport transport = new UDPTransport(socket, mtu); // Uncomment to see packets // transport = new LoggingDatagramTransport(transport, System.out); MockDTLSServer server = new MockDTLSServer(); DTLSTransport dtlsServer = serverProtocol.accept(server, transport); byte[] buf = new byte[dtlsServer.getReceiveLimit()]; while (!socket.isClosed()) { try { int length = dtlsServer.receive(buf, 0, buf.length, 60000); if (length >= 0) { System.out.write(buf, 0, length); dtlsServer.send(buf, 0, length); } } catch (SocketTimeoutException ste) { } } dtlsServer.close(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy