Update OpenSSL calls to work with LibreSSL/newer OpenSSL
RSA_generate_key has been deprecated, and is not available in either LibreSSL or newer OpenSSL that are not compiled with deprecated call support. This commit switches to the still-supported RSA_generate_key_ex, which is supported by both libraries. Note that this is still insufficient for Factor to work under LibreSSL, though we now get a call further than before.db4
parent
69d5a3a276
commit
8073c8a77e
|
@ -1,14 +1,14 @@
|
||||||
! Copyright (C) 2007, 2008, Slava Pestov, Elie CHAFTARI.
|
! Copyright (C) 2007, 2008, Slava Pestov, Elie CHAFTARI.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: accessors alien alien.c-types alien.data alien.strings
|
USING: accessors alien alien.c-types alien.data alien.strings
|
||||||
assocs byte-arrays classes.struct combinators destructors fry io
|
assocs byte-arrays classes.struct combinators destructors fry
|
||||||
io.backend io.buffers io.encodings.8-bit.latin1
|
io io.binary io.backend io.buffers io.encodings.8-bit.latin1
|
||||||
io.encodings.utf8 io.files io.pathnames io.ports io.sockets
|
io.encodings.utf8 io.files io.pathnames io.ports io.sockets
|
||||||
io.sockets.secure io.timeouts kernel libc
|
io.sockets.secure io.timeouts kernel libc
|
||||||
|
|
||||||
locals math math.order math.parser namespaces openssl
|
locals math math.functions math.order math.parser namespaces
|
||||||
openssl.libcrypto openssl.libssl random sequences splitting
|
openssl openssl.libcrypto openssl.libssl random sequences
|
||||||
unicode.case ;
|
splitting unicode.case ;
|
||||||
IN: io.sockets.secure.openssl
|
IN: io.sockets.secure.openssl
|
||||||
|
|
||||||
GENERIC: ssl-method ( symbol -- method )
|
GENERIC: ssl-method ( symbol -- method )
|
||||||
|
@ -20,6 +20,18 @@ M: TLSv1 ssl-method drop TLSv1_method ;
|
||||||
|
|
||||||
TUPLE: openssl-context < secure-context aliens sessions ;
|
TUPLE: openssl-context < secure-context aliens sessions ;
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
: bn-bytes-needed ( num -- bytes-required )
|
||||||
|
log2 1 + 8 / ceiling ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
: number>bn ( num -- bn )
|
||||||
|
dup bn-bytes-needed >be
|
||||||
|
dup length
|
||||||
|
f BN_bin2bn ; inline
|
||||||
|
|
||||||
: set-session-cache ( ctx -- )
|
: set-session-cache ( ctx -- )
|
||||||
handle>>
|
handle>>
|
||||||
[ SSL_SESS_CACHE_BOTH SSL_CTX_set_session_cache_mode ssl-error ]
|
[ SSL_SESS_CACHE_BOTH SSL_CTX_set_session_cache_mode ssl-error ]
|
||||||
|
@ -113,9 +125,13 @@ M: rsa dispose* handle>> RSA_free ;
|
||||||
|
|
||||||
: generate-eph-rsa-key ( ctx -- )
|
: generate-eph-rsa-key ( ctx -- )
|
||||||
[ handle>> ]
|
[ handle>> ]
|
||||||
[
|
[| ctx |
|
||||||
config>> ephemeral-key-bits>> RSA_F4 f f RSA_generate_key
|
RSA_new :> rsa-struct
|
||||||
dup ssl-error <rsa> &dispose handle>>
|
rsa-struct
|
||||||
|
ctx config>> ephemeral-key-bits>>
|
||||||
|
RSA_F4 number>bn &BN_clear_free
|
||||||
|
f RSA_generate_key_ex
|
||||||
|
ssl-error rsa-struct <rsa> &dispose handle>>
|
||||||
] bi
|
] bi
|
||||||
SSL_CTX_set_tmp_rsa ssl-error ;
|
SSL_CTX_set_tmp_rsa ssl-error ;
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
!
|
!
|
||||||
! export LD_LIBRARY_PATH=/opt/local/lib
|
! export LD_LIBRARY_PATH=/opt/local/lib
|
||||||
|
|
||||||
USING: alien alien.c-types alien.libraries alien.syntax
|
USING: alien alien.c-types alien.destructors alien.libraries
|
||||||
classes.struct combinators system ;
|
alien.syntax classes.struct combinators system ;
|
||||||
|
|
||||||
IN: openssl.libcrypto
|
IN: openssl.libcrypto
|
||||||
|
|
||||||
|
@ -180,8 +180,9 @@ FUNCTION: void* PEM_read_bio_DHparams ( void* bp, void* x, void* cb,
|
||||||
! rsa.h
|
! rsa.h
|
||||||
! ===============================================
|
! ===============================================
|
||||||
|
|
||||||
FUNCTION: void* RSA_generate_key ( int num, ulong e, void* callback,
|
FUNCTION: void* RSA_new ( )
|
||||||
void* cb_arg )
|
|
||||||
|
FUNCTION: int RSA_generate_key_ex ( void* rsa int bits, void* e, void* cb )
|
||||||
|
|
||||||
FUNCTION: int RSA_check_key ( void* rsa )
|
FUNCTION: int RSA_check_key ( void* rsa )
|
||||||
|
|
||||||
|
@ -206,6 +207,7 @@ FUNCTION: void* BN_bin2bn ( void* s, int len, void* ret )
|
||||||
FUNCTION: int BN_bn2bin ( void* a, void* to )
|
FUNCTION: int BN_bn2bin ( void* a, void* to )
|
||||||
|
|
||||||
FUNCTION: void BN_clear_free ( void* a )
|
FUNCTION: void BN_clear_free ( void* a )
|
||||||
|
DESTRUCTOR: BN_clear_free
|
||||||
|
|
||||||
! ===============================================
|
! ===============================================
|
||||||
! ec.h
|
! ec.h
|
||||||
|
|
Loading…
Reference in New Issue