1 ! Copyright (C) 2007 Elie CHAFTARI, 2009 Maxim Savchenko
2 ! See http://factorcode.org/license.txt for BSD license.
4 ! Tested with OpenSSL 0.9.8a_0 on Mac OS X 10.4.9 PowerPC
6 ! export LD_LIBRARY_PATH=/opt/local/lib
8 USING: alien alien.syntax combinators kernel system
15 { [ os openbsd? ] [ ] } ! VM is linked with it
16 { [ os winnt? ] [ "libcrypto" "libeay32.dll" "cdecl" add-library ] }
17 { [ os macosx? ] [ "libcrypto" "libcrypto.dylib" "cdecl" add-library ] }
18 { [ os unix? ] [ "libcrypto" "libcrypto.so" "cdecl" add-library ] }
32 { "void*" "callback-ctrl" } ;
36 { "void*" "callback" }
41 { "int" "retry-reason" }
44 { "void*" "next-bio" }
45 { "void*" "prev-bio" }
46 { "int" "references" }
47 { "ulong" "num-read" }
48 { "ulong" "num-write" }
49 { "void*" "crypto-ex-data-stack" }
50 { "int" "crypto-ex-data-dummy" } ;
52 CONSTANT: BIO_NOCLOSE HEX: 00
53 CONSTANT: BIO_CLOSE HEX: 01
55 CONSTANT: RSA_3 HEX: 3
56 CONSTANT: RSA_F4 HEX: 10001
58 CONSTANT: BIO_C_SET_SSL 109
59 CONSTANT: BIO_C_GET_SSL 110
63 ! ===============================================
65 ! ===============================================
67 FUNCTION: bio* BIO_new_file ( char* filename, char* mode ) ;
69 FUNCTION: int BIO_printf ( bio* bio, char* format ) ;
71 FUNCTION: long BIO_ctrl ( void* bio, int cmd, long larg, void* parg ) ;
73 FUNCTION: void* BIO_new_socket ( int fd, int close-flag ) ;
75 FUNCTION: void* BIO_new ( void* method ) ;
77 FUNCTION: int BIO_set ( void* bio, void* method ) ;
79 FUNCTION: int BIO_free ( void* bio ) ;
81 FUNCTION: void* BIO_push ( void* bio, void* append ) ;
83 FUNCTION: int BIO_read ( void* b, void* buf, int len ) ;
85 FUNCTION: int BIO_gets ( void* b, char* buf, int size ) ;
87 FUNCTION: int BIO_write ( void* b, void* buf, int len ) ;
89 FUNCTION: int BIO_puts ( void* bp, char* buf ) ;
91 FUNCTION: ulong ERR_get_error ( ) ;
93 FUNCTION: void ERR_clear_error ( ) ;
95 FUNCTION: char* ERR_error_string ( ulong e, void* buf ) ;
97 FUNCTION: void* BIO_f_buffer ( ) ;
99 ! ===============================================
101 ! ===============================================
103 CONSTANT: EVP_MAX_MD_SIZE 64
106 { "EVP_MD*" "digest" }
107 { "ENGINE*" "engine" }
109 { "void*" "md_data" } ;
111 TYPEDEF: void* EVP_MD*
112 TYPEDEF: void* ENGINE*
114 ! Initialize ciphers and digest tables
115 FUNCTION: void OpenSSL_add_all_ciphers ( ) ;
117 FUNCTION: void OpenSSL_add_all_digests ( ) ;
119 ! Clean them up before exiting
120 FUNCTION: void EVP_cleanup ( ) ;
122 FUNCTION: EVP_MD* EVP_get_digestbyname ( char* name ) ;
124 FUNCTION: void EVP_MD_CTX_init ( EVP_MD* ctx ) ;
126 FUNCTION: int EVP_MD_CTX_cleanup ( EVP_MD_CTX* ctx ) ;
128 FUNCTION: EVP_MD_CTX* EVP_MD_CTX_create ( ) ;
130 FUNCTION: void EVP_MD_CTX_destroy ( EVP_MD_CTX* ctx ) ;
132 FUNCTION: int EVP_MD_CTX_copy_ex ( EVP_MD_CTX* out, EVP_MD_CTX* in ) ;
134 FUNCTION: int EVP_DigestInit_ex ( EVP_MD_CTX* ctx, EVP_MD* type, ENGINE* impl ) ;
136 FUNCTION: int EVP_DigestUpdate ( EVP_MD_CTX* ctx, void* d, uint cnt ) ;
138 FUNCTION: int EVP_DigestFinal_ex ( EVP_MD_CTX* ctx, void* md, uint* s ) ;
140 FUNCTION: int EVP_Digest ( void* data, uint count, void* md, uint* size, EVP_MD* type, ENGINE* impl ) ;
142 FUNCTION: int EVP_MD_CTX_copy ( EVP_MD_CTX* out, EVP_MD_CTX* in ) ;
144 FUNCTION: int EVP_DigestInit ( EVP_MD_CTX* ctx, EVP_MD* type ) ;
146 FUNCTION: int EVP_DigestFinal ( EVP_MD_CTX* ctx, void* md, uint* s ) ;
148 FUNCTION: void* PEM_read_bio_DHparams ( void* bp, void* x, void* cb,
151 ! ===============================================
153 ! ===============================================
155 FUNCTION: void* RSA_generate_key ( int num, ulong e, void* callback,
158 FUNCTION: int RSA_check_key ( void* rsa ) ;
160 FUNCTION: void RSA_free ( void* rsa ) ;
162 FUNCTION: int RSA_print_fp ( void* fp, void* x, int offset ) ;
164 ! ===============================================
166 ! ===============================================
168 FUNCTION: int OBJ_sn2nid ( char* s ) ;
170 ! ===============================================
172 ! ===============================================
174 FUNCTION: int BN_num_bits ( void* a ) ;
176 FUNCTION: void* BN_bin2bn ( void* s, int len, void* ret ) ;
178 FUNCTION: int BN_bn2bin ( void* a, void* to ) ;
180 FUNCTION: void BN_clear_free ( void* a ) ;
182 ! ===============================================
184 ! ===============================================
186 CONSTANT: POINT_CONVERSION_COMPRESSED 2
187 CONSTANT: POINT_CONVERSION_UNCOMPRESSED 4
188 CONSTANT: POINT_CONVERSION_HYBRID 6
190 FUNCTION: int EC_GROUP_get_degree ( void* group ) ;
192 FUNCTION: void* EC_POINT_new ( void* group ) ;
194 FUNCTION: void EC_POINT_clear_free ( void* point ) ;
196 FUNCTION: int EC_POINT_point2oct ( void* group, void* point, int form, void* buf, int len, void* ctx ) ;
198 FUNCTION: int EC_POINT_oct2point ( void* group, void* point, void* buf, int len, void* ctx ) ;
200 FUNCTION: void* EC_KEY_new_by_curve_name ( int nid ) ;
202 FUNCTION: void EC_KEY_free ( void* r ) ;
204 FUNCTION: int EC_KEY_set_private_key ( void* key, void* priv_key ) ;
206 FUNCTION: int EC_KEY_set_public_key ( void* key, void* pub_key ) ;
208 FUNCTION: int EC_KEY_generate_key ( void* eckey ) ;
210 FUNCTION: void* EC_KEY_get0_group ( void* key ) ;
212 FUNCTION: void* EC_KEY_get0_private_key ( void* key ) ;
214 FUNCTION: void* EC_KEY_get0_public_key ( void* key ) ;
216 ! ===============================================
218 ! ===============================================
220 FUNCTION: int ECDSA_size ( void* eckey ) ;
222 FUNCTION: int ECDSA_sign ( int type, void* dgst, int dgstlen, void* sig, void* siglen, void* eckey ) ;
224 FUNCTION: int ECDSA_verify ( int type, void* dgst, int dgstlen, void* sig, int siglen, void* eckey ) ;