378 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			378 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Factor
		
	
	
| 
								 | 
							
								USING: cryptlib.libcl cryptlib prettyprint kernel alien sequences libc math
							 | 
						||
| 
								 | 
							
								tools.test io io.files continuations alien.c-types splitting generic.math
							 | 
						||
| 
								 | 
							
								io.encodings.binary ;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Envelope/de-envelop test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    ! envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_CRYPTLIB [
							 | 
						||
| 
								 | 
							
								        "Hello world" set-pop-buffer
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_DATASIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer dup alien>char-string length push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle 1024 pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        pop-buffer-string .
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! de-envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_AUTO [
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer get-bytes-copied push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-bytes-copied pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        [ "Hello world" ] [ pop-buffer-string ] unit-test
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Password encryption test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    ! envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_CRYPTLIB [
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_PASSWORD "password" set-attribute-string
							 | 
						||
| 
								 | 
							
								        "Hello world" set-pop-buffer
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_DATASIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer dup alien>char-string length push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle 1024 pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        pop-buffer-string .
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        ! de-envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_AUTO [
							 | 
						||
| 
								 | 
							
								        [ envelope-handle get-pop-buffer get-bytes-copied push-data ] [
							 | 
						||
| 
								 | 
							
								            dup CRYPT_ENVELOPE_RESOURCE = [
							 | 
						||
| 
								 | 
							
								                envelope-handle CRYPT_ENVINFO_PASSWORD
							 | 
						||
| 
								 | 
							
								                "password" set-attribute-string
							 | 
						||
| 
								 | 
							
								            ] [
							 | 
						||
| 
								 | 
							
								                rethrow
							 | 
						||
| 
								 | 
							
								            ] if
							 | 
						||
| 
								 | 
							
								        ] recover drop
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-bytes-copied pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        [ "Hello world" ] [ pop-buffer-string ] unit-test
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Compression test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    ! envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_CRYPTLIB [
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_COMPRESSION CRYPT_UNUSED set-attribute
							 | 
						||
| 
								 | 
							
								        "Hello world" set-pop-buffer
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_DATASIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer dup alien>char-string length push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle 1024 pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        pop-buffer-string .
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! de-envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_AUTO [
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer get-bytes-copied push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-bytes-copied pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        [ "Hello world" ] [ pop-buffer-string ] unit-test
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Conventional encryption test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    ! envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_CRYPTLIB [
							 | 
						||
| 
								 | 
							
								        CRYPT_ALGO_IDEA [
							 | 
						||
| 
								 | 
							
								            context-handle CRYPT_CTXINFO_KEY "0123456789ABCDEF" set-attribute-string
							 | 
						||
| 
								 | 
							
								            envelope-handle CRYPT_ENVINFO_SESSIONKEY context-handle *int set-attribute
							 | 
						||
| 
								 | 
							
								        ] with-context
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        "Hello world" set-pop-buffer
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_DATASIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer dup alien>char-string length push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle 1024 pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        pop-buffer-string .
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! de-envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_AUTO [
							 | 
						||
| 
								 | 
							
								        [ envelope-handle get-pop-buffer get-bytes-copied push-data ] [
							 | 
						||
| 
								 | 
							
								            dup CRYPT_ENVELOPE_RESOURCE = [
							 | 
						||
| 
								 | 
							
								                CRYPT_ALGO_IDEA create-context
							 | 
						||
| 
								 | 
							
								                context-handle CRYPT_CTXINFO_KEY "0123456789ABCDEF"
							 | 
						||
| 
								 | 
							
								                set-attribute-string
							 | 
						||
| 
								 | 
							
								                envelope-handle CRYPT_ENVINFO_SESSIONKEY context-handle *int
							 | 
						||
| 
								 | 
							
								                set-attribute
							 | 
						||
| 
								 | 
							
								            ] [
							 | 
						||
| 
								 | 
							
								                rethrow
							 | 
						||
| 
								 | 
							
								            ] if
							 | 
						||
| 
								 | 
							
								        ] recover drop
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        destroy-context
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-bytes-copied pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        [ "Hello world" ] [ pop-buffer-string ] unit-test
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Large data size envelope/de-envelop test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    ! envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_CRYPTLIB [
							 | 
						||
| 
								 | 
							
								        "extra/cryptlib/test/large_data.txt" resource-path
							 | 
						||
| 
								 | 
							
								        binary file-contents set-pop-buffer
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length 10000 + set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_DATASIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer dup alien>char-string length push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer alien>char-string length 10000 + pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        ! pop-buffer-string .
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! de-envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_AUTO [
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length 10000 + set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer get-bytes-copied push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-bytes-copied pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        ! pop-buffer-string .
							 | 
						||
| 
								 | 
							
								        [ "/opt/local/lib/libcl.dylib(dylib1.o):" ]
							 | 
						||
| 
								 | 
							
								        [ pop-buffer-string "\n" split first ] unit-test
							 | 
						||
| 
								 | 
							
								        [ "00000000 t __mh_dylib_header" ]
							 | 
						||
| 
								 | 
							
								        [ pop-buffer-string "\n" split last/first first ] unit-test
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Large data size password encryption test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_CRYPTLIB [
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_PASSWORD "password" set-attribute-string
							 | 
						||
| 
								 | 
							
								        "extra/cryptlib/test/large_data.txt" resource-path
							 | 
						||
| 
								 | 
							
								        binary file-contents set-pop-buffer
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length 10000 + set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ENVINFO_DATASIZE
							 | 
						||
| 
								 | 
							
								        get-pop-buffer alien>char-string length set-attribute
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer dup alien>char-string length push-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-pop-buffer alien>char-string length 10000 + pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        pop-buffer-string .
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! de-envelope
							 | 
						||
| 
								 | 
							
								    CRYPT_FORMAT_AUTO [
							 | 
						||
| 
								 | 
							
								        envelope-handle CRYPT_ATTRIBUTE_BUFFERSIZE 130000 set-attribute
							 | 
						||
| 
								 | 
							
								        [ envelope-handle get-pop-buffer get-bytes-copied push-data ] [
							 | 
						||
| 
								 | 
							
								            dup CRYPT_ENVELOPE_RESOURCE = [
							 | 
						||
| 
								 | 
							
								                envelope-handle CRYPT_ENVINFO_PASSWORD
							 | 
						||
| 
								 | 
							
								                "password" set-attribute-string
							 | 
						||
| 
								 | 
							
								            ] [
							 | 
						||
| 
								 | 
							
								                rethrow
							 | 
						||
| 
								 | 
							
								            ] if
							 | 
						||
| 
								 | 
							
								        ] recover drop
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        envelope-handle flush-data
							 | 
						||
| 
								 | 
							
								        envelope-handle get-bytes-copied pop-data
							 | 
						||
| 
								 | 
							
								        get-bytes-copied .
							 | 
						||
| 
								 | 
							
								        ! pop-buffer-string .
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        [ "/opt/local/lib/libcl.dylib(dylib1.o):" ]
							 | 
						||
| 
								 | 
							
								        [ pop-buffer-string "\n" split first ] unit-test
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        [ "00000000 t __mh_dylib_header" ]
							 | 
						||
| 
								 | 
							
								        [ pop-buffer-string "\n" split last/first first ] unit-test
							 | 
						||
| 
								 | 
							
								    ] with-envelope
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Generating a key pair test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    CRYPT_ALGO_RSA [
							 | 
						||
| 
								 | 
							
								        context-handle CRYPT_CTXINFO_LABEL "private key" set-attribute-string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        ! a particular key length can be set (e.g. 1536-bit/192-byte key)
							 | 
						||
| 
								 | 
							
								        context-handle CRYPT_CTXINFO_KEYSIZE 1536 8 / set-attribute
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        context-handle generate-key
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYSET_FILE "extra/cryptlib/test/keys.p15" resource-path
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYOPT_CREATE [
							 | 
						||
| 
								 | 
							
								            "password" add-private-key
							 | 
						||
| 
								 | 
							
								        ] with-keyset
							 | 
						||
| 
								 | 
							
								    ] with-context
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"Passed" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								"Simple certificate creation test..." print
							 | 
						||
| 
								 | 
							
								"=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[
							 | 
						||
| 
								 | 
							
								    CRYPT_ALGO_RSA [
							 | 
						||
| 
								 | 
							
								        context-handle CRYPT_CTXINFO_LABEL "private key" set-attribute-string
							 | 
						||
| 
								 | 
							
								        context-handle generate-key
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYSET_FILE "extra/cryptlib/test/keys.p15" resource-path
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYOPT_CREATE [
							 | 
						||
| 
								 | 
							
								            "password" add-private-key
							 | 
						||
| 
								 | 
							
								            CRYPT_CERTTYPE_CERTIFICATE [
							 | 
						||
| 
								 | 
							
								                certificate-handle CRYPT_CERTINFO_XYZZY 1 set-attribute
							 | 
						||
| 
								 | 
							
								                certificate-handle CRYPT_CERTINFO_SUBJECTPUBLICKEYINFO
							 | 
						||
| 
								 | 
							
								                context-handle *int set-attribute
							 | 
						||
| 
								 | 
							
								                certificate-handle CRYPT_CERTINFO_COMMONNAME "Dave Smith"
							 | 
						||
| 
								 | 
							
								                set-attribute-string
							 | 
						||
| 
								 | 
							
								                sign-certificate
							 | 
						||
| 
								 | 
							
								                check-certificate
							 | 
						||
| 
								 | 
							
								                add-public-key
							 | 
						||
| 
								 | 
							
								                f 0 CRYPT_CERTFORMAT_TEXT_CERTIFICATE export-certificate
							 | 
						||
| 
								 | 
							
								                get-cert-length *int dup malloc swap
							 | 
						||
| 
								 | 
							
								                CRYPT_CERTFORMAT_TEXT_CERTIFICATE export-certificate
							 | 
						||
| 
								 | 
							
								                get-cert-buffer alien>char-string print
							 | 
						||
| 
								 | 
							
								            ] with-certificate
							 | 
						||
| 
								 | 
							
								        ] with-keyset
							 | 
						||
| 
								 | 
							
								    ] with-context
							 | 
						||
| 
								 | 
							
								] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: ssh-session ( -- )
							 | 
						||
| 
								 | 
							
								    "=========================================================" print
							 | 
						||
| 
								 | 
							
								    "SSH session test..." print
							 | 
						||
| 
								 | 
							
								    "=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! start client connection with:
							 | 
						||
| 
								 | 
							
								    ! ssh -v localhost -p3000
							 | 
						||
| 
								 | 
							
								    "waiting for: ssh -v localhost -p3000" print flush
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! Are you sure you want to continue connecting (yes/no)? yes
							 | 
						||
| 
								 | 
							
								    ! ...
							 | 
						||
| 
								 | 
							
								    ! <at> localhost's password: (any password will be accepted)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! If you want to run the test again you should clean the [localhost]:3000
							 | 
						||
| 
								 | 
							
								    ! ssh-rsa entry in the known_hosts file, in your home directory under the .ssh
							 | 
						||
| 
								 | 
							
								    ! folder, since the test generates a new RSA certificate on every run.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYSET_FILE "extra/cryptlib/test/keys.p15" resource-path
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYOPT_READONLY [
							 | 
						||
| 
								 | 
							
								            CRYPT_KEYID_NAME "private key" "password" get-private-key
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            CRYPT_SESSION_SSH_SERVER [
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_SERVER_NAME "localhost"
							 | 
						||
| 
								 | 
							
								                set-attribute-string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_SERVER_PORT 3000 set-attribute
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_PRIVATEKEY
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                context-handle *int set-attribute
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                [ session-handle CRYPT_SESSINFO_ACTIVE 1 set-attribute ] [
							 | 
						||
| 
								 | 
							
								                    dup CRYPT_ENVELOPE_RESOURCE = [
							 | 
						||
| 
								 | 
							
								                        session-handle CRYPT_SESSINFO_AUTHRESPONSE 1
							 | 
						||
| 
								 | 
							
								                        set-attribute
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        session-handle CRYPT_SESSINFO_ACTIVE 1 set-attribute
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        "Welcome to cryptlib, now go away.\r\n" set-pop-buffer
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        session-handle  get-pop-buffer dup alien>char-string
							 | 
						||
| 
								 | 
							
								                        length push-data
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        session-handle flush-data
							 | 
						||
| 
								 | 
							
								                    ] [
							 | 
						||
| 
								 | 
							
								                        rethrow
							 | 
						||
| 
								 | 
							
								                    ] if
							 | 
						||
| 
								 | 
							
								                ] recover drop
							 | 
						||
| 
								 | 
							
								            ] with-session
							 | 
						||
| 
								 | 
							
								        ] with-keyset
							 | 
						||
| 
								 | 
							
								    ] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    "Passed" print
							 | 
						||
| 
								 | 
							
								;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								: ssl-session ( -- )
							 | 
						||
| 
								 | 
							
								    "=========================================================" print
							 | 
						||
| 
								 | 
							
								    "SSL session test..." print
							 | 
						||
| 
								 | 
							
								    "=========================================================" print
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    ! start client connection with:
							 | 
						||
| 
								 | 
							
								    ! curl -k https://localhost:3000
							 | 
						||
| 
								 | 
							
								    "waiting for: curl -k https://localhost:3000" print flush
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYSET_FILE "extra/cryptlib/test/keys.p15" resource-path
							 | 
						||
| 
								 | 
							
								        CRYPT_KEYOPT_READONLY [
							 | 
						||
| 
								 | 
							
								            CRYPT_KEYID_NAME "private key" "password" get-private-key
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            CRYPT_SESSION_SSL_SERVER [
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_SERVER_NAME "localhost"
							 | 
						||
| 
								 | 
							
								                set-attribute-string
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_SERVER_PORT 3000 set-attribute
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_OPTION_NET_WRITETIMEOUT 10 set-attribute
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_OPTION_NET_READTIMEOUT 10 set-attribute
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_OPTION_NET_CONNECTTIMEOUT 10 set-attribute
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_PRIVATEKEY
							 | 
						||
| 
								 | 
							
								                context-handle *int set-attribute
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                session-handle CRYPT_SESSINFO_ACTIVE 1 set-attribute
							 | 
						||
| 
								 | 
							
								                "Welcome to cryptlib, now go away.\r\n" set-pop-buffer
							 | 
						||
| 
								 | 
							
								                session-handle  get-pop-buffer dup alien>char-string
							 | 
						||
| 
								 | 
							
								                length push-data
							 | 
						||
| 
								 | 
							
								                session-handle flush-data
							 | 
						||
| 
								 | 
							
								            ] with-session
							 | 
						||
| 
								 | 
							
								        ] with-keyset
							 | 
						||
| 
								 | 
							
								    ] with-cryptlib
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    "Passed" print
							 | 
						||
| 
								 | 
							
								;
							 |