]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/openssl/libssl/libssl.factor
use radix literals
[factor.git] / basis / openssl / libssl / libssl.factor
index 30501a61056979e1b3938acf6f4a094e4e62c170..efef9f3bc5b421b6cce2d6b3186f789f967ebb5b 100644 (file)
@@ -1,76 +1,76 @@
 ! Copyright (C) 2007 Elie CHAFTARI
 ! Portions copyright (C) 2008 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien alien.syntax combinators kernel system namespaces
-assocs parser lexer sequences words quotations math.bitwise ;
+USING: alien alien.c-types alien.syntax combinators kernel
+system namespaces assocs parser lexer sequences words
+quotations math.bitwise alien.libraries literals ;
 
 IN: openssl.libssl
 
 << {
-    { [ os openbsd? ] [ ] } ! VM is linked with it
-    { [ os winnt? ] [ "libssl" "ssleay32.dll" "cdecl" add-library ] }
-    { [ os macosx? ] [ "libssl" "libssl.dylib" "cdecl" add-library ] }
-    { [ os unix? ] [ "libssl" "libssl.so" "cdecl" add-library ] }
+    { [ 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 >>
 
-: X509_FILETYPE_PEM       1 ; inline
-: X509_FILETYPE_ASN1      2 ; inline
-: X509_FILETYPE_DEFAULT   3 ; inline
-
-: SSL_FILETYPE_ASN1  X509_FILETYPE_ASN1 ; inline
-: SSL_FILETYPE_PEM   X509_FILETYPE_PEM ; inline
-
-: SSL_CTRL_NEED_TMP_RSA             1 ; inline
-: SSL_CTRL_SET_TMP_RSA              2 ; inline
-: SSL_CTRL_SET_TMP_DH               3 ; inline
-: SSL_CTRL_SET_TMP_RSA_CB           4 ; inline
-: SSL_CTRL_SET_TMP_DH_CB            5 ; inline
-
-: SSL_CTRL_GET_SESSION_REUSED       6 ; inline
-: SSL_CTRL_GET_CLIENT_CERT_REQUEST  7 ; inline
-: SSL_CTRL_GET_NUM_RENEGOTIATIONS   8 ; inline
-: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9 ; inline
-: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10 ; inline
-: SSL_CTRL_GET_FLAGS                11 ; inline
-: SSL_CTRL_EXTRA_CHAIN_CERT         12 ; inline
-
-: SSL_CTRL_SET_MSG_CALLBACK         13 ; inline
-: SSL_CTRL_SET_MSG_CALLBACK_ARG     14 ; inline
-
-: SSL_CTRL_SESS_NUMBER              20 ; inline
-: SSL_CTRL_SESS_CONNECT             21 ; inline
-: SSL_CTRL_SESS_CONNECT_GOOD        22 ; inline
-: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 ; inline
-: SSL_CTRL_SESS_ACCEPT              24 ; inline
-: SSL_CTRL_SESS_ACCEPT_GOOD         25 ; inline
-: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE  26 ; inline
-: SSL_CTRL_SESS_HIT                 27 ; inline
-: SSL_CTRL_SESS_CB_HIT              28 ; inline
-: SSL_CTRL_SESS_MISSES              29 ; inline
-: SSL_CTRL_SESS_TIMEOUTS            30 ; inline
-: SSL_CTRL_SESS_CACHE_FULL          31 ; inline
-: SSL_CTRL_OPTIONS                  32 ; inline
-: SSL_CTRL_MODE                     33 ; inline
-
-: SSL_CTRL_GET_READ_AHEAD           40 ; inline
-: SSL_CTRL_SET_READ_AHEAD           41 ; inline
-: SSL_CTRL_SET_SESS_CACHE_SIZE      42 ; inline
-: SSL_CTRL_GET_SESS_CACHE_SIZE      43 ; inline
-: SSL_CTRL_SET_SESS_CACHE_MODE      44 ; inline
-: SSL_CTRL_GET_SESS_CACHE_MODE      45 ; inline
-
-: SSL_CTRL_GET_MAX_CERT_LIST        50 ; inline
-: SSL_CTRL_SET_MAX_CERT_LIST        51 ; inline
-
-: SSL_ERROR_NONE             0 ; inline
-: SSL_ERROR_SSL              1 ; inline
-: SSL_ERROR_WANT_READ        2 ; inline
-: SSL_ERROR_WANT_WRITE       3 ; inline
-: SSL_ERROR_WANT_X509_LOOKUP 4 ; inline
-: SSL_ERROR_SYSCALL          5 ; inline ! consult errno for details
-: SSL_ERROR_ZERO_RETURN      6 ; inline
-: SSL_ERROR_WANT_CONNECT     7 ; inline
-: SSL_ERROR_WANT_ACCEPT      8 ; inline
+CONSTANT: X509_FILETYPE_PEM       1
+CONSTANT: X509_FILETYPE_ASN1      2
+CONSTANT: X509_FILETYPE_DEFAULT   3
+
+ALIAS: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
+ALIAS: SSL_FILETYPE_PEM  X509_FILETYPE_PEM
+
+CONSTANT: SSL_CTRL_NEED_TMP_RSA   1
+CONSTANT: SSL_CTRL_SET_TMP_RSA    2
+CONSTANT: SSL_CTRL_SET_TMP_DH     3
+CONSTANT: SSL_CTRL_SET_TMP_RSA_CB 4
+CONSTANT: SSL_CTRL_SET_TMP_DH_CB  5
+
+CONSTANT: SSL_CTRL_GET_SESSION_REUSED       6 
+CONSTANT: SSL_CTRL_GET_CLIENT_CERT_REQUEST  7 
+CONSTANT: SSL_CTRL_GET_NUM_RENEGOTIATIONS   8 
+CONSTANT: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9 
+CONSTANT: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10
+CONSTANT: SSL_CTRL_GET_FLAGS                11
+CONSTANT: SSL_CTRL_EXTRA_CHAIN_CERT         12
+
+CONSTANT: SSL_CTRL_SET_MSG_CALLBACK         13
+CONSTANT: SSL_CTRL_SET_MSG_CALLBACK_ARG     14
+
+CONSTANT: SSL_CTRL_SESS_NUMBER              20
+CONSTANT: SSL_CTRL_SESS_CONNECT             21
+CONSTANT: SSL_CTRL_SESS_CONNECT_GOOD        22
+CONSTANT: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
+CONSTANT: SSL_CTRL_SESS_ACCEPT              24
+CONSTANT: SSL_CTRL_SESS_ACCEPT_GOOD         25
+CONSTANT: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE  26
+CONSTANT: SSL_CTRL_SESS_HIT                 27
+CONSTANT: SSL_CTRL_SESS_CB_HIT              28
+CONSTANT: SSL_CTRL_SESS_MISSES              29
+CONSTANT: SSL_CTRL_SESS_TIMEOUTS            30
+CONSTANT: SSL_CTRL_SESS_CACHE_FULL          31
+CONSTANT: SSL_CTRL_OPTIONS                  32
+CONSTANT: SSL_CTRL_MODE                     33
+
+CONSTANT: SSL_CTRL_GET_READ_AHEAD           40
+CONSTANT: SSL_CTRL_SET_READ_AHEAD           41
+CONSTANT: SSL_CTRL_SET_SESS_CACHE_SIZE      42
+CONSTANT: SSL_CTRL_GET_SESS_CACHE_SIZE      43
+CONSTANT: SSL_CTRL_SET_SESS_CACHE_MODE      44
+CONSTANT: SSL_CTRL_GET_SESS_CACHE_MODE      45
+
+CONSTANT: SSL_CTRL_GET_MAX_CERT_LIST        50
+CONSTANT: SSL_CTRL_SET_MAX_CERT_LIST        51
+
+CONSTANT: SSL_ERROR_NONE             0
+CONSTANT: SSL_ERROR_SSL              1
+CONSTANT: SSL_ERROR_WANT_READ        2
+CONSTANT: SSL_ERROR_WANT_WRITE       3
+CONSTANT: SSL_ERROR_WANT_X509_LOOKUP 4
+CONSTANT: SSL_ERROR_SYSCALL          5 ! consult errno for details
+CONSTANT: SSL_ERROR_ZERO_RETURN      6
+CONSTANT: SSL_ERROR_WANT_CONNECT     7
+CONSTANT: SSL_ERROR_WANT_ACCEPT      8
 
 ! Error messages table
 : error-messages ( -- hash )
@@ -87,17 +87,27 @@ IN: openssl.libssl
     } ;
 
 TYPEDEF: void* ssl-method
-TYPEDEF: void* SSL_CTX*
-TYPEDEF: void* SSL_SESSION*
-TYPEDEF: void* SSL*
+C-TYPE: SSL_CTX
+C-TYPE: SSL_SESSION
+C-TYPE: SSL
 
 LIBRARY: libssl
 
+! ===============================================
+! x509.h
+! ===============================================
+
+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: X509_NAME* X509_get_subject_name ( X509* a ) ;
+
 ! ===============================================
 ! ssl.h
 ! ===============================================
 
-FUNCTION: char* SSL_get_version ( SSL* ssl ) ;
+FUNCTION: c-string SSL_get_version ( SSL* ssl ) ;
 
 ! Maps OpenSSL errors to strings
 FUNCTION: void SSL_load_error_strings (  ) ;
@@ -131,7 +141,7 @@ FUNCTION: SSL_CTX* SSL_CTX_new ( ssl-method method ) ;
 
 ! Load the certificates and private keys into the SSL_CTX
 FUNCTION: int SSL_CTX_use_certificate_chain_file ( SSL_CTX* ctx,
-                                                   char* file ) ; ! PEM type
+                                                   c-string file ) ; ! PEM type
 
 FUNCTION: SSL* SSL_new ( SSL_CTX* ctx ) ;
 
@@ -157,12 +167,12 @@ FUNCTION: int SSL_read ( SSL* ssl, void* buf, int num ) ;
 
 FUNCTION: int SSL_shutdown ( SSL* ssl ) ;
 
-: SSL_SENT_SHUTDOWN 1 ;
-: SSL_RECEIVED_SHUTDOWN 2 ;
+CONSTANT: SSL_SENT_SHUTDOWN 1
+CONSTANT: SSL_RECEIVED_SHUTDOWN 2
 
 FUNCTION: int SSL_get_shutdown ( SSL* ssl ) ;
 
-FUNCTION: int SSL_CTX_set_session_id_context ( SSL_CTX* ctx, char* sid_ctx, uint len ) ;
+FUNCTION: int SSL_CTX_set_session_id_context ( SSL_CTX* ctx, c-string sid_ctx, uint len ) ;
 
 FUNCTION: SSL_SESSION* SSL_get1_session ( SSL* ssl ) ;
 
@@ -172,10 +182,10 @@ FUNCTION: void SSL_SESSION_free ( SSL_SESSION* ses ) ;
 
 FUNCTION: int SSL_want ( SSL* ssl ) ;
 
-: SSL_NOTHING 1 ; inline
-: SSL_WRITING 2 ; inline
-: SSL_READING 3 ; inline
-: SSL_X509_LOOKUP 4 ; inline
+CONSTANT: SSL_NOTHING 1
+CONSTANT: SSL_WRITING 2
+CONSTANT: SSL_READING 3
+CONSTANT: SSL_X509_LOOKUP 4
 
 FUNCTION: long SSL_get_verify_result ( SSL* ssl ) ;
 
@@ -185,30 +195,30 @@ FUNCTION: void SSL_CTX_free ( SSL_CTX* ctx ) ;
 
 FUNCTION: void RAND_seed ( void* buf, int num ) ;
 
-FUNCTION: int SSL_set_cipher_list ( SSL* ssl, char* str ) ;
+FUNCTION: int SSL_set_cipher_list ( SSL* ssl, c-string str ) ;
 
-FUNCTION: int SSL_use_RSAPrivateKey_file ( SSL* ssl, char* str ) ;
+FUNCTION: int SSL_use_RSAPrivateKey_file ( SSL* ssl, c-string str ) ;
 
 FUNCTION: int SSL_CTX_use_RSAPrivateKey_file ( SSL_CTX* ctx, int type ) ;
 
 FUNCTION: int SSL_use_certificate_file ( SSL* ssl,
-                                         char* str, int type ) ;
+                                         c-string str, int type ) ;
 
-FUNCTION: int SSL_CTX_load_verify_locations ( SSL_CTX* ctx, char* CAfile,
-                                              char* CApath ) ;
+FUNCTION: int SSL_CTX_load_verify_locations ( SSL_CTX* ctx, c-string CAfile,
+                                              c-string CApath ) ;
 
 FUNCTION: int SSL_CTX_set_default_verify_paths ( SSL_CTX* ctx ) ;
 
-: SSL_VERIFY_NONE 0 ; inline
-: SSL_VERIFY_PEER 1 ; inline
-: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2 ; inline
-: SSL_VERIFY_CLIENT_ONCE 4 ; inline
+CONSTANT: SSL_VERIFY_NONE 0
+CONSTANT: SSL_VERIFY_PEER 1
+CONSTANT: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2
+CONSTANT: SSL_VERIFY_CLIENT_ONCE 4
 
 FUNCTION: void SSL_CTX_set_verify ( SSL_CTX* ctx, int mode, void* callback ) ;
 
 FUNCTION: void SSL_CTX_set_client_CA_list ( SSL_CTX* ctx, SSL* list ) ;
 
-FUNCTION: SSL* SSL_load_client_CA_file ( char* file ) ;
+FUNCTION: SSL* SSL_load_client_CA_file ( c-string file ) ;
 
 ! Used to manipulate settings of the SSL_CTX and SSL objects.
 ! This function should never be called directly
@@ -219,7 +229,7 @@ FUNCTION: void SSL_CTX_set_default_passwd_cb ( SSL_CTX* ctx, void* cb ) ;
 FUNCTION: void SSL_CTX_set_default_passwd_cb_userdata ( SSL_CTX* ctx,
                                                         void* u ) ;
 
-FUNCTION: int SSL_CTX_use_PrivateKey_file ( SSL_CTX* ctx, char* file,
+FUNCTION: int SSL_CTX_use_PrivateKey_file ( SSL_CTX* ctx, c-string file,
                                             int type ) ;
 
 ! Sets the maximum depth for the allowed ctx certificate chain verification
@@ -242,30 +252,18 @@ FUNCTION: void* BIO_f_ssl (  ) ;
 : SSL_CTX_set_session_cache_mode ( ctx mode -- n )
     [ SSL_CTRL_SET_SESS_CACHE_MODE ] dip f SSL_CTX_ctrl ;
 
-: SSL_SESS_CACHE_OFF                      HEX: 0000 ; inline
-: SSL_SESS_CACHE_CLIENT                   HEX: 0001 ; inline
-: SSL_SESS_CACHE_SERVER                   HEX: 0002 ; inline
-
-: SSL_SESS_CACHE_BOTH ( -- n )
-    { SSL_SESS_CACHE_CLIENT SSL_SESS_CACHE_SERVER } flags ; inline
+CONSTANT: SSL_SESS_CACHE_OFF    0x0000
+CONSTANT: SSL_SESS_CACHE_CLIENT 0x0001
+CONSTANT: SSL_SESS_CACHE_SERVER 0x0002
 
-: SSL_SESS_CACHE_NO_AUTO_CLEAR            HEX: 0080 ; inline
-: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP       HEX: 0100 ; inline
-: SSL_SESS_CACHE_NO_INTERNAL_STORE        HEX: 0200 ; inline
+CONSTANT: SSL_SESS_CACHE_BOTH flags{ SSL_SESS_CACHE_CLIENT SSL_SESS_CACHE_SERVER }
 
-: SSL_SESS_CACHE_NO_INTERNAL ( -- n )
-    { SSL_SESS_CACHE_NO_INTERNAL_LOOKUP SSL_SESS_CACHE_NO_INTERNAL_STORE } flags ; inline
+CONSTANT: SSL_SESS_CACHE_NO_AUTO_CLEAR      0x0080
+CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100
+CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_STORE  0x0200
 
-! ===============================================
-! x509.h
-! ===============================================
-
-TYPEDEF: void* X509_NAME*
-
-TYPEDEF: void* X509*
-
-FUNCTION: int X509_NAME_get_text_by_NID ( X509_NAME* name, int nid, void* buf, int len ) ;
-FUNCTION: X509_NAME* X509_get_subject_name ( X509* a ) ;
+CONSTANT: SSL_SESS_CACHE_NO_INTERNAL
+    flags{ SSL_SESS_CACHE_NO_INTERNAL_LOOKUP SSL_SESS_CACHE_NO_INTERNAL_STORE }
 
 ! ===============================================
 ! x509_vfy.h
@@ -279,11 +277,12 @@ H{ } clone verify-messages set-global
 
 : verify-message ( n -- word ) verify-messages get-global at ;
 
-: X509_V_:
-    scan "X509_V_" prepend create-in
-    scan-word
-    [ 1quotation define-inline ]
-    [ verify-messages get set-at ] 2bi ; parsing
+SYNTAX: X509_V_:
+    scan-token "X509_V_" prepend create-in
+    scan-number
+    [ 1quotation ( -- value ) define-inline ]
+    [ verify-messages get set-at ]
+    2bi ;
 
 >>
 
@@ -333,4 +332,4 @@ X509_V_: ERR_APPLICATION_VERIFICATION 50
 ! obj_mac.h
 ! ===============================================
 
-: NID_commonName 13 ; inline
+CONSTANT: NID_commonName 13