]> gitweb.factorcode.org Git - factor.git/commitdiff
openssl.libssl: on windows the X509_* family of functions is in a
authorBjörn Lindqvist <bjourne@gmail.com>
Thu, 10 Oct 2013 15:03:17 +0000 (17:03 +0200)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 11 Oct 2013 17:23:40 +0000 (10:23 -0700)
different dll than the other functions in libssl

basis/io/sockets/secure/openssl/openssl-tests.factor
basis/openssl/libssl/libssl.factor

index d39a787c72ed69d71280e111c835431915d28262..ed4da5ac74eee32440d0fb9898be2940eff1e1d0 100644 (file)
@@ -1,4 +1,32 @@
-USING: accessors http.client kernel tools.test ;
+USING:
+    accessors
+    alien
+    http.client
+    io.sockets io.sockets.private io.sockets.secure.openssl
+    kernel
+    openssl.libcrypto openssl.libssl
+    sequences
+    tools.test
+    urls
+    windows.winsock ;
 IN: io.sockets.secure.openssl.tests
 
+: new-ssl ( -- ssl )
+    SSLv23_client_method SSL_CTX_new SSL_new ;
+
+: socket-connect ( remote -- socket )
+    AF_INET SOCK_STREAM IPPROTO_TCP socket swap dupd
+    make-sockaddr/size connect drop ;
+
+: ssl-socket-connect ( remote -- ssl-socket )
+    socket-connect alien-address BIO_NOCLOSE BIO_new_socket ;
+
+: remote ( -- remote )
+    URL" https://www.google.com" url-addr addrspec>> resolve-host first ;
+
 [ 200 ] [ "https://www.google.se" http-get drop code>> ] unit-test
+
+[ "www.google.com" ] [
+    new-ssl dup remote ssl-socket-connect dup SSL_set_bio
+    dup SSL_connect drop SSL_get_peer_certificate subject-name
+] unit-test
index 3b804ed5eb28f063830362ca87e2df26bb65559d..13567ee8ee47ae8fe88b505a71ce16269e66b75c 100644 (file)
@@ -7,11 +7,11 @@ quotations math.bitwise alien.libraries literals ;
 
 IN: openssl.libssl
 
-<< {
-    { [ os windows? ] [ "libssl" "ssleay32.dll" cdecl add-library ] }
-    { [ os macosx? ] [ "libssl" "libssl.dylib" cdecl add-library ] }
-    { [ os unix? ] [ "libssl" "libssl.so" cdecl add-library ] }
-} cond >>
+<< "libssl" {
+    { [ os windows? ] [ "ssleay32.dll" ] }
+    { [ os macosx? ] [ "libssl.dylib" ] }
+    { [ os unix? ] [ "libssl.so" ] }
+} cond cdecl add-library >>
 
 CONSTANT: X509_FILETYPE_PEM       1
 CONSTANT: X509_FILETYPE_ASN1      2
@@ -109,9 +109,6 @@ STRUCT: stack_st
     { comp void* } ;
 TYPEDEF: stack_st _STACK
 
-FUNCTION: int sk_num ( _STACK *s ) ;
-FUNCTION: void* sk_value ( _STACK *s, int ) ;
-
 ! ===============================================
 ! asn1t.h
 ! ===============================================
@@ -151,14 +148,6 @@ STRUCT: X509_EXTENSION
 C-TYPE: X509_NAME
 C-TYPE: X509
 
-FUNCTION: int X509_NAME_get_text_by_NID ( X509_NAME* name, int nid, void* buf, int len ) ;
-FUNCTION: int X509_get_ext_by_NID ( X509* a, int nid, int lastpos ) ;
-FUNCTION: void* X509_get_ext_d2i ( X509 *a, int nid, int* crit, int* idx ) ;
-FUNCTION: X509_NAME* X509_get_issuer_name ( X509* a ) ;
-FUNCTION: X509_NAME* X509_get_subject_name ( X509* a ) ;
-FUNCTION: int X509_check_trust ( X509* a, int id, int flags ) ;
-FUNCTION: X509_EXTENSION* X509_get_ext ( X509* a, int loc ) ;
-
 ! ===============================================
 ! x509v3.h
 ! ===============================================
@@ -512,3 +501,29 @@ X509_V_: ERR_APPLICATION_VERIFICATION 50
 CONSTANT: NID_commonName        13
 CONSTANT: NID_subject_alt_name  85
 CONSTANT: NID_issuer_alt_name   86
+
+! ===============================================
+! On Windows, some of the functions making up libssl are placed in the
+! libeay32.dll and not in the similarily named ssleay32.dll file.
+! ===============================================
+
+<< "libssl-platform" {
+    { [ os windows? ] [ "libeay32.dll" ] }
+    { [ os macosx? ] [ "libssl.dylib" ] }
+    { [ os unix? ] [ "libssl.so" ] }
+} cond cdecl add-library >>
+
+LIBRARY: libssl-platform
+
+! x509.h
+FUNCTION: int X509_NAME_get_text_by_NID ( X509_NAME* name, int nid, void* buf, int len ) ;
+FUNCTION: int X509_get_ext_by_NID ( X509* a, int nid, int lastpos ) ;
+FUNCTION: void* X509_get_ext_d2i ( X509 *a, int nid, int* crit, int* idx ) ;
+FUNCTION: X509_NAME* X509_get_issuer_name ( X509* a ) ;
+FUNCTION: X509_NAME* X509_get_subject_name ( X509* a ) ;
+FUNCTION: int X509_check_trust ( X509* a, int id, int flags ) ;
+FUNCTION: X509_EXTENSION* X509_get_ext ( X509* a, int loc ) ;
+
+! stack.h
+FUNCTION: int sk_num ( _STACK *s ) ;
+FUNCTION: void* sk_value ( _STACK *s, int ) ;