[Winpt-commits] r180 - in trunk: . Include Po Src

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Mon Mar 6 15:42:03 CET 2006


Author: twoaday
Date: 2006-03-06 15:41:58 +0100 (Mon, 06 Mar 2006)
New Revision: 180

Added:
   trunk/Src/wptSOCKS.cpp
Modified:
   trunk/AUTHORS
   trunk/COPYING
   trunk/ChangeLog
   trunk/FAQ
   trunk/Include/wptHotkey.h
   trunk/Include/wptKeyserver.h
   trunk/Include/wptRegistry.h
   trunk/NEWS
   trunk/Po/ChangeLog
   trunk/Po/POTFILES.in
   trunk/Po/de.po
   trunk/README
   trunk/Src/ChangeLog
   trunk/Src/Makefile.am
   trunk/Src/WinPT-en.rc
   trunk/Src/WinPT.cpp
   trunk/Src/resource.h
   trunk/Src/wptGPGUtil.cpp
   trunk/Src/wptHotkey.cpp
   trunk/Src/wptKeyEditDlgs.cpp
   trunk/Src/wptKeyserver.cpp
   trunk/Src/wptKeyserverDlg.cpp
   trunk/Src/wptMainProc.cpp
   trunk/Src/wptPreferencesDlg.cpp
   trunk/Src/wptProxySettingsDlg.cpp
   trunk/Src/wptRegistry.cpp
   trunk/Src/wptSigTreeDlg.cpp
   trunk/THANKS
   trunk/TODO
   trunk/TODO-GPGME-PORT.txt
   trunk/configure.ac
Log:
2006-02-27  Timo Schulz  <twoaday at freakmail.de>
 
        * wptSOCKS.cpp (socks_handshake): New.
        * wptMainProc.cpp (winpt_main_proc): A dbl-click forces
        the key manager in teh foreground if possible.
        * wptHotkey.cpp (hotkey_unregister): Unregister all hotkeys.
        * wptRegistry.cpp (get_reg_proxy_prefs,
        set_reg_proxy_prefs): Use directly the proxy context.
        Changed all callers.
        * wptProxySettingsDlg.cpp (init_proxy_protocols): New.
        (keyserver_proxy_dlg_proc): Use directly the proxy context.
        * wptKeyserver.cpp (kserver_connect): Better proxy support.
        (kserver_send_request, kserver_recvkey_request): Likewise.
        * wptKeyserverDlg.cpp (name_from_proto): New.
        (set_proxy): Adjusted for the new code.



Modified: trunk/AUTHORS
===================================================================
--- trunk/AUTHORS	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/AUTHORS	2006-03-06 14:41:58 UTC (rev 180)
@@ -3,9 +3,9 @@
 
 GPGME - Werner Koch <wk at gnupg.org>, g10 Code GmbH <code at g10code.com>
 
-Port from MyGPGME to the official GPGME was done by g10 Code GmbH.
+Port from MyGPGME to the official GPGME was done by g10 Code GmbH,
+also a lot of code for gpg4win integration.
 
-
 Portions of the PTD sources were taken from the GPG project which is
 owned by the Free Software Foundation.
 
@@ -14,7 +14,7 @@
 (wptJPG.cpp, wptJPG.h)
 
 Marco Cunha <marco.cunha at ignocorp.com>
-(wpktKeyserver.cpp#base64_encode, base64_decode)
+(wpktKeyserver.cpp#base64_encode)
 
 Andreas Jobs <Andres.Jobs at ruhr-uni-bochum.de>
 (wptImageList.{cpp,h}, a lot of patches, see ChangeLog)
@@ -35,11 +35,11 @@
 sunlink.c - Matt Gauthier <elleron at yahoo.com>
 
 
+*** This code is currently UNUSED ***
 Cryptdisk implementation
 wptFileDisk.cpp	
 (Bo Brantén, Stefan Scherrer)
 
-** This code is currently NOT in use. **
 wptSecmem.cpp - John J. Kane <jkane89 at softhome.net>
 
 Translators:

Modified: trunk/COPYING
===================================================================
--- trunk/COPYING	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/COPYING	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,340 +1,340 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    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, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/ChangeLog	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,3 +1,7 @@
+2006-03-03  Timo Schulz  <ts at g10code.com>
+
+	* README, FAQ, COPYING: converted to unix text format.
+	
 2006-01-07  Timo Schulz  <ts at g10code.com>
 
 	* Icons: Deleted unused folder.

Modified: trunk/FAQ
===================================================================
--- trunk/FAQ	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/FAQ	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,208 +1,208 @@
-                            The Tiny WinPT FAQ.
-			    (warning: file is obsolete!)	               
-             
-                         
-Version 1.0
-Last modified July 22, 2001
-Maintained by Rich Wielgosz <rich at richwilgoz.com>
--------------------------------------------------           
-
-1.  General
-1.1  What is WinPT?
-
-2.  Information Sources                            
-2.1  Where can I download WinPT?
-2.2  Where can I get more information about WinPT?
-2.3  Does WinPT require anything else to work?
-              
-3.  Usage
-3.1  How do I use WinPT?
-            
-4.  Problem and errors
-4.1  WinPT wouldn't let me register a hotkey. Why not?
-4.2  Why is "Passphrase Caching" greyed out?
-4.3  People can't verify my signatures.  Why?
-4.4  I get a "no data" error when trying to decrypt text. How come?
-4.5  What is "Debug Mode" ?
-4.6  Why isn't "Current Window" mode working properly for me?
-
------------------    
-
-1. General 
-                 
-1.1
-Q:  What is WinPT?    
-              
-A:  WinPT is a "Frontend" which allows access to the Gnu Privacy Guard 
-    (GnuPG) encryption engine. WinPT is a Windows application which resides
-    in the System Tray and "mimics" the look and feel of another popular
-    System Tray application. WinPT contains no crypto routines so it may
-    be exported freely to any country in the world.       
-                 
-    WinPT is in essence, a universal plug-in for all email programs because it
-    allows you to cut and paste from any email application, and encrypt the
-    data while it resides in your clipboard. WinPT also has a built-in file
-    browser for the encryption of files on your harddrive. WinPT will also
-    handle all of your key-management and key-server access needs.
-                 
-
-2. Information Sources
-
-2.1
-Q:  Where can I download WinPT?
-      
-A:  WinPT can be downloaded from the WinPT.org website in the Download section.
-             
-2.2
-Q:  Where can I get more information?
-        
-A:  There is always more info to be had at the WinPT.org website. You can
-    also get more information from the winpt-users mailing list. To subsribe
-    to this list send an email to majordomo at lcsweb.net with the words 
-    "subscribe winpt-users" in the body of the message (no  quotes).
-          
-2.3
-Q:  Does WinPT require anything else to work?
-          
-A:  WinPT requires that you have installed the Gnu Privacy Guard (GnuPG)
-    encryption engine version 1.05 or greater, for Win32. (r)
-          
-3. Usage
-
-3.1
-Q:   How do I use WinPT?
-
-A:  The use of WinPT is VERY straightforward, and it is beyond the scope of
-    this document to detail all of its many features.  For more information
-    consult the included manual and see the WinPT DOC page.
-                 
-4. Problems and Errors
-             
-4.1
-Q:  WinPT tells me "Couldn't register hotkey" - What does it mean and how
-    can I fix it?  
-                 
-A:  This is because another application has already installed those hotkey
-    definitions. It's also possible that in an NT/Win2K environment you need
-    admin privs to redefine  hotkeys. (This we're not entirely  sure of, does
-    anyone know if this is true?). You can redefine your hotkeys to something
-    that is available (or more to your liking) by selecting "preferences" 
-    from the WinPT menu and changing them there. The default Hotkey 
-    definitions are:              
-                                  
-	Encrypt Clipboard:  CTRL+ALT+E
-	Decrypt/verify Clipboard:  CTRL+ALT+D
-	Sign Clipboard:  CTRL+ALT+S
-                       
-	Export to clipboard:  CTRL+ALT+X
-	Import from clipboard:  CTRL+ALT+I
-                       
-	Encrypt current window:  ALT+SHIFT+E
-	Decrypt/verify current window:  ALT+SHIFT+D
-	Sign current window:  ALT+SHIFT+S
-                       
-	Please note that the "Export to clipboard" and "Import from clipboard" 
-	hotkeys can not be redefined.
-                 
-4.2
-Q: Why is passphrase caching greyed out in the preferences menu?  
-                 
-A: It is greyed out because it is not supported yet. Once the GPG 
-   (passphrase caching) Agent is ready for use, or when we find another
-   trustworthy caching program, we'll activate it then.     
-                 
-            
-4.3
-Q:  Why are people having trouble verifying my signatures in the email that
-    I send them?  
-                 
-A:  That is very likely because your email is wrapping the text of your
-    signature in a place it isn't supposed to, therein "breaking" your
-    signature. WinPT solves this problem  with  a "Wordwrap" feature of
-    its own. This breaks the lines  BEFORE signing and as a result won't
-    break your signatures. This feature can be found  under the PREFERENCES
-    option of the WinPT menu. The biggest useable value to put in that field
-    (from what they tell me) is 76.  To disable the feature put in a '0' (zero).
-                 
-                 
-             
-4.4
-Q:  I can't decrypt text (error: No Data), but the clipboard is set with
-    valid GPG data. 
-                     
-A:  Check your line endings and for broken lines. The easiest way to do this
-    is to use the 'Edit Clipboard' option in the WinPT menu and look at the
-    text.  This used to happen to me quite frequently when I was using the
-    mailer that was built into the Opera web browser (Don't misunderstand,
-    we LOVE Opera). All you need to do it edit the Open-PGP message so that
-    its LAYOUT looks like this:   
-                 
------BEGIN PGP MESSAGE----- 
-Version: GnuPG v1.0.6 (MingW32) - WinPT 10.3.0
-Comment: See http://www.gnupg.org/  
-                 
-hQIOA5K/4SdC8KCgEAf/ej46PTbHQ7CA8MvtYyTYtivJ4hQ6oo//V2aHsl6/E/HK
-u81oJzop7QzCvK1CLjzK4hqhlZZYb07s/2n40zBSvy4apGVas6DxfpqoX2SFFlnC
-5wqvNt8BekM3w9JIKsfGj2x5E/xMe0slJUegiiBkUup0BtzcGJB7Yzpts1FSE/QM        
-wFzJLiyTJ4m5XOMLEvnNS9U3PjWXyzlNWG3RNtyCHCLG/ovV3oGR1H+TCVBOmuft 
-NhfSHau4jKSffjShWWB5pMIxE7ZrHtJT838Ch57VR8oamZbszmtQo+gLg83ip8Er
-QrpxiTuFLu/l5+0YUDjZN6nYPSNbbGDDdTYSbjF1VwgAxR1er7hw3FysrS0j7yBB
-ZHiT+O6VZzcXUZMO1UsbZSf5htrS2t6Qf13DAoYahBFJCUWVCRxLprutKRyqy/KZ        
-U2p//gvXfoalDLJZNGwBXXvNodkt3kzzGjT5DxREEYuHPMlrsZ8RABeaEzlTuBDD 
-O6y6Sk0Qc72FJlQO2jP82wCOQTKvxX5QpJmUHVC4er5Hzkd8FNMbMlbGwV9zyvQW
-PUPyT3llHIuv8FLHyBLr60nmJYBAbA1Wy5vYaGyhRS8NwQQbIR5cVBRDs0f5mv8=
-=c5uG
------END PGP MESSAGE-----     
-                 
-                 
-...and not like this (or some other similarly mangled way):      
-                 
-                 
------BEGIN PGP MESSAGE----- 
-Version: GnuPG v1.0.6 (MingW32) - WinPT 10.3.0
-Comment: See http://www.gnupg.org/hQIOA5K/4SdC8KCgEAf/ej46P
-TbHQ7CA8MvtYyTYtivJ4hQ6oo//V2aHsl6/E/HK u81oJzop7QzCvK1CLjzK4hqhlZZYb07s/2n40zBSvy4apGVas6DxfpqoX2SFFlnC
-5wqvNt8BekM3w9JIKsfGj2x5E/xMe0slJUegiiBkUup0BtzcGJB7Yzpts1FSE/QM
-wFzJLiyTJ4m5XOMLEvnNS9U3PjWXyzlNWG3RNtyCHCLG/ovV3oGR1H+TCVBOmuft        
-NhfSHau4jKSffjShWWB5pMIxE7ZrHtJT838Ch57VR8oamZbszmtQo+gLg83ip8Er QrpxiTuFLu/l5+0YUDjZN6nYPSNbbGDDdTYSbjF1VwgAxR1er7hw3FysrS0j7yBB
-ZHiT+O6VZzcXUZMO1UsbZSf5htrS2t6Qf13DAoYahBFJCUWVCRxLprutKRyqy/KZ
-U2p//gvXfoalDLJZNGwBXXvNodkt3kzzGjT5DxREEYuHPMlrsZ8RABeaEzlTuBDD        
-O6y6Sk0Qc72FJlQO2jP82wCOQTKvxX5QpJmUHVC4er5Hzkd8FNMbMlbGwV9zyvQW PUPyT3llHIuv8FLHyBLr60nmJYBAbA1Wy5vYaGyhRS8NwQQbIR5cVBRDs0f5mv8=
-=c5uG
------END PGP MESSAGE-----
-                 
-                 
-It's also important to make sure that there are 5 '-' characters before and
-after the 'Begin PGP Message', and 'End PGP Message' tags. 
-      
-
-4.5
-Q:  What is "Debug Mode"?  
-                 
-A:  Debug Mode is a mode of operation built into WinPT which causes WinPT
-    to output error code to two files on your harddisk. If WinPT crashes,
-    take these debug files, zip them up with a compression utility, and
-    mail them to Timo with a detailed explanation of what happened. One
-    file is in the same directory as your WinPT executable and is called
-    "gpgme.dbg".  The other file is called "winpt.log" and can be found
-    in your C:\WINDOWS\TEMP directory.  If you can't find the "winpt.log"
-    file don't worry, sometimes it isn't generated, but "gpgme.dbg" is
-    always generated.  To enable debug mode in WinPT use the "--enable-debug"   switch on the command line when  invoking    WinPT.  If you've set up WinPT to run from an icon, right-click  on  the WinPT icon and select "properties,"  then select the "shortcut" tab and type "--enable-debug" (without quotes) in the end of the "Target" field.  Be sure there is a space between the last character of what was originally in that field, and what you add.
-
-                                    
-4.6
-Q:  Why isn't "Current Window" mode working properly for me?
-
-A:  Current Window mode works better with the hotkeys, so try using them
-    first.  Currently not all window types are supported, so in some cases
-    it might not work at all (we're working on that). If this mode does not
-    work the first time, merely try it again a second time. If it still does
-    not work then the window you're trying to operate on is an unsupported
-    type, and this will be addressed with a future release.
-
-
-Q:  Why in an earlier example does it say there's a version 10.3.0 of WinPT? 
-                 
-A:  Because I'm pulling your leg.     :-)
-
--------------
+                            The Tiny WinPT FAQ.
+			    (warning: file is obsolete!)	               
+             
+                         
+Version 1.0
+Last modified July 22, 2001
+Maintained by Rich Wielgosz <rich at richwilgoz.com>
+-------------------------------------------------           
+
+1.  General
+1.1  What is WinPT?
+
+2.  Information Sources                            
+2.1  Where can I download WinPT?
+2.2  Where can I get more information about WinPT?
+2.3  Does WinPT require anything else to work?
+              
+3.  Usage
+3.1  How do I use WinPT?
+            
+4.  Problem and errors
+4.1  WinPT wouldn't let me register a hotkey. Why not?
+4.2  Why is "Passphrase Caching" greyed out?
+4.3  People can't verify my signatures.  Why?
+4.4  I get a "no data" error when trying to decrypt text. How come?
+4.5  What is "Debug Mode" ?
+4.6  Why isn't "Current Window" mode working properly for me?
+
+-----------------    
+
+1. General 
+                 
+1.1
+Q:  What is WinPT?    
+              
+A:  WinPT is a "Frontend" which allows access to the Gnu Privacy Guard 
+    (GnuPG) encryption engine. WinPT is a Windows application which resides
+    in the System Tray and "mimics" the look and feel of another popular
+    System Tray application. WinPT contains no crypto routines so it may
+    be exported freely to any country in the world.       
+                 
+    WinPT is in essence, a universal plug-in for all email programs because it
+    allows you to cut and paste from any email application, and encrypt the
+    data while it resides in your clipboard. WinPT also has a built-in file
+    browser for the encryption of files on your harddrive. WinPT will also
+    handle all of your key-management and key-server access needs.
+                 
+
+2. Information Sources
+
+2.1
+Q:  Where can I download WinPT?
+      
+A:  WinPT can be downloaded from the WinPT.org website in the Download section.
+             
+2.2
+Q:  Where can I get more information?
+        
+A:  There is always more info to be had at the WinPT.org website. You can
+    also get more information from the winpt-users mailing list. To subsribe
+    to this list send an email to majordomo at lcsweb.net with the words 
+    "subscribe winpt-users" in the body of the message (no  quotes).
+          
+2.3
+Q:  Does WinPT require anything else to work?
+          
+A:  WinPT requires that you have installed the Gnu Privacy Guard (GnuPG)
+    encryption engine version 1.05 or greater, for Win32. (r)
+          
+3. Usage
+
+3.1
+Q:   How do I use WinPT?
+
+A:  The use of WinPT is VERY straightforward, and it is beyond the scope of
+    this document to detail all of its many features.  For more information
+    consult the included manual and see the WinPT DOC page.
+                 
+4. Problems and Errors
+             
+4.1
+Q:  WinPT tells me "Couldn't register hotkey" - What does it mean and how
+    can I fix it?  
+                 
+A:  This is because another application has already installed those hotkey
+    definitions. It's also possible that in an NT/Win2K environment you need
+    admin privs to redefine  hotkeys. (This we're not entirely  sure of, does
+    anyone know if this is true?). You can redefine your hotkeys to something
+    that is available (or more to your liking) by selecting "preferences" 
+    from the WinPT menu and changing them there. The default Hotkey 
+    definitions are:              
+                                  
+	Encrypt Clipboard:  CTRL+ALT+E
+	Decrypt/verify Clipboard:  CTRL+ALT+D
+	Sign Clipboard:  CTRL+ALT+S
+                       
+	Export to clipboard:  CTRL+ALT+X
+	Import from clipboard:  CTRL+ALT+I
+                       
+	Encrypt current window:  ALT+SHIFT+E
+	Decrypt/verify current window:  ALT+SHIFT+D
+	Sign current window:  ALT+SHIFT+S
+                       
+	Please note that the "Export to clipboard" and "Import from clipboard" 
+	hotkeys can not be redefined.
+                 
+4.2
+Q: Why is passphrase caching greyed out in the preferences menu?  
+                 
+A: It is greyed out because it is not supported yet. Once the GPG 
+   (passphrase caching) Agent is ready for use, or when we find another
+   trustworthy caching program, we'll activate it then.     
+                 
+            
+4.3
+Q:  Why are people having trouble verifying my signatures in the email that
+    I send them?  
+                 
+A:  That is very likely because your email is wrapping the text of your
+    signature in a place it isn't supposed to, therein "breaking" your
+    signature. WinPT solves this problem  with  a "Wordwrap" feature of
+    its own. This breaks the lines  BEFORE signing and as a result won't
+    break your signatures. This feature can be found  under the PREFERENCES
+    option of the WinPT menu. The biggest useable value to put in that field
+    (from what they tell me) is 76.  To disable the feature put in a '0' (zero).
+                 
+                 
+             
+4.4
+Q:  I can't decrypt text (error: No Data), but the clipboard is set with
+    valid GPG data. 
+                     
+A:  Check your line endings and for broken lines. The easiest way to do this
+    is to use the 'Edit Clipboard' option in the WinPT menu and look at the
+    text.  This used to happen to me quite frequently when I was using the
+    mailer that was built into the Opera web browser (Don't misunderstand,
+    we LOVE Opera). All you need to do it edit the Open-PGP message so that
+    its LAYOUT looks like this:   
+                 
+-----BEGIN PGP MESSAGE----- 
+Version: GnuPG v1.0.6 (MingW32) - WinPT 10.3.0
+Comment: See http://www.gnupg.org/  
+                 
+hQIOA5K/4SdC8KCgEAf/ej46PTbHQ7CA8MvtYyTYtivJ4hQ6oo//V2aHsl6/E/HK
+u81oJzop7QzCvK1CLjzK4hqhlZZYb07s/2n40zBSvy4apGVas6DxfpqoX2SFFlnC
+5wqvNt8BekM3w9JIKsfGj2x5E/xMe0slJUegiiBkUup0BtzcGJB7Yzpts1FSE/QM        
+wFzJLiyTJ4m5XOMLEvnNS9U3PjWXyzlNWG3RNtyCHCLG/ovV3oGR1H+TCVBOmuft 
+NhfSHau4jKSffjShWWB5pMIxE7ZrHtJT838Ch57VR8oamZbszmtQo+gLg83ip8Er
+QrpxiTuFLu/l5+0YUDjZN6nYPSNbbGDDdTYSbjF1VwgAxR1er7hw3FysrS0j7yBB
+ZHiT+O6VZzcXUZMO1UsbZSf5htrS2t6Qf13DAoYahBFJCUWVCRxLprutKRyqy/KZ        
+U2p//gvXfoalDLJZNGwBXXvNodkt3kzzGjT5DxREEYuHPMlrsZ8RABeaEzlTuBDD 
+O6y6Sk0Qc72FJlQO2jP82wCOQTKvxX5QpJmUHVC4er5Hzkd8FNMbMlbGwV9zyvQW
+PUPyT3llHIuv8FLHyBLr60nmJYBAbA1Wy5vYaGyhRS8NwQQbIR5cVBRDs0f5mv8=
+=c5uG
+-----END PGP MESSAGE-----     
+                 
+                 
+...and not like this (or some other similarly mangled way):      
+                 
+                 
+-----BEGIN PGP MESSAGE----- 
+Version: GnuPG v1.0.6 (MingW32) - WinPT 10.3.0
+Comment: See http://www.gnupg.org/hQIOA5K/4SdC8KCgEAf/ej46P
+TbHQ7CA8MvtYyTYtivJ4hQ6oo//V2aHsl6/E/HK u81oJzop7QzCvK1CLjzK4hqhlZZYb07s/2n40zBSvy4apGVas6DxfpqoX2SFFlnC
+5wqvNt8BekM3w9JIKsfGj2x5E/xMe0slJUegiiBkUup0BtzcGJB7Yzpts1FSE/QM
+wFzJLiyTJ4m5XOMLEvnNS9U3PjWXyzlNWG3RNtyCHCLG/ovV3oGR1H+TCVBOmuft        
+NhfSHau4jKSffjShWWB5pMIxE7ZrHtJT838Ch57VR8oamZbszmtQo+gLg83ip8Er QrpxiTuFLu/l5+0YUDjZN6nYPSNbbGDDdTYSbjF1VwgAxR1er7hw3FysrS0j7yBB
+ZHiT+O6VZzcXUZMO1UsbZSf5htrS2t6Qf13DAoYahBFJCUWVCRxLprutKRyqy/KZ
+U2p//gvXfoalDLJZNGwBXXvNodkt3kzzGjT5DxREEYuHPMlrsZ8RABeaEzlTuBDD        
+O6y6Sk0Qc72FJlQO2jP82wCOQTKvxX5QpJmUHVC4er5Hzkd8FNMbMlbGwV9zyvQW PUPyT3llHIuv8FLHyBLr60nmJYBAbA1Wy5vYaGyhRS8NwQQbIR5cVBRDs0f5mv8=
+=c5uG
+-----END PGP MESSAGE-----
+                 
+                 
+It's also important to make sure that there are 5 '-' characters before and
+after the 'Begin PGP Message', and 'End PGP Message' tags. 
+      
+
+4.5
+Q:  What is "Debug Mode"?  
+                 
+A:  Debug Mode is a mode of operation built into WinPT which causes WinPT
+    to output error code to two files on your harddisk. If WinPT crashes,
+    take these debug files, zip them up with a compression utility, and
+    mail them to Timo with a detailed explanation of what happened. One
+    file is in the same directory as your WinPT executable and is called
+    "gpgme.dbg".  The other file is called "winpt.log" and can be found
+    in your C:\WINDOWS\TEMP directory.  If you can't find the "winpt.log"
+    file don't worry, sometimes it isn't generated, but "gpgme.dbg" is
+    always generated.  To enable debug mode in WinPT use the "--enable-debug"   switch on the command line when  invoking    WinPT.  If you've set up WinPT to run from an icon, right-click  on  the WinPT icon and select "properties,"  then select the "shortcut" tab and type "--enable-debug" (without quotes) in the end of the "Target" field.  Be sure there is a space between the last character of what was originally in that field, and what you add.
+
+                                    
+4.6
+Q:  Why isn't "Current Window" mode working properly for me?
+
+A:  Current Window mode works better with the hotkeys, so try using them
+    first.  Currently not all window types are supported, so in some cases
+    it might not work at all (we're working on that). If this mode does not
+    work the first time, merely try it again a second time. If it still does
+    not work then the window you're trying to operate on is an unsupported
+    type, and this will be addressed with a future release.
+
+
+Q:  Why in an earlier example does it say there's a version 10.3.0 of WinPT? 
+                 
+A:  Because I'm pulling your leg.     :-)
+
+-------------

Modified: trunk/Include/wptHotkey.h
===================================================================
--- trunk/Include/wptHotkey.h	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Include/wptHotkey.h	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,5 +1,5 @@
 /* wptHotkey.h - Hotkey registration
- *	Copyright (C) 2001-2005 Timo Schulz
+ *	Copyright (C) 2001-2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -35,32 +35,23 @@
 
 /* Hotkey context. */
 struct hotkey_s {
+    const char *name;   /* name in the registry. */
     int enabled;	/* 1 = enabled. */
     int id;		/* valid ID (see above). */
     int alt_ctrl;	/* hotkey used with ALT+ */
     int alt_shift;	/* hotkey used with SHIFT+ */
     int key;		/* actual key code. */
 };
-typedef struct hotkey_s * hotkey_t;
+typedef struct hotkey_s *hotkey_t;
 
-/* List of all predefined hotkeys. */
-static hotkey_s wpt_hotkeys[]  = {
-    {1, WPT_CLIP_ENCRYPT_ID,           1, 0, 0x45}, /* alt+ctrl+e */
-    {1, WPT_CLIP_DECRYPT_VERIFY_ID,    1, 0, 0x44}, /* alt+ctrl+d */
-    {1, WPT_CLIP_SIGN_ID,              1, 0, 0x53}, /* alt+ctrl+s */
-    {1, WPT_CLIP_SIGN_ENCRYPT_ID,      1, 0, 0x42}, /* alt+ctrl+b */
-    {1, WPT_CURRWND_ENCRYPT_ID,        0, 1, 0x45}, /* alt+shift+e */
-    {1, WPT_CURRWND_DECRYPT_VERIFY_ID, 0, 1, 0x44}, /* alt+shift+d */
-    {1, WPT_CURRWND_SIGN_ID,           0, 1, 0x53}, /* alt+shift+s */
-    {1, WPT_CURRWND_SIGN_ENCRYPT_ID,   0, 1, 0x42}, /* alt+shift+b */
-    {1, WPT_AGENT_FORGET_ID,           1, 0, 0x46}, /* alt+ctrl+f */
-    {0}
-};
+extern hotkey_s wpt_hotkeys[];
 
 const char * hotkeys_strerror (void);
 int hotkeys_register (HWND wnd);
 int hotkeys_unregister (HWND wnd);
 int hotkey_register_single (HWND wnd, hotkey_t hk);
 int hotkey_unregister_single (HWND wnd, hotkey_t hk);
+void hotkey_disable (hotkey_t hk);
+void hotkey_enable (hotkey_t hk, const char * key);
 
 #endif /* WPT_HOTKEY_H */

Modified: trunk/Include/wptKeyserver.h
===================================================================
--- trunk/Include/wptKeyserver.h	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Include/wptKeyserver.h	2006-03-06 14:41:58 UTC (rev 180)
@@ -27,11 +27,19 @@
 /* Default keyserver URL. */
 #define DEF_HKP_KEYSERVER "http://subkeys.pgp.net"
 
-enum proxy_t {
-    PROXY_USER = 0,	/* proxy username */
-    PROXY_PASS = 1,	/* proxy password */
+/* Valid proxy protocols. */
+enum proxy_proto_t {
+    PROXY_PROTO_HTTP = 0,
+    PROXY_PROTO_SOCKS4,
+    PROXY_PROTO_SOCKS5
 };
 
+/* Valid proxy authentications. */
+enum proxy_auth_t {
+    PROXY_AUTH_NONE = 0,
+    PROXY_AUTH_PLAIN = 2
+};
+
 /* Valid key server protocols. */
 enum ksproto_t {
     KSPROTO_HTTP   = 0,
@@ -53,18 +61,23 @@
     int	  proto;    /* protocol (0..2). */
 };
 
-struct keyserver_proxy_ctx {
-    int	  port;		/* proxy server port. */
-    char *host;		/* proxy server host. */
-    char *user;		/* proxy user. */
-    char *base64_user;	/* base64 encoded proxy user. */
-    char *pass;		/* proxy password. */
+/* Proxy configuration context. */
+struct keyserver_proxy_s {
+    int   proto;	/* protocol. */
+    int	  port;		/* server port. */
+    char *host;		/* server host. */
+    int   auth_mode;	/* authentication mode. */
+    char *user;		/* user. */
+    char *base64_user;	/* base64 encoded user. */
+    char *pass;		/* password. */
 };
+typedef struct keyserver_proxy_s *keyserver_proxy_t;
 
 #define MAX_KEYSERVERS 32
 extern keyserver server[MAX_KEYSERVERS]; /* runtime initialized */
 extern char *default_keyserver;
 extern WORD default_keyserver_port;
+extern keyserver_proxy_s proxy;
 
 struct keyserver_key {
     int	    bits;	    /* length of the key. */
@@ -74,6 +87,10 @@
 };
 
 
+/*-- wptSOCKS.cpp --*/
+int socks_handshake (keyserver_proxy_t ctx, int conn_fd,
+		     const char *hostname, WORD port);
+
 /*-- Winsock2 support --*/
 int wsock_init (void);
 void wsock_end (void);
@@ -83,11 +100,7 @@
 int kserver_load_conf (const char *conf);
 int kserver_save_conf (const char *conf);
 const char* kserver_check_keyid (const char *keyid);
-const char* kserver_get_proxy (int *r_port);
-const char* kserver_get_proxy_info (int id);
-
-void kserver_change_proxy (keyserver_proxy_ctx *ctx);
-void proxy_release (keyserver_proxy_ctx *ctx);
+void kserver_proxy_release (keyserver_proxy_t ctx);
 const char* kserver_get_hostname (int idx, int type, unsigned short *port);
 void keyserver_set_default (const char *hostname, unsigned short port);
 void set_default_kserver (void);

Modified: trunk/Include/wptRegistry.h
===================================================================
--- trunk/Include/wptRegistry.h	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Include/wptRegistry.h	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,5 +1,5 @@
 /* wptRegistry.h - Win32 Registry headerfile
- *	Copyright (C) 2000-2005 Timo Schulz
+ *	Copyright (C) 2000-2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -21,6 +21,8 @@
 #ifndef WPT_REGISTRY_H
 #define WPT_REGISTRY_H
 
+#include "wptKeyserver.h"
+
 /* Symbolic configuration IDs */
 enum cfg_t {
     CFG_INVALID=0,
@@ -69,22 +71,8 @@
     } gpg;
 };
 
-/* Registry hotkey context. */
-struct reg_hotkey_s {
-    const char *reg_entry;
-    char key[2];	    /* the hotkey as a char ('A'). */
-    int enabled;	    /* 1=enable this hotkey. */
-};
-typedef struct reg_hotkey_s *reg_hotkey_t;
-
-extern reg_hotkey_s reg_hotkeys[];
 extern winpt_reg_prefs_s reg_prefs;
 
-/*-- wptHotkey.cpp --*/
-void hotkeys_modify (void);
-void hotkey_disable (reg_hotkey_t rhk);
-void hotkey_enable (reg_hotkey_t rhk, const char * key);
-
 /*-- wptRegistry.cpp --*/
 void free_reg_prefs (void);
 int regist_inst_gnupg (int create_mokey);
@@ -104,10 +92,8 @@
 int set_reg_entry_mo( const char * value );
 char* get_reg_entry_gpg( const char * key );
 char* get_reg_entry_mo( void );
-void get_reg_proxy_prefs( char ** host, int * port, 
-			  char ** user, char ** pass );
-int set_reg_proxy_prefs( const char * host, int port, 
-			 const char * user, const char * pass );
+void get_reg_proxy_prefs (keyserver_proxy_t prox);
+int set_reg_proxy_prefs (keyserver_proxy_t prox);
 int set_reg_entry_keyserver( const char * name, const char * val );
 char * get_reg_entry_keyserver( const char * name );
 int set_reg_winpt_flag (const char *name, int val);

Modified: trunk/NEWS
===================================================================
--- trunk/NEWS	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/NEWS	2006-03-06 14:41:58 UTC (rev 180)
@@ -757,3 +757,8 @@
 * Fix the problem when the default secret key is deleted
   and the config entries are not resetted.
   
+(0.11.9)
+* Fixed problem with swapped hotkeys.
+* Fixed problem when the user wants to change the passphrase
+  of a newly generated key.
+  
\ No newline at end of file

Modified: trunk/Po/ChangeLog
===================================================================
--- trunk/Po/ChangeLog	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Po/ChangeLog	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,3 +1,11 @@
+2006-03-03  Timo Schulz  <ts at g10code.de>
+
+	* de.po: Fixed grammar and uniform address code.
+	
+2006-02-26  Timo Schulz  <ts at g10code.de>
+
+	* de.po: Updated.
+	
 2006-02-24  Timo Schulz  <ts at g10code.de>
 
 	* jp.po: Updated by Davar.

Modified: trunk/Po/POTFILES.in
===================================================================
--- trunk/Po/POTFILES.in	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Po/POTFILES.in	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,6 +1,4 @@
 # List of source files containing translatable strings.
-# Copyright 2005 Timo Schulz
-#
 
 Src/WinPT.cpp
 Src/wptAboutDlgs.cpp
@@ -8,6 +6,7 @@
 Src/wptCardEditCB.cpp
 Src/wptCardEdit.cpp
 Src/wptCardManager.cpp
+Src/wptCardPCSC.c
 Src/wptClipboard.cpp
 Src/wptClipDecryptDlg.cpp
 Src/wptClipEditDlg.cpp
@@ -17,13 +16,13 @@
 Src/wptClipSignEncDlg.cpp
 Src/wptClipVerifyDlg.cpp
 Src/wptCommonDlg.cpp
-Src/wptCryptdisk.cpp
 Src/wptCurrWnd.cpp
 Src/wptDateDlg.cpp
 Src/wptErrors.cpp
 Src/wptFileCBS.cpp
 Src/wptFileManager.cpp
 Src/wptFileManagerDlg.cpp
+Src/wptFilePrefsDlg.cpp
 Src/wptFileSaveDlg.cpp
 Src/wptFileStatDlg.cpp
 Src/wptFileVerifyDlg.cpp
@@ -31,12 +30,15 @@
 Src/wptGPG.cpp
 Src/wptGPGME.cpp
 Src/wptGPGMEData.cpp
+Src/wptGPGMEWrapper.cpp
 Src/wptGPGOptDlg.cpp
 Src/wptGPGParser.cpp
 Src/wptGPGPrefsDlg.cpp
 Src/wptGPGUtil.cpp
+Src/wptGroupManager.cpp
 Src/wptGroupsDlg.cpp
 Src/wptHotkey.cpp
+Src/wptHTTP.c
 Src/wptImagelist.cpp
 Src/wptImportList.cpp
 Src/wptKeyCache.cpp
@@ -65,6 +67,7 @@
 Src/wptMainProc.cpp
 Src/wptMAPI.cpp
 Src/wptMDSumDlg.cpp
+Src/wptNLS.c
 Src/wptOwnertrustDlg.cpp
 Src/wptPassCache.cpp
 Src/wptPassphraseCB.cpp
@@ -74,7 +77,9 @@
 Src/wptProgressDlg.cpp
 Src/wptProxySettingsDlg.cpp
 Src/wptRegistry.cpp
+Src/wptSecmem.cpp
 Src/wptSigList.cpp
+Src/wptSigTreeDlg.cpp
 Src/wptSymEnc.cpp
 Src/wptTextInputDlg.cpp
 Src/wptTrayPop.cpp
@@ -82,6 +87,3 @@
 Src/wptUtil.cpp
 Src/wptVerifyList.cpp
 Src/wptW32API.cpp
-Src/wptGPGMEWrapper.cpp
-Src/wptSigTreeDlg.cpp
-

Modified: trunk/Po/de.po
===================================================================
--- trunk/Po/de.po	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Po/de.po	2006-03-06 14:41:58 UTC (rev 180)
@@ -10,12 +10,12 @@
 # immer Passwort benutzen.
 #
 # BUG: GetOpenFileName needs \0\0. gettext does not support it.
-# Do _NOT_ translate the (*.xxx) entries!!!
+
 msgid ""
 msgstr ""
-"Project-Id-Version: WinPT 0.11.6\n"
+"Project-Id-Version: WinPT 0.11.9\n"
 "Report-Msgid-Bugs-To: winpt at freakmail.de\n"
-"POT-Creation-Date: 2006-02-24 14:11+0100\n"
+"POT-Creation-Date: 2006-03-03 19:12+0100\n"
 "PO-Revision-Date: 2005-12-28 16:10+0100\n"
 "Last-Translator: Timo Schulz <ts at g10code.de>\n"
 "Language-Team: DE <twoaday at freakmail.de>\n"
@@ -25,12 +25,12 @@
 
 #: Src/WinPT.cpp:184
 msgid "Could not create GPG home directory"
-msgstr "Konnte GPG-Heimatverzeichnis nicht erstellen"
+msgstr "Konnte Heimatverzeichnis von GPG nicht erstellen"
 
 #: Src/WinPT.cpp:185 Src/WinPT.cpp:217 Src/WinPT.cpp:267 Src/WinPT.cpp:271
-#: Src/WinPT.cpp:433 Src/WinPT.cpp:440 Src/WinPT.cpp:482 Src/WinPT.cpp:510
-#: Src/WinPT.cpp:519 Src/WinPT.cpp:523 Src/WinPT.cpp:540 Src/WinPT.cpp:610
-#: Src/WinPT.cpp:623 Src/WinPT.cpp:670 Src/WinPT.cpp:696 Src/WinPT.cpp:714
+#: Src/WinPT.cpp:433 Src/WinPT.cpp:440 Src/WinPT.cpp:480 Src/WinPT.cpp:508
+#: Src/WinPT.cpp:517 Src/WinPT.cpp:521 Src/WinPT.cpp:538 Src/WinPT.cpp:608
+#: Src/WinPT.cpp:621 Src/WinPT.cpp:668 Src/WinPT.cpp:694 Src/WinPT.cpp:712
 #: Src/wptErrors.cpp:141 Src/wptGPG.cpp:916 Src/wptGPG.cpp:927
 #: Src/wptGPG.cpp:936 Src/wptGPG.cpp:946 Src/wptMainProc.cpp:346
 #: Src/wptMainProc.cpp:530
@@ -43,7 +43,7 @@
 
 #: Src/WinPT.cpp:266
 msgid "Could not read GnuPG version."
-msgstr "Konnte GnuPG-Version nicht auslesen."
+msgstr "Konnte Version von GnuPG nicht auslesen."
 
 #: Src/WinPT.cpp:272
 #, c-format
@@ -51,24 +51,24 @@
 "Sorry, you need a newer GPG version.\n"
 "GPG version %d.%d.%d required GPG version "
 msgstr ""
-"Sorry, Sie benötigen eine neuere GPG-Version.\n"
-"Aktuelle GPG-Version %d.%d.%d benötigte benoetigte GPG version "
+"Sorry, Sie benötigen eine neuere Version von GPG.\n"
+"Aktuelle Version von GPG %d.%d.%d benötigte Version von GPG "
 
 #: Src/WinPT.cpp:300
 msgid "Failed to create WinPT directory"
-msgstr "Konnte WinPT Verzeichnis nicht erstellen"
+msgstr "Konnte WinPT-Verzeichnis nicht erstellen"
 
 #: Src/WinPT.cpp:301 Src/WinPT.cpp:319 Src/WinPT.cpp:330
-#: Src/wptKeyManagerDlg.cpp:957 Src/wptKeyserver.cpp:537
+#: Src/wptKeyManagerDlg.cpp:957 Src/wptKeyserver.cpp:549
 #: Src/wptKeyserverDlg.cpp:66 Src/wptKeyserverDlg.cpp:196
 #: Src/wptKeyserverDlg.cpp:204 Src/wptKeyserverDlg.cpp:220
-#: Src/wptKeyserverDlg.cpp:378 Src/wptKeyserverDlg.cpp:384
-#: Src/wptKeyserverDlg.cpp:493 Src/wptKeyserverDlg.cpp:553
-#: Src/wptKeyserverDlg.cpp:558 Src/wptKeyserverDlg.cpp:670
-#: Src/wptKeyserverDlg.cpp:678 Src/wptKeyserverDlg.cpp:685
-#: Src/wptKeyserverDlg.cpp:701 Src/wptKeyserverDlg.cpp:717
-#: Src/wptKeyserverDlg.cpp:722 Src/wptKeyserverDlg.cpp:728
-#: Src/wptKeyserverDlg.cpp:734
+#: Src/wptKeyserverDlg.cpp:388 Src/wptKeyserverDlg.cpp:394
+#: Src/wptKeyserverDlg.cpp:503 Src/wptKeyserverDlg.cpp:563
+#: Src/wptKeyserverDlg.cpp:568 Src/wptKeyserverDlg.cpp:680
+#: Src/wptKeyserverDlg.cpp:688 Src/wptKeyserverDlg.cpp:695
+#: Src/wptKeyserverDlg.cpp:711 Src/wptKeyserverDlg.cpp:727
+#: Src/wptKeyserverDlg.cpp:732 Src/wptKeyserverDlg.cpp:738
+#: Src/wptKeyserverDlg.cpp:744
 msgid "Keyserver"
 msgstr "Schlüsselserver"
 
@@ -84,46 +84,45 @@
 # c:\oss\winpt-gpgme\src\WinPT.cpp:252
 #: Src/WinPT.cpp:439
 msgid "A newer GPGME version is needed; at least "
-msgstr "Eine neuere GPGME version wird benötigt; mindestens "
+msgstr "Eine neuere Version von GPGME wird benötigt; mindestens "
 
-#: Src/WinPT.cpp:483
+#: Src/WinPT.cpp:481
 #, c-format
 msgid ""
 "GPG home directory is not set correctly.\n"
 "Please check the GPG registry settings:\n"
 "%s."
 msgstr ""
-"Das GPG-HOME-Verzeichnis wurde nicht korrekt angegeben.\n"
-"Bitte überprüfen Sie die GPG Registryseinträge:\n"
-"%s"
+"Das Heimatzverzeichnos von GPG wurde nicht korrekt angegeben.\n"
+"Bitte überprüfen Sie die Registryseinträge von GPG:\n"
+"%s."
 
-#: Src/WinPT.cpp:487
+#: Src/WinPT.cpp:485
 msgid "Select GPG Public Keyring"
 msgstr "Öffentlichen GPG-Schlüsselbund auswählen"
 
-# XXX: the \0\0 problem
 # c:\oss\winpt-gpgme\src\WinPT.cpp:313
-#: Src/WinPT.cpp:509
+#: Src/WinPT.cpp:507
 msgid "GPG home directory could not be determited."
-msgstr "GPG-Home-Dir konnte nicht bestimmt werden."
+msgstr "Heimatverzeichnos von GPG konnte nicht bestimmt werden."
 
-#: Src/WinPT.cpp:517
+#: Src/WinPT.cpp:515
 msgid ""
 "Could not find the GPG binary (gpg.exe).\n"
 "Do you want to start the GPG preferences to correct  this problem?"
 msgstr ""
-"Kann die GPG.EXE nicht lokalisieren. Möchten Sie die GPG Einstellungen "
+"Kann die GPG.EXE nicht lokalisieren. Möchten Sie die GPG-Einstellungen "
 "öffnen um das Problem zu beheben?"
 
 # c:\oss\winpt-gpgme\src\WinPT.cpp:339
-#: Src/WinPT.cpp:532
+#: Src/WinPT.cpp:530
 msgid ""
 "Could not access and/or find the public and secret keyring.\n"
 "If this is an accident, quit the program and fix it.\n"
 "\n"
 "Continue if you want that WinPT offers you more choices.\n"
 msgstr ""
-"Konnte public und secret Keyring nicht finden.\n"
+"Konnte öffentlichen und geheimen Schlüsselbund nicht finden.\n"
 "Wenn das ein Versehen war, bitte das Programm beenden und den Fehler "
 "beheben.\n"
 "Fortfahren damit WinPT mehr Möglichkeiten anbietet.\n"
@@ -131,28 +130,28 @@
 # c:\oss\winpt-gpgme\src\WinPT.cpp:376
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:426
 # c:\oss\winpt-gpgme\src\wptFileManagerDlg.cpp:711
-#: Src/WinPT.cpp:565 Src/wptFileManagerDlg.cpp:493
+#: Src/WinPT.cpp:563 Src/wptFileManagerDlg.cpp:493
 #: Src/wptFileManagerDlg.cpp:808
 msgid "Wipe Free Space"
 msgstr "Freien Speicher Löschen"
 
-#: Src/WinPT.cpp:609
+#: Src/WinPT.cpp:607
 msgid "Could not register window class"
-msgstr "Konnte keine Fensterklasse registrieren"
+msgstr "Konnte Fensterklasse nicht registrieren"
 
-#: Src/WinPT.cpp:623
+#: Src/WinPT.cpp:621
 msgid "Could not create window"
 msgstr "Konnte Fenster nicht erstellen"
 
-#: Src/WinPT.cpp:694
+#: Src/WinPT.cpp:692
 msgid ""
 "The keycache was not initialized or is empty.\n"
 "Please check your GPG config (keyrings, pathes...)"
 msgstr ""
 "Der Schlüsselspeicher wurde nicht initialisiert oder ist leer.\n"
-"Bitte checken Sie die GPG Konfiguration (Schlüsselbunde, Pfade)"
+"Bitte überprüfen Sie die Konfiguration von GPG (Schlüsselbunde, Pfade)"
 
-#: Src/WinPT.cpp:697
+#: Src/WinPT.cpp:695
 msgid ""
 "It seems that GPG is not set properly.\n"
 "Do you want to start the GPG preferences dialog?"
@@ -160,7 +159,7 @@
 "GPG ist nicht richtig konfiguriert.\n"
 "Den GPG-Einstellungsdialog starten?"
 
-#: Src/WinPT.cpp:715
+#: Src/WinPT.cpp:713
 #, c-format
 msgid ""
 "Default key (from the GPG config file) could not be found.\n"
@@ -172,7 +171,7 @@
 "Bitte überprüfen Sie die gpg.conf oder setzen Sie einen neuen "
 "Standardschlüssel um das Problem zu beheben:\n"
 "\n"
-"%s: Öffentlicher Schlüssel nicht gefunden."
+"%s: öffentlicher Schlüssel nicht gefunden."
 
 #: Src/wptAboutDlgs.cpp:53 Src/wptAboutDlgs.cpp:136
 msgid "About the GNU Privacy Guard"
@@ -183,7 +182,7 @@
 msgstr "Über GnuPG"
 
 #: Src/wptAboutDlgs.cpp:94 Src/wptKeyManagerDlg.cpp:1756
-#: Src/wptMainProc.cpp:579
+#: Src/wptMainProc.cpp:581
 msgid "About WinPT"
 msgstr "Über WinPT"
 
@@ -229,10 +228,10 @@
 # c:\oss\winpt-gpgme\src\wptAboutDlgs.cpp:97
 #: Src/wptAboutDlgs.cpp:112
 msgid "&About GPG..."
-msgstr "Über &GPG"
+msgstr "Über &GPG..."
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:700
-#: Src/wptAboutDlgs.cpp:113 Src/wptKeyEditDlgs.cpp:1982
+#: Src/wptAboutDlgs.cpp:113 Src/wptKeyEditDlgs.cpp:1987
 #: Src/wptKeyManagerDlg.cpp:963
 msgid "&Help"
 msgstr "&Hilfe"
@@ -247,7 +246,7 @@
 
 #: Src/wptCardDlg.cpp:227
 msgid "No OpenPGP smart card detected."
-msgstr "Keine OpenPGP Smartcard erkannt."
+msgstr "Keine OpenPGP-Smartcard erkannt."
 
 #: Src/wptCardDlg.cpp:346
 msgid "No PINs found."
@@ -267,7 +266,7 @@
 
 #: Src/wptCardDlg.cpp:359
 msgid "Only plain ASCII is currently allowed."
-msgstr "Aktuell ist nur Plain-Text erlaubt."
+msgstr "Aktuell ist nur 7bit-ASCII-Text erlaubt."
 
 #: Src/wptCardDlg.cpp:364
 msgid "Only alphabetic characters are allowed."
@@ -284,7 +283,7 @@
 
 #: Src/wptCardDlg.cpp:397
 msgid "Card attribute changed."
-msgstr "Karteneinstellungen geändert."
+msgstr "Karteneinstellung geändert."
 
 #: Src/wptCardDlg.cpp:437
 msgid "Please enter the 'Admin PIN'"
@@ -344,7 +343,7 @@
 
 #: Src/wptCardDlg.cpp:606
 msgid "Overwrite old keys on the card"
-msgstr "Vorhandene Schlüssel auf der Karte übeerschreiben?"
+msgstr "Alte Schlüssel auf der Karte übeerschreiben?"
 
 #: Src/wptCardDlg.cpp:607
 msgid "Make off-card backup of encryption key"
@@ -379,9 +378,9 @@
 msgid "Please use plain ASCII charset for the fields."
 msgstr "Bitte nur den 7-bit ASCII Zeichensatz verwenden."
 
-#: Src/wptCardDlg.cpp:683 Src/wptKeyEditDlgs.cpp:1355
+#: Src/wptCardDlg.cpp:683 Src/wptKeyEditDlgs.cpp:1360
 msgid "The date you have chosen lies in the past."
-msgstr "Das gewählte Datum ist in der Vergangenheit."
+msgstr "Das gewählte Datum liegt in der Vergangenheit."
 
 # c:\oss\winpt-gpgme\src\wptCardDlg.cpp:696
 #: Src/wptCardDlg.cpp:709
@@ -419,7 +418,7 @@
 
 #: Src/wptCardDlg.cpp:819 Src/wptPassphraseDlg.cpp:168
 msgid "Passphrases do not match. Please try again."
-msgstr "Passwörter nicht identisch. Versuchen Sie es nochmal."
+msgstr "Passwörter nicht identisch. Versuchen Sie es erneut."
 
 #: Src/wptCardDlg.cpp:837
 msgid "PIN successfully changed."
@@ -432,14 +431,14 @@
 
 #: Src/wptCardEdit.cpp:322
 msgid "GPG Card Status"
-msgstr "GPG Karten-Status"
+msgstr "GPG Kartenstatus"
 
 #: Src/wptCardManager.cpp:54
 msgid ""
 "Please insert the OpenPGP smart card\n"
 "Press OK to continue or Cancel"
 msgstr ""
-"Bitte die OpenPGP SmartCard einlegen\n"
+"Bitte die OpenPGP-SmartCard einlegen\n"
 "OK zum Fortfahren oder Abbrechen"
 
 #: Src/wptClipDecryptDlg.cpp:54 Src/wptClipDecryptDlg.cpp:57
@@ -483,10 +482,14 @@
 "It is likely, the data was corrupted during the transport\n"
 "but it might be also possible that this is part of an attack."
 msgstr ""
+"WARNUNG: verschlüsselete Nachricht wurde manipuliert!\n"
+"Vertrauen Sie *nicht* dem Text oder Daten die aus dieser Datei stammen!\n"
+"Es ist möglich, dass die Daten beschädigt worden aber es ist ebenfalls "
+"möglich das dies ein Teil eines Attacke ist."
 
 #: Src/wptClipDecryptDlg.cpp:160
 msgid "*** IMPORTANT ***"
-msgstr ""
+msgstr "*** WICHTIG ***"
 
 #: Src/wptClipDecryptDlg.cpp:163 Src/wptClipEncryptDlg.cpp:206
 #: Src/wptClipSignDlg.cpp:122 Src/wptClipSignDlg.cpp:262
@@ -510,11 +513,12 @@
 
 #: Src/wptClipDecryptDlg.cpp:190
 msgid "Signature Status: Created with an undefined trusted key"
-msgstr "Signatur Status: Erstellt mit einem undefinierten Schlüssel"
+msgstr ""
+"Signatur Status: Erstellt mit einem Schlüssel ohne definiertes Vertrauen"
 
 #: Src/wptClipDecryptDlg.cpp:197
 msgid "WinPT Verify"
-msgstr "WinPT Überprüfung"
+msgstr "WinPT Verifikation"
 
 #: Src/wptClipDecryptDlg.cpp:198
 #, c-format
@@ -564,7 +568,7 @@
 "Vorhandene Datei überschreiben?"
 
 #: Src/wptClipEditDlg.cpp:194 Src/wptMainProc.cpp:169 Src/wptMainProc.cpp:235
-#: Src/wptMainProc.cpp:573
+#: Src/wptMainProc.cpp:575
 msgid "Clipboard Editor"
 msgstr "Zwischenablagen-Editor"
 
@@ -590,8 +594,8 @@
 msgid "Add quotes"
 msgstr "'>' hinzufügen"
 
-#: Src/wptClipEditDlg.cpp:200 Src/wptKeyEditDlgs.cpp:1981
-#: Src/wptKeyserverDlg.cpp:610 Src/wptMDSumDlg.cpp:104
+#: Src/wptClipEditDlg.cpp:200 Src/wptKeyEditDlgs.cpp:1986
+#: Src/wptKeyserverDlg.cpp:620 Src/wptMDSumDlg.cpp:104
 #: Src/wptOwnertrustDlg.cpp:103
 msgid "&Close"
 msgstr "&Schliessen"
@@ -599,7 +603,7 @@
 # c:\oss\winpt-gpgme\src\wptClipEncryptDlg.cpp:108
 #: Src/wptClipEncryptDlg.cpp:112
 msgid "Recipients unsuable for encryption:\n"
-msgstr "Empfänger nicht geeignet für Verschlüsselung\n"
+msgstr "Empfänger nicht geeignet für Verschlüsselung:\n"
 
 #: Src/wptClipEncryptDlg.cpp:120 Src/wptClipEncryptDlg.cpp:140
 #: Src/wptClipEncryptDlg.cpp:192 Src/wptClipEncryptDlg.cpp:199
@@ -620,7 +624,7 @@
 #: Src/wptKeyEditDlgs.cpp:439 Src/wptKeyEditDlgs.cpp:516
 #: Src/wptKeyEditDlgs.cpp:650 Src/wptKeyEditOwnertrustDlg.cpp:67
 #: Src/wptKeygenDlg.cpp:383 Src/wptKeygenDlg.cpp:546
-#: Src/wptKeyRevokeDlg.cpp:101 Src/wptKeyserverDlg.cpp:542
+#: Src/wptKeyRevokeDlg.cpp:101 Src/wptKeyserverDlg.cpp:552
 #: Src/wptKeyserverSearchDlg.cpp:68 Src/wptKeysignDlg.cpp:269
 #: Src/wptPassphraseCB.cpp:83 Src/wptPassphraseDlg.cpp:68 Src/wptPINDlg.cpp:55
 #: Src/wptPreferencesDlg.cpp:132 Src/wptTextInputDlg.cpp:84
@@ -639,7 +643,7 @@
 
 #: Src/wptClipImportDlg.cpp:53 Src/wptKeyImportStatusDlg.cpp:77
 msgid "Key Import Statistics"
-msgstr "Schlüsselimport-Statistiken"
+msgstr "Statistiken für Schlüsselimport"
 
 #: Src/wptClipSignDlg.cpp:104 Src/wptClipSignDlg.cpp:219
 #: Src/wptClipSignEncDlg.cpp:176
@@ -663,7 +667,7 @@
 "Use the GPG default key '%s'?"
 msgstr ""
 "Kein Schlüssel ausgewählt.\n"
-"GPG-Standard-Schlüssel '%s' benutzen?"
+"GPG-Standardschlüssel '%s' benutzen?"
 
 #: Src/wptClipSignEncDlg.cpp:111 Src/wptClipSignEncDlg.cpp:158
 #: Src/wptClipSignEncDlg.cpp:185 Src/wptClipSignEncDlg.cpp:194
@@ -722,7 +726,7 @@
 
 #: Src/wptClipVerifyDlg.cpp:239
 msgid "The signature is expired!"
-msgstr "Signatur ist abgelaufen!"
+msgstr "Die Signatur ist abgelaufen!"
 
 #: Src/wptClipVerifyDlg.cpp:266 Src/wptFileSaveDlg.cpp:57
 #: Src/wptFileSaveDlg.cpp:84 Src/wptFileSaveDlg.cpp:89
@@ -745,30 +749,30 @@
 
 #: Src/wptCommonDlg.cpp:124 Src/wptKeyEditDlgs.cpp:767
 #: Src/wptKeyEditDlgs.cpp:826 Src/wptKeyEditDlgs.cpp:865
-#: Src/wptKeyEditDlgs.cpp:880 Src/wptKeyEditDlgs.cpp:930
-#: Src/wptKeyEditDlgs.cpp:970 Src/wptKeyEditDlgs.cpp:977
-#: Src/wptKeyEditDlgs.cpp:995 Src/wptKeyEditDlgs.cpp:1044
-#: Src/wptKeyEditDlgs.cpp:1051 Src/wptKeyEditDlgs.cpp:1142
-#: Src/wptKeyEditDlgs.cpp:1148 Src/wptKeyEditDlgs.cpp:1277
-#: Src/wptKeyEditDlgs.cpp:1281 Src/wptKeyEditDlgs.cpp:1285
-#: Src/wptKeyEditDlgs.cpp:1290 Src/wptKeyEditDlgs.cpp:1327
-#: Src/wptKeyEditDlgs.cpp:1331 Src/wptKeyEditDlgs.cpp:1341
-#: Src/wptKeyEditDlgs.cpp:1356 Src/wptKeyEditDlgs.cpp:1360
-#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1407
-#: Src/wptKeyEditDlgs.cpp:1414 Src/wptKeyEditDlgs.cpp:1420
-#: Src/wptKeyEditDlgs.cpp:1425 Src/wptKeyEditDlgs.cpp:1470
-#: Src/wptKeyEditDlgs.cpp:1475 Src/wptKeyEditDlgs.cpp:1482
-#: Src/wptKeyEditDlgs.cpp:1489 Src/wptKeyEditDlgs.cpp:1492
-#: Src/wptKeyEditDlgs.cpp:1532 Src/wptKeyEditDlgs.cpp:1540
-#: Src/wptKeyEditDlgs.cpp:1557 Src/wptKeyEditDlgs.cpp:1577
-#: Src/wptKeyEditDlgs.cpp:1585 Src/wptKeyEditDlgs.cpp:1686
-#: Src/wptKeyEditDlgs.cpp:1719 Src/wptKeyEditDlgs.cpp:1746
-#: Src/wptKeyEditDlgs.cpp:1750 Src/wptKeyEditDlgs.cpp:1759
-#: Src/wptKeyEditDlgs.cpp:1879 Src/wptKeyEditDlgs.cpp:1884
-#: Src/wptKeyEditDlgs.cpp:1893 Src/wptKeyEditDlgs.cpp:1907
-#: Src/wptKeyEditDlgs.cpp:1911 Src/wptKeyEditDlgs.cpp:1962
-#: Src/wptKeyEditDlgs.cpp:1972 Src/wptKeyEditDlgs.cpp:1983
-#: Src/wptKeyEditDlgs.cpp:2012 Src/wptKeyEditDlgs.cpp:2017
+#: Src/wptKeyEditDlgs.cpp:880 Src/wptKeyEditDlgs.cpp:931
+#: Src/wptKeyEditDlgs.cpp:975 Src/wptKeyEditDlgs.cpp:982
+#: Src/wptKeyEditDlgs.cpp:1000 Src/wptKeyEditDlgs.cpp:1049
+#: Src/wptKeyEditDlgs.cpp:1056 Src/wptKeyEditDlgs.cpp:1147
+#: Src/wptKeyEditDlgs.cpp:1153 Src/wptKeyEditDlgs.cpp:1282
+#: Src/wptKeyEditDlgs.cpp:1286 Src/wptKeyEditDlgs.cpp:1290
+#: Src/wptKeyEditDlgs.cpp:1295 Src/wptKeyEditDlgs.cpp:1332
+#: Src/wptKeyEditDlgs.cpp:1336 Src/wptKeyEditDlgs.cpp:1346
+#: Src/wptKeyEditDlgs.cpp:1361 Src/wptKeyEditDlgs.cpp:1365
+#: Src/wptKeyEditDlgs.cpp:1407 Src/wptKeyEditDlgs.cpp:1412
+#: Src/wptKeyEditDlgs.cpp:1419 Src/wptKeyEditDlgs.cpp:1425
+#: Src/wptKeyEditDlgs.cpp:1430 Src/wptKeyEditDlgs.cpp:1475
+#: Src/wptKeyEditDlgs.cpp:1480 Src/wptKeyEditDlgs.cpp:1487
+#: Src/wptKeyEditDlgs.cpp:1494 Src/wptKeyEditDlgs.cpp:1497
+#: Src/wptKeyEditDlgs.cpp:1537 Src/wptKeyEditDlgs.cpp:1545
+#: Src/wptKeyEditDlgs.cpp:1562 Src/wptKeyEditDlgs.cpp:1582
+#: Src/wptKeyEditDlgs.cpp:1590 Src/wptKeyEditDlgs.cpp:1691
+#: Src/wptKeyEditDlgs.cpp:1724 Src/wptKeyEditDlgs.cpp:1751
+#: Src/wptKeyEditDlgs.cpp:1755 Src/wptKeyEditDlgs.cpp:1764
+#: Src/wptKeyEditDlgs.cpp:1884 Src/wptKeyEditDlgs.cpp:1889
+#: Src/wptKeyEditDlgs.cpp:1898 Src/wptKeyEditDlgs.cpp:1912
+#: Src/wptKeyEditDlgs.cpp:1916 Src/wptKeyEditDlgs.cpp:1967
+#: Src/wptKeyEditDlgs.cpp:1977 Src/wptKeyEditDlgs.cpp:1988
+#: Src/wptKeyEditDlgs.cpp:2017 Src/wptKeyEditDlgs.cpp:2022
 #: Src/wptKeyManagerDlg.cpp:991 Src/wptKeyManagerDlg.cpp:1792
 msgid "Key Edit"
 msgstr "Schlüssel bearbeiten"
@@ -780,14 +784,14 @@
 
 #: Src/wptCommonDlg.cpp:211
 msgid "Yes"
-msgstr "&Ja"
+msgstr "Ja"
 
 #: Src/wptCommonDlg.cpp:212
 msgid "No"
-msgstr "&Nein"
+msgstr "Nein"
 
 #: Src/wptCommonDlg.cpp:215 Src/wptKeyEditDlgs.cpp:237
-#: Src/wptKeyEditDlgs.cpp:1108
+#: Src/wptKeyEditDlgs.cpp:1113
 msgid "OK"
 msgstr "OK"
 
@@ -795,97 +799,6 @@
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: Src/wptCryptdisk.cpp:139
-msgid "Could not execute Cryptdisk Server."
-msgstr "Konnte Cryptdisk Server nicht starten."
-
-#: Src/wptCryptdisk.cpp:140 Src/wptCryptdisk.cpp:418 Src/wptCryptdisk.cpp:520
-#: Src/wptCryptdisk.cpp:546 Src/wptCryptdisk.cpp:552 Src/wptCryptdisk.cpp:561
-#: Src/wptCryptdisk.cpp:574 Src/wptCryptdisk.cpp:668
-msgid "Cryptdisk Error"
-msgstr "Cryptdisk Fehler"
-
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:413
-#: Src/wptCryptdisk.cpp:416
-msgid ""
-"The Cryptdisk service seems to be available but it is not started yet.\n"
-"Please start the service and try again."
-msgstr ""
-"Der Cryptdisk Service scheint verfügbar, aber nicht gestartet zu sein.\n"
-"Bitte starten Sie den Service und versuchen es erneut."
-
-#: Src/wptCryptdisk.cpp:453
-msgid "Please enter a name for the image file."
-msgstr "Bitte Dateinamen der Bilddatei eingeben."
-
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:451
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:466
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:472
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:478
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:647
-#: Src/wptCryptdisk.cpp:454 Src/wptCryptdisk.cpp:469 Src/wptCryptdisk.cpp:475
-#: Src/wptCryptdisk.cpp:481 Src/wptCryptdisk.cpp:650
-msgid "Cryptdisk"
-msgstr "Cryptdisk"
-
-#: Src/wptCryptdisk.cpp:458
-msgid ""
-"This volume file already exists.\n"
-"Do you want to overwrite it?"
-msgstr ""
-"Die Volumen-Datei existiert bereits.\n"
-"Überschreiben?"
-
-#: Src/wptCryptdisk.cpp:460
-msgid "Cryptdisk Warning"
-msgstr "Cryptdisk Warnung"
-
-#: Src/wptCryptdisk.cpp:468
-msgid "Please enter the size for the volume"
-msgstr "Bitte Größe des Volumen angeben"
-
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:471
-#: Src/wptCryptdisk.cpp:474
-msgid "There is not enough free disk space to store the volume."
-msgstr "Es ist nicht genügend freier Speicher vorhanden für das Volumen."
-
-#: Src/wptCryptdisk.cpp:480
-msgid "Please enter a passphrase for the volume."
-msgstr "Bitte ein Passwort für das Volumen  eingeben."
-
-#: Src/wptCryptdisk.cpp:519
-msgid "Cannot determine the number of drives."
-msgstr "Die Anzahl der Laufwerke konnte nicht festgestellt werden."
-
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:533
-#: Src/wptCryptdisk.cpp:536
-msgid "Select Crypdisk Volume"
-msgstr "Cryptdisk Volumen auswählen"
-
-#: Src/wptCryptdisk.cpp:545
-msgid "Please enter the name of the image file."
-msgstr "Bitte den Namen der Bilddatei eingeben."
-
-#: Src/wptCryptdisk.cpp:551
-msgid "Please enter a password."
-msgstr "Bitte Passwort eingeben."
-
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:557
-#: Src/wptCryptdisk.cpp:560
-msgid "Image file does not exist or could not be accessed."
-msgstr ""
-"Bilddatei existiert nicht oder es kann nicht darauf zugegriffen werden."
-
-# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:596
-#: Src/wptCryptdisk.cpp:599
-#, c-format
-msgid "Drive %s (ID %d); Size %d MB, Readonly=%s"
-msgstr "Laufwerk %s (ID %d); Größe %d MB, Nur-Lesen=%s"
-
-#: Src/wptCryptdisk.cpp:650
-msgid "Please select one drive to umount."
-msgstr "Bitte wählen Sie ein Laufwerk zum Unmounten aus."
-
 #: Src/wptErrors.cpp:47
 #, c-format
 msgid "Could not locate GPG.exe in %s."
@@ -897,8 +810,8 @@
 "Could not find keyring entries into the options file in %s or the file does "
 "NOT exist."
 msgstr ""
-"Keine Schlüsselbund-Eintragungen in der Optionendatei in %s gefunden oder "
-"Datei existiert nicht."
+"Keine Eintragungen für Schlüsselbünde in der Optionendatei in %s gefunden "
+"oder Datei existiert nicht."
 
 #: Src/wptErrors.cpp:78
 msgid "General error occured"
@@ -962,11 +875,11 @@
 
 #: Src/wptErrors.cpp:93
 msgid "General Clipboard error"
-msgstr "Allgemeiner Zwischenablagen-Fehler"
+msgstr "Allgemeiner Fehler in Zwischenablage"
 
 #: Src/wptErrors.cpp:94
 msgid "Registry error: "
-msgstr "Windowsregistrierung Fehler: "
+msgstr "Windowsregistrierungs Fehler: "
 
 #: Src/wptErrors.cpp:97
 msgid "Could not startup Winsock 2 interface"
@@ -1083,12 +996,12 @@
 "\"%s\" has read-only attribute.\n"
 "Set attribute to normal?"
 msgstr ""
-"\"%s\" hat Attribut: Nur-Lesen.\n"
+"\"%s\" hat Nur-Lesen Attribut.\n"
 "Auf Standard setzen?"
 
 #: Src/wptFileManager.cpp:135
 msgid "Could not reset file attribute to normal."
-msgstr "Konnte Datei-Attribut nicht auf normal zurücksetzen"
+msgstr "Konnte Dateiattribut nicht auf normal zurücksetzen"
 
 # c:\oss\winpt-gpgme\src\wptFileManager.cpp:147
 #: Src/wptFileManager.cpp:171
@@ -1104,12 +1017,12 @@
 "\n"
 "Möchten Sie die Kompression ausschalten?"
 
-#: Src/wptFileManager.cpp:383 Src/wptKeyEditDlgs.cpp:1031
+#: Src/wptFileManager.cpp:383 Src/wptKeyEditDlgs.cpp:1036
 #: Src/wptVerifyList.cpp:98 Src/wptVerifyList.cpp:106
 msgid "Status"
 msgstr "Status"
 
-#: Src/wptFileManager.cpp:384 Src/wptKeyEditDlgs.cpp:1134
+#: Src/wptFileManager.cpp:384 Src/wptKeyEditDlgs.cpp:1139
 #: Src/wptKeyRevokersDlg.cpp:57 Src/wptMDSumDlg.cpp:73
 #: Src/wptVerifyList.cpp:97
 msgid "Name"
@@ -1254,7 +1167,7 @@
 "Cannot import these key(s)!"
 msgstr ""
 "Schlüssel ohne Eigensignatur erkannt!\n"
-"(Dieser Schlüssel ist für Verschlüsselung etc. nicht verwendbar)\n"
+"(Dieser Schlüssel ist für Verschlüsselung etc. NICHT verwendbar)\n"
 "\n"
 "Kann diese(n) Schlüssel nicht importieren!"
 
@@ -1273,8 +1186,8 @@
 msgid "Choose Name for Key File"
 msgstr "Den Namen der Schlüsseldatei wählen"
 
-#: Src/wptFileManager.cpp:1721 Src/wptKeyEditDlgs.cpp:1010
-#: Src/wptKeyEditDlgs.cpp:1307 Src/wptKeyEditDlgs.cpp:1381
+#: Src/wptFileManager.cpp:1721 Src/wptKeyEditDlgs.cpp:1015
+#: Src/wptKeyEditDlgs.cpp:1312 Src/wptKeyEditDlgs.cpp:1386
 #: Src/wptKeyserverDlg.cpp:106
 msgid "GnuPG status"
 msgstr "GnuPG Status"
@@ -1282,7 +1195,7 @@
 #: Src/wptFileManager.cpp:1721
 #, c-format
 msgid "Finished (Output: %s)"
-msgstr "Fertig (Datei: %s)"
+msgstr "Fertig (Ausgabe: %s)"
 
 #: Src/wptFileManager.cpp:1768
 #, c-format
@@ -1335,7 +1248,7 @@
 
 #: Src/wptFileManagerDlg.cpp:145
 msgid "Please select at least one recipient."
-msgstr "Bitte wählen Sie wenigstens einen Empfänger"
+msgstr "Bitte wählen Sie wenigstens einen Empfänger."
 
 #: Src/wptFileManagerDlg.cpp:203 Src/wptFileStatDlg.cpp:281
 #: Src/wptKeyManager.cpp:465
@@ -1393,8 +1306,8 @@
 msgid "Options"
 msgstr "Optionen"
 
-#: Src/wptFileManagerDlg.cpp:331 Src/wptKeyEditDlgs.cpp:1281
-#: Src/wptKeyEditDlgs.cpp:1331 Src/wptKeyEditDlgs.cpp:1407
+#: Src/wptFileManagerDlg.cpp:331 Src/wptKeyEditDlgs.cpp:1286
+#: Src/wptKeyEditDlgs.cpp:1336 Src/wptKeyEditDlgs.cpp:1412
 #: Src/wptKeyManager.cpp:725 Src/wptKeyManager.cpp:827
 #: Src/wptKeyManager.cpp:863 Src/wptKeyManagerDlg.cpp:1495
 #: Src/wptKeyManagerDlg.cpp:1515 Src/wptKeyManagerDlg.cpp:1549
@@ -1402,7 +1315,7 @@
 #: Src/wptKeyManagerDlg.cpp:1704 Src/wptKeyManagerDlg.cpp:1723
 #: Src/wptKeyserverSearchDlg.cpp:132
 msgid "Please select a key."
-msgstr "Bitte Schlüssel wählen."
+msgstr "Bitte wählen Sie einen Schlüssel aus."
 
 #: Src/wptFileManagerDlg.cpp:391
 msgid "0 Objects marked"
@@ -1468,9 +1381,6 @@
 msgid "E&xport"
 msgstr "E&xportieren"
 
-# msgid "Executable Files (*.exe)"
-# msgstr ""
-# XXX \0\0 problem again
 #: Src/wptFileManagerDlg.cpp:485 Src/wptMainProc.cpp:413
 msgid "Exit"
 msgstr "Beenden"
@@ -1544,7 +1454,7 @@
 
 #: Src/wptFileManagerDlg.cpp:806
 msgid "Operation Status: Done."
-msgstr "Prozess-Status: Fertig"
+msgstr "Prozess-Status: Fertig."
 
 #: Src/wptFileManagerDlg.cpp:849
 #, c-format
@@ -1573,7 +1483,7 @@
 
 #: Src/wptFileSaveDlg.cpp:84
 msgid "Please enter a filename."
-msgstr "Bitte Dateinamen eingeben."
+msgstr "Bitte geben Sie einen Dateinamen ein."
 
 #: Src/wptFileSaveDlg.cpp:95 Src/wptFileSaveDlg.cpp:110
 msgid "Finished"
@@ -1585,7 +1495,7 @@
 
 #: Src/wptFileVerifyDlg.cpp:80
 msgid "Do you want to retrieve the key?"
-msgstr "Wollen sie den Schlüssel herunterladen?"
+msgstr "Wollen Sie den Schlüssel herunterladen?"
 
 # c:\oss\winpt-gpgme\src\wptFirstRunDlg.cpp:42
 #: Src/wptFirstRunDlg.cpp:44
@@ -1618,7 +1528,7 @@
 
 #: Src/wptGPG.cpp:842
 msgid "Could not reset read-only state."
-msgstr "Konnte den Read-Only Zustand nicht zurücksetzen."
+msgstr "Konnte den Nur-Lesen Zustand nicht zurücksetzen."
 
 #: Src/wptGPG.cpp:843 Src/wptGPG.cpp:1122 Src/wptGPG.cpp:1131
 msgid "GPG Error"
@@ -1646,11 +1556,11 @@
 #: Src/wptGPGPrefsDlg.cpp:225 Src/wptGPGPrefsDlg.cpp:231
 #: Src/wptGPGPrefsDlg.cpp:236 Src/wptGPGPrefsDlg.cpp:241
 #: Src/wptGPGPrefsDlg.cpp:247 Src/wptGPGPrefsDlg.cpp:261
-#: Src/wptKeyEditDlgs.cpp:1693 Src/wptKeyManagerDlg.cpp:956
-#: Src/wptMainProc.cpp:433 Src/wptPreferencesDlg.cpp:210
-#: Src/wptPreferencesDlg.cpp:253 Src/wptPreferencesDlg.cpp:265
-#: Src/wptPreferencesDlg.cpp:277 Src/wptPreferencesDlg.cpp:307
-#: Src/wptRegistry.cpp:599
+#: Src/wptKeyEditDlgs.cpp:1698 Src/wptKeyManagerDlg.cpp:956
+#: Src/wptMainProc.cpp:433 Src/wptPreferencesDlg.cpp:215
+#: Src/wptPreferencesDlg.cpp:258 Src/wptPreferencesDlg.cpp:270
+#: Src/wptPreferencesDlg.cpp:282 Src/wptPreferencesDlg.cpp:313
+#: Src/wptRegistry.cpp:591
 msgid "Preferences"
 msgstr "Einstellungen"
 
@@ -1713,7 +1623,7 @@
 
 #: Src/wptGPG.cpp:1121
 msgid "No GPG error description available."
-msgstr "Keine GPG-Fehlerbeschreibung verfügbar."
+msgstr "Keine Fehlerbeschreibung von GPG verfügbar."
 
 #: Src/wptGPGME.cpp:313
 msgid "Error during verification process."
@@ -1733,7 +1643,7 @@
 
 #: Src/wptGPGME.cpp:317
 msgid "No valid OpenPGP signature."
-msgstr "Keine gültigen OpenPGP Signatur."
+msgstr "Keine gültige OpenPGP Signatur."
 
 #: Src/wptGPGME.cpp:318
 msgid "Signature Error"
@@ -1741,11 +1651,11 @@
 
 #: Src/wptGPGME.cpp:319
 msgid "Good Signature (Expired Key)"
-msgstr "Gültige Signature (Abgelaufener Key)"
+msgstr "Gültige Signature (Abgelaufener Schlüssel)"
 
 #: Src/wptGPGME.cpp:320
 msgid "Good Signature (Revoked Key)"
-msgstr "Gültige Signatur (Revoked Key)"
+msgstr "Gültige Signatur (Widerrufener Schlüssel)"
 
 #: Src/wptGPGOptDlg.cpp:49 Src/wptGPGOptDlg.cpp:99
 msgid "Could not load GnuPG config file!"
@@ -1786,13 +1696,13 @@
 "Sind Sie sicher?"
 
 #: Src/wptGPGPrefsDlg.cpp:141 Src/wptKeyManagerDlg.cpp:1676
-#: Src/wptMainProc.cpp:591
+#: Src/wptMainProc.cpp:593
 msgid "GnuPG Preferences"
 msgstr "GnuPG-Einstellungen"
 
 #: Src/wptGPGPrefsDlg.cpp:143
 msgid "GnuPG home directory  (where both keyrings are located)"
-msgstr "GnuPG Home-Dir (wo sich die Keyrings befinden)"
+msgstr "GnuPG Heimatverzeichnis (wo sich die Keyrings befinden)"
 
 #: Src/wptGPGPrefsDlg.cpp:145
 msgid "GnuPG exe file location (full path with added gpg.exe)"
@@ -1804,7 +1714,7 @@
 
 #: Src/wptGPGPrefsDlg.cpp:148
 msgid "Ask for the signature class during key sign"
-msgstr "Signaturlevel erfragen während Key-Sign"
+msgstr "Signaturlevel erfragen während Schlüsselsignierung"
 
 #: Src/wptGPGPrefsDlg.cpp:149
 msgid "Comment in armored files"
@@ -1812,11 +1722,11 @@
 
 #: Src/wptGPGPrefsDlg.cpp:150
 msgid "Encrypt to this key"
-msgstr "Mit diesem Key verschlüsseln"
+msgstr "Mit diesem Schlüssel verschlüsseln"
 
 #: Src/wptGPGPrefsDlg.cpp:151
 msgid "General GPG options"
-msgstr "Allgemeine GPG Optionen"
+msgstr "Allgemeine GPG-Optionen"
 
 #: Src/wptGPGPrefsDlg.cpp:152 Src/wptGPGPrefsDlg.cpp:153
 #: Src/wptGPGPrefsDlg.cpp:154 Src/wptPreferencesDlg.cpp:130
@@ -1830,15 +1740,15 @@
 
 #: Src/wptGPGPrefsDlg.cpp:212
 msgid "Please enter the GnuPG home directory."
-msgstr "Bitte GnuPG-HOME-Verzeichnis eingeben."
+msgstr "Bitte geben Sie das GnuPG-Heimatverzeichnis ein."
 
 #: Src/wptGPGPrefsDlg.cpp:224
 msgid "Could not save 'HomeDir' in the registry."
-msgstr "Konnte 'HomeDir' nicht in Registry schreiben"
+msgstr "Konnte 'Heinmatverzeichnis' nicht in der Registrierung speichern."
 
 #: Src/wptGPGPrefsDlg.cpp:230
 msgid "Please enter where GPG.exe is located."
-msgstr "Bitte Pfad zu GPG.EXE eingeben."
+msgstr "Bitte geben Sie den Pfad zu GPG.EXE ein."
 
 #: Src/wptGPGPrefsDlg.cpp:235
 msgid "Could not find the GPG program in this directory."
@@ -1846,24 +1756,81 @@
 
 #: Src/wptGPGPrefsDlg.cpp:240
 msgid "Could not save 'gpgProgram' in the registry"
-msgstr "Konnte 'gpgProgram' nicht in Registry schreiben"
+msgstr "Konnte 'gpgProgram' nicht in der Registrierung speichern."
 
 #: Src/wptGPGPrefsDlg.cpp:260
 msgid "Could not get GPG config file"
-msgstr "Konnte Konfigurationsdatei nicht öffnen"
+msgstr "Konnte Konfigurationsdatei von GPG nicht öffnen"
 
 #: Src/wptGPGPrefsDlg.cpp:294
 msgid "Choose GPG home directory"
-msgstr "Wählen Sie das GPG HOME-Verzeichnis"
+msgstr "Heimatverzeichnis von GPG auswählen"
 
 #: Src/wptGPGPrefsDlg.cpp:314
 msgid "Choose locale directory"
-msgstr "Verzeichnis für Sprachdateien auswählen"
+msgstr "Verzeichnis der Sprachdateien auswählen"
 
 #: Src/wptGPGPrefsDlg.cpp:320
 msgid "Choose GPG binary"
-msgstr "Wählen Sie GPG.EXE Datei"
+msgstr "Wählen Sie GPG.EXE Datei aus"
 
+#: Src/wptGroupManager.cpp:207 Src/wptGroupManager.cpp:238
+#: Src/wptImagelist.cpp:52 Src/wptKeyManager.cpp:178 Src/wptKeyManager.cpp:183
+#: Src/wptKeyManager.cpp:234 Src/wptKeyManager.cpp:313
+#: Src/wptKeyManager.cpp:320 Src/wptKeyManager.cpp:349
+#: Src/wptKeyManager.cpp:354 Src/wptKeyManager.cpp:361
+#: Src/wptKeyManager.cpp:363 Src/wptKeyManager.cpp:384
+#: Src/wptKeyManager.cpp:393 Src/wptKeyManager.cpp:397
+#: Src/wptKeyManager.cpp:417 Src/wptKeyManager.cpp:458
+#: Src/wptKeyManager.cpp:463 Src/wptKeyManager.cpp:466
+#: Src/wptKeyManager.cpp:471 Src/wptKeyManager.cpp:477
+#: Src/wptKeyManager.cpp:482 Src/wptKeyManager.cpp:611
+#: Src/wptKeyManager.cpp:619 Src/wptKeyManager.cpp:725
+#: Src/wptKeyManager.cpp:754 Src/wptKeyManager.cpp:764
+#: Src/wptKeyManager.cpp:775 Src/wptKeyManager.cpp:801
+#: Src/wptKeyManager.cpp:827 Src/wptKeyManager.cpp:834
+#: Src/wptKeyManager.cpp:858 Src/wptKeyManager.cpp:863
+#: Src/wptKeyManager.cpp:883 Src/wptKeyManager.cpp:928
+#: Src/wptKeyManager.cpp:933 Src/wptKeyManager.cpp:993
+#: Src/wptKeyManager.cpp:1023 Src/wptKeyManagerDlg.cpp:1170
+#: Src/wptKeyManagerDlg.cpp:1183 Src/wptKeyManagerDlg.cpp:1193
+#: Src/wptKeyManagerDlg.cpp:1474 Src/wptKeyManagerDlg.cpp:1496
+#: Src/wptKeyManagerDlg.cpp:1515 Src/wptKeyManagerDlg.cpp:1523
+#: Src/wptKeyManagerDlg.cpp:1533 Src/wptKeyManagerDlg.cpp:1549
+#: Src/wptKeyManagerDlg.cpp:1555 Src/wptKeyManagerDlg.cpp:1568
+#: Src/wptKeyManagerDlg.cpp:1588 Src/wptKeyManagerDlg.cpp:1617
+#: Src/wptKeyManagerDlg.cpp:1646 Src/wptKeyManagerDlg.cpp:1705
+#: Src/wptKeyManagerDlg.cpp:1723 Src/wptKeyManagerDlg.cpp:1728
+#: Src/wptKeyManagerDlg.cpp:1733 Src/wptKeyManagerDlg.cpp:1821
+#: Src/wptKeyManagerDlg.cpp:2002 Src/wptKeysigDlg.cpp:93
+#: Src/wptKeysigDlg.cpp:105 Src/wptKeysigDlg.cpp:284 Src/wptKeysigDlg.cpp:358
+#: Src/wptKeysigDlg.cpp:367 Src/wptKeysigDlg.cpp:412 Src/wptMainProc.cpp:401
+#: Src/wptMainProc.cpp:554 Src/wptMainProc.cpp:564
+msgid "Key Manager"
+msgstr "Schlüsselverwaltung"
+
+#: Src/wptGroupManager.cpp:208
+#, c-format
+msgid ""
+"Do you really want to delete this group?\n"
+"\n"
+"%s"
+msgstr ""
+"Diesen Gruppe wirklich löschen?\n"
+"\n"
+"%s"
+
+#: Src/wptGroupManager.cpp:236
+#, c-format
+msgid ""
+"Do you really want to delete this entry?\n"
+"\n"
+"%s"
+msgstr ""
+"Diesen Eintrag wirklich löschen?\n"
+"\n"
+"%s"
+
 #: Src/wptGroupsDlg.cpp:53
 msgid "New Group"
 msgstr "Neue Gruppe"
@@ -1876,87 +1843,53 @@
 msgid "Group manager"
 msgstr "Gruppenmanager"
 
-#: Src/wptHotkey.cpp:41
+#: Src/wptHotkey.cpp:61
 msgid "Clipboard Encrypt (ALT+CTRL+E)"
 msgstr "Zwischenablage verschlüsseln"
 
-#: Src/wptHotkey.cpp:42
+#: Src/wptHotkey.cpp:62
 msgid "Clipboard Decrypt/Verify (ALT+CTRL+D)"
 msgstr "Zwischenablage Entschlüsseln/Überprüfen"
 
-#: Src/wptHotkey.cpp:43
+#: Src/wptHotkey.cpp:63
 msgid "Clipboard Sign (ALT+CTRL+S)"
 msgstr "Zwischenablage Signieren"
 
-#: Src/wptHotkey.cpp:44
+#: Src/wptHotkey.cpp:64
 msgid "Clipboard Sign Encrypt (ALT+CTRL+B)"
 msgstr "Zwischenablage Signieren/Verschlüsseln"
 
-#: Src/wptHotkey.cpp:45
+#: Src/wptHotkey.cpp:65
 msgid "Current Window Encrypt (ALT+SHIFT+E)"
 msgstr "Aktuelles Fenster Verschlüsseln"
 
-#: Src/wptHotkey.cpp:46
+#: Src/wptHotkey.cpp:66
 msgid "Current Window Decrypt/Verify (ALT+SHIFT+D)"
 msgstr "Aktuelles Fenster Entschlüsseln/Überprüfen"
 
-#: Src/wptHotkey.cpp:47
+#: Src/wptHotkey.cpp:67
 msgid "Current Window Sign (ALT+SHIFT+S)"
 msgstr "Aktuelles Fenster signieren"
 
-#: Src/wptHotkey.cpp:48
+#: Src/wptHotkey.cpp:68
 msgid "Current Window Sign Encrypt (ALT+SHIFT+B"
 msgstr "Aktuelles Fenster Signieren/Verschlüsseln"
 
-#: Src/wptHotkey.cpp:49
+#: Src/wptHotkey.cpp:69
 msgid "Unknown Hotkey"
 msgstr "Unbekanntes Tastenkürzel"
 
-#: Src/wptImagelist.cpp:52 Src/wptKeyManager.cpp:178 Src/wptKeyManager.cpp:183
-#: Src/wptKeyManager.cpp:234 Src/wptKeyManager.cpp:313
-#: Src/wptKeyManager.cpp:320 Src/wptKeyManager.cpp:349
-#: Src/wptKeyManager.cpp:354 Src/wptKeyManager.cpp:361
-#: Src/wptKeyManager.cpp:363 Src/wptKeyManager.cpp:384
-#: Src/wptKeyManager.cpp:393 Src/wptKeyManager.cpp:397
-#: Src/wptKeyManager.cpp:417 Src/wptKeyManager.cpp:458
-#: Src/wptKeyManager.cpp:463 Src/wptKeyManager.cpp:466
-#: Src/wptKeyManager.cpp:471 Src/wptKeyManager.cpp:477
-#: Src/wptKeyManager.cpp:482 Src/wptKeyManager.cpp:611
-#: Src/wptKeyManager.cpp:619 Src/wptKeyManager.cpp:725
-#: Src/wptKeyManager.cpp:754 Src/wptKeyManager.cpp:764
-#: Src/wptKeyManager.cpp:775 Src/wptKeyManager.cpp:801
-#: Src/wptKeyManager.cpp:827 Src/wptKeyManager.cpp:834
-#: Src/wptKeyManager.cpp:858 Src/wptKeyManager.cpp:863
-#: Src/wptKeyManager.cpp:883 Src/wptKeyManager.cpp:928
-#: Src/wptKeyManager.cpp:933 Src/wptKeyManager.cpp:993
-#: Src/wptKeyManager.cpp:1023 Src/wptKeyManagerDlg.cpp:1170
-#: Src/wptKeyManagerDlg.cpp:1183 Src/wptKeyManagerDlg.cpp:1193
-#: Src/wptKeyManagerDlg.cpp:1474 Src/wptKeyManagerDlg.cpp:1496
-#: Src/wptKeyManagerDlg.cpp:1515 Src/wptKeyManagerDlg.cpp:1523
-#: Src/wptKeyManagerDlg.cpp:1533 Src/wptKeyManagerDlg.cpp:1549
-#: Src/wptKeyManagerDlg.cpp:1555 Src/wptKeyManagerDlg.cpp:1568
-#: Src/wptKeyManagerDlg.cpp:1588 Src/wptKeyManagerDlg.cpp:1617
-#: Src/wptKeyManagerDlg.cpp:1646 Src/wptKeyManagerDlg.cpp:1705
-#: Src/wptKeyManagerDlg.cpp:1723 Src/wptKeyManagerDlg.cpp:1728
-#: Src/wptKeyManagerDlg.cpp:1733 Src/wptKeyManagerDlg.cpp:1821
-#: Src/wptKeyManagerDlg.cpp:2002 Src/wptKeysigDlg.cpp:93
-#: Src/wptKeysigDlg.cpp:105 Src/wptKeysigDlg.cpp:284 Src/wptKeysigDlg.cpp:358
-#: Src/wptKeysigDlg.cpp:367 Src/wptKeysigDlg.cpp:412 Src/wptMainProc.cpp:401
-#: Src/wptMainProc.cpp:554 Src/wptMainProc.cpp:562
-msgid "Key Manager"
-msgstr "Schlüsselverwaltung"
-
 #: Src/wptImportList.cpp:263 Src/wptKeyEditDlgs.cpp:233
-#: Src/wptKeyEditDlgs.cpp:1106 Src/wptKeyEditDlgs.cpp:1167
-#: Src/wptKeyEditDlgs.cpp:1419 Src/wptKeyEditDlgs.cpp:1441
-#: Src/wptKeyEditDlgs.cpp:1480 Src/wptKeyEditDlgs.cpp:1513
+#: Src/wptKeyEditDlgs.cpp:1111 Src/wptKeyEditDlgs.cpp:1172
+#: Src/wptKeyEditDlgs.cpp:1424 Src/wptKeyEditDlgs.cpp:1446
+#: Src/wptKeyEditDlgs.cpp:1485 Src/wptKeyEditDlgs.cpp:1518
 #: Src/wptKeylist.cpp:392 Src/wptKeylist.cpp:426 Src/wptKeyPropsDlg.cpp:163
 #: Src/wptKeysigDlg.cpp:143 Src/wptKeysigDlg.cpp:208
 msgid "Revoked"
 msgstr "Widerrufen"
 
 #: Src/wptImportList.cpp:265 Src/wptKeyEditDlgs.cpp:235
-#: Src/wptKeyEditDlgs.cpp:1104 Src/wptKeyEditDlgs.cpp:1338
+#: Src/wptKeyEditDlgs.cpp:1109 Src/wptKeyEditDlgs.cpp:1343
 #: Src/wptKeylist.cpp:394 Src/wptKeylist.cpp:424 Src/wptKeyPropsDlg.cpp:160
 #: Src/wptKeysigDlg.cpp:142 Src/wptKeysigDlg.cpp:209
 msgid "Expired"
@@ -1970,7 +1903,7 @@
 msgid "public key"
 msgstr "öffentlicher Schlüssel"
 
-#: Src/wptImportList.cpp:302 Src/wptKeyEditDlgs.cpp:1184
+#: Src/wptImportList.cpp:302 Src/wptKeyEditDlgs.cpp:1189
 msgid "Invalid user ID"
 msgstr "Ungültige Benutzerkennung"
 
@@ -1986,7 +1919,7 @@
 msgid "Size"
 msgstr "Größe"
 
-#: Src/wptImportList.cpp:353 Src/wptKeyEditDlgs.cpp:1028
+#: Src/wptImportList.cpp:353 Src/wptKeyEditDlgs.cpp:1033
 #: Src/wptKeylist.cpp:545 Src/wptKeylist.cpp:553 Src/wptKeyManagerDlg.cpp:874
 #: Src/wptKeyManagerDlg.cpp:965 Src/wptKeyRevokersDlg.cpp:58
 #: Src/wptKeyserverSearchDlg.cpp:52 Src/wptSigList.cpp:55
@@ -1994,8 +1927,8 @@
 msgid "Key ID"
 msgstr "Schlüssel-ID"
 
-#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:1029
-#: Src/wptKeyEditDlgs.cpp:1136 Src/wptKeylist.cpp:559
+#: Src/wptImportList.cpp:354 Src/wptKeyEditDlgs.cpp:1034
+#: Src/wptKeyEditDlgs.cpp:1141 Src/wptKeylist.cpp:559
 #: Src/wptKeyManagerDlg.cpp:880 Src/wptKeyManagerDlg.cpp:968
 #: Src/wptKeyserverSearchDlg.cpp:53 Src/wptSigList.cpp:54
 msgid "Creation"
@@ -2018,7 +1951,7 @@
 # c:\oss\winpt-gpgme\src\wptKeyCache.cpp:479
 #: Src/wptKeyCache.cpp:642
 msgid "Load GPG Keyrings..."
-msgstr "Lade GPG Keyrings"
+msgstr "Lade GPG Schlüsselbunde..."
 
 #: Src/wptKeyCacheDlg.cpp:53
 msgid "WinPT Key Caching"
@@ -2030,13 +1963,13 @@
 
 #: Src/wptKeyCacheDlg.cpp:69
 msgid "Key Cache"
-msgstr "Schlüssel Cache"
+msgstr "Schlüsselcache"
 
 #: Src/wptKeyEditDlgs.cpp:206
 msgid "Ultimate"
 msgstr "Absolut"
 
-#: Src/wptKeyEditDlgs.cpp:221 Src/wptKeyEditDlgs.cpp:1101
+#: Src/wptKeyEditDlgs.cpp:221 Src/wptKeyEditDlgs.cpp:1106
 #: Src/wptKeylist.cpp:235 Src/wptKeylist.cpp:354
 msgid "Never"
 msgstr "Niemals"
@@ -2061,7 +1994,7 @@
 "large picture, your key will become very large as well! Keeping the image "
 "close to 240x288 is a good size to use."
 msgstr ""
-"Bitte denken Sie daran das das Image im Schlüssel gespeichert wird. Wenn sie "
+"Bitte denken Sie daran das das Image im Schlüssel gespeichert wird. Wenn Sie "
 "ein grosses Bild benutzen, wird Ihr Schlüssel ebenfalls sehr gross! ein "
 "240x288 grosses Bild ist eine gute Größe."
 
@@ -2071,7 +2004,7 @@
 "Pick an image to use for your photo ID.\n"
 "The image must be a JPEG file."
 msgstr ""
-"Bitte ein Bild auswaehlen fuer die photo ID.\n"
+"Bitte ein Bild auswählen fuer die photo ID.\n"
 "Das Bild muss eine JPEG Datei sein."
 
 #: Src/wptKeyEditDlgs.cpp:336 Src/wptKeyEditDlgs.cpp:438
@@ -2087,13 +2020,9 @@
 msgid "Select Image File"
 msgstr "Bilddatei auswählen"
 
-#: Src/wptKeyEditDlgs.cpp:355
-msgid "JPEG Files (*.jpg, *.jpeg)"
-msgstr ""
-
 #: Src/wptKeyEditDlgs.cpp:358 Src/wptKeyEditDlgs.cpp:368
 #: Src/wptKeyEditDlgs.cpp:374 Src/wptKeyEditDlgs.cpp:380
-#: Src/wptKeyEditDlgs.cpp:394 Src/wptKeyEditDlgs.cpp:895
+#: Src/wptKeyEditDlgs.cpp:394 Src/wptKeyEditDlgs.cpp:896
 msgid "Add Photo"
 msgstr "Foto hinzufügen"
 
@@ -2124,8 +2053,8 @@
 
 #: Src/wptKeyEditDlgs.cpp:400 Src/wptKeyEditDlgs.cpp:481
 #: Src/wptKeyEditDlgs.cpp:565 Src/wptKeyEditDlgs.cpp:734
-#: Src/wptKeyEditDlgs.cpp:1443 Src/wptKeyEditDlgs.cpp:1515
-#: Src/wptKeyEditDlgs.cpp:1600 Src/wptKeyEditDlgs.cpp:1778
+#: Src/wptKeyEditDlgs.cpp:1448 Src/wptKeyEditDlgs.cpp:1520
+#: Src/wptKeyEditDlgs.cpp:1605 Src/wptKeyEditDlgs.cpp:1783
 #: Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:612
 #: Src/wptKeyPropsDlg.cpp:359 Src/wptOwnertrustDlg.cpp:124
 #: Src/wptOwnertrustDlg.cpp:136
@@ -2136,7 +2065,7 @@
 #: Src/wptKeyEditDlgs.cpp:436
 msgid "Appointing a key as designated revoker cannot be undone."
 msgstr ""
-"Hinzufügen eines \"Revokers\" kann nicht mehr\n"
+"Hinzufügen eines \"Widerrufers\" kann nicht mehr\n"
 "rückgängig gemacht werden."
 
 #: Src/wptKeyEditDlgs.cpp:437
@@ -2145,14 +2074,14 @@
 
 #: Src/wptKeyEditDlgs.cpp:440 Src/wptKeyEditDlgs.cpp:456
 #: Src/wptKeyEditDlgs.cpp:462 Src/wptKeyEditDlgs.cpp:475
-#: Src/wptKeyEditDlgs.cpp:908
+#: Src/wptKeyEditDlgs.cpp:909
 msgid "Add Revoker"
-msgstr "\"Revoker\" hinzufügen"
+msgstr "\"Wiederrufer\" hinzufügen"
 
-#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:1475
-#: Src/wptKeyEditDlgs.cpp:1532 Src/wptKeyEditDlgs.cpp:1577
-#: Src/wptKeyEditDlgs.cpp:1719 Src/wptKeyEditDlgs.cpp:1750
-#: Src/wptKeyEditDlgs.cpp:1879
+#: Src/wptKeyEditDlgs.cpp:456 Src/wptKeyEditDlgs.cpp:1480
+#: Src/wptKeyEditDlgs.cpp:1537 Src/wptKeyEditDlgs.cpp:1582
+#: Src/wptKeyEditDlgs.cpp:1724 Src/wptKeyEditDlgs.cpp:1755
+#: Src/wptKeyEditDlgs.cpp:1884
 msgid "Please select a user ID."
 msgstr "Bitte eine Benutzerkennung wählen."
 
@@ -2179,7 +2108,7 @@
 
 #: Src/wptKeyEditDlgs.cpp:530
 msgid "Please enter a name (min. 5 chars.)"
-msgstr "Bitte Namen eingeben (mindestens 5 Zeichen)"
+msgstr "Bitte Namen eingeben (min. 5 Zeichen)"
 
 #: Src/wptKeyEditDlgs.cpp:530 Src/wptKeyEditDlgs.cpp:534
 #: Src/wptKeyEditDlgs.cpp:539 Src/wptKeyEditDlgs.cpp:543
@@ -2203,7 +2132,7 @@
 
 #: Src/wptKeyEditDlgs.cpp:565
 msgid "user ID successfully added."
-msgstr "Benutzerkennung erfolgreich hinzugefügt"
+msgstr "Benutzerkennung erfolgreich hinzugefügt."
 
 #: Src/wptKeyEditDlgs.cpp:645 Src/wptKeyEditDlgs.cpp:840
 msgid "Add new Subkey"
@@ -2211,7 +2140,7 @@
 
 #: Src/wptKeyEditDlgs.cpp:646
 msgid "Key type"
-msgstr "Schlüssel Typ"
+msgstr "Schlüssel-Typ"
 
 #: Src/wptKeyEditDlgs.cpp:647
 msgid "Size in bits"
@@ -2223,7 +2152,7 @@
 
 #: Src/wptKeyEditDlgs.cpp:693
 msgid "Please select one entry."
-msgstr "Bitte einen Eintrag wählen."
+msgstr "Bitte wählen Sie einen Eintrag aus."
 
 #: Src/wptKeyEditDlgs.cpp:693 Src/wptKeyEditDlgs.cpp:699
 #: Src/wptKeyEditDlgs.cpp:732 Src/wptKeyEditDlgs.cpp:822
@@ -2239,9 +2168,9 @@
 msgstr "Unterschlüssel erfolgreich hinzugefügt."
 
 #: Src/wptKeyEditDlgs.cpp:762 Src/wptKeyEditDlgs.cpp:822
-#: Src/wptKeyEditDlgs.cpp:895 Src/wptKeyEditDlgs.cpp:908
-#: Src/wptKeyEditDlgs.cpp:969 Src/wptKeyEditDlgs.cpp:1327
-#: Src/wptKeyEditDlgs.cpp:1402 Src/wptKeyEditDlgs.cpp:1464
+#: Src/wptKeyEditDlgs.cpp:895 Src/wptKeyEditDlgs.cpp:909
+#: Src/wptKeyEditDlgs.cpp:974 Src/wptKeyEditDlgs.cpp:1332
+#: Src/wptKeyEditDlgs.cpp:1407 Src/wptKeyEditDlgs.cpp:1469
 #: Src/wptKeyManagerDlg.cpp:1522
 msgid "There is no secret key available!"
 msgstr "Kein geheimer Schlüssel vorhanden!"
@@ -2254,16 +2183,16 @@
 msgid "Preferred keyserver successfully set."
 msgstr "Bevorzugter Keyserver wurde erfolgreich gesetzt."
 
-#: Src/wptKeyEditDlgs.cpp:927 Src/wptKeyEditOwnertrustDlg.cpp:55
+#: Src/wptKeyEditDlgs.cpp:928 Src/wptKeyEditOwnertrustDlg.cpp:55
 #: Src/wptKeyPropsDlg.cpp:351
 msgid "Change Ownertrust"
 msgstr "Besitzervertrauen ändern"
 
-#: Src/wptKeyEditDlgs.cpp:930 Src/wptKeyManager.cpp:232
+#: Src/wptKeyEditDlgs.cpp:931 Src/wptKeyManager.cpp:232
 msgid "Key status changed."
-msgstr "Schlüsselstatus geändert"
+msgstr "Schlüsselstatus geändert."
 
-#: Src/wptKeyEditDlgs.cpp:975
+#: Src/wptKeyEditDlgs.cpp:980
 msgid ""
 "Cannot change passphrase because the key\n"
 "is protected with the IDEA encryption algorithm."
@@ -2271,15 +2200,15 @@
 "Kann das Passwort das Schlüssels nicht ändern, da der \n"
 "Schlüssel mit dem IDEA Verschlüsselungs-Algorithmus gesichert ist."
 
-#: Src/wptKeyEditDlgs.cpp:982
+#: Src/wptKeyEditDlgs.cpp:987
 msgid "Current (old) Passphrase"
 msgstr "Aktuelles (altes) Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:986
+#: Src/wptKeyEditDlgs.cpp:991
 msgid "New Passphrase"
 msgstr "Neues Passwort"
 
-#: Src/wptKeyEditDlgs.cpp:993 Src/wptPassphraseDlg.cpp:175
+#: Src/wptKeyEditDlgs.cpp:998 Src/wptPassphraseDlg.cpp:175
 msgid ""
 "The passphrase contains 8-bit characters.\n"
 "It is not suggested to use charset specific characters."
@@ -2287,44 +2216,44 @@
 "Das Passwort enthält 8-bit Zeichen.\n"
 "Es ist nicht zu empfehlen zeichensatzspezifische Zeichen zu benutzen."
 
-#: Src/wptKeyEditDlgs.cpp:1008
+#: Src/wptKeyEditDlgs.cpp:1013
 msgid "Change Passwd"
 msgstr "Passwort ändern"
 
-#: Src/wptKeyEditDlgs.cpp:1010
+#: Src/wptKeyEditDlgs.cpp:1015
 msgid "Passphrase successfully changed."
 msgstr "Passwort erfolgreich geändert."
 
-#: Src/wptKeyEditDlgs.cpp:1027 Src/wptKeyManagerDlg.cpp:881
+#: Src/wptKeyEditDlgs.cpp:1032 Src/wptKeyManagerDlg.cpp:881
 msgid "Description"
 msgstr "Beschreibung"
 
-#: Src/wptKeyEditDlgs.cpp:1030
+#: Src/wptKeyEditDlgs.cpp:1035
 msgid "Expires"
 msgstr "Verfällt"
 
-#: Src/wptKeyEditDlgs.cpp:1044 Src/wptKeyEditDlgs.cpp:1142
+#: Src/wptKeyEditDlgs.cpp:1049 Src/wptKeyEditDlgs.cpp:1147
 msgid "Could not find key."
-msgstr "Konnte Schlüssel nicht finden"
+msgstr "Konnte Schlüssel nicht finden."
 
-#: Src/wptKeyEditDlgs.cpp:1051
+#: Src/wptKeyEditDlgs.cpp:1056
 msgid "No subkey(s) found."
 msgstr "Kein(e) Unterschlüssel gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1133 Src/wptKeylist.cpp:548 Src/wptKeylist.cpp:557
+#: Src/wptKeyEditDlgs.cpp:1138 Src/wptKeylist.cpp:548 Src/wptKeylist.cpp:557
 #: Src/wptKeyManagerDlg.cpp:878
 msgid "Validity"
 msgstr "Gültigkeit"
 
-#: Src/wptKeyEditDlgs.cpp:1135
+#: Src/wptKeyEditDlgs.cpp:1140
 msgid "Email"
-msgstr "Email"
+msgstr "E-Mail"
 
-#: Src/wptKeyEditDlgs.cpp:1148
+#: Src/wptKeyEditDlgs.cpp:1153
 msgid "No user ID(s) found."
 msgstr "Keine Benutzerkennung(en) gefunden."
 
-#: Src/wptKeyEditDlgs.cpp:1242
+#: Src/wptKeyEditDlgs.cpp:1247
 msgid ""
 "ADDUID   \t\tadd a user ID\r\n"
 "ADDPHOTO  \t\tadd a photo ID\r\n"
@@ -2364,19 +2293,19 @@
 "SIGN\t    \t\tBenutzerkennung signieren (exportierbar)\r\n"
 "LSIGN\t    \t\tBenutzerkennung signieren (nicht-exportierbar)\r\n"
 
-#: Src/wptKeyEditDlgs.cpp:1261
+#: Src/wptKeyEditDlgs.cpp:1266
 msgid "Key Edit Help"
 msgstr "Hilfe zum Schlüssel bearbeiten"
 
-#: Src/wptKeyEditDlgs.cpp:1277
+#: Src/wptKeyEditDlgs.cpp:1282
 msgid "Primary key can not be deleted!"
 msgstr "Primärer Schlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1285
+#: Src/wptKeyEditDlgs.cpp:1290
 msgid "Primary subkey can not be deleted!"
 msgstr "Primärer Unterschlüssel kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1291
+#: Src/wptKeyEditDlgs.cpp:1296
 #, c-format
 msgid ""
 "\"Subkey %s.\"\n"
@@ -2393,15 +2322,15 @@
 "\n"
 "Möchten Sie diesen Unterschlüssel wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1303
+#: Src/wptKeyEditDlgs.cpp:1308
 msgid "Delete Subkey"
 msgstr "Unterschlüssel löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1307
+#: Src/wptKeyEditDlgs.cpp:1312
 msgid "Subkey successfully deleted."
 msgstr "Unterschlüssel erfolgreich gelöscht."
 
-#: Src/wptKeyEditDlgs.cpp:1339
+#: Src/wptKeyEditDlgs.cpp:1344
 msgid ""
 "Key already expired.\n"
 "\n"
@@ -2411,19 +2340,19 @@
 "\n"
 "Wollen Sie das Ablaufdatum ändern?"
 
-#: Src/wptKeyEditDlgs.cpp:1348 Src/wptKeyEditDlgs.cpp:1351
+#: Src/wptKeyEditDlgs.cpp:1353 Src/wptKeyEditDlgs.cpp:1356
 msgid "Key Expiration Date"
 msgstr "Ablaufdatum"
 
-#: Src/wptKeyEditDlgs.cpp:1374
+#: Src/wptKeyEditDlgs.cpp:1379
 msgid "Expire Subkey"
 msgstr "Untschlüssel Ablauf"
 
-#: Src/wptKeyEditDlgs.cpp:1380
+#: Src/wptKeyEditDlgs.cpp:1385
 msgid "Subkey expire date successfully set."
 msgstr "Unterschlüsselablaufdatum erfolgreich hinzugefügt."
 
-#: Src/wptKeyEditDlgs.cpp:1411
+#: Src/wptKeyEditDlgs.cpp:1416
 msgid ""
 "No subkeys were found, if you want to revoke the\n"
 "whole key, please use the Key Manager command directly.\n"
@@ -2435,31 +2364,31 @@
 "\n"
 "Diese Funktion ist nur für das Widerrufen einzelner Unterschlüssel gedacht."
 
-#: Src/wptKeyEditDlgs.cpp:1420
+#: Src/wptKeyEditDlgs.cpp:1425
 msgid "Key already revoked."
 msgstr "Der Schlüssel ist bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1439
+#: Src/wptKeyEditDlgs.cpp:1444
 msgid "Revoke Subkey"
 msgstr "Unterschlüssel widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1443
+#: Src/wptKeyEditDlgs.cpp:1448
 msgid "Subkey successfully revoked."
 msgstr "Unterschlüssel erfolgreich widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1465
+#: Src/wptKeyEditDlgs.cpp:1470
 msgid "Revoke user ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1470
+#: Src/wptKeyEditDlgs.cpp:1475
 msgid "Key has only one user ID."
 msgstr "Schlüssel hat nur eine Benutzerkennung."
 
-#: Src/wptKeyEditDlgs.cpp:1481
+#: Src/wptKeyEditDlgs.cpp:1486
 msgid "This user ID has been already revoked."
 msgstr "Diese Benutzerkennung wurde bereits widerrufen."
 
-#: Src/wptKeyEditDlgs.cpp:1487
+#: Src/wptKeyEditDlgs.cpp:1492
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2469,43 +2398,43 @@
 "Benutzerkennung %s.\r\n"
 "Diese Benutzerkennung wirklich widerrufen?"
 
-#: Src/wptKeyEditDlgs.cpp:1511
+#: Src/wptKeyEditDlgs.cpp:1516
 msgid "Revoke User ID"
 msgstr "Benutzerkennung widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1515
+#: Src/wptKeyEditDlgs.cpp:1520
 msgid "User ID successfully revoked"
 msgstr "Benutzerkennung erfolgreich widerrufen"
 
-#: Src/wptKeyEditDlgs.cpp:1557
+#: Src/wptKeyEditDlgs.cpp:1562
 msgid "Could not set user ID preferences"
 msgstr "Konnte die veränderter Benutzerkennung nicht speichern"
 
-#: Src/wptKeyEditDlgs.cpp:1597
+#: Src/wptKeyEditDlgs.cpp:1602
 msgid "Primary"
 msgstr "Primär"
 
-#: Src/wptKeyEditDlgs.cpp:1600
+#: Src/wptKeyEditDlgs.cpp:1605
 msgid "User ID successfully flagged"
 msgstr "Benutzerkennung erfolgreich gekennzeichnet"
 
-#: Src/wptKeyEditDlgs.cpp:1686
+#: Src/wptKeyEditDlgs.cpp:1691
 msgid "No preferences available."
 msgstr "Keine Präferenzen verfübar."
 
-#: Src/wptKeyEditDlgs.cpp:1692
+#: Src/wptKeyEditDlgs.cpp:1697
 msgid "MDC feature"
 msgstr "Unterstützt MDC"
 
-#: Src/wptKeyEditDlgs.cpp:1694 Src/wptKeyeditSetPrefDlg.cpp:116
+#: Src/wptKeyEditDlgs.cpp:1699 Src/wptKeyeditSetPrefDlg.cpp:116
 msgid "Key Preferences"
 msgstr "Schlüsseleinstellungen"
 
-#: Src/wptKeyEditDlgs.cpp:1745
+#: Src/wptKeyEditDlgs.cpp:1750
 msgid "Primary user ID can not be deleted!"
 msgstr "Primäre Benutzerkennung kann nicht gelöscht werden!"
 
-#: Src/wptKeyEditDlgs.cpp:1756
+#: Src/wptKeyEditDlgs.cpp:1761
 #, c-format
 msgid ""
 "user ID \"%s\".\n"
@@ -2513,42 +2442,43 @@
 "Do you really want to delete this user ID?"
 msgstr ""
 "Benutzerkennung %s.\r\n"
+"\n"
 "Diese Benutzerkennung wirklich löschen?"
 
-#: Src/wptKeyEditDlgs.cpp:1774
+#: Src/wptKeyEditDlgs.cpp:1779
 msgid "Delete user ID"
 msgstr "Benutzerkennung löschen"
 
-#: Src/wptKeyEditDlgs.cpp:1778
+#: Src/wptKeyEditDlgs.cpp:1783
 msgid "User ID successfully deleted"
 msgstr "Benutzerkennung erfolgreich gelöscht"
 
-#: Src/wptKeyEditDlgs.cpp:1883
+#: Src/wptKeyEditDlgs.cpp:1888
 msgid "Do you really want to make this sig exportable?"
 msgstr "Wollen Sie diese Signatur wirklich exportierbar machen?"
 
-#: Src/wptKeyEditDlgs.cpp:1907 Src/wptKeysignDlg.cpp:369
+#: Src/wptKeyEditDlgs.cpp:1912 Src/wptKeysignDlg.cpp:369
 msgid "Key successfully signed."
 msgstr "Schlüssel erfolgreich signiert."
 
-#: Src/wptKeyEditDlgs.cpp:1962
+#: Src/wptKeyEditDlgs.cpp:1967
 msgid "Could not set subkey window procedure."
 msgstr "Konnte \"subkey window procedure\" nicht setzen."
 
-#: Src/wptKeyEditDlgs.cpp:1972
+#: Src/wptKeyEditDlgs.cpp:1977
 msgid "Could not set user ID window procedure."
 msgstr "Konnte \"userID window procedure\" nicht setzen."
 
 # c:\oss\winpt-gpgme\src\wptKeyEditDlgs.cpp:1739
-#: Src/wptKeyEditDlgs.cpp:1980
+#: Src/wptKeyEditDlgs.cpp:1985
 msgid "Command>"
 msgstr "Kommando>"
 
-#: Src/wptKeyEditDlgs.cpp:2012
+#: Src/wptKeyEditDlgs.cpp:2017
 msgid "Please select a command."
 msgstr "Bitte einen Befehl auswählen."
 
-#: Src/wptKeyEditDlgs.cpp:2016
+#: Src/wptKeyEditDlgs.cpp:2021
 msgid "This command cannot be used with PGP 2 (v3) keys.\n"
 msgstr "Dieser Befehl kann mit PGP2 (v3) Schlüsseln nicht verwendet werden.\n"
 
@@ -2639,7 +2569,7 @@
 
 #: Src/wptKeygenDlg.cpp:296
 msgid "Destination for Public Keyring"
-msgstr "Speicherort für pubring.gpg"
+msgstr "Speicherort für öff. Schlüsselbund"
 
 #: Src/wptKeygenDlg.cpp:302 Src/wptKeygenDlg.cpp:311
 #, c-format
@@ -2648,7 +2578,7 @@
 
 #: Src/wptKeygenDlg.cpp:305
 msgid "Destination for Secret Keyring"
-msgstr "Speicherort für secring.gpg"
+msgstr "Speicherort für geheimen Schlüsselbund"
 
 #: Src/wptKeygenDlg.cpp:327
 msgid "DSA and ELG (default)"
@@ -2684,7 +2614,7 @@
 
 #: Src/wptKeygenDlg.cpp:376
 msgid "Subkey size in &bits"
-msgstr "&Schlüsselgröße"
+msgstr "&Schlüsselgröße in Bits"
 
 #: Src/wptKeygenDlg.cpp:377
 msgid "&Real name"
@@ -2704,19 +2634,19 @@
 
 #: Src/wptKeygenDlg.cpp:421 Src/wptKeygenDlg.cpp:566
 msgid "Please enter the name."
-msgstr "Bitte Namen eingeben."
+msgstr "Bitte geben Sie einen Namen ein."
 
 #: Src/wptKeygenDlg.cpp:425 Src/wptKeygenDlg.cpp:571
 msgid "Please do not enter the email address in the name field."
-msgstr "Bitte die E-Mail-Adresse nicht im Kommentarfeld eingeben."
+msgstr "Bitte geben Sie nicht die E-Mail-Adresse im Kommentarfeld ein."
 
 #: Src/wptKeygenDlg.cpp:431 Src/wptKeygenDlg.cpp:577
 msgid "Please enter a valid email address."
-msgstr "Bitte eine E-Mail-Adresse angeben."
+msgstr "Bitte geben Sie eine E-Mail-Adresse ein."
 
 #: Src/wptKeygenDlg.cpp:438
 msgid "Please do NOT enter the email address in the comment field."
-msgstr "Bitte die E-Mail-Adresse nicht im Kommentarfeld eingeben."
+msgstr "Bitte geben Sie die E-Mail-Adresse NICHT im Kommentarfeld ein."
 
 #: Src/wptKeygenDlg.cpp:496 Src/wptKeygenDlg.cpp:612
 msgid "Key Generation completed"
@@ -2729,11 +2659,11 @@
 
 #: Src/wptKeygenDlg.cpp:540
 msgid "Real name:"
-msgstr "Ihr Name"
+msgstr "Ihr Name:"
 
 #: Src/wptKeygenDlg.cpp:541
 msgid "Email address:"
-msgstr "E-Mail-&Adresse"
+msgstr "E-Mail-&Adresse:"
 
 # c:\oss\winpt-gpgme\src\wptKeygenDlg.cpp:592
 #: Src/wptKeygenDlg.cpp:542
@@ -2795,7 +2725,7 @@
 
 #: Src/wptKeyImportStatusDlg.cpp:52
 msgid "Revocation certificates"
-msgstr "\"Revocation certificates\""
+msgstr "\"Widerruf-Zertifikate\""
 
 #: Src/wptKeyImportStatusDlg.cpp:53
 msgid "No (valid) user ID"
@@ -2815,7 +2745,7 @@
 
 #: Src/wptKeyImportStatusDlg.cpp:68
 msgid "Revocation certifcate(s) imported."
-msgstr "Widerrufs-Zertifikat wurde importiert."
+msgstr "Widerruf-Zertifikat wurde importiert."
 
 #: Src/wptKeyImportStatusDlg.cpp:70
 msgid "Secret key(s) imported."
@@ -2886,7 +2816,7 @@
 "Benutzerkennung steht, gehört. Wenn Sie wirklich wissen, was Sie tun,\n"
 "dann beantworten Sie die untenstehende Frage mit JA.\n"
 "\n"
-"\"%s\" benutzen?"
+"\"%s\" trotzdem benutzen?"
 
 #: Src/wptKeylist.cpp:1013 Src/wptKeylist.cpp:1076
 msgid "Recipients"
@@ -2918,12 +2848,12 @@
 "This key has been revoked by its owner!\n"
 "Key check failed."
 msgstr ""
-"Dieser Schlüssel wurde vom Besitzer widerrufen!Schlüsselüberprüfung "
-"fehlgeschlagen."
+"Dieser Schlüssel wurde vom Besitzer widerrufen!\n"
+"Schlüsselüberprüfung fehlgeschlagen."
 
 #: Src/wptKeyManager.cpp:353
 msgid "Only one secret key can be exported."
-msgstr "Nur der geheime Schlüssel kann exportiert werden."
+msgstr "Nur ein geheimer Schlüssel kann exportiert werden."
 
 #: Src/wptKeyManager.cpp:364
 #, c-format
@@ -2944,7 +2874,7 @@
 "The key you want to import is dash escacped.\n"
 "Do you want to extract the key?"
 msgstr ""
-"Der Import-Schlüssel ist beschädigt.\n"
+"Der Schlüssel ist \"dash escaped\".\n"
 "Möchten Sie den Schlüssel extrahieren?"
 
 #: Src/wptKeyManager.cpp:481
@@ -2972,7 +2902,7 @@
 
 #: Src/wptKeyManager.cpp:586
 msgid "Choose Name of the Key File"
-msgstr "Den Namen der Schlüsseldatei wählen"
+msgstr "Namen der Schlüsseldatei auswählen"
 
 #: Src/wptKeyManager.cpp:599
 msgid "File Import"
@@ -3276,6 +3206,8 @@
 "No ultimately trusted key found.\n"
 "Please set at least one secret key to ultimate trust."
 msgstr ""
+"Keinen explizit vertrauenswürdigen Schlüssel gefunden.\n"
+"Bitte setzten Sie zumindest einen geheimen Schlüssel auf absolutes Vertrauen."
 
 #: Src/wptKeyManagerDlg.cpp:1192
 msgid "Could not set keylist window procedure."
@@ -3373,7 +3305,7 @@
 msgid "Smart Card support is not available."
 msgstr "SmartCard-Unterstützung ist nicht verfügbar."
 
-#: Src/wptKeyManagerDlg.cpp:1668 Src/wptKeyserverDlg.cpp:601
+#: Src/wptKeyManagerDlg.cpp:1668 Src/wptKeyserverDlg.cpp:611
 msgid "Keyserver Access"
 msgstr "Schlüsselserver-Zugriff"
 
@@ -3427,7 +3359,7 @@
 #: Src/wptKeyPropsDlg.cpp:213
 #, c-format
 msgid "Card-Type: %s\r\n"
-msgstr ""
+msgstr "Karten-Typ: %s\r\n"
 
 # c:\oss\winpt-gpgme\src\wptKeyPropsDlg.cpp:214
 #: Src/wptKeyPropsDlg.cpp:242
@@ -3548,7 +3480,7 @@
 
 #: Src/wptKeyRevokeDlg.cpp:128
 msgid "Choose File to save the Certificate"
-msgstr "Wählen Sie den Namen für das Zertifikat"
+msgstr "Dateinamen für Zertifikat auswählen"
 
 #: Src/wptKeyRevokeDlg.cpp:137
 msgid "Please select a reason."
@@ -3556,7 +3488,7 @@
 
 #: Src/wptKeyRevokeDlg.cpp:172
 msgid "Revocation certificate generated."
-msgstr "Widerrufs-Zertifikat wurde erstellt."
+msgstr "Widerrufzertifikat wurde erstellt."
 
 #: Src/wptKeyRevokersDlg.cpp:59 Src/wptSigList.cpp:57
 msgid "Algorithm"
@@ -3564,71 +3496,68 @@
 
 #: Src/wptKeyRevokersDlg.cpp:99 Src/wptKeyRevokersDlg.cpp:159
 msgid "Designated Key Revokers"
-msgstr "\"Designated Key Revokers\""
+msgstr "Designierte Schlüsselwiderrufer"
 
 #: Src/wptKeyRevokersDlg.cpp:145
 msgid "Designated Revoker Keys"
-msgstr "List der Schlüsselwiderrufer"
+msgstr "Liste der Schlüsselwiderrufer"
 
 #: Src/wptKeyRevokersDlg.cpp:160
 #, c-format
 msgid "Do you want to retrieve 0x%s via the default keyserver?"
 msgstr "Wollen Sie '0x%s' wirklich vom Standard-Schlüsselserver empfangen?"
 
-#: Src/wptKeyserver.cpp:356
+#: Src/wptKeyserver.cpp:368
 msgid "The network subsystem has failed"
 msgstr "Das Netzwerk gab einen Fehler zurück"
 
-#: Src/wptKeyserver.cpp:358
+#: Src/wptKeyserver.cpp:370
 msgid "Authoritative Answer Host not found"
 msgstr "Authorisierter Rechner wurde nicht gefunden"
 
-#: Src/wptKeyserver.cpp:360
+#: Src/wptKeyserver.cpp:372
 msgid "The connection has been dropped because of a network failure"
 msgstr "Die Verbindung wurde aufgrund einen Netzwerkfehlers beendet"
 
-#: Src/wptKeyserver.cpp:362
+#: Src/wptKeyserver.cpp:374
 #, c-format
 msgid "Unknown Winsock error ec=%d"
-msgstr "Unbekannter Winsock Fehler ec=%d"
+msgstr "Unbekannter Winsock-Fehler ec=%d"
 
-#: Src/wptKeyserver.cpp:536
+#: Src/wptKeyserver.cpp:548
 msgid "Could not save keyserver.conf file"
 msgstr "Konnte keyserver.conf Datei nicht speichern"
 
-#: Src/wptKeyserver.cpp:581
+#: Src/wptKeyserver.cpp:594
 msgid ""
 "Invalid proxy configuration.You need to set a user and a passwordto use "
 "proxy authentication!"
 msgstr ""
 "Ungültige Proxy-Konfiguration. Sie müssen einen Benutzernamen und ein "
-"Passwort setzen, umProxy-Authentifizierung nutzen zu können."
+"Passwort setzen, um Proxy-Authentifizierung nutzen zu können!"
 
-#: Src/wptKeyserver.cpp:584
+#: Src/wptKeyserver.cpp:597
 msgid "Proxy Error"
 msgstr "Proxy Fehler"
 
-# msgid "All Files (*.*)"
-# msgstr ""
-# XXX: \0\0 problem again
-#: Src/wptKeyserver.cpp:610
+#: Src/wptKeyserver.cpp:623
 msgid ""
 "All entries of this file must have a valid prefix.\n"
 "Currently HKP/HTTP, LDAP and FINGER are supported.\n"
 msgstr ""
 "Alle Eintraäge in dieser Datei müssen über einen gültigen Präfix verfügen.\n"
-"Aktuell werden HTTP, LDAP and FINGER unterstützt.\n"
+"Aktuell werden HKP/HTTP, LDAP and FINGER unterstützt.\n"
 
-#: Src/wptKeyserver.cpp:612
+#: Src/wptKeyserver.cpp:625
 msgid "Keyserver Error"
 msgstr "Schlüsselserver-Fehler"
 
 # c:\oss\winpt-gpgme\src\wptKeyserver.cpp:548
-#: Src/wptKeyserver.cpp:636
+#: Src/wptKeyserver.cpp:649
 msgid "The keyserver limit is exceeded"
 msgstr "Das Limit der Keyserver wurde erreicht"
 
-#: Src/wptKeyserver.cpp:637
+#: Src/wptKeyserver.cpp:650
 msgid "Keyserver Warning"
 msgstr "Keyserver Warnung"
 
@@ -3674,134 +3603,134 @@
 
 #: Src/wptKeyserverDlg.cpp:219
 msgid "This is not a valid OpenPGP key."
-msgstr "Dies ist kein gültiger OpenPGP Schlüssel."
+msgstr "Dies ist kein gültiger OpenPGP-Schlüssel."
 
-#: Src/wptKeyserverDlg.cpp:378
+#: Src/wptKeyserverDlg.cpp:388
 msgid "Please select one of the servers."
 msgstr "Bitte einen der Server auswählen."
 
-#: Src/wptKeyserverDlg.cpp:383
+#: Src/wptKeyserverDlg.cpp:393
 msgid "Only HTTP keyserver can be used."
 msgstr "Nur HTTP-Schlüsselserver können benutzt werden."
 
-#: Src/wptKeyserverDlg.cpp:404
+#: Src/wptKeyserverDlg.cpp:414
 msgid "DNS Name"
 msgstr "DNS Name"
 
-#: Src/wptKeyserverDlg.cpp:405
+#: Src/wptKeyserverDlg.cpp:415
 msgid "Port"
 msgstr "Port"
 
-#: Src/wptKeyserverDlg.cpp:406
+#: Src/wptKeyserverDlg.cpp:416
 msgid "Default"
 msgstr "Standard"
 
-#: Src/wptKeyserverDlg.cpp:492
+#: Src/wptKeyserverDlg.cpp:502
 msgid "No space for new keyserver entry"
-msgstr ""
+msgstr "Kein Platz für neuen Keserver-Eintrag"
 
-#: Src/wptKeyserverDlg.cpp:513
+#: Src/wptKeyserverDlg.cpp:523
 msgid "HKP Keyserver"
-msgstr "HKP Schlüsselserver"
+msgstr "HKP-Schlüsselserver"
 
-#: Src/wptKeyserverDlg.cpp:514
+#: Src/wptKeyserverDlg.cpp:524
 msgid "LDAP Keyserver"
 msgstr "LDAP-Schlüsselserver"
 
-#: Src/wptKeyserverDlg.cpp:515
+#: Src/wptKeyserverDlg.cpp:525
 msgid "Finger Keyserver"
-msgstr "Finger Keyserver"
+msgstr "Finger-Keyserver"
 
-#: Src/wptKeyserverDlg.cpp:540 Src/wptKeyserverDlg.cpp:755
-#: Src/wptKeyserverDlg.cpp:775
+#: Src/wptKeyserverDlg.cpp:550 Src/wptKeyserverDlg.cpp:765
+#: Src/wptKeyserverDlg.cpp:785
 msgid "Edit Keyserver"
 msgstr "Editiere Keyserver"
 
 # c:\oss\winpt-gpgme\src\wptKeyManagerDlg.cpp:707
-#: Src/wptKeyserverDlg.cpp:541 Src/wptKeyserverDlg.cpp:633
+#: Src/wptKeyserverDlg.cpp:551 Src/wptKeyserverDlg.cpp:643
 msgid "&Add"
 msgstr "&Hinzufügen"
 
-#: Src/wptKeyserverDlg.cpp:543
+#: Src/wptKeyserverDlg.cpp:553
 msgid "Type:"
 msgstr "Typ:"
 
-#: Src/wptKeyserverDlg.cpp:544
+#: Src/wptKeyserverDlg.cpp:554
 msgid "Port:"
 msgstr "Port:"
 
-#: Src/wptKeyserverDlg.cpp:545
+#: Src/wptKeyserverDlg.cpp:555
 msgid "Host name:"
 msgstr "Rechnername:"
 
-#: Src/wptKeyserverDlg.cpp:553
+#: Src/wptKeyserverDlg.cpp:563
 msgid "Please enter a host name"
 msgstr "Bitte einen Rechnernamen eingeben."
 
-#: Src/wptKeyserverDlg.cpp:558
+#: Src/wptKeyserverDlg.cpp:568
 msgid "Invalid port, valid numbers are < 65535"
-msgstr "Ungültiger Port, gültige Nummer sind < 65535"
+msgstr "Ungültiger Port, gültige Nummern sind < 65535"
 
-#: Src/wptKeyserverDlg.cpp:602 Src/wptKeyserverSearchDlg.cpp:67
+#: Src/wptKeyserverDlg.cpp:612 Src/wptKeyserverSearchDlg.cpp:67
 msgid "&Receive"
 msgstr "&Empfangen"
 
-#: Src/wptKeyserverDlg.cpp:604
+#: Src/wptKeyserverDlg.cpp:614
 msgid "Send key (default is receiving)"
 msgstr "Schlüssel senden (sonst empfangen)"
 
-#: Src/wptKeyserverDlg.cpp:606
+#: Src/wptKeyserverDlg.cpp:616
 msgid "Please enter the key ID or email address you search for"
 msgstr "Bitte die key ID oder E-Mail-Adresse angeben die gesucht wird"
 
-#: Src/wptKeyserverDlg.cpp:607
+#: Src/wptKeyserverDlg.cpp:617
 msgid "&Search"
 msgstr "&Suchen"
 
-#: Src/wptKeyserverDlg.cpp:608
+#: Src/wptKeyserverDlg.cpp:618
 msgid "C&hange"
 msgstr "Ä&ndern"
 
-#: Src/wptKeyserverDlg.cpp:609
+#: Src/wptKeyserverDlg.cpp:619
 msgid "Set &default"
 msgstr "Als &Standard"
 
-#: Src/wptKeyserverDlg.cpp:634
+#: Src/wptKeyserverDlg.cpp:644
 msgid "&Remove"
 msgstr "&Entfernen"
 
-#: Src/wptKeyserverDlg.cpp:635
+#: Src/wptKeyserverDlg.cpp:645
 msgid "&Edit"
 msgstr "&Edtieren"
 
-#: Src/wptKeyserverDlg.cpp:661 Src/wptProxySettingsDlg.cpp:66
-#: Src/wptProxySettingsDlg.cpp:75 Src/wptProxySettingsDlg.cpp:82
-#: Src/wptProxySettingsDlg.cpp:87 Src/wptProxySettingsDlg.cpp:92
-#: Src/wptProxySettingsDlg.cpp:138 Src/wptProxySettingsDlg.cpp:169
+#: Src/wptKeyserverDlg.cpp:671 Src/wptProxySettingsDlg.cpp:67
+#: Src/wptProxySettingsDlg.cpp:76 Src/wptProxySettingsDlg.cpp:83
+#: Src/wptProxySettingsDlg.cpp:88 Src/wptProxySettingsDlg.cpp:93
+#: Src/wptProxySettingsDlg.cpp:147 Src/wptProxySettingsDlg.cpp:179
 msgid "Proxy Settings"
-msgstr "Proxy Einstellungen"
+msgstr "Proxy-Einstellungen"
 
-#: Src/wptKeyserverDlg.cpp:669 Src/wptKeyserverDlg.cpp:700
+#: Src/wptKeyserverDlg.cpp:679 Src/wptKeyserverDlg.cpp:710
 msgid "Please select one of the keyservers."
 msgstr "Bitte einen Keyserver auswählen."
 
-#: Src/wptKeyserverDlg.cpp:677
+#: Src/wptKeyserverDlg.cpp:687
 msgid "This is not implemented yet!"
-msgstr "Das ist (leider) noch nicht implementiert!"
+msgstr "Das ist noch nicht implementiert!"
 
-#: Src/wptKeyserverDlg.cpp:684 Src/wptKeyserverDlg.cpp:716
+#: Src/wptKeyserverDlg.cpp:694 Src/wptKeyserverDlg.cpp:726
 msgid "Please enter the search pattern."
 msgstr "Bitte Suchmuster eingeben."
 
-#: Src/wptKeyserverDlg.cpp:721
+#: Src/wptKeyserverDlg.cpp:731
 msgid "Only keyids are allowed."
 msgstr "Nur Schlüssel-IDs zulässig"
 
-#: Src/wptKeyserverDlg.cpp:727
+#: Src/wptKeyserverDlg.cpp:737
 msgid "Only enter the name of the user."
 msgstr "Nur den Namen des Benutzers eingeben."
 
-#: Src/wptKeyserverDlg.cpp:733
+#: Src/wptKeyserverDlg.cpp:743
 msgid "Only email addresses or keyids are allowed."
 msgstr "Es sind nur E-Mail-Adressen oder Schlüssel-IDs zulässig"
 
@@ -3845,7 +3774,7 @@
 
 #: Src/wptKeysigDlg.cpp:139 Src/wptKeysigDlg.cpp:210
 msgid "Signature Properties"
-msgstr "Signatur Eigenschaften"
+msgstr "Signatureigenschaften"
 
 #: Src/wptKeysigDlg.cpp:140 Src/wptKeysigDlg.cpp:164 Src/wptKeysigDlg.cpp:206
 msgid "Exportable"
@@ -3885,7 +3814,7 @@
 msgid "Really receive all missing keys?"
 msgstr "Alle fehlenden Schlüssel empfangen?"
 
-#: Src/wptKeysigDlg.cpp:317
+#: Src/wptKeysigDlg.cpp:317 Src/wptSigTreeDlg.cpp:112
 msgid "Signature &Properties"
 msgstr "Signatur-&Eigenschaften"
 
@@ -3945,7 +3874,7 @@
 # c:\oss\winpt-gpgme\src\wptKeysignDlg.cpp:160
 #: Src/wptKeysignDlg.cpp:170
 msgid "(3) I have done very careful checkings."
-msgstr "(3) Ich habe gründliche Überprüfungen gemacht"
+msgstr "(3) Ich habe gründliche Überprüfungen gemacht."
 
 #: Src/wptKeysignDlg.cpp:209
 msgid "never"
@@ -4018,7 +3947,7 @@
 # c:\oss\winpt-gpgme\src\wptMainProc.cpp:115
 #: Src/wptMainProc.cpp:94
 msgid "Delete Clipboard Contents"
-msgstr "Lösche Zwischenablage"
+msgstr "Lösche Inhalt der Zwischenablage"
 
 #: Src/wptMainProc.cpp:95
 msgid "&Remember the answer"
@@ -4026,11 +3955,11 @@
 
 #: Src/wptMainProc.cpp:96
 msgid "Do you want to delete the contents from the clipboard?"
-msgstr "Wollen sie den Inhalt der Zwischenablage löschen?"
+msgstr "Wollen Sie den Inhalt der Zwischenablage löschen?"
 
 #: Src/wptMainProc.cpp:197
 msgid "Could not access secret keyring."
-msgstr "Auf denn geheimen Schlüsselbund konnte nicht zugegriffen werden"
+msgstr "Auf denn geheimen Schlüsselbund konnte nicht zugegriffen werden."
 
 #: Src/wptMainProc.cpp:251 Src/wptTextInputDlg.cpp:78
 msgid "Text Input"
@@ -4038,7 +3967,7 @@
 
 #: Src/wptMainProc.cpp:270
 msgid "Unknown OpenPGP type."
-msgstr "Unbekannter OpenPGP Typ."
+msgstr "Unbekannter OpenPGP-Typ."
 
 #: Src/wptMainProc.cpp:345
 msgid "Could not set current window mode hooks."
@@ -4065,7 +3994,7 @@
 msgid "Remove all passphrases from cache?"
 msgstr "Alle Passwörter aus Zwischenspeicher entfernen?"
 
-#: Src/wptMainProc.cpp:489 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:209
+#: Src/wptMainProc.cpp:489 Src/wptProgressDlg.cpp:122 Src/wptRegistry.cpp:198
 msgid "WinPT"
 msgstr "WinPT"
 
@@ -4084,7 +4013,7 @@
 "Stellen Sie sicher, dass das Fenster Text enthält.\n"
 "%s."
 
-#: Src/wptMainProc.cpp:585 Src/wptPreferencesDlg.cpp:136
+#: Src/wptMainProc.cpp:587 Src/wptPreferencesDlg.cpp:136
 msgid "WinPT Preferences"
 msgstr "WinPT Einstellungen"
 
@@ -4096,11 +4025,8 @@
 
 #: Src/wptMAPI.cpp:103 Src/wptMAPI.cpp:226 Src/wptMAPI.cpp:266
 msgid "Could not sent mail."
-msgstr "Konnte E-Mail nicht senden."
+msgstr "Konnte E-Mail nicht versenden."
 
-# msgid "GPG Keyrings (*.gpg)"
-# msgstr ""
-# XXX: \0\0 problem again
 #: Src/wptMAPI.cpp:252
 #, c-format
 msgid "GPG Public Key of %s"
@@ -4116,7 +4042,7 @@
 
 #: Src/wptMDSumDlg.cpp:105
 msgid "Save to clipboard"
-msgstr "In &Ablage speichern"
+msgstr "In Ablage speichern"
 
 #: Src/wptMDSumDlg.cpp:106
 msgid "Print Message Digest"
@@ -4130,7 +4056,7 @@
 #: Src/wptMDSumDlg.cpp:154
 #, c-format
 msgid "Checksums successfully saved in '%s'"
-msgstr "Checksummen erfolgreich in '%s' gespeichert."
+msgstr "Prüfsummen erfolgreich in '%s' gespeichert."
 
 #: Src/wptOwnertrustDlg.cpp:100
 msgid ""
@@ -4140,15 +4066,15 @@
 msgstr ""
 "Hier ist es möglich, die Vertrauensstellungen von der 'trustdb' Datei zu "
 "speichern oder widerherzustellen. Dies könnte nützlich sein, da die Werte "
-"nicht im Schlüsselring gespeichert werden."
+"nicht im Schlüsselbund gespeichert werden."
 
 #: Src/wptOwnertrustDlg.cpp:116
 msgid "Select file name for output"
-msgstr "Wählen Sie einen Namen für die Ausgabedatei"
+msgstr "Namen der Ausgabedatei wählen"
 
 #: Src/wptOwnertrustDlg.cpp:124
 msgid "Ownertrust successfully exported."
-msgstr "Besitzer-Vertrauen erfolgreich exportiert."
+msgstr "Besitzervertrauen erfolgreich exportiert."
 
 #: Src/wptOwnertrustDlg.cpp:128
 msgid "Select file name for input"
@@ -4156,16 +4082,16 @@
 
 #: Src/wptOwnertrustDlg.cpp:136
 msgid "Ownertrust succefully imported."
-msgstr "Besitzer-Vertrauen erfolgreich importiert."
+msgstr "Besitzervertrauen erfolgreich importiert."
 
 #: Src/wptPassphraseCB.cpp:88
 msgid "Encrypted with the following public key(s)"
-msgstr "Verschlüsselt mit folgenden öffentlichen Schlüsseln"
+msgstr "Verschlüsselt mit folgenden öffentlichen Schlüssel(n)"
 
 #: Src/wptPassphraseCB.cpp:135
 #, c-format
 msgid "Unknown key ID (%s, 0x%s)"
-msgstr "Unbekannte key ID (%s, 0x%s)"
+msgstr "Unbekannte Schlüssel-ID (%s, 0x%s)"
 
 # c:\oss\winpt-gpgme\src\wptPassphraseCB.cpp:124
 #: Src/wptPassphraseCB.cpp:146
@@ -4174,7 +4100,7 @@
 
 #: Src/wptPassphraseCB.cpp:147
 msgid "Please enter your passphrase"
-msgstr "Bitte Passwort eingeben"
+msgstr "Bitte geben Sie Ihr Passwort ein"
 
 #: Src/wptPassphraseCB.cpp:151
 #, c-format
@@ -4192,7 +4118,7 @@
 "user: \"%s\"\n"
 "%s key, ID %s (main key ID %s)\n"
 msgstr ""
-"Sie benötigen das Passwort, für den Zugriff auf den geheimen Schlüssel von\n"
+"Sie benötigen das Passwort, um den geheimen Schlüssel zu entsperren\n"
 "Benutzer: \"%s\"\n"
 "%s Schlüssel, ID %s (Hauptschlüssel ID %s)\n"
 
@@ -4203,8 +4129,8 @@
 "user: \"%s\"\n"
 "%s key, ID %s\n"
 msgstr ""
-"Sie benötigen das Passwort, für den Zugriff auf den geheimen Schlüssel von\n"
-"user: \"%s\"\n"
+"Sie benötigen das Passwort, um den geheimen Schlüssel zu entsperren\n"
+"Benutzer: \"%s\"\n"
 "%s key, ID %s\n"
 
 #: Src/wptPassphraseCB.cpp:389
@@ -4223,7 +4149,7 @@
 
 #: Src/wptPassphraseDlg.cpp:64
 msgid "Repeat Passphrase"
-msgstr "Passwort  (nochmal)"
+msgstr "Passwort erneut eingeben"
 
 #: Src/wptPassphraseDlg.cpp:66
 msgid "Enter Passphrase"
@@ -4237,13 +4163,13 @@
 "Still proceed?"
 msgstr ""
 "Ihr Passwort sollte mindestens 8 Zeichen lang sein\n"
-"und auch Sonderzeichen enthalten!\n"
+"und auch nicht alphabetische Zeichen enthalten.\n"
 "\n"
-"Trotzdem fortfahren?"
+"Möchten Sie trotzdem fortfahren?"
 
 #: Src/wptPINDlg.cpp:74
 msgid "Please enter a PIN."
-msgstr "Bitte eine PIN eingeben."
+msgstr "Bitte geben Sie eine PIN ein."
 
 #: Src/wptPINDlg.cpp:74 Src/wptPINDlg.cpp:85 Src/wptPINDlg.cpp:91
 #: Src/wptPINDlg.cpp:104 Src/wptPINDlg.cpp:110
@@ -4258,7 +4184,7 @@
 # c:\oss\winpt-gpgme\src\wptPINDlg.cpp:103
 #: Src/wptPINDlg.cpp:90 Src/wptPINDlg.cpp:109
 msgid "PIN's are currently limited to US-ASCII"
-msgstr "PIN's sind derzeit auf den US-ASCII Zeichensatz beschränkt"
+msgstr "PIN's sind derzeit auf den 7bit-ASCII Zeichensatz beschränkt"
 
 #: Src/wptPINDlg.cpp:103
 msgid "'User PIN' must be at least 6 characters long."
@@ -4270,11 +4196,11 @@
 
 #: Src/wptPreferencesDlg.cpp:115
 msgid "Use clipboard &viewer to display the plaintext"
-msgstr "Benutze den &Clipboard-Betrachter zu Klartext-Anzeige"
+msgstr "Benutze Ablagen-&Betracher zur Anzeige des Klartexts"
 
 #: Src/wptPreferencesDlg.cpp:116
 msgid "Word wrap cleartext &signatures at column"
-msgstr "Breche Zeilen in &Klartextsignaturen ab"
+msgstr "Breche Zeilen in &Klartextsignaturen um"
 
 #: Src/wptPreferencesDlg.cpp:117
 msgid "&Disable hotkeys (Not recommended!)"
@@ -4302,15 +4228,15 @@
 
 #: Src/wptPreferencesDlg.cpp:123
 msgid "Select &wipe mode"
-msgstr "Lösch-Modus auswählen"
+msgstr "Löschmodus auswählen"
 
 #: Src/wptPreferencesDlg.cpp:124
 msgid "Keyserver &config"
 msgstr "Keyserver &Config"
 
 #: Src/wptPreferencesDlg.cpp:125
-msgid "Cache &passphrases for 'n' seconds"
-msgstr "&Passphrase für 'n' Sekunden cachen"
+msgid "Cache &passphrases for 'n' minutes"
+msgstr "&Passphrase für 'n' Minuten cachen"
 
 #: Src/wptPreferencesDlg.cpp:126
 msgid "(CTRL+ALT+F to clear the cache)"
@@ -4328,7 +4254,7 @@
 msgid "Current window hotkeys"
 msgstr "Aktuelle Fenster Hotkeys"
 
-#: Src/wptPreferencesDlg.cpp:207
+#: Src/wptPreferencesDlg.cpp:212
 msgid ""
 "In most cases it is not a good idea to enable this setting.\n"
 "If you know what you are doing let this flag enabled, otherwise\n"
@@ -4339,89 +4265,97 @@
 "Wenn Sie unsicher sind, dann lassen Sie diese Funktion besser deaktiviert."
 
 # c:\oss\winpt-gpgme\src\wptPreferencesDlg.cpp:214
-#: Src/wptPreferencesDlg.cpp:241
+#: Src/wptPreferencesDlg.cpp:246
 msgid "Select GPG backup path"
 msgstr "GPG Backup-Pfad auswählen"
 
-#: Src/wptPreferencesDlg.cpp:251
+#: Src/wptPreferencesDlg.cpp:256
 msgid ""
-"Please enter a value that is between 1-3600.\n"
-"It is not a good idea to cache the passphrase more than one hour."
+"Please enter a value that is between 1-720.\n"
+"It is not a good idea to cache the passphrase more than 12 hours."
 msgstr ""
-"Bitte geben Sie einen Wert von 1-3600 ein.\n"
-"Es ist nicht zu empfehlen, das Passwort länger als eine Stunde zu speichern."
+"Bitte geben Sie einen Wert von 1-720 ein.\n"
+"Es ist nicht zu empfehlen, das Passwort länger als 12 Stunden zu speichern."
 
-#: Src/wptPreferencesDlg.cpp:264
+#: Src/wptPreferencesDlg.cpp:269
 msgid "Please enter a value between 1-80."
-msgstr "Bitte geben Sie einen Wert von 1-380 ein"
+msgstr "Bitte geben Sie einen Wert von 1-80 ein."
 
-#: Src/wptPreferencesDlg.cpp:276
+#: Src/wptPreferencesDlg.cpp:281
 msgid "The specified backup folder is invalid."
 msgstr "Der angegebene Sicherungsordner ist ungültig."
 
-#: Src/wptPreferencesDlg.cpp:313
+#: Src/wptPreferencesDlg.cpp:319
 msgid "Hotkeys"
 msgstr "Tastenkürzel"
 
 #: Src/wptProgressDlg.cpp:122
 msgid "Could not create progress thread."
-msgstr "Konnte Prozess-Thread nicht erstellen"
+msgstr "Konnte Fortschrittsthread nicht erstellen."
 
-#: Src/wptProxySettingsDlg.cpp:66
+#: Src/wptProxySettingsDlg.cpp:67
 msgid "Invalid host/IP address."
-msgstr "Ungültige IP-Adresse"
+msgstr "Ungültige IP-Adresse."
 
-#: Src/wptProxySettingsDlg.cpp:75
+#: Src/wptProxySettingsDlg.cpp:76
 msgid "Invalid port number."
-msgstr "Ungueltige Port Nummer"
+msgstr "Ungültige Portnummer."
 
-#: Src/wptProxySettingsDlg.cpp:81
+#: Src/wptProxySettingsDlg.cpp:82
 msgid "Please select a value from 0-65535 for the port"
 msgstr "Bitte geben Sie für den Port einen Wert von 0-65535 ein"
 
-#: Src/wptProxySettingsDlg.cpp:86
+#: Src/wptProxySettingsDlg.cpp:87
 msgid "When you want to use authentication, please fill out both fields."
 msgstr ""
 "Wenn Sie Authentifizierung nutzen wollen, füllen Sie bitte beide Felder aus."
 
-#: Src/wptProxySettingsDlg.cpp:91
+#: Src/wptProxySettingsDlg.cpp:92
 msgid "Please enter a host name and a port."
-msgstr "Bitte Hostname und Port eingeben."
+msgstr "Bitte geben Sie den Hostname und Port ein."
 
-#: Src/wptProxySettingsDlg.cpp:134
+#: Src/wptProxySettingsDlg.cpp:141
 msgid "Proxy host name or IP address"
 msgstr "Proxy Rechnername oder IP Adresse"
 
-#: Src/wptProxySettingsDlg.cpp:135
+#: Src/wptProxySettingsDlg.cpp:142
 msgid "Server requires &authentication"
 msgstr "Server benötigt &Authentifikation"
 
-#: Src/wptProxySettingsDlg.cpp:136
+#: Src/wptProxySettingsDlg.cpp:143
 msgid "User name"
 msgstr "Benutzername"
 
-#: Src/wptProxySettingsDlg.cpp:137
+#: Src/wptProxySettingsDlg.cpp:144
 msgid "Password"
 msgstr "Passwort"
 
+#: Src/wptProxySettingsDlg.cpp:145
+msgid "Proxy type"
+msgstr "Proxy-Type"
+
+#: Src/wptProxySettingsDlg.cpp:146
+msgid "Authentication"
+msgstr "Authentifizierung"
+
 # c:\oss\winpt-gpgme\src\wptProxySettingsDlg.cpp:156
-#: Src/wptProxySettingsDlg.cpp:168
+#: Src/wptProxySettingsDlg.cpp:178
 msgid "Please fill out all required fields for authentication."
-msgstr "Bitte alle benötigen Felder für die Authentifizierung eingeben."
+msgstr "Bitte füllen Sie alle benötigen Felder für die Authentifizierung aus."
 
-#: Src/wptRegistry.cpp:171
+#: Src/wptRegistry.cpp:160
 msgid "GPG Detached Signature"
-msgstr "GPG Abgetrennte Signatur"
+msgstr "GPG abgetrennte Signatur"
 
-#: Src/wptRegistry.cpp:172
+#: Src/wptRegistry.cpp:161
 msgid "GPG Encrypted Data"
-msgstr "GPG Verschlüsselte Daten"
+msgstr "GPG verschlüsselte Daten"
 
-#: Src/wptRegistry.cpp:173
+#: Src/wptRegistry.cpp:162
 msgid "GPG Armored Data"
 msgstr "GPG ASCII-Geschützte Daten"
 
-#: Src/wptRegistry.cpp:207
+#: Src/wptRegistry.cpp:196
 msgid ""
 "WinPT can register some GPG file types for you so they can be processed with "
 "a double click in the explorer.\n"
@@ -4431,11 +4365,11 @@
 "Doppelklick im Explorer öffnen können.\n"
 "Möchten Sie fortfahren?"
 
-#: Src/wptRegistry.cpp:215
+#: Src/wptRegistry.cpp:204
 msgid "WinPT WARNING"
 msgstr "WinPT WARNUNG"
 
-#: Src/wptRegistry.cpp:216
+#: Src/wptRegistry.cpp:205
 #, c-format
 msgid ""
 "It seems there was already a '%s' file type registered by another "
@@ -4443,11 +4377,11 @@
 "Do you want to overwrite it?"
 msgstr ""
 "Der Dateityp '%s' scheint mit einer anderen Anwendung verknüpft zu sein.\n"
-"Überschreiben?"
+"Vorhandenen Eintrag überschreiben?"
 
-#: Src/wptRegistry.cpp:599
+#: Src/wptRegistry.cpp:591
 msgid "Could not write to Registry."
-msgstr "Konnte Werte in Registry nicht speichern"
+msgstr "Konnte Werte in der Registrierung nicht speichern."
 
 #: Src/wptSigList.cpp:52
 msgid "Valid"
@@ -4457,6 +4391,15 @@
 msgid "Expiration"
 msgstr "Ablauf"
 
+#: Src/wptSigTreeDlg.cpp:165
+#, c-format
+msgid "Signature Tree for \"%s\""
+msgstr "Signaturliste für \"%s\""
+
+#: Src/wptSigTreeDlg.cpp:167
+msgid "Edit..."
+msgstr "Edit..."
+
 #: Src/wptSymEnc.cpp:72 Src/wptSymEnc.cpp:88
 msgid "Symmetric Encryption"
 msgstr "Symmetrisch verschlüsseln"
@@ -4477,11 +4420,72 @@
 msgid "Signed"
 msgstr "Signiert"
 
-#: Src/wptSigTreeDlg.cpp:116
-#, c-format
-msgid "Signature Tree for \"%s\""
-msgstr "Signaturliste für \"%s\""
+#~ msgid "Could not execute Cryptdisk Server."
+#~ msgstr "Konnte Cryptdisk Server nicht starten."
 
-#: Src/wptSigTreeDlg.cpp:118
-msgid "Edit..."
-msgstr "Edit..."
+#~ msgid "Cryptdisk Error"
+#~ msgstr "Cryptdisk Fehler"
+
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:413
+#~ msgid ""
+#~ "The Cryptdisk service seems to be available but it is not started yet.\n"
+#~ "Please start the service and try again."
+#~ msgstr ""
+#~ "Der Cryptdisk Service scheint verfügbar, aber nicht gestartet zu sein.\n"
+#~ "Bitte starten Sie den Service und versuchen es erneut."
+
+#~ msgid "Please enter a name for the image file."
+#~ msgstr "Bitte Dateinamen der Bilddatei eingeben."
+
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:451
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:466
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:472
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:478
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:647
+#~ msgid "Cryptdisk"
+#~ msgstr "Cryptdisk"
+
+#~ msgid ""
+#~ "This volume file already exists.\n"
+#~ "Do you want to overwrite it?"
+#~ msgstr ""
+#~ "Die Volumen-Datei existiert bereits.\n"
+#~ "Überschreiben?"
+
+#~ msgid "Cryptdisk Warning"
+#~ msgstr "Cryptdisk Warnung"
+
+#~ msgid "Please enter the size for the volume"
+#~ msgstr "Bitte Größe des Volumen angeben"
+
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:471
+#~ msgid "There is not enough free disk space to store the volume."
+#~ msgstr "Es ist nicht genügend freier Speicher vorhanden für das Volumen."
+
+#~ msgid "Please enter a passphrase for the volume."
+#~ msgstr "Bitte ein Passwort für das Volumen  eingeben."
+
+#~ msgid "Cannot determine the number of drives."
+#~ msgstr "Die Anzahl der Laufwerke konnte nicht festgestellt werden."
+
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:533
+#~ msgid "Select Crypdisk Volume"
+#~ msgstr "Cryptdisk Volumen auswählen"
+
+#~ msgid "Please enter the name of the image file."
+#~ msgstr "Bitte den Namen der Bilddatei eingeben."
+
+#~ msgid "Please enter a password."
+#~ msgstr "Bitte Passwort eingeben."
+
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:557
+#~ msgid "Image file does not exist or could not be accessed."
+#~ msgstr ""
+#~ "Bilddatei existiert nicht oder es kann nicht darauf zugegriffen werden."
+
+# c:\oss\winpt-gpgme\src\wptCryptdisk.cpp:596
+#~ msgid "Drive %s (ID %d); Size %d MB, Readonly=%s"
+#~ msgstr "Laufwerk %s (ID %d); Größe %d MB, Nur-Lesen=%s"
+
+#~ msgid "Please select one drive to umount."
+#~ msgstr "Bitte wählen Sie ein Laufwerk zum Unmounten aus."

Modified: trunk/README
===================================================================
--- trunk/README	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/README	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,8 +1,6 @@
                         The Windows Privacy Tray
-                             Version 0.5.5
-			     
-			*** WARNING: this file is obsolete ***
 
+
 Index
      1. Notice
      2. Bugs and improvements
@@ -26,12 +24,10 @@
       13.2.4 Sign
       13.2.5 Revoke cert
       13.2.6 Check sigs
-      13.2.7 List trust path
     13.3 Keyserver
      13.3.1 Keyserver searching
      13.3.2 Proxy support
     14. Debug mode
-    15. Agent support
     16. Features of the dialogs
     16. Features of the dialogs
 
@@ -40,16 +36,15 @@
 ---------
 
 This is only a quick guide for WinPT. For the moment the program is its own
-documentation. This is subject to change. Please note, this text needs many
-improvements, because English isn't my native lanuage ;-(. Please feel free
-to send me spelling corrections.
+documentation. This is subject to change.
 
 
 2. Bugs and improvements
 ------------------------
 
 I have tried to thoroughly debug this program, but if you've found a bug,
-please send me a message with a full error description!
+please send me a message with a full error description or go directly
+to http://wald.intevation.org and use the WinPT bug tracking system.
 
 Please include as much detail as possible including OS version, WinPT
 version, and GPG version in use. Please summarize your gpg configuration
@@ -62,11 +57,10 @@
 3. What is WinPT?
 -----------------
 
-WinPT is a tool to protect your privacy! Because I'm NOT a crypto expert,
-I use another program, the GNU Privacy Guard for the cryptographic
-functionality.
+WinPT is a front-end for the GNU Privacy Guard. It just provides
+a convinient interface to GPG while GPG does the actual (cryptographic) work.
 
-GnuPG was written by Werner Koch and is GNU Open Source. GnuPG contains all
+GnuPG was written by Werner Koch and is Free Software. GnuPG contains all
 of the functions WinPT uses for data encrypting and e-signatures and
 key management.
  
@@ -83,23 +77,15 @@
 4. Install
 ----------
 
-First you should install the GPG binary into C:\GNUPG (Version 1.0.5 or
-later.) (If you want to use a directory other than C:\GNUPG you must modify
+First you should install the GPG binary (Version 1.4.x or later.) 
+(If you want to use a directory other than the default you must modify
 the preferences in the WinPT program at Preferences->GPG Prefs.
 
-
-** GPG 1.0.5 is needed for WinPT but because of the security problem
-   with this version, it's recommend to use 1.0.6! **
-
 Next, download the WinPT binary package from the Internet. You can find the
-latest WinPT version at http://www.winpt.org/download.html. Create a
-directory and extract all WinPT releated files.
+latest WinPT version at http://www.winpt.org. Create a directory and 
+extract all WinPT releated files.
 
 
-With the 0.5.0 version of WinPT, all modules are now integrated in
-the main package. So you don't need the wipe-ext.dll or the ldap-ext.dll!
-
-
 4.1 Keyserver config file
 -------------------------
 
@@ -120,13 +106,14 @@
 my OpenPGP public key. If you don't have it, please take a look at
 http://www.winpt.org/twoaday.asc
 
-# gpg --verify WinPT-x.x.x-exe.zip.asc
-# gpg --verify WinPT-x.x.x-src.zip.asc
+# gpg --verify winpt-x.x.x-exe.zip.asc
+# gpg --verify winpt-x.x.x-src.zip.asc
 
 gpg should output that the signature was correct and that the signature
 was created by me.
 
-My key ID is 0xBF3DF9B4: 'Timo Schulz <ts at winpt.org>'.
+My key ID is 0xBF3DF9B4: 'Timo Schulz <twoaday at freakmail.de>' or
+       	     0x27F36D14: 'Timo Schulz (Laptop Key) <twoaday at freakmail.de>
 
 
 6. Native language support
@@ -150,16 +137,7 @@
 
 For the moment, WinPT supports these languages:
 
-    * Italian winpt-it.mo
-    * French winpt-fr.mo
     * German winpt-de.mo
-    * Spanish winpt-es.mo
-    * Russian winpt-ru.mo
-    * Portuguese (Brazilian) winpt-pt_BR.mo
-    * Portuguese winpt-pt_PT.mo
-    * Hungarian winpt-hu.mo
-    * Chinese winpt-zh_CN.mo
-    * Czech winpt-ch.mo
 
 If you are interested in translating WinPT in your native language, please
 let me know :-). It's not much work and you do NOT need to be a developer!
@@ -179,7 +157,6 @@
 General questions (look first at the topic point), can be sent to one of the
 mailing lists. All GnuPG lists are in English.
 
-PGP User list (German) pgp-friends-de at egroups.com
 GPG User list (English) gnupg-users at gnupg.org
 GPG Developer list (English) gnupg-devel at gnupg.org
 
@@ -192,15 +169,9 @@
 
 If you want to get the latest information, reports, or discussions about
 WinPT you can subscribe to one of the WinPT mailing lists. There is a list
-for users and one for developers. Both lists are in English! To subscribe
-send a message to 'majordomo at lcsweb.net' with "subscribe listname" in the
-body.
+for users and one for developers. All lists are in English! To subscribe
+visit http://wald.intevation.org and go to the WinPT project site.
 
-Example: subscribe winpt-name_of_thelist
-
-winpt-dev at lcsweb.net    - The developer list
-winpt-users at lcsweb.net  - The users list
-
 Please, before you send a message to the list take a look at the FAQ
 or the README files. It's possible that your question is already answered
 there!
@@ -221,7 +192,7 @@
 Export Clipboard         CTRL+ALT+x
 Import Clipboard         CTRL+ALT+i
 
-In the event of an error, it's possible that another program already uses
+In case of an error, it's possible that another program already uses
 some of the hotkeys. WinPT will tell you which hotkey wasn't installed properly
 so it's easier to figure out which hotkey caused the problem.
 
@@ -256,16 +227,15 @@
 to use this feature, you only need to set the value to "0".
 
 
-12.Default keyid for signing
+12. Default keyid for signing
 ----------------------------
 
 There are two ways to set the default keyid. The best solution is to
-set the "default-key" entry in the GPG options file. Alternative you can
-also use "encrypt-to" for the default keyid.
+set the "default-key" entry in the GPG options file.
 The second solution is to let WinPT figure out it from the secret key cache,
 the first key in this cache is the default keyid. Warning, with this method
-it's possible that another keyid is chosen (because of the order in which the keyring
-was read!).
+it's possible that another keyid is chosen (because of the order in 
+which the keyring was read!).
 
 
 13. Commands
@@ -320,12 +290,6 @@
 Generate a revocation certificate for the chosen key.
 
 
-13.2.6 List trust path
-----------------------
-
-TODO.
-
-
 13.2.7 Check sigs
 -----------------
 
@@ -388,17 +352,6 @@
 mode for your usual work; it slows down both GPG and WinPT.
 
 
-15. Agent support
------------------
-
-To use the Windows GPG Agent, you must start the process BEFORE running
-WinPT. When there was no error, WinPT runs in a passphrase-less mode. All
-passphrase requests are send to the client. As a result the sign and
-sign & encrypt dialogs contain NO passphrase items! To force WinPT to use
-the internal passphrase routines, you can use the "--no-agent" option on
-the command line.
-
-
 16. Features of the dialogs
 ----------------------------
 

Modified: trunk/Src/ChangeLog
===================================================================
--- trunk/Src/ChangeLog	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/ChangeLog	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,3 +1,37 @@
+2006-02-27  Timo Schulz  <twoaday at freakmail.de>
+
+	* wptSOCKS.cpp (socks_handshake): New.
+	* wptMainProc.cpp (winpt_main_proc): A dbl-click forces
+	the key manager in teh foreground if possible.
+	* wptHotkey.cpp (hotkey_unregister): Unregister all hotkeys.
+	* wptRegistry.cpp (get_reg_proxy_prefs,
+	set_reg_proxy_prefs): Use directly the proxy context. 
+	Changed all callers.
+	* wptProxySettingsDlg.cpp (init_proxy_protocols): New.
+	(keyserver_proxy_dlg_proc): Use directly the proxy context.
+	* wptKeyserver.cpp (kserver_connect): Better proxy support.
+	(kserver_send_request, kserver_recvkey_request): Likewise.
+	* wptKeyserverDlg.cpp (name_from_proto): New.
+	(set_proxy): Adjusted for the new code.
+	
+2006-02-26  Timo Schulz  <twoaday at freakmail.de>
+
+	* WinPT.cpp (WinMain): Removed hotkey_modify() code.
+	* wptKeyEditDlgs.cpp (is_idea_protect_algo): Better support
+	v4 keys.
+	* wptKeyserver.cpp (sock_getline): Skip '\r'.
+	(base64_encode): Remove @maxlen param. Changed all callers.
+	(finger_readline): Removed.
+	(finger_recvkey): Use internal functions.
+	* wptSigTreeDlg.cpp (sigtree_dlg_proc): Support a context menu.
+	(show_sigprops): New.
+	(create_popup): New.
+	* wptPreferenceDlg.cpp (prefs_dlg_proc): Cache amount is
+	now in minutes.
+	* wptRegistry.cpp (get_winpt_reg_prefs, set_winpt_reg_prefs):
+	Change code to use hotkeys directly.
+	* wptHotkeys.cpp (hotkeys_enable, hotkey_disable): Likewise.
+	
 2006-02-24  Timo Schulz  <ts at g10code.de>
 
 	* wptGPG.cpp (set_gnupg_default_key): Allow to remove entry

Modified: trunk/Src/Makefile.am
===================================================================
--- trunk/Src/Makefile.am	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/Makefile.am	2006-03-06 14:41:58 UTC (rev 180)
@@ -119,7 +119,8 @@
 	wptClipboard.cpp \
 	wptGPGMEData.cpp \
 	wptGroupManager.cpp \
-	wptGPGMEWrapper.cpp
+	wptGPGMEWrapper.cpp \
+	wptSOCKS.cpp
 
 
 WinPT_SOURCES = $(resource_files) $(dialog_files) $(code_files)

Modified: trunk/Src/WinPT-en.rc
===================================================================
--- trunk/Src/WinPT-en.rc	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/WinPT-en.rc	2006-03-06 14:41:58 UTC (rev 180)
@@ -624,7 +624,7 @@
     LTEXT           "Word wrap cleartext &signatures at column",
                     IDC_PREFS_WWINFO,13,56,139,8
     EDITTEXT        IDC_PREFS_WORDWRAP,155,55,14,13
-    LTEXT           "Cache &passphrases for 'n' seconds",IDC_PREFS_CACHEINF,
+    LTEXT           "Cache &passphrases for 'n' minutes",IDC_PREFS_CACHEINF,
                     12,73,117,8
     EDITTEXT        IDC_PREFS_CACHETIME,155,71,25,13
     LTEXT           "(CTRL+ALT+F to clear cache)",IDC_PREFS_CACHEHINT,182,73,
@@ -864,25 +864,28 @@
     PUSHBUTTON      "&Load",IDC_TEXT_FILE,255,187,51,14
 END
 
-IDD_WINPT_KEYSERVER_PROXY DIALOG DISCARDABLE  0, 0, 182, 122
+IDD_WINPT_KEYSERVER_PROXY DIALOG DISCARDABLE  0, 0, 182, 138
 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 CAPTION "Proxy Settings"
 FONT 8, "MS Sans Serif"
 BEGIN
-    LTEXT           "Proxy host name or IP address",IDC_PROXY_HOSTINF,6,9,
+    LTEXT           "Proxy type",IDC_PROXY_PROTOINF,6,7,54,11
+    COMBOBOX        IDC_PROXY_PROTO,62,4,100,46,CBS_DROPDOWNLIST | 
+                    WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Proxy host name or IP address",IDC_PROXY_HOSTINF,6,26,
                     128,8
-    EDITTEXT        IDC_PROXY_HOST,6,19,131,12,ES_AUTOHSCROLL
-    LTEXT           "Port",IDC_PROXY_PORTINF,143,9,29,8
-    EDITTEXT        IDC_PROXY_PORT,142,19,32,12
+    EDITTEXT        IDC_PROXY_HOST,6,36,131,12,ES_AUTOHSCROLL
+    LTEXT           "Port",IDC_PROXY_PORTINF,143,26,29,8
+    EDITTEXT        IDC_PROXY_PORT,142,36,32,12
     CONTROL         "Server requires authentication",IDC_PROXY_AUTH,"Button",
-                    BS_AUTOCHECKBOX | WS_TABSTOP,6,35,142,10
-    GROUPBOX        "Authentication",IDC_STATIC,6,53,171,40
-    LTEXT           "User name",IDC_PROXY_USERINF,14,65,76,8
-    EDITTEXT        IDC_PROXY_USER,14,75,88,12,ES_AUTOHSCROLL
-    LTEXT           "Password",IDC_PROXY_PWDINF,110,64,51,9
-    EDITTEXT        IDC_PROXY_PWD,110,75,62,12,ES_PASSWORD | ES_AUTOHSCROLL
-    DEFPUSHBUTTON   "&OK",IDOK,73,102,50,14
-    PUSHBUTTON      "&Cancel",IDCANCEL,126,102,50,14
+                    BS_AUTOCHECKBOX | WS_TABSTOP,6,52,142,10
+    GROUPBOX        "Authentication",IDC_PROXY_AUTHINF,6,70,171,40
+    LTEXT           "User name",IDC_PROXY_USERINF,14,82,76,8
+    EDITTEXT        IDC_PROXY_USER,14,92,88,12,ES_AUTOHSCROLL
+    LTEXT           "Password",IDC_PROXY_PWDINF,110,81,51,9
+    EDITTEXT        IDC_PROXY_PWD,110,92,62,12,ES_PASSWORD | ES_AUTOHSCROLL
+    DEFPUSHBUTTON   "&OK",IDOK,73,119,50,14
+    PUSHBUTTON      "&Cancel",IDCANCEL,126,119,50,14
 END
 
 IDD_WINPT_FILE_STAT DIALOG DISCARDABLE  0, 0, 309, 133
@@ -1686,7 +1689,7 @@
         LEFTMARGIN, 2
         RIGHTMARGIN, 178
         TOPMARGIN, 3
-        BOTTOMMARGIN, 118
+        BOTTOMMARGIN, 134
     END
 
     IDD_WINPT_FILE_STAT, DIALOG
@@ -1931,8 +1934,8 @@
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0,11,8,0
- PRODUCTVERSION 0,11,8,0
+ FILEVERSION 0,11,9,0
+ PRODUCTVERSION 0,11,9,0
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -1950,14 +1953,14 @@
             VALUE "Comments", "This is free software under the terms of the GNU GPL v2\0"
             VALUE "CompanyName", "\0"
             VALUE "FileDescription", "Windows Privacy Tray (WinPT)\0"
-            VALUE "FileVersion", "0.11.8\0"
+            VALUE "FileVersion", "0.11.9\0"
             VALUE "InternalName", "WinPT\0"
             VALUE "LegalCopyright", " Copyright (C) 2006 Timo Schulz\0"
             VALUE "LegalTrademarks", "\0"
             VALUE "OriginalFilename", "WinPT.exe\0"
             VALUE "PrivateBuild", "\0"
             VALUE "ProductName", "Windows Privacy Tray\0"
-            VALUE "ProductVersion", "0.11.8\0"
+            VALUE "ProductVersion", "0.11.9\0"
             VALUE "SpecialBuild", "\0"
         END
     END

Modified: trunk/Src/WinPT.cpp
===================================================================
--- trunk/Src/WinPT.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/WinPT.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -469,8 +469,6 @@
 	reg_prefs.use_tmpfiles = 1; /* default */
 	reg_prefs.fm.progress = 0; /* XXX: fix the bug and enable it again */
 	get_reg_winpt_prefs (&reg_prefs);
-	if (!reg_prefs.no_hotkeys)
-	    hotkeys_modify ();
 	gnupg_load_config ();
     }
 

Modified: trunk/Src/resource.h
===================================================================
--- trunk/Src/resource.h	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/resource.h	2006-03-06 14:41:58 UTC (rev 180)
@@ -638,6 +638,9 @@
 #define IDC_VKEYSIG_TREE                1512
 #define IDC_VKEYSIG_EDIT                1514
 #define IDC_KEYSIGN_HIDE                1515
+#define IDC_PROXY_PROTOINF              1516
+#define IDC_PROXY_PROTO                 1517
+#define IDC_PROXY_AUTHINF               1518
 #define ID_GPG_ENCRYPT                  40003
 #define ID_GPG_DECRYPT                  40004
 #define ID_GPG_SIGN                     40005
@@ -818,7 +821,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        245
 #define _APS_NEXT_COMMAND_VALUE         40186
-#define _APS_NEXT_CONTROL_VALUE         1516
+#define _APS_NEXT_CONTROL_VALUE         1519
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Modified: trunk/Src/wptGPGUtil.cpp
===================================================================
--- trunk/Src/wptGPGUtil.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptGPGUtil.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -773,6 +773,9 @@
 	case PKT_SECRET_KEY:
 	    quit = 1;
 	    break;
+	    
+	default:
+	    break;
 	}
 	gpg_free_packet (pkt);
 	gpg_init_packet (pkt);

Modified: trunk/Src/wptHotkey.cpp
===================================================================
--- trunk/Src/wptHotkey.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptHotkey.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,5 +1,5 @@
 /* wptHotkey.cpp - Systemwide hotkeys
- *	Copyright (C) 2001, 2002, 2003 Timo Schulz
+ *	Copyright (C) 2001, 2002, 2003, 2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -31,9 +31,29 @@
 #include "wptNLS.h"
 #include "wptTypes.h"
 
+
+/* List of all predefined hotkeys. */
+hotkey_s wpt_hotkeys[]  = {
+    /* ALT+CTRL+ */
+    {"ClipEncrypt", 1, WPT_CLIP_ENCRYPT_ID,           1, 0, 0x45}, /* E */
+    {"ClipDecrypt", 1, WPT_CLIP_DECRYPT_VERIFY_ID,    1, 0, 0x44}, /* D */
+    {"ClipSign", 1, WPT_CLIP_SIGN_ID,		      1, 0, 0x53}, /* S */
+    {"ClipSignEnc", 1, WPT_CLIP_SIGN_ENCRYPT_ID,      1, 0, 0x42}, /* B */
+    /* ALT+SHIFT+ */
+    {"CwsEncrypt", 1, WPT_CURRWND_ENCRYPT_ID,        0, 1, 0x45}, /* E */
+    {"CwsDecrypt", 1, WPT_CURRWND_DECRYPT_VERIFY_ID, 0, 1, 0x44}, /* D */
+    {"CwsSign", 1, WPT_CURRWND_SIGN_ID,              0, 1, 0x53}, /* S */
+    {"CwsSignEnc", 1, WPT_CURRWND_SIGN_ENCRYPT_ID,   0, 1, 0x42}, /* B */
+    /* Agent ALT+CTRL+ */
+    {"AgentForget", 1, WPT_AGENT_FORGET_ID,           1, 0, 0x46}, /* F */
+    {0}
+};
+
+
+/* Global error variable. */
 static int err_hotkey = 0;
 
-const char *
+const char*
 hotkeys_strerror (void)
 {
     switch (err_hotkey) {
@@ -52,6 +72,7 @@
 }
 
 
+/* Register all enabled hotkeys. */
 int 
 hotkeys_register (HWND wnd)
 {
@@ -69,35 +90,31 @@
     }
 
     return rc;
-} /* hotkeys_register */
+}
 
 
+/* Unregister all hotkeys. */
 int 
 hotkeys_unregister (HWND wnd)
 {
-    int j = 0, rc = 0;	
+    int j = 0;
 
-    for (j=0; wpt_hotkeys[j].id != 0; j++) {
-	if (wpt_hotkeys[j].enabled) {
-	    rc = hotkey_unregister_single (wnd, &wpt_hotkeys[j]);
-	    if (rc)
-		break;
-	}
-    }
+    for (j=0; wpt_hotkeys[j].id != 0; j++)
+	hotkey_unregister_single (wnd, &wpt_hotkeys[j]);
 
-    return rc;
-} /* hotkeys_unregister */
+    return 0;
+}
 
 
+/* Register a single hotkey @hk. */
 int
 hotkey_register_single (HWND wnd, hotkey_t hk)
 {
-    int keymod=0;
     int rc;
+    int keymod = 0;
 
     if (!hk->enabled)
 	return 0;
-	
     if (hk->alt_ctrl)
 	keymod = MOD_CONTROL | MOD_ALT;
     else if (hk->alt_shift)
@@ -107,43 +124,32 @@
     if (!rc)
 	return WPTERR_HOTKEY;
     return 0;
-} /* hotkey_register_single */
+}
 
+
+/* Unregister a single hotkey @hk. */
 int
 hotkey_unregister_single (HWND wnd, hotkey_t hk)
 {
-    int rc = UnregisterHotKey (wnd, hk->id);
+    int rc = 0;
+
+    rc = UnregisterHotKey (wnd, hk->id);
     return rc==0? WPTERR_HOTKEY: 0;
-} /* hotkey_unregister_single */
+}
 
 
 void
-hotkeys_modify (void)
+hotkey_disable (hotkey_t hk)
 {
-    int i;
+    hk->enabled = 0;
+}
 
-    for (i = 0; wpt_hotkeys[i].id; i++) {
-	if( reg_hotkeys[i].enabled ) {
-	    wpt_hotkeys[i].key = reg_hotkeys[i].key[0];
-	    wpt_hotkeys[i].enabled = 1;
-	}	
-    }
-} /* hotkeys_modify */
 
-
 void
-hotkey_disable (reg_hotkey_t rhk)
+hotkey_enable (hotkey_t hk, const char *key)
 {
-    strcpy (rhk->key, " ");
-    rhk->enabled = 0;
-} /* hotkey_disable */
-
-
-void
-hotkey_enable (reg_hotkey_t rhk, const char * key)
-{
     if (strlen (key) > 2)
 	BUG (0);
-    strcpy (rhk->key, key);
-    rhk->enabled = 1;
-} /* hotkey_enable */
+    hk->key = *key;
+    hk->enabled = 1;
+}

Modified: trunk/Src/wptKeyEditDlgs.cpp
===================================================================
--- trunk/Src/wptKeyEditDlgs.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptKeyEditDlgs.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -352,7 +352,7 @@
 
 	case IDC_ADDPHOTO_SELFILE:
 	    s = get_fileopen_dlg (dlg, _("Select Image File"), 
-				  _("JPEG Files (*.jpg, *.jpeg)\0*.jpg;*.jpeg\0\0"),
+				  "JPEG Files (*.jpg, *.jpeg)\0*.jpg;*.jpeg\0\0",
 				  NULL);
 	    if (s && !is_jpg_file (s)) {
 		log_box (_("Add Photo"), MB_ERR, 
@@ -892,7 +892,8 @@
 keyedit_add_photo (winpt_key_t k, HWND dlg)
 {
     if (!k->key_pair) {
-	msg_box (dlg, _("There is no secret key available!"), _("Add Photo"), MB_ERR);
+	msg_box (dlg, _("There is no secret key available!"), 
+		 _("Add Photo"), MB_ERR);
         return FALSE;
     }
     DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_KEYEDIT_ADDPHOTO, dlg,
@@ -934,8 +935,10 @@
 }
 
 
+/* Check if the given key is supposed to have IDEA
+   for secret key protection. */
 static int
-is_idea_protect_algo (const char * keyid)
+is_idea_protect_algo (const char *keyid)
 {
     winpt_key_s k;
     const unsigned char *sym_prefs;
@@ -943,8 +946,10 @@
 
     memset (&k, 0, sizeof (k));
     if (winpt_get_pubkey (keyid, &k))
-	BUG (NULL);
+	BUG (0);
     sym_prefs = k.ext->sym_prefs;
+    if (!k.is_v3)
+	return 0;
     if (!sym_prefs)
 	return 1; /* assume that only v3 keys have no symmetric cipher preferences
 		     and thus IDEA is explicit. */
@@ -953,7 +958,7 @@
     if ((n == 0 || n == 1) && *sym_prefs == 0x01)
 	return 1;
     return 0;
-} /* is_idea_protect_algo */
+}
 
 
 BOOL
@@ -971,10 +976,10 @@
         return FALSE;
     }
 
-    if( !idea_available && is_idea_protect_algo( k->keyid ) ) {
-	msg_box( dlg, _("Cannot change passphrase because the key\n"
-	                "is protected with the IDEA encryption algorithm."), 
-			_("Key Edit"), MB_ERR );
+    if (!idea_available && is_idea_protect_algo (k->keyid)) {
+	msg_box (dlg, _("Cannot change passphrase because the key\n"
+	                "is protected with the IDEA encryption algorithm."),
+			_("Key Edit"), MB_ERR);
 	return FALSE;
     }
 

Modified: trunk/Src/wptKeyserver.cpp
===================================================================
--- trunk/Src/wptKeyserver.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptKeyserver.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -43,7 +43,7 @@
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
 keyserver server[MAX_KEYSERVERS] = {0};
-static keyserver_proxy_ctx proxy = {0};
+keyserver_proxy_s proxy = {0};
 static const char *server_list[] = {
     "hkp://wwwkeys.nl.pgp.net",
     "hkp://wwwkeys.pl.pgp.net",
@@ -71,36 +71,46 @@
 WORD default_keyserver_port = 0;
 
 
-/* Basic64 encode the input @inputstr to @outputstr. */
+/* Basic64 encode the input @inbuf to @outbuf. */
 static void
-base64_encode (const char *inputstr, char *outputstr, int maxlen)
+base64_encode (const char *inbuf, char *outbuf)
 {	
-    int index = 0, temp = 0, res = 0, i = 0, inputlen = 0, len = 0;
+    int index = 0, temp = 0, res = 0;
+    int i = 0, inputlen = 0, len = 0;
     
-    /* XXX: check len < maxlen. */
-    inputlen = strlen (inputstr);
-    for (i = 0; i <inputlen; i++) {
+    inputlen = strlen (inbuf);
+    for (i = 0; i < inputlen; i++) {
 	res = temp;
-	res = (res << 8) | (inputstr[i] & 0xFF);
+	res = (res << 8) | (inbuf[i] & 0xFF);
 	switch (index++) {
-	case 0: outputstr[len++] = base64code[res >> 2 & 0x3F]; res &= 0x3; break;
-	case 1:	outputstr[len++] = base64code[res >> 4 & 0x3F]; res &= 0xF; break;
-	case 2:	outputstr[len++] = base64code[res >> 6 & 0x3F];
-	        outputstr[len++] = base64code[res & 0x3F]; res = index = 0; break;
+	case 0: 
+	    outbuf[len++] = base64code[res >> 2 & 0x3F]; 
+	    res &= 0x3; 
+	    break;
+	case 1:	
+	    outbuf[len++] = base64code[res >> 4 & 0x3F]; 
+	    res &= 0xF; 
+	    break;
+	case 2:
+	    outbuf[len++] = base64code[res >> 6 & 0x3F];
+	    outbuf[len++] = base64code[res & 0x3F]; 
+	    res = index = 0; 
+	    break;
 	}
 	temp = res;
     }
     
-    switch (index) {
-    case 0: break;        
-    case 2: outputstr[len++] = base64code[temp << 2 & 0x3F];	
-	    outputstr[len++] = '='; break;        
-    case 1: outputstr[len++] = base64code[temp << 4 & 0x3F];	
-	    outputstr[len++] = '=';
-	    outputstr[len++] = '=';
+    if (index == 2) {      
+	outbuf[len++] = base64code[temp << 2 & 0x3F];	
+	outbuf[len++] = '=';
     }
-    
-    outputstr[len] = '\0';
+    else if (index == 1) {
+	outbuf[len++] = base64code[temp << 4 & 0x3F];
+	outbuf[len++] = '=';
+	outbuf[len++] = '=';
+    }
+
+    outbuf[len] = '\0';
 }
 
 
@@ -155,19 +165,20 @@
 sock_getline (int fd, char *buf, int buflen, int *nbytes)
 {
     char ch;
-    int count = 0;	
+    int nread = 0;	
     
     if (nbytes)
 	*nbytes = 0;
     *buf = 0;
     while (recv (fd, &ch, 1, 0) > 0) {
 	*buf++ = ch;
-	count++;
-	/* XXX: remove the '\r' */
-	if (ch == '\n' || count == (buflen - 1)) {
+	nread++;
+	if (ch == '\r')
+	    continue; /* remove this char. */
+	if (ch == '\n' || nread == (buflen - 1)) {
 	    *buf = 0;
 	    if (nbytes)
-		*nbytes = count;
+		*nbytes = nread;
 	    return 0;
 	}
     }
@@ -286,7 +297,7 @@
 	    return SOCKET_ERROR;
 	}
 	nleft -= nwritten;
-	buf += nwritten;	
+	buf += nwritten;
     }
 
     return 0;
@@ -340,6 +351,7 @@
 	if (server[i].used)
 	    free_if_alloc (server[i].name);
     }
+    kserver_proxy_release (&proxy);
     WSACleanup ();
 }
 
@@ -411,7 +423,7 @@
 /* If the request contains the keyid, it have to be
    always postfix with '0x'+keyid. This code checks
    if the keyid is a decimal value and if so if it contains
-  the '0x'. If not it is inserted. */
+   the '0x'. If not it is inserted. */
 const char*
 kserver_check_keyid (const char *keyid)
 {	
@@ -430,7 +442,7 @@
 
 /* Update the keyserver proxy user. */
 static void
-kserver_update_proxyuser (const char *proxy_user, const char *proxy_pass)
+update_proxy_user (const char *proxy_user, const char *proxy_pass)
 {
     char t[257]; /* user:pass = 127+1+127+1 = 257 */
     int n = 0;
@@ -441,7 +453,7 @@
     if (!proxy.base64_user)
 	BUG (0);
     _snprintf (t, sizeof (t)-1, "%s:%s", proxy_user, proxy_pass);
-    base64_encode (t, proxy.base64_user, 257);
+    base64_encode (t, proxy.base64_user);
     free_if_alloc (proxy.user);
     free_if_alloc (proxy.pass);
     proxy.user = m_strdup (proxy_user);
@@ -479,7 +491,7 @@
 
 /* Get the port number from the given URL. */
 static int
-proto_from_URL (const char * buf)
+proto_from_URL (const char *buf)
 {
     if (strstr( buf, "ldap"))
 	return KSPROTO_LDAP;
@@ -538,7 +550,8 @@
 	return -1;
     }
 
-    fprintf (fp, "# do NOT manually modify this file, it will be generated automatically!!\r\n");
+    fprintf (fp, "# do NOT manually modify this file, it will be "
+		 "generated automatically!!\r\n");
     for (pos = 0; pos < MAX_KEYSERVERS; pos++) {
 	if (!server[pos].used)
 	    continue;
@@ -555,7 +568,7 @@
 {
     struct stat statbuf;
     FILE *fp;
-    char buf[1024], * s, * p;
+    char buf[1024], *s, *p;
     char *user = NULL, *pass = NULL;    
     int no_config=0, chk_pos=0;
     int pos;
@@ -574,9 +587,9 @@
 	}
 	no_config=1;
     }
-    get_reg_proxy_prefs (&proxy.host, &proxy.port, &user, &pass);
+    get_reg_proxy_prefs (&proxy);
     if (user && pass)
-	kserver_update_proxyuser (user, pass);	
+	update_proxy_user (user, pass);	
     else if (user && !pass || !user && pass) {
 	msg_box (NULL, _("Invalid proxy configuration."
 			 "You need to set a user and a password"
@@ -612,7 +625,7 @@
 			     _("Keyserver Error"), MB_ERR);
 	    continue;
 	}
-	chk_pos=6;
+	chk_pos = 6;
 	if (strstr (s, "finger"))
 	    chk_pos = 10;
 	p = strchr (s+chk_pos, ':');
@@ -641,7 +654,8 @@
     if (fp)
 	fclose (fp);
     if (!pos) {
-	/* only issue an error if the config file exist but it has no valid entries. */
+	/* only issue an error if the config file exist but 
+	   it has no valid entries. */
 	keyserver_set_default (NULL, HKP_PORT);
 	if (!no_config)
 	    return WPTERR_CONFIG_FILE;
@@ -653,31 +667,6 @@
 }
 
 
-/* Return the proxy host and port if available. Null otherwise. */
-const char*
-kserver_get_proxy (int *r_port)
-{
-    if (proxy.host) {
-	if (r_port)
-	    *r_port = proxy.port;
-	return proxy.host;
-    }
-    return NULL;
-}
-
-
-/* Return a requested item from the proxy environment. */
-const char*
-kserver_get_proxy_info (int id)
-{
-    switch (id) {   
-    case PROXY_USER: return proxy.user;
-    case PROXY_PASS: return proxy.pass;
-    }
-    return NULL;
-}
-
-
 /* Connect to the keyserver @hostname (port @port).
    Return value: 0 on success */
 int
@@ -728,6 +717,14 @@
 	return WPTERR_WINSOCK_CONNECT;
     }
 
+    if (proxy.proto != PROXY_PROTO_HTTP) {
+	rc = socks_handshake (&proxy, fd, hostname, port);
+	if (rc) {
+	    closesocket (fd);
+	    return WPTERR_GENERAL; /* XXX: use better code. */
+	}
+    }
+
     if (conn_fd)
 	*conn_fd = fd;
     WSASetLastError (0);
@@ -799,7 +796,7 @@
         return NULL;
     }
     
-    if (proxy.user) {
+    if (proxy.user && proxy.proto == PROXY_PROTO_HTTP) {
         _snprintf (request, reqlen-1,
                    "POST http://%s:%d/pks/add HTTP/1.0\r\n"
                    "Referer: \r\n"
@@ -854,13 +851,13 @@
     if (!request)
 	BUG (0);
     
-    if (proxy.host && proxy.user) {
+    if (proxy.host && proxy.user && proxy.proto == PROXY_PROTO_HTTP) {
 	_snprintf (request, 300,
 	    "GET http://%s:%d/pks/lookup?op=get&search=%s HTTP/1.0\r\n"
 	    "Proxy-Authorization: Basic %s\r\n\r\n",
 	    skip_type_prefix (hostname), port, keyid, proxy.base64_user);
     }
-    else if (proxy.host) {
+    else if (proxy.host && proxy.proto == PROXY_PROTO_HTTP) {
 	_snprintf (request, 300,
 	    "GET http://%s:%d/pks/lookup?op=get&search=%s HTTP/1.0\r\n\r\n",
 	    skip_type_prefix (hostname), port, keyid);
@@ -990,13 +987,13 @@
     if (!request)
 	BUG (0);
     
-    if (proxy.host && proxy.user) {
+    if (proxy.host && proxy.user && proxy.proto == PROXY_PROTO_HTTP) {
 	_snprintf (request, n,
 	    "GET http://%s:%d/pks/lookup?op=index&search=%s HTTP/1.0\r\n"
 	    "Proxy-Authorization: Basic %s\r\n\r\n",
 	    skip_type_prefix (hostname), port, enc_keyid, proxy.base64_user);
     }    
-    else if (proxy.host) {
+    else if (proxy.host && proxy.proto == PROXY_PROTO_HTTP) {
 	_snprintf (request, n,
 	    "GET http://%s:%d/pks/lookup?op=index&search=%s HTTP/1.0\r\n\r\n",
 	    skip_type_prefix (hostname), port, enc_keyid);
@@ -1145,25 +1142,9 @@
 }
 
 
-/* Replace all current proxy items with the items
-   from the context @ctx. */
-void
-kserver_change_proxy (keyserver_proxy_ctx *ctx)
-{    
-    proxy.port = ctx->port;
-    free_if_alloc (proxy.host);
-    proxy.host = ctx->host? m_strdup (ctx->host) : NULL;
-    free_if_alloc (proxy.pass);
-    proxy.pass = ctx->pass? m_strdup (ctx->pass) : NULL;
-    free_if_alloc (proxy.user);
-    proxy.user = ctx->user? m_strdup (ctx->user) : NULL;
-    set_reg_proxy_prefs (proxy.host, proxy.port, proxy.user, proxy.pass);
-}
-
-
 /* Release mbmers in the proxy context @ctx. */
 void
-proxy_release (keyserver_proxy_ctx *ctx)
+kserver_proxy_release (keyserver_proxy_t ctx)
 {
     free_if_alloc (ctx->host);
     free_if_alloc (ctx->pass);
@@ -1297,66 +1278,27 @@
 }
 
 
-static int
-finger_readline (int fd, char *buf, int nbytes)
-{
-    char c = 0;
-    int n, pos = 0;
-    
-    while (nbytes > 0) {
-        n = recv (fd, &c, 1, 0);
-        if (n <= 0)
-            break;
-        if (c == '\n')
-            break;
-        buf[pos++] = c;
-        nbytes--;
-    }
-    if (nbytes > 0)
-        buf[pos++] = '\0';
-    if (n <= 0)
-        pos = n;
-    return pos;
-}
-
-
 /* Receive an key via FINGER from host @host with the user @user.
    On success @key contains the key. */
 int
 finger_recvkey (const char *host, const char *user, char *key, int maxkeylen)
 {
-    struct hostent * hp;
-    struct sockaddr_in saddr;
     char buf[128];
     int fd, nread;
     int start_key = 0;
     int rc=0;
 
-    fd = socket (PF_INET, SOCK_STREAM, 0);
-    if (fd == -1)
-        return WPTERR_WINSOCK_SOCKET;
-    hp = gethostbyname (skip_type_prefix (host));
-    if (!hp) {
-	closesocket (fd);
-        return WPTERR_WINSOCK_RESOLVE;
-    }
+    rc = kserver_connect (host, FINGER_PORT, &fd);
+    if (rc)
+	return rc;
 
-    memset (&saddr, 0, sizeof (saddr));
-    saddr.sin_family = AF_INET;
-    saddr.sin_port = htons (FINGER_PORT);
-    saddr.sin_addr = *(struct in_addr *)hp->h_addr;
-    if (connect (fd, (struct sockaddr *)&saddr, sizeof (saddr))) {
-        closesocket (fd);
-        return WPTERR_WINSOCK_CONNECT;
-    }
-    send (fd, user, strlen (user), 0);
-    send (fd, "\r\n", 2, 0);
+    sock_write (fd, user, strlen (user));
+    sock_write (fd, "\r\n", 2);
 
     memset (key, 0, maxkeylen);
     while (maxkeylen > 0) {
-        nread = finger_readline (fd, buf, sizeof (buf)-1);
-        if (nread <= 0)
-            break;
+	if (sock_getline (fd, buf, sizeof (buf), &nread))
+	    break;
 	strcat (buf, "\n");
         if (strstr (buf, "BEGIN PGP PUBLIC KEY BLOCK")) {
             strcat (key, buf);

Modified: trunk/Src/wptKeyserverDlg.cpp
===================================================================
--- trunk/Src/wptKeyserverDlg.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptKeyserverDlg.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -308,22 +308,32 @@
 } /* check_pattern */
 
 
+/* Return human readable name for the proxy protocol. */
+static const char*
+name_from_proto (int proto)
+{
+    const char *s;
+
+    switch (proto) {
+    case PROXY_PROTO_HTTP: s = "HTTP"; break;
+    case PROXY_PROTO_SOCKS5: s =  "SOCKS5"; break;
+    default: s= "HTTP"; break;
+    }
+    return s;
+}
+
+
 static void
 set_proxy (HWND dlg)
 {
-    char proxy[256];
-    int port = 0;
-    
-    strcpy (proxy, "HTTP proxy: ");
-    if (kserver_get_proxy (&port)) {
-        char t[128];
-        const char *http = kserver_get_proxy (&port);
-        _snprintf (t, sizeof (t) - 1, "\"%s:%d\"", http, port);
-        strcat (proxy, t);
-    }
+    char t[512];
+
+    if (proxy.host)
+	_snprintf (t, sizeof (t)-1, "%s proxy: \"%s:%d\"",
+		   name_from_proto (proxy.proto), proxy.host, proxy.port);
     else
-        strcat (proxy, "none");
-    SetDlgItemText (dlg, IDC_KEYSERVER_PROXY, proxy);
+        strcpy (t, "Proxy: none");
+    SetDlgItemText (dlg, IDC_KEYSERVER_PROXY, t);
 }
 
 

Modified: trunk/Src/wptMainProc.cpp
===================================================================
--- trunk/Src/wptMainProc.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptMainProc.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -554,6 +554,8 @@
 	    wnd = FindWindow (NULL, _("Key Manager"));
 	    if (wnd && IsIconic (wnd))
 		ShowWindow (wnd, SW_RESTORE);
+	    if (wnd)
+		SetForegroundWindow (wnd);
             param = 0;
             if (cmd)
                 param = (LPARAM)cmd;

Modified: trunk/Src/wptPreferencesDlg.cpp
===================================================================
--- trunk/Src/wptPreferencesDlg.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptPreferencesDlg.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,5 +1,5 @@
 /* wptPreferencesDlg.cpp - Dialog for the preferences
- *	Copyright (C) 2001, 2002, 2003, 2005 Timo Schulz
+ *	Copyright (C) 2001, 2002, 2003, 2005, 2006 Timo Schulz
  *
  * This file is part of WinPT.
  *
@@ -43,8 +43,8 @@
 static int hotkeys[] = {
     IDC_PREFS_CLIP_ENCRYPT,
     IDC_PREFS_CLIP_DECRYPT_VERIFY,
-    IDC_PREFS_CLIP_SIGN,
     IDC_PREFS_CLIP_SIGNENC,
+    IDC_PREFS_CLIP_SIGN,    
     IDC_PREFS_CWS_ENCRYPT,
     IDC_PREFS_CWS_DECRYPT_VERIFY,
     IDC_PREFS_CWS_SIGN,
@@ -55,7 +55,7 @@
 
 /* Check that the given hotkey is in A..Z or a..z. */
 static int
-check_hotkey (char * key)
+check_hotkey (char *key)
 {
     if (*key >= 'A' && *key <= 'Z')
         return 1;
@@ -122,7 +122,7 @@
 	{IDC_PREFS_KEYLISTINF, _("Select &key list mode")},
 	{IDC_PREFS_WIPEINF, _("Select &wipe mode")},
 	{IDC_PREFS_KSINF, _("Keyserver &config")},
-	{IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' seconds")},
+	{IDC_PREFS_CACHEINF, _("Cache &passphrases for 'n' minutes")},
 	{IDC_PREFS_CACHEHINT, _("(CTRL+ALT+F to clear the cache)")},
 	{IDC_PREFS_ALLOPTINF, _("General options")},
 	{IDC_PREFS_CLIPINF, _("Clipboard hotkeys")},
@@ -134,15 +134,20 @@
     int i;
 
     gettext_localize_dialog (dlg, prefs, _("WinPT Preferences"));
-    SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time, TRUE);
-        
+
+    SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, reg_prefs.cache_time/60, TRUE);
     SetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, reg_prefs.word_wrap, TRUE);
     if (reg_prefs.backup.path)
 	SetDlgItemText (dlg, IDC_PREFS_BAKPATH, reg_prefs.backup.path);
-
 	
-    for (i=0; hotkeys[i]; i++)
-	SetDlgItemText (dlg, hotkeys[i], reg_hotkeys[i].key);     
+    for (i=0; hotkeys[i]; i++) {
+	if (!wpt_hotkeys[i].enabled)
+	    continue;
+	char key[2];
+	key[0] = wpt_hotkeys[i].key;
+	key[1] = 0;
+	SetDlgItemText (dlg, hotkeys[i], key);
+    }
     CheckDlgButton (dlg, IDC_PREFS_DISABLE_HOTKEYS,
 		    reg_prefs.no_hotkeys ? BST_CHECKED : BST_UNCHECKED);
     CheckDlgButton (dlg, IDC_PREFS_SECMODE,
@@ -177,7 +182,7 @@
 {
     int rc;
     int i;
-    char t[2];
+    char t[3];
     char path[256], *p;
     HWND cb;
     
@@ -192,9 +197,9 @@
         return FALSE;
         
     case WM_COMMAND:
-        switch( HIWORD(wparam) ) {
+        switch (HIWORD (wparam)) {
         case BN_CLICKED:
-	    switch( (int)LOWORD( wparam ) ) {
+	    switch ((int)LOWORD (wparam)) {
 	    case IDC_PREFS_DISABLE_HOTKEYS:            
                 reg_prefs.no_hotkeys ^= 1;
                 disable_hotkey_items (dlg, reg_prefs.no_hotkeys);
@@ -235,7 +240,7 @@
 	    }
             break;
         }
-        switch( LOWORD( wparam ) ) {
+        switch (LOWORD (wparam)) {
 	case IDC_PREFS_BAKSELECT:
 	    const char *bpath;
 	    bpath = get_folder_dlg (dlg, _("Select GPG backup path"), NULL);
@@ -244,21 +249,21 @@
 	    break;
 
         case IDOK:
-            rc = GetDlgItemInt( dlg, IDC_PREFS_CACHETIME, NULL, FALSE );
-            if (!rc)
+            rc = GetDlgItemInt (dlg, IDC_PREFS_CACHETIME, NULL, FALSE);
+            if (rc <= 0)
                 reg_prefs.cache_time = 0;
-            else if (rc > 3600) {
-                msg_box( dlg, _("Please enter a value that is between 1-3600.\nIt is not "
-				"a good idea to cache the passphrase more than one hour."),
+            else if (rc > 720) {
+                msg_box( dlg, _("Please enter a value that is between 1-720.\nIt is not "
+				"a good idea to cache the passphrase more than 12 hours."),
 				_("Preferences"), MB_ERR);
 		SetDlgItemInt (dlg, IDC_PREFS_CACHETIME, 0, FALSE);
                 return TRUE;
             }
 	    if (reg_prefs.cache_time != rc)
 		agent_flush_cache ();
-            reg_prefs.cache_time = rc;
+            reg_prefs.cache_time = rc*60;
             rc = GetDlgItemInt (dlg, IDC_PREFS_WORDWRAP, NULL, FALSE);
-	    if (!rc)
+	    if (rc <= 0)
                 reg_prefs.word_wrap = 0;
             else if (rc > 80) {
                 msg_box (dlg, _("Please enter a value between 1-80."), 
@@ -266,15 +271,15 @@
                 return TRUE;
             }
             reg_prefs.word_wrap = rc;
-	    reg_prefs.use_tmpfiles = IsDlgButtonChecked( dlg, IDC_PREFS_SECMODE )? 0 : 1;
-	    reg_prefs.use_viewer = IsDlgButtonChecked( dlg, IDC_PREFS_VIEWER )? 1 : 0;
-	    reg_prefs.backup.mode = IsDlgButtonChecked( dlg, IDC_PREFS_BAKHOME ) ? 1 :
-				    IsDlgButtonChecked( dlg, IDC_PREFS_BAKUSER )? 2 : 0;
-	    if( reg_prefs.backup.mode == 2 ) {
-		if( !GetDlgItemText( dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1 )
-		    || dir_exist_check( path ) ) {
-		    msg_box( dlg, _("The specified backup folder is invalid."), 
-			     _("Preferences"), MB_ERR );
+	    reg_prefs.use_tmpfiles = IsDlgButtonChecked (dlg, IDC_PREFS_SECMODE)? 0 : 1;
+	    reg_prefs.use_viewer = IsDlgButtonChecked (dlg, IDC_PREFS_VIEWER)? 1 : 0;
+	    reg_prefs.backup.mode = IsDlgButtonChecked (dlg, IDC_PREFS_BAKHOME ) ? 1 :
+				    IsDlgButtonChecked (dlg, IDC_PREFS_BAKUSER)? 2 : 0;
+	    if (reg_prefs.backup.mode == 2) {
+		if (!GetDlgItemText (dlg, IDC_PREFS_BAKPATH, path, sizeof (path)-1)
+		    || dir_exist_check (path)) {
+		    msg_box (dlg, _("The specified backup folder is invalid."), 
+			     _("Preferences"), MB_ERR);
 		    return TRUE;
 		}
 		free_if_alloc (reg_prefs.backup.path);
@@ -283,8 +288,8 @@
 		    BUG (0);
 	    }
 
-	    cb = GetDlgItem( dlg, IDC_PREFS_WIPEMODE );
-	    reg_prefs.wipe_mode = SendMessage( cb, CB_GETCURSEL, 0, 0 );
+	    cb = GetDlgItem (dlg, IDC_PREFS_WIPEMODE);
+	    reg_prefs.wipe_mode = SendMessage (cb, CB_GETCURSEL, 0, 0);
             
             if (IsDlgButtonChecked (dlg, IDC_PREFS_DISABLE_HOTKEYS)) {
                 hotkeys_unregister (glob_hwnd);
@@ -292,24 +297,25 @@
             }
             else {
                 reg_prefs.no_hotkeys = 0;
-		for( i = 0; hotkeys[i]; i++ ) {
-		    rc = GetDlgItemText (dlg, hotkeys[i], t, 2);
-		    if( rc && check_hotkey( &t[0] ) )
-			hotkey_enable( &reg_hotkeys[i], t );
+		for (i = 0; hotkeys[i]; i++) {
+		    rc = GetDlgItemText (dlg, hotkeys[i], t, sizeof (t)-1);
+		    if (rc > 0 && check_hotkey (&t[0]))
+			hotkey_enable (&wpt_hotkeys[i], t);
 		    else
-			hotkey_disable( &reg_hotkeys[i] );
+			hotkey_disable (&wpt_hotkeys[i]);
 		}
 		set_reg_entry (HKEY_CURRENT_USER, "Software\\WinPT", "DisableHotkeys", "0");
 		reg_prefs.no_hotkeys = 0;
 	    }
 
-            if ((rc = set_reg_winpt_prefs (&reg_prefs)))
+            rc = set_reg_winpt_prefs (&reg_prefs);
+	    if (rc)
                 msg_box (dlg, winpt_strerror (rc), _("Preferences"), MB_ERR);
             
 	    if (reg_prefs.no_hotkeys == 0) {
 		hotkeys_unregister (glob_hwnd);
-		hotkeys_modify ();
-		if ((rc = hotkeys_register (glob_hwnd)))
+		rc = hotkeys_register (glob_hwnd);
+		if (rc)
 		    msg_box (NULL, winpt_strerror (rc), _("Hotkeys"), MB_ERR);
 	    }
             EndDialog (dlg, TRUE);

Modified: trunk/Src/wptProxySettingsDlg.cpp
===================================================================
--- trunk/Src/wptProxySettingsDlg.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptProxySettingsDlg.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -31,6 +31,7 @@
 #include "wptErrors.h"
 #include "wptNLS.h"
 #include "wptKeyserver.h"
+#include "wptRegistry.h"
 
 
 static int
@@ -49,19 +50,19 @@
 
 
 static int
-read_proxy (HWND dlg, keyserver_proxy_ctx * ctx)
+read_proxy (HWND dlg, keyserver_proxy_t ctx)
 {
     char t[512];
     int ncount = 0, pos = 0;
     
-    ncount = GetDlgItemText( dlg, IDC_PROXY_PWD, t, DIM (t)-1);
-    if( ncount )
-        ctx->pass = strdup( t );
-    ncount = GetDlgItemText( dlg, IDC_PROXY_USER, t, DIM (t)-1);
-    if( ncount )
-        ctx->user = strdup( t );
-    ncount = GetDlgItemText( dlg, IDC_PROXY_HOST, t, DIM (t)-1);
-    if (ncount) {
+    ncount = GetDlgItemText (dlg, IDC_PROXY_PWD, t, DIM (t)-1);
+    if (ncount > 0)
+        ctx->pass = strdup (t);
+    ncount = GetDlgItemText (dlg, IDC_PROXY_USER, t, DIM (t)-1);
+    if (ncount > 0)
+        ctx->user = strdup (t);
+    ncount = GetDlgItemText (dlg, IDC_PROXY_HOST, t, DIM (t)-1);
+    if (ncount > 0) {
 	if (check_IP_or_hostname (t)) {
 	    msg_box (dlg, _("Invalid host/IP address."), _("Proxy Settings"), MB_ERR);
 	    return -1;
@@ -76,13 +77,13 @@
 	return -1;
     }
 
-    ctx->port = GetDlgItemInt( dlg, IDC_PROXY_PORT, NULL, FALSE );
-    if( ctx->port < 0 || ctx->port > 65535 ) {
+    ctx->port = GetDlgItemInt (dlg, IDC_PROXY_PORT, NULL, FALSE);
+    if (ctx->port < 0 || ctx->port > 65535) {
 	msg_box (dlg, _("Please select a value from 0-65535 for the port"), 
 		_("Proxy Settings"), MB_INFO);
 	return -1;
     }
-    if( ctx->user && !ctx->pass || !ctx->user && ctx->pass ) {
+    if (ctx->user && !ctx->pass || !ctx->user && ctx->pass) {
 	msg_box (dlg, _("When you want to use authentication, "
 		        "please fill out both fields."), _("Proxy Settings"), MB_ERR);
 	return -1;
@@ -105,50 +106,59 @@
 }
 
 
+static void
+init_proxy_protocols (HWND dlg)
+{
+    HWND cb = GetDlgItem (dlg, IDC_PROXY_PROTO);
+    combox_add_string (cb, (char *)"HTTP");
+    /*combox_add_string (cb, (char *)"SOCKS5");*/
+    SendMessage (cb, CB_SETCURSEL, (WPARAM)0, 0);
+}
+
+
 /* Dialog box procedure for proxy authentication. */
 BOOL CALLBACK
 keyserver_proxy_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
-{
-    const char *proxy = NULL, *user=NULL, *pass = NULL;
-    int port = 0, auth = 0;   
-    
+{   
+    int auth = 0;
+
     switch (msg) {
     case WM_INITDIALOG:
-        proxy = kserver_get_proxy (&port);
-        if (proxy) {
-            SetDlgItemText( dlg, IDC_PROXY_HOST, proxy );
-            SetDlgItemInt( dlg, IDC_PROXY_PORT, port, FALSE );
-            user = kserver_get_proxy_info (PROXY_USER);
-            if (user) {
-                SetDlgItemText (dlg, IDC_PROXY_USER, user);
+        if (proxy.host != NULL) {
+            SetDlgItemText (dlg, IDC_PROXY_HOST, proxy.host);
+            SetDlgItemInt( dlg, IDC_PROXY_PORT, proxy.port, FALSE );
+            if (proxy.user != NULL) {
+                SetDlgItemText (dlg, IDC_PROXY_USER, proxy.user);
 		CheckDlgButton (dlg, IDC_PROXY_AUTH, BST_CHECKED);
 		auth++;
 	    }
-            pass = kserver_get_proxy_info(PROXY_PASS);
-            if (pass) {
-                SetDlgItemText( dlg, IDC_PROXY_PWD, pass );
+	    if (proxy.pass != NULL) {
+                SetDlgItemText (dlg, IDC_PROXY_PWD, proxy.pass);
 		auth++;
 	    }
         }
-	enable_proxy_auth (dlg, auth);	
+	enable_proxy_auth (dlg, auth);
 	SetDlgItemText (dlg, IDC_PROXY_HOSTINF, _("Proxy host name or IP address"));
 	SetDlgItemText (dlg, IDC_PROXY_AUTH, _("Server requires &authentication"));
 	SetDlgItemText (dlg, IDC_PROXY_USERINF, _("User name"));
 	SetDlgItemText (dlg, IDC_PROXY_PWDINF, _("Password"));
+	SetDlgItemText (dlg, IDC_PROXY_PROTOINF, _("Proxy type"));
+	SetDlgItemText (dlg, IDC_PROXY_AUTHINF, _("Authentication"));
 	SetWindowText (dlg, _("Proxy Settings"));
+	init_proxy_protocols (dlg);
 	center_window (dlg, NULL);
 	SetForegroundWindow (dlg);
         break;
         
     case WM_SYSCOMMAND:
-        if( LOWORD (wparam) == SC_CLOSE)
+        if (LOWORD (wparam) == SC_CLOSE)
             EndDialog (dlg, TRUE);
         return FALSE;
         
     case WM_COMMAND:
 	switch (HIWORD (wparam)) {
         case BN_CLICKED:
-	    switch( (int)LOWORD( wparam ) ) {
+	    switch ((int)LOWORD (wparam)) {
 	    case IDC_PROXY_AUTH:
 		if (IsDlgButtonChecked (dlg, IDC_PROXY_AUTH))
 		    enable_proxy_auth (dlg, 1);
@@ -159,7 +169,7 @@
 	    break;
 	}
 
-        switch( LOWORD( wparam ) ) {
+        switch (LOWORD (wparam)) {
         case IDOK:
 	    if (IsDlgButtonChecked (dlg, IDC_PROXY_AUTH) &&
 		item_get_text_length (dlg, IDC_PROXY_HOST) == 0 &&
@@ -169,12 +179,10 @@
 			 _("Proxy Settings"), MB_WARN);
 		return TRUE;
 	    }
-	    keyserver_proxy_ctx ctx;            
-	    memset (&ctx, 0, sizeof (ctx));
-	    if (read_proxy (dlg, &ctx)) 
+	    kserver_proxy_release (&proxy);
+	    if (read_proxy (dlg, &proxy)) 
 		return FALSE;
-	    kserver_change_proxy (&ctx);
-	    proxy_release (&ctx);
+	    set_reg_proxy_prefs (&proxy);
             EndDialog (dlg, TRUE);
             return TRUE;
             

Modified: trunk/Src/wptRegistry.cpp
===================================================================
--- trunk/Src/wptRegistry.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptRegistry.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -33,6 +33,7 @@
 #include "wptTypes.h"
 #include "wptNLS.h"
 #include "wptVersion.h"
+#include "wptHotkey.h"
 
 #define rc_ok(rc) ((rc) == ERROR_SUCCESS)
 
@@ -45,18 +46,6 @@
     int nicon;
 };
 
-struct reg_hotkey_s reg_hotkeys[] = {
-    {"ClipEncrypt", "", 0},
-    {"ClipDecrypt", "", 0},
-    {"ClipSign",    "", 0},
-    {"ClipSignEnc", "", 0},
-    {"CwsEncrypt",  "", 0},
-    {"CwsDecrypt",  "", 0},
-    {"CwsSign",     "", 0},
-    {"CwsSignEnc",  "", 0},
-    {NULL, "", 0}
-};
-
 /* Global WinPT registry prefereneces. */
 winpt_reg_prefs_s reg_prefs;
 
@@ -584,12 +573,15 @@
 	    goto leave;
     }
 
-    for (i=0; reg_hotkeys[i].reg_entry; i++) {
-	strcpy (buf, " ");
-	if (reg_hotkeys[i].enabled)
-	    strcpy (buf, reg_hotkeys[i].key);
+    for (i=0; wpt_hotkeys[i].name; i++) {
+	if (wpt_hotkeys[i].enabled) {
+	    buf[0] = wpt_hotkeys[i].key;
+	    buf[1] = 0;
+	}
+	else
+	    strcpy (buf, " ");
 	rc = set_reg_key (HKEY_CURRENT_USER, WINPT_REG, 
-			  reg_hotkeys[i].reg_entry, buf);
+			  wpt_hotkeys[i].name, buf);
 	if (rc)
 	    break;
     }
@@ -642,11 +634,6 @@
 	switch (i) {
 	case CFG_CACHETIME:
 	    opt->cache_time = atol (val);
-	    /* We do NOT support passphrase caching for more than an hour.
-	     * Perhaps we should allow it, but for now we silently drop this.
-	     */
-	    if (opt->cache_time > 3600)
-		opt->cache_time = 3600;
 	    break;
 	case CFG_WORDWRAP:
 	    opt->word_wrap = atol (val);
@@ -678,7 +665,6 @@
 	case CFG_EXPERT:
 	    opt->expert = atol (val);
 	    break;
-
 	case CFG_FM_PROGRESS:
 	    opt->fm.progress = atol (val);
 	    break;
@@ -691,18 +677,17 @@
 	opt->backup.path = m_strdup (val);
     free_if_alloc (val);
     
-    for (i=0; reg_hotkeys[i].reg_entry; i++) {
-	val = get_reg_entry (HKEY_CURRENT_USER, WINPT_REG, reg_hotkeys[i].reg_entry);
+    for (i=0; wpt_hotkeys[i].name; i++) {
+	wpt_hotkeys[i].enabled = 0;
+	val = get_reg_entry (HKEY_CURRENT_USER, WINPT_REG, wpt_hotkeys[i].name);
 	if (val && val[0] != ' ') {
-	    reg_hotkeys[i].key[0] = *val;
-	    reg_hotkeys[i].enabled = 1;
+	    wpt_hotkeys[i].key = *val;
+	    wpt_hotkeys[i].enabled = 1;
 	}
-	else
-	    reg_hotkeys[i].enabled = 0;
 	free_if_alloc (val);
     }
     return 0;
-} /* get_reg_winpt_prefs */
+}
 
 
 char*
@@ -717,46 +702,65 @@
 }
 
 
+int
+set_reg_entry_keyserver (const char * name, const char * val)
+{
+    return set_reg_entry( HKEY_CURRENT_USER, WINPT_REG"\\Keyserver", name, val );
+}
+
+static int
+get_reg_entry_keyserver_int (const char *key)
+{
+    char *p;
+    int val;
+
+    p = get_reg_entry_keyserver (key);
+    if (p && *p)
+	val = atoi (p);
+    free_if_alloc (p);
+    return val;
+}
+
+
 void
-get_reg_proxy_prefs (char ** host, int * port, char ** user, char ** pass)
+get_reg_proxy_prefs (keyserver_proxy_t prox)
 {
-    if (host)
-	*host = get_reg_entry_keyserver ("Host");
-    if (user)
-	*user = get_reg_entry_keyserver ("User");
-    if (pass)
-	*pass = get_reg_entry_keyserver ("Pass");
-    if (port) {
-	char * p = get_reg_entry_keyserver ("Port");
-	if (p) {
-	    *port = atol (p);
-	    free_if_alloc (p);
-	}
-    }
-} /* get_reg_proxy_prefs */
+    if (!prox)
+	return;
+    
+    free_if_alloc (prox->host);
+    prox->host = get_reg_entry_keyserver ("Host");
+    free_if_alloc (prox->user);
+    prox->user = get_reg_entry_keyserver ("User");
+    free_if_alloc (prox->pass);	
+    prox->pass = get_reg_entry_keyserver ("Pass");
+    prox->port = get_reg_entry_keyserver_int ("Port");
+}
 
 
-int
-set_reg_entry_keyserver( const char * name, const char * val )
+static int
+set_reg_entry_keyserver_int (const char *key, int val)
 {
-    return set_reg_entry( HKEY_CURRENT_USER, WINPT_REG"\\Keyserver", name, val );
-} /* set_reg_entry_keyserver */
+    char buf[32];
 
+    sprintf (buf, "%d", val);
+    return set_reg_entry_keyserver (key, buf);
+}
 
+
 int
-set_reg_proxy_prefs( const char * host, int port, const char * user, const char * pass )
-{
+set_reg_proxy_prefs (keyserver_proxy_t prox)
+{    
     int rc;
     
-    rc = set_reg_entry_keyserver( "Host", host? host : "" );
-    if( !rc ) {
-	char buf[32];
-	sprintf( buf, "%d", port );
-	rc = set_reg_entry_keyserver( "Port", buf );
-    }
-    if( !rc )
-	rc = set_reg_entry_keyserver( "User", user? user : "" );
-    if( !rc )
-	rc = set_reg_entry_keyserver( "Pass", pass? pass : "" );
+    rc = set_reg_entry_keyserver_int ("Proto", prox->proto);
+    if (!rc)
+	rc = set_reg_entry_keyserver ("Host", prox->host? prox->host : "");
+    if (!rc)
+	rc = set_reg_entry_keyserver_int ("Port", prox->port);
+    if (!rc)
+	rc = set_reg_entry_keyserver ("User", prox->user? prox->user : "");
+    if (!rc)
+	rc = set_reg_entry_keyserver ("Pass", prox->pass? prox->pass : "");
     return rc;
-} /* set_reg_proxy_prefs */
+}

Added: trunk/Src/wptSOCKS.cpp
===================================================================
--- trunk/Src/wptSOCKS.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptSOCKS.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -0,0 +1,298 @@
+/* wptSOCKS.cpp - SOCKS proxy support
+ *	Copyright (C) 2006 Timo Schulz
+ *
+ * This file is part of WinPT.
+ *
+ * WinPT 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.
+ *  
+ * WinPT 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 WinPT; if not, write to the Free Software Foundation, 
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <windows.h>
+
+#include "wptTypes.h"
+#include "wptKeyserver.h"
+#include "wptErrors.h"
+#include "wptNLS.h"
+
+/* Known socks errors. */
+enum socks5_error_t {
+    ERR_SUCCESS	    = 0x00,
+    ERR_GENERAL	    = 0x01,
+    ERR_NOTALLOWED  = 0x02,
+    ERR_NETUNREACH  = 0x03,
+    ERR_HOSTUNREACH = 0x04,
+    ERR_CONNREFUSED = 0x05,
+    ERR_INVADDR	    = 0x08
+};
+
+/* Known socks address types. */
+enum socks5_addr_t {
+    ADDR_IPV4	    = 0x01,
+    ADDR_DOMAIN	    = 0x03,
+    ADDR_IPV6	    = 0x04
+};
+
+/* Known socks authentication methods. */
+enum socks5_method_t {
+    METH_NOAUTH	    = 0x00,
+    METH_GSSAPI	    = 0x01,
+    METH_USERPASS   = 0x02,
+    METH_ERR	    = 0xFF
+};
+
+
+/* Return human readable SOCKS error. */
+static const char*
+socks_strerror (int err)
+{
+    switch (err) {
+    case ERR_SUCCESS: _("No error"); break;
+    case ERR_GENERAL: _("General SOCKS error"); break;
+    case ERR_NOTALLOWED: _("Connection not allowed by ruleset"); break;
+    case ERR_NETUNREACH: _("Network is unreachable"); break;
+    case ERR_HOSTUNREACH: _("Host could not be resolved"); break;
+    case ERR_CONNREFUSED: _("Connection refused"); break;
+    case ERR_INVADDR: _("Address type is not supported"); break;
+    }
+    return _("Unknown SOCKS error");
+}
+
+
+/* Send initial method packet. */
+static int
+send_methods (int conn_fd)
+{
+    BYTE pkt[4];
+
+    pkt[0] = 0x05;
+    pkt[1] = 0x02;
+    pkt[2] = METH_NOAUTH;
+    pkt[3] = METH_USERPASS;
+    if (send (conn_fd, (const char*)pkt, 4, 0) == SOCKET_ERROR) {
+	log_debug ("send_methods failed ec=%d\n", (int)WSAGetLastError ());
+	return -1;
+    }
+    return 0;
+}
+
+
+/* Parse the chosen server method. */
+static int
+recv_method (int conn_fd)
+{
+    BYTE pkt[2];
+
+    if (recv (conn_fd, (char*)pkt, 2, 0) == SOCKET_ERROR) {
+	log_debug ("recv_method failed ec=%d\n", (int)WSAGetLastError ());
+	return -1;
+    }
+    if (pkt[0] != 0x05) {
+	log_debug ("recv_method: protocol violation\n");
+	return -1;
+    }
+    return pkt[1];
+}
+
+
+/*
+           +----+------+----------+------+----------+
+           |VER | ULEN |  UNAME   | PLEN |  PASSWD  |
+           +----+------+----------+------+----------+
+           | 1  |  1   | 1 to 255 |  1   | 1 to 255 |
+           +----+------+----------+------+----------+
+    Do user/password authentication. 
+*/
+static int
+do_userpass_auth (int conn_fd, keyserver_proxy_t ctx, int *err)
+{
+    BYTE *pkt;
+    DWORD pktlen;
+
+    *err = 0;
+    pktlen = 1+1+strlen (ctx->user)+1+strlen (ctx->pass);
+    pkt = (BYTE*)malloc (pktlen);
+    pkt[0] = 0x05;
+    pkt[1] = strlen (ctx->user);
+    memcpy (pkt+2, ctx->user, strlen (ctx->user));
+    pkt[2+strlen (ctx->user)] = strlen (ctx->pass);
+    memcpy (pkt+2+strlen (ctx->user)+1, ctx->pass, strlen (ctx->pass));
+    if (send (conn_fd, (const char*)pkt, pktlen, 0) == SOCKET_ERROR) {
+	log_debug ("do_userpass_auth failed ec=%d\n", (int)WSAGetLastError ());
+	free (pkt);
+	return -1;
+    }
+    /* Parse reply [VER 1|STATUS 1] */
+    if (recv (conn_fd, (char*)pkt, 2, 0) == SOCKET_ERROR) {
+	log_debug ("do_userpass_auth failed ec=%d\n", (int)WSAGetLastError ());
+	free (pkt);
+	return -1;
+    }
+    *err = pkt[1];
+    free (pkt);
+    if (*err != ERR_SUCCESS)
+	return -1;
+    return 0;
+}
+
+
+/* Do the actual authentication. */
+static int
+do_auth (int conn_fd, int auth_method, keyserver_proxy_t ctx, int *err)
+{
+    switch (auth_method) {
+    case PROXY_AUTH_NONE:
+	*err = 0;
+	return 0;
+
+    case PROXY_AUTH_PLAIN:	
+	return do_userpass_auth (conn_fd, ctx, err);
+
+    default:
+	return -1;
+    }
+    return 0;
+}
+
+
+/*
+       +----+-----+-------+------+----------+----------+
+        |VER | CMD |  RSV  | ATYP | DST.ADDR | DST.PORT |
+        +----+-----+-------+------+----------+----------+
+        | 1  |  1  | X'00' |  1   | Variable |    2     |
+        +----+-----+-------+------+----------+----------+
+    Send a connection reqeust for host @host and port @port.
+*/
+static int
+send_connect_request (int conn_fd, const char *host, WORD port)
+{
+    struct hostent *hp;
+    DWORD addr;
+    BYTE pkt[10];
+
+    addr = inet_addr (host);
+    if (addr == INADDR_NONE) {
+	hp = gethostbyname (host);
+	if (hp != NULL)
+	    memcpy ((char*)&addr, hp->h_addr_list, hp->h_length);
+	else {
+	    log_debug ("gethostbyname() failed ec=%d\n", (int)WSAGetLastError ());
+	    return -1;
+	}
+    }
+    
+    pkt[0] = 0x05;
+    pkt[1] = 0x01; /*CONNECT*/
+    pkt[2] = 0x00;
+    pkt[3] = ADDR_IPV4;
+    pkt[4] = (BYTE)addr >> 24;
+    pkt[5] = (BYTE)addr >> 16;
+    pkt[6] = (BYTE)addr >>  8;
+    pkt[7] = (BYTE)addr >>  0;
+    pkt[8] = (BYTE)port >>  8;
+    pkt[9] = (BYTE)port >>  0;
+    if (send (conn_fd, (const char*)pkt, 9, 0) == SOCKET_ERROR) {
+	log_debug ("send_connect_request failed ec=%d\n", (int)WSAGetLastError ());
+	return -1;
+    }
+
+    return 0;
+}
+
+
+/*
+        +----+-----+-------+------+----------+----------+
+        |VER | REP |  RSV  | ATYP | BND.ADDR | BND.PORT |
+        +----+-----+-------+------+----------+----------+
+        | 1  |  1  | X'00' |  1   | Variable |    2     |
+        +----+-----+-------+------+----------+----------+
+    Parse the connect reply.
+    Set @err with the specific error value.
+*/
+static int
+recv_connect_reply (int conn_fd, int *err)
+{
+    BYTE pkt[4], addr[16], port[2];
+    int ndomain;
+
+    *err = 0;
+    if (recv (conn_fd, (char*)pkt, 4, 0) == SOCKET_ERROR)
+	return -1;
+    if (pkt[0] != 0x05 || pkt[2] != 0x00) {
+	log_debug ("recv_connect_reply: protocol violation.\n");
+	return -1;
+    }
+    *err = pkt[1];
+    if (pkt[1] != ERR_SUCCESS)
+	return -1;
+    switch (pkt[3]) {
+    case ADDR_IPV4:
+	if (recv (conn_fd, (char*)addr, 4, 0) == SOCKET_ERROR)
+	    return -1;
+	break;
+
+    case ADDR_DOMAIN:
+	recv (conn_fd, (char*)addr, 1, 0);
+	ndomain = addr[0];
+	while (ndomain-- > 0)
+	    recv (conn_fd, (char*)addr, 1, 0);
+	break;
+
+    case ADDR_IPV6:
+	if ( recv (conn_fd, (char*)addr, 16, 0) == SOCKET_ERROR)
+	    return -1;
+	break;
+    }
+    if (recv (conn_fd, (char*)port, 2, 0) == SOCKET_ERROR)
+	return -1;
+    return 0;
+}
+
+
+/* Perform all needed steps to initiate a SOCKSv5 proxy connection .*/
+int
+socks_handshake (keyserver_proxy_t ctx, int conn_fd,
+		 const char *hostname, WORD port)
+{
+    int method, err;
+
+    if (send_methods (conn_fd))
+	return -1;
+    method = recv_method (conn_fd);
+    if (method == METH_ERR) {
+	msg_box (NULL, _("No acceptable methods"), _("SOCKS Proxy"), MB_ERR);
+	return -1;
+    }
+    if (do_auth (conn_fd, method, ctx, &err)) {
+	if (!err)
+	    msg_box (NULL, _("Authentication failed or unspported"), _("SOCKS Proxy"), MB_ERR);
+	else
+	    msg_box (NULL, socks_strerror (err), _("SOCKS Proxy"), MB_ERR);
+	return -1;
+    }
+    if (send_connect_request (conn_fd, hostname, port)) {
+	msg_box (NULL, _("Could not send SOCKS request"), _("SOCKS Proxy"), MB_ERR);
+	return -1;
+    }
+    if (recv_connect_reply (conn_fd, &err)) {
+	if (!err)
+	    msg_box (NULL, _("Error while parsing SOCKS reply"), _("SOCKS Proxy"), MB_ERR);
+	else
+	    msg_box (NULL, socks_strerror (err), _("SOCKS Proxy"), MB_ERR);
+	return -1;
+    }
+    return 0;
+}

Modified: trunk/Src/wptSigTreeDlg.cpp
===================================================================
--- trunk/Src/wptSigTreeDlg.cpp	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/Src/wptSigTreeDlg.cpp	2006-03-06 14:41:58 UTC (rev 180)
@@ -29,6 +29,11 @@
 #include "wptCommonCtl.h"
 #include "wptContext.h"
 
+
+/* ID to display signature properties. */
+#define _ID_SIGCTX_PROPS 65000
+
+
 BOOL CALLBACK sigprops_dlg_proc (HWND dlg, UINT msg, 
 				 WPARAM wparam, LPARAM lparam);
 BOOL CALLBACK
@@ -91,6 +96,51 @@
 }
 
 
+static void
+create_popup (HWND dlg)
+{
+    HMENU hm;
+    MENUITEMINFO mi;
+    POINT p;
+    char *s;
+
+    hm = CreatePopupMenu ();
+    if (!hm)
+	BUG( NULL );
+    memset (&mi, 0, sizeof mi);
+    mi.cbSize = sizeof mi;
+    s = (char *)_("Signature &Properties");
+    mi.fType = MF_STRING;
+    mi.dwTypeData = s;
+    mi.cch = strlen (s);
+    mi.fMask = MIIM_DATA | MIIM_ID | MIIM_TYPE;
+    mi.wID = _ID_SIGCTX_PROPS;
+    InsertMenuItem (hm, 0, FALSE, &mi);
+    GetCursorPos (&p);
+    TrackPopupMenu (hm, 0, p.x, p.y, 0, dlg, NULL);
+    DestroyMenu (hm);
+}
+
+
+static void
+show_sigprops (HWND dlg)
+{
+    HWND tree;
+    HTREEITEM hti;
+    TVITEM tvi;
+
+    memset (&tvi, 0, sizeof (tvi));
+    tree = GetDlgItem (dlg, IDC_VKEYSIG_TREE);
+    hti = TreeView_GetSelection (tree);
+    tvi.mask = TVIF_PARAM;
+    tvi.hItem = hti;
+    TreeView_GetItem (tree, &tvi);
+    if (tvi.lParam != 0)
+	DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_SIGPROPS, dlg,
+	sigprops_dlg_proc, tvi.lParam);
+}
+
+
 /* Dialog box procedure for the tree based signature listing. */
 BOOL CALLBACK
 sigtree_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
@@ -98,7 +148,6 @@
     static winpt_key_t key;
     static HWND tree;
     static HIMAGELIST hil;
-    
     HICON ico[2];
     NMHDR *nft;
     char inf[256];
@@ -126,24 +175,18 @@
 
     case WM_NOTIFY:
 	nft = (NMHDR*)lparam;
-	if (nft->code == NM_DBLCLK) {
-	    HTREEITEM hti;
-	    TVITEM tvi;
-
-	    memset (&tvi, 0, sizeof (tvi));
-	    tree = GetDlgItem (dlg, IDC_VKEYSIG_TREE);
-	    hti = TreeView_GetSelection (tree);
-	    tvi.mask = TVIF_PARAM;
-	    tvi.hItem = hti;
-	    TreeView_GetItem (tree, &tvi);
-	    if (tvi.lParam != 0)
-		DialogBoxParam (glob_hinst, (LPCTSTR)IDD_WINPT_SIGPROPS, dlg, 
-				sigprops_dlg_proc, tvi.lParam);
-	}
+	if (nft->code == NM_DBLCLK)
+	    show_sigprops (dlg);
+	else if (nft->code == NM_RCLICK)
+	    create_popup (dlg);
 	break;
 
     case WM_COMMAND:
 	switch (LOWORD (wparam)) {
+	case _ID_SIGCTX_PROPS:
+	    show_sigprops (dlg);
+	    break;
+
 	case IDOK:
 	    EndDialog (dlg, 1);
 	    break;

Modified: trunk/THANKS
===================================================================
--- trunk/THANKS	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/THANKS	2006-03-06 14:41:58 UTC (rev 180)
@@ -19,6 +19,7 @@
 Andrea Ungaro       semperfin at tin.it
 Andreas Fehr        andreas at mrs.ch
 Andreas Jobs	    andreas.jobs at ruhr-uni-bochum.de
+Andres Lessing
 Alexander Hanf
 Bill Harris
 Bob Caplan          rsc22 at cornell.edu
@@ -71,3 +72,5 @@
 Werner Koch         wk at gnupg.org
 Vasyl Kondrashov    vasyl at male.ru
 Vedaal Nistar       vedaal at hush.com
+       		    djek at xs4all.nl
+		    
\ No newline at end of file

Modified: trunk/TODO
===================================================================
--- trunk/TODO	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/TODO	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,36 +1,30 @@
-Feel free if you think there is missing something to mail me.
-
--0.11.x-
-    * On modern P4 CPUs the thread scheduling mechanism seems to
-      cause trouble and the result is that any GPG operation will
-      be take much longer as expected.
-    * File register code needs an additional param "%1".
-    * Handle the case that while WinPT tries to change GPG data,
-      but before GPG is executed, an external event changed the
-      keyring. So do not use BUG but issue an error.
-    * implement property sheets at some places to improve usability.
-    * Implement a mechanism to download and update language files.
-    
--1.0.0-
-    * The key cache reload is much faster when no progress callback
-      is used. Allow to disable the progress dialog.
-    * Use '!' in the encrypt dialog to use the subkey which was selected
-      and not the newest.
-    * Revamp the group database code. Use the GPG --group feature and make
-    * check the file register code
-    * Secret keyring is stored on drive A.
--1.0.0-
-    * Implement to recognize one-pass sigs for files also.
-    * CARD
-        - sign/decrypt
-        - factor out some common code into wptCardManager.cpp
-    * Implement --armor in the FM for --symmetric.
-    * Winpt should take care for a multi user environment.
-    * Use accelators for some dialogs to support 'hotkeys'.
-    * We need a way to figure out if it makes sense to load the encrypt
-      dialog for the file manager. The same with the sign dialog.
-      
--future-
-    * Move the both managers (key/file) to separate applications
-      and use ActiveX control elemens for the treelist element.
-    * Implement the non-swapable memory for passphrase handling.
+(priority: + high, * normal, - low)
+
+version 0.11.x
+    + Use a combo box for selecting the keyserver and have
+      a separate dialog for the configuration (add, remove, edit).
+    * File register code needs an additional param "%1".
+    + Handle the case that while WinPT tries to change GPG data,
+      but before GPG is executed, an external event changed the
+      keyring. So do not use BUG but issue an error.
+    * implement property sheets at some places to improve usability.
+    * Implement a mechanism to download and update language files.
+    
+version >= 1.0.0
+    * The key cache reload is much faster when no progress callback
+      is used. Allow to disable the progress dialog.
+    - Use '!' in the encrypt dialog to use the subkey which was selected
+      and not the newest.
+    - Revamp the group database code. Use the GPG --group feature and make
+    * Implement to recognize one-pass sigs for files also.
+    * CARD
+        - sign/decrypt
+        - factor out some common code into wptCardManager.cpp
+    * Implement --armor in the FM for --symmetric.
+    * Winpt should take care for a multi user environment.
+    * Use accelators for some dialogs to support 'hotkeys'.
+      
+version >= 2.0.0
+    * Move the both managers (key/file) to separate applications
+      and use ActiveX control elemens for the treelist element.
+    * Implement the non-swapable memory for passphrase handling.

Modified: trunk/TODO-GPGME-PORT.txt
===================================================================
--- trunk/TODO-GPGME-PORT.txt	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/TODO-GPGME-PORT.txt	2006-03-06 14:41:58 UTC (rev 180)
@@ -1,23 +1,23 @@
-* Select the signing subkey.
-
-* Allow to use --hidden-recipient.
-
-* Grep for 'XXX' and implement the missing code or
-  replace the dummy code with real code.
-
-* If the card is not inserted and for example gpgme_op_sign
-  is called there is no real error.
-  (IMHO: gpgme should care for 'CARDCTRL 5' and then return
-   GPG_ERR_CARD_REMOVED)
-
-* When a revocation certificate is imported, there is no way
-  to call the user why the key has been revoked
-  (superseded, insecure, ....) and the optional text.
-
-* The current way to send large file through pipes is OK as
-  long as the file is not too large. The limite is <100 MB.
-  Otherwise the process would take too much time and propably
-  the window/process freezes up.
-  (ts: should be fixed with gpgme 1.1.1)
-  
+* Select the signing subkey.
+
+* Allow to use --hidden-recipient.
+
+* Grep for 'XXX' and implement the missing code or
+  replace the dummy code with real code.
+
+* If the card is not inserted and for example gpgme_op_sign
+  is called there is no real error.
+  (IMHO: gpgme should care for 'CARDCTRL 5' and then return
+   GPG_ERR_CARD_REMOVED)
+
+* When a revocation certificate is imported, there is no way
+  to call the user why the key has been revoked
+  (superseded, insecure, ....) and the optional text.
+
+* The current way to send large file through pipes is OK as
+  long as the file is not too large. The limite is <100 MB.
+  Otherwise the process would take too much time and propably
+  the window/process freezes up.
+  (ts: should be fixed with gpgme 1.1.1)
+  
     
\ No newline at end of file

Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac	2006-02-24 13:12:26 UTC (rev 179)
+++ trunk/configure.ac	2006-03-06 14:41:58 UTC (rev 180)
@@ -15,7 +15,7 @@
 
 # Version number: Remember to change it immediately *after* a release.
 #                 Add a "-cvs" prefix for non-released code.
-AC_INIT(WinPT, 0.11.8, http://www.winpt.org)
+AC_INIT(WinPT, 0.11.9-cvs, http://www.winpt.org)
 NEED_GPG_VERSION=1.4.2
 NEED_GPGME_API=1
 NEED_GPGME_VERSION=1.1.1



More information about the Winpt-commits mailing list