@Override protected DTLSTransport getDtlsTransport() throws IOException { DTLSServerProtocol serverProtocol = new DTLSServerProtocol(secureRandom); return serverProtocol.accept(mserver, rawTransport); }
processClientHello(state, clientMessage.getBody()); byte[] serverHelloBody = generateServerHello(state); applyMaxFragmentLengthExtension(recordLayer, securityParameters.maxFragmentLength); byte[] supplementalDataBody = generateSupplementalData(serverSupplementalData); handshake.sendMessage(HandshakeType.supplemental_data, supplementalDataBody); byte[] certificateBody = generateCertificate(serverCertificate); handshake.sendMessage(HandshakeType.certificate, certificateBody); byte[] certificateStatusBody = generateCertificateStatus(state, certificateStatus); handshake.sendMessage(HandshakeType.certificate_status, certificateStatusBody); byte[] certificateRequestBody = generateCertificateRequest(state, state.certificateRequest); handshake.sendMessage(HandshakeType.certificate_request, certificateRequestBody); processClientSupplementalData(state, clientMessage.getBody()); clientMessage = handshake.receiveMessage(); processClientCertificate(state, clientMessage.getBody()); clientMessage = handshake.receiveMessage(); notifyClientCertificate(state, Certificate.EMPTY_CHAIN); processClientKeyExchange(state, clientMessage.getBody()); if (expectCertificateVerifyMessage(state))
validateSelectedCipherSuite(state.selectedCipherSuite, AlertDescription.internal_error); state.maxFragmentLength = evaluateMaxFragmentLengthExtension(state.clientExtensions, state.serverExtensions, AlertDescription.internal_error);
dtlsProtocolObj = new DTLSServerProtocol(new SecureRandom()); tlsPeer = new TlsServerImpl(this);
= dtlsServerProtocol.accept( tlsServer, datagramTransport);
processClientHello(state, clientMessage.getBody()); byte[] serverHelloBody = generateServerHello(state); byte[] supplementalDataBody = generateSupplementalData(serverSupplementalData); handshake.sendMessage(HandshakeType.supplemental_data, supplementalDataBody); byte[] certificateBody = generateCertificate(serverCertificate); handshake.sendMessage(HandshakeType.certificate, certificateBody); byte[] certificateStatusBody = generateCertificateStatus(state, certificateStatus); handshake.sendMessage(HandshakeType.certificate_status, certificateStatusBody); byte[] certificateRequestBody = generateCertificateRequest(state, state.certificateRequest); handshake.sendMessage(HandshakeType.certificate_request, certificateRequestBody); processClientSupplementalData(state, clientMessage.getBody()); clientMessage = handshake.receiveMessage(); processClientCertificate(state, clientMessage.getBody()); clientMessage = handshake.receiveMessage(); notifyClientCertificate(state, Certificate.EMPTY_CHAIN); processClientKeyExchange(state, clientMessage.getBody()); if (expectCertificateVerifyMessage(state)) processCertificateVerify(state, certificateVerifyBody, prepareFinishHash);
validateSelectedCipherSuite(selectedCipherSuite, AlertDescription.internal_error); securityParameters.cipherSuite = selectedCipherSuite; securityParameters.maxFragmentLength = evaluateMaxFragmentLengthExtension(state.resumedSession, state.clientExtensions, state.serverExtensions, AlertDescription.internal_error);
public void run() { DtlsHandler.this.rxQueue.clear(); SecureRandom secureRandom = new SecureRandom(); DTLSServerProtocol serverProtocol = new DTLSServerProtocol(secureRandom); try { // Perform the handshake in a non-blocking fashion serverProtocol.accept(server, DtlsHandler.this); // Prepare the shared key to be used in RTP streaming server.prepareSrtpSharedSecret(); // Generate encoders for DTLS traffic srtpDecoder = generateRtpDecoder(); srtpEncoder = generateRtpEncoder(); srtcpDecoder = generateRtcpDecoder(); srtcpEncoder = generateRtcpEncoder(); // Declare handshake as complete handshakeComplete = true; handshakeFailed = false; handshaking = false; // Warn listeners handshake completed fireHandshakeComplete(); } catch (Exception e) { logger.error("DTLS handshake failed. Reason:", e); // Declare handshake as failed handshakeComplete = false; handshakeFailed = true; handshaking = false; // Warn listeners handshake completed fireHandshakeFailed(e); } }
public void run() { DtlsHandler.this.rxQueue.clear(); SecureRandom secureRandom = new SecureRandom(); DTLSServerProtocol serverProtocol = new DTLSServerProtocol(secureRandom); try { // Perform the handshake in a non-blocking fashion serverProtocol.accept(server, DtlsHandler.this); // Prepare the shared key to be used in RTP streaming server.prepareSrtpSharedSecret(); // Generate encoders for DTLS traffic srtpDecoder = generateRtpDecoder(); srtpEncoder = generateRtpEncoder(); srtcpDecoder = generateRtcpDecoder(); srtcpEncoder = generateRtcpEncoder(); // Declare handshake as complete handshakeComplete = true; handshakeFailed = false; handshaking = false; // Warn listeners handshake completed fireHandshakeComplete(); } catch (Exception e) { logger.error("DTLS handshake failed. Reason:", e); // Declare handshake as failed handshakeComplete = false; handshakeFailed = true; handshaking = false; // Warn listeners handshake completed fireHandshakeFailed(e); } }