From 4135b7f0951bba76acb411b14031c3ef461d995b Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Mon, 26 Jan 2009 09:36:24 +0000 Subject: [PATCH] 2009-01-26 10:35 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * contrib/hbssl/tests/test.prg * contrib/hbssl/ssl.c + More SSL API added. --- harbour/ChangeLog | 5 +++ harbour/contrib/hbssl/ssl.c | 62 ++++++++++++++++++++++++++-- harbour/contrib/hbssl/tests/test.prg | 16 +++++-- 3 files changed, 75 insertions(+), 8 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 600d533918..8d0ccb7843 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,11 @@ 2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-01-26 10:35 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * contrib/hbssl/tests/test.prg + * contrib/hbssl/ssl.c + + More SSL API added. + 2009-01-26 10:19 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * contrib/hbssl/common.mak * contrib/hbssl/Makefile diff --git a/harbour/contrib/hbssl/ssl.c b/harbour/contrib/hbssl/ssl.c index 5cd5aa8422..043da1aa5e 100644 --- a/harbour/contrib/hbssl/ssl.c +++ b/harbour/contrib/hbssl/ssl.c @@ -478,6 +478,64 @@ HB_FUNC( SSL_GET_CURRENT_CIPHER ) hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } +HB_FUNC( SSL_GET_CIPHER_BITS ) +{ + if( hb_SSL_is( 1 ) ) + { + SSL * ssl = hb_SSL_par( 1 ); + + if( ssl ) + { + int alg_bits = 0; + + hb_retni( SSL_get_cipher_bits( ssl, &alg_bits ) ); + + hb_storni( alg_bits, 2 ); + } + } + else + hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +} + +HB_FUNC( SSL_GET_CIPHER_LIST ) +{ + if( hb_SSL_is( 1 ) ) + { + SSL * ssl = hb_SSL_par( 1 ); + + if( ssl ) + hb_retc( SSL_get_cipher_list( ssl, hb_parni( 2 ) ) ); + } + else + hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +} + +HB_FUNC( SSL_GET_CIPHER_NAME ) +{ + if( hb_SSL_is( 1 ) ) + { + SSL * ssl = hb_SSL_par( 1 ); + + if( ssl ) + hb_retc( SSL_get_cipher_name( ssl ) ); + } + else + hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +} + +HB_FUNC( SSL_GET_CIPHER_VERSION ) +{ + if( hb_SSL_is( 1 ) ) + { + SSL * ssl = hb_SSL_par( 1 ); + + if( ssl ) + hb_retc( SSL_get_cipher_version( ssl ) ); + } + else + hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +} + /* int SSL_add_dir_cert_subjects_to_stack(STACK *stack, const char *dir); int SSL_add_file_cert_subjects_to_stack(STACK *stack, const char *file); @@ -494,10 +552,6 @@ STACK *SSL_dup_CA_list(STACK *sk); SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); char *SSL_get_app_data(SSL *ssl); X509 *SSL_get_certificate(const SSL *ssl); -int SSL_get_cipher_bits(const SSL *ssl, int *alg_bits); -char *SSL_get_cipher_list(const SSL *ssl, int n); -char *SSL_get_cipher_name(const SSL *ssl); -char *SSL_get_cipher_version(const SSL *ssl); STACK *SSL_get_ciphers(const SSL *ssl); STACK *SSL_get_client_CA_list(const SSL *ssl); long SSL_get_default_timeout(const SSL *ssl); diff --git a/harbour/contrib/hbssl/tests/test.prg b/harbour/contrib/hbssl/tests/test.prg index 9dee14d72f..16a813299b 100644 --- a/harbour/contrib/hbssl/tests/test.prg +++ b/harbour/contrib/hbssl/tests/test.prg @@ -17,6 +17,8 @@ PROCEDURE Main() LOCAL socket LOCAL buffer := Space( 1000 ) + LOCAL bits + // hb_inetInit() @@ -40,18 +42,24 @@ PROCEDURE Main() ? "SSL_CTX_NEW", ssl_ctx := SSL_CTX_NEW() ? "SSL_NEW", ssl := SSL_NEW( ssl_ctx ) - ? "SSL_GET_CURRENT_CIPHER", cipher := SSL_GET_CURRENT_CIPHER( ssl ) + ? "SSL_VERSION", SSL_VERSION( ssl ) ? "SSL_GET_VERSION", SSL_GET_VERSION( ssl ) + ? "SSL_SET_FD", SSL_SET_FD( ssl, hb_inetFD( socket ) ) + ? "SSL_CONNECT", SSL_CONNECT( ssl ) + + ? "SSL_GET_CIPHER_BITS" , SSL_GET_CIPHER_BITS( ssl, @bits ), bits + ? "SSL_GET_CIPHER_LIST" , SSL_GET_CIPHER_LIST( ssl ) + ? "SSL_GET_CIPHER_NAME" , SSL_GET_CIPHER_NAME( ssl ) + ? "SSL_GET_CIPHER_VERSION" , SSL_GET_CIPHER_VERSION( ssl ) + + ? "SSL_GET_CURRENT_CIPHER", cipher := SSL_GET_CURRENT_CIPHER( ssl ) ? "SSL_CIPHER_GET_NAME" , SSL_CIPHER_GET_NAME( cipher ) ? "SSL_CIPHER_GET_VERSION", SSL_CIPHER_GET_VERSION( cipher ) ? "SSL_CIPHER_GET_BITS" , SSL_CIPHER_GET_BITS( cipher ) ? "SSL_CIPHER_DESCRIPTION", SSL_CIPHER_DESCRIPTION( cipher ) - ? "SSL_SET_FD", SSL_SET_FD( ssl, hb_inetFD( socket ) ) - ? "SSL_CONNECT", SSL_CONNECT( ssl ) - ? "SSL_WRITE", SSL_WRITE( ssl, "GET / http/1.1" ) ? "SSL_READ", SSL_READ( ssl, @buffer )