Paste: SSL cert loading on windows (not quite right)
Author: | erg |
Mode: | factor |
Date: | Sun, 13 Mar 2016 09:41:44 |
Plain Text |
USING: accessors alien destructors io.ports io.sockets.private
io.sockets.secure io.sockets.secure.openssl io.sockets.windows
kernel locals math openssl openssl.libcrypto openssl.libssl
system windows.crypt32 windows.errors windows.winsock ;
IN: io.sockets.secure.windows
M: openssl ssl-supported? t ;
M: openssl ssl-certificate-verification-supported? t ;
: close-windows-cert-store ( HCERTSTORE -- )
0 CertCloseStore win32-error=0/f ;
: load-windows-cert-store ( string -- HCERTSTORE )
[ f ] dip CertOpenSystemStore
[ win32-error-string throw ] when-zero ;
:: set-windows-certs ( -- )
[
"ROOT" load-windows-cert-store :> cs
f :> ctx!
[
cs ctx CertEnumCertificatesInStore ctx!
ctx . flush
] [ ctx ] do while
f ctx [ pbCertEncoded>> ] [ cbCertEncoded>> ] bi d2i_X509 ssl-error
] with-destructors ;
M: windows socket-handle handle>> alien-address ;
M: secure ((client)) ( addrspec -- handle )
[ addrspec>> ((client)) ] [ hostname>> ] bi <ssl-socket> ;
M: secure (get-local-address) ( handle remote -- sockaddr )
[ file>> ] [ addrspec>> ] bi* (get-local-address) ;
M: secure parse-sockaddr addrspec>> parse-sockaddr f <secure> ;
M:: secure establish-connection ( client-out addrspec -- )
client-out handle>> file>> :> socket
socket FIONBIO 1 set-ioctl-socket
socket <output-port> addrspec addrspec>> establish-connection
client-out addrspec secure-connection
socket FIONBIO 0 set-ioctl-socket ;
M: windows non-ssl-socket? win32-socket? ;
Author: | erg |
Mode: | factor |
Date: | Sun, 13 Mar 2016 09:58:40 |
Plain Text |
USING: accessors alien destructors io.ports io.sockets.private
io.sockets.secure io.sockets.secure.openssl io.sockets.windows
kernel locals math openssl openssl.libcrypto openssl.libssl
system windows.crypt32 windows.errors windows.winsock ;
IN: io.sockets.secure.windows
M: openssl ssl-supported? t ;
M: openssl ssl-certificate-verification-supported? t ;
: close-windows-cert-store ( HCERTSTORE -- )
0 CertCloseStore win32-error=0/f ;
: load-windows-cert-store ( string -- HCERTSTORE )
[ f ] dip CertOpenSystemStore
[ win32-error-string throw ] when-zero ;
:: set-windows-certs ( -- )
[
"ROOT" load-windows-cert-store :> cs
f :> ctx!
[ ctx ]
[
B
cs ctx CertEnumCertificatesInStore ctx!
ctx . flush
B f ctx [ pbCertEncoded>> ] [ cbCertEncoded>> ] bi d2i_X509 ssl-error
] do while
] with-destructors ;
M: windows socket-handle handle>> alien-address ;
M: secure ((client)) ( addrspec -- handle )
[ addrspec>> ((client)) ] [ hostname>> ] bi <ssl-socket> ;
M: secure (get-local-address) ( handle remote -- sockaddr )
[ file>> ] [ addrspec>> ] bi* (get-local-address) ;
M: secure parse-sockaddr addrspec>> parse-sockaddr f <secure> ;
M:: secure establish-connection ( client-out addrspec -- )
client-out handle>> file>> :> socket
socket FIONBIO 1 set-ioctl-socket
socket <output-port> addrspec addrspec>> establish-connection
client-out addrspec secure-connection
socket FIONBIO 0 set-ioctl-socket ;
M: windows non-ssl-socket? win32-socket? ;
Author: | erg |
Mode: | factor |
Date: | Sun, 13 Mar 2016 10:09:31 |
Plain Text |
http://stackoverflow.com/questions/26893521/ca-certificate-directory-on-windows
http://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/external/bsd/wpa/dist/src/crypto/tls_openssl.c
http://stackoverflow.com/questions/27026566/api-openssl-wincrypt-unable-to-get-local-issuer-certificate-certificate-n
New Annotation