diff --git a/ChangeLog.txt b/ChangeLog.txt index 62852b0621..5b82926aa5 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -10,6 +10,22 @@ * Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment */ +2016-07-18 20:32 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) + * contrib/hbssl/hbssl.hbx + * contrib/hbssl/pem.c + * contrib/hbssl/x509.c + + added new prg functions: PEM_READ_X509(), PEM_READ_X509_AUX() and + X509_get_PubKey() + + * src/debug/dbgmenu.prg + ! fixed wrong method name :ToggleBreakPoint() -> BreakPointToggle() + Thanks to Viktor. + + * src/rtl/gtwin/gtwin.c + * hardcoded some LEFT_ALT + to return K_ALT_* value instead of + national characters, i.e. in EL keyboard layout. Please test it. + I cannot check it in my MS-Windows version. + 2016-07-04 19:01 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * contrib/gtwvg/wvgcore.c * contrib/gtwvg/wvgcuig.c diff --git a/contrib/hbssl/hbssl.hbx b/contrib/hbssl/hbssl.hbx index e998618dca..f97836c4f3 100644 --- a/contrib/hbssl/hbssl.hbx +++ b/contrib/hbssl/hbssl.hbx @@ -199,6 +199,8 @@ DYNAMIC PEM_READ_BIO_X509 DYNAMIC PEM_READ_BIO_X509_AUX DYNAMIC PEM_READ_BIO_X509_CRL DYNAMIC PEM_READ_BIO_X509_REQ +DYNAMIC PEM_READ_X509 +DYNAMIC PEM_READ_X509_AUX DYNAMIC RAND_add DYNAMIC RAND_event DYNAMIC RAND_screen @@ -359,6 +361,7 @@ DYNAMIC SSL_want_write DYNAMIC SSL_want_x509_lookup DYNAMIC SSL_write DYNAMIC X509_get_issuer_name +DYNAMIC X509_get_PubKey DYNAMIC X509_get_subject_name DYNAMIC X509_name_oneline diff --git a/contrib/hbssl/pem.c b/contrib/hbssl/pem.c index 1cb4668bc0..d87af70636 100644 --- a/contrib/hbssl/pem.c +++ b/contrib/hbssl/pem.c @@ -90,7 +90,7 @@ HB_FUNC( ERR_LOAD_PEM_STRINGS ) typedef void * PEM_READ_BIO ( BIO * bp, void ** x, pem_password_cb * cb, void * u ); typedef void * PEM_WRITE_BIO ( BIO * bp, void ** x, pem_password_cb * cb, void * u ); -static void hb_PEM_read_bio( PEM_READ_BIO * func ) +static void hb_PEM_read_bio( PEM_READ_BIO * func, HB_BOOL fX509 ) { BIO * bio; @@ -106,17 +106,27 @@ static void hb_PEM_read_bio( PEM_READ_BIO * func ) if( bio ) { PHB_ITEM pPassCallback = hb_param( 2, HB_IT_EVALITEM ); + pem_password_cb * cb; + void * cargo, * result; if( pPassCallback ) { - hb_retptr( ( *func )( bio, NULL, hb_ssl_pem_password_cb, pPassCallback ) ); + cb = hb_ssl_pem_password_cb; + cargo = pPassCallback; } else { - /* NOTE: Dropping 'const' qualifier. [vszakats] */ - hb_retptr( ( *func )( bio, NULL, NULL, ( void * ) hb_parc( 2 ) ) ); + cb = NULL; + cargo = ( void * ) hb_parc( 2 ); /* NOTE: Dropping 'const' qualifier. [vszakats] */ } + result = ( *func )( bio, NULL, cb, cargo ); + + if( fX509 && result ) + hb_X509_ret( ( X509 * ) result, HB_TRUE ); + else + hb_retptr( result ); + if( ! hb_BIO_is( 1 ) ) BIO_free( bio ); } @@ -124,20 +134,23 @@ static void hb_PEM_read_bio( PEM_READ_BIO * func ) hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); } -HB_FUNC( PEM_READ_BIO_PRIVATEKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_PrivateKey ); } -HB_FUNC( PEM_READ_BIO_PUBKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_PUBKEY ); } -HB_FUNC( PEM_READ_BIO_RSAPRIVATEKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_RSAPrivateKey ); } -HB_FUNC( PEM_READ_BIO_RSAPUBLICKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_RSAPublicKey ); } -HB_FUNC( PEM_READ_BIO_RSA_PUBKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_RSA_PUBKEY ); } -HB_FUNC( PEM_READ_BIO_DSAPRIVATEKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DSAPrivateKey ); } -HB_FUNC( PEM_READ_BIO_DSA_PUBKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DSA_PUBKEY ); } -HB_FUNC( PEM_READ_BIO_DSAPARAMS ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DSAparams ); } -HB_FUNC( PEM_READ_BIO_DHPARAMS ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DHparams ); } -HB_FUNC( PEM_READ_BIO_X509 ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509 ); } -HB_FUNC( PEM_READ_BIO_X509_AUX ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_AUX ); } -HB_FUNC( PEM_READ_BIO_X509_REQ ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_REQ ); } -HB_FUNC( PEM_READ_BIO_X509_CRL ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_CRL ); } -HB_FUNC( PEM_READ_BIO_PKCS7 ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_PKCS7 ); } +HB_FUNC( PEM_READ_BIO_PRIVATEKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_PrivateKey , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_PUBKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_PUBKEY , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_RSAPRIVATEKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_RSAPrivateKey, HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_RSAPUBLICKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_RSAPublicKey , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_RSA_PUBKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_RSA_PUBKEY , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_DSAPRIVATEKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DSAPrivateKey, HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_DSA_PUBKEY ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DSA_PUBKEY , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_DSAPARAMS ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DSAparams , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_DHPARAMS ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_DHparams , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_X509 ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509 , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_X509_AUX ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_AUX , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_X509_REQ ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_REQ , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_X509_CRL ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_CRL , HB_FALSE ); } +HB_FUNC( PEM_READ_BIO_PKCS7 ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_PKCS7 , HB_FALSE ); } + +HB_FUNC( PEM_READ_X509 ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509 , HB_TRUE ); } +HB_FUNC( PEM_READ_X509_AUX ) { hb_PEM_read_bio( ( PEM_READ_BIO * ) PEM_read_bio_X509_AUX , HB_TRUE ); } #if 0 diff --git a/contrib/hbssl/x509.c b/contrib/hbssl/x509.c index 85d3500b42..dbf8bd476e 100644 --- a/contrib/hbssl/x509.c +++ b/contrib/hbssl/x509.c @@ -145,3 +145,16 @@ HB_FUNC( X509_NAME_ONELINE ) hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); #endif } + +HB_FUNC( X509_GET_PUBKEY ) +{ + if( hb_X509_is( 1 ) ) + { + X509 * x509 = hb_X509_par( 1 ); + + if( x509 ) + hb_retptr( X509_get_pubkey( x509 ) ); + } + else + hb_errRT_BASE( EG_ARG, 2010, NULL, HB_ERR_FUNCNAME, HB_ERR_ARGS_BASEPARAMS ); +} diff --git a/src/debug/dbgmenu.prg b/src/debug/dbgmenu.prg index c7b908f93e..422a85ae25 100644 --- a/src/debug/dbgmenu.prg +++ b/src/debug/dbgmenu.prg @@ -110,7 +110,7 @@ FUNCTION __dbgBuildMenu( oDebugger ) // Builds the debugger pulldown menu MENU MENUITEM " ~Watchpoint..." ACTION oDebugger:WatchPointAdd() MENUITEM " ~Tracepoint..." ACTION oDebugger:TracePointAdd() - MENUITEM " ~Breakpoint F9 " ACTION oDebugger:ToggleBreakPoint() + MENUITEM " ~Breakpoint F9 " ACTION oDebugger:BreakPointToggle() MENUITEM " ~Delete..." ACTION oDebugger:WatchPointDel() ENDMENU diff --git a/src/rtl/gtwin/gtwin.c b/src/rtl/gtwin/gtwin.c index a78edafa7f..910828278a 100644 --- a/src/rtl/gtwin/gtwin.c +++ b/src/rtl/gtwin/gtwin.c @@ -1545,6 +1545,126 @@ static int hb_gt_win_ReadKey( PHB_GT pGT, int iEventMask ) iKey = HB_K_MENU; break; #endif + default: + if( ( dwState & ( LEFT_ALT_PRESSED | RIGHT_ALT_PRESSED | + LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED ) ) == LEFT_ALT_PRESSED ) + { + switch( wScan ) + { + case 2: + iKey = '1'; + break; + case 3: + iKey = '2'; + break; + case 4: + iKey = '3'; + break; + case 5: + iKey = '4'; + break; + case 6: + iKey = '5'; + break; + case 7: + iKey = '6'; + break; + case 8: + iKey = '7'; + break; + case 9: + iKey = '8'; + break; + case 10: + iKey = '9'; + break; + case 11: + iKey = '0'; + break; + case 13: + iKey = '='; + break; + case 16: + iKey = 'Q'; + break; + case 17: + iKey = 'W'; + break; + case 18: + iKey = 'E'; + break; + case 19: + iKey = 'R'; + break; + case 20: + iKey = 'T'; + break; + case 21: + iKey = 'Y'; + break; + case 22: + iKey = 'U'; + break; + case 23: + iKey = 'I'; + break; + case 24: + iKey = 'O'; + break; + case 25: + iKey = 'P'; + break; + case 30: + iKey = 'A'; + break; + case 31: + iKey = 'S'; + break; + case 32: + iKey = 'D'; + break; + case 33: + iKey = 'F'; + break; + case 34: + iKey = 'G'; + break; + case 35: + iKey = 'H'; + break; + case 36: + iKey = 'J'; + break; + case 37: + iKey = 'K'; + break; + case 38: + iKey = 'L'; + break; + case 44: + iKey = 'Z'; + break; + case 45: + iKey = 'X'; + break; + case 46: + iKey = 'C'; + break; + case 47: + iKey = 'V'; + break; + case 48: + iKey = 'B'; + break; + case 49: + iKey = 'N'; + break; + case 50: + iKey = 'M'; + break; + } + } + break; } } else if( wVKey == VK_MENU && ( dwState & NUMLOCK_ON ) != 0 )