Commit f0d16c4be1748e7ab363fafc15f9ade8692d07d4

Authored by Perry Werneck
Committed by GitHub
2 parents 7ddc463f c8fb0e03
Exists in master and in 1 other branch develop

Merge pull request #31 from PerryWerneck/develop

Fixing win32 SSL certificate error.
.vscode/c_cpp_properties.json
... ... @@ -16,7 +16,8 @@
16 16 "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe",
17 17 "cStandard": "c11",
18 18 "cppStandard": "c++17",
19   - "intelliSenseMode": "msvc-x64"
  19 + "intelliSenseMode": "msvc-x64",
  20 + "configurationProvider": "ms-vscode.makefile-tools"
20 21 }
21 22 ],
22 23 "version": 4
... ...
configure.ac
... ... @@ -389,11 +389,11 @@ dnl SSL Security options
389 389 dnl ---------------------------------------------------------------------------
390 390  
391 391 AC_ARG_ENABLE([self-signed-cert-check],
392   - [AS_HELP_STRING([--enable-self-signed-cert-check], [Reject SSL connection when host presents a self signed certificate])],
  392 + [AS_HELP_STRING([--enable-self-signed-cert-check], [Emit Warning when host presents a self signed certificate])],
393 393 [
394 394 app_cv_self_signed_certs="$enableval"
395 395 ],[
396   - app_cv_self_signed_certs="no"
  396 + app_cv_self_signed_certs="yes"
397 397 ])
398 398  
399 399 if test "$app_cv_self_signed_certs" == "yes"; then
... ... @@ -518,7 +518,7 @@ AC_ARG_WITH([sdk-version], [AS_HELP_STRING([--with-sdk-version], [Setup library
518 518 AC_DEFINE(LIB3270_SDK_VERSION,$app_cv_sdkversion,[The SDK version number])
519 519 AC_SUBST(LIB3270_SDK_VERSION,$app_cv_sdkversion)
520 520  
521   -AC_ARG_WITH([default-host], [AS_HELP_STRING([--with-default-host], [Set lib3270 default host url])],
  521 +AC_ARG_WITH([default-host], [AS_HELP_STRING([--with-default-host], [Set lib3270 default host url])],
522 522 [ app_default_host="\"$withval\""],
523 523 [ app_default_host=""])
524 524  
... ... @@ -650,7 +650,7 @@ case "$host" in
650 650  
651 651 *-apple-darwin*)
652 652 AC_PATH_TOOL([CURLCONFIG], [curl-config], [no])
653   -
  653 +
654 654 if test x$CURLCONFIG = xno; then
655 655 AC_MSG_NOTICE([Building without CURL support])
656 656 AC_SUBST(LIBCURL_CFLAGS)
... ... @@ -662,13 +662,13 @@ case "$host" in
662 662 AC_SUBST(LIBCURL_LIBS,"$($CURLCONFIG --libs)")
663 663 fi
664 664 ;;
665   -
  665 +
666 666 *)
667 667 PKG_CHECK_MODULES( [LIBCURL], [libcurl], AC_DEFINE(HAVE_LIBCURL,[],[Do we have libcurl?]), AC_MSG_ERROR([libcurl not present.]) )
668 668 AC_SUBST(LIBCURL_CFLAGS)
669 669 AC_SUBST(LIBCURL_LIBS)
670 670 ;;
671   -
  671 +
672 672 esac
673 673  
674 674 dnl ---------------------------------------------------------------------------
... ...
debian/rules
... ... @@ -23,14 +23,8 @@ build-stamp:
23 23 dh_testdir
24 24  
25 25 # Add here commands to compile the package.
26   - aclocal
27   - autoconf
28   -
29   - mkdir -p scripts
30   - automake --add-missing 2> /dev/null | true
31   -
  26 + NOCONFIGURE=1 ./autogen.sh
32 27 ./configure --prefix=/usr --disable-static
33   -
34 28 make all
35 29 # --- end custom part for compiling
36 30  
... ...
locale/pt_BR.po
... ... @@ -5,7 +5,7 @@ msgid ""
5 5 msgstr ""
6 6 "Project-Id-Version: pw3270 5.0\n"
7 7 "Report-Msgid-Bugs-To: \n"
8   -"POT-Creation-Date: 2021-09-01 23:49-0300\n"
  8 +"POT-Creation-Date: 2021-11-29 14:31-0300\n"
9 9 "PO-Revision-Date: 2021-09-01 23:53-0300\n"
10 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11 11 "Language-Team: Português <perry.werneck@gmail.com>\n"
... ... @@ -277,7 +277,7 @@ msgstr &quot;Erro ao inicializar LDAP&quot;
277 277 msgid "Can't initialize the TLS/SSL context."
278 278 msgstr "Erro ao inicializar contexto TLS/SSL"
279 279  
280   -#: src/core/session.c:198
  280 +#: src/core/session.c:205
281 281 msgid "Can't load"
282 282 msgstr "Não foi possível carregar"
283 283  
... ... @@ -285,7 +285,7 @@ msgstr &quot;Não foi possível carregar&quot;
285 285 msgid "Can't open HTTP session"
286 286 msgstr "Não foi possível abrir sessão HTTP"
287 287  
288   -#: src/core/session.c:186
  288 +#: src/core/session.c:193
289 289 msgid "Can't print"
290 290 msgstr "Não é possível imprimir"
291 291  
... ... @@ -293,7 +293,7 @@ msgstr &quot;Não é possível imprimir&quot;
293 293 msgid "Can't read HTTP response size."
294 294 msgstr "Não posso obter tamanho da resposta HTTP"
295 295  
296   -#: src/core/session.c:192
  296 +#: src/core/session.c:199
297 297 msgid "Can't save"
298 298 msgstr "Não é possível salvar"
299 299  
... ... @@ -512,8 +512,8 @@ msgstr &quot;Tipo de dispositivo rejeitado&quot;
512 512 msgid "Disconnect from host"
513 513 msgstr "Desconecta do servidor"
514 514  
515   -#: src/core/ft/ft.c:244 src/network_modules/openssl/main.c:99
516   -#: src/network_modules/openssl/main.c:147
  515 +#: src/core/ft/ft.c:244 src/network_modules/openssl/main.c:100
  516 +#: src/network_modules/openssl/main.c:148
517 517 msgid "Disconnected from host."
518 518 msgstr "Desconectado do servidor."
519 519  
... ... @@ -593,12 +593,12 @@ msgstr &quot;Apagar campos&quot;
593 593 msgid "Erro sending data to host"
594 594 msgstr "Erro ao enviar dados para o servidor"
595 595  
596   -#: src/core/ft/ft_dft.c:413 src/core/ft/ft_cut.c:408
  596 +#: src/core/ft/ft_cut.c:408 src/core/ft/ft_dft.c:413
597 597 #, c-format
598 598 msgid "Error \"%s\" reading from local file (rc=%d)"
599 599 msgstr "Erro \"%s\" lendo arquivo local (rc=%d)"
600 600  
601   -#: src/core/ft/ft_dft.c:306 src/core/ft/ft_cut.c:504
  601 +#: src/core/ft/ft_cut.c:504 src/core/ft/ft_dft.c:306
602 602 #, c-format
603 603 msgid "Error \"%s\" writing to local file (rc=%d)"
604 604 msgstr "Erro \"%s\" gravando arquivo local (rc=%d)"
... ... @@ -611,7 +611,7 @@ msgstr &quot;Erro na transferência do arquivo, transferência cancelada&quot;
611 611 msgid "Error reading file from host: file transfer canceled"
612 612 msgstr "Erro ao ler arquivo do host: Transferência cancelada"
613 613  
614   -#: src/network_modules/openssl/main.c:169
  614 +#: src/network_modules/openssl/main.c:170
615 615 msgid "Error reading from host"
616 616 msgstr "Erro lendo do servidor"
617 617  
... ... @@ -631,7 +631,7 @@ msgstr &quot;Erro ao ler ou gravar no host: Transferência cancelada&quot;
631 631 msgid "Error writing file to host: file transfer canceled"
632 632 msgstr "Erro ao gravar arquivo no host, transferência cancelada"
633 633  
634   -#: src/network_modules/openssl/main.c:122
  634 +#: src/network_modules/openssl/main.c:123
635 635 msgid "Error writing to host."
636 636 msgstr "Erro enviando para o servidor"
637 637  
... ... @@ -989,8 +989,8 @@ msgstr &quot;Move para o próximo campo desprotegido&quot;
989 989 msgid "Move to the previous unprotected field on screen"
990 990 msgstr "Move para o campo desprotegido anterior"
991 991  
992   -#: src/core/telnet.c:304 src/core/windows/event_dispatcher.c:135
993   -#: src/core/windows/connect.c:223
  992 +#: src/core/telnet.c:304 src/core/windows/connect.c:223
  993 +#: src/core/windows/event_dispatcher.c:135
994 994 msgid "Network error"
995 995 msgstr "Erro de rede"
996 996  
... ... @@ -1500,8 +1500,8 @@ msgstr &quot;&quot;
1500 1500 "A lista de revogação de certificados (CRL) de um certificado não pôde ser "
1501 1501 "encontrada."
1502 1502  
1503   -#: src/network_modules/openssl/main.c:123
1504   -#: src/network_modules/openssl/main.c:170
  1503 +#: src/network_modules/openssl/main.c:124
  1504 +#: src/network_modules/openssl/main.c:171
1505 1505 #, c-format
1506 1506 msgid "The SSL error message was %s"
1507 1507 msgstr "A mensagem de erro SSL foi \"%s\""
... ... @@ -1723,8 +1723,8 @@ msgstr &quot;&quot;
1723 1723 "O Certificado raiz não está marcado como confiável para os fins "
1724 1724 "especificados."
1725 1725  
1726   -#: src/network_modules/openssl/main.c:101
1727   -#: src/network_modules/openssl/main.c:149
  1726 +#: src/network_modules/openssl/main.c:102
  1727 +#: src/network_modules/openssl/main.c:150
1728 1728 msgid "The secure connection has been closed cleanly."
1729 1729 msgstr "A conexão segura foi fechada corretamente"
1730 1730  
... ... @@ -1774,7 +1774,7 @@ msgstr &quot;O erro do sistema operacional foi \&quot;%s\&quot; (rc=%d)&quot;
1774 1774 msgid "The system error was %s"
1775 1775 msgstr "O erro do sistema operacional foi \"%s\""
1776 1776  
1777   -#: src/core/util.c:260
  1777 +#: src/core/util.c:264
1778 1778 #, c-format
1779 1779 msgid "The system error was '%s' (rc=%d)"
1780 1780 msgstr "O erro do sistema foi \"%s\" (rc=%d)"
... ... @@ -1857,8 +1857,8 @@ msgstr &quot;Mostrar posição do cursor&quot;
1857 1857 msgid "Transfer cancelled by host"
1858 1858 msgstr "Transferência cancelada pelo host"
1859 1859  
1860   -#: src/core/ft/ft_dft.c:213 src/core/ft/ft_dft.c:344 src/core/ft/ft_cut.c:387
1861   -#: src/core/ft/ft_cut.c:475
  1860 +#: src/core/ft/ft_cut.c:387 src/core/ft/ft_cut.c:475 src/core/ft/ft_dft.c:213
  1861 +#: src/core/ft/ft_dft.c:344
1862 1862 msgid "Transfer cancelled by user"
1863 1863 msgstr "Transferência cancelada pelo usuário"
1864 1864  
... ... @@ -1915,7 +1915,7 @@ msgstr &quot;Não foi possível obter emissor do certificado&quot;
1915 1915 msgid "Unable to get local issuer certificate"
1916 1916 msgstr "Unable to get local issuer certificate"
1917 1917  
1918   -#: src/core/session.c:198
  1918 +#: src/core/session.c:205
1919 1919 msgid "Unable to load from file"
1920 1920 msgstr "Não foi possível ler do arquivo"
1921 1921  
... ... @@ -1927,11 +1927,11 @@ msgstr &quot;Incapaz de negociar uma conexão segura com o host&quot;
1927 1927 msgid "Unable to paste text"
1928 1928 msgstr "Incapaz de colar texto"
1929 1929  
1930   -#: src/core/session.c:186
  1930 +#: src/core/session.c:193
1931 1931 msgid "Unable to print"
1932 1932 msgstr "Incapaz de imprimir"
1933 1933  
1934   -#: src/core/session.c:192
  1934 +#: src/core/session.c:199
1935 1935 msgid "Unable to save"
1936 1936 msgstr "Incapaz de salvar"
1937 1937  
... ...
rpm/_service
... ... @@ -10,11 +10,10 @@
10 10 </service>
11 11  
12 12 <!-- https://github.com/openSUSE/obs-service-extract_file -->
13   -
14   - <service name="extract_file">
  13 + <!-- service name="extract_file">
15 14 <param name="archive">*.tar</param>
16 15 <param name="files">*/rpm/lib3270.spec</param>
17   - </service>
  16 + </service -->
18 17  
19 18 <service name="extract_file">
20 19 <param name="archive">*.tar</param>
... ... @@ -38,11 +37,11 @@
38 37 <param name="outfilename">debian.control</param>
39 38 </service>
40 39  
41   - <service name="extract_file">
  40 + <!-- service name="extract_file">
42 41 <param name="archive">*.tar</param>
43 42 <param name="files">*/debian/rules</param>
44 43 <param name="outfilename">debian.rules</param>
45   - </service>
  44 + </service -->
46 45  
47 46 <service name="extract_file">
48 47 <param name="archive">*.tar</param>
... ...
rpm/lib3270.spec
1 1 #
2 2 # spec file for package lib3270
3 3 #
4   -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
  4 +# Copyright (c) 2022 SUSE LLC
5 5 # Copyright (c) <2008> <Banco do Brasil S.A.>
6 6 #
7 7 # All modifications and additions to the file contributed by third parties
... ... @@ -29,15 +29,15 @@ BuildRequires: autoconf &gt;= 2.61
29 29 BuildRequires: automake
30 30 BuildRequires: binutils
31 31 BuildRequires: coreutils
32   -BuildRequires: libtool
33 32 BuildRequires: fdupes
34 33 BuildRequires: gcc-c++
35 34 BuildRequires: gettext-devel
  35 +BuildRequires: libtool
36 36 BuildRequires: m4
37 37 BuildRequires: pkgconfig
  38 +BuildRequires: xz
38 39 BuildRequires: pkgconfig(libcurl)
39 40 BuildRequires: pkgconfig(libssl)
40   -BuildRequires: xz
41 41  
42 42 %if 0%{?centos_version}
43 43 # CENTOS Requires gdb for debuginfo
... ... @@ -54,8 +54,8 @@ For more details, see https://softwarepublico.gov.br/social/pw3270/ .
54 54 %define _libvrs %{MAJOR_VERSION}_%{MINOR_VERSION}
55 55  
56 56 %package -n %{name}-%{_libvrs}
57   -Summary: TN3270 Access library
58   -Group: Development/Libraries/C and C++
  57 +Summary: TN3270 Access library
  58 +Group: Development/Libraries/C and C++
59 59  
60 60 %description -n %{name}-%{_libvrs}
61 61 TN3270 access library, originally designed as part of the pw3270 application.
... ... @@ -63,9 +63,9 @@ TN3270 access library, originally designed as part of the pw3270 application.
63 63 For more details, see https://softwarepublico.gov.br/social/pw3270/ .
64 64  
65 65 %package devel
66   -Summary: TN3270 Access library development files
67   -Requires: %{name}-%{_libvrs} = %{version}
68   -Group: Development/Libraries/C and C++
  66 +Summary: TN3270 Access library development files
  67 +Requires: %{name}-%{_libvrs} = %{version}
  68 +Group: Development/Libraries/C and C++
69 69  
70 70 %description devel
71 71 Header files for the TN3270 access library.
... ...
src/network_modules/openssl/context.c
... ... @@ -193,6 +193,94 @@ SSL_CTX * lib3270_openssl_get_context(H3270 *hSession) {
193 193  
194 194 #endif // SSL_ENABLE_CRL_CHECK
195 195  
  196 +#ifdef _WIN32
  197 + {
  198 + // Load certs
  199 + // https://stackoverflow.com/questions/9507184/can-openssl-on-windows-use-the-system-certificate-store
  200 + X509_STORE * store = SSL_CTX_get_cert_store(context);
  201 +
  202 + lib3270_autoptr(char) certpath = lib3270_build_data_filename("certs","*.der",NULL);
  203 +
  204 + trace_ssl(hSession,"Loading SSL certs from %s\n",certpath);
  205 +
  206 + WIN32_FIND_DATA ffd;
  207 + HANDLE hFind = FindFirstFile(certpath, &ffd);
  208 +
  209 + if(hFind == INVALID_HANDLE_VALUE)
  210 + {
  211 + static const LIB3270_SSL_MESSAGE message = {
  212 + .type = LIB3270_NOTIFY_SECURE,
  213 + .icon = "dialog-error",
  214 + .summary = N_( "Cant open custom certificate directory." ),
  215 + };
  216 +
  217 + hSession->ssl.message = &message;
  218 +
  219 + trace_ssl(hSession, _( "Can't open \"%s\" (The Windows error code was %ld)" ), certpath, (long) GetLastError());
  220 + }
  221 + else
  222 + {
  223 + do
  224 + {
  225 + char * filename = lib3270_build_data_filename("certs", ffd.cFileName, NULL);
  226 +
  227 + debug("Loading \"%s\"",filename);
  228 +
  229 + FILE *fp = fopen(filename,"r");
  230 + if(!fp) {
  231 +
  232 + trace_ssl(hSession, _( "Can't open \"%s\": %s" ), filename, strerror(errno));
  233 +
  234 + }
  235 + else
  236 + {
  237 + X509 * cert = d2i_X509_fp(fp, NULL);
  238 +
  239 + if(!cert)
  240 + {
  241 + static const LIB3270_SSL_MESSAGE message = {
  242 + .type = LIB3270_NOTIFY_SECURE,
  243 + .icon = "dialog-error",
  244 + .summary = N_( "Cant read custom certificate file." ),
  245 + };
  246 +
  247 + hSession->ssl.message = &message;
  248 + hSession->network.context->state.error = ERR_get_error();
  249 +
  250 + trace_ssl(hSession, _( "Can't read \"%s\": %s" ), filename, ERR_lib_error_string(hSession->ssl.error));
  251 + }
  252 + else
  253 + {
  254 +
  255 + if(X509_STORE_add_cert(store, cert) != 1)
  256 + {
  257 + static const LIB3270_SSL_MESSAGE message = {
  258 + .type = LIB3270_NOTIFY_SECURE,
  259 + .icon = "dialog-error",
  260 + .summary = N_( "Cant load custom certificate file." ),
  261 + };
  262 +
  263 + hSession->ssl.message = &message;
  264 + hSession->network.context->state.error = ERR_get_error();
  265 +
  266 + trace_ssl(hSession, _( "Can't load \"%s\": %s" ), filename, ERR_lib_error_string(hSession->ssl.error));
  267 + }
  268 +
  269 + X509_free(cert);
  270 + }
  271 +
  272 + fclose(fp);
  273 + }
  274 +
  275 + lib3270_free(filename);
  276 +
  277 + }
  278 + while (FindNextFile(hFind, &ffd) != 0);
  279 +
  280 + }
  281 + }
  282 +#endif // _WIN32
  283 +
196 284 return context;
197 285  
198 286 }
... ...
src/network_modules/openssl/messages.c
... ... @@ -46,6 +46,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
46 46 {
47 47 .id = X509_V_OK,
48 48 .message = {
  49 + .name = "X509_V_OK",
49 50 .type = LIB3270_NOTIFY_INFO,
50 51 .icon = "security-high",
51 52 .summary = N_( "Secure connection was successful." ),
... ... @@ -56,6 +57,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
56 57 {
57 58 .id = X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT,
58 59 .message = {
  60 + .name = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT",
59 61 .type = LIB3270_NOTIFY_SECURE,
60 62 .icon = "dialog-error",
61 63 .summary = N_( "Unable to get issuer certificate" ),
... ... @@ -66,12 +68,12 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
66 68 {
67 69 .id = X509_V_ERR_UNABLE_TO_GET_CRL,
68 70 .message = {
  71 + .name = "X509_V_ERR_UNABLE_TO_GET_CRL",
69 72 #ifdef SSL_ENABLE_CRL_CHECK
70 73 .type = LIB3270_NOTIFY_SECURE,
71 74 #else
72 75 .type = LIB3270_NOTIFY_INFO,
73 76 #endif // SSL_ENABLE_CRL_CHECK
74   - .name = "X509UnableToGetCRL",
75 77 .icon = "security-low",
76 78 .summary = N_( "Unable to get certificate CRL." ),
77 79 .body = N_( "The Certificate revocation list (CRL) of a certificate could not be found." ),
... ... @@ -82,6 +84,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
82 84 {
83 85 .id = X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE,
84 86 .message = {
  87 + .name = "X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE",
85 88 .type = LIB3270_NOTIFY_SECURE,
86 89 .icon = "dialog-error",
87 90 .summary = N_( "Unable to decrypt certificate's signature" ),
... ... @@ -92,6 +95,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
92 95 {
93 96 .id = X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE,
94 97 .message = {
  98 + .name = "X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE",
95 99 .type = LIB3270_NOTIFY_SECURE,
96 100 .icon = "dialog-error",
97 101 .summary = N_( "Unable to decrypt CRL's signature" ),
... ... @@ -102,6 +106,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
102 106 {
103 107 .id = X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY,
104 108 .message = {
  109 + .name = "X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY",
105 110 .type = LIB3270_NOTIFY_SECURE,
106 111 .icon = "dialog-error",
107 112 .summary = N_( "Unable to decode issuer public key" ),
... ... @@ -112,6 +117,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
112 117 {
113 118 .id = X509_V_ERR_CERT_SIGNATURE_FAILURE,
114 119 .message = {
  120 + .name = "X509_V_ERR_CERT_SIGNATURE_FAILURE",
115 121 .type = LIB3270_NOTIFY_SECURE,
116 122 .icon = "dialog-error",
117 123 .summary = N_( "Certificate signature failure" ),
... ... @@ -122,6 +128,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
122 128 {
123 129 .id = X509_V_ERR_CRL_SIGNATURE_FAILURE,
124 130 .message = {
  131 + .name = "X509_V_ERR_CRL_SIGNATURE_FAILURE",
125 132 .type = LIB3270_NOTIFY_SECURE,
126 133 .icon = "dialog-error",
127 134 .summary = N_( "CRL signature failure" ),
... ... @@ -132,6 +139,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
132 139 {
133 140 .id = X509_V_ERR_CERT_NOT_YET_VALID,
134 141 .message = {
  142 + .name = "X509_V_ERR_CERT_NOT_YET_VALID",
135 143 .type = LIB3270_NOTIFY_WARNING,
136 144 .icon = "security-medium",
137 145 .summary = N_( "Certificate is not yet valid" ),
... ... @@ -142,6 +150,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
142 150 {
143 151 .id = X509_V_ERR_CERT_HAS_EXPIRED,
144 152 .message = {
  153 + .name = "X509_V_ERR_CERT_HAS_EXPIRED",
145 154 .type = LIB3270_NOTIFY_SECURE,
146 155 .icon = "security-medium",
147 156 .summary = N_( "Certificate has expired" ),
... ... @@ -152,6 +161,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
152 161 {
153 162 .id = X509_V_ERR_CRL_NOT_YET_VALID,
154 163 .message = {
  164 + .name = "X509_V_ERR_CRL_NOT_YET_VALID",
155 165 .type = LIB3270_NOTIFY_WARNING,
156 166 .icon = "security-medium",
157 167 .summary = N_( "The CRL is not yet valid." ),
... ... @@ -162,6 +172,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
162 172 {
163 173 .id = X509_V_ERR_CRL_HAS_EXPIRED,
164 174 .message = {
  175 + .name = "X509_V_ERR_CRL_HAS_EXPIRED",
165 176 #ifdef SSL_ENABLE_CRL_EXPIRATION_CHECK
166 177 .type = LIB3270_NOTIFY_SECURE,
167 178 #else
... ... @@ -176,6 +187,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
176 187 {
177 188 .id = X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD,
178 189 .message = {
  190 + .name = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD",
179 191 .type = LIB3270_NOTIFY_SECURE,
180 192 .icon = "dialog-error",
181 193 .summary = N_( "Format error in certificate's notBefore field" ),
... ... @@ -186,6 +198,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
186 198 {
187 199 .id = X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD,
188 200 .message = {
  201 + .name = "X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD",
189 202 .type = LIB3270_NOTIFY_SECURE,
190 203 .icon = "dialog-error",
191 204 .summary = N_( "Format error in certificate's notAfter field" ),
... ... @@ -196,6 +209,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
196 209 {
197 210 .id = X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD,
198 211 .message = {
  212 + .name = "X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD",
199 213 .type = LIB3270_NOTIFY_SECURE,
200 214 .icon = "dialog-error",
201 215 .summary = N_( "Format error in CRL's lastUpdate field" ),
... ... @@ -206,6 +220,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
206 220 {
207 221 .id = X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD,
208 222 .message = {
  223 + .name = "X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD",
209 224 .type = LIB3270_NOTIFY_SECURE,
210 225 .icon = "dialog-error",
211 226 .summary = N_( "Format error in CRL's nextUpdate field" ),
... ... @@ -216,6 +231,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
216 231 {
217 232 .id = X509_V_ERR_OUT_OF_MEM,
218 233 .message = {
  234 + .name = "X509_V_ERR_OUT_OF_MEM",
219 235 .type = LIB3270_NOTIFY_ERROR,
220 236 .icon = "dialog-error",
221 237 .summary = N_( "Out of memory" ),
... ... @@ -226,14 +242,14 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
226 242 {
227 243 .id = X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT,
228 244 .message = {
  245 + .name = "X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT",
229 246 #ifdef SSL_ENABLE_SELF_SIGNED_CERT_CHECK
230   - .type = LIB3270_NOTIFY_SECURE,
231   -#else
232 247 .type = LIB3270_NOTIFY_WARNING,
  248 +#else
  249 + .type = LIB3270_NOTIFY_SECURE,
233 250 #endif // SSL_ENABLE_SELF_SIGNED_CERT_CHECK
234 251 .icon = "security-medium",
235 252 .summary = N_( "Self signed certificate" ),
236   - .name = "X509DepthZeroSelfSignedCert",
237 253 .label = N_( "Continue" ),
238 254 .body = N_( "The passed certificate is self signed and the same certificate cannot be found in the list of trusted certificates." )
239 255 }
... ... @@ -242,12 +258,12 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
242 258 {
243 259 .id = X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN,
244 260 .message = {
  261 + .name = "X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN",
245 262 #ifdef SSL_ENABLE_SELF_SIGNED_CERT_CHECK
246   - .type = LIB3270_NOTIFY_SECURE,
247   -#else
248 263 .type = LIB3270_NOTIFY_INFO,
  264 +#else
  265 + .type = LIB3270_NOTIFY_SECURE,
249 266 #endif // SSL_ENABLE_SELF_SIGNED_CERT_CHECK
250   - .name = "SelfSignedCertInChain",
251 267 .icon = "security-low",
252 268 .label = N_("Continue"),
253 269 .summary = N_( "Self signed certificate in certificate chain" ),
... ... @@ -258,6 +274,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
258 274 {
259 275 .id = X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY,
260 276 .message = {
  277 + .name = "X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
261 278 .type = LIB3270_NOTIFY_WARNING,
262 279 .icon = "security-low",
263 280 .summary = N_( "Unable to get local issuer certificate" ),
... ... @@ -268,6 +285,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
268 285 {
269 286 .id = X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE,
270 287 .message = {
  288 + .name = "X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE",
271 289 .type = LIB3270_NOTIFY_SECURE,
272 290 .icon = "security-low",
273 291 .summary = N_( "Unable to verify the first certificate" ),
... ... @@ -278,6 +296,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
278 296 {
279 297 .id = X509_V_ERR_CERT_REVOKED,
280 298 .message = {
  299 + .name = "X509_V_ERR_CERT_REVOKED",
281 300 .type = LIB3270_NOTIFY_SECURE,
282 301 .icon = "security-low",
283 302 .summary = N_( "Certificate revoked" ),
... ... @@ -288,6 +307,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
288 307 {
289 308 .id = X509_V_ERR_INVALID_CA,
290 309 .message = {
  310 + .name = "X509_V_ERR_INVALID_CA",
291 311 .type = LIB3270_NOTIFY_SECURE,
292 312 .icon = "security-low",
293 313 .summary = N_( "Invalid CA certificate" ),
... ... @@ -298,6 +318,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
298 318 {
299 319 .id = X509_V_ERR_PATH_LENGTH_EXCEEDED,
300 320 .message = {
  321 + .name = "X509_V_ERR_PATH_LENGTH_EXCEEDED",
301 322 .type = LIB3270_NOTIFY_SECURE,
302 323 .icon = "dialog-error",
303 324 .summary = N_( "Path length constraint exceeded" ),
... ... @@ -308,6 +329,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
308 329 {
309 330 .id = X509_V_ERR_INVALID_PURPOSE,
310 331 .message = {
  332 + .name = "X509_V_ERR_INVALID_PURPOSE",
311 333 .type = LIB3270_NOTIFY_SECURE,
312 334 .icon = "dialog-error",
313 335 .summary = N_( "Unsupported certificate purpose" ),
... ... @@ -318,6 +340,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
318 340 {
319 341 .id = X509_V_ERR_CERT_UNTRUSTED,
320 342 .message = {
  343 + .name = "X509_V_ERR_CERT_UNTRUSTED",
321 344 .type = LIB3270_NOTIFY_WARNING,
322 345 .icon = "security-low",
323 346 .summary = N_( "Certificate not trusted" ),
... ... @@ -328,6 +351,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
328 351 {
329 352 .id = X509_V_ERR_CERT_REJECTED,
330 353 .message = {
  354 + .name = "X509_V_ERR_CERT_REJECTED",
331 355 .type = LIB3270_NOTIFY_SECURE,
332 356 .icon = "security-low",
333 357 .summary = N_( "Certificate rejected" ),
... ... @@ -338,6 +362,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
338 362 {
339 363 .id = X509_V_ERR_SUBJECT_ISSUER_MISMATCH,
340 364 .message = {
  365 + .name = "X509_V_ERR_SUBJECT_ISSUER_MISMATCH",
341 366 .type = LIB3270_NOTIFY_SECURE,
342 367 .icon = "security-low",
343 368 .summary = N_( "Subject issuer mismatch" ),
... ... @@ -348,6 +373,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
348 373 {
349 374 .id = X509_V_ERR_AKID_SKID_MISMATCH,
350 375 .message = {
  376 + .name = "X509_V_ERR_AKID_SKID_MISMATCH",
351 377 .type = LIB3270_NOTIFY_SECURE,
352 378 .icon = "dialog-error",
353 379 .summary = N_( "Authority and subject key identifier mismatch" ),
... ... @@ -358,6 +384,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
358 384 {
359 385 .id = X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH,
360 386 .message = {
  387 + .name = "X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH",
361 388 .type = LIB3270_NOTIFY_SECURE,
362 389 .icon = "dialog-error",
363 390 .summary = N_( "Authority and issuer serial number mismatch" ),
... ... @@ -368,6 +395,7 @@ const LIB3270_SSL_MESSAGE * lib3270_openssl_message_from_id(long id) {
368 395 {
369 396 .id = X509_V_ERR_KEYUSAGE_NO_CERTSIGN,
370 397 .message = {
  398 + .name = "X509_V_ERR_KEYUSAGE_NO_CERTSIGN",
371 399 .type = LIB3270_NOTIFY_SECURE,
372 400 .icon = "dialog-error",
373 401 .summary = N_( "Key usage does not include certificate signing" ),
... ...
src/network_modules/state.c
... ... @@ -88,12 +88,8 @@ LIB3270_EXPORT const char * lib3270_get_ssl_state_icon_name(const H3270 *hSessio
88 88  
89 89 LIB3270_EXPORT const char * lib3270_get_ssl_state_description(const H3270 *hSession) {
90 90  
91   - if(hSession->ssl.message) {
92   -
93   - if(hSession->ssl.message->body)
94   - return dgettext(GETTEXT_PACKAGE,hSession->ssl.message->body);
95   -
96   - return "";
  91 + if(hSession->ssl.message && hSession->ssl.message->body) {
  92 + return dgettext(GETTEXT_PACKAGE,hSession->ssl.message->body);
97 93 }
98 94  
99 95 return "";
... ...
src/testprogram/testprogram.c
... ... @@ -78,7 +78,7 @@ int main(int argc, char *argv[]) {
78 78 {
79 79 lib3270_autoptr(char) testfilename = lib3270_build_data_filename("test",NULL);
80 80 printf("\n\nFilename: '%s'\n\n", testfilename);
81   - return 0;
  81 +// return 0;
82 82 }
83 83  
84 84 // #pragma GCC diagnostic push
... ...