5 io.sockets.private io.sockets.secure io.sockets.secure.openssl
7 openssl openssl.libcrypto openssl.libssl ;
8 IN: io.sockets.secure.windows
10 M: openssl ssl-supported? t ;
11 M: openssl ssl-certificate-verification-supported? f ;
13 : <ssl-socket> ( winsock -- ssl )
15 handle>> alien-address BIO_NOCLOSE BIO_new_socket dup ssl-error
17 [ handle>> swap dup SSL_set_bio ] keep ;
19 M: secure ((client)) ( addrspec -- handle )
20 addrspec>> ((client)) <ssl-socket> ;
22 M: secure (get-local-address) ( handle remote -- sockaddr )
23 [ file>> ] [ addrspec>> ] bi* (get-local-address) ;
25 M: secure parse-sockaddr addrspec>> parse-sockaddr <secure> ;
27 M: secure establish-connection ( client-out remote -- )
29 [ handle>> file>> <output-port> ] [ addrspec>> ] bi* establish-connection
31 [ secure-connection ] 2bi ;