From a043c14d229a5201fc4c4332dbd541916e9fee16 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 14 Mar 2005 19:19:21 +0000 Subject: [PATCH] * cardglue.c (pin_cb): Disable debug output. * mk-w32-dist: Check for patch files. * w32installer.nsi: Translated a few more strings. Print a warning if permssions are not suitable for the installation. Add Uninstaller entries. --- TODO | 12 +----- doc/ChangeLog | 4 ++ doc/DETAILS | 6 ++- doc/Makefile.am | 2 +- doc/README.W32 | 2 +- g10/ChangeLog | 11 +++++ g10/card-util.c | 2 +- g10/cardglue.c | 2 +- g10/keygen.c | 16 +++++++ g10/status.c | 3 +- g10/status.h | 2 + scripts/ChangeLog | 7 +++ scripts/mk-w32-dist | 20 +++++---- scripts/w32installer.nsi | 92 ++++++++++++++++++++++++++++++++++------ 14 files changed, 141 insertions(+), 40 deletions(-) diff --git a/TODO b/TODO index ce2e831cc..a6aff8e49 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,3 @@ -* BACKUP Filename requires a status message. !!!! - -* Delete a card key as well as a wiping. - - * From: Nicolas Sierro Date: Thu, 17 Jun 2004 12:31:24 +0200 @@ -11,12 +6,8 @@ 20% faster and the crc32 code about 50% faster. Some memory leaks were also fixed according to the ChangeLog. - * Reword the "Not enough entropy" messages. - * Do we need a configure test for putenv? - * Replace "user id not found" in getkey.c by "no valid user ID found"? - * Describe some pitfalls when using EGD. Check that ~/.gnupg/entropy really is the default. What about needed permission? @@ -117,8 +108,7 @@ given with an indication of the surname and the usable characters are also restricted. - * We status lines at least for bad PINs. BAD_PASSPHARSE requires a - keyID though. + * Delete a card key as well as a wiping. Things we won't do diff --git a/doc/ChangeLog b/doc/ChangeLog index c9fc5b034..72362c070 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2005-03-14 Werner Koch + + * gnupg-w32.reg: Removed. + 2005-03-07 Werner Koch * gpg.sgml (comment): Add note to keep the comment short. diff --git a/doc/DETAILS b/doc/DETAILS index 8148a4def..03af065c1 100644 --- a/doc/DETAILS +++ b/doc/DETAILS @@ -473,7 +473,7 @@ more arguments in future versions. SESSION_KEY : The session key used to decrypt the message. This message will - only be emmited when the special option --show-session-key + only be emitted when the special option --show-session-key is used. The format is suitable to be passed to the option --override-session-key @@ -583,6 +583,10 @@ more arguments in future versions. for certain operation and is mostly useful to check whether a PIN change really worked. + BACKUP_KEY_CREATED fingerprint fname + A backup key named FNAME has been created for the key wityh + KEYID. + Format of the "--attribute-fd" output ===================================== diff --git a/doc/Makefile.am b/doc/Makefile.am index f9bc35826..dc421aa5e 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -21,7 +21,7 @@ AUTOMAKE_OPTIONS = no-texinfo.tex EXTRA_DIST = DETAILS gpg.sgml gpg.1 gpgv.sgml gpgv.1 faq.raw FAQ faq.html \ - HACKING OpenPGP README.W32 samplekeys.asc gnupg.7 gnupg-w32.reg \ + HACKING OpenPGP README.W32 samplekeys.asc gnupg.7 \ TRANSLATE gpg.ru.sgml gpg.ru.1 highlights-1.4.txt man_MANS = gpg.1 gpgv.1 gnupg.7 gpg.ru.1 diff --git a/doc/README.W32 b/doc/README.W32 index 18f745d9c..2c40d96d3 100644 --- a/doc/README.W32 +++ b/doc/README.W32 @@ -33,7 +33,7 @@ Store the locale id (like "de") into the Registry under the key HKEY_CURRENT_USER\Software\GNU\GnuPG with the name "Lang". This must match one of the installed languages files in the directory named "gnupg.nls" below the installation directory. Note, that the ".mo" -extension is not part of the lcoale id. +extension is not part of the locale id. Home directory: diff --git a/g10/ChangeLog b/g10/ChangeLog index c8fad2788..1f02e477f 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,14 @@ +2005-03-14 Werner Koch + + * cardglue.c (pin_cb): Disable debug output. + +2005-03-11 Werner Koch + + * keygen.c (gen_card_key_with_backup): Write status line with the + backup filename. + + * status.h, status.h (STATUS_BACKUP_KEY_CREATED): New. + 2005-03-10 David Shaw * keyserver.c (parse_keyserver_options): Accept honor-http-proxy diff --git a/g10/card-util.c b/g10/card-util.c index 5c0f76b93..c63335b48 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -578,7 +578,7 @@ change_url (void) } -/* Fetch the key from the URL given on teh card or try to get it from +/* Fetch the key from the URL given on the card or try to get it from the default keyserver. */ static int fetch_url(void) diff --git a/g10/cardglue.c b/g10/cardglue.c index a700a34d1..9e5a14f8c 100644 --- a/g10/cardglue.c +++ b/g10/cardglue.c @@ -659,7 +659,7 @@ pin_cb (void *opaque, const char *info, char **retstr) const char *ends, *s; *retstr = NULL; - log_debug ("asking for PIN '%s'\n", info); + /* log_debug ("asking for PIN '%s'\n", info); */ /* We use a special prefix to check whether the Admin PIN has been requested. */ diff --git a/g10/keygen.c b/g10/keygen.c index be8a8e512..1f325ceb5 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -3420,9 +3420,25 @@ gen_card_key_with_backup (int algo, int keyno, int is_primary, } else { + byte array[MAX_FINGERPRINT_LEN]; + char *fprbuf, *p; + iobuf_close (fp); iobuf_ioctl (NULL, 2, 0, (char*)fname); log_info (_("NOTE: backup of card key saved to `%s'\n"), fname); + + fingerprint_from_sk (sk, array, &n); + p = fprbuf = xmalloc (MAX_FINGERPRINT_LEN*2 + 1 + 1); + for (i=0; i < n ; i++, p += 2) + sprintf (p, "%02X", array[i]); + *p++ = ' '; + *p = 0; + + write_status_text_and_buffer (STATUS_BACKUP_KEY_CREATED, + fprbuf, + fname, strlen (fname), + 0); + xfree (fprbuf); } free_packet (pkt); m_free (pkt); diff --git a/g10/status.c b/g10/status.c index 342622601..a0c9511d9 100644 --- a/g10/status.c +++ b/g10/status.c @@ -1,6 +1,6 @@ /* status.c * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, - * 2004 Free Software Foundation, Inc. + * 2004, 2005 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -162,6 +162,7 @@ get_status_string ( int no ) case STATUS_SIG_SUBPACKET : s = "SIG_SUBPACKET"; break; case STATUS_SC_OP_SUCCESS : s = "SC_OP_SUCCESS"; break; case STATUS_SC_OP_FAILURE : s = "SC_OP_FAILURE"; break; + case STATUS_BACKUP_KEY_CREATED:s="BACKUP_KEY_CREATED"; break; default: s = "?"; break; } return s; diff --git a/g10/status.h b/g10/status.h index 629c28afb..8be77e4a8 100644 --- a/g10/status.h +++ b/g10/status.h @@ -113,6 +113,8 @@ #define STATUS_SC_OP_FAILURE 79 #define STATUS_SC_OP_SUCCESS 80 +#define STATUS_BACKUP_KEY_CREATED 81 + /*-- status.c --*/ void set_status_fd ( int fd ); diff --git a/scripts/ChangeLog b/scripts/ChangeLog index b8c7433c7..abd8d4156 100644 --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,10 @@ +2005-03-14 Werner Koch + + * mk-w32-dist: Check for patch files. + * w32installer.nsi: Translated a few more strings. Print a + warning if permssions are not suitable for the installation. + Add Uninstaller entries. + 2005-02-16 David Shaw * gnupg.spec.in: Fix problem with storing the gpgkeys helpers in diff --git a/scripts/mk-w32-dist b/scripts/mk-w32-dist index 28b0b70b6..c40787371 100755 --- a/scripts/mk-w32-dist +++ b/scripts/mk-w32-dist @@ -122,15 +122,17 @@ for i in README COPYING NEWS; do cp ${srcdir}/$i $i.txt todos $i.txt done -for i in README.W32 ; do - cp ${srcdir}/doc/$i $i.txt - todos $i.txt -done -for i in gnupg-w32.reg; do - cp ${srcdir}/doc/$i . - todos $i + +cp ${srcdir}/doc/README.W32 README-W32.txt +todos README-W32.txt + +patches_defs= +for i in `find "$topdir/patches" -type f -name '*.diff'`; do + cp $i . + patches_defs="-DWITH_PATCHES" done + # We must distribute the MO files in UTF-8, the conversion is done by # gpg at runtime. To include English at the right position in the list we # need a special case. @@ -217,11 +219,11 @@ if [ -n "$topdir" ]; then echo makensis -v2 -nocd -DVERSION="${version}" \ -DPROD_VERSION="${prod_version}" \ -DGNUPG_SRCDIR="${srcdir}" ${winpt_defs} ${src_defs} \ - ${srcdir}/scripts/w32installer.nsi + ${patches_defs} ${srcdir}/scripts/w32installer.nsi BUILDINFO=$buildinfo makensis -v2 -nocd -DVERSION="${version}" \ -DPROD_VERSION="${prod_version}" \ -DGNUPG_SRCDIR="${srcdir}" ${winpt_defs} ${src_defs} \ - ${srcdir}/scripts/w32installer.nsi + ${patches_defs} ${srcdir}/scripts/w32installer.nsi echo "Installer created" >&2 else zip -9 "gnupg-w32cli-${version}.zip" * diff --git a/scripts/w32installer.nsi b/scripts/w32installer.nsi index d9482fc3b..6d7f97d22 100644 --- a/scripts/w32installer.nsi +++ b/scripts/w32installer.nsi @@ -83,20 +83,15 @@ Var STARTMENU_FOLDER !insertmacro MUI_PAGE_WELCOME -!define MUI_PAGE_HEADER_SUBTEXT \ - "This software is licensed under the terms of the GNU General Public \ - License (GPL) which guarantees your freedom to share and change Free \ - Software." +!define MUI_PAGE_HEADER_SUBTEXT "$(T_GPLHeader)" -!define MUI_LICENSEPAGE_TEXT_BOTTOM \ - "In short: You are allowed to run this software for any purpose. \ - You may distribute it as long as you give the recipients the same \ - rights you have received." +!define MUI_LICENSEPAGE_TEXT_BOTTOM "$(T_GPLShort)" !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)" !insertmacro MUI_PAGE_LICENSE "COPYING.txt" +!define MUI_PAGE_CUSTOMFUNCTION_SHOW PrintNonAdminWarning !insertmacro MUI_PAGE_COMPONENTS Page custom CustomPageOptions @@ -111,10 +106,9 @@ Page custom CustomPageOptions !insertmacro MUI_PAGE_INSTFILES -!define MUI_FINISHPAGE_SHOWREADME "README.W32.txt" +!define MUI_FINISHPAGE_SHOWREADME "README-W32.txt" !define MUI_FINISHPAGE_SHOWREADME_TEXT "$(T_ShowReadme)" -!define MUI_FINISHPAGE_LINK \ - "Visit the GnuPG website for latest news and support" +!define MUI_FINISHPAGE_LINK "$(T_FiniLink)" !define MUI_FINISHPAGE_LINK_LOCATION "http://www.gnupg.org/" !insertmacro MUI_PAGE_FINISH @@ -138,6 +132,8 @@ Page custom CustomPageOptions !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ReserveFile "opt.ini" ReserveFile "COPYING.txt" +ReserveFile "${NSISDIR}/Plugins/UserInfo.dll" + ${StrStr} # Supportable for Install Sections and Functions ${StrTok} # Supportable for Install Sections and Functions @@ -164,7 +160,7 @@ Section "Base" SecBase SetOutPath "$INSTDIR\Doc" File "README.txt" - File "README.W32.txt" + File "README-W32.txt" File "COPYING.txt" Call InstallIconv @@ -230,6 +226,11 @@ Section "Documentation" SecDoc File "NEWS.winpt.txt" !endif ; WITH_WINPT +!ifdef WITH_PATCHES + SetOutPath "$INSTDIR\Src" + File '*.diff' +!endif + SectionEnd ; Section Documentation @@ -260,6 +261,18 @@ Section "-Finish" ;;-------------------------- WriteUninstaller "$INSTDIR\uninst-gnupg.exe" + StrCpy $MYTMP "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG" + WriteRegExpandStr HKLM $MYTMP "UninstallString" '"$INSTDIR\uninst-gnupg.exe"' + WriteRegExpandStr HKLM $MYTMP "InstallLocation" "$INSTDIR" + WriteRegStr HKLM $MYTMP "DisplayName" "GNU Privacy Guard" + WriteRegStr HKLM $MYTMP "DisplayIcon" "$INSTDIR\gpg.exe,0" + WriteRegStr HKLM $MYTMP "DisplayVersion" "${VERSION}" + WriteRegStr HKLM $MYTMP "Publisher" "Free Software Foundation" + WriteRegStr HKLM $MYTMP "URLInfoAbout" "http://www.gnupg.org/" + WriteRegDWORD HKLM $MYTMP "NoModify" "1" + WriteRegDWORD HKLM $MYTMP "NoRepair" "1" + + ;;--------------------- ;; Create Menu entries ;;--------------------- @@ -270,7 +283,7 @@ Section "-Finish" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.lnk" \ "$INSTDIR\Doc\README.txt" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG README.Windows.lnk" \ - "$INSTDIR\Doc\README.W32.txt" + "$INSTDIR\Doc\README-W32.txt" CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\GnuPG NEWS.lnk" \ "$INSTDIR\Doc\NEWS.txt" @@ -353,7 +366,7 @@ Section "Uninstall" Delete "$INSTDIR\gpgkeys_ldap.exe" Delete "$INSTDIR\Doc\README.txt" - Delete "$INSTDIR\Doc\README.W32.txt" + Delete "$INSTDIR\Doc\README-W32.txt" Delete "$INSTDIR\Doc\COPYING.txt" Delete "$INSTDIR\Doc\COPYING.LIB.txt" Delete "$INSTDIR\Doc\README.iconv.txt" @@ -408,6 +421,7 @@ Section "Uninstall" DeleteRegValue HKCU "Software\GNU\GnuPG" "Start Menu Folder" DeleteRegValue HKLM "Software\GNU\GnuPG" "Install Directory" DeleteRegKey /ifempty HKLM "Software\GNU\GnuPG" + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\GnuPG" SectionEnd ; Uninstall @@ -438,6 +452,22 @@ Function un.onInit FunctionEnd +;; Check whether the current user is in the Administrator group or +;; an OS version without the need for an Administrator is in use. +;; Print a warning if this is not the case. +Function PrintNonAdminWarning + ClearErrors + UserInfo::GetName + IfErrors leave + Pop $0 + UserInfo::GetAccountType + Pop $1 + StrCmp $1 "Admin" leave +1 + MessageBox MB_OK "$(T_AdminNeeded)" + + leave: +FunctionEnd + Function CustomPageOptions SectionGetFlags ${SecNLS} $R0 @@ -531,6 +561,40 @@ LangString T_About ${LANG_GERMAN} \ \r\n\r\n\r\n\r\n\r\nDies ist GnuPG version ${VERSION}\r\n\ erstellt am $%BUILDINFO%" +; Startup page +LangString T_GPLHeader ${LANG_ENGLISH} \ + "This software is licensed under the terms of the GNU General Public \ + License (GPL) which guarantees your freedom to share and change Free \ + Software." +LangString T_GPLHeader ${LANG_GERMAN}} \ + "Diese Software ist unter der GNU General Public License \ + (GPL) lizensiert; dies gibt Ihnen die Freiheit, sie \ + zu ändern und weiterzugeben." + +LangString T_GPLShort ${LANG_ENGLISH} \ + "In short: You are allowed to run this software for any purpose. \ + You may distribute it as long as you give the recipients the same \ + rights you have received." +LangString T_GPLShort ${LANG_GERMAN} \ + "In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \ + einzusetzen. Sie können die Software weitergeben, sofern Sie dem \ + Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben." + + +; Finish page +LangString T_FiniLink ${LANG_ENGLISH} \ + "Visit the GnuPG website for latest news and support" +LangString T_FiniLink ${LANG_GERMAN}} \ + "Zur GnuPG Website mit Neuigkeiten und Hilfsangeboten" + +; From Function PrintNonAdminWarning +LangString T_AdminNeeded ${LANG_ENGLISH} \ + "Warning: Administrator permissions required for a successful installation" +LangString T_AdminNeeded ${LANG_GERMAN} \ + "Warnung: Administrator Reche werden für eine erfolgreiche \ + Installation benötigt." + + ; Installation options like language used for GnuPG LangString T_InstallOptions ${LANG_ENGLISH} "Install Options" LangString T_InstallOptions ${LANG_GERMAN} "Installationsoptionen"