2013-10-11 12:26:44 -04:00
|
|
|
USING:
|
|
|
|
accessors
|
2013-10-17 12:14:50 -04:00
|
|
|
alien
|
2013-10-16 11:34:31 -04:00
|
|
|
io.ports
|
|
|
|
io.sockets.private io.sockets.secure io.sockets.secure.openssl
|
2013-10-11 12:26:44 -04:00
|
|
|
kernel
|
2013-10-16 11:34:31 -04:00
|
|
|
openssl openssl.libcrypto openssl.libssl ;
|
2013-10-11 12:26:44 -04:00
|
|
|
IN: io.sockets.secure.windows
|
|
|
|
|
|
|
|
M: openssl ssl-supported? t ;
|
2013-10-14 08:45:33 -04:00
|
|
|
M: openssl ssl-certificate-verification-supported? f ;
|
2013-10-11 12:26:44 -04:00
|
|
|
|
|
|
|
: <ssl-socket> ( winsock -- ssl )
|
2013-10-17 12:14:50 -04:00
|
|
|
[
|
|
|
|
handle>> alien-address BIO_NOCLOSE BIO_new_socket dup ssl-error
|
|
|
|
] keep <ssl-handle>
|
2013-10-11 12:26:44 -04:00
|
|
|
[ handle>> swap dup SSL_set_bio ] keep ;
|
|
|
|
|
|
|
|
M: secure ((client)) ( addrspec -- handle )
|
|
|
|
addrspec>> ((client)) <ssl-socket> ;
|
|
|
|
|
2013-10-14 08:45:33 -04:00
|
|
|
M: secure (get-local-address) ( handle remote -- sockaddr )
|
2013-10-16 11:34:31 -04:00
|
|
|
[ file>> ] [ addrspec>> ] bi* (get-local-address) ;
|
2013-10-14 08:45:33 -04:00
|
|
|
|
2013-10-16 11:34:31 -04:00
|
|
|
M: secure parse-sockaddr addrspec>> parse-sockaddr <secure> ;
|
2013-10-11 12:26:44 -04:00
|
|
|
|
|
|
|
M: secure establish-connection ( client-out remote -- )
|
2013-10-16 11:34:31 -04:00
|
|
|
[
|
|
|
|
[ handle>> file>> <output-port> ] [ addrspec>> ] bi* establish-connection
|
|
|
|
]
|
|
|
|
[ secure-connection ] 2bi ;
|