We are trying to use TLS (or, more specifically, DTLS) over UDP.  In order
to do this we create an input-port?/output-port? pair via make-pipe and
then run the pair through ports->ssl-ports.  The handshake this causes is
failing and therefore the whole process hangs and the ports don't get
converted.  We have a couple questions:

1) Does the Racket openssl library (i.e. (require openssl)) implement DTLS?

2) What might be causing the failure?  (Hopefully) minimal code is below;
we have been banging our heads on it and could use some advice.


; Pseudo code, simplified from live code and not tested

(define server-ctx (ssl-make-server-context 'tls12))
(ssl-load-certificate-chain!      server-ctx pem)
(ssl-load-private-key!            server-ctx pem)
(ssl-server-context-enable-ecdhe! server-ctx 'secp521r1)

(define client-ctx (ssl-make-client-context 'tls12))
(ssl-set-ciphers! client-ctx "ECDHE-RSA-AES128-SHA256")

(define rx-in-ch  (make-async-channel))
(define sock (udp-open-socket))
(udp-bind! sock ...)

(define-values (rx-in1 rx-out1) (make-pipe size))
(define-values (tx-in1 tx-out1) (make-pipe size))

(define-values (rx-in tx-out)
   (ports->ssl-ports rx-in1 tx-out1
                    #:mode               'accept
                    #:context            server-ctx
                    #:close-original?    #t
                    #:shutdown-on-close? #t))

; the 'connect version is elided for brevity



;;;  Rx
; sync on the UDP socket.  When data is received, async-channel-put it onto
rx-in-ch.
; sync on rx-in-ch.  When data is received, write it onto rx-out port from
make-pipe
; sync on rx-in port from make-pipe.  When data is received it will be
processed by a handler function

;;; Tx
; the handler function writes to tx-out
; sync on tx-in.  When data is received, a handler will udp-send-to onto
the UDP socket

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAE8gKocmTjS6s9WD_LfiOD4cMPNg4MwXybKR%3DhjYETg%3D7z2m1g%40mail.gmail.com.

Reply via email to