48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Factor
		
	
	
USING:
 | 
						|
    arrays
 | 
						|
    kernel
 | 
						|
    math
 | 
						|
    openssl.libssl
 | 
						|
    sequences
 | 
						|
    tools.test ;
 | 
						|
IN: openssl.libssl.tests
 | 
						|
 | 
						|
: all-opts ( -- opts )
 | 
						|
    {
 | 
						|
        SSL_OP_NO_SSLv2
 | 
						|
        SSL_OP_NO_SSLv3
 | 
						|
        SSL_OP_NO_TLSv1
 | 
						|
        SSL_OP_NO_TLSv1_1
 | 
						|
        SSL_OP_NO_TLSv1_2
 | 
						|
    } [ execute( -- x ) ] map ;
 | 
						|
 | 
						|
: set-opt ( ctx op -- )
 | 
						|
    SSL_CTRL_OPTIONS swap f SSL_CTX_ctrl drop ;
 | 
						|
 | 
						|
: has-opt ( ctx op -- ? )
 | 
						|
    swap SSL_CTRL_OPTIONS 0 f SSL_CTX_ctrl bitand 0 > ;
 | 
						|
 | 
						|
: new-ctx ( -- ctx )
 | 
						|
    SSLv23_client_method SSL_CTX_new ;
 | 
						|
 | 
						|
: new-ssl ( -- ssl )
 | 
						|
    new-ctx SSL_new ;
 | 
						|
 | 
						|
! Test default options
 | 
						|
{ { f f f f f } } [ new-ctx all-opts [ has-opt ] with map ] unit-test
 | 
						|
 | 
						|
! Test setting options
 | 
						|
{ 5 } [
 | 
						|
    new-ctx all-opts [ [ set-opt ] [ has-opt ] 2bi ] with map [ t = ] count
 | 
						|
] unit-test
 | 
						|
 | 
						|
! Initial state
 | 
						|
{ { "before/connect initialization" "read header" 1 f } } [
 | 
						|
    new-ssl {
 | 
						|
        SSL_state_string_long
 | 
						|
        SSL_rstate_string_long
 | 
						|
        SSL_want
 | 
						|
        SSL_get_peer_certificate
 | 
						|
    } [ execute( x -- x ) ] with map
 | 
						|
] unit-test
 |