]> gitweb.factorcode.org Git - factor.git/blob - basis/openssl/libcrypto/libcrypto.factor
fb39a8e51bef955c6c4fa5666914ac3bea53f078
[factor.git] / basis / openssl / libcrypto / libcrypto.factor
1 ! Copyright (C) 2007 Elie CHAFTARI, 2009 Maxim Savchenko
2 ! See http://factorcode.org/license.txt for BSD license.
3 !
4 ! Tested with OpenSSL 0.9.8a_0 on Mac OS X 10.4.9 PowerPC
5 !
6 ! export LD_LIBRARY_PATH=/opt/local/lib
7
8 USING: alien alien.c-types alien.syntax combinators kernel system
9 alien.libraries classes.struct ;
10
11 IN: openssl.libcrypto
12
13 <<
14 {
15     { [ os openbsd? ] [ ] } ! VM is linked with it
16     { [ os netbsd? ] [ ] }
17     { [ os winnt? ] [ "libcrypto" "libeay32.dll" cdecl add-library ] }
18     { [ os macosx? ] [ "libcrypto" "libcrypto.dylib" cdecl add-library ] }
19     { [ os unix? ] [ "libcrypto" "libcrypto.so" cdecl add-library ] }
20 } cond
21 >>
22
23 STRUCT: bio-method
24     { type int }
25     { name void* }
26     { bwrite void* }
27     { bread void* }
28     { bputs void* }
29     { bgets void* }
30     { ctrl void* }
31     { create void* }
32     { destroy void* }
33     { callback-ctrl void* } ;
34
35 STRUCT: bio
36     { method void* }
37     { callback void* }
38     { cb-arg void* }
39     { init int }
40     { shutdown int }
41     { flags int }
42     { retry-reason int }
43     { num int }
44     { ptr void* }
45     { next-bio void* }
46     { prev-bio void* }
47     { references int } 
48     { num-read ulong }
49     { num-write ulong } 
50     { crypto-ex-data-stack void* }
51     { crypto-ex-data-dummy int } ;
52
53 CONSTANT: BIO_NOCLOSE       HEX: 00
54 CONSTANT: BIO_CLOSE         HEX: 01
55
56 CONSTANT: RSA_3             HEX: 3
57 CONSTANT: RSA_F4            HEX: 10001
58
59 CONSTANT: BIO_C_SET_SSL     109
60 CONSTANT: BIO_C_GET_SSL     110
61
62 LIBRARY: libcrypto
63
64 ! ===============================================
65 ! bio.h
66 ! ===============================================
67
68 FUNCTION: bio* BIO_new_file ( c-string filename, c-string mode ) ;
69
70 FUNCTION: int BIO_printf ( bio* bio, c-string format ) ;
71
72 FUNCTION: long BIO_ctrl ( void* bio, int cmd, long larg, void* parg ) ;
73
74 FUNCTION: void* BIO_new_socket ( int fd, int close-flag ) ;
75
76 FUNCTION: void* BIO_new ( void* method ) ;
77
78 FUNCTION: int BIO_set ( void* bio, void* method ) ;
79
80 FUNCTION: int BIO_free ( void* bio ) ;
81
82 FUNCTION: void* BIO_push ( void* bio, void* append ) ;
83
84 FUNCTION: int BIO_read ( void* b, void* buf, int len ) ;
85
86 FUNCTION: int BIO_gets ( void* b, c-string buf, int size ) ;
87
88 FUNCTION: int BIO_write ( void* b, void* buf, int len ) ;
89
90 FUNCTION: int BIO_puts ( void* bp, c-string buf ) ;
91
92 FUNCTION: ulong ERR_get_error (  ) ;
93
94 FUNCTION: void ERR_clear_error ( ) ;
95
96 FUNCTION: c-string ERR_error_string ( ulong e, void* buf ) ;
97
98 FUNCTION: void* BIO_f_buffer (  ) ;
99
100 ! ===============================================
101 ! evp.h
102 ! ===============================================
103
104 CONSTANT: EVP_MAX_MD_SIZE 64
105
106 C-TYPE: EVP_MD
107 C-TYPE: ENGINE
108
109 STRUCT: EVP_MD_CTX
110     { digest EVP_MD* }
111     { engine ENGINE* }
112     { flags ulong }
113     { md_data void* } ;
114
115 ! Initialize ciphers and digest tables
116 FUNCTION: void OpenSSL_add_all_ciphers (  ) ;
117
118 FUNCTION: void OpenSSL_add_all_digests (  ) ;
119
120 ! Clean them up before exiting
121 FUNCTION: void EVP_cleanup (  ) ;
122
123 FUNCTION: EVP_MD* EVP_get_digestbyname ( c-string name ) ;
124
125 FUNCTION: void EVP_MD_CTX_init ( EVP_MD* ctx ) ;
126
127 FUNCTION: int EVP_MD_CTX_cleanup ( EVP_MD_CTX* ctx ) ;
128
129 FUNCTION: EVP_MD_CTX* EVP_MD_CTX_create ( ) ;
130
131 FUNCTION: void EVP_MD_CTX_destroy ( EVP_MD_CTX* ctx ) ;
132
133 FUNCTION: int EVP_MD_CTX_copy_ex ( EVP_MD_CTX* out, EVP_MD_CTX* in ) ;  
134
135 FUNCTION: int EVP_DigestInit_ex ( EVP_MD_CTX* ctx, EVP_MD* type, ENGINE* impl ) ;
136
137 FUNCTION: int EVP_DigestUpdate ( EVP_MD_CTX* ctx, void* d, uint cnt ) ;
138
139 FUNCTION: int EVP_DigestFinal_ex ( EVP_MD_CTX* ctx, void* md, uint* s ) ;
140
141 FUNCTION: int EVP_Digest ( void* data, uint count, void* md, uint* size, EVP_MD* type, ENGINE* impl ) ;
142
143 FUNCTION: int EVP_MD_CTX_copy ( EVP_MD_CTX* out, EVP_MD_CTX* in ) ;  
144
145 FUNCTION: int EVP_DigestInit ( EVP_MD_CTX* ctx, EVP_MD* type ) ;
146
147 FUNCTION: int EVP_DigestFinal ( EVP_MD_CTX* ctx, void* md, uint* s ) ;
148
149 FUNCTION: void* PEM_read_bio_DHparams ( void* bp, void* x, void* cb,
150                                         void* u ) ;
151
152 ! ===============================================
153 ! rsa.h
154 ! ===============================================
155
156 FUNCTION: void* RSA_generate_key ( int num, ulong e, void* callback,
157                                    void* cb_arg ) ;
158
159 FUNCTION: int RSA_check_key ( void* rsa ) ;
160
161 FUNCTION: void RSA_free ( void* rsa ) ;
162
163 FUNCTION: int RSA_print_fp ( void* fp, void* x, int offset ) ;
164
165 ! ===============================================
166 ! objects.h
167 ! ===============================================
168
169 FUNCTION: int OBJ_sn2nid ( c-string s ) ;
170
171 ! ===============================================
172 ! bn.h
173 ! ===============================================
174
175 FUNCTION: int BN_num_bits ( void* a ) ;
176
177 FUNCTION: void* BN_bin2bn ( void* s, int len, void* ret ) ;
178
179 FUNCTION: int BN_bn2bin ( void* a, void* to ) ;
180
181 FUNCTION: void BN_clear_free ( void* a ) ;
182
183 ! ===============================================
184 ! ec.h
185 ! ===============================================
186
187 CONSTANT: POINT_CONVERSION_COMPRESSED 2
188 CONSTANT: POINT_CONVERSION_UNCOMPRESSED 4
189 CONSTANT: POINT_CONVERSION_HYBRID 6
190
191 FUNCTION: int EC_GROUP_get_degree ( void* group ) ;
192
193 FUNCTION: void* EC_POINT_new ( void* group ) ;
194
195 FUNCTION: void EC_POINT_clear_free ( void* point ) ;
196
197 FUNCTION: int EC_POINT_point2oct ( void* group, void* point, int form, void* buf, int len, void* ctx ) ;
198
199 FUNCTION: int EC_POINT_oct2point ( void* group, void* point, void* buf, int len, void* ctx ) ;
200
201 FUNCTION: void* EC_KEY_new_by_curve_name ( int nid ) ;
202
203 FUNCTION: void EC_KEY_free ( void* r ) ;
204
205 FUNCTION: int EC_KEY_set_private_key ( void* key, void* priv_key ) ;
206
207 FUNCTION: int EC_KEY_set_public_key ( void* key, void* pub_key ) ;
208
209 FUNCTION: int EC_KEY_generate_key ( void* eckey ) ;
210
211 FUNCTION: void* EC_KEY_get0_group ( void* key ) ;
212
213 FUNCTION: void* EC_KEY_get0_private_key ( void* key ) ;
214
215 FUNCTION: void* EC_KEY_get0_public_key ( void* key ) ;
216
217 ! ===============================================
218 ! ecdsa.h
219 ! ===============================================
220
221 FUNCTION: int ECDSA_size ( void* eckey ) ;
222
223 FUNCTION: int ECDSA_sign ( int type, void* dgst, int dgstlen, void* sig, void* siglen, void* eckey ) ;
224
225 FUNCTION: int ECDSA_verify ( int type, void* dgst, int dgstlen, void* sig, int siglen, void* eckey ) ;