]> gitweb.factorcode.org Git - factor.git/blob - basis/io/sockets/secure/windows/windows.factor
a4887bd14b9d3505ec91dcec70ac105e8c749d52
[factor.git] / basis / io / sockets / secure / windows / windows.factor
1 USING:
2     accessors
3     alien
4     io.ports
5     io.sockets.private io.sockets.secure io.sockets.secure.openssl
6     kernel
7     openssl openssl.libcrypto openssl.libssl ;
8 IN: io.sockets.secure.windows
9
10 M: openssl ssl-supported? t ;
11 M: openssl ssl-certificate-verification-supported? f ;
12
13 : <ssl-socket> ( winsock -- ssl )
14     [
15         handle>> alien-address BIO_NOCLOSE BIO_new_socket dup ssl-error
16     ] keep <ssl-handle>
17     [ handle>> swap dup SSL_set_bio ] keep ;
18
19 M: secure ((client)) ( addrspec -- handle )
20     addrspec>> ((client)) <ssl-socket> ;
21
22 M: secure (get-local-address) ( handle remote -- sockaddr )
23     [ file>> ] [ addrspec>> ] bi* (get-local-address) ;
24
25 M: secure parse-sockaddr addrspec>> parse-sockaddr <secure> ;
26
27 M: secure establish-connection ( client-out remote -- )
28     [
29         [ handle>> file>> <output-port> ] [ addrspec>> ] bi* establish-connection
30     ]
31     [ secure-connection ] 2bi ;