diff options
author | ubbo <ubbo@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2008-08-15 23:26:50 +0000 |
---|---|---|
committer | ubbo <ubbo@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2008-08-15 23:26:50 +0000 |
commit | 34eea857ef69fe3210d3787f343ae2f84b04a0b1 (patch) | |
tree | 90b854a1efa0c5f0ff3e73bef6f8eb11510b9b01 | |
download | gpg4usb-34eea857ef69fe3210d3787f343ae2f84b04a0b1.tar.gz gpg4usb-34eea857ef69fe3210d3787f343ae2f84b04a0b1.zip |
reorganized svn to support tags and branches
git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@142 34ebc366-c3a9-4b3c-9f84-69acf7962910
-rw-r--r-- | COPYING | 339 | ||||
-rw-r--r-- | README | 45 | ||||
-rw-r--r-- | TODO | 26 | ||||
-rw-r--r-- | context.cpp | 394 | ||||
-rw-r--r-- | context.h | 80 | ||||
-rw-r--r-- | gpg4usb.ico | bin | 0 -> 9662 bytes | |||
-rw-r--r-- | gpg4usb.pro | 25 | ||||
-rw-r--r-- | gpg4usb.rc | 1 | ||||
-rw-r--r-- | gpgwin.cpp | 401 | ||||
-rw-r--r-- | gpgwin.h | 87 | ||||
-rw-r--r-- | keylist.cpp | 129 | ||||
-rw-r--r-- | keylist.h | 55 | ||||
-rw-r--r-- | lib/libgpgme.a | bin | 0 -> 204360 bytes | |||
-rw-r--r-- | main.cpp | 54 | ||||
-rw-r--r-- | release/COPYING | 339 | ||||
-rw-r--r-- | release/README | 45 | ||||
-rw-r--r-- | release/bin/COPYING.txt | 676 | ||||
-rw-r--r-- | release/bin/README.txt | 822 | ||||
-rwxr-xr-x | release/bin/gpg | bin | 0 -> 2120576 bytes | |||
-rw-r--r-- | release/bin/gpg.exe | bin | 0 -> 870400 bytes | |||
-rw-r--r-- | release/icons/button_cancel.png | bin | 0 -> 3612 bytes | |||
-rw-r--r-- | release/icons/button_copy.png | bin | 0 -> 1989 bytes | |||
-rw-r--r-- | release/icons/button_cut.png | bin | 0 -> 3406 bytes | |||
-rw-r--r-- | release/icons/button_ok.png | bin | 0 -> 2856 bytes | |||
-rw-r--r-- | release/icons/button_paste.png | bin | 0 -> 2704 bytes | |||
-rw-r--r-- | release/icons/configure.png | bin | 0 -> 2897 bytes | |||
-rw-r--r-- | release/icons/decrypted.png | bin | 0 -> 2025 bytes | |||
-rw-r--r-- | release/icons/edit.png | bin | 0 -> 2011 bytes | |||
-rw-r--r-- | release/icons/encrypted.png | bin | 0 -> 2058 bytes | |||
-rw-r--r-- | release/icons/exit.png | bin | 0 -> 2446 bytes | |||
-rw-r--r-- | release/icons/fileopen.png | bin | 0 -> 2654 bytes | |||
-rw-r--r-- | release/icons/fileprint.png | bin | 0 -> 3369 bytes | |||
-rw-r--r-- | release/icons/filesave.png | bin | 0 -> 2627 bytes | |||
-rw-r--r-- | release/icons/filesaveas.png | bin | 0 -> 3846 bytes | |||
-rw-r--r-- | release/icons/help.png | bin | 0 -> 4662 bytes | |||
-rw-r--r-- | release/icons/importkey_editor.png | bin | 0 -> 3352 bytes | |||
-rw-r--r-- | release/icons/kgpg_export.png | bin | 0 -> 2534 bytes | |||
-rw-r--r-- | release/icons/kgpg_import.png | bin | 0 -> 2775 bytes | |||
-rw-r--r-- | release/icons/kgpg_key2.png | bin | 0 -> 850 bytes | |||
-rw-r--r-- | release/icons/undo.png | bin | 0 -> 2653 bytes | |||
-rwxr-xr-x | release/keydb/gpg.conf | 1 | ||||
-rw-r--r-- | release/keydb/pubring.gpg | bin | 0 -> 1166 bytes | |||
-rw-r--r-- | release/mingwm10.dll | bin | 0 -> 15960 bytes | |||
-rw-r--r-- | release/ts/gpg4usb_de.qm | bin | 0 -> 5709 bytes | |||
-rw-r--r-- | release/ts/gpg4usb_de.ts | 333 | ||||
-rw-r--r-- | release/ts/gpg4usb_en.qm | bin | 0 -> 3582 bytes | |||
-rw-r--r-- | release/ts/gpg4usb_en.ts | 332 | ||||
-rw-r--r-- | testdata/crypt1.txt | 13 | ||||
-rw-r--r-- | testdata/pubkey-1.asc | 1 | ||||
-rw-r--r-- | testdata/pubkey-2.asc | 1 | ||||
-rw-r--r-- | testdata/seckey-1.asc | 30 |
51 files changed, 4229 insertions, 0 deletions
@@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General +Public License instead of this License. @@ -0,0 +1,45 @@ +ABOUT +----- +gpg4usb is an easy to use, small portable editor with the possibility +to encrypt and decrypt any text-message or -file you want. For encryption it acts as +a gpg-frontend (http://gnupg.org/). Its intend is to be used from an usb-stick, +running on Windows(TM) and Linux. Providing a mac-binary is on our TODO-list. + +Our aim is, to give anyone the possibility to send and receive secure encrypted +messages anywhere - on any computer out there, no matter if Microsoft Windows(TM) +or Linux is running on it. Therefore it's usage should be self-describing, and the +user-interface is kept as simple as possible. + +Of course gpg4usb is open source, as are included libs and binaries. + +OBTAINING +--------- +You can get prepacked zip-files from http://gpg4usb.cpunk.de/download.html . +For retrieving the source checkout http://cpunk.de/svn/src/ . + +HOWTO USE +--------- +1. Unzip gpg4usblib.zip on your usb-stick. +2. start programm with start_windows.exe or start_linux (depending on your os) +3. import your private key and some public keys +4. enjoy portable encryption ;-) + +CONTACT +------- +If you have any questions and/or suggestions contact us at [email protected] - or feel free to meet us at [email protected] + +Our homepage is located at http://gpg4usb.cpunk.de . + +LICENSES +-------- +gpg4usblib itself is licensed under the GPL (see COPYING). + +There are some libries and the gpg-binary included in the zip-file / a static +gpg-build which (may) have different licenses, for more information check +their homepages. You can also obtain the sources from there. + +GPG: http://gnupg.org/ +QT: http://trolltech.no/ , http://trolltech.no/downloads/opensource + +Iconset used is Nuvola (http://icon-king.com/?p=15), which has a LGPL License @@ -0,0 +1,26 @@ +TODO: +----- + +- Binary File Attachements, function for Decrypt & Help-Text (like safe eml, etc) + +- sorting keys would be nice (e.g. a-z or complete manual) +- Policy ( dialogs, what's warning, what an error ) +- Encrypt to self (problem: who is self?) + +- Keyimport, first: function Keyimport should use QByteArray, then: + - More Keymanagement (new popup window?) including: + - copy a public-keyfile into the editor-window and enable importing it -> same as "Import Key from Clipboard?" + - Import Key from Clipboard + - export public key + - export private key + - generate new key + - import keyfiles in non ASCII-Amor-format (always and everywhere error-free keyimport would be great) + - Import key from Keyserver + +- Tabbed editor (including useful things like encrypted data opens in new tab) + +- some kind of locking for keydb, as gpg.conf uses lock-never, for ability to run on usb-drives (fat-formatted) + +advanced: +- threading & thread-safety in context.cpp (in, out, ctx) + diff --git a/context.cpp b/context.cpp new file mode 100644 index 0000000..9db8aad --- /dev/null +++ b/context.cpp @@ -0,0 +1,394 @@ +/* + * context.cpp + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include <locale.h> +#include <sstream> +#include <QApplication> +#include <QtGui> +#include <QMessageBox> +#include <errno.h> +#include "context.h" + +#ifdef _WIN32 +#include <windows.h> +#include <unistd.h> /* contains read/write */ +#endif + + +namespace GpgME +{ + +/** Constructor + * Set up gpgme-context, set paths to app-run path + */ +Context::Context() +{ + + /** get application path */ + QString appPath = qApp->applicationDirPath(); + + /** The function `gpgme_check_version' must be called before any other + * function in the library, because it initializes the thread support + * subsystem in GPGME. (from the info page) */ + gpgme_check_version(NULL); + + setlocale(LC_ALL, ""); + /** set locale, because tests do also */ + gpgme_set_locale(NULL, LC_CTYPE, setlocale(LC_CTYPE, NULL)); +#ifndef _WIN32 + gpgme_set_locale(NULL, LC_MESSAGES, setlocale(LC_MESSAGES, NULL)); +#endif + + err = gpgme_new(&m_ctx); + checkErr(err); + /** here come the settings, instead of /usr/bin/gpg + * a executable in the same path as app is used. + * also lin/win must be checked, for calling gpg.exe if needed + */ +#ifdef _WIN32 + QString gpgBin = appPath + "/bin/gpg.exe"; +#else + QString gpgBin = appPath + "/bin/gpg"; +#endif + QString gpgKeys = appPath + "/keydb"; + err = gpgme_ctx_set_engine_info(m_ctx, GPGME_PROTOCOL_OpenPGP, + gpgBin.toAscii().constData(), + gpgKeys.toAscii().constData()); + checkErr(err); + + + /** Setting the output type must be done at the beginning */ + /** think this means ascii-amor --> ? */ + gpgme_set_armor(m_ctx, 1); + /** passphrase-callback */ + gpgme_set_passphrase_cb(m_ctx, passphraseCb, this); + + /** check if app is called with -d from command line */ + if (qApp->arguments().contains("-d")) { + qDebug() << "gpgme_data_t debug on"; + debug = true; + } else { + debug = false; + } + +} + +/** Destructor + * Release gpgme-context + */ +Context::~Context() +{ + if (m_ctx) gpgme_release(m_ctx); + m_ctx = 0; +} + +/** Import Key from QByteArray + * + */ +void Context::importKey(QByteArray inBuffer) +{ + err = gpgme_data_new_from_mem(&in, inBuffer.data(), inBuffer.size(), 1); + checkErr(err); + err = gpgme_op_import(m_ctx, in); + checkErr(err); + gpgme_data_release(in); +} + +/** List all availabe Keys (VERY much like kgpgme) + */ +GpgKeyList Context::listKeys() +{ + gpgme_error_t err; + gpgme_key_t key; + + GpgKeyList keys; + //TODO dont run the loop more often than necessary + // list all keys ( the 0 is for all ) + err = gpgme_op_keylist_start(m_ctx, NULL, 0); + checkErr(err); + while (!(err = gpgme_op_keylist_next(m_ctx, &key))) { + GpgKey gpgkey; + + if (!key->subkeys) + continue; + + gpgkey.id = key->subkeys->keyid; + + if (key->uids) { + gpgkey.name = key->uids->name; + gpgkey.email = key->uids->email; + } + keys.append(gpgkey); + gpgme_key_unref(key); + } + gpgme_op_keylist_end(m_ctx); + + // list only private keys ( the 1 does ) + gpgme_op_keylist_start(m_ctx, NULL, 1); + while (!(err = gpgme_op_keylist_next(m_ctx, &key))) { + if (!key->subkeys) + continue; + // iterate keys, mark privates + GpgKeyList::iterator it = keys.begin(); + while (it != keys.end()) { + if (key->subkeys->keyid == it->id.toStdString()) + it->privkey = 1; + it++; + } + + gpgme_key_unref(key); + } + gpgme_op_keylist_end(m_ctx); + + return keys; +} + +/** Delete keys + */ + +void Context::deleteKeys(QList<QString> *uidList) +{ + + QString tmp; + gpgme_key_t key; + + foreach(tmp, *uidList) { + gpgme_op_keylist_start(m_ctx, tmp.toAscii().constData(), 0); + gpgme_op_keylist_next(m_ctx, &key); + gpgme_op_keylist_end(m_ctx); + gpgme_op_delete(m_ctx, key, 1); + } +} + +/** Encrypt String, return String + * should also use QByteArray, so be removed + * in should be std::vector<key> & recipients (703 in context.cpp) + */ +bool Context::encrypt(QList<QString> *uidList, const QByteArray &inBuffer, QByteArray *outBuffer) +{ + + gpgme_data_t in = 0, out = 0; + outBuffer->resize(0); + + if (uidList->count() == 0) { + QMessageBox::critical(0, "No Key Selected", "No Key Selected"); + return false; + } + + //gpgme_encrypt_result_t e_result; + gpgme_key_t recipients[uidList->count()+1]; + + /* get key for user */ + for (int i = 0; i < uidList->count(); i++) { + // the last 0 is for public keys, 1 would return private keys + gpgme_op_keylist_start(m_ctx, uidList->at(i).toAscii().constData(), 0); + gpgme_op_keylist_next(m_ctx, &recipients[i]); + gpgme_op_keylist_end(m_ctx); + } + //Last entry in array has to be NULL + recipients[uidList->count()] = NULL; + + //If the last parameter isnt 0, a private copy of data is made + err = gpgme_data_new_from_mem(&in, inBuffer.data(), inBuffer.size(), 1); + checkErr(err); + err = gpgme_data_new(&out); + checkErr(err); + + err = gpgme_op_encrypt(m_ctx, recipients, GPGME_ENCRYPT_ALWAYS_TRUST, in, out); + checkErr(err); + + err = readToBuffer(out, outBuffer); + checkErr(err); + + /* unref all keys */ + for (int i = 0; i <= uidList->count(); i++) { + gpgme_key_unref(recipients[i]); + } + gpgme_data_release(in); + gpgme_data_release(out); + + return true; +} + +/** Decrypt QByteAarray, return QByteArray + * mainly from http://basket.kde.org/ (kgpgme.cpp) + */ +bool Context::decrypt(const QByteArray &inBuffer, QByteArray *outBuffer) +{ + gpgme_data_t in = 0, out = 0; + gpgme_decrypt_result_t result = 0; + + outBuffer->resize(0); + if (m_ctx) { + err = gpgme_data_new_from_mem(&in, inBuffer.data(), inBuffer.size(), 1); + checkErr(err); + if (!err) { + err = gpgme_data_new(&out); + checkErr(err); + if (!err) { + err = gpgme_op_decrypt(m_ctx, in, out); + checkErr(err); + if (!err) { + result = gpgme_op_decrypt_result(m_ctx); + if (result->unsupported_algorithm) { + QMessageBox::critical(0, "Unsupported algorithm", result->unsupported_algorithm); + } else { + err = readToBuffer(out, outBuffer); + checkErr(err); + } + } + } + } + } + if (err != GPG_ERR_NO_ERROR && err != GPG_ERR_CANCELED) { + QMessageBox::critical(0, "Error encrypting:", gpgme_strerror(err)); + } + if (err != GPG_ERR_NO_ERROR) + clearCache(); + if (in) + gpgme_data_release(in); + if (out) + gpgme_data_release(out); + return (err == GPG_ERR_NO_ERROR); +} + +/** Read gpgme-Data to QByteArray + * mainly from http://basket.kde.org/ (kgpgme.cpp) + */ +#define BUF_SIZE (32 * 1024) +gpgme_error_t Context::readToBuffer(gpgme_data_t in, QByteArray *outBuffer) +{ + int ret; + gpgme_error_t err = GPG_ERR_NO_ERROR; + + ret = gpgme_data_seek(in, 0, SEEK_SET); + if (ret) { + err = gpgme_err_code_from_errno(errno); + checkErr(err, "failed dataseek in readToBuffer"); + } else { + char *buf = new char[BUF_SIZE + 2]; + + if (buf) { + while ((ret = gpgme_data_read(in, buf, BUF_SIZE)) > 0) { + uint size = outBuffer->size(); + outBuffer->resize(size + ret); + memcpy(outBuffer->data() + size, buf, ret); + } + if (ret < 0) { + err = gpgme_err_code_from_errno(errno); + checkErr(err, "failed data_read in readToBuffer"); + } + delete[] buf; + } + } + return err; +} + +/** The Passphrase window, if not provided by env-Var GPG_AGENT_INFO + * originally copied from http://basket.kde.org/ (kgpgme.cpp), but modified + */ +gpgme_error_t Context::passphraseCb(void *hook, const char *uid_hint, + const char *passphrase_info, + int last_was_bad, int fd) +{ + Context *gpg = static_cast<Context*>(hook); + return gpg->passphrase(uid_hint, passphrase_info, last_was_bad, fd); +} + +gpgme_error_t Context::passphrase(const char *uid_hint, + const char * /*passphrase_info*/, + int last_was_bad, int fd) +{ + gpgme_error_t res = GPG_ERR_CANCELED; + QString s; + QString gpg_hint = uid_hint; + bool result; + + if (last_was_bad) { + s += "<i>Wrong password.</i><br><br>\n\n"; + clearCache(); + } + + /** if uid provided */ + if (!gpg_hint.isEmpty()) { + // remove UID, leave only username & email + gpg_hint.remove(0, gpg_hint.indexOf(" ")); + s += "<b>Enter Password for</b><br>\n" + gpg_hint + "\n"; + } + + if (m_cache.isEmpty()) { + QString password = QInputDialog::getText(0, "Enter Password", + s, QLineEdit::Password, + "", &result); + + if (result == 1) m_cache = password.toAscii(); + } else + result = 0; + + if (result == 1) { +#ifndef _WIN32 + write(fd, m_cache.data(), m_cache.length()); +#else + DWORD written; + WriteFile((HANDLE) fd, m_cache.data(), m_cache.length(), &written, 0); +#endif + res = 0; + } +#ifndef _WIN32 + write(fd, "\n", 1); +#else + DWORD written; + WriteFile((HANDLE) fd, "\n", 1, &written, 0); +#endif + + return res; +} + +/** also from kgpgme.cpp, seems to clear password from mem */ +void Context::clearCache() +{ + if (m_cache.size() > 0) { + m_cache.fill('\0'); + m_cache.truncate(0); + } +} + +// error-handling +void Context::checkErr(gpgme_error_t err, QString comment) const +{ + if (err != GPG_ERR_NO_ERROR && err != GPG_ERR_CANCELED) { + qDebug() << "[Error " << comment << "] Source: " << gpgme_strsource(err) << " String: " << gpgme_strerror(err); + } +} + +void Context::checkErr(gpgme_error_t err) const +{ + if (err != GPG_ERR_NO_ERROR && err != GPG_ERR_CANCELED) { + qDebug() << "[Error] Source: " << gpgme_strsource(err) << " String: " << gpgme_strerror(err); + } +} + +} + + + + + diff --git a/context.h b/context.h new file mode 100644 index 0000000..868b085 --- /dev/null +++ b/context.h @@ -0,0 +1,80 @@ +/* + * context.h + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#ifndef __SGPGMEPP_CONTEXT_H__ +#define __SGPGMEPP_CONTEXT_H__ + +#include <gpgme.h> +#include <QByteArray> +#include <QString> +#include <QLinkedList> + +class GpgKey +{ +public: + QString id; + QString name; + QString email; + int privkey; +}; + +typedef QLinkedList< GpgKey > GpgKeyList; + +namespace GpgME +{ + +class Context +{ + +public: + Context(); // Consttructor + ~Context(); // Destructor + + void importKeyFromFile(QString pathToFile); + void importKey(QByteArray inBuffer); + GpgKeyList listKeys(); + void deleteKeys(QList<QString> *uidList); + bool encrypt(QList<QString> *uidList, const QByteArray &inBuffer, + QByteArray *outBuffer); + bool decrypt(const QByteArray &inBuffer, QByteArray *outBuffer); + void clearCache(); + +private: + gpgme_ctx_t m_ctx; + gpgme_data_t in, out; + gpgme_error_t err; + gpgme_error_t readToBuffer(gpgme_data_t in, QByteArray *outBuffer); + QByteArray m_cache; + bool debug; + void checkErr(gpgme_error_t err) const; + void checkErr(gpgme_error_t err, QString comment) const; + + static gpgme_error_t passphraseCb(void *hook, const char *uid_hint, + const char *passphrase_info, + int last_was_bad, int fd); + gpgme_error_t passphrase(const char *uid_hint, + const char *passphrase_info, + int last_was_bad, int fd); + +}; +} // namespace GpgME + +#endif // __SGPGMEPP_CONTEXT_H__ diff --git a/gpg4usb.ico b/gpg4usb.ico Binary files differnew file mode 100644 index 0000000..51c9b00 --- /dev/null +++ b/gpg4usb.ico diff --git a/gpg4usb.pro b/gpg4usb.pro new file mode 100644 index 0000000..91bb5c2 --- /dev/null +++ b/gpg4usb.pro @@ -0,0 +1,25 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Mi Mai 21 02:28:39 2008 +###################################################################### + +TEMPLATE = app +unix:TARGET = start_linux +win32:TARGET = start_windows +mac:TARGET = start_mac +DESTDIR = release +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += context.h gpgwin.h keylist.h +SOURCES += context.cpp gpgwin.cpp main.cpp keylist.cpp +RC_FILE = gpg4usb.rc +# For Static build on Linux: uncomment line below +#LIBS += lib/libgpgme.a -static-libgcc -Llib +#LIBS += lib/libgpgme.a +LIBS += -lgpgme -lgpg-error +#LIBS += lib/libgpgme.a -Llib +DEFINES += _FILE_OFFSET_BITS=64 + +TRANSLATIONS = release/ts/gpg4usb_en.ts \ + release/ts/gpg4usb_de.ts diff --git a/gpg4usb.rc b/gpg4usb.rc new file mode 100644 index 0000000..16b8539 --- /dev/null +++ b/gpg4usb.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "gpg4usb.ico"
diff --git a/gpgwin.cpp b/gpgwin.cpp new file mode 100644 index 0000000..6215ba9 --- /dev/null +++ b/gpgwin.cpp @@ -0,0 +1,401 @@ +/* + * gpgwin.cpp + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include <QApplication> +#include <QMainWindow> +#include <QPlainTextEdit> +#include <QWidget> +#include <QVBoxLayout> +#include <QGridLayout> +#include <iostream> +#include <QtGui> +#include <QString> +#include <QFileDialog> +#include <QStringList> +#include <QIcon> +#include <QMessageBox> + +#include "context.h" +#include "gpgwin.h" + + +GpgWin::GpgWin() +{ + myCtx = new GpgME::Context(); + + /* get path were app was started */ + QString appPath = qApp->applicationDirPath(); + iconPath = appPath + "/icons/"; + + edit = new QPlainTextEdit(); + setCentralWidget(edit); + + /* the list of Keys available*/ + m_keyList = new KeyList(); + m_keyList->setIconPath(iconPath); + m_keyList->setContext(myCtx); + + createActions(); + createMenus(); + createToolBars(); + createStatusBar(); + createDockWindows(); + + setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + setIconSize(QSize(32, 32)); + setCurrentFile(""); + +} + +void GpgWin::createActions() +{ + /** Main Menu + */ + openAct = new QAction(tr("&Open..."), this); + openAct->setIcon(QIcon(iconPath + "fileopen.png")); + openAct->setShortcut(tr("Ctrl+O")); + openAct->setStatusTip(tr("Open an existing file")); + connect(openAct, SIGNAL(triggered()), this, SLOT(open())); + + saveAct = new QAction(tr("&Save"), this); + saveAct->setIcon(QIcon(iconPath + "filesave.png")); + saveAct->setShortcut(tr("Ctrl+S")); + saveAct->setStatusTip(tr("Save the current File")); + connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); + + saveAsAct = new QAction(tr("Save &As"), this); + saveAsAct->setIcon(QIcon(iconPath + "filesaveas.png")); + saveAsAct->setStatusTip(tr("Save the current File as...")); + connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); + + printAct = new QAction(tr("&Print"), this); + printAct->setIcon(QIcon(iconPath + "fileprint.png")); + printAct->setShortcut(tr("Ctrl+P")); + printAct->setStatusTip(tr("Print Document")); + connect(printAct, SIGNAL(triggered()), this, SLOT(print())); + + quitAct = new QAction(tr("&Quit"), this); + quitAct->setShortcut(tr("Ctrl+Q")); + quitAct->setIcon(QIcon(iconPath + "exit.png")); + quitAct->setStatusTip(tr("Quit Program")); + connect(quitAct, SIGNAL(triggered()), this, SLOT(close())); + + /** Edit Menu + */ + pasteAct = new QAction(tr("&Paste"), this); + pasteAct->setIcon(QIcon(iconPath + "button_paste.png")); + pasteAct->setShortcut(tr("Ctrl+V")); + pasteAct->setStatusTip(tr("Paste Text From Clipboard")); + connect(pasteAct, SIGNAL(triggered()), edit, SLOT(paste())); + + cutAct = new QAction(tr("Cu&t"), this); + cutAct->setIcon(QIcon(iconPath + "button_cut.png")); + cutAct->setShortcut(tr("Ctrl+X")); + cutAct->setStatusTip(tr("Cut the current selection's contents to the " + "clipboard")); + connect(cutAct, SIGNAL(triggered()), edit, SLOT(cut())); + + copyAct = new QAction(tr("&Copy"), this); + copyAct->setIcon(QIcon(iconPath + "button_copy.png")); + copyAct->setShortcut(tr("Ctrl+C")); + copyAct->setStatusTip(tr("Copy the current selection's contents to the " + "clipboard")); + connect(copyAct, SIGNAL(triggered()), edit, SLOT(copy())); + + selectallAct = new QAction(tr("Select &All"), this); + selectallAct->setIcon(QIcon(iconPath + "edit.png")); + selectallAct->setShortcut(tr("Ctrl+A")); + selectallAct->setStatusTip(tr("Select the whole text")); + connect(selectallAct, SIGNAL(triggered()), edit, SLOT(selectAll())); + + /** Crypt Menu + */ + encryptAct = new QAction(tr("&Encrypt"), this); + encryptAct->setIcon(QIcon(iconPath + "encrypted.png")); + encryptAct->setShortcut(tr("Ctrl+E")); + encryptAct->setStatusTip(tr("Encrypt Message")); + connect(encryptAct, SIGNAL(triggered()), this, SLOT(encrypt())); + + decryptAct = new QAction(tr("&Decrypt"), this); + decryptAct->setIcon(QIcon(iconPath + "decrypted.png")); + decryptAct->setShortcut(tr("Ctrl+D")); + decryptAct->setStatusTip(tr("Decrypt Message")); + connect(decryptAct, SIGNAL(triggered()), this, SLOT(decrypt())); + + importKeyFromFileAct = new QAction(tr("&Import Key From File"), this); + importKeyFromFileAct->setIcon(QIcon(iconPath + "kgpg_import.png")); + importKeyFromFileAct->setShortcut(tr("Ctrl+I")); + importKeyFromFileAct->setStatusTip(tr("Import New Key From File")); + connect(importKeyFromFileAct, SIGNAL(triggered()), this, SLOT(importKeyFromFile())); + + importKeyFromEditAct = new QAction(tr("Import Key From &Editor"), this); + importKeyFromEditAct->setIcon(QIcon(iconPath + "importkey_editor.png")); + importKeyFromEditAct->setStatusTip(tr("Import New Key From Editor")); + connect(importKeyFromEditAct, SIGNAL(triggered()), this, SLOT(importKeyFromEdit())); + + /** About Menu + */ + aboutAct = new QAction(tr("&About"), this); + aboutAct->setIcon(QIcon(iconPath + "help.png")); + aboutAct->setStatusTip(tr("Show the application's About box")); + connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); +} + +void GpgWin::createMenus() +{ + fileMenu = menuBar()->addMenu(tr("&File")); + fileMenu->addAction(openAct); + fileMenu->addAction(saveAct); + fileMenu->addAction(saveAsAct); + fileMenu->addAction(printAct); + fileMenu->addSeparator(); + fileMenu->addAction(quitAct); + + fileMenu = menuBar()->addMenu(tr("&Edit")); + fileMenu->addAction(copyAct); + fileMenu->addAction(cutAct); + fileMenu->addAction(pasteAct); + fileMenu->addAction(selectallAct); + + fileMenu = menuBar()->addMenu(tr("&Crypt")); + fileMenu->addAction(encryptAct); + fileMenu->addAction(decryptAct); + fileMenu->addSeparator(); + fileMenu->addAction(importKeyFromFileAct); + fileMenu->addAction(importKeyFromEditAct); + + fileMenu = menuBar()->addMenu(tr("&Help")); + fileMenu->addAction(aboutAct); +} + +void GpgWin::createToolBars() +{ + fileToolBar = addToolBar(tr("File")); + fileToolBar->addAction(encryptAct); + fileToolBar->addAction(decryptAct); + + editToolBar = addToolBar(tr("Edit")); + editToolBar->addAction(copyAct); + editToolBar->addAction(pasteAct); + editToolBar->addAction(selectallAct); +} + +void GpgWin::createStatusBar() +{ + statusBar()->showMessage(tr("Ready")); +} + +void GpgWin::createDockWindows() +{ + QDockWidget *dock = new QDockWidget(tr("Encrypt for:"), this); + dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + addDockWidget(Qt::RightDockWidgetArea, dock); + dock->setWidget(m_keyList); +} + +void GpgWin::closeEvent(QCloseEvent *event) +{ + if (maybeSave()) { + event->accept(); + } else { + event->ignore(); + } +} + +void GpgWin::open() +{ + if (maybeSave()) { + QString fileName = QFileDialog::getOpenFileName(this); + if (!fileName.isEmpty()) + loadFile(fileName); + } +} + +bool GpgWin::save() +{ + if (curFile.isEmpty()) { + return saveAs(); + } else { + return saveFile(curFile); + } +} + +bool GpgWin::saveAs() +{ + QString fileName = QFileDialog::getSaveFileName(this); + if (fileName.isEmpty()) + return false; + + return saveFile(fileName); +} + +void GpgWin::loadFile(const QString &fileName) +{ + QFile file(fileName); + if (!file.open(QFile::ReadOnly | QFile::Text)) { + QMessageBox::warning(this, tr("Application"), + tr("Cannot read file %1:\n%2.") + .arg(fileName) + .arg(file.errorString())); + return; + } + + QTextStream in(&file); + QApplication::setOverrideCursor(Qt::WaitCursor); + edit->setPlainText(in.readAll()); + QApplication::restoreOverrideCursor(); + + setCurrentFile(fileName); + statusBar()->showMessage(tr("File loaded"), 2000); +} + +void GpgWin::setCurrentFile(const QString &fileName) +{ + curFile = fileName; + edit->document()->setModified(false); + setWindowModified(false); + + QString shownName; + if (curFile.isEmpty()) + shownName = tr("untitled.txt"); + else + shownName = strippedName(curFile); + + setWindowTitle(tr("%1[*] - %2").arg(shownName).arg(qApp->applicationName())); +} + +QString GpgWin::strippedName(const QString &fullFileName) +{ + return QFileInfo(fullFileName).fileName(); +} + +bool GpgWin::maybeSave() +{ + if (edit->document()->isModified()) { + QMessageBox::StandardButton ret; + ret = QMessageBox::warning(this, tr("Application"), + tr("The document has been modified.\nDo you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); + if (ret == QMessageBox::Save) + return save(); + else if (ret == QMessageBox::Cancel) + return false; + } + return true; +} + +bool GpgWin::saveFile(const QString &fileName) +{ + QFile file(fileName); + if (!file.open(QFile::WriteOnly | QFile::Text)) { + QMessageBox::warning(this, tr("File"), + tr("Cannot write file %1:\n%2.") + .arg(fileName) + .arg(file.errorString())); + return false; + } + QTextStream out(&file); + QApplication::setOverrideCursor(Qt::WaitCursor); + out << edit->toPlainText(); + QApplication::restoreOverrideCursor(); + statusBar()->showMessage(tr("Saved '%1'").arg(fileName), 2000); + return true; +} + +void GpgWin::print() +{ +#ifndef QT_NO_PRINTER + QTextDocument *document = edit->document(); + QPrinter printer; + + QPrintDialog *dlg = new QPrintDialog(&printer, this); + if (dlg->exec() != QDialog::Accepted) + return; + + document->print(&printer); + + statusBar()->showMessage(tr("Ready"), 2000); +#endif +} + +void GpgWin::about() +{ + QMessageBox::about(this, tr("About ") + qApp->applicationName(), + "<center><h2>" + qApp->applicationName() + " " + + qApp->applicationVersion() +"</h2></center>" + +tr("<center>This Application allows you to do simple<br>" + "encryption/decryption of your text-files.<br>" + "It's licensed under the GPL v2.0<br><br>" + "<b>Developer:</b><br>" + "Bene, Heimer, Juergen, Nils, Ubbo<br><br>" + "If you have any questions and/or<br>" + "suggestions, contact us at<br>" + "gpg4usb at cpunk.de</a><br><br>" + "or feel free to meet us in our channel at<br>" + "gpg4usb at conference.jabber.ccc.de<br><br>" + "and always remember:<br>" + "cpunk is NOT a bot...</center>")); +} + +void GpgWin::encrypt() +{ + QList<QString> *uidList = m_keyList->getChecked(); + + QByteArray *tmp = new QByteArray(); + if (myCtx->encrypt(uidList, edit->toPlainText().toAscii(), tmp)) { + QString *tmp2 = new QString(*tmp); + edit->setPlainText(*tmp2); + } + +} + +void GpgWin::decrypt() +{ + QByteArray *tmp = new QByteArray(); + myCtx->decrypt(edit->toPlainText().toAscii(), tmp); + if (!tmp->isEmpty()) { + QString *tmp2 = new QString(*tmp); + edit->setPlainText(*tmp2); + } +} + +void GpgWin::importKeyFromEdit() +{ + myCtx->importKey(edit->toPlainText().toAscii()); + m_keyList->refresh(); +} + + +void GpgWin::importKeyFromFile() +{ + QString fileName = QFileDialog::getOpenFileName(this, tr("Open Key"), "", tr("Key Files") + " (*.asc *.txt);;All Files (*.*)"); + if (! fileName.isNull()) { + QFile file; + file.setFileName(fileName); + if (!file.open(QIODevice::ReadOnly)) { + qDebug() << tr("couldn't open file: ") + fileName; + } + QByteArray inBuffer = file.readAll(); + + myCtx->importKey(inBuffer); + m_keyList->refresh(); + } +} + diff --git a/gpgwin.h b/gpgwin.h new file mode 100644 index 0000000..975c87a --- /dev/null +++ b/gpgwin.h @@ -0,0 +1,87 @@ +/* + * gpgwin.h + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include <QWidget> +#include <QMainWindow> +#include <QtGui> +#include "context.h" +#include "keylist.h" + +class QAction; +class QMenu; +class QPlainTextEdit; + +class GpgWin : public QMainWindow +{ + Q_OBJECT + +public: + GpgWin(); + +protected: + void closeEvent(QCloseEvent *event); + +public slots: + void encrypt(); + void decrypt(); + void importKeyFromFile(); + void importKeyFromEdit(); + void print(); + void about(); + bool save(); + bool saveAs(); + void open(); + +private: + void createActions(); + void createMenus(); + void createToolBars(); + void createStatusBar(); + void createDockWindows(); + bool saveFile(const QString &fileName); + void loadFile(const QString &fileName); + void setCurrentFile(const QString &fileName); + bool maybeSave(); + QString strippedName(const QString &fullFileName); + + QPlainTextEdit *edit; + QMenu *fileMenu; + QToolBar *fileToolBar; + QToolBar *editToolBar; + QAction *openAct; + QAction *saveAct; + QAction *saveAsAct; + QAction *printAct; + QAction *quitAct; + QAction *encryptAct; + QAction *decryptAct; + QAction *importKeyFromFileAct; + QAction *importKeyFromEditAct; + QAction *copyAct; + QAction *cutAct; + QAction *pasteAct; + QAction *selectallAct; + QAction *aboutAct; + + QString curFile; + KeyList *m_keyList; + GpgME::Context *myCtx; + QString iconPath; +}; diff --git a/keylist.cpp b/keylist.cpp new file mode 100644 index 0000000..710afc7 --- /dev/null +++ b/keylist.cpp @@ -0,0 +1,129 @@ +/* + * keylist.cpp + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include <QWidget> +#include <QVBoxLayout> +#include <QListWidgetItem> +#include <QLabel> +#include <QMessageBox> +#include <QtGui> +#include "keylist.h" + +KeyList::KeyList(QWidget *parent) + : QWidget(parent) +{ + m_keyList = new QListWidget(); + m_idList = new QList<QString>(); + m_deleteButton = new QPushButton(tr("Delete Selected Keys")); + + connect(m_deleteButton, SIGNAL(clicked()), this, SLOT(deleteKeys())); + + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(m_keyList); + layout->addWidget(m_deleteButton); + setLayout(layout); + createActions(); + +} + +void KeyList::setContext(GpgME::Context *ctx) +{ + m_ctx = ctx; + refresh(); +} + +void KeyList::setIconPath(QString path) +{ + this->iconPath = path; +} + +void KeyList::contextMenuEvent(QContextMenuEvent *event) +{ + QMenu menu(this); + menu.addAction(deleteKeyAct); + menu.exec(event->globalPos()); +} + +void KeyList::refresh() +{ + m_keyList->clear(); + m_idList->clear(); + + GpgKeyList keys = m_ctx->listKeys(); + GpgKeyList::iterator it = keys.begin(); + while (it != keys.end()) { + QListWidgetItem *tmp = new QListWidgetItem( + it->name + " <" + it->email + ">" + ); + tmp->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); + tmp->setCheckState(Qt::Unchecked); + if (it->privkey == 1) tmp->setIcon(QIcon(iconPath + "kgpg_key2.png")); + m_keyList->addItem(tmp); + + *m_idList << QString(it->id); + it++; + } +} + + +QList<QString> *KeyList::getChecked() +{ + QList<QString> *ret = new QList<QString>(); + for (int i = 0; i < m_keyList->count(); i++) { + if (m_keyList->item(i)->checkState() == Qt::Checked) { + *ret << m_idList->at(i); + } + } + return ret; +} + +QList<QString> *KeyList::getSelected() +{ + QList<QString> *ret = new QList<QString>(); + for (int i = 0; i < m_keyList->count(); i++) { + if (m_keyList->item(i)->isSelected() == 1) { + *ret << m_idList->at(i); + } + } + return ret; +} + +void KeyList::deleteKeys() +{ + + m_ctx->deleteKeys(getChecked()); + refresh(); + +} + +void KeyList::deleteKey() +{ + + m_ctx->deleteKeys(getSelected()); + refresh(); + +} + +void KeyList::createActions() +{ + deleteKeyAct = new QAction(tr("Delete Key"), this); + deleteKeyAct->setStatusTip(tr("Delete the selected keys")); + connect(deleteKeyAct, SIGNAL(triggered()), this, SLOT(deleteKey())); +} diff --git a/keylist.h b/keylist.h new file mode 100644 index 0000000..2dec360 --- /dev/null +++ b/keylist.h @@ -0,0 +1,55 @@ +/* + * keylist.h + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#include <QWidget> +#include <QListWidget> +#include <QPushButton> +#include "context.h" + +class QMenu; + +class KeyList : public QWidget +{ + Q_OBJECT + +public slots: + void deleteKeys(); + void deleteKey(); + +public: + KeyList(QWidget *parent = 0); + void setContext(GpgME::Context *ctx); + void setIconPath(QString iconPath); + QList<QString> *getChecked(); + QList<QString> *getSelected(); + void refresh(); + +private: + GpgME::Context *m_ctx; + QListWidget *m_keyList; + QList<QString> *m_idList; + QPushButton *m_deleteButton; + QAction *deleteKeyAct; + void createActions(); + QString iconPath; + +protected: + void contextMenuEvent(QContextMenuEvent *event); +}; diff --git a/lib/libgpgme.a b/lib/libgpgme.a Binary files differnew file mode 100644 index 0000000..2f164f0 --- /dev/null +++ b/lib/libgpgme.a diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..17b2400 --- /dev/null +++ b/main.cpp @@ -0,0 +1,54 @@ +/* + * main.cpp + * + * Copyright 2008 gpg4usb-team <[email protected]> + * + * 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., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include <QApplication> +#include "gpgwin.h" + +int main(int argc, char *argv[]) +{ + +#ifndef _WIN32 + // do not use GPG_AGENTS like seahorse, because they may save + // a password an pc's not owned by user + unsetenv("GPG_AGENT_INFO"); +#endif + + QApplication app(argc, argv); + + app.setApplicationVersion("0.1"); + app.setApplicationName("gpg4usb"); + + //internationalize + QString locale = QLocale::system().name(); + QTranslator translator; + translator.load(QString("ts/gpg4usb_") + locale); + app.installTranslator(&translator); + + GpgWin *window = new GpgWin(); + window->resize(800, 450); + + window->show(); + + return app.exec(); +} + + + diff --git a/release/COPYING b/release/COPYING new file mode 100644 index 0000000..94fb846 --- /dev/null +++ b/release/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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 Lesser General +Public License instead of this License. diff --git a/release/README b/release/README new file mode 100644 index 0000000..ba5b274 --- /dev/null +++ b/release/README @@ -0,0 +1,45 @@ +ABOUT +----- +gpg4usb is an easy to use, small portable editor with the possibility +to encrypt and decrypt any text-message or -file you want. For encryption it acts as +a gpg-frontend (http://gnupg.org/). Its intend is to be used from an usb-stick, +running on Windows(TM) and Linux. Providing a mac-binary is on our TODO-list. + +Our aim is, to give anyone the possibility to send and receive secure encrypted +messages anywhere - on any computer out there, no matter if Microsoft Windows(TM) +or Linux is running on it. Therefore it's usage should be self-describing, and the +user-interface is kept as simple as possible. + +Of course gpg4usb is open source, as are included libs and binaries. + +OBTAINING +--------- +You can get prepacked zip-files from http://gpg4usb.cpunk.de/download.html . +For retrieving the source checkout http://cpunk.de/svn/src/ . + +HOWTO USE +--------- +1. Unzip gpg4usblib.zip on your usb-stick. +2. start programm with start_windows.exe or start_linux (depending on your os) +3. import your private key and some public keys +4. enjoy portable encryption ;-) + +CONTACT +------- +If you have any questions and/or suggestions contact us at [email protected] - or feel free to meet us at [email protected] + +Our homepage is located at http://gpg4usb.cpunk.de . + +LICENSES +-------- +gpg4usblib itself is licensed under the GPL (see COPYING). + +There are some libries and the gpg-binary included in the zip-file / a static +gpg-build which (may) have different licenses, for more information check +their homepages. You can also obtain the sources from there. + +GPG: http://gnupg.org/ +QT: http://trolltech.no/ , http://trolltech.no/downloads/opensource + +Iconset used is Nuvola (http://icon-king.com/?p=15), which has a LGPL License diff --git a/release/bin/COPYING.txt b/release/bin/COPYING.txt new file mode 100644 index 0000000..5b244d5 --- /dev/null +++ b/release/bin/COPYING.txt @@ -0,0 +1,676 @@ +
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. 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
+them 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 prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. 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.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey 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;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU 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 that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ 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.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ 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
+state 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 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program 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, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU 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 Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/release/bin/README.txt b/release/bin/README.txt new file mode 100644 index 0000000..1683a89 --- /dev/null +++ b/release/bin/README.txt @@ -0,0 +1,822 @@ +
+ GnuPG - The GNU Privacy Guard
+ -------------------------------
+ Version 1.4.9
+
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+ This file is free software; as a special exception the author
+ gives unlimited permission to copy and/or distribute it, with or
+ without modifications, as long as this notice is preserved.
+
+ This file is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, to the extent permitted by law; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ PARTICULAR PURPOSE.
+
+
+ Intro
+ -----
+
+ GnuPG is GNU's tool for secure communication and data storage.
+ It can be used to encrypt data and to create digital signatures.
+ It includes an advanced key management facility and is compliant
+ with the proposed OpenPGP Internet standard as described in RFC2440.
+
+ GnuPG works best on GNU/Linux or *BSD systems. Most other Unices
+ are also supported but are not as well tested as the Free Unices.
+ See http://www.gnupg.org/download/supported_systems.html for a
+ list of systems which are known to work.
+
+ See the file COPYING for copyright and warranty information.
+
+ Because GnuPG does not use use any patented algorithms it is not
+ by default fully compatible with PGP 2.x, which uses the patented
+ IDEA algorithm. See http://www.gnupg.org/why-not-idea.html for
+ more information on this subject, including what to do if you are
+ legally entitled to use IDEA.
+
+ The default public key algorithms are DSA and Elgamal, but RSA is
+ also supported. Symmetric algorithms available are AES (with 128,
+ 192, and 256 bit keys), 3DES, Blowfish, CAST5 and Twofish. Digest
+ algorithms available are MD5, RIPEMD/160, SHA-1, SHA-256, SHA-384,
+ and SHA-512. Compression algorithms available are ZIP, ZLIB, and
+ BZIP2 (with libbz2 installed).
+
+
+ Installation
+ ------------
+
+ Please read the file INSTALL and the sections in this file
+ related to the installation. Here is a quick summary:
+
+ 1) Check that you have unmodified sources. See below on how to do
+ this. Don't skip it - this is an important step!
+
+ 2) Unpack the tarball. With GNU tar you can do it this way:
+ "tar xzvf gnupg-x.y.z.tar.gz". If got a bzip2 compressed
+ tarball you need to use: "tar xjvf gnupg-x.y.z.tar.bz2".
+
+ 3) "cd gnupg-x.y.z"
+
+ 4) "./configure"
+
+ 5) "make"
+
+ 6) "make install"
+
+ 7) You end up with a "gpg" binary in /usr/local/bin.
+
+ 8) To avoid swapping out of sensitive data, you can install "gpg"
+ setuid root. If you don't do so, you may want to add the
+ option "no-secmem-warning" to ~/.gnupg/gpg.conf
+
+
+ How to Verify the Source
+ ------------------------
+
+ In order to check that the version of GnuPG which you are going to
+ install is an original and unmodified one, you can do it in one of
+ the following ways:
+
+ a) If you already have a trusted Version of GnuPG installed, you
+ can simply check the supplied signature:
+
+ $ gpg --verify gnupg-x.y.z.tar.gz.sig
+
+ This checks that the detached signature gnupg-x.y.z.tar.gz.sig
+ is indeed a signature of gnupg-x.y.z.tar.gz. The key currently
+ used to create this signature is:
+
+ "pub 1024R/1CE0C630 2006-01-01 Werner Koch (dist sig) <[email protected]>"
+
+ If you do not have this key, you can get it from the source in
+ the file doc/samplekeys.asc (use "gpg --import doc/samplekeys.asc"
+ to add it to the keyring) or from any keyserver. You have to
+ make sure that this is really the key and not a faked one. You
+ can do this by comparing the output of:
+
+ $ gpg --fingerprint 0x1CE0C630
+
+ with the fingerprint published elsewhere.
+
+ Please note, that you have to use an old version of GnuPG to
+ do all this stuff. *Never* use the version which you are going
+ to check!
+
+
+ b) If you don't have any of the above programs, you have to verify
+ the SHA1 checksum:
+
+ $ sha1sum gnupg-x.y.z.tar.gz
+
+ This should yield an output _similar_ to this:
+
+ fd9351b26b3189c1d577f0970f9dcadc1234abcd gnupg-x.y.z.tar.gz
+
+ Now check that this checksum is _exactly_ the same as the one
+ published via the announcement list and probably via Usenet.
+
+
+ Documentation
+ -------------
+
+ The manual will be distributed separately under the name "gph".
+ An online version of the latest manual draft is available at the
+ GnuPG web pages:
+
+ http://www.gnupg.org/documentation/
+
+ A list of frequently asked questions is available in the GnuPG
+ distribution in the file doc/FAQ and online as:
+
+ http://www.gnupg.org/documentation/faqs.html
+
+ A couple of HOWTO documents are available online; for a listing see:
+
+ http://www.gnupg.org/documentation/howtos.html
+
+ A man page with a description of all commands and options gets installed
+ along with the program.
+
+
+ Introduction
+ ------------
+
+ Here is a brief overview on how to use GnuPG - it is strongly suggested
+ that you read the manual and other information about the use of
+ cryptography. GnuPG is only a tool, secure usage requires that
+ YOU KNOW WHAT YOU ARE DOING.
+
+ The first time you run gpg, it will create a .gnupg directory in
+ your home directory and populate it with a default configuration
+ file. Once this is done, you may create a new key, or if you
+ already have keyrings from PGP, you can import them into GnuPG
+ with:
+
+ gpg --import path/to/pgp/keyring/pubring.pkr
+ and
+ gpg --import path/to/pgp/keyring/secring.skr
+
+ The normal way to create a key is
+
+ gpg --gen-key
+
+ This asks some questions and then starts key generation. To create
+ good random numbers for the key parameters, GnuPG needs to gather
+ enough noise (entropy) from your system. If you see no progress
+ during key generation you should start some other activities such
+ as moving the mouse or hitting the CTRL and SHIFT keys.
+
+ Generate a key ONLY on a machine where you have direct physical
+ access - don't do it over the network or on a machine also used
+ by others, especially if you have no access to the root account.
+
+ When you are asked for a passphrase use a good one which you can
+ easily remember. Don't make the passphrase too long because you
+ have to type it for every decryption or signing; but, - AND THIS
+ IS VERY IMPORTANT - use a good one that is not easily to guess
+ because the security of the whole system relies on your secret key
+ and the passphrase that protects it when someone gains access to
+ your secret keyring. One good way to select a passphrase is to
+ figure out a short nonsense sentence which makes some sense for
+ you and modify it by inserting extra spaces, non-letters and
+ changing the case of some characters - this is really easy to
+ remember especially if you associate some pictures with it.
+
+ Next, you should create a revocation certificate in case someone
+ gets knowledge of your secret key or you forgot your passphrase
+
+ gpg --gen-revoke your_user_id
+
+ Run this command and store the revocation certificate away. The output
+ is always ASCII armored, so that you can print it and (hopefully
+ never) re-create it if your electronic media fails.
+
+ Now you can use your key to create digital signatures
+
+ gpg -s file
+
+ This creates a file "file.gpg" which is compressed and has a
+ signature attached.
+
+ gpg -sa file
+
+ Same as above, but creates a file "file.asc" which is ASCII armored
+ and and ready for sending by mail. It is better to use your
+ mailers features to create signatures (The mailer uses GnuPG to do
+ this) because the mailer has the ability to MIME encode such
+ signatures - but this is not a security issue.
+
+ gpg -s -o out file
+
+ Creates a signature of "file", but writes the output to the file
+ "out".
+
+ Everyone who knows your public key (you can and should publish
+ your key by putting it on a key server, a web page or in your .plan
+ file) is now able to check whether you really signed this text
+
+ gpg --verify file
+
+ GnuPG now checks whether the signature is valid and prints an
+ appropriate message. If the signature is good, you know at least
+ that the person (or machine) has access to the secret key which
+ corresponds to the published public key.
+
+ If you run gpg without an option it will verify the signature and
+ create a new file that is identical to the original. gpg can also
+ run as a filter, so that you can pipe data to verify trough it
+
+ cat signed-file | gpg | wc -l
+
+ which will check the signature of signed-file and then display the
+ number of lines in the original file.
+
+ To send a message encrypted to someone you can use
+
+ gpg -e -r heine file
+
+ This encrypts "file" with the public key of the user "heine" and
+ writes it to "file.gpg"
+
+ echo "hello" | gpg -ea -r heine | mail heine
+
+ Ditto, but encrypts "hello\n" and mails it as ASCII armored message
+ to the user with the mail address heine.
+
+ gpg -se -r heine file
+
+ This encrypts "file" with the public key of "heine" and writes it
+ to "file.gpg" after signing it with your user id.
+
+ gpg -se -r heine -u Suttner file
+
+ Ditto, but sign the file with your alternative user id "Suttner"
+
+
+ GnuPG has some options to help you publish public keys. This is
+ called "exporting" a key, thus
+
+ gpg --export >all-my-keys
+
+ exports all the keys in the keyring and writes them (in a binary
+ format) to "all-my-keys". You may then mail "all-my-keys" as an
+ MIME attachment to someone else or put it on an FTP server. To
+ export only some user IDs, you give them as arguments on the command
+ line.
+
+ To mail a public key or put it on a web page you have to create
+ the key in ASCII armored format
+
+ gpg --export --armor | mail [email protected]
+
+ This will send all your public keys to your friend panther.
+
+ If you have received a key from someone else you can put it
+ into your public keyring. This is called "importing"
+
+ gpg --import [filenames]
+
+ New keys are appended to your keyring and already existing
+ keys are updated. Note that GnuPG does not import keys that
+ are not self-signed.
+
+ Because anyone can claim that a public key belongs to her
+ we must have some way to check that a public key really belongs
+ to the owner. This can be achieved by comparing the key during
+ a phone call. Sure, it is not very easy to compare a binary file
+ by reading the complete hex dump of the file - GnuPG (and nearly
+ every other program used for management of cryptographic keys)
+ provides other solutions.
+
+ gpg --fingerprint <username>
+
+ prints the so called "fingerprint" of the given username which
+ is a sequence of hex bytes (which you may have noticed in mail
+ sigs or on business cards) that uniquely identifies the public
+ key - different keys will always have different fingerprints.
+ It is easy to compare fingerprints by phone and I suggest
+ that you print your fingerprint on the back of your business
+ card. To see the fingerprints of the secondary keys, you can
+ give the command twice; but this is normally not needed.
+
+ If you don't know the owner of the public key you are in trouble.
+ Suppose however that friend of yours knows someone who knows someone
+ who has met the owner of the public key at some computer conference.
+ Suppose that all the people between you and the public key holder
+ may now act as introducers to you. Introducers signing keys thereby
+ certify that they know the owner of the keys they sign. If you then
+ trust all the introducers to have correctly signed other keys, you
+ can be be sure that the other key really belongs to the one who
+ claims to own it.
+
+ There are 2 steps to validate a key:
+ 1. First check that there is a complete chain
+ of signed keys from the public key you want to use
+ and your key and verify each signature.
+ 2. Make sure that you have full trust in the certificates
+ of all the introduces between the public key holder and
+ you.
+ Step 2 is the more complicated part because there is no easy way
+ for a computer to decide who is trustworthy and who is not. GnuPG
+ leaves this decision to you and will ask you for a trust value
+ (here also referenced as the owner-trust of a key) for every key
+ needed to check the chain of certificates. You may choose from:
+ a) "I don't know" - then it is not possible to use any
+ of the chains of certificates, in which this key is used
+ as an introducer, to validate the target key. Use this if
+ you don't know the introducer.
+ b) "I do not trust" - Use this if you know that the introducer
+ does not do a good job in certifying other keys. The effect
+ is the same as with a) but for a) you may later want to
+ change the value because you got new information about this
+ introducer.
+ c) "I trust marginally" - Use this if you assume that the
+ introducer knows what he is doing. Together with some
+ other marginally trusted keys, GnuPG validates the target
+ key then as good.
+ d) "I fully trust" - Use this if you really know that this
+ introducer does a good job when certifying other keys.
+ If all the introducer are of this trust value, GnuPG
+ normally needs only one chain of signatures to validate
+ a target key okay. (But this may be adjusted with the help
+ of some options).
+ This information is confidential because it gives your personal
+ opinion on the trustworthiness of someone else. Therefore this data
+ is not stored in the keyring but in the "trustdb"
+ (~/.gnupg/trustdb.gpg). Do not assign a high trust value just
+ because the introducer is a friend of yours - decide how well she
+ understands the implications of key signatures and you may want to
+ tell her more about public key cryptography so you can later change
+ the trust value you assigned.
+
+ Okay, here is how GnuPG helps you with key management. Most stuff
+ is done with the --edit-key command
+
+ gpg --edit-key <keyid or username>
+
+ GnuPG displays some information about the key and then prompts
+ for a command (enter "help" to see a list of commands and see
+ the man page for a more detailed explanation). To sign a key
+ you select the user ID you want to sign by entering the number
+ that is displayed in the leftmost column (or do nothing if the
+ key has only one user ID) and then enter the command "sign" and
+ follow all the prompts. When you are ready, give the command
+ "save" (or use "quit" to cancel your actions).
+
+ If you want to sign the key with another of your user IDs, you
+ must give an "-u" option on the command line together with the
+ "--edit-key".
+
+ Normally you want to sign only one user ID because GnuPG
+ uses only one and this keeps the public key certificate
+ small. Because such key signatures are very important you
+ should make sure that the signatories of your key sign a user ID
+ which is very likely to stay for a long time - choose one with an
+ email address you have full control of or do not enter an email
+ address at all. In future GnuPG will have a way to tell which
+ user ID is the one with an email address you prefer - because
+ you have no signatures on this email address it is easy to change
+ this address. Remember, your signatories sign your public key (the
+ primary one) together with one of your user IDs - so it is not possible
+ to change the user ID later without voiding all the signatures.
+
+ Tip: If you hear about a key signing party on a computer conference
+ join it because this is a very convenient way to get your key
+ certified (But remember that signatures have nothing to to with the
+ trust you assign to a key).
+
+
+ 8 Ways to Specify a User ID
+ ---------=-----------------
+
+ There are several ways to specify a user ID, here are some examples.
+
+ * Only by the short keyid (prepend a zero if it begins with A..F):
+
+ "234567C4"
+ "0F34E556E"
+ "01347A56A"
+ "0xAB123456
+
+ * By a complete keyid:
+
+ "234AABBCC34567C4"
+ "0F323456784E56EAB"
+ "01AB3FED1347A5612"
+ "0x234AABBCC34567C4"
+
+ * By a fingerprint:
+
+ "1234343434343434C434343434343434"
+ "123434343434343C3434343434343734349A3434"
+ "0E12343434343434343434EAB3484343434343434"
+
+ The first one is a short fingerprint for PGP 2.x style keys.
+ The others are long fingerprints for OpenPGP keys.
+
+ * By an exact string:
+
+ "=Heinrich Heine <[email protected]>"
+
+ * By an email address:
+
+ "<[email protected]>"
+
+ * By word match
+
+ "+Heinrich Heine duesseldorf"
+
+ All words must match exactly (not case sensitive) and appear in
+ any order in the user ID. Words are any sequences of letters,
+ digits, the underscore and characters with bit 7 set.
+
+ * Or by the usual substring:
+
+ "Heine"
+ "*Heine"
+
+ The '*' indicates substring search explicitly.
+
+
+ Batch mode
+ ----------
+
+ If you use the option "--batch", GnuPG runs in non-interactive mode and
+ never prompts for input data. This does not even allow entering the
+ passphrase. Until we have a better solution (something like ssh-agent),
+ you can use the option "--passphrase-fd n", which works like PGP's
+ PGPPASSFD.
+
+ Batch mode also causes GnuPG to terminate as soon as a BAD signature is
+ detected.
+
+
+ Exit status
+ -----------
+
+ GnuPG returns with an exit status of 1 if in batch mode and a bad signature
+ has been detected or 2 or higher for all other errors. You should parse
+ stderr or, better, the output of the fd specified with --status-fd to get
+ detailed information about the errors.
+
+
+ Configure options
+ -----------------
+
+ Here is a list of configure options which are sometime useful
+ for installation.
+
+ --enable-static-rnd=<name>
+ Force the use of the random byte gathering
+ module <name>. Default is either to use /dev/random
+ or the auto mode. Value for name:
+ egd - Use the module which accesses the
+ Entropy Gathering Daemon. See the webpages
+ for more information about it.
+ unix - Use the standard Unix module which does not
+ have a very good performance.
+ linux - Use the module which accesses /dev/random.
+ This is the first choice and the default one
+ for GNU/Linux or *BSD.
+ auto - Compile linux, egd and unix in and
+ automagically select at runtime.
+
+ --with-egd-socket=<name>
+ This is only used when EGD is used as random
+ gatherer. GnuPG uses by default "~/.gnupg/entropy"
+ as the socket to connect EGD. Using this option the
+ socket name can be changed. You may use any filename
+ here with 2 exceptions: a filename starting with
+ "~/" uses the socket in the home directory of the user
+ and one starting with a "=" uses a socket in the
+ GnuPG home directory which is "~/.gnupg" by default.
+
+ --without-readline
+ Do not include support for the readline library
+ even if it is available. The default is to check
+ whether the readline library is a available and
+ use it to allow fancy command line editing.
+
+ --with-included-zlib
+ Forces usage of the local zlib sources. Default is
+ to use the (shared) library of the system.
+
+ --with-zlib=<DIR>
+ Look for the system zlib in DIR.
+
+ --with-bzip2=<DIR>
+ Look for the system libbz2 in DIR.
+
+ --without-bzip2
+ Disable the BZIP2 compression algorithm.
+
+ --with-included-gettext
+ Forces usage of the local gettext sources instead of
+ the one provided by your system.
+
+ --disable-nls
+ Disable NLS support (See the file ABOUT-NLS)
+
+ --enable-m-guard
+ Enable the integrated malloc checking code. Please
+ note that this feature does not work on all CPUs
+ (e.g. SunOS 5.7 on UltraSparc-2) and might give
+ you a bus error.
+
+ --disable-dynload
+ If you have problems with dynamic loading, this
+ option disables all dynamic loading stuff. Note
+ that the use of dynamic linking is very limited.
+
+ --disable-asm
+ Do not use assembler modules. It is not possible
+ to use this on some CPU types.
+
+ --disable-exec
+ Disable all remote program execution. This
+ disables photo ID viewing as well as all keyserver
+ access.
+
+ --disable-photo-viewers
+ Disable only photo ID viewing.
+
+ --disable-keyserver-helpers
+ Disable only keyserver helpers.
+
+ --disable-keyserver-path
+ Disables the user's ability to use the exec-path
+ feature to add additional search directories when
+ executing a keyserver helper.
+
+ --with-photo-viewer=FIXED_VIEWER
+ Force the photo viewer to be FIXED_VIEWER and
+ disable any ability for the user to change it in
+ their options file.
+
+ --disable-rsa
+ Removes support for the RSA public key algorithm.
+ This can give a smaller gpg binary for places
+ where space is tight.
+
+ --disable-idea
+ --disable-cast5
+ --disable-blowfish
+ --disable-aes
+ --disable-twofish
+ --disable-sha256
+ --disable-sha512
+ Removes support for the selected symmetric or hash
+ algorithm. This can give a smaller gpg binary for
+ places where space is tight.
+
+ **** Note that if there are existing keys that
+ have one of these algorithms as a preference,
+ messages may be received that use one of these
+ algorithms and you will not be able to decrypt the
+ message! ****
+
+ The public key preference list can be updated to
+ match the list of available algorithms by using
+ "gpg --edit-key (thekey)", and running the
+ "setpref" command.
+
+ --enable-minimal
+ Build the smallest gpg binary possible (disables
+ all optional algorithms, disables keyserver
+ access, and disables photo IDs). Specifically,
+ this means --disable-rsa --disable-idea,
+ --disable-cast5, --disable-blowfish,
+ --disable-aes, --disable-twofish,
+ --disable-sha256, --disable-sha512,
+ --without-bzip2, --disable-exec,
+ --disable-card-support and
+ --disable-agent-support.
+ Configure command lines are read from left to
+ right, so if you want to have an "almost minimal"
+ configuration, you can do (for example)
+ "--enable-minimal --enable-rsa" to have RSA added
+ to the minimal build.
+
+ --enable-key-cache=SIZE
+ Set the internal key and UID cache size. This has
+ a significant impact on performance with large
+ keyrings. The default is 4096, but for use on
+ platforms where memory is an issue, it can be set
+ as low as 5.
+
+ --disable-card-support
+ Do not include smartcard support. The default is
+ to include support if all required libraries are
+ available.
+
+ --disable-agent-support
+ Do not include support for the gpg-agent. The
+ default is to include support.
+
+ --enable-selinux-support
+ This prevents access to certain files and won't
+ allow import or export of secret keys.
+
+ --enable-noexecstack
+ Pass option --noexecstack to as. Autdetect wether
+ the tool chain actually support this.
+
+ --disable-gnupg-iconv
+ If iconv is available it is used to convert
+ between utf-8 and the system character set. This
+ is in general the preferable solution. However
+ the code is new and under some cirumstances it may
+ give different output than with the limited old
+ support. This option allows to explicity disable
+ the use of iconv. Note, that iconv is also
+ disabled if gettext has been disabled.
+
+
+ Installation Problems
+ ---------------------
+
+ If you get unresolved externals "gettext" you should run configure
+ again with the option "--with-included-gettext"; this is version
+ 0.12.1 which is available at ftp.gnu.org.
+
+ If you have other compile problems, try the configure options
+ "--with-included-zlib" or "--disable-nls" (See ABOUT-NLS) or
+ --disable-dynload.
+
+ We can't check all assembler files, so if you have problems
+ assembling them (or the program crashes) use --disable-asm with
+ ./configure. If you opt to delete individual replacement files in
+ hopes of using the remaining ones, be aware that the configure
+ scripts may consider several subdirectories to get all available
+ assembler files; be sure to delete the correct ones. The assembler
+ replacements are in C and in mpi/generic; never delete
+ udiv-qrnnd.S in any CPU directory, because there may be no C
+ substitute. Don't forget to delete "config.cache" and run
+ "./config.status --recheck". We have also heard reports of
+ problems when using versions of gcc earlier than 2.96 along with a
+ non-GNU assembler (as). If this applies to your platform, you can
+ either upgrade gcc to a more recent version, or use the GNU
+ assembler.
+
+ Some make tools are broken - the best solution is to use GNU's
+ make. Try gmake or grab the sources from a GNU archive and
+ install them.
+
+ On some OSF systems you may get unresolved externals. This is a
+ libtool problem and the workaround is to manually remove all the
+ "-lc -lz" but the last one from the linker line and execute them
+ manually.
+
+ On some architectures you see warnings like:
+ longlong.h:175: warning: function declaration isn't a prototype
+ or
+ http.c:647: warning: cast increases required alignment of target type
+ This doesn't matter and we know about it (actually it is due to
+ some warning options which we have enabled for gcc)
+
+ If you are cross-compiling and you get an error either building a
+ tool called "yat2m" or running that tool, the problem is most
+ likely a bad or missing native compiler. We require a standard
+ C-89 compiler to produce an executable to be run on the build
+ platform. You can explicitly set such a compiler with configure
+ arguments. On HP/UX you might want to try: "CC_FOR_BUILD=c89".
+
+
+
+ Specific problems on some machines
+ ----------------------------------
+
+ * Apple Darwin 6.1:
+
+ ./configure --with-libiconv-prefix=/sw
+
+ * IBM RS/6000 running AIX:
+
+ Due to a change in gcc (since version 2.8) the MPI stuff may
+ not build. In this case try to run configure using:
+ CFLAGS="-g -O2 -mcpu=powerpc" ./configure
+
+ * SVR4.2 (ESIX V4.2 cc)
+
+ Due to problems with the ESIX as, you probably want to do
+ CFLAGS="-O -K pentium" ./configure --disable-asm
+
+ * SunOS 4.1.4
+
+ ./configure ac_cv_sys_symbol_underscore=yes
+
+
+ The Random Device
+ -----------------
+
+ Random devices are available in Linux, FreeBSD and OpenBSD.
+ Operating systems without a random devices must use another
+ entropy collector.
+
+ This collector works by running a lot of commands that yield more
+ or less unpredictable output and feds this as entropy into the
+ random generator - It should work reliably but you should check
+ whether it produces good output for your version of Unix. There
+ are some debug options to help you (see cipher/rndunix.c).
+
+
+ Creating an RPM package
+ -----------------------
+
+ The file scripts/gnupg.spec is used to build a RPM package (both
+ binary and src):
+ 1. copy the spec file into /usr/src/redhat/SPECS
+ 2. copy the tar file into /usr/src/redhat/SOURCES
+ 3. type: rpm -ba SPECS/gnupg.spec
+
+ Or use the -t (--tarbuild) option of rpm:
+ 1. rpm -ta gnupg-x.x.x.tar.gz
+
+ The binary rpm file can now be found in /usr/src/redhat/RPMS, source
+ rpm in /usr/src/redhat/SRPMS
+
+
+ Building Universal Binaries on Apple OS X
+ -----------------------------------------
+
+ You can build a universal ("fat") binary that will work on both
+ PPC and Intel Macs with something like:
+
+ ./configure CFLAGS="-arch ppc -arch i386" --disable-endian-check \
+ --disable-dependency-tracking --disable-asm
+
+ If you are doing the build on a OS X 10.4 (Tiger) PPC machine you
+ may need to add "-isysroot /Developer/SDKs/MacOSX10.4u.sdk" to
+ those CFLAGS. This additional isysroot is not necessary on Intel
+ Tiger boxes, or any OS X 10.5 (Leopard) or later boxes.
+
+ Note that when building a universal binary, any third-party
+ libraries you may link with need to be universal as well. All
+ Apple-supplied libraries (even libraries not originally written by
+ Apple like curl, zip, and BZ2) are universal.
+
+
+ GnuPG 1.4 and GnuPG 2.0
+ -----------------------
+
+ GnuPG 2.0 is a newer version of GnuPG with additional support for
+ S/MIME. It has a different design philosophy that splits
+ functionality up into several modules. Both versions may be
+ installed simultaneously without any conflict (gpg is called gpg2
+ in GnuPG 2). In fact, the gpg version from GnuPG 1.4 is able to
+ make use of the gpg-agent as included in GnuPG 2 and allows for
+ seamless passphrase caching. The advantage of GnupG 1.4 is its
+ smaller size and no dependency on other modules at run and build
+ time.
+
+
+ How to Get More Information
+ ---------------------------
+
+ The primary WWW page is "http://www.gnupg.org"
+ The primary FTP site is "ftp://ftp.gnupg.org/gcrypt/"
+
+ See http://www.gnupg.org/download/mirrors.html for a list of
+ mirrors and use them if possible. You may also find GnuPG
+ mirrored on some of the regular GNU mirrors.
+
+ We have some mailing lists dedicated to GnuPG:
+
+ [email protected] For important announcements like
+ new versions and such stuff.
+ This is a moderated list and has
+ very low traffic. Do not post to
+ this list.
+
+ [email protected] For general user discussion and
+ help (English).
+
+ [email protected] German speaking counterpart of
+ gnupg-users.
+
+ [email protected] Russian speaking counterpart of
+ gnupg-users.
+
+ [email protected] GnuPG developers main forum.
+
+ You subscribe to one of the list by sending mail with a subject
+ of "subscribe" to [email protected], where x is the name of the
+ mailing list (gnupg-announce, gnupg-users, etc.). An archive of
+ the mailing lists are available at
+ http://www.gnupg.org/documentation/mailing-lists.html
+
+ Please direct bug reports to http://bugs.gnupg.org or post
+ them direct to the mailing list <[email protected]>.
+
+ Please direct questions about GnuPG to the users mailing list or
+ one of the pgp newsgroups; please do not direct questions to one
+ of the authors directly as we are busy working on improvements and
+ bug fixes. The English and German mailing lists are watched by
+ the authors and we try to answer questions when time allows us to
+ do so.
+
+ Commercial grade support for GnuPG is available; please see
+ http://www.gnupg.org/service.html .
diff --git a/release/bin/gpg b/release/bin/gpg Binary files differnew file mode 100755 index 0000000..af65ffb --- /dev/null +++ b/release/bin/gpg diff --git a/release/bin/gpg.exe b/release/bin/gpg.exe Binary files differnew file mode 100644 index 0000000..3cf1811 --- /dev/null +++ b/release/bin/gpg.exe diff --git a/release/icons/button_cancel.png b/release/icons/button_cancel.png Binary files differnew file mode 100644 index 0000000..75980de --- /dev/null +++ b/release/icons/button_cancel.png diff --git a/release/icons/button_copy.png b/release/icons/button_copy.png Binary files differnew file mode 100644 index 0000000..a04d2f7 --- /dev/null +++ b/release/icons/button_copy.png diff --git a/release/icons/button_cut.png b/release/icons/button_cut.png Binary files differnew file mode 100644 index 0000000..57c4711 --- /dev/null +++ b/release/icons/button_cut.png diff --git a/release/icons/button_ok.png b/release/icons/button_ok.png Binary files differnew file mode 100644 index 0000000..94aac4b --- /dev/null +++ b/release/icons/button_ok.png diff --git a/release/icons/button_paste.png b/release/icons/button_paste.png Binary files differnew file mode 100644 index 0000000..099c51f --- /dev/null +++ b/release/icons/button_paste.png diff --git a/release/icons/configure.png b/release/icons/configure.png Binary files differnew file mode 100644 index 0000000..2bf463b --- /dev/null +++ b/release/icons/configure.png diff --git a/release/icons/decrypted.png b/release/icons/decrypted.png Binary files differnew file mode 100644 index 0000000..2b49969 --- /dev/null +++ b/release/icons/decrypted.png diff --git a/release/icons/edit.png b/release/icons/edit.png Binary files differnew file mode 100644 index 0000000..bee2645 --- /dev/null +++ b/release/icons/edit.png diff --git a/release/icons/encrypted.png b/release/icons/encrypted.png Binary files differnew file mode 100644 index 0000000..4ae41ee --- /dev/null +++ b/release/icons/encrypted.png diff --git a/release/icons/exit.png b/release/icons/exit.png Binary files differnew file mode 100644 index 0000000..08e97b4 --- /dev/null +++ b/release/icons/exit.png diff --git a/release/icons/fileopen.png b/release/icons/fileopen.png Binary files differnew file mode 100644 index 0000000..7341929 --- /dev/null +++ b/release/icons/fileopen.png diff --git a/release/icons/fileprint.png b/release/icons/fileprint.png Binary files differnew file mode 100644 index 0000000..05e1598 --- /dev/null +++ b/release/icons/fileprint.png diff --git a/release/icons/filesave.png b/release/icons/filesave.png Binary files differnew file mode 100644 index 0000000..0006ad4 --- /dev/null +++ b/release/icons/filesave.png diff --git a/release/icons/filesaveas.png b/release/icons/filesaveas.png Binary files differnew file mode 100644 index 0000000..2be6df2 --- /dev/null +++ b/release/icons/filesaveas.png diff --git a/release/icons/help.png b/release/icons/help.png Binary files differnew file mode 100644 index 0000000..915f9fd --- /dev/null +++ b/release/icons/help.png diff --git a/release/icons/importkey_editor.png b/release/icons/importkey_editor.png Binary files differnew file mode 100644 index 0000000..4fa7e01 --- /dev/null +++ b/release/icons/importkey_editor.png diff --git a/release/icons/kgpg_export.png b/release/icons/kgpg_export.png Binary files differnew file mode 100644 index 0000000..ba72a3d --- /dev/null +++ b/release/icons/kgpg_export.png diff --git a/release/icons/kgpg_import.png b/release/icons/kgpg_import.png Binary files differnew file mode 100644 index 0000000..0226c2f --- /dev/null +++ b/release/icons/kgpg_import.png diff --git a/release/icons/kgpg_key2.png b/release/icons/kgpg_key2.png Binary files differnew file mode 100644 index 0000000..43e5a52 --- /dev/null +++ b/release/icons/kgpg_key2.png diff --git a/release/icons/undo.png b/release/icons/undo.png Binary files differnew file mode 100644 index 0000000..5cbf37d --- /dev/null +++ b/release/icons/undo.png diff --git a/release/keydb/gpg.conf b/release/keydb/gpg.conf new file mode 100755 index 0000000..32c4395 --- /dev/null +++ b/release/keydb/gpg.conf @@ -0,0 +1 @@ +lock-never diff --git a/release/keydb/pubring.gpg b/release/keydb/pubring.gpg Binary files differnew file mode 100644 index 0000000..acb4872 --- /dev/null +++ b/release/keydb/pubring.gpg diff --git a/release/mingwm10.dll b/release/mingwm10.dll Binary files differnew file mode 100644 index 0000000..d566c80 --- /dev/null +++ b/release/mingwm10.dll diff --git a/release/ts/gpg4usb_de.qm b/release/ts/gpg4usb_de.qm Binary files differnew file mode 100644 index 0000000..41d7199 --- /dev/null +++ b/release/ts/gpg4usb_de.qm diff --git a/release/ts/gpg4usb_de.ts b/release/ts/gpg4usb_de.ts new file mode 100644 index 0000000..ba3d1d5 --- /dev/null +++ b/release/ts/gpg4usb_de.ts @@ -0,0 +1,333 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS><TS version="1.1" language="de"> +<defaultcodec></defaultcodec> +<context> + <name>GpgWin</name> + <message> + <location filename="../gpgwin.cpp" line="66"/> + <source>&Open...</source> + <translation>Ö&ffnen...</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="68"/> + <source>Ctrl+O</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="69"/> + <source>Open an existing file</source> + <translation>Öffen Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="72"/> + <source>&Save</source> + <translation>&Speichern</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="74"/> + <source>Ctrl+S</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="75"/> + <source>Save the current File</source> + <translation>Speichere Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="78"/> + <source>Save &As</source> + <translation type="unfinished">Speichern &unter</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="120"/> + <source>Ctrl+A</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="81"/> + <source>Save the current File as...</source> + <translation>Speichere aktuelle Datei als....</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="84"/> + <source>&Print</source> + <translation>&Drucken</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="86"/> + <source>Ctrl+P</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="87"/> + <source>Print Document</source> + <translation>Drucken</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="90"/> + <source>&Quit</source> + <translation type="unfinished">&Beenden</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="91"/> + <source>Ctrl+Q</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="93"/> + <source>Quit Program</source> + <translation>Beende das Programm</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="98"/> + <source>&Paste</source> + <translation type="unfinished">E&infügen</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="100"/> + <source>Ctrl+V</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="101"/> + <source>Paste Text From Clipboard</source> + <translation>Füge Text aus der Zwischenablage ein</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="104"/> + <source>Cu&t</source> + <translation>&Ausschneiden</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="106"/> + <source>Ctrl+X</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="108"/> + <source>Cut the current selection's contents to the clipboard</source> + <translation>aktuelle Auswahl ausschneiden und in Zwischenablage einfügen</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="111"/> + <source>&Copy</source> + <translation>&Kopieren</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="113"/> + <source>Ctrl+C</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="115"/> + <source>Copy the current selection's contents to the clipboard</source> + <translation>aktuelle Auswahl in Zwischenablage kopieren</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="118"/> + <source>Select &All</source> + <translation>Alles &markieren</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="121"/> + <source>Select the whole text</source> + <translation>Den ganzen Text markieren</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="126"/> + <source>&Encrypt</source> + <translation type="unfinished">&Verschlüsseln</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="128"/> + <source>Ctrl+E</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="129"/> + <source>Encrypt Message</source> + <translation>Verschlüssele den Text</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="132"/> + <source>&Decrypt</source> + <translation type="unfinished">&Entschlüsseln</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="134"/> + <source>Ctrl+D</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="135"/> + <source>Decrypt Message</source> + <translation>Entschlüssele den Text</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="138"/> + <source>&Import Key From File</source> + <translation>Importiere Schlüssel aus &Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="140"/> + <source>Ctrl+I</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="141"/> + <source>Import New Key From File</source> + <translation>Importiere einen neuen Schlüssel aus Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="144"/> + <source>Import Key From &Editor</source> + <translation>Importiere Schlüssel aus Textfeld</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="146"/> + <source>Import New Key From Editor</source> + <translation>Importiere einen neuen Schlüssel aus dem Textfeld</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="151"/> + <source>&About</source> + <translation>&Info</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="153"/> + <source>Show the application's About box</source> + <translation>Zeige die Information über die Anwendung</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="159"/> + <source>&File</source> + <translation>&Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="167"/> + <source>&Edit</source> + <translation>&Bearbeiten</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="173"/> + <source>&Crypto</source> + <translation>&Crypt</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="180"/> + <source>&Help</source> + <translation>&Hilfe</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="317"/> + <source>File</source> + <translation>Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="190"/> + <source>Edit</source> + <translation>Bearbeiten</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="342"/> + <source>Ready</source> + <translation>Fertig</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="203"/> + <source>Encrypt for:</source> + <translation>Verschlüssele für:</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="297"/> + <source>Application</source> + <translation>Anwendung</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="259"/> + <source>Cannot read file %1: +%2.</source> + <translation>Kann Datei nicht lesen %1: %2.</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="270"/> + <source>File loaded</source> + <translation>Datei geladen</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="285"/> + <source>%1[*] - %2</source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="298"/> + <source>The document has been modified. +Do you want to save your changes?</source> + <translation>Die Datei würde verändert. Möchten Sie die Änderung speichern?</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="319"/> + <source>Cannot write file %1: +%2.</source> + <translation>Kann Datei nicht lesen %1: %2.</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="327"/> + <source>Saved '%1'</source> + <translation>%1 gespeichert</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="347"/> + <source>About gpg4usb</source> + <translation>Über gpg4usb</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="359"/> + <source><center>This Application allows you to do simple<br>encryption/decryption of your text-files.<br>It's licensed under the GPL v2.0<br><br><b>Developer:</b><br>Bene, Heimer, Juergen, Nils, Ubbo<br><br>If you have any questions and/or<br>suggestions, contact us at<br>gpg4usb at cpunk.de</a><br><br>or feel free to meet us in our channel at<br>gpg4usb at conference.jabber.ccc.de<br><br>and always remember:<br>cpunk is NOT a bot...</center></source> + <translation></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="389"/> + <source>Open Key</source> + <translation>Öffne Datei</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="389"/> + <source>Key Files (*.asc *.txt);;All Files (*.*)</source> + <translation>Schhlüsseldateien (*.asc *.txt);;Alle Dateien (*.*)</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="281"/> + <source>untitled.txt</source> + <translation>Neue Datei.txt</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="396"/> + <source>couldn't open file: </source> + <translation>Konnte Datei nicht öffnen:</translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="285"/> + <source>gpg4usb</source> + <translation>gpg4usb</translation> + </message> +</context> +<context> + <name>KeyList</name> + <message> + <location filename="keylist.cpp" line="35"/> + <source>Delete Selected Keys</source> + <translation>Lösche die markierten Schlüssel</translation> + </message> + <message> + <location filename="keylist.cpp" line="116"/> + <source>Delete Key</source> + <translation>Lösche Schlüssel</translation> + </message> + <message> + <location filename="keylist.cpp" line="117"/> + <source>Delete the selected keys</source> + <translation>Lösche die markierten Schlüssel</translation> + </message> +</context> +</TS> diff --git a/release/ts/gpg4usb_en.qm b/release/ts/gpg4usb_en.qm Binary files differnew file mode 100644 index 0000000..768f0b0 --- /dev/null +++ b/release/ts/gpg4usb_en.qm diff --git a/release/ts/gpg4usb_en.ts b/release/ts/gpg4usb_en.ts new file mode 100644 index 0000000..b301ec4 --- /dev/null +++ b/release/ts/gpg4usb_en.ts @@ -0,0 +1,332 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS><TS version="1.1"> +<context> + <name>GpgWin</name> + <message> + <location filename="../gpgwin.cpp" line="66"/> + <source>&Open...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="68"/> + <source>Ctrl+O</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="69"/> + <source>Open an existing file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="72"/> + <source>&Save</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="74"/> + <source>Ctrl+S</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="75"/> + <source>Save the current File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="78"/> + <source>Save &As</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="120"/> + <source>Ctrl+A</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="81"/> + <source>Save the current File as...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="84"/> + <source>&Print</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="86"/> + <source>Ctrl+P</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="87"/> + <source>Print Document</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="90"/> + <source>&Quit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="91"/> + <source>Ctrl+Q</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="93"/> + <source>Quit Program</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="98"/> + <source>&Paste</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="100"/> + <source>Ctrl+V</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="101"/> + <source>Paste Text From Clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="104"/> + <source>Cu&t</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="106"/> + <source>Ctrl+X</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="108"/> + <source>Cut the current selection's contents to the clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="111"/> + <source>&Copy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="113"/> + <source>Ctrl+C</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="115"/> + <source>Copy the current selection's contents to the clipboard</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="118"/> + <source>Select &All</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="121"/> + <source>Select the whole text</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="126"/> + <source>&Encrypt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="128"/> + <source>Ctrl+E</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="129"/> + <source>Encrypt Message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="132"/> + <source>&Decrypt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="134"/> + <source>Ctrl+D</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="135"/> + <source>Decrypt Message</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="138"/> + <source>&Import Key From File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="140"/> + <source>Ctrl+I</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="141"/> + <source>Import New Key From File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="144"/> + <source>Import Key From Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="146"/> + <source>Import New Key From Editor</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="151"/> + <source>&About</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="153"/> + <source>Show the application's About box</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="159"/> + <source>&File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="167"/> + <source>&Edit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="173"/> + <source>&Crypto</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="180"/> + <source>&Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="317"/> + <source>File</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="190"/> + <source>Edit</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="342"/> + <source>Ready</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="203"/> + <source>Encrypt for:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="297"/> + <source>Application</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="259"/> + <source>Cannot read file %1: +%2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="270"/> + <source>File loaded</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="281"/> + <source>untitled.txt</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="285"/> + <source>%1[*] - %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="285"/> + <source>gpg4usb</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="298"/> + <source>The document has been modified. +Do you want to save your changes?</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="319"/> + <source>Cannot write file %1: +%2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="327"/> + <source>Saved '%1'</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="347"/> + <source>About gpg4usb</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="359"/> + <source><center>This Application allows you to do simple<br>encryption/decryption of your text-files.<br>It's licensed under the GPL v2.0<br><br><b>Developer:</b><br>Bene, Heimer, Juergen, Nils, Ubbo<br><br>If you have any questions and/or<br>suggestions, contact us at<br>gpg4usb at cpunk.de</a><br><br>or feel free to meet us in our channel at<br>gpg4usb at conference.jabber.ccc.de<br><br>and always remember:<br>cpunk is NOT a bot...</center></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="389"/> + <source>Open Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="389"/> + <source>Key Files</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../gpgwin.cpp" line="396"/> + <source>couldn't open file: </source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>KeyList</name> + <message> + <location filename="../keylist.cpp" line="35"/> + <source>Delete Selected Keys</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../keylist.cpp" line="116"/> + <source>Delete Key</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../keylist.cpp" line="117"/> + <source>Delete the selected keys</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/testdata/crypt1.txt b/testdata/crypt1.txt new file mode 100644 index 0000000..09ca96d --- /dev/null +++ b/testdata/crypt1.txt @@ -0,0 +1,13 @@ +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +hQEOAwh91+A4FwHEEAP6A5TMwuHyihbn+kh/jzh+ItU+T2OqyOe3zIRJxmEC4M0M +Pw1vvXqDLx6V5Cd2OW4w0ucs73YT30P4FaGGlOiWXoBvnQYALdHaBiLPUa6bLoRR +F9hgh3rlzlxKlQTxJ3nSWDjlEePJgtqhF/UJztsQnwdIOz1sX6tCOJ63hK7AZMgE +AJYpwqq9fsdytix4KPMurGWA3/XN7jn3D55xascR8z5aWv6zT50uiI8VyzQKqyd7 +QsCTvfhii0ukb4PEDAZ+2KQzXI6C3y1k/YiyWu+MWT0bZDt6zyAZhX7dUAULcM5s +9FWRdwpihKaYGWjxDyT9Fi7o23KY+5X1RsdzPqopPkDw0kIBoLM8SPd1YfvSLoC1 +DpXz7/GWDzeBxtj8HAwLb8JxdGXzK8L/A/3MoOB5IAvMxKb9rWuDYoRHxHMLgFyb +bYw5ocI= +=x93j +-----END PGP MESSAGE----- diff --git a/testdata/pubkey-1.asc b/testdata/pubkey-1.asc new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/testdata/pubkey-1.asc @@ -0,0 +1 @@ + diff --git a/testdata/pubkey-2.asc b/testdata/pubkey-2.asc new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/testdata/pubkey-2.asc @@ -0,0 +1 @@ + diff --git a/testdata/seckey-1.asc b/testdata/seckey-1.asc new file mode 100644 index 0000000..3934804 --- /dev/null +++ b/testdata/seckey-1.asc @@ -0,0 +1,30 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- +Version: GnuPG v1.0.4b (GNU/Linux) +Comment: For info see http://www.gnupg.org + +lQHPBDo41NoRBADSfQazKGYf8nokq6zUKH/6INtV6MypSzSGmX2XErnARkIIPPYj +cQRQ8zCbGV7ZU2ezVbzhFLUSJveE8PZUzzCrLp1O2NSyBTRcR5HVSXW95nJfY8eV +pOvZRAKul0BVLh81kYTsrfzaaCjh9VWNP26LoeN2r+PjZyktXe7gM3C4SwCgoTxK +WUVi9HoT2HCLY7p7oig5hEcEALdCJal0UYomX3nJapIVLVZg3vkidr1RICYMb2vz +58i17h8sxEtobD1vdIKNejulntaRAXs4n0tDYD9z7pRlwG1CLz1R9WxYzeOOqUDr +fnVXdmU8L/oVWABat8v1V7QQhjMMf+41fuzVwDMMGqjVPLhu4X6wp3A8uyM3YDnQ +VMN1A/4n2G5gHoOvjqxn8Ch5tBAdMGfO8gH4RjQOwzm2R1wPQss/yzUN1+tlMZGX +K2dQ2FCWC/hDUSNaEQRlI15wxxBNZ2RQwlzE2A8v113DpvyzOtv0QO95gJ1teCXC +7j/BN9asgHaBBc39JLO/TcpuI7Hf8PQ5VcP2F0UE3lczGhXbLP8DAwKVpe92I5n5 +JGBjXsTTnVLoJ1hrWTdbLvdbn882m5pHYeqFlvkqKYXJTf0mIzpEU0FfZmFjdG9y +OgAAr0JzPBwQoEmNI3YSC1MwimZ77bpvVKP9JiM6RFNBX2ZhY3RvcjoAAK9/fVBz +g73cYbgeNWbz2uITUwNd9KEN/SYjOkRTQV9mYWN0b3I6AACvWjjITYZwah6NiH6C +YgX52m55Dy5PX7Q/Sm9lIFJhbmRvbSBIYWNrZXIgKHRlc3Qga2V5IHdpdGggcGFz +c3BocmFzZSAieCIpIDxqb2VAc2V0cS5vcmc+iFcEExECABcFAjo41NoFCwcKAwQD +FQMCAxYCAQIXgAAKCRCvgiRPnNn9VXm9AKCFQ/t23GQnQEfnnAnvbRNfRo4zIQCb +BHwILsDBASB1rQzW68UA/XHze0WdAUYEOjjU3RAEAJ50lvtCGbnQlI97VX6tJkos +dPmdzeXaTWfv//A2wmSANbYnuychGMa1LN43Ew+H6FXMWJ3MB/exs6UBFCgGsw88 +qmcla2bosQN/aVLA7fqXT9ujqoNGaIVEmgdbK1MkSPFXBFyVW3hteod83D0UqFll +twp4A3ageCYFVJTp50d3AAMFA/44YCQQbg9x9JvzHX3VH7CRX+raEDkDL3Pbz0PH +as7bwI7gzZ+GFyNKaCvrHQOyuR8RIKIbjtQYnXr1675ConCTceIXhysY32sTn5V6 +UFUW2t0xaRfas8sZBbLDyIJkpt4fyD+6OaRoui9KZqXMNwt7i/XFIto/sWd/OK3S +IgZkAf8DAwKVpe92I5n5JGAHRuEKSSvGU+0my6zTf17bLWPpFPnICNJdaMfyx24Y +RZZa+nDpYrRznJ89vohGBBgRAgAGBQI6ONTeAAoJEK+CJE+c2f1V7iIAn0WsYyUV +Huz4ZZ/WxxN57Ku2Eqs9AJ9Klz9imzvZoUjuE9/Ihr0y56tVng== +=lKvj +-----END PGP PRIVATE KEY BLOCK----- |