@@ -4,7 +4,7 @@ use libc::strlen;
4
4
use openssl_macros:: corresponds;
5
5
use std:: ffi:: { c_void, CString } ;
6
6
7
- struct Engine ( * mut ffi:: ENGINE ) ;
7
+ pub struct Engine ( * mut ffi:: ENGINE ) ;
8
8
9
9
impl Engine {
10
10
/// Creates a new Engine.
@@ -71,21 +71,19 @@ impl Engine {
71
71
/// Adds the engine to OpenSSL's internal engine list.
72
72
#[ corresponds( ENGINE_add ) ]
73
73
#[ inline]
74
- pub fn add ( & mut self ) -> Result < ( ) , ErrorStack > {
74
+ pub fn add ( & mut self ) -> Result < i32 , ErrorStack > {
75
75
unsafe {
76
- cvt ( ffi:: ENGINE_add ( self . as_ptr ( ) ) ) ? ;
76
+ return cvt ( ffi:: ENGINE_add ( self . as_ptr ( ) ) ) ;
77
77
}
78
- Ok ( ( ) )
79
78
}
80
79
81
80
/// Removes the engine from OpenSSL's internal engine list.
82
81
#[ corresponds( ENGINE_remove ) ]
83
82
#[ inline]
84
- pub fn remove ( & mut self ) -> Result < ( ) , ErrorStack > {
83
+ pub fn remove ( & mut self ) -> Result < i32 , ErrorStack > {
85
84
unsafe {
86
- cvt ( ffi:: ENGINE_remove ( self . as_ptr ( ) ) ) ? ;
85
+ return cvt ( ffi:: ENGINE_remove ( self . as_ptr ( ) ) ) ;
87
86
}
88
- Ok ( ( ) )
89
87
}
90
88
91
89
/// Returns an engine with the passed in `id`.
@@ -102,11 +100,10 @@ impl Engine {
102
100
/// Remove all references to the passed in engine.
103
101
#[ corresponds( ENGINE_finish ) ]
104
102
#[ inline]
105
- pub fn finish ( & mut self ) -> Result < ( ) , ErrorStack > {
103
+ pub fn finish ( & mut self ) -> Result < i32 , ErrorStack > {
106
104
unsafe {
107
- cvt ( ffi:: ENGINE_finish ( self . as_ptr ( ) ) ) ? ;
105
+ return cvt ( ffi:: ENGINE_finish ( self . as_ptr ( ) ) ) ;
108
106
}
109
- Ok ( ( ) )
110
107
}
111
108
112
109
/// Loads the builtin engines.
@@ -181,82 +178,83 @@ impl Engine {
181
178
/// Sets the default RSA engine.
182
179
#[ corresponds( ENGINE_set_default_RSA ) ]
183
180
#[ inline]
184
- pub fn set_default_rsa ( & mut self ) -> Result < ( ) , ErrorStack > {
181
+ pub fn set_default_rsa ( & mut self ) -> Result < i32 , ErrorStack > {
185
182
unsafe {
186
- cvt ( ffi:: ENGINE_set_default_RSA ( self . as_ptr ( ) ) ) ?;
183
+ let result = cvt ( ffi:: ENGINE_set_default_RSA ( self . as_ptr ( ) ) ) ?;
184
+ Ok ( result)
187
185
}
188
- Ok ( ( ) )
189
186
}
190
187
191
188
/// Sets the default DSA engine.
192
189
#[ corresponds( ENGINE_set_default_DSA ) ]
193
190
#[ inline]
194
- pub fn set_default_dsa ( & mut self ) -> Result < ( ) , ErrorStack > {
191
+ pub fn set_default_dsa ( & mut self ) -> Result < i32 , ErrorStack > {
195
192
unsafe {
196
- cvt ( ffi:: ENGINE_set_default_DSA ( self . as_ptr ( ) ) ) ? ;
193
+ return cvt ( ffi:: ENGINE_set_default_DSA ( self . as_ptr ( ) ) ) ;
197
194
}
198
- Ok ( ( ) )
199
195
}
200
196
201
197
/// Sets the default DH engine.
202
198
#[ corresponds( ENGINE_set_default_DH ) ]
203
199
#[ inline]
204
- pub fn set_default_dh ( & mut self ) -> Result < ( ) , ErrorStack > {
200
+ pub fn set_default_dh ( & mut self ) -> Result < i32 , ErrorStack > {
205
201
unsafe {
206
- cvt ( ffi:: ENGINE_set_default_DH ( self . as_ptr ( ) ) ) ? ;
202
+ return cvt ( ffi:: ENGINE_set_default_DH ( self . as_ptr ( ) ) ) ;
207
203
}
208
- Ok ( ( ) )
209
204
}
210
205
211
206
/// Sets the default RAND engine.
212
207
#[ corresponds( ENGINE_set_default_RAND ) ]
213
208
#[ inline]
214
- pub fn set_default_rand ( & mut self ) -> Result < ( ) , ErrorStack > {
209
+ pub fn set_default_rand ( & mut self ) -> Result < i32 , ErrorStack > {
215
210
unsafe {
216
- cvt ( ffi:: ENGINE_set_default_RAND ( self . as_ptr ( ) ) ) ? ;
211
+ return cvt ( ffi:: ENGINE_set_default_RAND ( self . as_ptr ( ) ) ) ;
217
212
}
218
- Ok ( ( ) )
219
213
}
220
214
221
215
/// Sets the default ciphers engine.
222
216
#[ corresponds( ENGINE_set_default_ciphers ) ]
223
217
#[ inline]
224
- pub fn set_default_ciphers ( & mut self ) -> Result < ( ) , ErrorStack > {
218
+ pub fn set_default_ciphers ( & mut self ) -> Result < i32 , ErrorStack > {
225
219
unsafe {
226
- cvt ( ffi:: ENGINE_set_default_ciphers ( self . as_ptr ( ) ) ) ? ;
220
+ return cvt ( ffi:: ENGINE_set_default_ciphers ( self . as_ptr ( ) ) ) ;
227
221
}
228
- Ok ( ( ) )
229
222
}
230
223
231
224
/// Sets the default digests engine.
232
225
#[ corresponds( ENGINE_set_default_digests ) ]
233
226
#[ inline]
234
- pub fn set_default_digests ( & mut self ) -> Result < ( ) , ErrorStack > {
227
+ pub fn set_default_digests ( & mut self ) -> Result < i32 , ErrorStack > {
235
228
unsafe {
236
- cvt ( ffi:: ENGINE_set_default_digests ( self . as_ptr ( ) ) ) ? ;
229
+ return cvt ( ffi:: ENGINE_set_default_digests ( self . as_ptr ( ) ) ) ;
237
230
}
238
- Ok ( ( ) )
239
231
}
240
232
241
233
/// Sets the default string for the engine.
242
234
#[ corresponds( ENGINE_set_default_string ) ]
243
235
#[ inline]
244
- pub fn set_default_string ( & mut self , list : & str ) -> Result < ( ) , ErrorStack > {
236
+ pub fn set_default_string ( & mut self , list : & str ) -> Result < i32 , ErrorStack > {
245
237
let list = CString :: new ( list) . unwrap ( ) ;
246
238
unsafe {
247
- cvt ( ffi:: ENGINE_set_default_string ( self . as_ptr ( ) , list. as_ptr ( ) ) ) ?;
239
+ return cvt ( ffi:: ENGINE_set_default_string ( self . as_ptr ( ) , list. as_ptr ( ) ) ) ;
240
+ }
241
+ }
242
+ /// Sets the default engine.
243
+ #[ corresponds( ENGINE_init ) ]
244
+ #[ inline]
245
+ pub fn init ( & mut self ) -> Result < i32 , ErrorStack > {
246
+ unsafe {
247
+ return cvt ( ffi:: ENGINE_init ( self . as_ptr ( ) ) ) ;
248
248
}
249
- Ok ( ( ) )
250
249
}
251
250
252
251
/// Sets the default engine.
253
252
#[ corresponds( ENGINE_set_default ) ]
254
253
#[ inline]
255
- pub fn set_default ( & mut self , flags : u32 ) -> Result < ( ) , ErrorStack > {
254
+ pub fn set_default ( & mut self , flags : u32 ) -> Result < i32 , ErrorStack > {
256
255
unsafe {
257
- cvt ( ffi:: ENGINE_set_default ( self . as_ptr ( ) , flags) ) ? ;
256
+ return cvt ( ffi:: ENGINE_set_default ( self . as_ptr ( ) , flags) ) ;
258
257
}
259
- Ok ( ( ) )
260
258
}
261
259
262
260
/// Returns the (global?) engine table flags.
@@ -280,11 +278,10 @@ impl Engine {
280
278
/// Registers the input engine as the RSA engine.
281
279
#[ corresponds( ENGINE_register_RSA ) ]
282
280
#[ inline]
283
- pub fn register_rsa ( & mut self ) -> Result < ( ) , ErrorStack > {
281
+ pub fn register_rsa ( & mut self ) -> Result < i32 , ErrorStack > {
284
282
unsafe {
285
- cvt ( ffi:: ENGINE_register_RSA ( self . as_ptr ( ) ) ) ? ;
283
+ return cvt ( ffi:: ENGINE_register_RSA ( self . as_ptr ( ) ) ) ;
286
284
}
287
- Ok ( ( ) )
288
285
}
289
286
290
287
/// Unregisters the input engine as the RSA engine.
@@ -308,11 +305,10 @@ impl Engine {
308
305
/// Registers the input engine as the DSA engine.
309
306
#[ corresponds( ENGINE_register_DSA ) ]
310
307
#[ inline]
311
- pub fn register_dsa ( & mut self ) -> Result < ( ) , ErrorStack > {
308
+ pub fn register_dsa ( & mut self ) -> Result < i32 , ErrorStack > {
312
309
unsafe {
313
- cvt ( ffi:: ENGINE_register_DSA ( self . as_ptr ( ) ) ) ? ;
310
+ return cvt ( ffi:: ENGINE_register_DSA ( self . as_ptr ( ) ) ) ;
314
311
}
315
- Ok ( ( ) )
316
312
}
317
313
318
314
/// Unregisters the input engine as the DSA engine.
@@ -336,11 +332,10 @@ impl Engine {
336
332
/// Registers the input engine as the DH engine.
337
333
#[ corresponds( ENGINE_register_DH ) ]
338
334
#[ inline]
339
- pub fn register_dh ( & mut self ) -> Result < ( ) , ErrorStack > {
335
+ pub fn register_dh ( & mut self ) -> Result < i32 , ErrorStack > {
340
336
unsafe {
341
- cvt ( ffi:: ENGINE_register_DH ( self . as_ptr ( ) ) ) ? ;
337
+ return cvt ( ffi:: ENGINE_register_DH ( self . as_ptr ( ) ) ) ;
342
338
}
343
- Ok ( ( ) )
344
339
}
345
340
346
341
/// Unregisters the input engine as the DH engine.
@@ -364,11 +359,10 @@ impl Engine {
364
359
/// Registers the input engine as the RAND engine.
365
360
#[ corresponds( ENGINE_register_RAND ) ]
366
361
#[ inline]
367
- pub fn register_rand ( & mut self ) -> Result < ( ) , ErrorStack > {
362
+ pub fn register_rand ( & mut self ) -> Result < i32 , ErrorStack > {
368
363
unsafe {
369
- cvt ( ffi:: ENGINE_register_RAND ( self . as_ptr ( ) ) ) ? ;
364
+ return cvt ( ffi:: ENGINE_register_RAND ( self . as_ptr ( ) ) ) ;
370
365
}
371
- Ok ( ( ) )
372
366
}
373
367
374
368
/// Unregisters the input engine as the RAND engine.
@@ -392,11 +386,10 @@ impl Engine {
392
386
/// Registers ciphers from the input engine.
393
387
#[ corresponds( ENGINE_register_ciphers ) ]
394
388
#[ inline]
395
- pub fn register_ciphers ( & mut self ) -> Result < ( ) , ErrorStack > {
389
+ pub fn register_ciphers ( & mut self ) -> Result < i32 , ErrorStack > {
396
390
unsafe {
397
- cvt ( ffi:: ENGINE_register_ciphers ( self . as_ptr ( ) ) ) ? ;
391
+ return cvt ( ffi:: ENGINE_register_ciphers ( self . as_ptr ( ) ) ) ;
398
392
}
399
- Ok ( ( ) )
400
393
}
401
394
402
395
/// Unregisters the ciphers from the input engine.
@@ -420,11 +413,10 @@ impl Engine {
420
413
/// Registers digests from the input engine.
421
414
#[ corresponds( ENGINE_register_digests ) ]
422
415
#[ inline]
423
- pub fn register_digests ( & mut self ) -> Result < ( ) , ErrorStack > {
416
+ pub fn register_digests ( & mut self ) -> Result < i32 , ErrorStack > {
424
417
unsafe {
425
- cvt ( ffi:: ENGINE_register_digests ( self . as_ptr ( ) ) ) ? ;
418
+ return cvt ( ffi:: ENGINE_register_digests ( self . as_ptr ( ) ) ) ;
426
419
}
427
- Ok ( ( ) )
428
420
}
429
421
430
422
/// Unregisters the digests from the input engine.
@@ -447,20 +439,18 @@ impl Engine {
447
439
448
440
#[ corresponds( ENGINE_register_complete ) ]
449
441
#[ inline]
450
- pub fn register_complete ( & mut self ) -> Result < ( ) , ErrorStack > {
442
+ pub fn register_complete ( & mut self ) -> Result < i32 , ErrorStack > {
451
443
unsafe {
452
- cvt ( ffi:: ENGINE_register_complete ( self . as_ptr ( ) ) ) ? ;
444
+ return cvt ( ffi:: ENGINE_register_complete ( self . as_ptr ( ) ) ) ;
453
445
}
454
- Ok ( ( ) )
455
446
}
456
447
457
448
#[ corresponds( ENGINE_register_all_complete ) ]
458
449
#[ inline]
459
- pub fn register_all_complete ( ) -> Result < ( ) , ErrorStack > {
450
+ pub fn register_all_complete ( ) -> Result < i32 , ErrorStack > {
460
451
unsafe {
461
- cvt ( ffi:: ENGINE_register_all_complete ( ) ) ? ;
452
+ return cvt ( ffi:: ENGINE_register_all_complete ( ) ) ;
462
453
}
463
- Ok ( ( ) )
464
454
}
465
455
466
456
#[ corresponds( ENGINE_ctrl ) ]
@@ -477,11 +467,10 @@ impl Engine {
477
467
478
468
#[ corresponds( ENGINE_cmd_is_executable ) ]
479
469
#[ inline]
480
- pub fn cmd_is_executable ( & mut self , cmd : i32 ) -> Result < ( ) , ErrorStack > {
470
+ pub fn cmd_is_executable ( & mut self , cmd : i32 ) -> Result < i32 , ErrorStack > {
481
471
unsafe {
482
- cvt ( ffi:: ENGINE_cmd_is_executable ( self . as_ptr ( ) , cmd) ) ? ;
472
+ return cvt ( ffi:: ENGINE_cmd_is_executable ( self . as_ptr ( ) , cmd) ) ;
483
473
}
484
- Ok ( ( ) )
485
474
}
486
475
487
476
#[ corresponds( ENGINE_ctrl_cmd ) ]
@@ -497,39 +486,49 @@ impl Engine {
497
486
_cmd : & str ,
498
487
_arg : & str ,
499
488
_optional : i32 ,
500
- ) -> Result < ( ) , ErrorStack > {
501
- todo ! ( ) ;
489
+ ) -> Result < i32 , ErrorStack > {
490
+ let cmd = CString :: new ( _cmd) . unwrap ( ) ;
491
+ let arg = CString :: new ( _arg) . unwrap ( ) ;
492
+ unsafe {
493
+ return cvt ( ffi:: ENGINE_ctrl_cmd_string ( self . as_ptr ( ) , cmd. as_ptr ( ) , arg. as_ptr ( ) , 0 ) ) ;
494
+ }
495
+ }
496
+ #[ corresponds( ENGINE_ctrl_cmd_string ) ]
497
+ #[ inline]
498
+ pub fn load (
499
+ & mut self
500
+ ) -> Result < i32 , ErrorStack > {
501
+ let cmd = CString :: new ( "LOAD" ) . unwrap ( ) ;
502
+ unsafe {
503
+ return cvt ( ffi:: ENGINE_ctrl_cmd_string ( self . as_ptr ( ) , cmd. as_ptr ( ) , std:: ptr:: null ( ) , 0 ) ) ;
504
+ }
502
505
}
503
-
504
506
#[ corresponds( ENGINE_up_ref ) ]
505
507
#[ inline]
506
- pub fn up_ref ( & mut self ) -> Result < ( ) , ErrorStack > {
508
+ pub fn up_ref ( & mut self ) -> Result < i32 , ErrorStack > {
507
509
unsafe {
508
- cvt ( ffi:: ENGINE_up_ref ( self . as_ptr ( ) ) ) ? ;
510
+ return cvt ( ffi:: ENGINE_up_ref ( self . as_ptr ( ) ) ) ;
509
511
}
510
- Ok ( ( ) )
511
512
}
512
513
513
514
/// Sets the ID on the engine.
514
515
#[ corresponds( ENGINE_set_id ) ]
515
516
#[ inline]
516
- pub fn set_id ( & mut self , id : & str ) -> Result < ( ) , ErrorStack > {
517
+ pub fn set_id ( & mut self , id : & str ) -> Result < i32 , ErrorStack > {
517
518
let id = CString :: new ( id) . unwrap ( ) ;
518
519
unsafe {
519
- cvt ( ffi:: ENGINE_set_id ( self . as_ptr ( ) , id. as_ptr ( ) ) ) ? ;
520
+ return cvt ( ffi:: ENGINE_set_id ( self . as_ptr ( ) , id. as_ptr ( ) ) ) ;
520
521
}
521
- Ok ( ( ) )
522
522
}
523
523
524
524
/// Sets the name on the engine.
525
525
#[ corresponds( ENGINE_set_name ) ]
526
526
#[ inline]
527
- pub fn set_name ( & mut self , name : & str ) -> Result < ( ) , ErrorStack > {
527
+ pub fn set_name ( & mut self , name : & str ) -> Result < i32 , ErrorStack > {
528
528
let name = CString :: new ( name) . unwrap ( ) ;
529
529
unsafe {
530
- cvt ( ffi:: ENGINE_set_name ( self . as_ptr ( ) , name. as_ptr ( ) ) ) ? ;
530
+ return cvt ( ffi:: ENGINE_set_name ( self . as_ptr ( ) , name. as_ptr ( ) ) ) ;
531
531
}
532
- Ok ( ( ) )
533
532
}
534
533
535
534
/// Sets the RSA method on the engine.
0 commit comments