diff options
Diffstat (limited to 'debian/pinentry-tqt/pinentry-tqt-1.1.0/qt')
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.am | 58 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.in | 694 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/document-encrypt.png | bin | 0 -> 1835 bytes | |||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/main.cpp | 364 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentry.qrc | 6 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.cpp | 77 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.h | 46 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.cpp | 476 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.h | 119 | ||||
-rw-r--r-- | debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/qrc_pinentry.cpp | 177 |
10 files changed, 2017 insertions, 0 deletions
diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.am b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.am new file mode 100644 index 00000000..698005ea --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.am @@ -0,0 +1,58 @@ +# Makefile.am +# Copyright (C) 2002 g10 Code GmbH, Klarälvdalens Datakonsult AB +# Copyright (C) 2008, 2015 g10 Code GmbH +# +# This file is part of PINENTRY. +# +# PINENTRY is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PINENTRY is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses/>. +# SPDX-License-Identifier: GPL-2.0+ + +## Process this file with automake to produce Makefile.in + +bin_PROGRAMS = pinentry-qt + +EXTRA_DIST = document-encrypt.png pinentry.qrc + + +if FALLBACK_CURSES +ncurses_include = $(NCURSES_INCLUDE) +libcurses = ../pinentry/libpinentry-curses.a $(LIBCURSES) $(LIBICONV) +else +ncurses_include = +libcurses = +endif + + +AM_CPPFLAGS = $(COMMON_CFLAGS) \ + -I$(top_srcdir) -I$(top_srcdir)/secmem \ + $(ncurses_include) -I$(top_srcdir)/pinentry +AM_CXXFLAGS = $(PINENTRY_QT_CFLAGS) +pinentry_qt_LDADD = \ + ../pinentry/libpinentry.a $(top_builddir)/secmem/libsecmem.a \ + $(COMMON_LIBS) $(PINENTRY_QT_LIBS) $(libcurses) $(LIBCAP) + +BUILT_SOURCES = \ + pinentryconfirm.moc pinentrydialog.moc + +CLEANFILES = \ + pinentryconfirm.moc pinentrydialog.moc + +pinentry_qt_SOURCES = pinentrydialog.h pinentrydialog.cpp \ + main.cpp qrc_pinentry.cpp pinentryconfirm.cpp pinentryconfirm.h + +nodist_pinentry_qt_SOURCES = \ + pinentryconfirm.moc pinentrydialog.moc + +.h.moc: + $(MOC) `test -f '$<' || echo '$(srcdir)/'`$< -o $@ diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.in b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.in new file mode 100644 index 00000000..4abacbf7 --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/Makefile.in @@ -0,0 +1,694 @@ +# Makefile.in generated by automake 1.14.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Makefile.am +# Copyright (C) 2002 g10 Code GmbH, Klarälvdalens Datakonsult AB +# Copyright (C) 2008, 2015 g10 Code GmbH +# +# This file is part of PINENTRY. +# +# PINENTRY is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PINENTRY is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <https://www.gnu.org/licenses/>. +# SPDX-License-Identifier: GPL-2.0+ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = pinentry-qt$(EXEEXT) +subdir = qt +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/build-aux/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/curses.m4 \ + $(top_srcdir)/m4/gpg-error.m4 $(top_srcdir)/m4/iconv.m4 \ + $(top_srcdir)/m4/libassuan.m4 $(top_srcdir)/m4/pkg.m4 \ + $(top_srcdir)/m4/qt.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_pinentry_qt_OBJECTS = pinentrydialog.$(OBJEXT) main.$(OBJEXT) \ + qrc_pinentry.$(OBJEXT) pinentryconfirm.$(OBJEXT) +nodist_pinentry_qt_OBJECTS = +pinentry_qt_OBJECTS = $(am_pinentry_qt_OBJECTS) \ + $(nodist_pinentry_qt_OBJECTS) +am__DEPENDENCIES_1 = +@FALLBACK_CURSES_TRUE@am__DEPENDENCIES_2 = \ +@FALLBACK_CURSES_TRUE@ ../pinentry/libpinentry-curses.a \ +@FALLBACK_CURSES_TRUE@ $(am__DEPENDENCIES_1) \ +@FALLBACK_CURSES_TRUE@ $(am__DEPENDENCIES_1) +pinentry_qt_DEPENDENCIES = ../pinentry/libpinentry.a \ + $(top_builddir)/secmem/libsecmem.a $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \ + $(am__DEPENDENCIES_1) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(pinentry_qt_SOURCES) $(nodist_pinentry_qt_SOURCES) +DIST_SOURCES = $(pinentry_qt_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COMMON_CFLAGS = @COMMON_CFLAGS@ +COMMON_LIBS = @COMMON_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FLTKCFLAGS = @FLTKCFLAGS@ +FLTKCXXFLAGS = @FLTKCXXFLAGS@ +FLTKLIBS = @FLTKLIBS@ +FLTK_CONFIG = @FLTK_CONFIG@ +GITLOG_TO_CHANGELOG = @GITLOG_TO_CHANGELOG@ +GNOME3_CFLAGS = @GNOME3_CFLAGS@ +GNOME3_LIBS = @GNOME3_LIBS@ +GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@ +GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@ +GPG_ERROR_LIBS = @GPG_ERROR_LIBS@ +GPG_ERROR_MT_CFLAGS = @GPG_ERROR_MT_CFLAGS@ +GPG_ERROR_MT_LIBS = @GPG_ERROR_MT_LIBS@ +GREP = @GREP@ +GTK2_CFLAGS = @GTK2_CFLAGS@ +GTK2_LIBS = @GTK2_LIBS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBASSUAN_CFLAGS = @LIBASSUAN_CFLAGS@ +LIBASSUAN_CONFIG = @LIBASSUAN_CONFIG@ +LIBASSUAN_LIBS = @LIBASSUAN_LIBS@ +LIBCAP = @LIBCAP@ +LIBCURSES = @LIBCURSES@ +LIBICONV = @LIBICONV@ +LIBNCURSES = @LIBNCURSES@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBSECRET_CFLAGS = @LIBSECRET_CFLAGS@ +LIBSECRET_LIBS = @LIBSECRET_LIBS@ +LIBTERMCAP = @LIBTERMCAP@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MOC = @MOC@ +MOC2 = @MOC2@ +NCURSES_CFLAGS = @NCURSES_CFLAGS@ +NCURSES_INCLUDE = @NCURSES_INCLUDE@ +NCURSES_LIBS = @NCURSES_LIBS@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PINENTRY_DEFAULT = @PINENTRY_DEFAULT@ +PINENTRY_QT_CFLAGS = @PINENTRY_QT_CFLAGS@ +PINENTRY_QT_LIBS = @PINENTRY_QT_LIBS@ +PINENTRY_QT_REQUIRE_CPP11_CFLAGS = @PINENTRY_QT_REQUIRE_CPP11_CFLAGS@ +PINENTRY_QT_REQUIRE_CPP11_LIBS = @PINENTRY_QT_REQUIRE_CPP11_LIBS@ +PINENTRY_TQT_CFLAGS = @PINENTRY_TQT_CFLAGS@ +PINENTRY_TQT_LIBS = @PINENTRY_TQT_LIBS@ +PKG_CONFIG = @PKG_CONFIG@ +QTCHOOSER = @QTCHOOSER@ +RANLIB = @RANLIB@ +SETCAP = @SETCAP@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TQT_MOC = @TQT_MOC@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = document-encrypt.png pinentry.qrc +@FALLBACK_CURSES_FALSE@ncurses_include = +@FALLBACK_CURSES_TRUE@ncurses_include = $(NCURSES_INCLUDE) +@FALLBACK_CURSES_FALSE@libcurses = +@FALLBACK_CURSES_TRUE@libcurses = ../pinentry/libpinentry-curses.a $(LIBCURSES) $(LIBICONV) +AM_CPPFLAGS = $(COMMON_CFLAGS) \ + -I$(top_srcdir) -I$(top_srcdir)/secmem \ + $(ncurses_include) -I$(top_srcdir)/pinentry + +AM_CXXFLAGS = $(PINENTRY_QT_CFLAGS) +pinentry_qt_LDADD = \ + ../pinentry/libpinentry.a $(top_builddir)/secmem/libsecmem.a \ + $(COMMON_LIBS) $(PINENTRY_QT_LIBS) $(libcurses) $(LIBCAP) + +BUILT_SOURCES = \ + pinentryconfirm.moc pinentrydialog.moc + +CLEANFILES = \ + pinentryconfirm.moc pinentrydialog.moc + +pinentry_qt_SOURCES = pinentrydialog.h pinentrydialog.cpp \ + main.cpp qrc_pinentry.cpp pinentryconfirm.cpp pinentryconfirm.h + +nodist_pinentry_qt_SOURCES = \ + pinentryconfirm.moc pinentrydialog.moc + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .cpp .h .moc .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu qt/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu qt/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +pinentry-qt$(EXEEXT): $(pinentry_qt_OBJECTS) $(pinentry_qt_DEPENDENCIES) $(EXTRA_pinentry_qt_DEPENDENCIES) + @rm -f pinentry-qt$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(pinentry_qt_OBJECTS) $(pinentry_qt_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pinentryconfirm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pinentrydialog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qrc_pinentry.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: all check install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS + + +.h.moc: + $(MOC) `test -f '$<' || echo '$(srcdir)/'`$< -o $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/document-encrypt.png b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/document-encrypt.png Binary files differnew file mode 100644 index 00000000..b80c2a6f --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/document-encrypt.png diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/main.cpp b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/main.cpp new file mode 100644 index 00000000..70a009d6 --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/main.cpp @@ -0,0 +1,364 @@ +/* main.cpp - A Qt dialog for PIN entry. + * Copyright (C) 2002, 2008 Klarälvdalens Datakonsult AB (KDAB) + * Copyright (C) 2003 g10 Code GmbH + * Copyright 2007 Ingo Klöcker + * + * Written by Steffen Hansen <steffen@klaralvdalens-datakonsult.se>. + * Modified by Marcus Brinkmann <marcus@g10code.de>. + * Modified by Marc Mutz <marc@kdab.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses/>. + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "pinentryconfirm.h" +#include "pinentrydialog.h" +#include "pinentry.h" + +#include <qapplication.h> +#include <QIcon> +#include <QString> +#include <qwidget.h> +#include <qmessagebox.h> +#include <QPushButton> + +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> + +#include <stdexcept> +#include <gpg-error.h> + +#ifdef FALLBACK_CURSES +#include <pinentry-curses.h> +#endif + +#if QT_VERSION >= 0x050000 && defined(QT_STATIC) + #include <QtPlugin> + #ifdef Q_OS_WIN + #include <windows.h> + #include <shlobj.h> + Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) + #elif defined(Q_OS_MAC) + Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) + #else + Q_IMPORT_PLUGIN(QXcbIntegrationPlugin) + #endif +#endif + +static QString escape_accel(const QString &s) +{ + + QString result; + result.reserve(s.size()); + + bool afterUnderscore = false; + + for (unsigned int i = 0, end = s.size() ; i != end ; ++i) { + const QChar ch = s[i]; + if (ch == QLatin1Char('_')) { + if (afterUnderscore) { // escaped _ + result += QLatin1Char('_'); + afterUnderscore = false; + } else { // accel + afterUnderscore = true; + } + } else { + if (afterUnderscore || // accel + ch == QLatin1Char('&')) { // escape & from being interpreted by Qt + result += QLatin1Char('&'); + } + result += ch; + afterUnderscore = false; + } + } + + if (afterUnderscore) + // trailing single underscore: shouldn't happen, but deal with it robustly: + { + result += QLatin1Char('_'); + } + + return result; +} + +/* Hack for creating a QWidget with a "foreign" window ID */ +class ForeignWidget : public QWidget +{ +public: + explicit ForeignWidget(WId wid) : QWidget(0) + { + QWidget::destroy(); + create(wid, false, false); + } + + ~ForeignWidget() + { + destroy(false, false); + } +}; + +namespace +{ +class InvalidUtf8 : public std::invalid_argument +{ +public: + InvalidUtf8() : std::invalid_argument("invalid utf8") {} + ~InvalidUtf8() throw() {} +}; +} + +static const bool GPG_AGENT_IS_PORTED_TO_ONLY_SEND_UTF8 = false; + +static QString from_utf8(const char *s) +{ + const QString result = QString::fromUtf8(s); + if (result.contains(QChar::ReplacementCharacter)) { + if (GPG_AGENT_IS_PORTED_TO_ONLY_SEND_UTF8) { + throw InvalidUtf8(); + } else { + return QString::fromLocal8Bit(s); + } + } + + return result; +} + +static int +qt_cmd_handler(pinentry_t pe) +{ + QWidget *parent = 0; + char *str; + + /* FIXME: Add parent window ID to pinentry and GTK. */ + if (pe->parent_wid) { + parent = new ForeignWidget((WId) pe->parent_wid); + } + + int want_pass = !!pe->pin; + + const QString ok = + pe->ok ? escape_accel(from_utf8(pe->ok)) : + pe->default_ok ? escape_accel(from_utf8(pe->default_ok)) : + /* else */ QLatin1String("&OK") ; + const QString cancel = + pe->cancel ? escape_accel(from_utf8(pe->cancel)) : + pe->default_cancel ? escape_accel(from_utf8(pe->default_cancel)) : + /* else */ QLatin1String("&Cancel") ; + + str = pinentry_get_title (pe); + const QString title = + str ? from_utf8(str) : + /* else */ QLatin1String("pinentry-qt") ; + free (str); + + const QString repeatError = + pe->repeat_error_string ? from_utf8(pe->repeat_error_string) : + QLatin1String("Passphrases do not match"); + const QString repeatString = + pe->repeat_passphrase ? from_utf8(pe->repeat_passphrase) : + QString(); + const QString visibilityTT = + pe->default_tt_visi ? from_utf8(pe->default_tt_visi) : + QLatin1String("Show passphrase"); + const QString hideTT = + pe->default_tt_hide ? from_utf8(pe->default_tt_hide) : + QLatin1String("Hide passphrase"); + + + if (want_pass) { + char *str; + + PinEntryDialog pinentry(parent, 0, pe->timeout, true, !!pe->quality_bar, + repeatString, visibilityTT, hideTT); + + pinentry.setPinentryInfo(pe); + pinentry.setPrompt(escape_accel(from_utf8(pe->prompt))); + pinentry.setDescription(from_utf8(pe->description)); + pinentry.setRepeatErrorText(repeatError); + + str = pinentry_get_title (pe); + if (str) { + pinentry.setWindowTitle(from_utf8(str)); + free (str); + } + + /* If we reuse the same dialog window. */ + pinentry.setPin(QString()); + + pinentry.setOkText(ok); + pinentry.setCancelText(cancel); + if (pe->error) { + pinentry.setError(from_utf8(pe->error)); + } + if (pe->quality_bar) { + pinentry.setQualityBar(from_utf8(pe->quality_bar)); + } + if (pe->quality_bar_tt) { + pinentry.setQualityBarTT(from_utf8(pe->quality_bar_tt)); + } + bool ret = pinentry.exec(); + if (!ret) { + if (pinentry.timedOut()) + pe->specific_err = gpg_error (GPG_ERR_TIMEOUT); + return -1; + } + + const QString pinStr = pinentry.pin(); + QByteArray pin = pinStr.toUtf8(); + + if (!!pe->repeat_passphrase) { + /* Should not have been possible to accept + the dialog in that case but we do a safety + check here */ + pe->repeat_okay = (pinStr == pinentry.repeatedPin()); + } + + int len = strlen(pin.constData()); + if (len >= 0) { + pinentry_setbufferlen(pe, len + 1); + if (pe->pin) { + strcpy(pe->pin, pin.constData()); + return len; + } + } + return -1; + } else { + const QString desc = pe->description ? from_utf8(pe->description) : QString(); + const QString notok = pe->notok ? escape_accel(from_utf8(pe->notok)) : QString(); + + const QMessageBox::StandardButtons buttons = + pe->one_button ? QMessageBox::Ok : + pe->notok ? QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel : + /* else */ QMessageBox::Ok | QMessageBox::Cancel ; + + PinentryConfirm box(QMessageBox::Information, pe->timeout, title, desc, buttons, parent); + + const struct { + QMessageBox::StandardButton button; + QString label; + } buttonLabels[] = { + { QMessageBox::Ok, ok }, + { QMessageBox::Yes, ok }, + { QMessageBox::No, notok }, + { QMessageBox::Cancel, cancel }, + }; + + for (size_t i = 0 ; i < sizeof buttonLabels / sizeof * buttonLabels ; ++i) + if ((buttons & buttonLabels[i].button) && !buttonLabels[i].label.isEmpty()) { + box.button(buttonLabels[i].button)->setText(buttonLabels[i].label); +#ifndef QT_NO_ACCESSIBILITY + box.button(buttonLabels[i].button)->setAccessibleDescription(buttonLabels[i].label); +#endif + } + + box.setIconPixmap(icon()); + + if (!pe->one_button) { + box.setDefaultButton(QMessageBox::Cancel); + } + + box.show(); + raiseWindow(&box); + + const int rc = box.exec(); + + if (rc == QMessageBox::Cancel) { + pe->canceled = true; + } + if (box.timedOut()) { + pe->specific_err = gpg_error (GPG_ERR_TIMEOUT); + } + + return rc == QMessageBox::Ok || rc == QMessageBox::Yes ; + + } +} + +static int +qt_cmd_handler_ex(pinentry_t pe) +{ + try { + return qt_cmd_handler(pe); + } catch (const InvalidUtf8 &) { + pe->locale_err = true; + return pe->pin ? -1 : false ; + } catch (...) { + pe->canceled = true; + return pe->pin ? -1 : false ; + } +} + +pinentry_cmd_handler_t pinentry_cmd_handler = qt_cmd_handler_ex; + +int +main(int argc, char *argv[]) +{ + pinentry_init("pinentry-qt"); + + QApplication *app = NULL; + +#ifdef FALLBACK_CURSES + if (!pinentry_have_display(argc, argv)) { + pinentry_cmd_handler = curses_cmd_handler; + pinentry_set_flavor_flag ("curses"); + } else +#endif + { + /* Qt does only understand -display but not --display; thus we + are fixing that here. The code is pretty simply and may get + confused if an argument is called "--display". */ + char **new_argv, *p; + size_t n; + int i, done; + + for (n = 0, i = 0; i < argc; i++) { + n += strlen(argv[i]) + 1; + } + n++; + new_argv = (char **)calloc(argc + 1, sizeof * new_argv); + if (new_argv) { + *new_argv = (char *)malloc(n); + } + if (!new_argv || !*new_argv) { + fprintf(stderr, "pinentry-qt: can't fixup argument list: %s\n", + strerror(errno)); + exit(EXIT_FAILURE); + + } + for (done = 0, p = *new_argv, i = 0; i < argc; i++) + if (!done && !strcmp(argv[i], "--display")) { + new_argv[i] = strcpy(p, argv[i] + 1); + p += strlen(argv[i] + 1) + 1; + done = 1; + } else { + new_argv[i] = strcpy(p, argv[i]); + p += strlen(argv[i]) + 1; + } + + i = argc; + app = new QApplication(i, new_argv); + app->setWindowIcon(QIcon(QLatin1String(":/document-encrypt.png"))); + } + + pinentry_parse_opts(argc, argv); + + int rc = pinentry_loop(); + delete app; + return rc ? EXIT_FAILURE : EXIT_SUCCESS ; +} diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentry.qrc b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentry.qrc new file mode 100644 index 00000000..94db0548 --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentry.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC> +<RCC version="1.0"> +<qresource> + <file>document-encrypt.png</file> +</qresource> +</RCC> diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.cpp b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.cpp new file mode 100644 index 00000000..65b191cf --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.cpp @@ -0,0 +1,77 @@ +/* pinentryconfirm.cpp - A QMessageBox with a timeout + * + * Copyright (C) 2011 Ben Kibbey <bjk@luxsci.net> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses/>. + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include "pinentryconfirm.h" +#include "pinentrydialog.h" +#include <QAbstractButton> +#include <QGridLayout> +#include <QSpacerItem> +#include <QFontMetrics> + +PinentryConfirm::PinentryConfirm(Icon icon, int timeout, const QString &title, + const QString &desc, StandardButtons buttons, QWidget *parent) : + QMessageBox(icon, title, desc, buttons, parent) +{ + _timed_out = false; + if (timeout > 0) { + _timer = new QTimer(this); + connect(_timer, SIGNAL(timeout()), this, SLOT(slotTimeout())); + _timer->start(timeout * 1000); + } +#ifndef QT_NO_ACCESSIBILITY + setAccessibleDescription(desc); + setAccessibleName(title); +#endif + raiseWindow(this); +} + +bool PinentryConfirm::timedOut() const +{ + return _timed_out; +} + +void PinentryConfirm::showEvent(QShowEvent *event) +{ + static bool resized; + if (!resized) { + QGridLayout* lay = dynamic_cast<QGridLayout*> (layout()); + if (lay) { + QSize textSize = fontMetrics().size(Qt::TextExpandTabs, text(), fontMetrics().maxWidth()); + QSpacerItem* horizontalSpacer = new QSpacerItem(textSize.width() + iconPixmap().width(), + 0, QSizePolicy::Minimum, QSizePolicy::Expanding); + lay->addItem(horizontalSpacer, lay->rowCount(), 1, 1, lay->columnCount() - 1); + } + resized = true; + } + + QDialog::showEvent(event); + raiseWindow(this); +} + +void PinentryConfirm::slotTimeout() +{ + QAbstractButton *b = button(QMessageBox::Cancel); + _timed_out = true; + + if (b) { + b->animateClick(0); + } +} + +#include "pinentryconfirm.moc" diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.h b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.h new file mode 100644 index 00000000..ec116ac3 --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentryconfirm.h @@ -0,0 +1,46 @@ +/* pinentryconfirm.h - A QMessageBox with a timeout + * + * Copyright (C) 2011 Ben Kibbey <bjk@luxsci.net> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses/>. + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef PINENTRYCONFIRM_H +#define PINENTRYCONFIRM_H + +#include <QMessageBox> +#include <QTimer> + +class PinentryConfirm : public QMessageBox +{ + Q_OBJECT +public: + PinentryConfirm(Icon, int timeout, const QString &title, + const QString &desc, StandardButtons buttons, + QWidget *parent); + bool timedOut() const; + +private slots: + void slotTimeout(); + +private: + QTimer *_timer; + bool _timed_out; + +protected: + /* reimp */ void showEvent(QShowEvent *event); +}; + +#endif diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.cpp b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.cpp new file mode 100644 index 00000000..cb52d7cf --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.cpp @@ -0,0 +1,476 @@ +/* pinentrydialog.cpp - A (not yet) secure Qt 4 dialog for PIN entry. + * Copyright (C) 2002, 2008 Klarälvdalens Datakonsult AB (KDAB) + * Copyright 2007 Ingo Klöcker + * Copyright 2016 Intevation GmbH + * + * Written by Steffen Hansen <steffen@klaralvdalens-datakonsult.se>. + * Modified by Andre Heinecke <aheinecke@intevation.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses/>. + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include "pinentrydialog.h" +#include <QGridLayout> + +#include <QProgressBar> +#include <QApplication> +#include <QStyle> +#include <QPainter> +#include <QPushButton> +#include <QDialogButtonBox> +#include <QKeyEvent> +#include <QLabel> +#include <QPalette> +#include <QLineEdit> +#include <QAction> +#include <QCheckBox> + +#ifdef Q_OS_WIN +#include <windows.h> +#endif + +/* I [wk] have no idea for what this code was supposed to do. + Foregrounding a window is heavily restricted by modern Windows + versions. This is the reason why gpg-agent employs its + AllowSetForegroundWindow callback machinery to ask the supposed to + be be calling process to allow a pinentry to go into the + foreground. + + [ah] This is a Hack to workaround the fact that Foregrounding + a Window is so restricted that it AllowSetForegroundWindow + does not always work (e.g. when the ForegroundWindow timeout + has not expired. + */ +#ifdef Q_OS_WIN +WINBOOL SetForegroundWindowEx(HWND hWnd) +{ + //Attach foreground window thread to our thread + const DWORD ForeGroundID = GetWindowThreadProcessId(::GetForegroundWindow(), NULL); + const DWORD CurrentID = GetCurrentThreadId(); + WINBOOL retval; + + AttachThreadInput(ForeGroundID, CurrentID, TRUE); + //Do our stuff here + HWND hLastActivePopupWnd = GetLastActivePopup(hWnd); + retval = SetForegroundWindow(hLastActivePopupWnd); + + //Detach the attached thread + AttachThreadInput(ForeGroundID, CurrentID, FALSE); + return retval; +}// End SetForegroundWindowEx +#endif + +void raiseWindow(QWidget *w) +{ + /* Maybe Qt will become aggressive enough one day that + * this is enough on windows too*/ + w->raise(); +#ifdef Q_OS_WIN + HWND wid = (HWND)w->effectiveWinId(); + /* In the meantime we do our own attention grabbing */ + if (!SetForegroundWindow(wid) && !SetForegroundWindowEx(wid)) { + OutputDebugString("SetForegroundWindow (ex) failed"); + /* Yet another fallback which will not work on some + * versions and is not recommended by msdn */ + if (!ShowWindow(wid, SW_SHOWNORMAL)) { + OutputDebugString("ShowWindow failed."); + } + } + /* Even if SetForgeoundWindow / SetForegroundWinowEx don't fail + * we sometimes are still not in the foreground. So we try yet + * another hack by using SetWindowPos */ + if (!SetWindowPos(wid, HWND_TOPMOST, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW)) { + OutputDebugString("SetWindowPos failed."); + } else { + /* Without moving back to NOTOPMOST we just stay on top. + * Even if the user changes focus. */ + SetWindowPos(wid, HWND_NOTOPMOST, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); + } +#endif +} + +QPixmap icon(QStyle::StandardPixmap which) +{ + QPixmap pm = qApp->windowIcon().pixmap(48, 48); + + if (which != QStyle::SP_CustomBase) { + const QIcon ic = qApp->style()->standardIcon(which); + QPainter painter(&pm); + const int emblemSize = 22; + painter.drawPixmap(pm.width() - emblemSize, 0, + ic.pixmap(emblemSize, emblemSize)); + } + + return pm; +} + +void PinEntryDialog::slotTimeout() +{ + _timed_out = true; + reject(); +} + +PinEntryDialog::PinEntryDialog(QWidget *parent, const char *name, + int timeout, bool modal, bool enable_quality_bar, + const QString &repeatString, + const QString &visibilityTT, + const QString &hideTT) + : QDialog(parent, Qt::WindowStaysOnTopHint), + mRepeat(NULL), + _grabbed(false), + mVisibilityTT(visibilityTT), + mHideTT(hideTT), + mVisiActionEdit(NULL), + mVisiCB(NULL) +{ + _timed_out = false; + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + + if (modal) { + setWindowModality(Qt::ApplicationModal); + } + + _icon = new QLabel(this); + _icon->setPixmap(icon()); + + _error = new QLabel(this); + QPalette pal; + pal.setColor(QPalette::WindowText, Qt::red); + _error->setPalette(pal); + _error->hide(); + + _desc = new QLabel(this); + _desc->hide(); + + _prompt = new QLabel(this); + _prompt->hide(); + + _edit = new QLineEdit(this); + _edit->setMaxLength(256); + _edit->setEchoMode(QLineEdit::Password); + + _prompt->setBuddy(_edit); + + if (enable_quality_bar) { + _quality_bar_label = new QLabel(this); + _quality_bar_label->setAlignment(Qt::AlignVCenter); + _quality_bar = new QProgressBar(this); + _quality_bar->setAlignment(Qt::AlignCenter); + _have_quality_bar = true; + } else { + _have_quality_bar = false; + } + + QDialogButtonBox *const buttons = new QDialogButtonBox(this); + buttons->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + _ok = buttons->button(QDialogButtonBox::Ok); + _cancel = buttons->button(QDialogButtonBox::Cancel); + + _ok->setDefault(true); + + if (style()->styleHint(QStyle::SH_DialogButtonBox_ButtonsHaveIcons)) { + _ok->setIcon(style()->standardIcon(QStyle::SP_DialogOkButton)); + _cancel->setIcon(style()->standardIcon(QStyle::SP_DialogCancelButton)); + } + + if (timeout > 0) { + _timer = new QTimer(this); + connect(_timer, SIGNAL(timeout()), this, SLOT(slotTimeout())); + _timer->start(timeout * 1000); + } else { + _timer = NULL; + } + + connect(buttons, SIGNAL(accepted()), this, SLOT(accept())); + connect(buttons, SIGNAL(rejected()), this, SLOT(reject())); + connect(_edit, SIGNAL(textChanged(QString)), + this, SLOT(updateQuality(QString))); + connect(_edit, SIGNAL(textChanged(QString)), + this, SLOT(textChanged(QString))); + + _edit->setFocus(); + + QGridLayout *const grid = new QGridLayout(this); + int row = 1; + grid->addWidget(_error, row++, 1, 1, 2); + grid->addWidget(_desc, row++, 1, 1, 2); + //grid->addItem( new QSpacerItem( 0, _edit->height() / 10, QSizePolicy::Minimum, QSizePolicy::Fixed ), 1, 1 ); + grid->addWidget(_prompt, row, 1); + grid->addWidget(_edit, row++, 2); + if (!repeatString.isNull()) { + mRepeat = new QLineEdit; + mRepeat->setMaxLength(256); + mRepeat->setEchoMode(QLineEdit::Password); + connect(mRepeat, SIGNAL(textChanged(QString)), + this, SLOT(textChanged(QString))); + QLabel *repeatLabel = new QLabel(repeatString); + repeatLabel->setBuddy(mRepeat); + grid->addWidget(repeatLabel, row, 1); + grid->addWidget(mRepeat, row++, 2); + setTabOrder(_edit, mRepeat); + setTabOrder(mRepeat, _ok); + } + if (enable_quality_bar) { + grid->addWidget(_quality_bar_label, row, 1); + grid->addWidget(_quality_bar, row++, 2); + } + /* Set up the show password action */ + const QIcon visibilityIcon = QIcon::fromTheme(QLatin1String("visibility")); + const QIcon hideIcon = QIcon::fromTheme(QLatin1String("hint")); +#if QT_VERSION >= 0x050200 + if (!visibilityIcon.isNull() && !hideIcon.isNull()) { + mVisiActionEdit = _edit->addAction(visibilityIcon, QLineEdit::TrailingPosition); + mVisiActionEdit->setVisible(false); + mVisiActionEdit->setToolTip(mVisibilityTT); + connect(mVisiActionEdit, SIGNAL(triggered()), this, SLOT(toggleVisibility())); + } else +#endif + { + if (!mVisibilityTT.isNull()) { + mVisiCB = new QCheckBox(mVisibilityTT); + connect(mVisiCB, SIGNAL(toggled(bool)), this, SLOT(toggleVisibility())); + grid->addWidget(mVisiCB, row++, 1, 1, 2, Qt::AlignLeft); + } + } + grid->addWidget(buttons, ++row, 0, 1, 3); + + grid->addWidget(_icon, 0, 0, row - 1, 1, Qt::AlignVCenter | Qt::AlignLeft); + + grid->setSizeConstraint(QLayout::SetFixedSize); + + + connect(qApp, SIGNAL(focusChanged(QWidget *, QWidget *)), + this, SLOT(focusChanged(QWidget *, QWidget *))); +} + +void PinEntryDialog::showEvent(QShowEvent *event) +{ + QDialog::showEvent(event); + raiseWindow(this); +} + +void PinEntryDialog::setDescription(const QString &txt) +{ + _desc->setVisible(!txt.isEmpty()); + _desc->setText(txt); +#ifndef QT_NO_ACCESSIBILITY + _desc->setAccessibleDescription(txt); +#endif + _icon->setPixmap(icon()); + setError(QString::null); +} + +QString PinEntryDialog::description() const +{ + return _desc->text(); +} + +void PinEntryDialog::setError(const QString &txt) +{ + if (!txt.isNull()) { + _icon->setPixmap(icon(QStyle::SP_MessageBoxCritical)); + } + _error->setText(txt); +#ifndef QT_NO_ACCESSIBILITY + _error->setAccessibleDescription(txt); +#endif + _error->setVisible(!txt.isEmpty()); +} + +QString PinEntryDialog::error() const +{ + return _error->text(); +} + +void PinEntryDialog::setPin(const QString &txt) +{ + _edit->setText(txt); +} + +QString PinEntryDialog::pin() const +{ + return _edit->text(); +} + +void PinEntryDialog::setPrompt(const QString &txt) +{ + _prompt->setText(txt); + _prompt->setVisible(!txt.isEmpty()); +} + +QString PinEntryDialog::prompt() const +{ + return _prompt->text(); +} + +void PinEntryDialog::setOkText(const QString &txt) +{ + _ok->setText(txt); +#ifndef QT_NO_ACCESSIBILITY + _ok->setAccessibleDescription(txt); +#endif + _ok->setVisible(!txt.isEmpty()); +} + +void PinEntryDialog::setCancelText(const QString &txt) +{ + _cancel->setText(txt); +#ifndef QT_NO_ACCESSIBILITY + _cancel->setAccessibleDescription(txt); +#endif + _cancel->setVisible(!txt.isEmpty()); +} + +void PinEntryDialog::setQualityBar(const QString &txt) +{ + if (_have_quality_bar) { + _quality_bar_label->setText(txt); +#ifndef QT_NO_ACCESSIBILITY + _quality_bar_label->setAccessibleDescription(txt); +#endif + } +} + +void PinEntryDialog::setQualityBarTT(const QString &txt) +{ + if (_have_quality_bar) { + _quality_bar->setToolTip(txt); + } +} + +void PinEntryDialog::updateQuality(const QString &txt) +{ + int length; + int percent; + QPalette pal; + + if (_timer) { + _timer->stop(); + } + + if (!_have_quality_bar || !_pinentry_info) { + return; + } + const QByteArray utf8_pin = txt.toUtf8(); + const char *pin = utf8_pin.constData(); + length = strlen(pin); + percent = length ? pinentry_inq_quality(_pinentry_info, pin, length) : 0; + if (!length) { + _quality_bar->reset(); + } else { + pal = _quality_bar->palette(); + if (percent < 0) { + pal.setColor(QPalette::Highlight, QColor("red")); + percent = -percent; + } else { + pal.setColor(QPalette::Highlight, QColor("green")); + } + _quality_bar->setPalette(pal); + _quality_bar->setValue(percent); + } +} + +void PinEntryDialog::setPinentryInfo(pinentry_t peinfo) +{ + _pinentry_info = peinfo; +} + +void PinEntryDialog::focusChanged(QWidget *old, QWidget *now) +{ + // Grab keyboard. It might be a little weird to do it here, but it works! + // Previously this code was in showEvent, but that did not work in Qt4. + if (!_pinentry_info || _pinentry_info->grab) { + if (_grabbed && old && (old == _edit || old == mRepeat)) { + old->releaseKeyboard(); + _grabbed = false; + } + if (!_grabbed && now && (now == _edit || now == mRepeat)) { + now->grabKeyboard(); + _grabbed = true; + } + } + +} + +void PinEntryDialog::textChanged(const QString &text) +{ + Q_UNUSED(text); + if (mRepeat && mRepeat->text() == _edit->text()) { + _ok->setEnabled(true); + _ok->setToolTip(QString()); + } else if (mRepeat) { + _ok->setEnabled(false); + _ok->setToolTip(mRepeatError); + } + + if (mVisiActionEdit && sender() == _edit) { + mVisiActionEdit->setVisible(!_edit->text().isEmpty()); + } +} + +void PinEntryDialog::toggleVisibility() +{ + if (sender() == mVisiActionEdit) { + if (_edit->echoMode() == QLineEdit::Password) { + mVisiActionEdit->setIcon(QIcon::fromTheme(QLatin1String("hint"))); + mVisiActionEdit->setToolTip(mHideTT); + _edit->setEchoMode(QLineEdit::Normal); + if (mRepeat) { + mRepeat->setEchoMode(QLineEdit::Normal); + } + } else { + mVisiActionEdit->setIcon(QIcon::fromTheme(QLatin1String("visibility"))); + mVisiActionEdit->setToolTip(mVisibilityTT); + _edit->setEchoMode(QLineEdit::Password); + if (mRepeat) { + mRepeat->setEchoMode(QLineEdit::Password); + } + } + } + if (sender() == mVisiCB) { + if (mVisiCB->isChecked()) { + if (mRepeat) { + mRepeat->setEchoMode(QLineEdit::Normal); + } + _edit->setEchoMode(QLineEdit::Normal); + } else { + if (mRepeat) { + mRepeat->setEchoMode(QLineEdit::Password); + } + _edit->setEchoMode(QLineEdit::Password); + } + } +} + +QString PinEntryDialog::repeatedPin() const +{ + if (mRepeat) { + return mRepeat->text(); + } + return QString(); +} + +bool PinEntryDialog::timedOut() const +{ + return _timed_out; +} + +void PinEntryDialog::setRepeatErrorText(const QString &err) +{ + mRepeatError = err; +} +#include "pinentrydialog.moc" diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.h b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.h new file mode 100644 index 00000000..52b7343b --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/pinentrydialog.h @@ -0,0 +1,119 @@ +/* pinentrydialog.h - A (not yet) secure Qt 4 dialog for PIN entry. + * Copyright (C) 2002, 2008 Klarälvdalens Datakonsult AB (KDAB) + * Copyright 2007 Ingo Klöcker + * Copyright 2016 Intevation GmbH + * + * Written by Steffen Hansen <steffen@klaralvdalens-datakonsult.se>. + * Modified by Andre Heinecke <aheinecke@intevation.de> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <https://www.gnu.org/licenses/>. + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __PINENTRYDIALOG_H__ +#define __PINENTRYDIALOG_H__ + +#include <QDialog> +#include <QStyle> +#include <QTimer> + +#include "pinentry.h" + +class QLabel; +class QPushButton; +class QLineEdit; +class QString; +class QProgressBar; +class QCheckBox; +class QAction; + +QPixmap icon(QStyle::StandardPixmap which = QStyle::SP_CustomBase); + +void raiseWindow(QWidget *w); + +class PinEntryDialog : public QDialog +{ + Q_OBJECT + + Q_PROPERTY(QString description READ description WRITE setDescription) + Q_PROPERTY(QString error READ error WRITE setError) + Q_PROPERTY(QString pin READ pin WRITE setPin) + Q_PROPERTY(QString prompt READ prompt WRITE setPrompt) +public: + explicit PinEntryDialog(QWidget *parent = 0, const char *name = 0, + int timeout = 0, bool modal = false, + bool enable_quality_bar = false, + const QString &repeatString = QString(), + const QString &visibiltyTT = QString(), + const QString &hideTT = QString()); + + void setDescription(const QString &); + QString description() const; + + void setError(const QString &); + QString error() const; + + void setPin(const QString &); + QString pin() const; + + QString repeatedPin() const; + void setRepeatErrorText(const QString &); + + void setPrompt(const QString &); + QString prompt() const; + + void setOkText(const QString &); + void setCancelText(const QString &); + + void setQualityBar(const QString &); + void setQualityBarTT(const QString &); + + void setPinentryInfo(pinentry_t); + + bool timedOut() const; + +protected slots: + void updateQuality(const QString &); + void slotTimeout(); + void textChanged(const QString &); + void focusChanged(QWidget *old, QWidget *now); + void toggleVisibility(); + +protected: + /* reimp */ void showEvent(QShowEvent *event); + +private: + QLabel *_icon; + QLabel *_desc; + QLabel *_error; + QLabel *_prompt; + QLabel *_quality_bar_label; + QProgressBar *_quality_bar; + QLineEdit *_edit; + QLineEdit *mRepeat; + QPushButton *_ok; + QPushButton *_cancel; + bool _grabbed; + bool _have_quality_bar; + bool _timed_out; + pinentry_t _pinentry_info; + QTimer *_timer; + QString mRepeatError, + mVisibilityTT, + mHideTT; + QAction *mVisiActionEdit; + QCheckBox *mVisiCB; +}; + +#endif // __PINENTRYDIALOG_H__ diff --git a/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/qrc_pinentry.cpp b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/qrc_pinentry.cpp new file mode 100644 index 00000000..6ab21299 --- /dev/null +++ b/debian/pinentry-tqt/pinentry-tqt-1.1.0/qt/qrc_pinentry.cpp @@ -0,0 +1,177 @@ +/**************************************************************************** +** Resource object code +** +** Created: Wed Feb 17 23:35:02 2010 +** by: The Resource Compiler for Qt version 4.4.3 +** +** WARNING! All changes made in this file will be lost! +*****************************************************************************/ + +#include <QtCore/qglobal.h> + +static const unsigned char qt_resource_data[] = { + // /home/marc/KDE/src/gnupg-backend/pinentry/qt4/document-encrypt.png + 0x0,0x0,0x7,0x2b, + 0x89, + 0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0, + 0x0,0x0,0x30,0x0,0x0,0x0,0x30,0x8,0x6,0x0,0x0,0x0,0x57,0x2,0xf9,0x87, + 0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88, + 0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0x5,0x31,0x0,0x0,0x5,0x31, + 0x1,0xb7,0xed,0x28,0x52,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66, + 0x74,0x77,0x61,0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61, + 0x70,0x65,0x2e,0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x6,0xa8,0x49,0x44, + 0x41,0x54,0x78,0xda,0xd5,0x59,0x4b,0x6c,0x55,0x45,0x18,0xfe,0x67,0xce,0x7d,0xf5, + 0xfd,0xc0,0x82,0xb1,0xd,0xb,0xdd,0x11,0x34,0x46,0xd1,0xd,0x1b,0x42,0x4c,0x48, + 0x31,0xb4,0x68,0x52,0x16,0xb8,0x31,0xae,0x4c,0xec,0x92,0x85,0xa9,0x8b,0x6e,0x8c, + 0xb2,0x60,0xa9,0x21,0xee,0x5c,0xdb,0xf8,0x58,0xb9,0xa1,0x6d,0x60,0x61,0x42,0xb4, + 0xe0,0x2,0x41,0xd,0x8,0xd1,0xb6,0x94,0x36,0x5c,0xfb,0xa6,0xbd,0xf7,0x9e,0x73, + 0xc6,0xef,0xfb,0x73,0x99,0x73,0xe3,0xc5,0x40,0xd3,0x9e,0x5b,0x99,0xe4,0xe3,0x9f, + 0x33,0x33,0x67,0xce,0xff,0xfd,0xaf,0x99,0x72,0x8d,0x73,0x4e,0x9e,0xe6,0x96,0x91, + 0x14,0xda,0x8d,0x1b,0x37,0x72,0xd7,0xaf,0x5f,0x7f,0xb1,0x54,0x2a,0xbd,0xba,0xb9, + 0xb9,0xc9,0xa1,0x2b,0xb3,0xb3,0xb3,0xd7,0x46,0x47,0x47,0xcb,0xb2,0xc3,0x6d,0xc7, + 0x3c,0x30,0x3e,0x3e,0xbe,0xbf,0x52,0xa9,0x7c,0x8,0xa5,0x5f,0xc9,0x66,0xb3,0x2f, + 0x37,0x37,0x37,0xe7,0x3b,0x3a,0x3a,0xc4,0x5a,0x2b,0x2b,0x2b,0x2b,0xb2,0xbc,0xbc, + 0x5c,0xba,0x7f,0xff,0xfe,0x35,0xcc,0xff,0xb4,0x67,0xcf,0x9e,0xb3,0x43,0x43,0x43, + 0x7f,0xfd,0x6f,0x8,0x4c,0x4c,0x4c,0x7c,0x10,0x86,0xe1,0x68,0x6b,0x6b,0x6b,0x4f, + 0x77,0x77,0xb7,0xe4,0x72,0x39,0xe1,0xbe,0x4b,0x4b,0x4b,0x2a,0xf7,0xee,0xdd,0x2b, + 0x50,0x5a,0xc7,0x17,0x16,0x16,0xe4,0xd2,0xa5,0x4b,0x45,0x90,0x1c,0x3d,0x75,0xea, + 0xd4,0xe7,0xbb,0x4a,0x60,0x72,0x72,0xb2,0x17,0x8a,0x7f,0x89,0xee,0x1b,0x5d,0x5d, + 0x5d,0x2,0xf,0xc8,0xad,0x5b,0xb7,0x64,0x71,0x71,0x51,0x15,0x6f,0x6b,0x6b,0x13, + 0x63,0xc,0x3d,0xa0,0x63,0x50,0x5a,0xe,0x1e,0x3c,0x28,0xc7,0x8e,0x1d,0x93,0xa9, + 0xa9,0x29,0x29,0x16,0x8b,0xe3,0xed,0xed,0xed,0xef,0x1e,0x3d,0x7a,0x74,0xb6,0xe1, + 0x4,0xc6,0xc6,0xc6,0x72,0xb0,0xf6,0x1f,0xe8,0xf6,0xc1,0xf2,0x72,0xf7,0xee,0x5d, + 0x86,0x89,0x74,0x76,0x76,0x4a,0x14,0x45,0x12,0xc7,0xb1,0x80,0x9c,0xca,0x20,0x8, + 0x24,0x93,0xc9,0x28,0x90,0xb,0x32,0x3d,0x3d,0x2d,0xc3,0xc3,0xc3,0x3a,0x7f,0xf3, + 0xe6,0xcd,0x99,0xde,0xde,0xde,0x17,0xe,0x1c,0x38,0x50,0x6e,0x24,0x1,0x86,0xcd, + 0x37,0x78,0xf7,0xad,0x7c,0x3e,0x2f,0xb7,0x6f,0xdf,0x16,0xc4,0x3c,0xad,0x4e,0x8b, + 0xff,0xd,0xa5,0x3f,0x3,0xa6,0x40,0x64,0xea,0xc1,0x83,0x7,0x24,0x70,0xa8,0x5c, + 0x2e,0x1f,0x82,0x1c,0x46,0x5e,0x74,0x93,0xe0,0xd5,0xab,0x57,0x65,0x70,0x70,0x50, + 0xf0,0x3e,0x3d,0xf7,0xed,0xe1,0xc3,0x87,0xdf,0x6e,0x18,0x81,0xb,0x17,0x2e,0x1c, + 0x47,0x72,0x7e,0x7,0x8b,0x66,0x69,0x51,0x48,0x2a,0x41,0x12,0x5f,0x6d,0x6c,0x6c, + 0xbc,0x7f,0xfa,0xf4,0xe9,0x45,0x79,0x44,0x3b,0x7f,0xfe,0x7c,0x17,0xac,0xfe,0x5, + 0x3c,0x36,0x54,0x28,0x14,0xe4,0xf2,0xe5,0xcb,0x32,0x32,0x32,0x42,0x2f,0x84,0x20, + 0x3e,0x8,0x12,0xdf,0xa7,0x4e,0xe0,0xe2,0xc5,0x8b,0x19,0x28,0x39,0x3,0xcb,0xed, + 0xa3,0xd2,0xf3,0xf3,0xf3,0x6a,0x79,0xe4,0xc0,0xc8,0xc0,0xc0,0xc0,0xa7,0xf2,0x4, + 0xed,0xdc,0xb9,0x73,0x1f,0xf5,0xf4,0xf4,0x7c,0xbc,0xbe,0xbe,0xae,0x89,0xdd,0xdf, + 0xdf,0x2f,0x73,0x73,0x73,0xf3,0x6b,0x6b,0x6b,0x7d,0x47,0x8e,0x1c,0x9,0x65,0xb, + 0xcd,0x6e,0x91,0x30,0xe3,0xfc,0x24,0x3e,0xba,0x8f,0xc9,0x39,0x33,0x33,0xa3,0xf1, + 0xe,0x32,0xbf,0x42,0xf9,0xb3,0xf2,0x84,0xed,0xcc,0x99,0x33,0x9f,0x20,0xb1,0x7f, + 0x69,0x6a,0x6a,0xd2,0xdc,0x41,0x69,0xa5,0x7,0xf7,0x61,0xea,0x24,0x20,0x69,0x12, + 0x60,0xe2,0xf5,0xb3,0x9a,0xd0,0xea,0x54,0x9e,0x7,0x55,0x4b,0x4b,0xcb,0x9b,0x98, + 0xda,0x8a,0x2b,0x1d,0x94,0x1e,0x0,0x1c,0x3c,0xc7,0x83,0x8f,0x15,0x8a,0xf9,0xd3, + 0x9f,0x36,0x1,0x5a,0x8a,0xc9,0x28,0x48,0x4a,0x92,0xe1,0x47,0x57,0x4f,0x9c,0x38, + 0x71,0x47,0xb6,0xd6,0xe8,0x85,0x3b,0x78,0x7f,0x81,0x7b,0xdd,0xbb,0x77,0x4f,0xe8, + 0xd,0xe4,0xd5,0xa1,0xb4,0x9,0xb0,0x2c,0xf6,0x2,0xac,0xed,0x24,0xc1,0x4,0xfe, + 0xdd,0x4f,0x6e,0x7d,0xaf,0x6b,0xf4,0x22,0xf,0x37,0x96,0x62,0xb4,0xde,0xb4,0x9, + 0xd0,0x4a,0x9d,0xc,0x9f,0xd5,0xd5,0x55,0x12,0xe0,0x61,0x35,0xe9,0x27,0xb7,0xbe, + 0xd7,0xf,0xc,0x41,0x1a,0xa4,0xda,0x3a,0xd3,0x26,0xc0,0x90,0x9,0xf0,0x61,0x86, + 0xf,0xad,0xcf,0xa1,0x95,0x6d,0x10,0x58,0xe6,0x1e,0x2c,0x8,0xa8,0x40,0x1c,0xa, + 0xd2,0x23,0x50,0xff,0x71,0x3d,0x84,0xd8,0x76,0x62,0xf,0x5f,0xce,0x1b,0x45,0x0, + 0xc9,0xc7,0xc4,0xdb,0x2e,0x81,0x6d,0xef,0x91,0xd9,0xe,0x1,0x1e,0x42,0xdb,0x6d, + 0x3c,0x91,0x7d,0x6b,0xb0,0x7,0xfc,0xc7,0x53,0xda,0x23,0x7d,0x2,0x8c,0xdf,0x6d, + 0x36,0xee,0xf1,0xd4,0x12,0x60,0xe,0x30,0xc,0xd3,0xff,0x83,0xe6,0xc7,0xaf,0xdf, + 0x71,0x2f,0xbd,0xe6,0xa4,0x38,0xdd,0x2d,0x8b,0xc5,0x66,0xdc,0x5d,0x22,0x9e,0x1, + 0x1e,0x15,0x95,0x25,0xf6,0xeb,0x20,0xce,0xb1,0xdc,0x12,0xbc,0x2e,0x40,0xe1,0xbc, + 0xe4,0xf2,0x39,0x55,0x3c,0x8b,0x3e,0x25,0xd,0x41,0x14,0x9a,0x72,0xd2,0xdd,0xd7, + 0x25,0xd9,0x67,0x9c,0x5c,0x99,0xf8,0x59,0x8e,0xbf,0x37,0x66,0x76,0x2c,0x89,0x6d, + 0x26,0x94,0x67,0xf7,0xff,0x26,0xdd,0x1d,0x7f,0xca,0xc6,0x52,0x28,0xeb,0xeb,0x4d, + 0xb8,0x7,0x65,0x65,0x63,0xc3,0x0,0x56,0x36,0x36,0x45,0x4a,0x81,0x91,0x4d,0xeb, + 0xa4,0xa4,0x88,0x25,0xb,0x80,0x0,0x94,0x34,0x92,0x27,0xf2,0x84,0x95,0x2,0x1c, + 0x97,0x2f,0x20,0x81,0x5b,0x9c,0x34,0x17,0x80,0xf6,0xb2,0x74,0xf4,0x64,0xa5,0xe9, + 0xb9,0xd7,0xc5,0xb4,0x3d,0x2f,0xc5,0xb9,0x62,0x7a,0x55,0xc8,0x18,0x7,0x65,0x8a, + 0x92,0x33,0xeb,0x52,0xce,0xc4,0xb2,0x89,0x1d,0xd6,0x4c,0x20,0xad,0x90,0x65,0x44, + 0x43,0x58,0xe0,0x15,0x81,0xb0,0x12,0x58,0x86,0x1a,0xde,0x81,0xcc,0x6,0xec,0x43, + 0xe2,0x1d,0x95,0x58,0x97,0x6b,0x1,0x89,0x56,0x10,0x6c,0xc5,0x73,0x4b,0x9f,0x2e, + 0xc4,0x9b,0xc,0xad,0x74,0x8,0x50,0xa9,0x28,0x22,0x2,0x71,0x84,0x33,0x12,0x39, + 0xc6,0x32,0x89,0x19,0x82,0x4a,0x60,0xdc,0xa2,0xaf,0x74,0x1,0x84,0x90,0xce,0x13, + 0xb1,0x44,0x92,0xc1,0x12,0x23,0xb1,0xe5,0xd7,0x1d,0xd6,0xc6,0x80,0xc3,0x1c,0xde, + 0xe1,0x46,0x0,0xae,0x16,0xe9,0x10,0xb0,0x96,0xd6,0x73,0x30,0x25,0x3e,0x8a,0x8f, + 0x84,0xb4,0x96,0xe8,0x4c,0x95,0x0,0x3e,0xc,0x38,0x6b,0x34,0x74,0x38,0x19,0x83, + 0x44,0x88,0xe1,0x80,0xd6,0xd5,0x57,0x23,0x90,0xc7,0x32,0x40,0x42,0xc,0x68,0x1d, + 0xa8,0x0,0xbc,0xd9,0x2,0xd6,0xa6,0xe4,0x1,0xdf,0x9c,0xc4,0x80,0x8b,0x61,0xb5, + 0xc0,0xd1,0x60,0x0,0x65,0xa4,0x16,0x57,0xc3,0x1a,0xc7,0x2e,0x43,0x88,0xc4,0x54, + 0x5a,0x8c,0x5,0xec,0x63,0x5c,0x3,0x5,0x2f,0x3a,0x1a,0xc2,0x71,0x4d,0x6,0x32, + 0x20,0x68,0x98,0xd4,0x3c,0xe0,0xc3,0xa8,0xea,0x7f,0xc8,0x90,0xa,0x78,0x44,0x40, + 0x88,0xb9,0x58,0x17,0x92,0x26,0x63,0x5f,0x9f,0xc4,0xa8,0x53,0xac,0x5f,0x6b,0xa2, + 0x8,0x88,0x51,0x9d,0x1c,0x40,0x19,0x81,0x19,0x90,0xb6,0x7,0x18,0x46,0x21,0xc3, + 0xc4,0x44,0x4c,0x68,0x40,0x3c,0xb2,0x81,0xc6,0x35,0x74,0xd7,0xf0,0xf1,0x49,0x5c, + 0xcd,0x1,0xed,0x5b,0x63,0x28,0x81,0x98,0xde,0x21,0x4f,0xcd,0x29,0xb,0x18,0x1a, + 0x26,0x5d,0xf,0xf8,0xd0,0x96,0xd8,0x51,0x51,0x42,0x95,0xa8,0xc2,0xe8,0x58,0x54, + 0x55,0xc0,0xe9,0xba,0x2c,0x3d,0xa2,0x4a,0x87,0x21,0xc3,0xc9,0xe1,0x3c,0x88,0xa1, + 0xb0,0xd3,0x67,0x74,0x7d,0x75,0x13,0xd1,0x87,0x74,0x3d,0x60,0x4c,0x2d,0x8c,0xa2, + 0x36,0x3f,0xf8,0x64,0xf9,0xaf,0x4a,0x5a,0x3f,0xe4,0x70,0xd5,0x3,0xde,0x2b,0x55, + 0x90,0x8c,0x46,0x8d,0x42,0x14,0xb6,0x31,0xb7,0x51,0x63,0x34,0x79,0x21,0x1d,0xa4, + 0xa9,0x8b,0x71,0x6d,0xec,0x13,0x31,0xd7,0xea,0x9c,0xe,0x26,0x9c,0xd,0xbc,0x80, + 0xb9,0x10,0x79,0x0,0xaf,0xd9,0xf4,0xaf,0xd3,0xac,0xd1,0x55,0xe8,0x79,0x60,0x7c, + 0x8,0x51,0xb9,0x84,0x84,0xe6,0x8a,0xf7,0x54,0xc6,0x5b,0xd9,0x2b,0xf,0x19,0xd5, + 0x78,0x42,0x47,0xf0,0x9e,0x6e,0x90,0x26,0x81,0x58,0x15,0x73,0x80,0x9,0x20,0x81, + 0x87,0xa,0xc4,0x80,0xf,0x5,0xd1,0x40,0xaa,0x3b,0xc1,0xf9,0x2e,0xc7,0x95,0x84, + 0xca,0x8,0x48,0xc8,0x89,0x21,0x4c,0x63,0x42,0x28,0x49,0x5c,0xab,0x32,0xf1,0x2, + 0x51,0x1b,0x2a,0xc6,0xaf,0xe7,0x69,0x9b,0x9,0x9c,0x5f,0x1f,0x86,0x56,0x72,0x2e, + 0xd9,0x47,0x20,0xd1,0x69,0xc,0x1,0x6b,0x1f,0x22,0xae,0xb9,0x4a,0xd4,0x12,0x20, + 0xa1,0xc4,0xb,0xc9,0x5a,0x2d,0xa3,0x94,0x80,0xf8,0xbc,0xa8,0xae,0xda,0xb5,0x9f, + 0x98,0x18,0xbf,0x80,0xd4,0x82,0x25,0x93,0xe3,0xfe,0x0,0xa4,0x7,0x24,0x88,0x94, + 0x48,0x12,0xff,0x9,0x39,0x51,0xd8,0xc6,0x11,0x88,0x63,0x8f,0x5a,0x2b,0x7a,0xa5, + 0xd9,0xa2,0x88,0xb7,0x21,0xab,0xa7,0xad,0x88,0xc1,0xb3,0x55,0xeb,0x4b,0x5,0x28, + 0x63,0x75,0xe,0xa3,0x15,0xbd,0x5e,0x35,0xa2,0xa,0xd1,0xca,0xa,0xad,0x3e,0xf8, + 0x6c,0xd,0x91,0xa0,0x2e,0x17,0xd0,0x83,0xe2,0x3c,0x7d,0x35,0x79,0x6b,0xae,0x14, + 0x9a,0xd0,0x3c,0x3,0x38,0xaf,0x30,0x9c,0x48,0x9f,0x0,0x13,0x53,0xc1,0xaa,0xe1, + 0xe3,0x9f,0xa,0xb8,0x38,0xa2,0xf2,0xe8,0xf8,0x3c,0xd4,0x6b,0x83,0xf5,0x57,0x8a, + 0x8,0x10,0x26,0x31,0x43,0x9,0xf0,0x21,0x87,0x7e,0xc,0xb8,0xdd,0xfc,0x99,0xd5, + 0xd7,0x7f,0xf,0x25,0x61,0xab,0xca,0x9,0x9,0xb0,0x2f,0xc9,0x19,0x91,0x24,0x7d, + 0x42,0x64,0xb7,0x8,0x38,0x47,0xc4,0x2a,0x13,0xab,0xd6,0xa2,0x76,0x6d,0x1d,0x59, + 0xc0,0xed,0x2e,0x1,0x7f,0x18,0x29,0x1e,0x55,0x6a,0x3d,0x89,0xda,0xd2,0x5b,0x87, + 0x54,0xff,0x5b,0x25,0xfd,0xf6,0x14,0x12,0x48,0xe1,0x97,0x7a,0x5f,0xce,0x32,0x40, + 0xf0,0x18,0x58,0x2f,0x13,0x18,0x2f,0x89,0xfa,0xe6,0xaa,0x88,0xbd,0x4c,0x10,0x3d, + 0x94,0x8f,0x41,0x48,0x9d,0x6b,0x9,0x50,0xe9,0xa0,0xaa,0x74,0x96,0x72,0x87,0x61, + 0xab,0x8a,0x85,0x3b,0x88,0xa,0x50,0x66,0xff,0xbf,0x3c,0x60,0xeb,0x91,0x58,0xfd, + 0x31,0xb0,0x89,0xe2,0xa,0xa9,0xb3,0xb4,0x87,0x7f,0xe,0xeb,0x3d,0x50,0xef,0x1d, + 0xc2,0xfd,0x4b,0xe1,0x7f,0x0,0xd8,0x6e,0xc6,0xdd,0x5d,0xd6,0xb,0x18,0x0,0x0, + 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, +}; + +static const unsigned char qt_resource_name[] = { + // document-encrypt.png + 0x0,0x14, + 0x8,0xbf,0x25,0x67, + 0x0,0x64, + 0x0,0x6f,0x0,0x63,0x0,0x75,0x0,0x6d,0x0,0x65,0x0,0x6e,0x0,0x74,0x0,0x2d,0x0,0x65,0x0,0x6e,0x0,0x63,0x0,0x72,0x0,0x79,0x0,0x70,0x0,0x74,0x0,0x2e, + 0x0,0x70,0x0,0x6e,0x0,0x67, +}; + +static const unsigned char qt_resource_struct[] = { + // : + 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1, + // :/document-encrypt.png + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, + +}; + +QT_BEGIN_NAMESPACE + +extern bool qRegisterResourceData + (int, const unsigned char *, const unsigned char *, const unsigned char *); + +extern bool qUnregisterResourceData + (int, const unsigned char *, const unsigned char *, const unsigned char *); + +QT_END_NAMESPACE + + +int QT_MANGLE_NAMESPACE(qInitResources_pinentry)() +{ + QT_PREPEND_NAMESPACE(qRegisterResourceData) + (0x01, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +Q_CONSTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qInitResources_pinentry)) + +int QT_MANGLE_NAMESPACE(qCleanupResources_pinentry)() +{ + QT_PREPEND_NAMESPACE(qUnregisterResourceData) + (0x01, qt_resource_struct, qt_resource_name, qt_resource_data); + return 1; +} + +Q_DESTRUCTOR_FUNCTION(QT_MANGLE_NAMESPACE(qCleanupResources_pinentry)) |