import comment
git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@1 b624d157-de02-0410-bad0-e51aec6abb33
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					# Diese Datei wurde mit dem qmake-Manager von KDevelop erstellt. 
 | 
				
			||||||
 | 
					# ------------------------------------------- 
 | 
				
			||||||
 | 
					# Unterverzeichnis relativ zum Projektverzeichnis: .
 | 
				
			||||||
 | 
					# Das Target ist Projekt im Unterverzeichnis 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CONFIG += release \
 | 
				
			||||||
 | 
					          warn_on 
 | 
				
			||||||
 | 
					TEMPLATE = subdirs 
 | 
				
			||||||
 | 
					SUBDIRS += src 
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 52 KiB  | 
| 
		 After Width: | Height: | Size: 2.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
| 
						 | 
					@ -0,0 +1,340 @@
 | 
				
			||||||
 | 
							    GNU GENERAL PUBLIC LICENSE
 | 
				
			||||||
 | 
							       Version 2, June 1991
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
 | 
				
			||||||
 | 
					                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
				
			||||||
 | 
					 Everyone is permitted to copy and distribute verbatim copies
 | 
				
			||||||
 | 
					 of this license document, but changing it is not allowed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								    Preamble
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  The licenses for most software are designed to take away your
 | 
				
			||||||
 | 
					freedom to share and change it.  By contrast, the GNU General Public
 | 
				
			||||||
 | 
					License is intended to guarantee your freedom to share and change free
 | 
				
			||||||
 | 
					software--to make sure the software is free for all its users.  This
 | 
				
			||||||
 | 
					General Public License applies to most of the Free Software
 | 
				
			||||||
 | 
					Foundation's software and to any other program whose authors commit to
 | 
				
			||||||
 | 
					using it.  (Some other Free Software Foundation software is covered by
 | 
				
			||||||
 | 
					the GNU Library General Public License instead.)  You can apply it to
 | 
				
			||||||
 | 
					your programs, too.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  When we speak of free software, we are referring to freedom, not
 | 
				
			||||||
 | 
					price.  Our General Public Licenses are designed to make sure that you
 | 
				
			||||||
 | 
					have the freedom to distribute copies of free software (and charge for
 | 
				
			||||||
 | 
					this service if you wish), that you receive source code or can get it
 | 
				
			||||||
 | 
					if you want it, that you can change the software or use pieces of it
 | 
				
			||||||
 | 
					in new free programs; and that you know you can do these things.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  To protect your rights, we need to make restrictions that forbid
 | 
				
			||||||
 | 
					anyone to deny you these rights or to ask you to surrender the rights.
 | 
				
			||||||
 | 
					These restrictions translate to certain responsibilities for you if you
 | 
				
			||||||
 | 
					distribute copies of the software, or if you modify it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  For example, if you distribute copies of such a program, whether
 | 
				
			||||||
 | 
					gratis or for a fee, you must give the recipients all the rights that
 | 
				
			||||||
 | 
					you have.  You must make sure that they, too, receive or can get the
 | 
				
			||||||
 | 
					source code.  And you must show them these terms so they know their
 | 
				
			||||||
 | 
					rights.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  We protect your rights with two steps: (1) copyright the software, and
 | 
				
			||||||
 | 
					(2) offer you this license which gives you legal permission to copy,
 | 
				
			||||||
 | 
					distribute and/or modify the software.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Also, for each author's protection and ours, we want to make certain
 | 
				
			||||||
 | 
					that everyone understands that there is no warranty for this free
 | 
				
			||||||
 | 
					software.  If the software is modified by someone else and passed on, we
 | 
				
			||||||
 | 
					want its recipients to know that what they have is not the original, so
 | 
				
			||||||
 | 
					that any problems introduced by others will not reflect on the original
 | 
				
			||||||
 | 
					authors' reputations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Finally, any free program is threatened constantly by software
 | 
				
			||||||
 | 
					patents.  We wish to avoid the danger that redistributors of a free
 | 
				
			||||||
 | 
					program will individually obtain patent licenses, in effect making the
 | 
				
			||||||
 | 
					program proprietary.  To prevent this, we have made it clear that any
 | 
				
			||||||
 | 
					patent must be licensed for everyone's free use or not licensed at all.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  The precise terms and conditions for copying, distribution and
 | 
				
			||||||
 | 
					modification follow.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							    GNU GENERAL PUBLIC LICENSE
 | 
				
			||||||
 | 
					   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  0. This License applies to any program or other work which contains
 | 
				
			||||||
 | 
					a notice placed by the copyright holder saying it may be distributed
 | 
				
			||||||
 | 
					under the terms of this General Public License.  The "Program", below,
 | 
				
			||||||
 | 
					refers to any such program or work, and a "work based on the Program"
 | 
				
			||||||
 | 
					means either the Program or any derivative work under copyright law:
 | 
				
			||||||
 | 
					that is to say, a work containing the Program or a portion of it,
 | 
				
			||||||
 | 
					either verbatim or with modifications and/or translated into another
 | 
				
			||||||
 | 
					language.  (Hereinafter, translation is included without limitation in
 | 
				
			||||||
 | 
					the term "modification".)  Each licensee is addressed as "you".
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Activities other than copying, distribution and modification are not
 | 
				
			||||||
 | 
					covered by this License; they are outside its scope.  The act of
 | 
				
			||||||
 | 
					running the Program is not restricted, and the output from the Program
 | 
				
			||||||
 | 
					is covered only if its contents constitute a work based on the
 | 
				
			||||||
 | 
					Program (independent of having been made by running the Program).
 | 
				
			||||||
 | 
					Whether that is true depends on what the Program does.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  1. You may copy and distribute verbatim copies of the Program's
 | 
				
			||||||
 | 
					source code as you receive it, in any medium, provided that you
 | 
				
			||||||
 | 
					conspicuously and appropriately publish on each copy an appropriate
 | 
				
			||||||
 | 
					copyright notice and disclaimer of warranty; keep intact all the
 | 
				
			||||||
 | 
					notices that refer to this License and to the absence of any warranty;
 | 
				
			||||||
 | 
					and give any other recipients of the Program a copy of this License
 | 
				
			||||||
 | 
					along with the Program.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You may charge a fee for the physical act of transferring a copy, and
 | 
				
			||||||
 | 
					you may at your option offer warranty protection in exchange for a fee.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  2. You may modify your copy or copies of the Program or any portion
 | 
				
			||||||
 | 
					of it, thus forming a work based on the Program, and copy and
 | 
				
			||||||
 | 
					distribute such modifications or work under the terms of Section 1
 | 
				
			||||||
 | 
					above, provided that you also meet all of these conditions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    a) You must cause the modified files to carry prominent notices
 | 
				
			||||||
 | 
					    stating that you changed the files and the date of any change.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    b) You must cause any work that you distribute or publish, that in
 | 
				
			||||||
 | 
					    whole or in part contains or is derived from the Program or any
 | 
				
			||||||
 | 
					    part thereof, to be licensed as a whole at no charge to all third
 | 
				
			||||||
 | 
					    parties under the terms of this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    c) If the modified program normally reads commands interactively
 | 
				
			||||||
 | 
					    when run, you must cause it, when started running for such
 | 
				
			||||||
 | 
					    interactive use in the most ordinary way, to print or display an
 | 
				
			||||||
 | 
					    announcement including an appropriate copyright notice and a
 | 
				
			||||||
 | 
					    notice that there is no warranty (or else, saying that you provide
 | 
				
			||||||
 | 
					    a warranty) and that users may redistribute the program under
 | 
				
			||||||
 | 
					    these conditions, and telling the user how to view a copy of this
 | 
				
			||||||
 | 
					    License.  (Exception: if the Program itself is interactive but
 | 
				
			||||||
 | 
					    does not normally print such an announcement, your work based on
 | 
				
			||||||
 | 
					    the Program is not required to print an announcement.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These requirements apply to the modified work as a whole.  If
 | 
				
			||||||
 | 
					identifiable sections of that work are not derived from the Program,
 | 
				
			||||||
 | 
					and can be reasonably considered independent and separate works in
 | 
				
			||||||
 | 
					themselves, then this License, and its terms, do not apply to those
 | 
				
			||||||
 | 
					sections when you distribute them as separate works.  But when you
 | 
				
			||||||
 | 
					distribute the same sections as part of a whole which is a work based
 | 
				
			||||||
 | 
					on the Program, the distribution of the whole must be on the terms of
 | 
				
			||||||
 | 
					this License, whose permissions for other licensees extend to the
 | 
				
			||||||
 | 
					entire whole, and thus to each and every part regardless of who wrote it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Thus, it is not the intent of this section to claim rights or contest
 | 
				
			||||||
 | 
					your rights to work written entirely by you; rather, the intent is to
 | 
				
			||||||
 | 
					exercise the right to control the distribution of derivative or
 | 
				
			||||||
 | 
					collective works based on the Program.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					In addition, mere aggregation of another work not based on the Program
 | 
				
			||||||
 | 
					with the Program (or with a work based on the Program) on a volume of
 | 
				
			||||||
 | 
					a storage or distribution medium does not bring the other work under
 | 
				
			||||||
 | 
					the scope of this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  3. You may copy and distribute the Program (or a work based on it,
 | 
				
			||||||
 | 
					under Section 2) in object code or executable form under the terms of
 | 
				
			||||||
 | 
					Sections 1 and 2 above provided that you also do one of the following:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    a) Accompany it with the complete corresponding machine-readable
 | 
				
			||||||
 | 
					    source code, which must be distributed under the terms of Sections
 | 
				
			||||||
 | 
					    1 and 2 above on a medium customarily used for software interchange; or,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    b) Accompany it with a written offer, valid for at least three
 | 
				
			||||||
 | 
					    years, to give any third party, for a charge no more than your
 | 
				
			||||||
 | 
					    cost of physically performing source distribution, a complete
 | 
				
			||||||
 | 
					    machine-readable copy of the corresponding source code, to be
 | 
				
			||||||
 | 
					    distributed under the terms of Sections 1 and 2 above on a medium
 | 
				
			||||||
 | 
					    customarily used for software interchange; or,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    c) Accompany it with the information you received as to the offer
 | 
				
			||||||
 | 
					    to distribute corresponding source code.  (This alternative is
 | 
				
			||||||
 | 
					    allowed only for noncommercial distribution and only if you
 | 
				
			||||||
 | 
					    received the program in object code or executable form with such
 | 
				
			||||||
 | 
					    an offer, in accord with Subsection b above.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The source code for a work means the preferred form of the work for
 | 
				
			||||||
 | 
					making modifications to it.  For an executable work, complete source
 | 
				
			||||||
 | 
					code means all the source code for all modules it contains, plus any
 | 
				
			||||||
 | 
					associated interface definition files, plus the scripts used to
 | 
				
			||||||
 | 
					control compilation and installation of the executable.  However, as a
 | 
				
			||||||
 | 
					special exception, the source code distributed need not include
 | 
				
			||||||
 | 
					anything that is normally distributed (in either source or binary
 | 
				
			||||||
 | 
					form) with the major components (compiler, kernel, and so on) of the
 | 
				
			||||||
 | 
					operating system on which the executable runs, unless that component
 | 
				
			||||||
 | 
					itself accompanies the executable.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If distribution of executable or object code is made by offering
 | 
				
			||||||
 | 
					access to copy from a designated place, then offering equivalent
 | 
				
			||||||
 | 
					access to copy the source code from the same place counts as
 | 
				
			||||||
 | 
					distribution of the source code, even though third parties are not
 | 
				
			||||||
 | 
					compelled to copy the source along with the object code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  4. You may not copy, modify, sublicense, or distribute the Program
 | 
				
			||||||
 | 
					except as expressly provided under this License.  Any attempt
 | 
				
			||||||
 | 
					otherwise to copy, modify, sublicense or distribute the Program is
 | 
				
			||||||
 | 
					void, and will automatically terminate your rights under this License.
 | 
				
			||||||
 | 
					However, parties who have received copies, or rights, from you under
 | 
				
			||||||
 | 
					this License will not have their licenses terminated so long as such
 | 
				
			||||||
 | 
					parties remain in full compliance.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  5. You are not required to accept this License, since you have not
 | 
				
			||||||
 | 
					signed it.  However, nothing else grants you permission to modify or
 | 
				
			||||||
 | 
					distribute the Program or its derivative works.  These actions are
 | 
				
			||||||
 | 
					prohibited by law if you do not accept this License.  Therefore, by
 | 
				
			||||||
 | 
					modifying or distributing the Program (or any work based on the
 | 
				
			||||||
 | 
					Program), you indicate your acceptance of this License to do so, and
 | 
				
			||||||
 | 
					all its terms and conditions for copying, distributing or modifying
 | 
				
			||||||
 | 
					the Program or works based on it.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  6. Each time you redistribute the Program (or any work based on the
 | 
				
			||||||
 | 
					Program), the recipient automatically receives a license from the
 | 
				
			||||||
 | 
					original licensor to copy, distribute or modify the Program subject to
 | 
				
			||||||
 | 
					these terms and conditions.  You may not impose any further
 | 
				
			||||||
 | 
					restrictions on the recipients' exercise of the rights granted herein.
 | 
				
			||||||
 | 
					You are not responsible for enforcing compliance by third parties to
 | 
				
			||||||
 | 
					this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  7. If, as a consequence of a court judgment or allegation of patent
 | 
				
			||||||
 | 
					infringement or for any other reason (not limited to patent issues),
 | 
				
			||||||
 | 
					conditions are imposed on you (whether by court order, agreement or
 | 
				
			||||||
 | 
					otherwise) that contradict the conditions of this License, they do not
 | 
				
			||||||
 | 
					excuse you from the conditions of this License.  If you cannot
 | 
				
			||||||
 | 
					distribute so as to satisfy simultaneously your obligations under this
 | 
				
			||||||
 | 
					License and any other pertinent obligations, then as a consequence you
 | 
				
			||||||
 | 
					may not distribute the Program at all.  For example, if a patent
 | 
				
			||||||
 | 
					license would not permit royalty-free redistribution of the Program by
 | 
				
			||||||
 | 
					all those who receive copies directly or indirectly through you, then
 | 
				
			||||||
 | 
					the only way you could satisfy both it and this License would be to
 | 
				
			||||||
 | 
					refrain entirely from distribution of the Program.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If any portion of this section is held invalid or unenforceable under
 | 
				
			||||||
 | 
					any particular circumstance, the balance of the section is intended to
 | 
				
			||||||
 | 
					apply and the section as a whole is intended to apply in other
 | 
				
			||||||
 | 
					circumstances.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					It is not the purpose of this section to induce you to infringe any
 | 
				
			||||||
 | 
					patents or other property right claims or to contest validity of any
 | 
				
			||||||
 | 
					such claims; this section has the sole purpose of protecting the
 | 
				
			||||||
 | 
					integrity of the free software distribution system, which is
 | 
				
			||||||
 | 
					implemented by public license practices.  Many people have made
 | 
				
			||||||
 | 
					generous contributions to the wide range of software distributed
 | 
				
			||||||
 | 
					through that system in reliance on consistent application of that
 | 
				
			||||||
 | 
					system; it is up to the author/donor to decide if he or she is willing
 | 
				
			||||||
 | 
					to distribute software through any other system and a licensee cannot
 | 
				
			||||||
 | 
					impose that choice.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This section is intended to make thoroughly clear what is believed to
 | 
				
			||||||
 | 
					be a consequence of the rest of this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  8. If the distribution and/or use of the Program is restricted in
 | 
				
			||||||
 | 
					certain countries either by patents or by copyrighted interfaces, the
 | 
				
			||||||
 | 
					original copyright holder who places the Program under this License
 | 
				
			||||||
 | 
					may add an explicit geographical distribution limitation excluding
 | 
				
			||||||
 | 
					those countries, so that distribution is permitted only in or among
 | 
				
			||||||
 | 
					countries not thus excluded.  In such case, this License incorporates
 | 
				
			||||||
 | 
					the limitation as if written in the body of this License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  9. The Free Software Foundation may publish revised and/or new versions
 | 
				
			||||||
 | 
					of the General Public License from time to time.  Such new versions will
 | 
				
			||||||
 | 
					be similar in spirit to the present version, but may differ in detail to
 | 
				
			||||||
 | 
					address new problems or concerns.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Each version is given a distinguishing version number.  If the Program
 | 
				
			||||||
 | 
					specifies a version number of this License which applies to it and "any
 | 
				
			||||||
 | 
					later version", you have the option of following the terms and conditions
 | 
				
			||||||
 | 
					either of that version or of any later version published by the Free
 | 
				
			||||||
 | 
					Software Foundation.  If the Program does not specify a version number of
 | 
				
			||||||
 | 
					this License, you may choose any version ever published by the Free Software
 | 
				
			||||||
 | 
					Foundation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  10. If you wish to incorporate parts of the Program into other free
 | 
				
			||||||
 | 
					programs whose distribution conditions are different, write to the author
 | 
				
			||||||
 | 
					to ask for permission.  For software which is copyrighted by the Free
 | 
				
			||||||
 | 
					Software Foundation, write to the Free Software Foundation; we sometimes
 | 
				
			||||||
 | 
					make exceptions for this.  Our decision will be guided by the two goals
 | 
				
			||||||
 | 
					of preserving the free status of all derivatives of our free software and
 | 
				
			||||||
 | 
					of promoting the sharing and reuse of software generally.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								    NO WARRANTY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
 | 
				
			||||||
 | 
					FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
 | 
				
			||||||
 | 
					OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
 | 
				
			||||||
 | 
					PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
 | 
				
			||||||
 | 
					OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 | 
				
			||||||
 | 
					MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
 | 
				
			||||||
 | 
					TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
 | 
				
			||||||
 | 
					PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
 | 
				
			||||||
 | 
					REPAIR OR CORRECTION.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 | 
				
			||||||
 | 
					WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
 | 
				
			||||||
 | 
					REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
 | 
				
			||||||
 | 
					INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
 | 
				
			||||||
 | 
					OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
 | 
				
			||||||
 | 
					TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
 | 
				
			||||||
 | 
					YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
 | 
				
			||||||
 | 
					PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 | 
				
			||||||
 | 
					POSSIBILITY OF SUCH DAMAGES.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							     END OF TERMS AND CONDITIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    How to Apply These Terms to Your New Programs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  If you develop a new program, and you want it to be of the greatest
 | 
				
			||||||
 | 
					possible use to the public, the best way to achieve this is to make it
 | 
				
			||||||
 | 
					free software which everyone can redistribute and change under these terms.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  To do so, attach the following notices to the program.  It is safest
 | 
				
			||||||
 | 
					to attach them to the start of each source file to most effectively
 | 
				
			||||||
 | 
					convey the exclusion of warranty; and each file should have at least
 | 
				
			||||||
 | 
					the "copyright" line and a pointer to where the full notice is found.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <one line to give the program's name and a brief idea of what it does.>
 | 
				
			||||||
 | 
					    Copyright (C) <year>  <name of author>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					    it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					    the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					    (at your option) any later version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					    GNU General Public License for more details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					    along with this program; if not, write to the Free Software
 | 
				
			||||||
 | 
					    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Also add information on how to contact you by electronic and paper mail.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the program is interactive, make it output a short notice like this
 | 
				
			||||||
 | 
					when it starts in an interactive mode:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Gnomovision version 69, Copyright (C) year name of author
 | 
				
			||||||
 | 
					    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 | 
				
			||||||
 | 
					    This is free software, and you are welcome to redistribute it
 | 
				
			||||||
 | 
					    under certain conditions; type `show c' for details.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The hypothetical commands `show w' and `show c' should show the appropriate
 | 
				
			||||||
 | 
					parts of the General Public License.  Of course, the commands you use may
 | 
				
			||||||
 | 
					be called something other than `show w' and `show c'; they could even be
 | 
				
			||||||
 | 
					mouse-clicks or menu items--whatever suits your program.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You should also get your employer (if you work as a programmer) or your
 | 
				
			||||||
 | 
					school, if any, to sign a "copyright disclaimer" for the program, if
 | 
				
			||||||
 | 
					necessary.  Here is a sample; alter the names:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
 | 
				
			||||||
 | 
					  `Gnomovision' (which makes passes at compilers) written by James Hacker.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <signature of Ty Coon>, 1 April 1989
 | 
				
			||||||
 | 
					  Ty Coon, President of Vice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This General Public License does not permit incorporating your program into
 | 
				
			||||||
 | 
					proprietary programs.  If your program is a subroutine library, you may
 | 
				
			||||||
 | 
					consider it more useful to permit linking proprietary applications with the
 | 
				
			||||||
 | 
					library.  If this is what you want to do, use the GNU Library General
 | 
				
			||||||
 | 
					Public License instead of this License.
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 634 B  | 
| 
		 After Width: | Height: | Size: 1.9 KiB  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Database.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEntry::CEntry(){
 | 
				
			||||||
 | 
					ImageID=0;
 | 
				
			||||||
 | 
					GroupID=0;
 | 
				
			||||||
 | 
					Creation.SetToNow();
 | 
				
			||||||
 | 
					LastMod.SetToNow();
 | 
				
			||||||
 | 
					LastAccess.SetToNow();
 | 
				
			||||||
 | 
					Expire.Set(28,12,2999,0,0,0);
 | 
				
			||||||
 | 
					BinaryDataLength=0;
 | 
				
			||||||
 | 
					pBinaryData=NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CGroup::UI_ExpandByDefault=true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGroup::CGroup(){
 | 
				
			||||||
 | 
					Creation.SetToNow();
 | 
				
			||||||
 | 
					LastAccess.SetToNow();
 | 
				
			||||||
 | 
					LastMod.SetToNow();
 | 
				
			||||||
 | 
					Expire.Set(1,1,2999,0,0,0);
 | 
				
			||||||
 | 
					Level=0;
 | 
				
			||||||
 | 
					ImageID=0;
 | 
				
			||||||
 | 
					Name="<Group>";
 | 
				
			||||||
 | 
					UI_ItemIsExpanded=UI_ExpandByDefault;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGroup::~CGroup(){
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEntry::~CEntry(){
 | 
				
			||||||
 | 
					if(pBinaryData) {
 | 
				
			||||||
 | 
					delete [] pBinaryData;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					pBinaryData=NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,99 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _DATABASE_H_
 | 
				
			||||||
 | 
					#define _DATABASE_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <vector.h>
 | 
				
			||||||
 | 
					#include "lib/PwmTime.h"
 | 
				
			||||||
 | 
					#include "lib/SecString.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CEntry{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					CEntry();
 | 
				
			||||||
 | 
					~CEntry();
 | 
				
			||||||
 | 
					UINT8 ID[16];
 | 
				
			||||||
 | 
					UINT32 sID;
 | 
				
			||||||
 | 
					UINT32 GroupID;
 | 
				
			||||||
 | 
					UINT32 ImageID;
 | 
				
			||||||
 | 
					QString Title;
 | 
				
			||||||
 | 
					QString URL;
 | 
				
			||||||
 | 
					QString UserName;
 | 
				
			||||||
 | 
					SecString Password;
 | 
				
			||||||
 | 
					QString Additional;
 | 
				
			||||||
 | 
					QString BinaryDesc;
 | 
				
			||||||
 | 
					CPwmTime Creation;
 | 
				
			||||||
 | 
					CPwmTime LastMod;
 | 
				
			||||||
 | 
					CPwmTime LastAccess;
 | 
				
			||||||
 | 
					CPwmTime Expire;
 | 
				
			||||||
 | 
					UINT8 *pBinaryData;
 | 
				
			||||||
 | 
					UINT32 BinaryDataLength;
 | 
				
			||||||
 | 
					UINT32 PasswordLength;
 | 
				
			||||||
 | 
					bool ReadEntryField(UINT16 FieldType, UINT32 FieldSize, UINT8 *pData);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CGroup{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					CGroup();
 | 
				
			||||||
 | 
					~CGroup();
 | 
				
			||||||
 | 
					UINT32 ID;
 | 
				
			||||||
 | 
					UINT32 ImageID;
 | 
				
			||||||
 | 
					UINT32 NumEntries;
 | 
				
			||||||
 | 
					QString Name;
 | 
				
			||||||
 | 
					CPwmTime Creation;
 | 
				
			||||||
 | 
					CPwmTime LastMod;
 | 
				
			||||||
 | 
					CPwmTime LastAccess;
 | 
				
			||||||
 | 
					CPwmTime Expire;
 | 
				
			||||||
 | 
					UINT16 Level;
 | 
				
			||||||
 | 
					UINT32 Flags;
 | 
				
			||||||
 | 
					bool ReadGroupField(UINT16 FieldType, UINT32 FieldSize, UINT8 *pData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool 	  UI_ItemIsExpanded;
 | 
				
			||||||
 | 
					static bool UI_ExpandByDefault;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef vector<CEntry>::iterator EntryItr;
 | 
				
			||||||
 | 
					typedef vector<CGroup>::iterator GroupItr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AbstractDatabase{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					 vector<CGroup>Groups;
 | 
				
			||||||
 | 
					 vector<CEntry>Entries;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Database:public AbstractDatabase{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					 int CryptoAlgorithmus;
 | 
				
			||||||
 | 
					 int KeyEncRounds;
 | 
				
			||||||
 | 
					 QString filename;
 | 
				
			||||||
 | 
					 bool modflag;
 | 
				
			||||||
 | 
					 int SearchGroupID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					 UINT8 MasterKey[32];
 | 
				
			||||||
 | 
					 UINT8 TransformedMasterKey[32];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,155 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.               *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "ListViews.h"
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					#include <qlistview.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListView * parent ) : QListViewItem(parent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListViewItem * parent ): QListViewItem(parent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListView * parent, QListViewItem * after ): QListViewItem(parent,after)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListViewItem * parent, QListViewItem * after ): QListViewItem(parent,after)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListView* parent, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListViewItem* parent, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListView* parent,QListViewItem* after, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,after,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::GroupItem(CGroup* group, QListViewItem* parent,QListViewItem* after, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,after,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pGroup=group;
 | 
				
			||||||
 | 
					setDropEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItem::~GroupItem(){}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool GroupItem::acceptDrop(const QMimeSource* mime){
 | 
				
			||||||
 | 
					qDebug("DropEvent\n");
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					///////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListView * parent ) : QListViewItem(parent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListViewItem * parent ): QListViewItem(parent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListView * parent, QListViewItem * after ): QListViewItem(parent,after)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListViewItem * parent, QListViewItem * after ): QListViewItem(parent,after)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListView* parent, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListViewItem* parent, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListView* parent,QListViewItem* after, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,after,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItem::EntryItem(CEntry* entry, QListViewItem* parent,QListViewItem* after, QString l1,QString l2,QString l3,QString l4,
 | 
				
			||||||
 | 
										 QString l5,QString l6,QString l7,QString l8)
 | 
				
			||||||
 | 
							    :QListViewItem(parent,after,l1,l2,l3,l4,l5,l6,l7,l8)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pEntry=entry;
 | 
				
			||||||
 | 
					setDragEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGroupView::CGroupView(QWidget * parent, const char * name, WFlags f):QListView(parent,name,f){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,108 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _LISTVIEWS_H_
 | 
				
			||||||
 | 
					#define _LISTVIEWS_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qlistview.h>
 | 
				
			||||||
 | 
					#include <qmime.h>
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class GroupItem: public QListViewItem{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					CGroup* pGroup;
 | 
				
			||||||
 | 
					virtual bool acceptDrop(const QMimeSource * mime);
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					    GroupItem(CGroup*, QListView * parent );
 | 
				
			||||||
 | 
					    GroupItem(CGroup*, QListViewItem * parent );
 | 
				
			||||||
 | 
					    GroupItem(CGroup*, QListView * parent, QListViewItem * after );
 | 
				
			||||||
 | 
					    GroupItem(CGroup*, QListViewItem * parent, QListViewItem * after );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GroupItem(CGroup*, QListView * parent,
 | 
				
			||||||
 | 
							   QString,    QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   GroupItem(CGroup*, QListViewItem * parent,
 | 
				
			||||||
 | 
							   QString,     QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   GroupItem(CGroup*, QListView * parent, QListViewItem * after,
 | 
				
			||||||
 | 
							   QString,     QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GroupItem(CGroup*, QListViewItem * parent, QListViewItem * after,
 | 
				
			||||||
 | 
							   QString,     QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					   ~GroupItem();
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class EntryItem: public QListViewItem{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					CEntry* pEntry;
 | 
				
			||||||
 | 
					///////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					    EntryItem(CEntry*, QListView * parent );
 | 
				
			||||||
 | 
					    EntryItem(CEntry*, QListViewItem * parent );
 | 
				
			||||||
 | 
					    EntryItem(CEntry*, QListView * parent, QListViewItem * after );
 | 
				
			||||||
 | 
					    EntryItem(CEntry*, QListViewItem * parent, QListViewItem * after );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EntryItem(CEntry*, QListView * parent,
 | 
				
			||||||
 | 
							   QString,    QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   EntryItem(CEntry*, QListViewItem * parent,
 | 
				
			||||||
 | 
							   QString,     QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   EntryItem(CEntry*, QListView * parent, QListViewItem * after,
 | 
				
			||||||
 | 
							   QString,     QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    EntryItem(CEntry*, QListViewItem * parent, QListViewItem * after,
 | 
				
			||||||
 | 
							   QString,     QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null,
 | 
				
			||||||
 | 
							   QString = QString::null, QString = QString::null );
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CGroupView: public QListView{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CGroupView(QWidget * parent = 0, const char * name = 0, WFlags f = 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,915 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					#include <qfile.h>
 | 
				
			||||||
 | 
					#include <qstringlist.h>
 | 
				
			||||||
 | 
					#include <qobject.h>
 | 
				
			||||||
 | 
					#include <qdatetime.h>
 | 
				
			||||||
 | 
					#include "crypto/sha256.h"
 | 
				
			||||||
 | 
					#include "crypto/rijndael.h"
 | 
				
			||||||
 | 
					#include "crypto/twoclass.h"
 | 
				
			||||||
 | 
					#include "lib/random.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::loadDatabase(QString _filename, QString& err){
 | 
				
			||||||
 | 
					unsigned long total_size,crypto_size;
 | 
				
			||||||
 | 
					UINT32 Signature1,Signature2,Version,NumGroups,NumEntries,Flags;
 | 
				
			||||||
 | 
					UINT8 TrafoRandomSeed[32];
 | 
				
			||||||
 | 
					UINT8 FinalRandomSeed[16];
 | 
				
			||||||
 | 
					UINT8 ContentsHash[32];
 | 
				
			||||||
 | 
					UINT8 EncryptionIV[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filename=_filename;
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					file.open(IO_ReadOnly);
 | 
				
			||||||
 | 
					total_size=file.size();
 | 
				
			||||||
 | 
					char* buffer = new char[total_size];
 | 
				
			||||||
 | 
					file.readBlock(buffer,total_size);
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(total_size < DB_HEADER_SIZE){
 | 
				
			||||||
 | 
					err=trUtf8("Unerwartete Dateigröße (Dateigröße < DB_HEADER_SIZE)");
 | 
				
			||||||
 | 
					return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					memcpy(&Signature1,buffer,4);
 | 
				
			||||||
 | 
					memcpy(&Signature2,buffer+4,4);
 | 
				
			||||||
 | 
					memcpy(&Flags,buffer+8,4);
 | 
				
			||||||
 | 
					memcpy(&Version,buffer+12,4);
 | 
				
			||||||
 | 
					memcpy(FinalRandomSeed,buffer+16,16);
 | 
				
			||||||
 | 
					memcpy(EncryptionIV,buffer+32,16);
 | 
				
			||||||
 | 
					memcpy(&NumGroups,buffer+48,4);
 | 
				
			||||||
 | 
					memcpy(&NumEntries,buffer+52,4);
 | 
				
			||||||
 | 
					memcpy(ContentsHash,buffer+56,32);
 | 
				
			||||||
 | 
					memcpy(TrafoRandomSeed,buffer+88,32);
 | 
				
			||||||
 | 
					memcpy(&KeyEncRounds,buffer+120,4);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if((Signature1!=PWM_DBSIG_1) || (Signature2!=PWM_DBSIG_2)){
 | 
				
			||||||
 | 
					err=trUtf8("Falsche Signatur");
 | 
				
			||||||
 | 
					return false;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if((Version & 0xFFFFFF00) != (PWM_DBVER_DW & 0xFFFFFF00)){
 | 
				
			||||||
 | 
						err=trUtf8("Nicht unterstüzte Dateiversion");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Flags & PWM_FLAG_RIJNDAEL) CryptoAlgorithmus = ALGO_AES;
 | 
				
			||||||
 | 
					else if(Flags & PWM_FLAG_TWOFISH) CryptoAlgorithmus = ALGO_TWOFISH;
 | 
				
			||||||
 | 
					else {
 | 
				
			||||||
 | 
					 err=trUtf8("Unbekannter Verschlüsselungsalgorithmus");
 | 
				
			||||||
 | 
					 return false;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					transformKey(MasterKey,TransformedMasterKey,TrafoRandomSeed,KeyEncRounds);
 | 
				
			||||||
 | 
					UINT8 FinalKey[32];
 | 
				
			||||||
 | 
					sha256_context sha32;
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					sha256_update(&sha32,FinalRandomSeed, 16);
 | 
				
			||||||
 | 
					sha256_update(&sha32,TransformedMasterKey, 32);
 | 
				
			||||||
 | 
					sha256_finish(&sha32,FinalKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CryptoAlgorithmus == ALGO_AES)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Rijndael aes;
 | 
				
			||||||
 | 
							// Initialize Rijndael algorithm
 | 
				
			||||||
 | 
							if(aes.init(Rijndael::CBC, Rijndael::Decrypt, FinalKey,
 | 
				
			||||||
 | 
								Rijndael::Key32Bytes, EncryptionIV) != RIJNDAEL_SUCCESS)
 | 
				
			||||||
 | 
								{return false;}
 | 
				
			||||||
 | 
							// Decrypt! The first bytes aren't encrypted (that's the header)
 | 
				
			||||||
 | 
							crypto_size = (unsigned long)aes.padDecrypt((UINT8 *)buffer + DB_HEADER_SIZE,
 | 
				
			||||||
 | 
								total_size  - DB_HEADER_SIZE, (UINT8 *)buffer + DB_HEADER_SIZE);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					else if(CryptoAlgorithmus == ALGO_TWOFISH)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							CTwofish twofish;
 | 
				
			||||||
 | 
							if(twofish.init(FinalKey, 32, EncryptionIV) != true){return false;}
 | 
				
			||||||
 | 
							crypto_size = (unsigned long)twofish.padDecrypt((UINT8 *)buffer + DB_HEADER_SIZE,
 | 
				
			||||||
 | 
								total_size - DB_HEADER_SIZE, (UINT8 *)buffer + DB_HEADER_SIZE);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if((crypto_size > 2147483446) || (crypto_size == 0)){return false;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					sha256_update(&sha32,(unsigned char *)buffer + DB_HEADER_SIZE,crypto_size);
 | 
				
			||||||
 | 
					sha256_finish(&sha32,(unsigned char *)FinalKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(memcmp(ContentsHash, FinalKey, 32) != 0)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					err=trUtf8("Hash-Test fehlgeschlage: der Schlüssl ist falsch oder die Datei ist beschädigt.");
 | 
				
			||||||
 | 
					return false;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Groups.resize(NumGroups);
 | 
				
			||||||
 | 
					Entries.resize(NumEntries);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned long tmp_id=0;
 | 
				
			||||||
 | 
					unsigned long pos = DB_HEADER_SIZE;
 | 
				
			||||||
 | 
					UINT16 FieldType;
 | 
				
			||||||
 | 
					UINT32 FieldSize;
 | 
				
			||||||
 | 
					char* pField;
 | 
				
			||||||
 | 
					bool bRet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(unsigned long CurGroup = 0; CurGroup < NumGroups; )
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							pField = buffer+pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							memcpy(&FieldType, pField, 2);
 | 
				
			||||||
 | 
							pField += 2; pos += 2;
 | 
				
			||||||
 | 
							if(pos >= total_size) {
 | 
				
			||||||
 | 
							 return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							memcpy(&FieldSize, pField, 4);
 | 
				
			||||||
 | 
							pField += 4; pos += 4;
 | 
				
			||||||
 | 
							if(pos >= (total_size + FieldSize)) {
 | 
				
			||||||
 | 
							return false;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						 	bRet = Groups[CurGroup].ReadGroupField(FieldType, FieldSize, (UINT8 *)pField);
 | 
				
			||||||
 | 
							if((FieldType == 0xFFFF) && (bRet == true)){
 | 
				
			||||||
 | 
								CurGroup++;} // Now and ONLY now the counter gets increased
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pField += FieldSize;
 | 
				
			||||||
 | 
							pos += FieldSize;
 | 
				
			||||||
 | 
							if(pos >= total_size) { return false;}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(unsigned long CurEntry = 0; CurEntry < NumEntries;)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							pField = buffer+pos;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							memcpy(&FieldType, pField, 2);
 | 
				
			||||||
 | 
							pField += 2; pos += 2;
 | 
				
			||||||
 | 
							if(pos >= total_size){
 | 
				
			||||||
 | 
							 return false;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							memcpy(&FieldSize, pField, 4);
 | 
				
			||||||
 | 
							pField += 4; pos += 4;
 | 
				
			||||||
 | 
							if(pos >= (total_size + FieldSize)) {
 | 
				
			||||||
 | 
							return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bRet = Entries[CurEntry].ReadEntryField(FieldType,FieldSize,(UINT8*)pField);
 | 
				
			||||||
 | 
							if((FieldType == 0xFFFF) && (bRet == true)){
 | 
				
			||||||
 | 
								Entries[CurEntry].sID=tmp_id++;
 | 
				
			||||||
 | 
								CurEntry++;} // Now and ONLY now the counter gets increased
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							pField += FieldSize;
 | 
				
			||||||
 | 
							pos += FieldSize;
 | 
				
			||||||
 | 
							if(pos >= total_size) {
 | 
				
			||||||
 | 
							return false; }
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned long CurGID, g, e, z, num;
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(vector<CEntry>::iterator i=Entries.begin();i!=Entries.end();i++){
 | 
				
			||||||
 | 
					if(IsMetaStream(*i)==true){
 | 
				
			||||||
 | 
						///@TODO Parse Metastreams
 | 
				
			||||||
 | 
						deleteEntry(i);
 | 
				
			||||||
 | 
						i--;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PwDatabase::transformKey(UINT8* src,UINT8* dst,UINT8* KeySeed,int rounds){
 | 
				
			||||||
 | 
					UINT8* tmp=new UINT8[32];
 | 
				
			||||||
 | 
					Rijndael rijndael;
 | 
				
			||||||
 | 
					sha256_context sha2;
 | 
				
			||||||
 | 
					if(rijndael.init(Rijndael::ECB, Rijndael::Encrypt, (const UINT8 *)KeySeed,
 | 
				
			||||||
 | 
					                 Rijndael::Key32Bytes, 0) != RIJNDAEL_SUCCESS){
 | 
				
			||||||
 | 
					  cout << QString("unexpected error in %1, line %2").arg(__FILE__).arg(__LINE__) << endl;
 | 
				
			||||||
 | 
					  exit(1);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					memcpy(tmp,src,32);
 | 
				
			||||||
 | 
					for(int i=0;i<rounds;i++){
 | 
				
			||||||
 | 
					 rijndael.blockEncrypt((const UINT8 *)tmp, 256, (UINT8 *)tmp);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sha256_starts(&sha2);
 | 
				
			||||||
 | 
					sha256_update(&sha2,tmp,32);
 | 
				
			||||||
 | 
					sha256_finish(&sha2,tmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					memcpy(dst,tmp,32);
 | 
				
			||||||
 | 
					delete [] tmp;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::CalcMasterKeyByPassword(QString& Password){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned long KeyLen, FileSize, Read;
 | 
				
			||||||
 | 
					sha256_context sha32;
 | 
				
			||||||
 | 
					char *paKey = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Password == QString::null) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					paKey = new char[Password.length() + 1];
 | 
				
			||||||
 | 
					if(paKey == NULL) return false;
 | 
				
			||||||
 | 
					strcpy(paKey, Password);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(paKey == NULL) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					KeyLen = strlen(paKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(KeyLen == 0) {
 | 
				
			||||||
 | 
					SecString::overwrite(paKey,Password.length() + 1);
 | 
				
			||||||
 | 
					delete [] paKey;
 | 
				
			||||||
 | 
					return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					sha256_update(&sha32,(unsigned char*) paKey, KeyLen);
 | 
				
			||||||
 | 
					sha256_finish(&sha32,MasterKey);
 | 
				
			||||||
 | 
					SecString::overwrite(paKey,Password.length() + 1);
 | 
				
			||||||
 | 
					delete [] paKey;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::CalcMasterKeyByFile(QString filename){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					if(file.open(IO_ReadOnly) == false) return false;
 | 
				
			||||||
 | 
					unsigned long FileSize=file.size();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(FileSize == 32){
 | 
				
			||||||
 | 
						if(file.readBlock((char*)MasterKey,32) != 32){
 | 
				
			||||||
 | 
						file.close();
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					sha256_context sha32;
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					unsigned char* buffer = new unsigned char[2048];
 | 
				
			||||||
 | 
					while(1)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 unsigned long read=file.readBlock((char*)buffer,2048);
 | 
				
			||||||
 | 
					 if(read == 0) break;
 | 
				
			||||||
 | 
					 sha256_update(&sha32,buffer,read);
 | 
				
			||||||
 | 
					 if(read != 2048) break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sha256_finish(&sha32,MasterKey);
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEntry* PwDatabase::addEntry(){
 | 
				
			||||||
 | 
					CEntry NewEntry;
 | 
				
			||||||
 | 
					if(Entries.size()==0){
 | 
				
			||||||
 | 
					 NewEntry.sID=0;
 | 
				
			||||||
 | 
					 getRandomBytes(&NewEntry.ID,16,1,false);
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					 else {
 | 
				
			||||||
 | 
					 NewEntry.sID=(*(Entries.end()-1)).sID+1;
 | 
				
			||||||
 | 
					 while(1){
 | 
				
			||||||
 | 
					 bool used=false;
 | 
				
			||||||
 | 
					 getRandomBytes(&NewEntry.ID,16,1,false);
 | 
				
			||||||
 | 
					  for(int j=0;j<Entries.size();j++){
 | 
				
			||||||
 | 
						int k;
 | 
				
			||||||
 | 
						for(k=0;k<16;k++){if(Entries[j].ID[k]!=NewEntry.ID[k])k=0;break;}
 | 
				
			||||||
 | 
						if(k==15)used=true;}
 | 
				
			||||||
 | 
					 if(used==false)break;
 | 
				
			||||||
 | 
					 }}
 | 
				
			||||||
 | 
					Entries.push_back(NewEntry);
 | 
				
			||||||
 | 
					return &Entries.back();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::CalcMasterKeyByFileAndPw(QString filename, QString& Password){
 | 
				
			||||||
 | 
					UINT8* FileKey;
 | 
				
			||||||
 | 
					UINT8* PasswordKey;
 | 
				
			||||||
 | 
					PasswordKey=new UINT8[32];
 | 
				
			||||||
 | 
					FileKey=new UINT8[32];
 | 
				
			||||||
 | 
					sha256_context sha32;
 | 
				
			||||||
 | 
					/////////////////////////
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					if(file.open(IO_ReadOnly) == false) return false;
 | 
				
			||||||
 | 
					unsigned long FileSize=file.size();
 | 
				
			||||||
 | 
					if(FileSize == 32){
 | 
				
			||||||
 | 
						if(file.readBlock((char*)FileKey,32) != 32){
 | 
				
			||||||
 | 
						   file.close();
 | 
				
			||||||
 | 
						   return false;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					unsigned char* buffer = new unsigned char[2048];
 | 
				
			||||||
 | 
					while(1)
 | 
				
			||||||
 | 
					 {
 | 
				
			||||||
 | 
					 unsigned long read=file.readBlock((char*)buffer,2048);
 | 
				
			||||||
 | 
					 if(read == 0) break;
 | 
				
			||||||
 | 
					 sha256_update(&sha32,buffer,read);
 | 
				
			||||||
 | 
					 if(read != 2048) break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sha256_finish(&sha32,FileKey);
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned long KeyLen;
 | 
				
			||||||
 | 
					char *paKey = NULL;
 | 
				
			||||||
 | 
					if(Password == QString::null) return false;
 | 
				
			||||||
 | 
					paKey = new char[Password.length() + 1];
 | 
				
			||||||
 | 
					if(paKey == NULL) return false;
 | 
				
			||||||
 | 
					strcpy(paKey, Password);
 | 
				
			||||||
 | 
					if(paKey == NULL) return false;
 | 
				
			||||||
 | 
					KeyLen = strlen(paKey);
 | 
				
			||||||
 | 
					if(KeyLen == 0) {
 | 
				
			||||||
 | 
					delete [] paKey;
 | 
				
			||||||
 | 
					return false; }
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					sha256_update(&sha32,(unsigned char*) paKey, KeyLen);
 | 
				
			||||||
 | 
					sha256_finish(&sha32,PasswordKey);
 | 
				
			||||||
 | 
					delete [] paKey;
 | 
				
			||||||
 | 
					////////////////////
 | 
				
			||||||
 | 
					sha256_starts(&sha32);
 | 
				
			||||||
 | 
					sha256_update(&sha32,(unsigned char*)PasswordKey,32);
 | 
				
			||||||
 | 
					sha256_update(&sha32,(unsigned char*)FileKey,32);
 | 
				
			||||||
 | 
					sha256_finish(&sha32,MasterKey);
 | 
				
			||||||
 | 
					delete[] PasswordKey;
 | 
				
			||||||
 | 
					delete[] FileKey;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vector<CEntry>::iterator PwDatabase::deleteEntry(vector<CEntry>::iterator iterator){
 | 
				
			||||||
 | 
					return Entries.erase(iterator);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					vector<CEntry>::iterator PwDatabase::deleteEntry(CEntry* entry){
 | 
				
			||||||
 | 
					return deleteEntry(getEntryIterator(entry));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::IsMetaStream(CEntry& p){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(p.pBinaryData == NULL) return false;
 | 
				
			||||||
 | 
					if(p.Additional == NULL) return false;
 | 
				
			||||||
 | 
					if(p.BinaryDesc == NULL) return false;
 | 
				
			||||||
 | 
					if(p.BinaryDesc != "bin-stream") return false;
 | 
				
			||||||
 | 
					if(p.Title == NULL) return false;
 | 
				
			||||||
 | 
					if(p.Title != "Meta-Info") return false;
 | 
				
			||||||
 | 
					if(p.UserName == NULL) return false;
 | 
				
			||||||
 | 
					if(p.UserName != "SYSTEM") return false;
 | 
				
			||||||
 | 
					if(p.URL == NULL) return false;
 | 
				
			||||||
 | 
					if(p.URL != "$") return false;
 | 
				
			||||||
 | 
					if(p.ImageID != 0) return false;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PwDatabase::moveEntry(CEntry* entry,CGroup* dst){
 | 
				
			||||||
 | 
					entry->GroupID=dst->ID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CGroup::ReadGroupField(UINT16 FieldType, UINT32 FieldSize, UINT8 *pData)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch(FieldType)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						case 0x0000:
 | 
				
			||||||
 | 
							// Ignore field
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0001:
 | 
				
			||||||
 | 
							memcpy(&ID, pData, 4);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0002:
 | 
				
			||||||
 | 
							//Name.fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							Name=QString::fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0003:
 | 
				
			||||||
 | 
							Creation.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0004:
 | 
				
			||||||
 | 
							LastMod.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0005:
 | 
				
			||||||
 | 
							LastAccess.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0006:
 | 
				
			||||||
 | 
							Expire.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0007:
 | 
				
			||||||
 | 
							memcpy(&ImageID, pData, 4);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0008:
 | 
				
			||||||
 | 
							memcpy(&Level, pData, 2);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0009:
 | 
				
			||||||
 | 
							memcpy(&Flags, pData, 4);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0xFFFF:
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return false; // Field unsupported
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return true; // Field supported
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PwDatabase::PwDatabase(){
 | 
				
			||||||
 | 
					SearchGroupID=-1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PwDatabase::~PwDatabase(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CEntry::ReadEntryField(UINT16 FieldType, UINT32 FieldSize, UINT8 *pData){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					switch(FieldType)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						case 0x0000:
 | 
				
			||||||
 | 
							// Ignore field
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0001:
 | 
				
			||||||
 | 
							memcpy(ID, pData, 16);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0002:
 | 
				
			||||||
 | 
							memcpy(&GroupID, pData, 4);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0003:
 | 
				
			||||||
 | 
							memcpy(&ImageID, pData, 4);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0004:
 | 
				
			||||||
 | 
							//Title=(char*)pData;
 | 
				
			||||||
 | 
							Title=QString::fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0005:
 | 
				
			||||||
 | 
							URL=QString::fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0006:
 | 
				
			||||||
 | 
							UserName=QString::fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0007:{
 | 
				
			||||||
 | 
							QString s=QString::fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							Password.setString(s,true);
 | 
				
			||||||
 | 
							break;}
 | 
				
			||||||
 | 
						case 0x0008:
 | 
				
			||||||
 | 
							Additional=QString::fromUtf8((char*)pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x0009:
 | 
				
			||||||
 | 
							Creation.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x000A:
 | 
				
			||||||
 | 
							LastMod.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x000B:
 | 
				
			||||||
 | 
							LastAccess.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x000C:
 | 
				
			||||||
 | 
							Expire.Set(pData);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x000D:
 | 
				
			||||||
 | 
							BinaryDesc=(char*)pData;
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0x000E:
 | 
				
			||||||
 | 
							if(FieldSize != 0)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								///@TODO: im Destruktor löschen
 | 
				
			||||||
 | 
								///@TODO: im Konstruktor auf Null
 | 
				
			||||||
 | 
								pBinaryData = new UINT8[FieldSize];
 | 
				
			||||||
 | 
								memcpy(pBinaryData, pData, FieldSize);
 | 
				
			||||||
 | 
								BinaryDataLength = FieldSize;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{pBinaryData=0;}
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case 0xFFFF:
 | 
				
			||||||
 | 
							///@TODO: Alle Elemente geladen - Status setzen oder so was
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							return false; // Field unsupported
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return true; // Field processed
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::CloseDataBase(){
 | 
				
			||||||
 | 
					Groups.clear();
 | 
				
			||||||
 | 
					Entries.clear();
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::SaveDataBase(QString filename){
 | 
				
			||||||
 | 
					CGroup SearchGroup;
 | 
				
			||||||
 | 
					UINT32 NumGroups,NumEntries,Signature1,Signature2,Flags,Version;
 | 
				
			||||||
 | 
					UINT8 TrafoRandomSeed[32];
 | 
				
			||||||
 | 
					UINT8 FinalRandomSeed[16];
 | 
				
			||||||
 | 
					UINT8 ContentsHash[32];
 | 
				
			||||||
 | 
					UINT8 EncryptionIV[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(SearchGroupID!=-1){
 | 
				
			||||||
 | 
					 for(int i=0;i<Groups.size();i++){
 | 
				
			||||||
 | 
					  if(Groups[i].ID==SearchGroupID){
 | 
				
			||||||
 | 
					   SearchGroup=Groups[i];
 | 
				
			||||||
 | 
					   Groups.erase(getGroupIterator(&Groups[i]));}
 | 
				
			||||||
 | 
					 }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(filename==QString::null)return false;
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					unsigned int FileSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//->Add Metastreams
 | 
				
			||||||
 | 
					FileSize=DB_HEADER_SIZE;
 | 
				
			||||||
 | 
					// Get the size of all groups (94 Byte + length of the name string)
 | 
				
			||||||
 | 
					for(int i = 0; i < Groups.size(); i++){
 | 
				
			||||||
 | 
					  FileSize += 94 + Groups[i].Name.utf8().length()+1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// Get the size of all entries
 | 
				
			||||||
 | 
					for(int i = 0; i < Entries.size(); i++){
 | 
				
			||||||
 | 
					  FileSize += 134
 | 
				
			||||||
 | 
						   +Entries[i].Title.utf8().length()+1
 | 
				
			||||||
 | 
						   +Entries[i].UserName.utf8().length()+1
 | 
				
			||||||
 | 
						   +Entries[i].URL.utf8().length()+1
 | 
				
			||||||
 | 
						   +Entries[i].Password.length()+1
 | 
				
			||||||
 | 
						   +Entries[i].Additional.utf8().length()+1
 | 
				
			||||||
 | 
						   +Entries[i].BinaryDesc.utf8().length()+1
 | 
				
			||||||
 | 
						   +Entries[i].BinaryDataLength;}
 | 
				
			||||||
 | 
					// Round up filesize to 16-byte boundary for Rijndael/Twofish
 | 
				
			||||||
 | 
					FileSize = (FileSize + 16) - (FileSize % 16);
 | 
				
			||||||
 | 
					char* buffer=new char[FileSize+16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Signature1 = PWM_DBSIG_1;
 | 
				
			||||||
 | 
					Signature2 = PWM_DBSIG_2;
 | 
				
			||||||
 | 
					Flags = PWM_FLAG_SHA2;
 | 
				
			||||||
 | 
					if(CryptoAlgorithmus == ALGO_AES) Flags |= PWM_FLAG_RIJNDAEL;
 | 
				
			||||||
 | 
					else if(CryptoAlgorithmus == ALGO_TWOFISH) Flags |= PWM_FLAG_TWOFISH;
 | 
				
			||||||
 | 
					Version = PWM_DBVER_DW;
 | 
				
			||||||
 | 
					NumGroups = Groups.size(); //-> (+MetaStreams)
 | 
				
			||||||
 | 
					NumEntries = Entries.size();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					getRandomBytes(FinalRandomSeed,1,16,false);
 | 
				
			||||||
 | 
					getRandomBytes(TrafoRandomSeed,1,32,false);
 | 
				
			||||||
 | 
					getRandomBytes(EncryptionIV,1,16,false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UINT16 FieldType;
 | 
				
			||||||
 | 
					UINT32 FieldSize;
 | 
				
			||||||
 | 
					int pos=DB_HEADER_SIZE; // Skip the header, it will be written later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i=0; i < Groups.size(); i++){
 | 
				
			||||||
 | 
							FieldType = 0x0001; FieldSize = 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Groups[i].ID, 4); pos += 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0002; FieldSize = Groups[i].Name.utf8().length() + 1;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Groups[i].Name.utf8(),FieldSize); pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0003; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Groups[i].Creation.GetPackedTime((unsigned char*)buffer+pos);pos += 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0004; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Groups[i].LastMod.GetPackedTime((unsigned char*)buffer+pos);pos += 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0005; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Groups[i].LastAccess.GetPackedTime((unsigned char*)buffer+pos);pos += 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0006; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Groups[i].Expire.GetPackedTime((unsigned char*)buffer+pos);pos += 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0007; FieldSize = 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Groups[i].ImageID, 4); pos += 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0008; FieldSize = 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Groups[i].Level, 2); pos += 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0009; FieldSize = 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Groups[i].Flags, 4); pos += 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0xFFFF; FieldSize = 0;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i = 0; i < Entries.size(); i++){
 | 
				
			||||||
 | 
							FieldType = 0x0001; FieldSize = 16;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Entries[i].ID, 16); pos += 16;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0002; FieldSize = 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Entries[i].GroupID, 4); pos += 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0003; FieldSize = 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &Entries[i].ImageID, 4); pos += 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0004;
 | 
				
			||||||
 | 
							FieldSize = Entries[i].Title.utf8().length() + 1; // Add terminating NULL character space
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Entries[i].Title.utf8(),FieldSize);  pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0005;
 | 
				
			||||||
 | 
							FieldSize = Entries[i].URL.utf8().length() + 1; // Add terminating NULL character space
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Entries[i].URL.utf8(),FieldSize);  pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0006;
 | 
				
			||||||
 | 
							FieldSize = Entries[i].UserName.utf8().length() + 1; // Add terminating NULL character space
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Entries[i].UserName.utf8(),FieldSize);  pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0007;
 | 
				
			||||||
 | 
							FieldSize = Entries[i].Password.length() + 1; // Add terminating NULL character space
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Entries[i].Password.getString(),FieldSize);  pos += FieldSize;
 | 
				
			||||||
 | 
							Entries[i].Password.delRef();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0008;
 | 
				
			||||||
 | 
							FieldSize = Entries[i].Additional.utf8().length() + 1; // Add terminating NULL character space
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Entries[i].Additional.utf8(),FieldSize);  pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x0009; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Entries[i].Creation.GetPackedTime((unsigned char*)buffer+pos); pos+=5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x000A; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Entries[i].LastMod.GetPackedTime((unsigned char*)buffer+pos); pos+=5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x000B; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Entries[i].LastAccess.GetPackedTime((unsigned char*)buffer+pos); pos+=5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x000C; FieldSize = 5;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							Entries[i].Expire.GetPackedTime((unsigned char*)buffer+pos); pos+=5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x000D;
 | 
				
			||||||
 | 
							FieldSize = Entries[i].BinaryDesc.utf8().length() + 1; // Add terminating NULL character space
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, Entries[i].BinaryDesc.utf8(),FieldSize);  pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0x000E; FieldSize = Entries[i].BinaryDataLength;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
							if((Entries[i].pBinaryData != NULL) && (FieldSize != 0))
 | 
				
			||||||
 | 
								memcpy(buffer+pos, Entries[i].pBinaryData, FieldSize);
 | 
				
			||||||
 | 
							pos += FieldSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							FieldType = 0xFFFF; FieldSize = 0;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldType, 2); pos += 2;
 | 
				
			||||||
 | 
							memcpy(buffer+pos, &FieldSize, 4); pos += 4;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sha256_context context;
 | 
				
			||||||
 | 
					sha256_starts(&context);
 | 
				
			||||||
 | 
					sha256_update(&context,(unsigned char*)buffer+DB_HEADER_SIZE, pos - DB_HEADER_SIZE);
 | 
				
			||||||
 | 
					sha256_finish(&context,(unsigned char*)ContentsHash);
 | 
				
			||||||
 | 
					memcpy(buffer,&Signature1,4);
 | 
				
			||||||
 | 
					memcpy(buffer+4,&Signature2,4);
 | 
				
			||||||
 | 
					memcpy(buffer+8,&Flags,4);
 | 
				
			||||||
 | 
					memcpy(buffer+12,&Version,4);
 | 
				
			||||||
 | 
					memcpy(buffer+16,FinalRandomSeed,16);
 | 
				
			||||||
 | 
					memcpy(buffer+32,EncryptionIV,16);
 | 
				
			||||||
 | 
					memcpy(buffer+48,&NumGroups,4);
 | 
				
			||||||
 | 
					memcpy(buffer+52,&NumEntries,4);
 | 
				
			||||||
 | 
					memcpy(buffer+56,ContentsHash,32);
 | 
				
			||||||
 | 
					memcpy(buffer+88,TrafoRandomSeed,32);
 | 
				
			||||||
 | 
					memcpy(buffer+120,&KeyEncRounds,4);
 | 
				
			||||||
 | 
					transformKey(MasterKey,TransformedMasterKey,TrafoRandomSeed,KeyEncRounds);
 | 
				
			||||||
 | 
					UINT8 FinalKey[32];
 | 
				
			||||||
 | 
					sha256_starts(&context);
 | 
				
			||||||
 | 
					sha256_update(&context,FinalRandomSeed, 16);
 | 
				
			||||||
 | 
					sha256_update(&context,TransformedMasterKey, 32);
 | 
				
			||||||
 | 
					sha256_finish(&context,FinalKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned long EncryptedPartSize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CryptoAlgorithmus == ALGO_AES){
 | 
				
			||||||
 | 
					Rijndael aes;
 | 
				
			||||||
 | 
					// Initialize Rijndael/AES
 | 
				
			||||||
 | 
					  if(aes.init(Rijndael::CBC, Rijndael::Encrypt, FinalKey,Rijndael::Key32Bytes, EncryptionIV) != RIJNDAEL_SUCCESS){
 | 
				
			||||||
 | 
						//TODO:ERR_MSG
 | 
				
			||||||
 | 
						delete [] buffer;
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					EncryptedPartSize = (unsigned long)aes.padEncrypt((UINT8*)buffer+DB_HEADER_SIZE,
 | 
				
			||||||
 | 
											  pos - DB_HEADER_SIZE,
 | 
				
			||||||
 | 
											  (UINT8*)buffer+DB_HEADER_SIZE);
 | 
				
			||||||
 | 
					}else if(CryptoAlgorithmus == ALGO_TWOFISH){
 | 
				
			||||||
 | 
					CTwofish twofish;
 | 
				
			||||||
 | 
					if(twofish.init(FinalKey, 32, EncryptionIV) == false){
 | 
				
			||||||
 | 
					//TODO:ERR_MSG
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					return false;}
 | 
				
			||||||
 | 
					EncryptedPartSize = (unsigned long)twofish.padEncrypt((UINT8*)buffer+DB_HEADER_SIZE,
 | 
				
			||||||
 | 
											      pos - DB_HEADER_SIZE,
 | 
				
			||||||
 | 
											      (UINT8*)buffer+DB_HEADER_SIZE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if((EncryptedPartSize > 2147483446) || (EncryptedPartSize == 0)){
 | 
				
			||||||
 | 
					//TODO:ERR_MSG
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(file.open(IO_ReadWrite | IO_Truncate)==false){
 | 
				
			||||||
 | 
					//TODO:ERR_MSG
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(file.writeBlock(buffer,EncryptedPartSize+DB_HEADER_SIZE)!=EncryptedPartSize+DB_HEADER_SIZE){
 | 
				
			||||||
 | 
					//TODO:ERR_MSG
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					if(SearchGroupID!=-1)Groups.push_back(SearchGroup);
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::NewDataBase(){
 | 
				
			||||||
 | 
					filename="";
 | 
				
			||||||
 | 
					SearchGroupID=-1;
 | 
				
			||||||
 | 
					CryptoAlgorithmus=ALGO_AES;
 | 
				
			||||||
 | 
					KeyEncRounds=6000;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGroup g;
 | 
				
			||||||
 | 
					g.ID=1;
 | 
				
			||||||
 | 
					g.Name=QObject::trUtf8("Standardgruppe");
 | 
				
			||||||
 | 
					Groups.push_back(g);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItr PwDatabase::getGroupIterator(CGroup* pGroup){
 | 
				
			||||||
 | 
					//for(vector<CGroup>::iterator i=Groups.begin();i!=Groups.end();i++){
 | 
				
			||||||
 | 
					//if((*i).ID==pGroup->ID)return i;}
 | 
				
			||||||
 | 
					return Groups.begin()+(pGroup-&Groups[0]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EntryItr PwDatabase::getEntryIterator(CEntry* pEntry){
 | 
				
			||||||
 | 
					return Entries.begin()+(pEntry-&Entries[0]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGroup* PwDatabase::addGroup(CGroup* parent){
 | 
				
			||||||
 | 
					CGroup group;
 | 
				
			||||||
 | 
					if(parent)group.Level=parent->Level+1;
 | 
				
			||||||
 | 
					group.ImageID=0;
 | 
				
			||||||
 | 
					group.ID=getNewGroupId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(!Groups.size() || !parent){
 | 
				
			||||||
 | 
						Groups.push_back(group);
 | 
				
			||||||
 | 
						return &Groups.back();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else {  GroupItr groupIt;
 | 
				
			||||||
 | 
						groupIt=Groups.insert(getGroupIterator(parent)+1,group);
 | 
				
			||||||
 | 
						return &(*groupIt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItr PwDatabase::deleteGroup(unsigned long id){
 | 
				
			||||||
 | 
					for(int i=0;i<Groups.size();i++){
 | 
				
			||||||
 | 
						if(Groups[i].ID==id) return deleteGroup(&Groups[i]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GroupItr PwDatabase::deleteGroup(CGroup* group){
 | 
				
			||||||
 | 
					GroupItr first=getGroupIterator(group);
 | 
				
			||||||
 | 
					GroupItr last=Groups.end();
 | 
				
			||||||
 | 
					for(GroupItr i=getGroupIterator(group)+1; i!=Groups.end();i++){
 | 
				
			||||||
 | 
					 if((*i).Level<=group->Level){
 | 
				
			||||||
 | 
						last=i;
 | 
				
			||||||
 | 
						break;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(GroupItr g=first;g!=last;g++){
 | 
				
			||||||
 | 
					   for(EntryItr e=Entries.begin();e!=Entries.end();){
 | 
				
			||||||
 | 
						if((*g).ID==(*e).GroupID)e=deleteEntry(e);
 | 
				
			||||||
 | 
						else e++;
 | 
				
			||||||
 | 
					   }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return Groups.erase(first,last);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int PwDatabase::getGroupIndex(unsigned long ID){
 | 
				
			||||||
 | 
					int i=0;
 | 
				
			||||||
 | 
					for(i;i<Groups.size();i++){
 | 
				
			||||||
 | 
					if(Groups[i].ID==ID)break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					return i;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PwDatabase::merge(PwDatabase* db){
 | 
				
			||||||
 | 
					for(int i=0;i<db->Groups.size();i++){
 | 
				
			||||||
 | 
						int NewGroupID;
 | 
				
			||||||
 | 
						if(isGroupIdInUse(db->Groups[i].ID)==true) NewGroupID=getNewGroupId();
 | 
				
			||||||
 | 
						else NewGroupID=db->Groups[i].ID;
 | 
				
			||||||
 | 
						for(int j=0;j<db->Entries.size();j++){
 | 
				
			||||||
 | 
							if(db->Entries[j].GroupID==db->Groups[i].ID){
 | 
				
			||||||
 | 
								Entries.push_back(db->Entries[j]);
 | 
				
			||||||
 | 
								Entries.back().GroupID=NewGroupID;
 | 
				
			||||||
 | 
								Entries.back().sID=getNewEntrySid();}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						Groups.push_back(db->Groups[i]);
 | 
				
			||||||
 | 
						Groups.back().ID=NewGroupID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::isGroupIdInUse(UINT32 id){
 | 
				
			||||||
 | 
					for(int i=0;i<Groups.size();i++)
 | 
				
			||||||
 | 
					 if(Groups[i].ID==id)return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool PwDatabase::isEntrySidInUse(UINT32 sid){
 | 
				
			||||||
 | 
					for(int i=0;i<Entries.size();i++)
 | 
				
			||||||
 | 
					 if(Entries[i].sID==sid)return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UINT32 PwDatabase::getNewGroupId(){
 | 
				
			||||||
 | 
					UINT32 id;
 | 
				
			||||||
 | 
					bool used;
 | 
				
			||||||
 | 
					while(1){
 | 
				
			||||||
 | 
					used=false;
 | 
				
			||||||
 | 
					getRandomBytes(&id,4,1,false);
 | 
				
			||||||
 | 
					if(!id)continue; //darf nicht 0 sein (KDB-Format v3)
 | 
				
			||||||
 | 
					  for(int j=0;j<Groups.size();j++){
 | 
				
			||||||
 | 
						if(Groups[j].ID==id)used=true;}
 | 
				
			||||||
 | 
					if(used==false)break;}
 | 
				
			||||||
 | 
					return id;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UINT32 PwDatabase::getNewEntrySid(){
 | 
				
			||||||
 | 
					UINT32 sid;
 | 
				
			||||||
 | 
					while(1){
 | 
				
			||||||
 | 
					getRandomBytes(&sid,4,1,false);
 | 
				
			||||||
 | 
					if(!sid)continue;
 | 
				
			||||||
 | 
					if(!isEntrySidInUse(sid))break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					return sid;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,79 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek.saidi@arcor.de                                                  *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _PW_MANAGER_H_
 | 
				
			||||||
 | 
					#define _PW_MANAGER_H_
 | 
				
			||||||
 | 
					 #define DB_HEADER_SIZE 			124
 | 
				
			||||||
 | 
					 #define PWM_DBSIG_1			0x9AA2D903
 | 
				
			||||||
 | 
					 #define PWM_DBSIG_2			0xB54BFB65
 | 
				
			||||||
 | 
					 #define PWM_DBVER_DW  	 		0x00030002
 | 
				
			||||||
 | 
					 #define PWM_FLAG_SHA2			1
 | 
				
			||||||
 | 
					 #define PWM_FLAG_RIJNDAEL		2
 | 
				
			||||||
 | 
					 #define PWM_FLAG_ARCFOUR		4
 | 
				
			||||||
 | 
					 #define PWM_FLAG_TWOFISH		8
 | 
				
			||||||
 | 
					 #define PWM_STD_KEYENCROUNDS 	6000
 | 
				
			||||||
 | 
					 #define ALGO_AES         		0
 | 
				
			||||||
 | 
					 #define ALGO_TWOFISH			1
 | 
				
			||||||
 | 
					 #define KEEPASS_VERSION			"0.1.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qcolor.h>
 | 
				
			||||||
 | 
					#include <qobject.h>
 | 
				
			||||||
 | 
					#include "lib/SecString.h"
 | 
				
			||||||
 | 
					#include "lib/PwmTime.h"
 | 
				
			||||||
 | 
					#include "Database.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PwDatabase:QObject,public Database{
 | 
				
			||||||
 | 
					 Q_OBJECT
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					 PwDatabase();
 | 
				
			||||||
 | 
					 ~ PwDatabase();
 | 
				
			||||||
 | 
					 bool loadDatabase(QString filename, QString& err);
 | 
				
			||||||
 | 
					 bool SaveDataBase(QString filename);
 | 
				
			||||||
 | 
					 bool NewDataBase();
 | 
				
			||||||
 | 
					 bool CloseDataBase();
 | 
				
			||||||
 | 
					 bool CalcMasterKeyByPassword(QString& password);
 | 
				
			||||||
 | 
					 bool CalcMasterKeyByFile(QString filename);
 | 
				
			||||||
 | 
					 bool CalcMasterKeyByFileAndPw(QString filename, QString& password);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 CGroup*   addGroup(CGroup* parent);
 | 
				
			||||||
 | 
					 GroupItr  deleteGroup(CGroup* pGroup);
 | 
				
			||||||
 | 
					 GroupItr  deleteGroup(unsigned long ID);
 | 
				
			||||||
 | 
					 int       getGroupIndex(unsigned long ID);
 | 
				
			||||||
 | 
					 EntryItr  deleteEntry(CEntry* pEntry);
 | 
				
			||||||
 | 
					 void      moveEntry(CEntry* pEntry,CGroup* pDstGroup);
 | 
				
			||||||
 | 
					 CEntry*   addEntry();
 | 
				
			||||||
 | 
					 void 	 merge(PwDatabase* db2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					 EntryItr deleteEntry(vector<CEntry>::iterator i);
 | 
				
			||||||
 | 
					 EntryItr getEntryIterator(CEntry* pEntry);
 | 
				
			||||||
 | 
					 GroupItr getGroupIterator(CGroup* pGroup);
 | 
				
			||||||
 | 
					 bool IsMetaStream(CEntry& Entry);
 | 
				
			||||||
 | 
					 void transformKey(UINT8* src,UINT8* dst,UINT8* seed,int rounds);
 | 
				
			||||||
 | 
					 bool readHeader(char* raw);
 | 
				
			||||||
 | 
					 bool isGroupIdInUse(UINT32 GroupID);
 | 
				
			||||||
 | 
					 bool isEntrySidInUse(UINT32 sID);
 | 
				
			||||||
 | 
					 UINT32 getNewGroupId();
 | 
				
			||||||
 | 
					 UINT32 getNewEntrySid();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,135 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "PwmConfig.h"
 | 
				
			||||||
 | 
					#include <qobject.h>
 | 
				
			||||||
 | 
					#include <qdir.h>
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CConfig::loadFromIni(){
 | 
				
			||||||
 | 
					CIniFile ini(QDir::homeDirPath()+"/.keepass/config");
 | 
				
			||||||
 | 
					ini.ReadFile();
 | 
				
			||||||
 | 
					ClipboardTimeOut=ini.GetValueI("Options","ClipboardTimeOut",20);
 | 
				
			||||||
 | 
					Toolbar=ini.GetValueB("UI","ShowToolbar",true);
 | 
				
			||||||
 | 
					EntryDetails=ini.GetValueB("UI","ShowEntryDetails",true);
 | 
				
			||||||
 | 
					OpenLast=ini.GetValueB("Options","OpenLast",true);
 | 
				
			||||||
 | 
					LastFile=ini.GetValue("Options","LastFile","");
 | 
				
			||||||
 | 
					ParseColumnString(ini.GetValue("UI","Columns","1111100000"),Columns);
 | 
				
			||||||
 | 
					BannerColor1=ParseColorString(ini.GetValue("Options","BannerColor1","0,104,176"));
 | 
				
			||||||
 | 
					BannerColor2=ParseColorString(ini.GetValue("Options","BannerColor2","213,239,255"));
 | 
				
			||||||
 | 
					BannerTextColor=ParseColorString(ini.GetValue("Options","BannerTextColor","4,0,80"));
 | 
				
			||||||
 | 
					ShowPasswords=ini.GetValueB("Options","ShowPasswords",false);
 | 
				
			||||||
 | 
					OpenUrlCommand=ini.GetValue("Options","UrlCmd","kfmclient openURL %1");
 | 
				
			||||||
 | 
					Language=ini.GetValue("Options","LangFile","");
 | 
				
			||||||
 | 
					ParseBoolString(ini.GetValue("Options","SearchOptions","00110111"),SearchOptions,8);
 | 
				
			||||||
 | 
					ListView_HidePasswords=ini.GetValueB("UI","HidePasswords",true);
 | 
				
			||||||
 | 
					ListView_HideUsernames=ini.GetValueB("UI","HideUsernames",false);
 | 
				
			||||||
 | 
					ParseBoolString(ini.GetValue("Options","PwGenOptions","1111100001"),PwGenOptions,10);
 | 
				
			||||||
 | 
					PwGenLength=ini.GetValueI("Options","PwGenLength",25);
 | 
				
			||||||
 | 
					PwGenCharList=ini.GetValue("Options","PwGenCharList","");
 | 
				
			||||||
 | 
					ExpandGroupTree=ini.GetValueB("Options","ExpandGroupTree",true);
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CConfig::saveToIni(){
 | 
				
			||||||
 | 
					CIniFile ini(QDir::homeDirPath()+"/.keepass/config");
 | 
				
			||||||
 | 
					ini.ReadFile();
 | 
				
			||||||
 | 
					ini.SetValueI("Options","ClipboardTimeOut",ClipboardTimeOut);
 | 
				
			||||||
 | 
					ini.SetValueB("UI","ShowToolbar",Toolbar);
 | 
				
			||||||
 | 
					ini.SetValueB("UI","ShowEntryDetails",EntryDetails);
 | 
				
			||||||
 | 
					 if(OpenLast)ini.SetValue("Options","LastFile",LastFile);
 | 
				
			||||||
 | 
					 else	     ini.SetValue("Options","LastFile","");
 | 
				
			||||||
 | 
					ini.SetValue("UI","Columns",CreateColumnString(),true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","BannerColor1",CreateColorString(BannerColor1),true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","BannerColor2",CreateColorString(BannerColor2),true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","BannerTextColor",CreateColorString(BannerTextColor),true);
 | 
				
			||||||
 | 
					ini.SetValueB("Options","ShowPasswords",ShowPasswords,true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","UrlCmd",OpenUrlCommand,true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","LangFile",Language,true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","SearchOptions",CreateBoolString(SearchOptions,8),true);
 | 
				
			||||||
 | 
					ini.SetValueB("UI","HidePasswords",ListView_HidePasswords);
 | 
				
			||||||
 | 
					ini.SetValueB("UI","HideUsernames",ListView_HideUsernames);
 | 
				
			||||||
 | 
					ini.SetValue("Options","PwGenOptions",CreateBoolString(PwGenOptions,10),true);
 | 
				
			||||||
 | 
					ini.SetValueI("Options","PwGenLength",PwGenLength,true);
 | 
				
			||||||
 | 
					ini.SetValue("Options","PwGenCharList",PwGenCharList,true);
 | 
				
			||||||
 | 
					ini.SetValueB("Options","ExpandGroupTree",ExpandGroupTree,true);
 | 
				
			||||||
 | 
					if(!ini.WriteFile())return false;
 | 
				
			||||||
 | 
					else return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CConfig::ParseColumnString(QString str, bool* dst){
 | 
				
			||||||
 | 
					if(str.length()<10){
 | 
				
			||||||
 | 
					bool _default[]={true,true,true,true,true,false,false,false,false,false};
 | 
				
			||||||
 | 
					memcpy((char*)_default,(char*)dst,10*sizeof(bool));}
 | 
				
			||||||
 | 
					for(int i=0; i<10; i++){
 | 
				
			||||||
 | 
					if(str[i]==QChar('0'))
 | 
				
			||||||
 | 
					 *(dst+i)=false;
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					 *(dst+i)=true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString CConfig::CreateColumnString(){
 | 
				
			||||||
 | 
					QString str="";
 | 
				
			||||||
 | 
					for(int i=0;i<10;i++){
 | 
				
			||||||
 | 
					if(Columns[i])str+="1";
 | 
				
			||||||
 | 
					else	      str+="0";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					return str;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QColor CConfig::ParseColorString(QString str){
 | 
				
			||||||
 | 
					QStringList lst=QStringList::split(',',str);
 | 
				
			||||||
 | 
					if(lst.size()!=3){
 | 
				
			||||||
 | 
						cout << QObject::trUtf8("Warnung:")+" CConfig::ParseColorString(QString):"+QObject::trUtf8("ungültiger RGB-Farbwert: ") << str << endl;
 | 
				
			||||||
 | 
						return QColor(0,0,0);}
 | 
				
			||||||
 | 
					bool err[3];
 | 
				
			||||||
 | 
					int r=lst[0].toUInt(err);
 | 
				
			||||||
 | 
					int g=lst[1].toUInt(err+1);
 | 
				
			||||||
 | 
					int b=lst[2].toUInt(err+2);
 | 
				
			||||||
 | 
					if(!err[0] || !err[1] || !err[2]){
 | 
				
			||||||
 | 
						cout << QObject::trUtf8("Warnung:")+" CConfig::ParseColorString(QString):"+QObject::trUtf8("ungültiger RGB-Farbwert: ") << str << endl;
 | 
				
			||||||
 | 
						return QColor(0,0,0);}
 | 
				
			||||||
 | 
					return QColor(r,g,b);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString CConfig::CreateColorString(QColor c){
 | 
				
			||||||
 | 
					return (QString::number(c.red())+","+QString::number(c.green())+","+QString::number(c.blue()));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CConfig::ParseBoolString(const QString &str,bool* dst, int count){
 | 
				
			||||||
 | 
					for(int i=0; i<count; i++){
 | 
				
			||||||
 | 
					if(str[i]==QChar('0'))
 | 
				
			||||||
 | 
					 *(dst+i)=false;
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					 *(dst+i)=true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString CConfig::CreateBoolString(bool* src, int count){
 | 
				
			||||||
 | 
					QString str="";
 | 
				
			||||||
 | 
					for(int i=0;i<count;i++){
 | 
				
			||||||
 | 
					if(src[i])str+="1";
 | 
				
			||||||
 | 
					else	  str+="0";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					return str;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _PWMCONFIG_H_
 | 
				
			||||||
 | 
					#define _PWMCONFIG_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "lib/IniReader.h"
 | 
				
			||||||
 | 
					#include <qcolor.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CConfig{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					 int TimeFormat;
 | 
				
			||||||
 | 
					 int ClipboardTimeOut;
 | 
				
			||||||
 | 
					 bool Toolbar;
 | 
				
			||||||
 | 
					 bool EntryDetails;
 | 
				
			||||||
 | 
					 QString LastFile;
 | 
				
			||||||
 | 
					 bool OpenLast;
 | 
				
			||||||
 | 
					 bool Columns[10];
 | 
				
			||||||
 | 
					 QColor BannerColor1;
 | 
				
			||||||
 | 
					 QColor BannerColor2;
 | 
				
			||||||
 | 
					 QColor BannerTextColor;
 | 
				
			||||||
 | 
					 bool ShowPasswords;
 | 
				
			||||||
 | 
					 QString OpenUrlCommand;
 | 
				
			||||||
 | 
					 QString Language;
 | 
				
			||||||
 | 
					 bool SearchOptions[8];
 | 
				
			||||||
 | 
					 bool ListView_HidePasswords;
 | 
				
			||||||
 | 
					 bool ListView_HideUsernames;
 | 
				
			||||||
 | 
					 bool PwGenOptions[10];
 | 
				
			||||||
 | 
					 int PwGenLength;
 | 
				
			||||||
 | 
					 QString PwGenCharList;
 | 
				
			||||||
 | 
					 bool ExpandGroupTree;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 bool loadFromIni();
 | 
				
			||||||
 | 
					 bool saveToIni();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					 void ParseColumnString(QString str, bool* dst);
 | 
				
			||||||
 | 
					 void ParseBoolString(const QString &str,bool* dst, int count);
 | 
				
			||||||
 | 
					 QString CreateBoolString(bool* src, int count);
 | 
				
			||||||
 | 
					 QColor ParseColorString(QString str);
 | 
				
			||||||
 | 
					 QString CreateColumnString();
 | 
				
			||||||
 | 
					 QString CreateColorString(QColor);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,541 @@
 | 
				
			||||||
 | 
					/* 2003.05.02: Derived from libgcrypt-1.1.12 by Michael Buesch */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* blowfish.c  -  Blowfish encryption
 | 
				
			||||||
 | 
					 *	Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This file is part of Libgcrypt.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Libgcrypt is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 * it under the terms of the GNU Lesser general Public License as
 | 
				
			||||||
 | 
					 * published by the Free Software Foundation; either version 2.1 of
 | 
				
			||||||
 | 
					 * the License, or (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Libgcrypt 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 Lesser General Public License for more details.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * You should have received a copy of the GNU Lesser General Public
 | 
				
			||||||
 | 
					 * License along with this program; if not, write to the Free Software
 | 
				
			||||||
 | 
					 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * For a description of the algorithm, see:
 | 
				
			||||||
 | 
					 *   Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996.
 | 
				
			||||||
 | 
					 *   ISBN 0-471-11709-9. Pages 336 ff.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Test values:
 | 
				
			||||||
 | 
					 * key	  "abcdefghijklmnopqrstuvwxyz";
 | 
				
			||||||
 | 
					 * plain  "BLOWFISH"
 | 
				
			||||||
 | 
					 * cipher 32 4E D0 FE F4 13 A2 03
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "blowfish.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* precomputed S boxes */
 | 
				
			||||||
 | 
					static const uint32_t ks0[256] = {
 | 
				
			||||||
 | 
						0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, 0xB8E1AFED, 0x6A267E96,
 | 
				
			||||||
 | 
						0xBA7C9045, 0xF12C7F99, 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
 | 
				
			||||||
 | 
						0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, 0x0D95748F, 0x728EB658,
 | 
				
			||||||
 | 
						0x718BCD58, 0x82154AEE, 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
 | 
				
			||||||
 | 
						0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, 0x8E79DCB0, 0x603A180E,
 | 
				
			||||||
 | 
						0x6C9E0E8B, 0xB01E8A3E, 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
 | 
				
			||||||
 | 
						0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, 0x55CA396A, 0x2AAB10B6,
 | 
				
			||||||
 | 
						0xB4CC5C34, 0x1141E8CE, 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
 | 
				
			||||||
 | 
						0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, 0xAFD6BA33, 0x6C24CF5C,
 | 
				
			||||||
 | 
						0x7A325381, 0x28958677, 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
 | 
				
			||||||
 | 
						0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, 0xEF845D5D, 0xE98575B1,
 | 
				
			||||||
 | 
						0xDC262302, 0xEB651B88, 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
 | 
				
			||||||
 | 
						0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, 0x21C66842, 0xF6E96C9A,
 | 
				
			||||||
 | 
						0x670C9C61, 0xABD388F0, 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
 | 
				
			||||||
 | 
						0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, 0xA1F1651D, 0x39AF0176,
 | 
				
			||||||
 | 
						0x66CA593E, 0x82430E88, 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
 | 
				
			||||||
 | 
						0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, 0x4ED3AA62, 0x363F7706,
 | 
				
			||||||
 | 
						0x1BFEDF72, 0x429B023D, 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
 | 
				
			||||||
 | 
						0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, 0xE3FE501A, 0xB6794C3B,
 | 
				
			||||||
 | 
						0x976CE0BD, 0x04C006BA, 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
 | 
				
			||||||
 | 
						0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, 0x6DFC511F, 0x9B30952C,
 | 
				
			||||||
 | 
						0xCC814544, 0xAF5EBD09, 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
 | 
				
			||||||
 | 
						0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, 0x5579C0BD, 0x1A60320A,
 | 
				
			||||||
 | 
						0xD6A100C6, 0x402C7279, 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
 | 
				
			||||||
 | 
						0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, 0x323DB5FA, 0xFD238760,
 | 
				
			||||||
 | 
						0x53317B48, 0x3E00DF82, 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
 | 
				
			||||||
 | 
						0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, 0x695B27B0, 0xBBCA58C8,
 | 
				
			||||||
 | 
						0xE1FFA35D, 0xB8F011A0, 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
 | 
				
			||||||
 | 
						0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, 0xE1DDF2DA, 0xA4CB7E33,
 | 
				
			||||||
 | 
						0x62FB1341, 0xCEE4C6E8, 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
 | 
				
			||||||
 | 
						0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, 0xD08ED1D0, 0xAFC725E0,
 | 
				
			||||||
 | 
						0x8E3C5B2F, 0x8E7594B7, 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
 | 
				
			||||||
 | 
						0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, 0x2F2F2218, 0xBE0E1777,
 | 
				
			||||||
 | 
						0xEA752DFE, 0x8B021FA1, 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
 | 
				
			||||||
 | 
						0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, 0x165FA266, 0x80957705,
 | 
				
			||||||
 | 
						0x93CC7314, 0x211A1477, 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
 | 
				
			||||||
 | 
						0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, 0x00250E2D, 0x2071B35E,
 | 
				
			||||||
 | 
						0x226800BB, 0x57B8E0AF, 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
 | 
				
			||||||
 | 
						0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, 0x83260376, 0x6295CFA9,
 | 
				
			||||||
 | 
						0x11C81968, 0x4E734A41, 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
 | 
				
			||||||
 | 
						0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, 0x08BA6FB5, 0x571BE91F,
 | 
				
			||||||
 | 
						0xF296EC6B, 0x2A0DD915, 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
 | 
				
			||||||
 | 
						0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t ks1[256] = {
 | 
				
			||||||
 | 
						0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, 0xAD6EA6B0, 0x49A7DF7D,
 | 
				
			||||||
 | 
						0x9CEE60B8, 0x8FEDB266, 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
 | 
				
			||||||
 | 
						0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, 0x3F54989A, 0x5B429D65,
 | 
				
			||||||
 | 
						0x6B8FE4D6, 0x99F73FD6, 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
 | 
				
			||||||
 | 
						0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, 0x09686B3F, 0x3EBAEFC9,
 | 
				
			||||||
 | 
						0x3C971814, 0x6B6A70A1, 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
 | 
				
			||||||
 | 
						0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, 0xB03ADA37, 0xF0500C0D,
 | 
				
			||||||
 | 
						0xF01C1F04, 0x0200B3FF, 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
 | 
				
			||||||
 | 
						0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, 0x3AE5E581, 0x37C2DADC,
 | 
				
			||||||
 | 
						0xC8B57634, 0x9AF3DDA7, 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
 | 
				
			||||||
 | 
						0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, 0x4E548B38, 0x4F6DB908,
 | 
				
			||||||
 | 
						0x6F420D03, 0xF60A04BF, 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
 | 
				
			||||||
 | 
						0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, 0x5512721F, 0x2E6B7124,
 | 
				
			||||||
 | 
						0x501ADDE6, 0x9F84CD87, 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
 | 
				
			||||||
 | 
						0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, 0xEF1C1847, 0x3215D908,
 | 
				
			||||||
 | 
						0xDD433B37, 0x24C2BA16, 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
 | 
				
			||||||
 | 
						0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, 0x043556F1, 0xD7A3C76B,
 | 
				
			||||||
 | 
						0x3C11183B, 0x5924A509, 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
 | 
				
			||||||
 | 
						0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, 0x771FE71C, 0x4E3D06FA,
 | 
				
			||||||
 | 
						0x2965DCB9, 0x99E71D0F, 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
 | 
				
			||||||
 | 
						0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, 0xF2F74EA7, 0x361D2B3D,
 | 
				
			||||||
 | 
						0x1939260F, 0x19C27960, 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
 | 
				
			||||||
 | 
						0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, 0xC332DDEF, 0xBE6C5AA5,
 | 
				
			||||||
 | 
						0x65582185, 0x68AB9802, 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
 | 
				
			||||||
 | 
						0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, 0x13CCA830, 0xEB61BD96,
 | 
				
			||||||
 | 
						0x0334FE1E, 0xAA0363CF, 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
 | 
				
			||||||
 | 
						0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, 0x648B1EAF, 0x19BDF0CA,
 | 
				
			||||||
 | 
						0xA02369B9, 0x655ABB50, 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
 | 
				
			||||||
 | 
						0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, 0xF837889A, 0x97E32D77,
 | 
				
			||||||
 | 
						0x11ED935F, 0x16681281, 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
 | 
				
			||||||
 | 
						0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, 0xCDB30AEB, 0x532E3054,
 | 
				
			||||||
 | 
						0x8FD948E4, 0x6DBC3128, 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
 | 
				
			||||||
 | 
						0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, 0x45EEE2B6, 0xA3AAABEA,
 | 
				
			||||||
 | 
						0xDB6C4F15, 0xFACB4FD0, 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
 | 
				
			||||||
 | 
						0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, 0xCF62A1F2, 0x5B8D2646,
 | 
				
			||||||
 | 
						0xFC8883A0, 0xC1C7B6A3, 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
 | 
				
			||||||
 | 
						0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, 0x58428D2A, 0x0C55F5EA,
 | 
				
			||||||
 | 
						0x1DADF43E, 0x233F7061, 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
 | 
				
			||||||
 | 
						0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, 0xA6078084, 0x19F8509E,
 | 
				
			||||||
 | 
						0xE8EFD855, 0x61D99735, 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
 | 
				
			||||||
 | 
						0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, 0xDB73DBD3, 0x105588CD,
 | 
				
			||||||
 | 
						0x675FDA79, 0xE3674340, 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
 | 
				
			||||||
 | 
						0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t ks2[256] = {
 | 
				
			||||||
 | 
						0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, 0x411520F7, 0x7602D4F7,
 | 
				
			||||||
 | 
						0xBCF46B2E, 0xD4A20068, 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
 | 
				
			||||||
 | 
						0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, 0x4D95FC1D, 0x96B591AF,
 | 
				
			||||||
 | 
						0x70F4DDD3, 0x66A02F45, 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
 | 
				
			||||||
 | 
						0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, 0x28507825, 0x530429F4,
 | 
				
			||||||
 | 
						0x0A2C86DA, 0xE9B66DFB, 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
 | 
				
			||||||
 | 
						0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, 0xAACE1E7C, 0xD3375FEC,
 | 
				
			||||||
 | 
						0xCE78A399, 0x406B2A42, 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
 | 
				
			||||||
 | 
						0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, 0x3A6EFA74, 0xDD5B4332,
 | 
				
			||||||
 | 
						0x6841E7F7, 0xCA7820FB, 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
 | 
				
			||||||
 | 
						0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, 0x55A867BC, 0xA1159A58,
 | 
				
			||||||
 | 
						0xCCA92963, 0x99E1DB33, 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
 | 
				
			||||||
 | 
						0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, 0x95C11548, 0xE4C66D22,
 | 
				
			||||||
 | 
						0x48C1133F, 0xC70F86DC, 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
 | 
				
			||||||
 | 
						0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, 0x257B7834, 0x602A9C60,
 | 
				
			||||||
 | 
						0xDFF8E8A3, 0x1F636C1B, 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
 | 
				
			||||||
 | 
						0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, 0x85B2A20E, 0xE6BA0D99,
 | 
				
			||||||
 | 
						0xDE720C8C, 0x2DA2F728, 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
 | 
				
			||||||
 | 
						0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, 0x0A476341, 0x992EFF74,
 | 
				
			||||||
 | 
						0x3A6F6EAB, 0xF4F8FD37, 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
 | 
				
			||||||
 | 
						0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, 0xF1290DC7, 0xCC00FFA3,
 | 
				
			||||||
 | 
						0xB5390F92, 0x690FED0B, 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
 | 
				
			||||||
 | 
						0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, 0x37392EB3, 0xCC115979,
 | 
				
			||||||
 | 
						0x8026E297, 0xF42E312D, 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
 | 
				
			||||||
 | 
						0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, 0x1A6B1018, 0x11CAEDFA,
 | 
				
			||||||
 | 
						0x3D25BDD8, 0xE2E1C3C9, 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
 | 
				
			||||||
 | 
						0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, 0x9DBC8057, 0xF0F7C086,
 | 
				
			||||||
 | 
						0x60787BF8, 0x6003604D, 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
 | 
				
			||||||
 | 
						0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, 0x77A057BE, 0xBDE8AE24,
 | 
				
			||||||
 | 
						0x55464299, 0xBF582E61, 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
 | 
				
			||||||
 | 
						0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, 0x7AEB2661, 0x8B1DDF84,
 | 
				
			||||||
 | 
						0x846A0E79, 0x915F95E2, 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
 | 
				
			||||||
 | 
						0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, 0xB77F19B6, 0xE0A9DC09,
 | 
				
			||||||
 | 
						0x662D09A1, 0xC4324633, 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
 | 
				
			||||||
 | 
						0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, 0xDCB7DA83, 0x573906FE,
 | 
				
			||||||
 | 
						0xA1E2CE9B, 0x4FCD7F52, 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
 | 
				
			||||||
 | 
						0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, 0xF0177A28, 0xC0F586E0,
 | 
				
			||||||
 | 
						0x006058AA, 0x30DC7D62, 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
 | 
				
			||||||
 | 
						0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, 0x6F05E409, 0x4B7C0188,
 | 
				
			||||||
 | 
						0x39720A3D, 0x7C927C24, 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
 | 
				
			||||||
 | 
						0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, 0x1E50EF5E, 0xB161E6F8,
 | 
				
			||||||
 | 
						0xA28514D9, 0x6C51133C, 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
 | 
				
			||||||
 | 
						0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t ks3[256] = {
 | 
				
			||||||
 | 
						0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, 0x5CB0679E, 0x4FA33742,
 | 
				
			||||||
 | 
						0xD3822740, 0x99BC9BBE, 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
 | 
				
			||||||
 | 
						0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, 0x5748AB2F, 0xBC946E79,
 | 
				
			||||||
 | 
						0xC6A376D2, 0x6549C2C8, 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
 | 
				
			||||||
 | 
						0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, 0xA1FAD5F0, 0x6A2D519A,
 | 
				
			||||||
 | 
						0x63EF8CE2, 0x9A86EE22, 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
 | 
				
			||||||
 | 
						0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, 0x2826A2F9, 0xA73A3AE1,
 | 
				
			||||||
 | 
						0x4BA99586, 0xEF5562E9, 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
 | 
				
			||||||
 | 
						0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, 0xE990FD5A, 0x9E34D797,
 | 
				
			||||||
 | 
						0x2CF0B7D9, 0x022B8B51, 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
 | 
				
			||||||
 | 
						0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, 0xE029AC71, 0xE019A5E6,
 | 
				
			||||||
 | 
						0x47B0ACFD, 0xED93FA9B, 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
 | 
				
			||||||
 | 
						0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, 0x15056DD4, 0x88F46DBA,
 | 
				
			||||||
 | 
						0x03A16125, 0x0564F0BD, 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
 | 
				
			||||||
 | 
						0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, 0x7533D928, 0xB155FDF5,
 | 
				
			||||||
 | 
						0x03563482, 0x8ABA3CBB, 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
 | 
				
			||||||
 | 
						0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, 0xEA7A90C2, 0xFB3E7BCE,
 | 
				
			||||||
 | 
						0x5121CE64, 0x774FBE32, 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
 | 
				
			||||||
 | 
						0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, 0xB39A460A, 0x6445C0DD,
 | 
				
			||||||
 | 
						0x586CDECF, 0x1C20C8AE, 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
 | 
				
			||||||
 | 
						0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, 0x72EACEA8, 0xFA6484BB,
 | 
				
			||||||
 | 
						0x8D6612AE, 0xBF3C6F47, 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
 | 
				
			||||||
 | 
						0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, 0x4040CB08, 0x4EB4E2CC,
 | 
				
			||||||
 | 
						0x34D2466A, 0x0115AF84, 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
 | 
				
			||||||
 | 
						0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, 0x611560B1, 0xE7933FDC,
 | 
				
			||||||
 | 
						0xBB3A792B, 0x344525BD, 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
 | 
				
			||||||
 | 
						0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, 0x1A908749, 0xD44FBD9A,
 | 
				
			||||||
 | 
						0xD0DADECB, 0xD50ADA38, 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
 | 
				
			||||||
 | 
						0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, 0xBF97222C, 0x15E6FC2A,
 | 
				
			||||||
 | 
						0x0F91FC71, 0x9B941525, 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
 | 
				
			||||||
 | 
						0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, 0xE0EC6E0E, 0x1698DB3B,
 | 
				
			||||||
 | 
						0x4C98A0BE, 0x3278E964, 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
 | 
				
			||||||
 | 
						0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, 0xDF359F8D, 0x9B992F2E,
 | 
				
			||||||
 | 
						0xE60B6F47, 0x0FE3F11D, 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
 | 
				
			||||||
 | 
						0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, 0xF523F357, 0xA6327623,
 | 
				
			||||||
 | 
						0x93A83531, 0x56CCCD02, 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
 | 
				
			||||||
 | 
						0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, 0xE6C6C7BD, 0x327A140A,
 | 
				
			||||||
 | 
						0x45E1D006, 0xC3F27B9A, 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
 | 
				
			||||||
 | 
						0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, 0x53113EC0, 0x1640E3D3,
 | 
				
			||||||
 | 
						0x38ABBD60, 0x2547ADF0, 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
 | 
				
			||||||
 | 
						0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, 0x1948C25C, 0x02FB8A8C,
 | 
				
			||||||
 | 
						0x01C36AE4, 0xD6EBE1F9, 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
 | 
				
			||||||
 | 
						0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const uint32_t ps[BLOWFISH_ROUNDS + 2] = {
 | 
				
			||||||
 | 
						0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0,
 | 
				
			||||||
 | 
						0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
 | 
				
			||||||
 | 
						0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Blowfish::Blowfish()
 | 
				
			||||||
 | 
					{	static bool mustSelfTest = false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::burn_stack(int bytes)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						char buf[64];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memset(buf, 0, sizeof buf);
 | 
				
			||||||
 | 
						bytes -= sizeof buf;
 | 
				
			||||||
 | 
						if (bytes > 0)
 | 
				
			||||||
 | 
							burn_stack(bytes);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::do_encrypt(uint32_t * ret_xl, uint32_t * ret_xr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if BLOWFISH_ROUNDS == 16
 | 
				
			||||||
 | 
						uint32_t xl, xr, *s0, *s1, *s2, *s3, *p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xl = *ret_xl;
 | 
				
			||||||
 | 
						xr = *ret_xr;
 | 
				
			||||||
 | 
						p = bc.p;
 | 
				
			||||||
 | 
						s0 = bc.s0;
 | 
				
			||||||
 | 
						s1 = bc.s1;
 | 
				
			||||||
 | 
						s2 = bc.s2;
 | 
				
			||||||
 | 
						s3 = bc.s3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						R(xl, xr, 0, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 1, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 2, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 3, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 4, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 5, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 6, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 7, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 8, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 9, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 10, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 11, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 12, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 13, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 14, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 15, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xl ^= p[BLOWFISH_ROUNDS];
 | 
				
			||||||
 | 
						xr ^= p[BLOWFISH_ROUNDS + 1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*ret_xl = xr;
 | 
				
			||||||
 | 
						*ret_xr = xl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						uint32_t xl, xr, temp, *p;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xl = *ret_xl;
 | 
				
			||||||
 | 
						xr = *ret_xr;
 | 
				
			||||||
 | 
						p = bc.p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < BLOWFISH_ROUNDS; i++) {
 | 
				
			||||||
 | 
							xl ^= p[i];
 | 
				
			||||||
 | 
							xr ^= function_F(xl);
 | 
				
			||||||
 | 
							temp = xl;
 | 
				
			||||||
 | 
							xl = xr;
 | 
				
			||||||
 | 
							xr = temp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						temp = xl;
 | 
				
			||||||
 | 
						xl = xr;
 | 
				
			||||||
 | 
						xr = temp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xr ^= p[BLOWFISH_ROUNDS];
 | 
				
			||||||
 | 
						xl ^= p[BLOWFISH_ROUNDS + 1];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*ret_xl = xl;
 | 
				
			||||||
 | 
						*ret_xr = xr;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::do_decrypt(uint32_t * ret_xl, uint32_t * ret_xr)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if BLOWFISH_ROUNDS == 16
 | 
				
			||||||
 | 
						uint32_t xl, xr, *s0, *s1, *s2, *s3, *p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xl = *ret_xl;
 | 
				
			||||||
 | 
						xr = *ret_xr;
 | 
				
			||||||
 | 
						p = bc.p;
 | 
				
			||||||
 | 
						s0 = bc.s0;
 | 
				
			||||||
 | 
						s1 = bc.s1;
 | 
				
			||||||
 | 
						s2 = bc.s2;
 | 
				
			||||||
 | 
						s3 = bc.s3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						R(xl, xr, 17, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 16, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 15, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 14, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 13, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 12, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 11, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 10, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 9, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 8, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 7, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 6, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 5, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 4, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xl, xr, 3, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
						R(xr, xl, 2, p, s0, s1, s2, s3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xl ^= p[1];
 | 
				
			||||||
 | 
						xr ^= p[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*ret_xl = xr;
 | 
				
			||||||
 | 
						*ret_xr = xl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
						uint32_t xl, xr, temp, *p;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xl = *ret_xl;
 | 
				
			||||||
 | 
						xr = *ret_xr;
 | 
				
			||||||
 | 
						p = bc.p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = BLOWFISH_ROUNDS + 1; i > 1; i--) {
 | 
				
			||||||
 | 
							xl ^= p[i];
 | 
				
			||||||
 | 
							xr ^= function_F(xl);
 | 
				
			||||||
 | 
							temp = xl;
 | 
				
			||||||
 | 
							xl = xr;
 | 
				
			||||||
 | 
							xr = temp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						temp = xl;
 | 
				
			||||||
 | 
						xl = xr;
 | 
				
			||||||
 | 
						xr = temp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						xr ^= p[1];
 | 
				
			||||||
 | 
						xl ^= p[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						*ret_xl = xl;
 | 
				
			||||||
 | 
						*ret_xr = xr;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::do_encrypt_block(byte * outbuf, byte * inbuf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						uint32_t d1, d2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3];
 | 
				
			||||||
 | 
						d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7];
 | 
				
			||||||
 | 
						do_encrypt(&d1, &d2);
 | 
				
			||||||
 | 
						outbuf[0] = (d1 >> 24) & 0xff;
 | 
				
			||||||
 | 
						outbuf[1] = (d1 >> 16) & 0xff;
 | 
				
			||||||
 | 
						outbuf[2] = (d1 >> 8) & 0xff;
 | 
				
			||||||
 | 
						outbuf[3] = d1 & 0xff;
 | 
				
			||||||
 | 
						outbuf[4] = (d2 >> 24) & 0xff;
 | 
				
			||||||
 | 
						outbuf[5] = (d2 >> 16) & 0xff;
 | 
				
			||||||
 | 
						outbuf[6] = (d2 >> 8) & 0xff;
 | 
				
			||||||
 | 
						outbuf[7] = d2 & 0xff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::encrypt_block(byte * outbuf, byte * inbuf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						do_encrypt_block(outbuf, inbuf);
 | 
				
			||||||
 | 
						burn_stack(64);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::do_decrypt_block(byte * outbuf, byte * inbuf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						uint32_t d1, d2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						d1 = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3];
 | 
				
			||||||
 | 
						d2 = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7];
 | 
				
			||||||
 | 
						do_decrypt(&d1, &d2);
 | 
				
			||||||
 | 
						outbuf[0] = (d1 >> 24) & 0xff;
 | 
				
			||||||
 | 
						outbuf[1] = (d1 >> 16) & 0xff;
 | 
				
			||||||
 | 
						outbuf[2] = (d1 >> 8) & 0xff;
 | 
				
			||||||
 | 
						outbuf[3] = d1 & 0xff;
 | 
				
			||||||
 | 
						outbuf[4] = (d2 >> 24) & 0xff;
 | 
				
			||||||
 | 
						outbuf[5] = (d2 >> 16) & 0xff;
 | 
				
			||||||
 | 
						outbuf[6] = (d2 >> 8) & 0xff;
 | 
				
			||||||
 | 
						outbuf[7] = d2 & 0xff;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::decrypt_block(byte * outbuf, byte * inbuf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						do_decrypt_block(outbuf, inbuf);
 | 
				
			||||||
 | 
						burn_stack(64);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Blowfish::do_bf_setkey(byte * key, unsigned int keylen)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int i, j;
 | 
				
			||||||
 | 
						uint32_t data, datal, datar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < BLOWFISH_ROUNDS + 2; ++i)
 | 
				
			||||||
 | 
							bc.p[i] = ps[i];
 | 
				
			||||||
 | 
						for (i = 0; i < 256; ++i) {
 | 
				
			||||||
 | 
							bc.s0[i] = ks0[i];
 | 
				
			||||||
 | 
							bc.s1[i] = ks1[i];
 | 
				
			||||||
 | 
							bc.s2[i] = ks2[i];
 | 
				
			||||||
 | 
							bc.s3[i] = ks3[i];
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = j = 0; i < BLOWFISH_ROUNDS + 2; ++i) {
 | 
				
			||||||
 | 
					#ifdef BIG_ENDIAN_HOST
 | 
				
			||||||
 | 
							((byte *) & data)[0] = key[j];
 | 
				
			||||||
 | 
							((byte *) & data)[1] = key[(j + 1) % keylen];
 | 
				
			||||||
 | 
							((byte *) & data)[2] = key[(j + 2) % keylen];
 | 
				
			||||||
 | 
							((byte *) & data)[3] = key[(j + 3) % keylen];
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
							((byte *) & data)[3] = key[j];
 | 
				
			||||||
 | 
							((byte *) & data)[2] = key[(j + 1) % keylen];
 | 
				
			||||||
 | 
							((byte *) & data)[1] = key[(j + 2) % keylen];
 | 
				
			||||||
 | 
							((byte *) & data)[0] = key[(j + 3) % keylen];
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
							bc.p[i] ^= data;
 | 
				
			||||||
 | 
							j = (j + 4) % keylen;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						datal = datar = 0;
 | 
				
			||||||
 | 
						for (i = 0; i < BLOWFISH_ROUNDS + 2; i += 2) {
 | 
				
			||||||
 | 
							do_encrypt(&datal, &datar);
 | 
				
			||||||
 | 
							bc.p[i] = datal;
 | 
				
			||||||
 | 
							bc.p[i + 1] = datar;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for (i = 0; i < 256; i += 2) {
 | 
				
			||||||
 | 
							do_encrypt(&datal, &datar);
 | 
				
			||||||
 | 
							bc.s0[i] = datal;
 | 
				
			||||||
 | 
							bc.s0[i + 1] = datar;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for (i = 0; i < 256; i += 2) {
 | 
				
			||||||
 | 
							do_encrypt(&datal, &datar);
 | 
				
			||||||
 | 
							bc.s1[i] = datal;
 | 
				
			||||||
 | 
							bc.s1[i + 1] = datar;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for (i = 0; i < 256; i += 2) {
 | 
				
			||||||
 | 
							do_encrypt(&datal, &datar);
 | 
				
			||||||
 | 
							bc.s2[i] = datal;
 | 
				
			||||||
 | 
							bc.s2[i + 1] = datar;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for (i = 0; i < 256; i += 2) {
 | 
				
			||||||
 | 
							do_encrypt(&datal, &datar);
 | 
				
			||||||
 | 
							bc.s3[i] = datal;
 | 
				
			||||||
 | 
							bc.s3[i + 1] = datar;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Check for weak key.  A weak key is a key in which a value in */
 | 
				
			||||||
 | 
						/* the P-array (here c) occurs more than once per table.        */
 | 
				
			||||||
 | 
						for (i = 0; i < 255; ++i) {
 | 
				
			||||||
 | 
							for (j = i + 1; j < 256; ++j) {
 | 
				
			||||||
 | 
								if ((bc.s0[i] == bc.s0[j]) || (bc.s1[i] == bc.s1[j]) ||
 | 
				
			||||||
 | 
								    (bc.s2[i] == bc.s2[j]) || (bc.s3[i] == bc.s3[j]))
 | 
				
			||||||
 | 
									return 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Blowfish::bf_setkey(byte * key, unsigned int keylen)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int rc = do_bf_setkey(key, keylen);
 | 
				
			||||||
 | 
						burn_stack(64);
 | 
				
			||||||
 | 
						return rc;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Blowfish::bf_encrypt(byte * outbuf, byte * inbuf, unsigned int inbuf_len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (inbuf_len % 8)
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unsigned int i = 0;
 | 
				
			||||||
 | 
						while (i < inbuf_len) {
 | 
				
			||||||
 | 
							encrypt_block(outbuf + i, inbuf + i);
 | 
				
			||||||
 | 
							i += 8;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int Blowfish::bf_decrypt(byte * outbuf, byte * inbuf, unsigned int inbuf_len)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (inbuf_len % 8)
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						unsigned int i = 0;
 | 
				
			||||||
 | 
						while (i < inbuf_len) {
 | 
				
			||||||
 | 
							decrypt_block(outbuf + i, inbuf + i);
 | 
				
			||||||
 | 
							i += 8;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Blowfish::padNull(string *buf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						buf->append(1, (char)0x01);
 | 
				
			||||||
 | 
						string::size_type append_null = 8 - (buf->length() % 8);
 | 
				
			||||||
 | 
						buf->append(append_null, (char)0x00);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool Blowfish::unpadNull(string *buf)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (buf->size() % 8)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						string::size_type pos = buf->length() - 1;
 | 
				
			||||||
 | 
						while ((*buf)[pos] != (char)0x01) {
 | 
				
			||||||
 | 
							if (pos == 0)
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							--pos;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						buf->erase(pos, buf->length() - pos);
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,110 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   copyright (C) 2003, 2004 by Michael Buesch                            *
 | 
				
			||||||
 | 
					 *   email: mbuesch@freenet.de                                             *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   blowfish.c  -  Blowfish encryption                                    *
 | 
				
			||||||
 | 
					 *       Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.     *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License version 2        *
 | 
				
			||||||
 | 
					 *   as published by the Free Software Foundation.                         *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef BLOWFISH_H
 | 
				
			||||||
 | 
					#define BLOWFISH_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					using std::string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define BLOWFISH_BLOCKSIZE	8
 | 
				
			||||||
 | 
					#define BLOWFISH_ROUNDS		16
 | 
				
			||||||
 | 
					#define CIPHER_ALGO_BLOWFISH	4	/* blowfish 128 bit key */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef uint8_t	byte;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** blowfish encryption algorithm.
 | 
				
			||||||
 | 
					  * Derived from libgcrypt-1.1.12
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Blowfish
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct BLOWFISH_context
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							uint32_t s0[256];
 | 
				
			||||||
 | 
							uint32_t s1[256];
 | 
				
			||||||
 | 
							uint32_t s2[256];
 | 
				
			||||||
 | 
							uint32_t s3[256];
 | 
				
			||||||
 | 
							uint32_t p[BLOWFISH_ROUNDS+2];
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						Blowfish();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** set key to encrypt. if return == 1, it is a weak key. */
 | 
				
			||||||
 | 
						int bf_setkey( byte *key, unsigned int keylen );
 | 
				
			||||||
 | 
						/** encrypt inbuf and return it in outbuf.
 | 
				
			||||||
 | 
						  * inbuf and outbuf have to be: buf % 8 == 0
 | 
				
			||||||
 | 
						  * You may check this with getPaddedLen() and pad with NULL.
 | 
				
			||||||
 | 
						  */
 | 
				
			||||||
 | 
						int bf_encrypt( byte *outbuf, byte *inbuf, unsigned int inbuf_len );
 | 
				
			||||||
 | 
						/** decrypt inbuf and return it in outbuf.
 | 
				
			||||||
 | 
						  * inbuf and outbuf have to be: buf % 8 == 0
 | 
				
			||||||
 | 
						  * You may check this with getPaddedLen() and pad with NULL.
 | 
				
			||||||
 | 
						  */
 | 
				
			||||||
 | 
						int bf_decrypt( byte *outbuf, byte *inbuf, unsigned int inbuf_len );
 | 
				
			||||||
 | 
						/** returns the length, the sting has to be padded to */
 | 
				
			||||||
 | 
						static unsigned int getPaddedLen(unsigned int inLen)
 | 
				
			||||||
 | 
								{ return ((8 - (inLen % 8)) + inLen); }
 | 
				
			||||||
 | 
						/** pad up to 8 bytes. */
 | 
				
			||||||
 | 
						static void padNull(string *buf);
 | 
				
			||||||
 | 
						/** remove padded data */
 | 
				
			||||||
 | 
						static bool unpadNull(string *buf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					#if BLOWFISH_ROUNDS != 16
 | 
				
			||||||
 | 
						uint32_t function_F( uint32_t x)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							uint16_t a, b, c, d;
 | 
				
			||||||
 | 
						#ifdef BIG_ENDIAN_HOST
 | 
				
			||||||
 | 
							a = ((byte *) & x)[0];
 | 
				
			||||||
 | 
							b = ((byte *) & x)[1];
 | 
				
			||||||
 | 
							c = ((byte *) & x)[2];
 | 
				
			||||||
 | 
							d = ((byte *) & x)[3];
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
							a = ((byte *) & x)[3];
 | 
				
			||||||
 | 
							b = ((byte *) & x)[2];
 | 
				
			||||||
 | 
							c = ((byte *) & x)[1];
 | 
				
			||||||
 | 
							d = ((byte *) & x)[0];
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
							return ((bc.s0[a] + bc.s1[b]) ^ bc.s2[c]) + bc.s3[d];
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
						void R(uint32_t &l, uint32_t &r, uint32_t i, uint32_t *p,
 | 
				
			||||||
 | 
						       uint32_t *s0, uint32_t *s1, uint32_t *s2, uint32_t *s3)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							l ^= p[i];
 | 
				
			||||||
 | 
						#ifdef BIG_ENDIAN_HOST
 | 
				
			||||||
 | 
							r ^= (( s0[((byte*)&l)[0]] + s1[((byte*)&l)[1]])
 | 
				
			||||||
 | 
								^ s2[((byte*)&l)[2]]) + s3[((byte*)&l)[3]];
 | 
				
			||||||
 | 
						#else
 | 
				
			||||||
 | 
							r ^= (( s0[((byte*)&l)[3]] + s1[((byte*)&l)[2]])
 | 
				
			||||||
 | 
								^ s2[((byte*)&l)[1]]) + s3[((byte*)&l)[0]];
 | 
				
			||||||
 | 
						#endif
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						void encrypt_block(byte *outbuf, byte *inbuf);
 | 
				
			||||||
 | 
						void decrypt_block(byte *outbuf, byte *inbuf);
 | 
				
			||||||
 | 
						void burn_stack(int bytes);
 | 
				
			||||||
 | 
						void do_encrypt(uint32_t *ret_xl, uint32_t *ret_xr);
 | 
				
			||||||
 | 
						void do_decrypt(uint32_t *ret_xl, uint32_t *ret_xr);
 | 
				
			||||||
 | 
						void do_encrypt_block(byte *outbuf, byte *inbuf);
 | 
				
			||||||
 | 
						void do_decrypt_block(byte *outbuf, byte *inbuf);
 | 
				
			||||||
 | 
						int do_bf_setkey(byte *key, unsigned int keylen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						struct BLOWFISH_context bc;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,158 @@
 | 
				
			||||||
 | 
					#ifndef _RIJNDAEL_H_
 | 
				
			||||||
 | 
					#define _RIJNDAEL_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// This file is based on Szymon Stefanek's Rijndael implementation.
 | 
				
			||||||
 | 
					// All I have done is changed the variable type definitions, not more.
 | 
				
			||||||
 | 
					// The original header is below.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// File : rijndael.h
 | 
				
			||||||
 | 
					// Creation date : Sun Nov 5 2000 03:21:05 CEST
 | 
				
			||||||
 | 
					// Author : Szymon Stefanek (stefanek@tin.it)
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Another implementation of the Rijndael cipher.
 | 
				
			||||||
 | 
					// This is intended to be an easily usable library file.
 | 
				
			||||||
 | 
					// This code is public domain.
 | 
				
			||||||
 | 
					// Based on the Vincent Rijmen and K.U.Leuven implementation 2.4.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Original Copyright notice:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    rijndael-alg-fst.c   v2.4   April '2000
 | 
				
			||||||
 | 
					//    rijndael-alg-fst.h
 | 
				
			||||||
 | 
					//    rijndael-api-fst.c
 | 
				
			||||||
 | 
					//    rijndael-api-fst.h
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    Optimised ANSI C code
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    authors: v1.0: Antoon Bosselaers
 | 
				
			||||||
 | 
					//             v2.0: Vincent Rijmen, K.U.Leuven
 | 
				
			||||||
 | 
					//             v2.3: Paulo Barreto
 | 
				
			||||||
 | 
					//             v2.4: Vincent Rijmen, K.U.Leuven
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//    This code is placed in the public domain.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// This implementation works on 128 , 192 , 256 bit keys
 | 
				
			||||||
 | 
					// and on 128 bit blocks
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Example of usage:
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  // Input data
 | 
				
			||||||
 | 
					//  unsigned char key[32];                       // The key
 | 
				
			||||||
 | 
					//  initializeYour256BitKey();                   // Obviously initialized with sth
 | 
				
			||||||
 | 
					//  const unsigned char * plainText = getYourPlainText(); // Your plain text
 | 
				
			||||||
 | 
					//  int plainTextLen = strlen(plainText);        // Plain text length
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  // Encrypting
 | 
				
			||||||
 | 
					//  Rijndael rin;
 | 
				
			||||||
 | 
					//  unsigned char output[plainTextLen + 16];
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  rin.init(Rijndael::CBC,Rijndael::Encrypt,key,Rijndael::Key32Bytes);
 | 
				
			||||||
 | 
					//  // It is a good idea to check the error code
 | 
				
			||||||
 | 
					//  int len = rin.padEncrypt(plainText,len,output);
 | 
				
			||||||
 | 
					//  if(len >= 0)useYourEncryptedText();
 | 
				
			||||||
 | 
					//  else encryptError(len);
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  // Decrypting: we can reuse the same object
 | 
				
			||||||
 | 
					//  unsigned char output2[len];
 | 
				
			||||||
 | 
					//  rin.init(Rijndael::CBC,Rijndael::Decrypt,key,Rijndael::Key32Bytes));
 | 
				
			||||||
 | 
					//  len = rin.padDecrypt(output,len,output2);
 | 
				
			||||||
 | 
					//  if(len >= 0)useYourDecryptedText();
 | 
				
			||||||
 | 
					//  else decryptError(len);
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define _MAX_KEY_COLUMNS (256/32)
 | 
				
			||||||
 | 
					#define _MAX_ROUNDS      14
 | 
				
			||||||
 | 
					#define MAX_IV_SIZE      16
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qglobal.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Error codes
 | 
				
			||||||
 | 
					#define RIJNDAEL_SUCCESS 0
 | 
				
			||||||
 | 
					#define RIJNDAEL_UNSUPPORTED_MODE -1
 | 
				
			||||||
 | 
					#define RIJNDAEL_UNSUPPORTED_DIRECTION -2
 | 
				
			||||||
 | 
					#define RIJNDAEL_UNSUPPORTED_KEY_LENGTH -3
 | 
				
			||||||
 | 
					#define RIJNDAEL_BAD_KEY -4
 | 
				
			||||||
 | 
					#define RIJNDAEL_NOT_INITIALIZED -5
 | 
				
			||||||
 | 
					#define RIJNDAEL_BAD_DIRECTION -6
 | 
				
			||||||
 | 
					#define RIJNDAEL_CORRUPTED_DATA -7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Rijndael
 | 
				
			||||||
 | 
					{	
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						enum Direction { Encrypt , Decrypt };
 | 
				
			||||||
 | 
						enum Mode { ECB , CBC , CFB1 };
 | 
				
			||||||
 | 
						enum KeyLength { Key16Bytes , Key24Bytes , Key32Bytes };
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// Creates a Rijndael cipher object
 | 
				
			||||||
 | 
						// You have to call init() before you can encrypt or decrypt stuff
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						Rijndael();
 | 
				
			||||||
 | 
						~Rijndael();
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						// Internal stuff
 | 
				
			||||||
 | 
						enum State { Valid , Invalid };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						State     m_state;
 | 
				
			||||||
 | 
						Mode      m_mode;
 | 
				
			||||||
 | 
						Direction m_direction;
 | 
				
			||||||
 | 
						UINT8     m_initVector[MAX_IV_SIZE];
 | 
				
			||||||
 | 
						UINT32    m_uRounds;
 | 
				
			||||||
 | 
						UINT8     m_expandedKey[_MAX_ROUNDS+1][4][4];
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
						// API
 | 
				
			||||||
 | 
						//////////////////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// init(): Initializes the crypt session
 | 
				
			||||||
 | 
						// Returns RIJNDAEL_SUCCESS or an error code
 | 
				
			||||||
 | 
						// mode      : Rijndael::ECB, Rijndael::CBC or Rijndael::CFB1
 | 
				
			||||||
 | 
						//             You have to use the same mode for encrypting and decrypting
 | 
				
			||||||
 | 
						// dir       : Rijndael::Encrypt or Rijndael::Decrypt
 | 
				
			||||||
 | 
						//             A cipher instance works only in one direction
 | 
				
			||||||
 | 
						//             (Well , it could be easily modified to work in both
 | 
				
			||||||
 | 
						//             directions with a single init() call, but it looks
 | 
				
			||||||
 | 
						//             useless to me...anyway , it is a matter of generating
 | 
				
			||||||
 | 
						//             two expanded keys)
 | 
				
			||||||
 | 
						// key       : array of unsigned octets , it can be 16 , 24 or 32 bytes long
 | 
				
			||||||
 | 
						//             this CAN be binary data (it is not expected to be null terminated)
 | 
				
			||||||
 | 
						// keyLen    : Rijndael::Key16Bytes , Rijndael::Key24Bytes or Rijndael::Key32Bytes
 | 
				
			||||||
 | 
						// initVector: initialization vector, you will usually use 0 here
 | 
				
			||||||
 | 
						int init(Mode mode,Direction dir,const UINT8 *key,KeyLength keyLen,UINT8 * initVector = 0);
 | 
				
			||||||
 | 
						// Encrypts the input array (can be binary data)
 | 
				
			||||||
 | 
						// The input array length must be a multiple of 16 bytes, the remaining part
 | 
				
			||||||
 | 
						// is DISCARDED.
 | 
				
			||||||
 | 
						// so it actually encrypts inputLen / 128 blocks of input and puts it in outBuffer
 | 
				
			||||||
 | 
						// Input len is in BITS!
 | 
				
			||||||
 | 
						// outBuffer must be at least inputLen / 8 bytes long.
 | 
				
			||||||
 | 
						// Returns the encrypted buffer length in BITS or an error code < 0 in case of error
 | 
				
			||||||
 | 
						int blockEncrypt(const UINT8 *input, int inputLen, UINT8 *outBuffer);
 | 
				
			||||||
 | 
						// Encrypts the input array (can be binary data)
 | 
				
			||||||
 | 
						// The input array can be any length , it is automatically padded on a 16 byte boundary.
 | 
				
			||||||
 | 
						// Input len is in BYTES!
 | 
				
			||||||
 | 
						// outBuffer must be at least (inputLen + 16) bytes long
 | 
				
			||||||
 | 
						// Returns the encrypted buffer length in BYTES or an error code < 0 in case of error
 | 
				
			||||||
 | 
						int padEncrypt(const UINT8 *input, int inputOctets, UINT8 *outBuffer);
 | 
				
			||||||
 | 
						// Decrypts the input vector
 | 
				
			||||||
 | 
						// Input len is in BITS!
 | 
				
			||||||
 | 
						// outBuffer must be at least inputLen / 8 bytes long
 | 
				
			||||||
 | 
						// Returns the decrypted buffer length in BITS and an error code < 0 in case of error
 | 
				
			||||||
 | 
						int blockDecrypt(const UINT8 *input, int inputLen, UINT8 *outBuffer);
 | 
				
			||||||
 | 
						// Decrypts the input vector
 | 
				
			||||||
 | 
						// Input len is in BYTES!
 | 
				
			||||||
 | 
						// outBuffer must be at least inputLen bytes long
 | 
				
			||||||
 | 
						// Returns the decrypted buffer length in BYTES and an error code < 0 in case of error
 | 
				
			||||||
 | 
						int padDecrypt(const UINT8 *input, int inputOctets, UINT8 *outBuffer);
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
						void keySched(UINT8 key[_MAX_KEY_COLUMNS][4]);
 | 
				
			||||||
 | 
						void keyEncToDec();
 | 
				
			||||||
 | 
						void encrypt(const UINT8 a[16], UINT8 b[16]);
 | 
				
			||||||
 | 
						void decrypt(const UINT8 a[16], UINT8 b[16]);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					#endif // _RIJNDAEL_H_
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,261 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
						100% free public domain implementation of the SHA-1 algorithm
 | 
				
			||||||
 | 
						by Dominik Reichl <dominik.reichl@t-online.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Version 1.5 - 2005-01-01
 | 
				
			||||||
 | 
						- 64-bit compiler compatibility added
 | 
				
			||||||
 | 
						- Made variable wiping optional (define SHA1_WIPE_VARIABLES)
 | 
				
			||||||
 | 
						- Removed unnecessary variable initializations
 | 
				
			||||||
 | 
						- ROL32 improvement for the Microsoft compiler (using _rotl)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						======== Test Vectors (from FIPS PUB 180-1) ========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SHA1("abc") =
 | 
				
			||||||
 | 
							A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SHA1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") =
 | 
				
			||||||
 | 
							84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SHA1(A million repetitions of "a") =
 | 
				
			||||||
 | 
							34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sha1.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SHA1_MAX_FILE_BUFFER 8000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Rotate x bits to the left
 | 
				
			||||||
 | 
					#ifndef ROL32
 | 
				
			||||||
 | 
					#ifdef _MSC_VER
 | 
				
			||||||
 | 
					#define ROL32(_val32, _nBits) _rotl(_val32, _nBits)
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define ROL32(_val32, _nBits) (((_val32)<<(_nBits))|((_val32)>>(32-(_nBits))))
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef SHA1_LITTLE_ENDIAN
 | 
				
			||||||
 | 
					#define SHABLK0(i) (m_block->l[i] = \
 | 
				
			||||||
 | 
						(ROL32(m_block->l[i],24) & 0xFF00FF00) | (ROL32(m_block->l[i],8) & 0x00FF00FF))
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define SHABLK0(i) (m_block->l[i])
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SHABLK(i) (m_block->l[i&15] = ROL32(m_block->l[(i+13)&15] ^ m_block->l[(i+8)&15] \
 | 
				
			||||||
 | 
						^ m_block->l[(i+2)&15] ^ m_block->l[i&15],1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SHA-1 rounds
 | 
				
			||||||
 | 
					#define _R0(v,w,x,y,z,i) { z+=((w&(x^y))^y)+SHABLK0(i)+0x5A827999+ROL32(v,5); w=ROL32(w,30); }
 | 
				
			||||||
 | 
					#define _R1(v,w,x,y,z,i) { z+=((w&(x^y))^y)+SHABLK(i)+0x5A827999+ROL32(v,5); w=ROL32(w,30); }
 | 
				
			||||||
 | 
					#define _R2(v,w,x,y,z,i) { z+=(w^x^y)+SHABLK(i)+0x6ED9EBA1+ROL32(v,5); w=ROL32(w,30); }
 | 
				
			||||||
 | 
					#define _R3(v,w,x,y,z,i) { z+=(((w|x)&y)|(w&x))+SHABLK(i)+0x8F1BBCDC+ROL32(v,5); w=ROL32(w,30); }
 | 
				
			||||||
 | 
					#define _R4(v,w,x,y,z,i) { z+=(w^x^y)+SHABLK(i)+0xCA62C1D6+ROL32(v,5); w=ROL32(w,30); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSHA1::CSHA1()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						m_block = (SHA1_WORKSPACE_BLOCK *)m_workspace;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Reset();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSHA1::~CSHA1()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Reset();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSHA1::Reset()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// SHA1 initialization constants
 | 
				
			||||||
 | 
						m_state[0] = 0x67452301;
 | 
				
			||||||
 | 
						m_state[1] = 0xEFCDAB89;
 | 
				
			||||||
 | 
						m_state[2] = 0x98BADCFE;
 | 
				
			||||||
 | 
						m_state[3] = 0x10325476;
 | 
				
			||||||
 | 
						m_state[4] = 0xC3D2E1F0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						m_count[0] = 0;
 | 
				
			||||||
 | 
						m_count[1] = 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					void CSHA1::Update(unsigned char* data, int len){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						UINT_32 i, j;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						j = (m_count[0] >> 3) & 63;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if((m_count[0] += len << 3) < (len << 3)) m_count[1]++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						m_count[1] += (len >> 29);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if((j + len) > 63)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							i = 64 - j;
 | 
				
			||||||
 | 
							memcpy(&m_buffer[j], data, i);
 | 
				
			||||||
 | 
							Transform(m_state, m_buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for( ; i + 63 < len; i += 64) Transform(m_state, &data[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							j = 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else i = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memcpy(&m_buffer[j], &data[i], len - i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSHA1::Transform(UINT_32 *state, UINT_8 *buffer)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						// Copy state[] to working vars
 | 
				
			||||||
 | 
						UINT_32 a = state[0], b = state[1], c = state[2], d = state[3], e = state[4];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memcpy(m_block, buffer, 64);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// 4 rounds of 20 operations each. Loop unrolled.
 | 
				
			||||||
 | 
						_R0(a,b,c,d,e, 0); _R0(e,a,b,c,d, 1); _R0(d,e,a,b,c, 2); _R0(c,d,e,a,b, 3);
 | 
				
			||||||
 | 
						_R0(b,c,d,e,a, 4); _R0(a,b,c,d,e, 5); _R0(e,a,b,c,d, 6); _R0(d,e,a,b,c, 7);
 | 
				
			||||||
 | 
						_R0(c,d,e,a,b, 8); _R0(b,c,d,e,a, 9); _R0(a,b,c,d,e,10); _R0(e,a,b,c,d,11);
 | 
				
			||||||
 | 
						_R0(d,e,a,b,c,12); _R0(c,d,e,a,b,13); _R0(b,c,d,e,a,14); _R0(a,b,c,d,e,15);
 | 
				
			||||||
 | 
						_R1(e,a,b,c,d,16); _R1(d,e,a,b,c,17); _R1(c,d,e,a,b,18); _R1(b,c,d,e,a,19);
 | 
				
			||||||
 | 
						_R2(a,b,c,d,e,20); _R2(e,a,b,c,d,21); _R2(d,e,a,b,c,22); _R2(c,d,e,a,b,23);
 | 
				
			||||||
 | 
						_R2(b,c,d,e,a,24); _R2(a,b,c,d,e,25); _R2(e,a,b,c,d,26); _R2(d,e,a,b,c,27);
 | 
				
			||||||
 | 
						_R2(c,d,e,a,b,28); _R2(b,c,d,e,a,29); _R2(a,b,c,d,e,30); _R2(e,a,b,c,d,31);
 | 
				
			||||||
 | 
						_R2(d,e,a,b,c,32); _R2(c,d,e,a,b,33); _R2(b,c,d,e,a,34); _R2(a,b,c,d,e,35);
 | 
				
			||||||
 | 
						_R2(e,a,b,c,d,36); _R2(d,e,a,b,c,37); _R2(c,d,e,a,b,38); _R2(b,c,d,e,a,39);
 | 
				
			||||||
 | 
						_R3(a,b,c,d,e,40); _R3(e,a,b,c,d,41); _R3(d,e,a,b,c,42); _R3(c,d,e,a,b,43);
 | 
				
			||||||
 | 
						_R3(b,c,d,e,a,44); _R3(a,b,c,d,e,45); _R3(e,a,b,c,d,46); _R3(d,e,a,b,c,47);
 | 
				
			||||||
 | 
						_R3(c,d,e,a,b,48); _R3(b,c,d,e,a,49); _R3(a,b,c,d,e,50); _R3(e,a,b,c,d,51);
 | 
				
			||||||
 | 
						_R3(d,e,a,b,c,52); _R3(c,d,e,a,b,53); _R3(b,c,d,e,a,54); _R3(a,b,c,d,e,55);
 | 
				
			||||||
 | 
						_R3(e,a,b,c,d,56); _R3(d,e,a,b,c,57); _R3(c,d,e,a,b,58); _R3(b,c,d,e,a,59);
 | 
				
			||||||
 | 
						_R4(a,b,c,d,e,60); _R4(e,a,b,c,d,61); _R4(d,e,a,b,c,62); _R4(c,d,e,a,b,63);
 | 
				
			||||||
 | 
						_R4(b,c,d,e,a,64); _R4(a,b,c,d,e,65); _R4(e,a,b,c,d,66); _R4(d,e,a,b,c,67);
 | 
				
			||||||
 | 
						_R4(c,d,e,a,b,68); _R4(b,c,d,e,a,69); _R4(a,b,c,d,e,70); _R4(e,a,b,c,d,71);
 | 
				
			||||||
 | 
						_R4(d,e,a,b,c,72); _R4(c,d,e,a,b,73); _R4(b,c,d,e,a,74); _R4(a,b,c,d,e,75);
 | 
				
			||||||
 | 
						_R4(e,a,b,c,d,76); _R4(d,e,a,b,c,77); _R4(c,d,e,a,b,78); _R4(b,c,d,e,a,79);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Add the working vars back into state
 | 
				
			||||||
 | 
						state[0] += a;
 | 
				
			||||||
 | 
						state[1] += b;
 | 
				
			||||||
 | 
						state[2] += c;
 | 
				
			||||||
 | 
						state[3] += d;
 | 
				
			||||||
 | 
						state[4] += e;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Wipe variables
 | 
				
			||||||
 | 
					#ifdef SHA1_WIPE_VARIABLES
 | 
				
			||||||
 | 
						a = b = c = d = e = 0;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Hash in file contents
 | 
				
			||||||
 | 
					bool CSHA1::HashFile(char *szFileName)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						unsigned long ulFileSize, ulRest, ulBlocks;
 | 
				
			||||||
 | 
						unsigned long i;
 | 
				
			||||||
 | 
						UINT_8 uData[SHA1_MAX_FILE_BUFFER];
 | 
				
			||||||
 | 
						FILE *fIn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(szFileName == NULL) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fIn = fopen(szFileName, "rb");
 | 
				
			||||||
 | 
						if(fIn == NULL) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fseek(fIn, 0, SEEK_END);
 | 
				
			||||||
 | 
						ulFileSize = (unsigned long)ftell(fIn);
 | 
				
			||||||
 | 
						fseek(fIn, 0, SEEK_SET);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(ulFileSize != 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ulBlocks = ulFileSize / SHA1_MAX_FILE_BUFFER;
 | 
				
			||||||
 | 
							ulRest = ulFileSize % SHA1_MAX_FILE_BUFFER;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							ulBlocks = 0;
 | 
				
			||||||
 | 
							ulRest = 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(i = 0; i < ulBlocks; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							fread(uData, 1, SHA1_MAX_FILE_BUFFER, fIn);
 | 
				
			||||||
 | 
							Update((UINT_8 *)uData, SHA1_MAX_FILE_BUFFER);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(ulRest != 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							fread(uData, 1, ulRest, fIn);
 | 
				
			||||||
 | 
							Update((UINT_8 *)uData, ulRest);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						fclose(fIn); fIn = NULL;
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSHA1::Final()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						UINT_32 i;
 | 
				
			||||||
 | 
						UINT_8 finalcount[8];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(i = 0; i < 8; i++)
 | 
				
			||||||
 | 
							finalcount[i] = (UINT_8)((m_count[((i >= 4) ? 0 : 1)]
 | 
				
			||||||
 | 
								>> ((3 - (i & 3)) * 8) ) & 255); // Endian independent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Update((UINT_8 *)"\200", 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						while ((m_count[0] & 504) != 448)
 | 
				
			||||||
 | 
							Update((UINT_8 *)"\0", 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Update(finalcount, 8); // Cause a SHA1Transform()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(i = 0; i < 20; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							m_digest[i] = (UINT_8)((m_state[i >> 2] >> ((3 - (i & 3)) * 8) ) & 255);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Wipe variables for security reasons
 | 
				
			||||||
 | 
					#ifdef SHA1_WIPE_VARIABLES
 | 
				
			||||||
 | 
						i = 0;
 | 
				
			||||||
 | 
						memset(m_buffer, 0, 64);
 | 
				
			||||||
 | 
						memset(m_state, 0, 20);
 | 
				
			||||||
 | 
						memset(m_count, 0, 8);
 | 
				
			||||||
 | 
						memset(finalcount, 0, 8);
 | 
				
			||||||
 | 
						Transform(m_state, m_buffer);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Get the final hash as a pre-formatted string
 | 
				
			||||||
 | 
					void CSHA1::ReportHash(char *szReport, unsigned char uReportType)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						unsigned char i;
 | 
				
			||||||
 | 
						char szTemp[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(szReport == NULL) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(uReportType == REPORT_HEX)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							sprintf(szTemp, "%02X", m_digest[0]);
 | 
				
			||||||
 | 
							strcat(szReport, szTemp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for(i = 1; i < 20; i++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								sprintf(szTemp, " %02X", m_digest[i]);
 | 
				
			||||||
 | 
								strcat(szReport, szTemp);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else if(uReportType == REPORT_DIGIT)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							sprintf(szTemp, "%u", m_digest[0]);
 | 
				
			||||||
 | 
							strcat(szReport, szTemp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							for(i = 1; i < 20; i++)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								sprintf(szTemp, " %u", m_digest[i]);
 | 
				
			||||||
 | 
								strcat(szReport, szTemp);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else strcpy(szReport, "Error: Unknown report type!");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Get the raw message digest
 | 
				
			||||||
 | 
					void CSHA1::GetHash(UINT_8 *puDest)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						memcpy(puDest, m_digest, 20);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,99 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
						100% free public domain implementation of the SHA-1 algorithm
 | 
				
			||||||
 | 
						by Dominik Reichl <dominik.reichl@t-online.de>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Version 1.5 - 2005-01-01
 | 
				
			||||||
 | 
						- 64-bit compiler compatibility added
 | 
				
			||||||
 | 
						- Made variable wiping optional (define SHA1_WIPE_VARIABLES)
 | 
				
			||||||
 | 
						- Removed unnecessary variable initializations
 | 
				
			||||||
 | 
						- ROL32 improvement for the Microsoft compiler (using _rotl)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						======== Test Vectors (from FIPS PUB 180-1) ========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SHA1("abc") =
 | 
				
			||||||
 | 
							A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SHA1("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") =
 | 
				
			||||||
 | 
							84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						SHA1(A million repetitions of "a") =
 | 
				
			||||||
 | 
							34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ___SHA1_HDR___
 | 
				
			||||||
 | 
					#define ___SHA1_HDR___
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdio.h>  // Needed for file access
 | 
				
			||||||
 | 
					#include <memory.h> // Needed for memset and memcpy
 | 
				
			||||||
 | 
					#include <string.h> // Needed for strcat and strcpy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// If you're compiling big endian, just comment out the following line
 | 
				
			||||||
 | 
					#define SHA1_LITTLE_ENDIAN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// #define or #undef this, if you want the CSHA1 class to wipe all
 | 
				
			||||||
 | 
					// temporary variables after processing
 | 
				
			||||||
 | 
					#define SHA1_WIPE_VARIABLES
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Define 8- and 32-bit variables
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef UINT_32
 | 
				
			||||||
 | 
					 #define UINT_8 unsigned char
 | 
				
			||||||
 | 
					 #if (ULONG_MAX == 0xFFFFFFFF)
 | 
				
			||||||
 | 
					  #define UINT_32 unsigned long
 | 
				
			||||||
 | 
					 #else
 | 
				
			||||||
 | 
					  #define UINT_32 unsigned int
 | 
				
			||||||
 | 
					 #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					// Declare SHA1 workspace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef union
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						UINT_8  c[64];
 | 
				
			||||||
 | 
						UINT_32 l[16];
 | 
				
			||||||
 | 
					} SHA1_WORKSPACE_BLOCK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CSHA1
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						// Two different formats for ReportHash(...)
 | 
				
			||||||
 | 
						enum
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							REPORT_HEX = 0,
 | 
				
			||||||
 | 
							REPORT_DIGIT = 1
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Constructor and Destructor
 | 
				
			||||||
 | 
						CSHA1();
 | 
				
			||||||
 | 
						~CSHA1();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						UINT_32 m_state[5];
 | 
				
			||||||
 | 
						UINT_32 m_count[2];
 | 
				
			||||||
 | 
						UINT_8  m_buffer[64];
 | 
				
			||||||
 | 
						UINT_8  m_digest[20];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void Reset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Update the hash value
 | 
				
			||||||
 | 
						void Update(unsigned char* data, int len);
 | 
				
			||||||
 | 
						bool HashFile(char *szFileName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Finalize hash and report
 | 
				
			||||||
 | 
						void Final();
 | 
				
			||||||
 | 
						void ReportHash(char *szReport, unsigned char uReportType = REPORT_HEX);
 | 
				
			||||||
 | 
						void GetHash(UINT_8 *puDest);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
						// Private SHA-1 transformation
 | 
				
			||||||
 | 
						void Transform(UINT_32 *state, UINT_8 *buffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Member variables
 | 
				
			||||||
 | 
						UINT_8 m_workspace[64];
 | 
				
			||||||
 | 
						SHA1_WORKSPACE_BLOCK *m_block; // SHA1 pointer to the byte array above
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,369 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *  FIPS-180-2 compliant SHA-256 implementation
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  Copyright (C) 2001-2003  Christophe Devine
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  This program is free software; you can redistribute it and/or modify
 | 
				
			||||||
 | 
					 *  it under the terms of the GNU General Public License as published by
 | 
				
			||||||
 | 
					 *  the Free Software Foundation; either version 2 of the License, or
 | 
				
			||||||
 | 
					 *  (at your option) any later version.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  This program is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
				
			||||||
 | 
					 *  GNU General Public License for more details.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *  You should have received a copy of the GNU General Public License
 | 
				
			||||||
 | 
					 *  along with this program; if not, write to the Free Software
 | 
				
			||||||
 | 
					 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "sha256.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GET_UINT32(n,b,i)                       \
 | 
				
			||||||
 | 
					{                                               \
 | 
				
			||||||
 | 
					    (n) = ( (uint32) (b)[(i)    ] << 24 )       \
 | 
				
			||||||
 | 
					        | ( (uint32) (b)[(i) + 1] << 16 )       \
 | 
				
			||||||
 | 
					        | ( (uint32) (b)[(i) + 2] <<  8 )       \
 | 
				
			||||||
 | 
					        | ( (uint32) (b)[(i) + 3]       );      \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PUT_UINT32(n,b,i)                       \
 | 
				
			||||||
 | 
					{                                               \
 | 
				
			||||||
 | 
					    (b)[(i)    ] = (uint8) ( (n) >> 24 );       \
 | 
				
			||||||
 | 
					    (b)[(i) + 1] = (uint8) ( (n) >> 16 );       \
 | 
				
			||||||
 | 
					    (b)[(i) + 2] = (uint8) ( (n) >>  8 );       \
 | 
				
			||||||
 | 
					    (b)[(i) + 3] = (uint8) ( (n)       );       \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void sha256_starts( sha256_context *ctx )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ctx->total[0] = 0;
 | 
				
			||||||
 | 
					    ctx->total[1] = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ctx->state[0] = 0x6A09E667;
 | 
				
			||||||
 | 
					    ctx->state[1] = 0xBB67AE85;
 | 
				
			||||||
 | 
					    ctx->state[2] = 0x3C6EF372;
 | 
				
			||||||
 | 
					    ctx->state[3] = 0xA54FF53A;
 | 
				
			||||||
 | 
					    ctx->state[4] = 0x510E527F;
 | 
				
			||||||
 | 
					    ctx->state[5] = 0x9B05688C;
 | 
				
			||||||
 | 
					    ctx->state[6] = 0x1F83D9AB;
 | 
				
			||||||
 | 
					    ctx->state[7] = 0x5BE0CD19;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void sha256_process( sha256_context *ctx, uint8 data[64] )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uint32 temp1, temp2, W[64];
 | 
				
			||||||
 | 
					    uint32 A, B, C, D, E, F, G, H;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GET_UINT32( W[0],  data,  0 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[1],  data,  4 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[2],  data,  8 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[3],  data, 12 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[4],  data, 16 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[5],  data, 20 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[6],  data, 24 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[7],  data, 28 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[8],  data, 32 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[9],  data, 36 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[10], data, 40 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[11], data, 44 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[12], data, 48 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[13], data, 52 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[14], data, 56 );
 | 
				
			||||||
 | 
					    GET_UINT32( W[15], data, 60 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define  SHR(x,n) ((x & 0xFFFFFFFF) >> n)
 | 
				
			||||||
 | 
					#define ROTR(x,n) (SHR(x,n) | (x << (32 - n)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define S0(x) (ROTR(x, 7) ^ ROTR(x,18) ^  SHR(x, 3))
 | 
				
			||||||
 | 
					#define S1(x) (ROTR(x,17) ^ ROTR(x,19) ^  SHR(x,10))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define S2(x) (ROTR(x, 2) ^ ROTR(x,13) ^ ROTR(x,22))
 | 
				
			||||||
 | 
					#define S3(x) (ROTR(x, 6) ^ ROTR(x,11) ^ ROTR(x,25))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define F0(x,y,z) ((x & y) | (z & (x | y)))
 | 
				
			||||||
 | 
					#define F1(x,y,z) (z ^ (x & (y ^ z)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define R(t)                                    \
 | 
				
			||||||
 | 
					(                                               \
 | 
				
			||||||
 | 
					    W[t] = S1(W[t -  2]) + W[t -  7] +          \
 | 
				
			||||||
 | 
					           S0(W[t - 15]) + W[t - 16]            \
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define P(a,b,c,d,e,f,g,h,x,K)                  \
 | 
				
			||||||
 | 
					{                                               \
 | 
				
			||||||
 | 
					    temp1 = h + S3(e) + F1(e,f,g) + K + x;      \
 | 
				
			||||||
 | 
					    temp2 = S2(a) + F0(a,b,c);                  \
 | 
				
			||||||
 | 
					    d += temp1; h = temp1 + temp2;              \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    A = ctx->state[0];
 | 
				
			||||||
 | 
					    B = ctx->state[1];
 | 
				
			||||||
 | 
					    C = ctx->state[2];
 | 
				
			||||||
 | 
					    D = ctx->state[3];
 | 
				
			||||||
 | 
					    E = ctx->state[4];
 | 
				
			||||||
 | 
					    F = ctx->state[5];
 | 
				
			||||||
 | 
					    G = ctx->state[6];
 | 
				
			||||||
 | 
					    H = ctx->state[7];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, W[ 0], 0x428A2F98 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, W[ 1], 0x71374491 );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, W[ 2], 0xB5C0FBCF );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, W[ 3], 0xE9B5DBA5 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, W[ 4], 0x3956C25B );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, W[ 5], 0x59F111F1 );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, W[ 6], 0x923F82A4 );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, W[ 7], 0xAB1C5ED5 );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, W[ 8], 0xD807AA98 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, W[ 9], 0x12835B01 );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, W[10], 0x243185BE );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, W[11], 0x550C7DC3 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, W[12], 0x72BE5D74 );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, W[13], 0x80DEB1FE );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, W[14], 0x9BDC06A7 );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, W[15], 0xC19BF174 );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, R(16), 0xE49B69C1 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, R(17), 0xEFBE4786 );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, R(18), 0x0FC19DC6 );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, R(19), 0x240CA1CC );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, R(20), 0x2DE92C6F );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, R(21), 0x4A7484AA );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, R(22), 0x5CB0A9DC );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, R(23), 0x76F988DA );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, R(24), 0x983E5152 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, R(25), 0xA831C66D );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, R(26), 0xB00327C8 );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, R(27), 0xBF597FC7 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, R(28), 0xC6E00BF3 );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, R(29), 0xD5A79147 );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, R(30), 0x06CA6351 );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, R(31), 0x14292967 );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, R(32), 0x27B70A85 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, R(33), 0x2E1B2138 );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, R(34), 0x4D2C6DFC );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, R(35), 0x53380D13 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, R(36), 0x650A7354 );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, R(37), 0x766A0ABB );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, R(38), 0x81C2C92E );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, R(39), 0x92722C85 );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, R(40), 0xA2BFE8A1 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, R(41), 0xA81A664B );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, R(42), 0xC24B8B70 );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, R(43), 0xC76C51A3 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, R(44), 0xD192E819 );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, R(45), 0xD6990624 );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, R(46), 0xF40E3585 );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, R(47), 0x106AA070 );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, R(48), 0x19A4C116 );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, R(49), 0x1E376C08 );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, R(50), 0x2748774C );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, R(51), 0x34B0BCB5 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, R(52), 0x391C0CB3 );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, R(53), 0x4ED8AA4A );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, R(54), 0x5B9CCA4F );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, R(55), 0x682E6FF3 );
 | 
				
			||||||
 | 
					    P( A, B, C, D, E, F, G, H, R(56), 0x748F82EE );
 | 
				
			||||||
 | 
					    P( H, A, B, C, D, E, F, G, R(57), 0x78A5636F );
 | 
				
			||||||
 | 
					    P( G, H, A, B, C, D, E, F, R(58), 0x84C87814 );
 | 
				
			||||||
 | 
					    P( F, G, H, A, B, C, D, E, R(59), 0x8CC70208 );
 | 
				
			||||||
 | 
					    P( E, F, G, H, A, B, C, D, R(60), 0x90BEFFFA );
 | 
				
			||||||
 | 
					    P( D, E, F, G, H, A, B, C, R(61), 0xA4506CEB );
 | 
				
			||||||
 | 
					    P( C, D, E, F, G, H, A, B, R(62), 0xBEF9A3F7 );
 | 
				
			||||||
 | 
					    P( B, C, D, E, F, G, H, A, R(63), 0xC67178F2 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ctx->state[0] += A;
 | 
				
			||||||
 | 
					    ctx->state[1] += B;
 | 
				
			||||||
 | 
					    ctx->state[2] += C;
 | 
				
			||||||
 | 
					    ctx->state[3] += D;
 | 
				
			||||||
 | 
					    ctx->state[4] += E;
 | 
				
			||||||
 | 
					    ctx->state[5] += F;
 | 
				
			||||||
 | 
					    ctx->state[6] += G;
 | 
				
			||||||
 | 
					    ctx->state[7] += H;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void sha256_update( sha256_context *ctx, uint8 *input, uint32 length )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uint32 left, fill;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( ! length ) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    left = ctx->total[0] & 0x3F;
 | 
				
			||||||
 | 
					    fill = 64 - left;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ctx->total[0] += length;
 | 
				
			||||||
 | 
					    ctx->total[0] &= 0xFFFFFFFF;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( ctx->total[0] < length )
 | 
				
			||||||
 | 
					        ctx->total[1]++;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( left && length >= fill )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        memcpy( (void *) (ctx->buffer + left),
 | 
				
			||||||
 | 
					                (void *) input, fill );
 | 
				
			||||||
 | 
					        sha256_process( ctx, ctx->buffer );
 | 
				
			||||||
 | 
					        length -= fill;
 | 
				
			||||||
 | 
					        input  += fill;
 | 
				
			||||||
 | 
					        left = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while( length >= 64 )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        sha256_process( ctx, input );
 | 
				
			||||||
 | 
					        length -= 64;
 | 
				
			||||||
 | 
					        input  += 64;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( length )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        memcpy( (void *) (ctx->buffer + left),
 | 
				
			||||||
 | 
					                (void *) input, length );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static uint8 sha256_padding[64] =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
				
			||||||
 | 
					    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
				
			||||||
 | 
					    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
				
			||||||
 | 
					    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void sha256_finish( sha256_context *ctx, uint8 digest[32] )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uint32 last, padn;
 | 
				
			||||||
 | 
					    uint32 high, low;
 | 
				
			||||||
 | 
					    uint8 msglen[8];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    high = ( ctx->total[0] >> 29 )
 | 
				
			||||||
 | 
					         | ( ctx->total[1] <<  3 );
 | 
				
			||||||
 | 
					    low  = ( ctx->total[0] <<  3 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PUT_UINT32( high, msglen, 0 );
 | 
				
			||||||
 | 
					    PUT_UINT32( low,  msglen, 4 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    last = ctx->total[0] & 0x3F;
 | 
				
			||||||
 | 
					    padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sha256_update( ctx, sha256_padding, padn );
 | 
				
			||||||
 | 
					    sha256_update( ctx, msglen, 8 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[0], digest,  0 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[1], digest,  4 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[2], digest,  8 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[3], digest, 12 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[4], digest, 16 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[5], digest, 20 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[6], digest, 24 );
 | 
				
			||||||
 | 
					    PUT_UINT32( ctx->state[7], digest, 28 );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef TEST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * those are the standard FIPS-180-2 test vectors
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *msg[] = 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "abc",
 | 
				
			||||||
 | 
					    "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
 | 
				
			||||||
 | 
					    NULL
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static char *val[] =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "ba7816bf8f01cfea414140de5dae2223" \
 | 
				
			||||||
 | 
					    "b00361a396177a9cb410ff61f20015ad",
 | 
				
			||||||
 | 
					    "248d6a61d20638b8e5c026930c3e6039" \
 | 
				
			||||||
 | 
					    "a33ce45964ff2167f6ecedd419db06c1",
 | 
				
			||||||
 | 
					    "cdc76e5c9914fb9281a1c7e284d73e67" \
 | 
				
			||||||
 | 
					    "f1809a48a497200e046d39ccc7112cd0"
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main( int argc, char *argv[] )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    FILE *f;
 | 
				
			||||||
 | 
					    int i, j;
 | 
				
			||||||
 | 
					    char output[65];
 | 
				
			||||||
 | 
					    sha256_context ctx;
 | 
				
			||||||
 | 
					    unsigned char buf[1000];
 | 
				
			||||||
 | 
					    unsigned char sha256sum[32];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if( argc < 2 )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        printf( "\n SHA-256 Validation Tests:\n\n" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for( i = 0; i < 3; i++ )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            printf( " Test %d ", i + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sha256_starts( &ctx );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if( i < 2 )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sha256_update( &ctx, (uint8 *) msg[i],
 | 
				
			||||||
 | 
					                               strlen( msg[i] ) );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                memset( buf, 'a', 1000 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                for( j = 0; j < 1000; j++ )
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    sha256_update( &ctx, (uint8 *) buf, 1000 );
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            sha256_finish( &ctx, sha256sum );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for( j = 0; j < 32; j++ )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                sprintf( output + j * 2, "%02x", sha256sum[j] );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if( memcmp( output, val[i], 64 ) )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                printf( "failed!\n" );
 | 
				
			||||||
 | 
					                return( 1 );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            printf( "passed.\n" );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        printf( "\n" );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if( ! ( f = fopen( argv[1], "rb" ) ) )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            perror( "fopen" );
 | 
				
			||||||
 | 
					            return( 1 );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sha256_starts( &ctx );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        while( ( i = fread( buf, 1, sizeof( buf ), f ) ) > 0 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            sha256_update( &ctx, buf, i );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sha256_finish( &ctx, sha256sum );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for( j = 0; j < 32; j++ )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            printf( "%02x", sha256sum[j] );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        printf( "  %s\n", argv[1] );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return( 0 );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					#ifndef _SHA256_H
 | 
				
			||||||
 | 
					#define _SHA256_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef uint8
 | 
				
			||||||
 | 
					#define uint8  unsigned char
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef uint32
 | 
				
			||||||
 | 
					#define uint32 unsigned long int
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    uint32 total[2];
 | 
				
			||||||
 | 
					    uint32 state[8];
 | 
				
			||||||
 | 
					    uint8 buffer[64];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					sha256_context;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {  //Für C++ Kompalibilität
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern void sha256_starts( sha256_context *ctx );
 | 
				
			||||||
 | 
					extern void sha256_update( sha256_context *ctx, uint8 *input, uint32 length );
 | 
				
			||||||
 | 
					extern void sha256_finish( sha256_context *ctx, uint8 digest[32] );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif /* sha256.h */
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,148 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Copyright (c) 2003/2004, Dominik Reichl <dominik.reichl@t-online.de>
 | 
				
			||||||
 | 
					  All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					  modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					    this list of conditions and the following disclaimer. 
 | 
				
			||||||
 | 
					  - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					    this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					    and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					  - Neither the name of ReichlSoft nor the names of its contributors may be
 | 
				
			||||||
 | 
					    used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					    specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
				
			||||||
 | 
					  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
				
			||||||
 | 
					  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					  POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					#include "twoclass.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool g_bInitialized = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CTwofish::CTwofish()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CTwofish::~CTwofish()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CTwofish::init(UINT8 *pKey, unsigned long uKeyLen, UINT8 *initVector)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						//ASSERT(pKey != NULL);
 | 
				
			||||||
 | 
						if(pKey == NULL) return false;
 | 
				
			||||||
 | 
						//ASSERT(uKeyLen != 0);
 | 
				
			||||||
 | 
						if(uKeyLen == 0) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(g_bInitialized == false)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Twofish_initialise();
 | 
				
			||||||
 | 
							g_bInitialized = true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Twofish_prepare_key((Twofish_Byte *)pKey, uKeyLen, &m_key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(initVector != NULL) memcpy(m_pInitVector, initVector, 16);
 | 
				
			||||||
 | 
						else memset(m_pInitVector, 0, 16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int CTwofish::padEncrypt(UINT8 *pInput, int nInputOctets, UINT8 *pOutBuffer)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int i, numBlocks, padLen;
 | 
				
			||||||
 | 
						UINT8 block[16], *iv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//ASSERT((pInput != NULL) && (nInputOctets != NULL) && (pOutBuffer != NULL));
 | 
				
			||||||
 | 
						if((pInput == NULL) || (nInputOctets <= 0) || (pOutBuffer == NULL)) return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						numBlocks = nInputOctets / 16;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						iv = m_pInitVector;
 | 
				
			||||||
 | 
						for(i = numBlocks; i > 0; i--)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							((UINT32*)block)[0] = ((UINT32*)pInput)[0] ^ ((UINT32*)iv)[0];
 | 
				
			||||||
 | 
							((UINT32*)block)[1] = ((UINT32*)pInput)[1] ^ ((UINT32*)iv)[1];
 | 
				
			||||||
 | 
							((UINT32*)block)[2] = ((UINT32*)pInput)[2] ^ ((UINT32*)iv)[2];
 | 
				
			||||||
 | 
							((UINT32*)block)[3] = ((UINT32*)pInput)[3] ^ ((UINT32*)iv)[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Twofish_encrypt(&m_key, (Twofish_Byte *)block, (Twofish_Byte *)pOutBuffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							iv = pOutBuffer;
 | 
				
			||||||
 | 
							pInput += 16;
 | 
				
			||||||
 | 
							pOutBuffer += 16;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						padLen = 16 - (nInputOctets - (16 * numBlocks));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < 16 - padLen; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							block[i] = (UINT8)(pInput[i] ^ iv[i]);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 16 - padLen; i < 16; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							block[i] = (UINT8)((UINT8)padLen ^ iv[i]);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Twofish_encrypt(&m_key, (Twofish_Byte *)block, (Twofish_Byte *)pOutBuffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 16 * (numBlocks + 1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int CTwofish::padDecrypt(UINT8 *pInput, int nInputOctets, UINT8 *pOutBuffer)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int i, numBlocks, padLen;
 | 
				
			||||||
 | 
						UINT8 block[16];
 | 
				
			||||||
 | 
						UINT32 iv[4];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//ASSERT((pInput != NULL) && (nInputOctets != NULL) && (pOutBuffer != NULL));
 | 
				
			||||||
 | 
						if((pInput == NULL) || (nInputOctets <= 0) || (pOutBuffer == NULL)) return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if((nInputOctets % 16) != 0) { /*ASSERT(FALSE);*/ return -1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						numBlocks = nInputOctets / 16;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						memcpy(iv, m_pInitVector, 16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for(i = numBlocks - 1; i > 0; i--)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							Twofish_decrypt(&m_key, (Twofish_Byte *)pInput, (Twofish_Byte *)block);
 | 
				
			||||||
 | 
							((UINT32*)block)[0] ^= iv[0];
 | 
				
			||||||
 | 
							((UINT32*)block)[1] ^= iv[1];
 | 
				
			||||||
 | 
							((UINT32*)block)[2] ^= iv[2];
 | 
				
			||||||
 | 
							((UINT32*)block)[3] ^= iv[3];
 | 
				
			||||||
 | 
							memcpy(iv, pInput, 16);
 | 
				
			||||||
 | 
							memcpy(pOutBuffer, block, 16);
 | 
				
			||||||
 | 
							pInput += 16;
 | 
				
			||||||
 | 
							pOutBuffer += 16;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Twofish_decrypt(&m_key, (Twofish_Byte *)pInput, (Twofish_Byte *)block);
 | 
				
			||||||
 | 
						((UINT32*)block)[0] ^= iv[0];
 | 
				
			||||||
 | 
						((UINT32*)block)[1] ^= iv[1];
 | 
				
			||||||
 | 
						((UINT32*)block)[2] ^= iv[2];
 | 
				
			||||||
 | 
						((UINT32*)block)[3] ^= iv[3];
 | 
				
			||||||
 | 
						padLen = block[15];
 | 
				
			||||||
 | 
						if(padLen <= 0 || padLen > 16) return -1;
 | 
				
			||||||
 | 
						for(i = 16 - padLen; i < 16; i++)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							if(block[i] != padLen) return -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						memcpy(pOutBuffer, block, 16 - padLen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return 16*numBlocks - padLen;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,52 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					  Copyright (c) 2003/2004, Dominik Reichl <dominik.reichl@t-online.de>
 | 
				
			||||||
 | 
					  All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					  modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - Redistributions of source code must retain the above copyright notice,
 | 
				
			||||||
 | 
					    this list of conditions and the following disclaimer. 
 | 
				
			||||||
 | 
					  - Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					    this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					    and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					  - Neither the name of ReichlSoft nor the names of its contributors may be
 | 
				
			||||||
 | 
					    used to endorse or promote products derived from this software without
 | 
				
			||||||
 | 
					    specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
				
			||||||
 | 
					  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 | 
				
			||||||
 | 
					  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
				
			||||||
 | 
					  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
				
			||||||
 | 
					  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
				
			||||||
 | 
					  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
				
			||||||
 | 
					  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
				
			||||||
 | 
					  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
				
			||||||
 | 
					  POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef ___TWOFISH_CLASS_H___
 | 
				
			||||||
 | 
					#define ___TWOFISH_CLASS_H___
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "twofish.h"
 | 
				
			||||||
 | 
					#include "crypto/rijndael.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CTwofish
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						CTwofish();
 | 
				
			||||||
 | 
						virtual ~CTwofish();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool init(UINT8 *pKey, unsigned long uKeyLen, UINT8 *initVector = NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int padEncrypt(UINT8 *pInput, int nInputOctets, UINT8 *pOutBuffer);
 | 
				
			||||||
 | 
						int padDecrypt(UINT8 *pInput, int nInputOctets, UINT8 *pOutBuffer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
						Twofish_key m_key;
 | 
				
			||||||
 | 
						UINT8 m_pInitVector[16];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,179 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Fast, portable, and easy-to-use Twofish implementation, 
 | 
				
			||||||
 | 
					 * Version 0.3.
 | 
				
			||||||
 | 
					 * Copyright (c) 2002 by Niels Ferguson.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * See the twofish.c file for the details of the how and why of this code.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The author hereby grants a perpetual license to everybody to
 | 
				
			||||||
 | 
					 * use this code for any purpose as long as the copyright message is included
 | 
				
			||||||
 | 
					 * in the source code of this or any derived work.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * PLATFORM FIXES
 | 
				
			||||||
 | 
					 * ==============
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The following definitions have to be fixed for each particular platform 
 | 
				
			||||||
 | 
					 * you work on. If you have a multi-platform program, you no doubt have 
 | 
				
			||||||
 | 
					 * portable definitions that you can substitute here without changing 
 | 
				
			||||||
 | 
					 * the rest of the code.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The defaults provided here should work on most PC compilers.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 
 | 
				
			||||||
 | 
					 * A Twofish_Byte must be an unsigned 8-bit integer.
 | 
				
			||||||
 | 
					 * It must also be the elementary data size of your C platform,
 | 
				
			||||||
 | 
					 * i.e. sizeof( Twofish_Byte ) == 1.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef unsigned char   Twofish_Byte;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 
 | 
				
			||||||
 | 
					 * A Twofish_UInt32 must be an unsigned integer of at least 32 bits. 
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * This type is used only internally in the implementation, so ideally it
 | 
				
			||||||
 | 
					 * would not appear in the header file, but it is used inside the
 | 
				
			||||||
 | 
					 * Twofish_key structure which means it has to be included here.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef unsigned int    Twofish_UInt32;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * END OF PLATFORM FIXES
 | 
				
			||||||
 | 
					 * =====================
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * You should not have to touch the rest of this file, but the code
 | 
				
			||||||
 | 
					 * in twofish.c has a few things you need to fix too.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Structure that contains a prepared Twofish key.
 | 
				
			||||||
 | 
					 * A cipher key is used in two stages. In the first stage it is converted
 | 
				
			||||||
 | 
					 * form the original form to an internal representation. 
 | 
				
			||||||
 | 
					 * This internal form is then used to encrypt and decrypt data. 
 | 
				
			||||||
 | 
					 * This structure contains the internal form. It is rather large: 4256 bytes
 | 
				
			||||||
 | 
					 * on a platform with 32-bit unsigned values.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Treat this as an opague structure, and don't try to manipulate the
 | 
				
			||||||
 | 
					 * elements in it. I wish I could hide the inside of the structure,
 | 
				
			||||||
 | 
					 * but C doesn't allow that.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					typedef 
 | 
				
			||||||
 | 
					    struct 
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					        Twofish_UInt32 s[4][256];   /* pre-computed S-boxes */
 | 
				
			||||||
 | 
					        Twofish_UInt32 K[40];       /* Round key words */
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    Twofish_key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Initialise and test the Twofish implementation. 
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * This function MUST be called before any other function in the 
 | 
				
			||||||
 | 
					 * Twofish implementation is called.
 | 
				
			||||||
 | 
					 * It only needs to be called once.
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * Apart from initialising the implementation it performs a self test.
 | 
				
			||||||
 | 
					 * If the Twofish_fatal function is not called, the code passed the test.
 | 
				
			||||||
 | 
					 * (See the twofish.c file for details on the Twofish_fatal function.)
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern void Twofish_initialise();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Convert a cipher key to the internal form used for 
 | 
				
			||||||
 | 
					 * encryption and decryption.
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * The cipher key is an array of bytes; the Twofish_Byte type is 
 | 
				
			||||||
 | 
					 * defined above to a type suitable on your platform. 
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Any key must be converted to an internal form in the Twofisk_key structure
 | 
				
			||||||
 | 
					 * before it can be used.
 | 
				
			||||||
 | 
					 * The encryption and decryption functions only work with the internal form.
 | 
				
			||||||
 | 
					 * The conversion to internal form need only be done once for each key value.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Be sure to wipe all key storage, including the Twofish_key structure, 
 | 
				
			||||||
 | 
					 * once you are done with the key data. 
 | 
				
			||||||
 | 
					 * A simple memset( TwofishKey, 0, sizeof( TwofishKey ) ) will do just fine.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unlike most implementations, this one allows any key size from 0 bytes 
 | 
				
			||||||
 | 
					 * to 32 bytes. According to the Twofish specifications, 
 | 
				
			||||||
 | 
					 * irregular key sizes are handled by padding the key with zeroes at the end 
 | 
				
			||||||
 | 
					 * until the key size is 16, 24, or 32 bytes, whichever
 | 
				
			||||||
 | 
					 * comes first. Note that each key of irregular size is equivalent to exactly
 | 
				
			||||||
 | 
					 * one key of 16, 24, or 32 bytes.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * WARNING: Short keys have low entropy, and result in low security.
 | 
				
			||||||
 | 
					 * Anything less than 8 bytes is utterly insecure. For good security
 | 
				
			||||||
 | 
					 * use at least 16 bytes. I prefer to use 32-byte keys to prevent
 | 
				
			||||||
 | 
					 * any collision attacks on the key.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The key length argument key_len must be in the proper range.
 | 
				
			||||||
 | 
					 * If key_len is not in the range 0,...,32 this routine attempts to generate 
 | 
				
			||||||
 | 
					 * a fatal error (depending on the code environment), 
 | 
				
			||||||
 | 
					 * and at best (or worst) returns without having done anything.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Arguments:
 | 
				
			||||||
 | 
					 * key      Array of key bytes
 | 
				
			||||||
 | 
					 * key_len  Number of key bytes, must be in the range 0,1,...,32. 
 | 
				
			||||||
 | 
					 * xkey     Pointer to an Twofish_key structure that will be filled 
 | 
				
			||||||
 | 
					 *             with the internal form of the cipher key.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern void Twofish_prepare_key( 
 | 
				
			||||||
 | 
					                                Twofish_Byte key[],
 | 
				
			||||||
 | 
					                                int key_len, 
 | 
				
			||||||
 | 
					                                Twofish_key * xkey  
 | 
				
			||||||
 | 
					                                );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Encrypt a single block of data.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This function encrypts a single block of 16 bytes of data.
 | 
				
			||||||
 | 
					 * If you want to encrypt a larger or variable-length message, 
 | 
				
			||||||
 | 
					 * you will have to use a cipher mode, such as CBC or CTR. 
 | 
				
			||||||
 | 
					 * These are outside the scope of this implementation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The xkey structure is not modified by this routine, and can be
 | 
				
			||||||
 | 
					 * used for further encryption and decryption operations.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Arguments:
 | 
				
			||||||
 | 
					 * xkey     pointer to Twofish_key, internal form of the key
 | 
				
			||||||
 | 
					 *              produces by Twofish_prepare_key()
 | 
				
			||||||
 | 
					 * p        Plaintext to be encrypted
 | 
				
			||||||
 | 
					 * c        Place to store the ciphertext
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern void Twofish_encrypt( 
 | 
				
			||||||
 | 
					                            Twofish_key * xkey,
 | 
				
			||||||
 | 
					                            Twofish_Byte p[16], 
 | 
				
			||||||
 | 
					                            Twofish_Byte c[16]
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Decrypt a single block of data.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This function decrypts a single block of 16 bytes of data.
 | 
				
			||||||
 | 
					 * If you want to decrypt a larger or variable-length message, 
 | 
				
			||||||
 | 
					 * you will have to use a cipher mode, such as CBC or CTR. 
 | 
				
			||||||
 | 
					 * These are outside the scope of this implementation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * The xkey structure is not modified by this routine, and can be
 | 
				
			||||||
 | 
					 * used for further encryption and decryption operations.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Arguments:
 | 
				
			||||||
 | 
					 * xkey     pointer to Twofish_key, internal form of the key
 | 
				
			||||||
 | 
					 *              produces by Twofish_prepare_key()
 | 
				
			||||||
 | 
					 * c        Ciphertext to be decrypted
 | 
				
			||||||
 | 
					 * p        Place to store the plaintext
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					extern void Twofish_decrypt( 
 | 
				
			||||||
 | 
					                            Twofish_key * xkey,
 | 
				
			||||||
 | 
					                            Twofish_Byte c[16], 
 | 
				
			||||||
 | 
					                            Twofish_Byte p[16]
 | 
				
			||||||
 | 
					                            );
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,98 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					#include <qscrollview.h>
 | 
				
			||||||
 | 
					#include <qlabel.h>
 | 
				
			||||||
 | 
					#include <qdialog.h>
 | 
				
			||||||
 | 
					#include <qfile.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "AboutDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CAboutDialog::CAboutDialog(QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: AboutDlg(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					mainwnd=((CMainWindow*)parentWidget());
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Key32x32,trUtf8("Keepass für Linux"));
 | 
				
			||||||
 | 
					Link_Homepage=new LinkLabel(this,"Link_Homepage",trUtf8("http://keepass.de.vu"),80,143);
 | 
				
			||||||
 | 
					Link_EMail=new LinkLabel(this,"Link_EMail",trUtf8("tarek.saidi@arcor.de"),80,163);
 | 
				
			||||||
 | 
					Link_License=new LinkLabel(this,"Link_License",trUtf8("Lizenz"),80,183);
 | 
				
			||||||
 | 
					connect(Link_License,SIGNAL(clicked()),this,SLOT(OnLicenseClicked()));
 | 
				
			||||||
 | 
					connect(Link_EMail,SIGNAL(clicked()),this,SLOT(OnEMailClicked()));
 | 
				
			||||||
 | 
					connect(Link_Homepage,SIGNAL(clicked()),this,SLOT(OnHomepageClicked()));
 | 
				
			||||||
 | 
					Label0->setText(Label0->text().arg(KEEPASS_VERSION));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CAboutDialog::~CAboutDialog()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					delete Link_Homepage;
 | 
				
			||||||
 | 
					delete Link_EMail;
 | 
				
			||||||
 | 
					delete Link_License;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CAboutDialog::OnClose()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CAboutDialog::OnLicenseClicked(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QDialog dlg(this,NULL,true);
 | 
				
			||||||
 | 
					QScrollView scroll(&dlg);
 | 
				
			||||||
 | 
					QLabel label(&scroll,"License-Scroll");
 | 
				
			||||||
 | 
					scroll.addChild(&label);
 | 
				
			||||||
 | 
					QFile gpl(((CMainWindow*)parentWidget())->appdir+"/../share/keepass/license.txt");
 | 
				
			||||||
 | 
					if(!gpl.exists()){
 | 
				
			||||||
 | 
					QMessageBox::critical(this,trUtf8("Fehler"),trUtf8("Die Datei '%1' konnte nicht gefunden werden.")
 | 
				
			||||||
 | 
								  .arg("'license.txt'")+"\n"+trUtf8("Die Anwendung wurde möglicherweiße nicht korrekt installiert.")
 | 
				
			||||||
 | 
								  ,trUtf8("OK"),0,0,2,1);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(!gpl.open(IO_ReadOnly)){
 | 
				
			||||||
 | 
					QMessageBox::critical(this,trUtf8("Fehler"),trUtf8("Die Datei '%1' konnte nicht geöffnet werden.")
 | 
				
			||||||
 | 
								  .arg("'license.txt'")+trUtf8("Es trat folgender Fehler auf:\n%1").arg(gpl.errorString())			 
 | 
				
			||||||
 | 
								  ,trUtf8("OK"),0,0,2,1);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					char* buffer=new char[gpl.size()];
 | 
				
			||||||
 | 
					long l=gpl.readBlock(buffer,gpl.size());
 | 
				
			||||||
 | 
					gpl.close();
 | 
				
			||||||
 | 
					label.setText(QString::fromUtf8(buffer,l));
 | 
				
			||||||
 | 
					label.setGeometry(0,0,500,800);
 | 
				
			||||||
 | 
					dlg.setFixedWidth(500);
 | 
				
			||||||
 | 
					dlg.setFixedHeight(400);
 | 
				
			||||||
 | 
					dlg.setCaption(trUtf8("Lizenz"));
 | 
				
			||||||
 | 
					scroll.setGeometry(0,0,500,400);
 | 
				
			||||||
 | 
					dlg.exec();
 | 
				
			||||||
 | 
					delete buffer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CAboutDialog::OnHomepageClicked(){
 | 
				
			||||||
 | 
					mainwnd->OpenURL("http://keepass.de.vu");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CAboutDialog::OnEMailClicked(){
 | 
				
			||||||
 | 
					mainwnd->OpenURL("mailto:tarek.saidi@arcor.de");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,57 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _ABOUTDIALOG_H_
 | 
				
			||||||
 | 
					#define _ABOUTDIALOG_H_
 | 
				
			||||||
 | 
					#include "ui_AboutDlg.h"
 | 
				
			||||||
 | 
					#include "lib/UrlLabel.h"
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CAboutDialog : public AboutDlg
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  LinkLabel *Link_Homepage,*Link_EMail,*Link_License;
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CAboutDialog(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CAboutDialog();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 CMainWindow* mainwnd;
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnClose();
 | 
				
			||||||
 | 
					    void OnHomepageClicked();
 | 
				
			||||||
 | 
					    void OnEMailClicked();
 | 
				
			||||||
 | 
					    void OnLicenseClicked();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,225 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					#include "../lib/random.h"
 | 
				
			||||||
 | 
					#include "ChangeKeyDlg.h"
 | 
				
			||||||
 | 
					//QT
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qcombobox.h>
 | 
				
			||||||
 | 
					#include <qpushbutton.h>
 | 
				
			||||||
 | 
					#include <qcheckbox.h>
 | 
				
			||||||
 | 
					#include <qdir.h>
 | 
				
			||||||
 | 
					#include <qfiledialog.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CChangeKeyDlg::CChangeKeyDlg(QWidget* parent,PwDatabase* _db,const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: ChangeKeyDialog(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					db=_db;
 | 
				
			||||||
 | 
					parentwnd=((CMainWindow*)parentWidget());
 | 
				
			||||||
 | 
					parentwnd->CreateBanner(Banner,parentwnd->Icon_Key32x32,trUtf8("Hauptschlüssel ändern"));
 | 
				
			||||||
 | 
					if(!parentwnd->config.ShowPasswords)ChangeEchoMode();
 | 
				
			||||||
 | 
					///@PlatformSpecific
 | 
				
			||||||
 | 
					QDir media("/media");
 | 
				
			||||||
 | 
					if(media.exists()){
 | 
				
			||||||
 | 
					Paths=media.entryList("*",QDir::Dirs);
 | 
				
			||||||
 | 
					Paths.erase(Paths.begin()); // delete "."
 | 
				
			||||||
 | 
					Paths.erase(Paths.begin()); // delete ".."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i=0;i<Paths.count();i++){
 | 
				
			||||||
 | 
					Paths[i]="/media/"+Paths[i];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Paths.prepend("< none >");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					for(int i=0;i<Paths.count();i++){
 | 
				
			||||||
 | 
					Combo_Dirs->insertItem(0,Paths[i]);
 | 
				
			||||||
 | 
					IsFile.append(false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CChangeKeyDlg::~CChangeKeyDlg()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					 if(password==""){QMessageBox::warning(this,trUtf8("Fehler"),trUtf8("Bitte geben Sie ein Passwort ein.")
 | 
				
			||||||
 | 
					                                      ,trUtf8("OK"),"","",0,0);
 | 
				
			||||||
 | 
								return;}
 | 
				
			||||||
 | 
					 if(keyfile==""){QMessageBox::warning(this,trUtf8("Fehler"),trUtf8("Bitte wählen Sie eine Schlüsseldatei.")
 | 
				
			||||||
 | 
					                                      ,trUtf8("OK"),"","",0,0);
 | 
				
			||||||
 | 
								return;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 if(password=="" && keyfile==""){QMessageBox::warning(this,trUtf8("Fehler"),trUtf8("Geben Sie bitte ein Passwort ein oder wählen Sie eine Schlüsseldatei.")
 | 
				
			||||||
 | 
					                                      ,trUtf8("OK"),"","",0,0);
 | 
				
			||||||
 | 
								return;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UINT8 file_key[32]={0};
 | 
				
			||||||
 | 
					UINT8 pw_key[32]={0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(keyfile!=""){
 | 
				
			||||||
 | 
					QFile file(keyfile);
 | 
				
			||||||
 | 
					if(file.exists()){
 | 
				
			||||||
 | 
					int r=QMessageBox::warning(this,trUtf8("Vorhandene Datei überschreiben?"),trUtf8("Unter dem gewählten Dateinamen existiert bereits eine Datei.\nSoll sie überschrieben werden?"),"Ja","Nein",NULL,1,1);
 | 
				
			||||||
 | 
					if(r==1)return;}
 | 
				
			||||||
 | 
					getRandomBytes(file_key,1,32,true);
 | 
				
			||||||
 | 
					if(file.open(IO_WriteOnly | IO_Truncate)==false){
 | 
				
			||||||
 | 
					QMessageBox::critical(this,trUtf8("Fehler"),trUtf8("Schlüsseldatei konnte nicht geöffnet werden."),"OK",0,0,2,1);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(file.writeBlock((char*)file_key,32)!=32){
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QMessageBox::critical(this,trUtf8("Fehler"),trUtf8("Das Schreiben der Schlüsseldatei ist fehlgeschlagen."),"OK",0,0,2,1);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CheckBox_Both->isChecked() || keyfile==""){
 | 
				
			||||||
 | 
						if(password!=Edit_Password_2->text()){
 | 
				
			||||||
 | 
							QMessageBox::critical(this,trUtf8("Fehler"),trUtf8("Passwort und Passwortwiederholung stimmen nicht überein.\nBitte prüfen Sie Ihre Eingabe."),"OK",0,0,2,1);
 | 
				
			||||||
 | 
							return;}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CheckBox_Both->isChecked())db->CalcMasterKeyByFileAndPw(keyfile, password);
 | 
				
			||||||
 | 
					 else if(password=="")db->CalcMasterKeyByFile(keyfile);
 | 
				
			||||||
 | 
					   else if(keyfile==""){db->CalcMasterKeyByPassword(password);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					done(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnSelect()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(Button_Browse->isEnabled()){
 | 
				
			||||||
 | 
					keyfile=QFileDialog::getSaveFileName(QDir::homeDirPath(),"",this,trUtf8("Schlüsseldatei öffnen"));
 | 
				
			||||||
 | 
					if(keyfile=="")return;
 | 
				
			||||||
 | 
					Combo_Dirs->insertItem(keyfile);
 | 
				
			||||||
 | 
					Combo_Dirs->setCurrentItem(Combo_Dirs->count()-1);
 | 
				
			||||||
 | 
					if(!CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					 Edit_Password->setDisabled(true);
 | 
				
			||||||
 | 
					 Edit_Password->setText("");
 | 
				
			||||||
 | 
					 password="";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Paths.append(keyfile);
 | 
				
			||||||
 | 
					IsFile.append(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnBrowse()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString dir=QFileDialog::getExistingDirectory(QDir::homeDirPath(),NULL,trUtf8("Verzeichnis wählen"));
 | 
				
			||||||
 | 
					if(dir=="")return;
 | 
				
			||||||
 | 
					keyfile=dir+"/pwsafe.key";
 | 
				
			||||||
 | 
					Combo_Dirs->insertItem(dir);
 | 
				
			||||||
 | 
					Combo_Dirs->setCurrentItem(Combo_Dirs->count()-1);
 | 
				
			||||||
 | 
					if(!CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					 Edit_Password->setDisabled(true);
 | 
				
			||||||
 | 
					 Edit_Password_2->setDisabled(true);
 | 
				
			||||||
 | 
					 Edit_Password->setText("");
 | 
				
			||||||
 | 
					 Edit_Password_2->setText("");
 | 
				
			||||||
 | 
					 password="";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Paths.append(dir);
 | 
				
			||||||
 | 
					IsFile.append(false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					done(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnPasswordChanged(const QString& str)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(str!="" && !(CheckBox_Both->isChecked())){
 | 
				
			||||||
 | 
					Combo_Dirs->setDisabled(true);
 | 
				
			||||||
 | 
					Button_Browse->setDisabled(true);}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					Combo_Dirs->setEnabled(true);
 | 
				
			||||||
 | 
					Button_Browse->setEnabled(true);}
 | 
				
			||||||
 | 
					Edit_Password_2->setText("");
 | 
				
			||||||
 | 
					password=str;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnPassword2Changed(const QString& str)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnComboChanged(int i)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(i==0){
 | 
				
			||||||
 | 
					keyfile="";
 | 
				
			||||||
 | 
					Edit_Password->setEnabled(true);
 | 
				
			||||||
 | 
					Edit_Password_2->setEnabled(true);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(IsFile[i]==true)keyfile=Paths[i];
 | 
				
			||||||
 | 
					else keyfile=Paths[i]+"/pwsafe.key";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(!CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					Edit_Password->setText("");
 | 
				
			||||||
 | 
					Edit_Password->setDisabled(true);
 | 
				
			||||||
 | 
					Edit_Password_2->setText("");
 | 
				
			||||||
 | 
					Edit_Password_2->setDisabled(true);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::OnCheckBoxChanged(int i)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(i==QButton::NoChange)return;
 | 
				
			||||||
 | 
					if(i==QButton::On){
 | 
				
			||||||
 | 
					Combo_Dirs->setEnabled(true);
 | 
				
			||||||
 | 
					Button_Browse->setEnabled(true);
 | 
				
			||||||
 | 
					Edit_Password->setEnabled(true);
 | 
				
			||||||
 | 
					Edit_Password_2->setEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CChangeKeyDlg::ChangeEchoMode()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(Edit_Password->echoMode()==QLineEdit::Normal){
 | 
				
			||||||
 | 
					Edit_Password->setEchoMode(QLineEdit::Password);
 | 
				
			||||||
 | 
					Edit_Password_2->setEchoMode(QLineEdit::Password);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Password->setEchoMode(QLineEdit::Normal);
 | 
				
			||||||
 | 
					Edit_Password_2->setEchoMode(QLineEdit::Normal);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "changekeydlg.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef _CHANGEKEYDLG_H_
 | 
				
			||||||
 | 
					#define _CHANGEKEYDLG_H_
 | 
				
			||||||
 | 
					#include "ui_ChangeKeyDlg.h"
 | 
				
			||||||
 | 
					#include <qstringlist.h>
 | 
				
			||||||
 | 
					#include <qvaluelist.h>
 | 
				
			||||||
 | 
					#include <qfile.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CChangeKeyDlg : public ChangeKeyDialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CChangeKeyDlg(QWidget* parent,PwDatabase* db, const char* name = 0, bool modal = true, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CChangeKeyDlg();
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnSelect();
 | 
				
			||||||
 | 
					    virtual void OnBrowse();
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					    virtual void OnOK();
 | 
				
			||||||
 | 
					    virtual void OnComboChanged(int i);
 | 
				
			||||||
 | 
					    virtual void OnCheckBoxChanged(int i);
 | 
				
			||||||
 | 
					    virtual void OnPasswordChanged(const QString& str);
 | 
				
			||||||
 | 
					    virtual void OnPassword2Changed(const QString& str);
 | 
				
			||||||
 | 
					    virtual void ChangeEchoMode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					PwDatabase* db;
 | 
				
			||||||
 | 
					CMainWindow* parentwnd;
 | 
				
			||||||
 | 
					QStringList Paths;
 | 
				
			||||||
 | 
					QValueList<bool> IsFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					QString keyfile;
 | 
				
			||||||
 | 
					QFile* pKeyFile;
 | 
				
			||||||
 | 
					QString password;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,84 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include <qcombobox.h>
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include "DatabaseSettingsDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CDbSettingsDlg::CDbSettingsDlg(CMainWindow* parent,Database* db, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: dbsettingdlg_base(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					database=db;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CDbSettingsDlg::~CDbSettingsDlg()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CDbSettingsDlg::showEvent(QShowEvent *event){
 | 
				
			||||||
 | 
					if(event->spontaneous()==false){
 | 
				
			||||||
 | 
					((CMainWindow*)parentWidget())->CreateBanner(Banner,((CMainWindow*)parentWidget())->Icon_Settings32x32,"Einstellungen");
 | 
				
			||||||
 | 
					ComboAlgo->insertItem(trUtf8("AES(Rijndael):  256 Bit   (Standard)"),0);
 | 
				
			||||||
 | 
					ComboAlgo->insertItem(trUtf8("Twofish:  256 Bit"),1);
 | 
				
			||||||
 | 
					ComboAlgo->setCurrentItem(database->CryptoAlgorithmus); //Achtung: AlgoID muss gleich dem ComboBox Index sein!
 | 
				
			||||||
 | 
					EditRounds->setText(QString::number(database->KeyEncRounds));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CDbSettingsDlg::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CDbSettingsDlg::OnOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(EditRounds->text()==""){
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,trUtf8("Fehler"),trUtf8("Geben Sie bitte die Anzahl der Verschlüsselungsrunden an."),trUtf8("OK"));
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					bool valid;
 | 
				
			||||||
 | 
					int rounds=EditRounds->text().toUInt(&valid,10);
 | 
				
			||||||
 | 
					if(valid==false){
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,trUtf8("Fehler"),EditRounds->text()+trUtf8(" ist kein gültiger Zahlenwert"),trUtf8("OK"));
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(rounds==0){
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,trUtf8("Fehler"),trUtf8("Die Anzahl an Verschlüsselungsrunden muss mindestens 1 betragen."),trUtf8("OK"));
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					database->KeyEncRounds=rounds;
 | 
				
			||||||
 | 
					database->CryptoAlgorithmus=ComboAlgo->currentItem();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "databasesettingsdlg.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef DBSETTINGSDLG_H
 | 
				
			||||||
 | 
					#define DBSETTINGSDLG_H
 | 
				
			||||||
 | 
					#include "ui_DatabaseSettingsDlg.h"
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include "Database.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CDbSettingsDlg : public dbsettingdlg_base
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CDbSettingsDlg(CMainWindow* parent,Database* db,const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CDbSettingsDlg();
 | 
				
			||||||
 | 
					   virtual void showEvent(QShowEvent *);
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					    virtual void OnOK();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					   Database* database;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,371 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qpushbutton.h>
 | 
				
			||||||
 | 
					#include <qpalette.h>
 | 
				
			||||||
 | 
					#include <qfont.h>
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qlabel.h>
 | 
				
			||||||
 | 
					#include <qprogressbar.h>
 | 
				
			||||||
 | 
					#include <qtextedit.h>
 | 
				
			||||||
 | 
					#include <qpixmap.h>
 | 
				
			||||||
 | 
					#include <qcolor.h>
 | 
				
			||||||
 | 
					#include <qcombobox.h>
 | 
				
			||||||
 | 
					#include <qpainter.h>
 | 
				
			||||||
 | 
					#include <qpen.h>
 | 
				
			||||||
 | 
					#include <qfiledialog.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "PasswordGenDlg.h"
 | 
				
			||||||
 | 
					#include "EditEntryDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEditEntryDlg::CEditEntryDlg(QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: EditEntryDialog(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pw=((CMainWindow*)parentWidget())->db;
 | 
				
			||||||
 | 
					mainwnd=((CMainWindow*)parentWidget());
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Key32x32,trUtf8("Eintrag bearbeiten"));
 | 
				
			||||||
 | 
					ModFlag=false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEditEntryDlg::~CEditEntryDlg()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::showEvent(QShowEvent *event){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(event->spontaneous()==false){
 | 
				
			||||||
 | 
					if(entry->pBinaryData==NULL){
 | 
				
			||||||
 | 
					ButtonSaveAttachment->setDisabled(true);
 | 
				
			||||||
 | 
					ButtonDeleteAttachment->setDisabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					setCaption(entry->Title);
 | 
				
			||||||
 | 
					setIcon(mainwnd->EntryIcons[entry->ImageID]);
 | 
				
			||||||
 | 
					Edit_Title->setText(entry->Title);
 | 
				
			||||||
 | 
					Edit_UserName->setText(entry->UserName);
 | 
				
			||||||
 | 
					Edit_URL->setText(entry->URL);
 | 
				
			||||||
 | 
					Edit_Password->setText(entry->Password.getString());
 | 
				
			||||||
 | 
					Edit_Password_w->setText(entry->Password.getString());
 | 
				
			||||||
 | 
					entry->Password.delRef();
 | 
				
			||||||
 | 
					if(!mainwnd->config.ShowPasswords)ChangeEchoMode();
 | 
				
			||||||
 | 
					OnPasswordwLostFocus();
 | 
				
			||||||
 | 
					int bits=(entry->Password.length()*8);
 | 
				
			||||||
 | 
					Label_Bits->setText(QString::number(bits)+" Bit");
 | 
				
			||||||
 | 
					if(bits>128)bits=128;
 | 
				
			||||||
 | 
					Progress_Quali->setProgress(bits,128);
 | 
				
			||||||
 | 
					Progress_Quali->setPercentageVisible(false);
 | 
				
			||||||
 | 
					Edit_Attachment->setText(entry->BinaryDesc);
 | 
				
			||||||
 | 
					Edit_Comment->setText(entry->Additional);
 | 
				
			||||||
 | 
					InitGroupComboBox();
 | 
				
			||||||
 | 
					InitIconComboBox();
 | 
				
			||||||
 | 
					Edit_Expire_Date->setText((entry->Expire.GetString(0)).mid(0,10));
 | 
				
			||||||
 | 
					Edit_Expire_Time->setText((entry->Expire.GetString(0)).mid(11,8));
 | 
				
			||||||
 | 
					if(entry->BinaryDataLength==0){
 | 
				
			||||||
 | 
					Label_AttachmentSize->setText("");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString unit;
 | 
				
			||||||
 | 
					int faktor;
 | 
				
			||||||
 | 
					int prec;
 | 
				
			||||||
 | 
					  if(entry->BinaryDataLength<1000){unit=" Byte";faktor=1;prec=0;}
 | 
				
			||||||
 | 
					  else {if(entry->BinaryDataLength<1000000){unit=" kB";faktor=1000;prec=1;}
 | 
				
			||||||
 | 
					  	else{unit=" MB";faktor=1000000;prec=1;}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					Label_AttachmentSize->setText(QString::number((float)entry->BinaryDataLength/(float)faktor,'f',prec)+unit);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::InitIconComboBox(){
 | 
				
			||||||
 | 
					for(int i=0;i<52;i++){
 | 
				
			||||||
 | 
					Combo_IconPicker->insertItem(((CMainWindow*)parentWidget())->EntryIcons[i],"",i);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Combo_IconPicker->setCurrentItem(entry->ImageID);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::InitGroupComboBox(){
 | 
				
			||||||
 | 
					QString tmp;
 | 
				
			||||||
 | 
					int i;
 | 
				
			||||||
 | 
					for(i=0;i!=pw->Groups.size();i++){
 | 
				
			||||||
 | 
					tmp="";
 | 
				
			||||||
 | 
					  for(int j=0;j<pw->Groups[i].Level;j++)tmp+="  ";
 | 
				
			||||||
 | 
					Combo_Group->insertItem(((CMainWindow*)parentWidget())->EntryIcons[pw->Groups[i].ImageID],
 | 
				
			||||||
 | 
					 			tmp+pw->Groups[i].Name,i);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Combo_Group->setCurrentItem(pw->getGroupIndex(entry->GroupID));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnButtonOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(QString::compare(Edit_Password->text(),Edit_Password_w->text())!=0){
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,"Stopp",QString::fromUtf8("Passwort und Passwortwiederholung stimmen\nnicht überein."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					QString str=Edit_Expire_Date->text();
 | 
				
			||||||
 | 
					if(CPwmTime::IsValidDate(str)==false){
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,"Stopp",QString::fromUtf8(str+" ist kein gültiges Datum."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					str=Edit_Expire_Time->text();
 | 
				
			||||||
 | 
					if(CPwmTime::IsValidTime(str)==false){
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,"Stopp",QString::fromUtf8(str+" ist keine gültige Uhrzeit."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CPwmTime tmp_Expire;
 | 
				
			||||||
 | 
					tmp_Expire.SetDate(Edit_Expire_Date->text());
 | 
				
			||||||
 | 
					tmp_Expire.SetTime(Edit_Expire_Time->text());
 | 
				
			||||||
 | 
					if(tmp_Expire!=entry->Expire)
 | 
				
			||||||
 | 
						ModFlag=true;
 | 
				
			||||||
 | 
					if(entry->Title!=Edit_Title->text())
 | 
				
			||||||
 | 
						ModFlag=true;
 | 
				
			||||||
 | 
					if(entry->UserName!=Edit_UserName->text())
 | 
				
			||||||
 | 
						ModFlag=true;
 | 
				
			||||||
 | 
					if(entry->URL!=Edit_URL->text())
 | 
				
			||||||
 | 
						ModFlag=true;
 | 
				
			||||||
 | 
					if(entry->Additional!=Edit_Comment->text())
 | 
				
			||||||
 | 
						ModFlag=true;
 | 
				
			||||||
 | 
					QString& passw=entry->Password.getString();
 | 
				
			||||||
 | 
					if(passw!=Edit_Password->text())
 | 
				
			||||||
 | 
						ModFlag=true;
 | 
				
			||||||
 | 
					entry->Password.delRef();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					entry->Expire.SetDate(Edit_Expire_Date->text());
 | 
				
			||||||
 | 
					entry->Expire.SetTime(Edit_Expire_Time->text());
 | 
				
			||||||
 | 
					entry->LastAccess.SetToNow();
 | 
				
			||||||
 | 
					if(ModFlag)entry->LastMod.SetToNow();
 | 
				
			||||||
 | 
					entry->Title=Edit_Title->text();
 | 
				
			||||||
 | 
					entry->UserName=Edit_UserName->text();
 | 
				
			||||||
 | 
					entry->URL=Edit_URL->text();
 | 
				
			||||||
 | 
					QString s=Edit_Password->text();
 | 
				
			||||||
 | 
					entry->Password.setString(s,true);
 | 
				
			||||||
 | 
					entry->Additional=Edit_Comment->text();
 | 
				
			||||||
 | 
					if(Combo_Group->currentItem()!=pw->getGroupIndex(entry->GroupID)){
 | 
				
			||||||
 | 
					pw->moveEntry(entry,&pw->Groups[Combo_Group->currentItem()]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					entry->ImageID=Combo_IconPicker->currentItem();
 | 
				
			||||||
 | 
					done(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnButtonCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					entry->LastAccess.SetToNow();
 | 
				
			||||||
 | 
					done(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::ChangeEchoMode()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(Edit_Password->echoMode()==QLineEdit::Normal){
 | 
				
			||||||
 | 
					Edit_Password->setEchoMode(QLineEdit::Password);
 | 
				
			||||||
 | 
					Edit_Password_w->setEchoMode(QLineEdit::Password);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Password->setEchoMode(QLineEdit::Normal);
 | 
				
			||||||
 | 
					Edit_Password_w->setEchoMode(QLineEdit::Normal);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnPasswordTextChanged(const QString& txt)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Password_w->setText("");
 | 
				
			||||||
 | 
					int bits=(Edit_Password->text().length()*8);
 | 
				
			||||||
 | 
					Label_Bits->setText(QString::number(bits)+" Bit");
 | 
				
			||||||
 | 
					if(bits>128)bits=128;
 | 
				
			||||||
 | 
					Progress_Quali->setProgress(bits,128);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnPasswordwTextChanged(const QString& w)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(QString::compare(Edit_Password_w->text(),Edit_Password->text().mid(0,(Edit_Password_w->text().length())))!=0){
 | 
				
			||||||
 | 
					Edit_Password_w->setPaletteBackgroundColor(QColor(255,125,125));
 | 
				
			||||||
 | 
					}else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Password_w->setPaletteBackgroundColor(QColor(255,255,255)); ///@FIXME Standart-Hintergrundfarbe nicht weiß
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnPasswordwLostFocus()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(QString::compare(Edit_Password_w->text(),Edit_Password->text())!=0){
 | 
				
			||||||
 | 
					Edit_Password_w->setPaletteBackgroundColor(QColor(255,125,125));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Password_w->setPaletteBackgroundColor(QColor(255,255,255)); ///@FIXME Standart-Hintergrundfarbe nicht weiß
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnExpDateLostFocus()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString str=Edit_Expire_Date->text();
 | 
				
			||||||
 | 
					if(CPwmTime::IsValidDate(str)==false){
 | 
				
			||||||
 | 
					Edit_Expire_Date->setPaletteBackgroundColor(QColor(255,125,125));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Expire_Date->setPaletteBackgroundColor(QColor(255,255,255));///@FIXME Standart-Hintergrundfarbe nicht weiß
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnExpTimeLostFocus()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString str=Edit_Expire_Time->text();
 | 
				
			||||||
 | 
					if(CPwmTime::IsValidTime(str)==false){
 | 
				
			||||||
 | 
					Edit_Expire_Time->setPaletteBackgroundColor(QColor(255,125,125));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Expire_Time->setPaletteBackgroundColor(QColor(255,255,255));///@FIXME Standart-Hintergrundfarbe nicht weiß
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnNewAttachment()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString filename=QFileDialog::getOpenFileName(QDir::homeDirPath(),"",this,QString::fromUtf8("Anhang hinzufügen..."));
 | 
				
			||||||
 | 
					if(filename=="")return;
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					if(file.open(IO_ReadOnly)==false){
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QMessageBox::warning(NULL,trUtf8("Fehler"),trUtf8("Datei konnte nicht geöffnet werden."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					ModFlag=true;
 | 
				
			||||||
 | 
					if(entry->pBinaryData)delete [] entry->pBinaryData;
 | 
				
			||||||
 | 
					entry->pBinaryData = new UINT8 [file.size()];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(entry->pBinaryData==NULL){
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QMessageBox::critical(NULL,"Fehler",QString::fromUtf8("Es ist nicht genügend Arbeitsspeicher für diesen Vorgang vorhanden."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					entry->BinaryDataLength=file.size();
 | 
				
			||||||
 | 
					file.readBlock((char*)entry->pBinaryData,file.size());
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QFileInfo info(filename);
 | 
				
			||||||
 | 
					entry->BinaryDesc=info.fileName();
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					Edit_Attachment->setText(entry->BinaryDesc);
 | 
				
			||||||
 | 
					QString unit;
 | 
				
			||||||
 | 
					int faktor;
 | 
				
			||||||
 | 
					int prec;
 | 
				
			||||||
 | 
					  if(entry->BinaryDataLength<1000){unit=" Byte";faktor=1;prec=0;}
 | 
				
			||||||
 | 
					  else {if(entry->BinaryDataLength<1000000){unit=" kB";faktor=1000;prec=1;}
 | 
				
			||||||
 | 
					  	else{unit=" MB";faktor=1000000;prec=1;}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					Label_AttachmentSize->setText(QString::number((float)entry->BinaryDataLength/(float)faktor,'f',prec)+unit);
 | 
				
			||||||
 | 
					ButtonOpenAttachment->setEnabled(true);
 | 
				
			||||||
 | 
					ButtonSaveAttachment->setEnabled(true);
 | 
				
			||||||
 | 
					ButtonDeleteAttachment->setEnabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnSaveAttachment()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString filename=QFileDialog::getSaveFileName(QDir::homeDirPath(),"",this,trUtf8("Anhang speichern..."));
 | 
				
			||||||
 | 
					if(filename=="")return;
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					if(file.exists()){
 | 
				
			||||||
 | 
					int r=QMessageBox::warning(this,QString::fromUtf8("Vorhandene Datei überschreiben?"),QString::fromUtf8("Unter dem gewählten Dateinamen existiert bereits eine Datei.\nSoll sie überschrieben werden?"),"Ja","Nein",NULL,1,1);
 | 
				
			||||||
 | 
					if(r==1)return;
 | 
				
			||||||
 | 
					if(file.remove()==false){
 | 
				
			||||||
 | 
					QMessageBox::critical(NULL,"Fehler",QString::fromUtf8("Datei konnte nicht überschrieben werden."),"OK");
 | 
				
			||||||
 | 
					return;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(file.open(IO_WriteOnly)==false){
 | 
				
			||||||
 | 
					QMessageBox::critical(NULL,"Fehler",QString::fromUtf8("Datei konnte nicht erstellt werden."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int r=file.writeBlock((char*)entry->pBinaryData,entry->BinaryDataLength);
 | 
				
			||||||
 | 
					if(r==-1){
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QMessageBox::critical(NULL,"Fehler",QString::fromUtf8("Beim schreiben in der Datei ist ein Fehler aufgetreten."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(r!=entry->BinaryDataLength){
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QMessageBox::critical(NULL,"Fehler",QString::fromUtf8("Die Datei konnte nicht vollständig geschrieben werden."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnDeleteAttachment()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					int r=QMessageBox::warning(this,trUtf8("Anhang löschen?"),trUtf8("Sie sind dabei den Anhang zu löschen.\nSind Sie sicher, dass Sie dies tun wollen?"),trUtf8("Ja"),trUtf8("Nein"),NULL,1,1);
 | 
				
			||||||
 | 
					if(r==0){
 | 
				
			||||||
 | 
					ModFlag=true;
 | 
				
			||||||
 | 
					delete[]entry->pBinaryData;
 | 
				
			||||||
 | 
					entry->pBinaryData=NULL;
 | 
				
			||||||
 | 
					entry->BinaryDataLength=0;
 | 
				
			||||||
 | 
					entry->BinaryDesc="";
 | 
				
			||||||
 | 
					Edit_Attachment->setText("");
 | 
				
			||||||
 | 
					Label_AttachmentSize->setText("");
 | 
				
			||||||
 | 
					ButtonOpenAttachment->setEnabled(true);
 | 
				
			||||||
 | 
					ButtonSaveAttachment->setDisabled(true);
 | 
				
			||||||
 | 
					ButtonDeleteAttachment->setDisabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditEntryDlg::OnButtonGenPw()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					CGenPwDialog* pDlg=new CGenPwDialog(this,0,true);
 | 
				
			||||||
 | 
					pDlg->show();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "editentrydlg.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,74 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef EDITENTRYDLG_H
 | 
				
			||||||
 | 
					#define EDITENTRYDLG_H
 | 
				
			||||||
 | 
					#include "ui_EditEntryDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CEditEntryDlg : public EditEntryDialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CEditEntryDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0);
 | 
				
			||||||
 | 
					  ~CEditEntryDlg();
 | 
				
			||||||
 | 
					  virtual void showEvent(QShowEvent *);
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  virtual void OnButtonOK();
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					CMainWindow* mainwnd;
 | 
				
			||||||
 | 
					CEntry* entry;
 | 
				
			||||||
 | 
					PwDatabase* pw;
 | 
				
			||||||
 | 
					QPixmap* banner_pixmap;
 | 
				
			||||||
 | 
					bool ModFlag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CreateBanner();
 | 
				
			||||||
 | 
					void InitGroupComboBox();
 | 
				
			||||||
 | 
					void InitIconComboBox();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnExpTimeLostFocus();
 | 
				
			||||||
 | 
					    virtual void OnExpDateLostFocus();
 | 
				
			||||||
 | 
					    virtual void OnPasswordwLostFocus();
 | 
				
			||||||
 | 
					    virtual void OnPasswordwTextChanged(const QString&);
 | 
				
			||||||
 | 
					    virtual void OnPasswordTextChanged(const QString&);
 | 
				
			||||||
 | 
					    virtual void ChangeEchoMode();
 | 
				
			||||||
 | 
					    virtual void OnButtonCancel();
 | 
				
			||||||
 | 
					    virtual void OnNewAttachment();
 | 
				
			||||||
 | 
					    virtual void OnDeleteAttachment();
 | 
				
			||||||
 | 
					    virtual void OnSaveAttachment();
 | 
				
			||||||
 | 
					    virtual void OnButtonGenPw();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,68 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qcombobox.h>
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include "EditGroupDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEditGroupDialog::CEditGroupDialog(QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: EditGroupDialog(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					IconID=0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CEditGroupDialog::~CEditGroupDialog()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditGroupDialog::showEvent(QShowEvent *event){
 | 
				
			||||||
 | 
					if(event->spontaneous()==false){
 | 
				
			||||||
 | 
					EditTitle->setText(GroupName);
 | 
				
			||||||
 | 
					for(int i=0;i<52;i++){
 | 
				
			||||||
 | 
					ComboIconPicker->insertItem(((CMainWindow*)parentWidget())->EntryIcons[i],"",i);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					ComboIconPicker->setCurrentItem(IconID);
 | 
				
			||||||
 | 
					}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditGroupDialog::OnOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					GroupName=EditTitle->text();
 | 
				
			||||||
 | 
					IconID=ComboIconPicker->currentItem();
 | 
				
			||||||
 | 
					OK=true;
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CEditGroupDialog::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					OK=false;
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "editgroupdlg.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef EDITGROUPDLG_H
 | 
				
			||||||
 | 
					#define EDITGROUPDLG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ui_EditGroupDlg.h"
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CEditGroupDialog : public EditGroupDialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CEditGroupDialog(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CEditGroupDialog();
 | 
				
			||||||
 | 
					virtual void showEvent(QShowEvent *event);
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					 int IconID;
 | 
				
			||||||
 | 
					 QString GroupName;
 | 
				
			||||||
 | 
					 bool OK;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnOK();
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,149 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi   *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include "LanguageDlg.h"
 | 
				
			||||||
 | 
					#include <qtranslator.h>
 | 
				
			||||||
 | 
					#include <qdir.h>
 | 
				
			||||||
 | 
					#include <qstringlist.h>
 | 
				
			||||||
 | 
					#include <qlistview.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const char* infostrings[]={
 | 
				
			||||||
 | 
					QT_TRANSLATE_NOOP("_INFO","$TRANSL_AUTHOR"),
 | 
				
			||||||
 | 
					QT_TRANSLATE_NOOP("_INFO","$TRANSL_AUTHOR_CONTACT"),
 | 
				
			||||||
 | 
					QT_TRANSLATE_NOOP("_INFO","$TRANSL_LANGUAGE"),
 | 
				
			||||||
 | 
					QT_TRANSLATE_NOOP("_INFO","$TRANSL_VERSION")};
 | 
				
			||||||
 | 
					const char* msg[]={QT_TRANSLATE_NOOP("_MSG","Die Änderung der Sprache wird erst nach einem Neustart von Keepass wirksam."),
 | 
				
			||||||
 | 
							   QT_TRANSLATE_NOOP("_MSG","OK"),
 | 
				
			||||||
 | 
							   QT_TRANSLATE_NOOP("_MSG","Hinweis")};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLanguageDlg::CLanguageDlg(QWidget* parent, const char* name, WFlags fl)
 | 
				
			||||||
 | 
					: LanguageDlg(parent,name,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					parentwnd=((CMainWindow*)parentWidget());
 | 
				
			||||||
 | 
					parentwnd->CreateBanner(Banner,parentwnd->Icon_I18n32x32,trUtf8("Spracheinstellungen"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QListViewItem* item;
 | 
				
			||||||
 | 
					QString& config_lang=parentwnd->config.Language;
 | 
				
			||||||
 | 
					QStringList files;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString langdir=parentwnd->appdir+"/../share/keepass/i18n/";
 | 
				
			||||||
 | 
					QDir dir(langdir);
 | 
				
			||||||
 | 
					if(dir.exists()){
 | 
				
			||||||
 | 
					files=dir.entryList("*.qm",QDir::Files);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					List->insertItem(item=new QListViewItem(List,"","Deutsch","-","-"));
 | 
				
			||||||
 | 
					if(config_lang=="_DEUTSCH_")item->setPixmap(0,*parentwnd->Icon_Ok16x16);
 | 
				
			||||||
 | 
					pItems.push_back(item);
 | 
				
			||||||
 | 
					filenames.push_back("_DEUTSCH_");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i=0;i<files.count();i++){
 | 
				
			||||||
 | 
					QTranslator translator;
 | 
				
			||||||
 | 
					 if(!translator.load(langdir+files[i])){
 | 
				
			||||||
 | 
					  QMessageBox::warning(this,tr("Warnung"),tr("Die Datei '%1' konnte nicht geladen werden.").arg(files[i]),tr("OK"),0,0,2,1);
 | 
				
			||||||
 | 
					  continue;}
 | 
				
			||||||
 | 
					List->insertItem(item=new QListViewItem(List,"",translator.findMessage("_INFO","$TRANSL_LANGUAGE").translation()
 | 
				
			||||||
 | 
									       ,translator.findMessage("_INFO","$TRANSL_VERSION").translation()
 | 
				
			||||||
 | 
									       ,translator.findMessage("_INFO","$TRANSL_AUTHOR").translation()));
 | 
				
			||||||
 | 
					if(config_lang==files[i])item->setPixmap(0,*parentwnd->Icon_Ok16x16);
 | 
				
			||||||
 | 
					pItems.push_back(item);
 | 
				
			||||||
 | 
					filenames.push_back(files[i]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLanguageDlg::~CLanguageDlg()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CLanguageDlg::showEvent(QShowEvent *event){
 | 
				
			||||||
 | 
					if(event->spontaneous()==false){
 | 
				
			||||||
 | 
					List->setColumnWidth(0,20);
 | 
				
			||||||
 | 
					int width=(List->width()-4-20)/3;
 | 
				
			||||||
 | 
					List->setColumnWidth(1,width);
 | 
				
			||||||
 | 
					List->setColumnWidth(2,width);
 | 
				
			||||||
 | 
					List->setColumnWidth(3,width);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CLanguageDlg::OnItemRightClick(QListViewItem* item)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					//CTX-MENU
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CLanguageDlg::OnItemDoubleClicked(QListViewItem* item) // == Slot für Button "wählen"
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					int i;
 | 
				
			||||||
 | 
					QString langdir=parentwnd->appdir+"/../share/keepass/i18n/";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(i=0;i<pItems.size();i++){
 | 
				
			||||||
 | 
					 if(item==pItems[i])break;
 | 
				
			||||||
 | 
					 if(i==pItems.size()-1){
 | 
				
			||||||
 | 
						cout << QString("unexpected error in %1, line %2").arg(__FILE__).arg(__LINE__) << endl;
 | 
				
			||||||
 | 
						exit(-1);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(filenames[i]!="_DEUTSCH_"){
 | 
				
			||||||
 | 
					QTranslator translator;
 | 
				
			||||||
 | 
					if(!translator.load(langdir+filenames[i])){
 | 
				
			||||||
 | 
					 QMessageBox::warning(this,tr("Warnung"),tr("Die Datei '%1' konnte nicht geladen werden.").arg(filenames[i]),tr("OK"),0,0,2,1);
 | 
				
			||||||
 | 
					 return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					QMessageBox::information(this,translator.findMessage("_MSG",msg[2]).translation()
 | 
				
			||||||
 | 
								     ,translator.findMessage("_MSG",msg[0]).translation()
 | 
				
			||||||
 | 
								     ,translator.findMessage("_MSG",msg[1]).translation()
 | 
				
			||||||
 | 
								     ,0,0,2,1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else QMessageBox::information(this,QString::fromUtf8(msg[2]),QString::fromUtf8(msg[0]),QString::fromUtf8(msg[1]),0,0,2,1);
 | 
				
			||||||
 | 
					parentwnd->config.Language=filenames[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int j=0;j<pItems.size();j++){
 | 
				
			||||||
 | 
					if(j==i)pItems[j]->setPixmap(0,*parentwnd->Icon_Ok16x16);
 | 
				
			||||||
 | 
					else pItems[j]->setPixmap(0,0);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					List->setColumnWidth(0,20);
 | 
				
			||||||
 | 
					int width=(List->width()-4-20)/3;
 | 
				
			||||||
 | 
					List->setColumnWidth(1,width);
 | 
				
			||||||
 | 
					List->setColumnWidth(2,width);
 | 
				
			||||||
 | 
					List->setColumnWidth(3,width);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CLanguageDlg::OnApplyButtonClicked()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QListViewItem* item=List->selectedItem();
 | 
				
			||||||
 | 
					if(item)OnItemDoubleClicked(item);
 | 
				
			||||||
 | 
					else QMessageBox::information(this,tr("Hinweis"),trUtf8("Es ist keine Übersetzung aufsgewählt."),tr("OK"),0,0,2,1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CLanguageDlg::OnButtonCloseClicked()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					done(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,59 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi   *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef _LANGUAGEDLG_H_
 | 
				
			||||||
 | 
					#define _LANGUAGEDLG_H_
 | 
				
			||||||
 | 
					#include "ui_LanguageDlg.h"
 | 
				
			||||||
 | 
					#include <qpixmap.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CLanguageDlg : public LanguageDlg
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CLanguageDlg(QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CLanguageDlg();
 | 
				
			||||||
 | 
					  CMainWindow* parentwnd;
 | 
				
			||||||
 | 
					  vector<QString> filenames;
 | 
				
			||||||
 | 
					  vector<QListViewItem*> pItems;
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					  virtual void showEvent(QShowEvent *e);
 | 
				
			||||||
 | 
					    virtual void OnItemDoubleClicked(QListViewItem* item);
 | 
				
			||||||
 | 
					    virtual void OnItemRightClick(QListViewItem* item);
 | 
				
			||||||
 | 
					    virtual void OnButtonCloseClicked();
 | 
				
			||||||
 | 
					    virtual void OnApplyButtonClicked();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,206 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "PasswordDlg.h"
 | 
				
			||||||
 | 
					#include <qdir.h>
 | 
				
			||||||
 | 
					#include <qstringlist.h>
 | 
				
			||||||
 | 
					#include <qcheckbox.h>
 | 
				
			||||||
 | 
					#include <qvaluelist.h>
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qcombobox.h>
 | 
				
			||||||
 | 
					#include <qpushbutton.h>
 | 
				
			||||||
 | 
					#include <qfiledialog.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CPasswordDialog::CPasswordDialog(QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: PasswordDlg(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					parentwnd=((CMainWindow*)parentWidget());
 | 
				
			||||||
 | 
					parentwnd->CreateBanner(Banner,parentwnd->Icon_Key32x32,trUtf8("Datenbank öffnen"));
 | 
				
			||||||
 | 
					Label_select=new LinkLabel((QWidget*)groupframe,"Select",trUtf8("Datei manuell wählen..."),410,100);
 | 
				
			||||||
 | 
					connect(Label_select,SIGNAL(clicked()),this,SLOT(OnSelectClicked()));
 | 
				
			||||||
 | 
					///@PlatformSpecific
 | 
				
			||||||
 | 
					QDir media("/media");
 | 
				
			||||||
 | 
					if(media.exists()){
 | 
				
			||||||
 | 
					Paths=media.entryList("*",QDir::Dirs);
 | 
				
			||||||
 | 
					Paths.erase(Paths.begin()); // delete "."
 | 
				
			||||||
 | 
					Paths.erase(Paths.begin()); // delete ".."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i=0;i<Paths.count();i++){
 | 
				
			||||||
 | 
					Paths[i]="/media/"+Paths[i];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Paths.prepend(trUtf8("< keiner >"));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					for(int i=0;i<Paths.count();i++){
 | 
				
			||||||
 | 
					Combo_Dirs->insertItem(0,Paths[i]);
 | 
				
			||||||
 | 
					IsFile.append(false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(!parentwnd->config.ShowPasswords)ChangeEchoMode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CPasswordDialog::~CPasswordDialog()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					delete Label_select;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnComboSelectionChanged(int i)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(i==0){
 | 
				
			||||||
 | 
					keyfile="";
 | 
				
			||||||
 | 
					Edit_Password->setEnabled(true);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					QFile file;
 | 
				
			||||||
 | 
					if(IsFile[i]==true)file.setName(Paths[i]);
 | 
				
			||||||
 | 
					else file.setName(Paths[i]+"/pwsafe.key");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(file.exists()){
 | 
				
			||||||
 | 
					keyfile=file.name();
 | 
				
			||||||
 | 
					if(!CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					Edit_Password->setText("");
 | 
				
			||||||
 | 
					Edit_Password->setDisabled(true);}
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					QMessageBox::warning(this,"Datei nicht gefunden",QString::fromUtf8("Im gewählten Verzeichnis konnte keine Schlüsseldatei gefunden werden.\nStellen Sie sicher, dass der Schlüssel-Datenträger ordnungsgemäß eingehängt (mounted) ist.\nSollte die Schlüsseldatei nicht den Dateinamen 'pwsafe.key' haben, nutzen Sie bitte die manuelle Dateiauswahl."),"OK","","",0,0);
 | 
				
			||||||
 | 
					Edit_Password->setEnabled(true);
 | 
				
			||||||
 | 
					Combo_Dirs->setCurrentItem(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnButtonBrowse()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					///@PlatformSpecific
 | 
				
			||||||
 | 
					QString dir=QFileDialog::getExistingDirectory(QDir::homeDirPath(),NULL,QString::fromUtf8("Verzeichnis wählen"));
 | 
				
			||||||
 | 
					if(dir=="")return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QFile file(dir+"/pwsafe.key");
 | 
				
			||||||
 | 
					if(file.exists()){
 | 
				
			||||||
 | 
					keyfile=dir+"/pwsafe.key";
 | 
				
			||||||
 | 
					Combo_Dirs->insertItem(dir);
 | 
				
			||||||
 | 
					Combo_Dirs->setCurrentItem(Combo_Dirs->count()-1);
 | 
				
			||||||
 | 
					if(!CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					 Edit_Password->setDisabled(true);
 | 
				
			||||||
 | 
					 Edit_Password->setText("");
 | 
				
			||||||
 | 
					 password="";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Paths.append(dir);
 | 
				
			||||||
 | 
					IsFile.append(false);
 | 
				
			||||||
 | 
					return;}
 | 
				
			||||||
 | 
					QMessageBox::warning(this,"Datei nicht gefunden",QString::fromUtf8("Im gewählten Verzeichnis konnte keine Schlüsseldatei gefunden werden.\nStellen Sie sicher, dass der Schlüssel-Datenträger ordnungsgemäß eingehängt (mounted) ist.\nSollte die Schlüsseldatei nicht den Dateinamen 'pwsafe.key' haben, nutzen Sie bitte die manuelle Dateiauswahl."),"OK","","",0,0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnSelectClicked()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(Button_Browse->isEnabled()){
 | 
				
			||||||
 | 
					keyfile=QFileDialog::getOpenFileName(QDir::homeDirPath(),"",this,QString::fromUtf8("Schlüsseldatei öffnen"));
 | 
				
			||||||
 | 
					if(keyfile=="")return;
 | 
				
			||||||
 | 
					Combo_Dirs->insertItem(keyfile);
 | 
				
			||||||
 | 
					Combo_Dirs->setCurrentItem(Combo_Dirs->count()-1);
 | 
				
			||||||
 | 
					if(!CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					 Edit_Password->setDisabled(true);
 | 
				
			||||||
 | 
					 Edit_Password->setText("");
 | 
				
			||||||
 | 
					 password="";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					Paths.append(keyfile);
 | 
				
			||||||
 | 
					IsFile.append(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					canceled=true;
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					canceled=false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(CheckBox_Both->isChecked()){
 | 
				
			||||||
 | 
					 if(password==""){QMessageBox::warning(this,trUtf8("Fehler"),trUtf8("Bitte geben Sie ein Passwort ein.")
 | 
				
			||||||
 | 
					                                      ,trUtf8("OK"),"","",0,0);
 | 
				
			||||||
 | 
								return;}
 | 
				
			||||||
 | 
					 if(keyfile==""){QMessageBox::warning(this,trUtf8("Fehler"),trUtf8("Bitte wählen Sie eine Schlüsseldatei.")
 | 
				
			||||||
 | 
					                                      ,trUtf8("OK"),"","",0,0);
 | 
				
			||||||
 | 
								return;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					 if(password=="" && keyfile==""){QMessageBox::warning(this,trUtf8("Fehler"),trUtf8("Geben Sie bitte ein Passwort ein oder wählen Sie eine Schlüsseldatei.")
 | 
				
			||||||
 | 
					                                      ,trUtf8("OK"),"","",0,0);
 | 
				
			||||||
 | 
								return;}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnPasswordChanged(const QString &txt)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					password=Edit_Password->text();
 | 
				
			||||||
 | 
					if(txt!="" && !(CheckBox_Both->isChecked())){
 | 
				
			||||||
 | 
					Combo_Dirs->setDisabled(true);
 | 
				
			||||||
 | 
					Button_Browse->setDisabled(true);}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					Combo_Dirs->setEnabled(true);
 | 
				
			||||||
 | 
					Button_Browse->setEnabled(true);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::OnCheckBox_BothChanged(int state)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(state==QButton::On){
 | 
				
			||||||
 | 
					Combo_Dirs->setEnabled(true);
 | 
				
			||||||
 | 
					Button_Browse->setEnabled(true);
 | 
				
			||||||
 | 
					Edit_Password->setEnabled(true);}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					Edit_Password->setText("");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPasswordDialog::ChangeEchoMode()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Edit_Password->echoMode()==QLineEdit::Normal){
 | 
				
			||||||
 | 
					Edit_Password->setEchoMode(QLineEdit::Password);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					Edit_Password->setEchoMode(QLineEdit::Normal);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "passworddialog.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,71 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef PASSWORDDIALOG_H
 | 
				
			||||||
 | 
					#define PASSWORDDIALOG_H
 | 
				
			||||||
 | 
					#include "lib/UrlLabel.h"
 | 
				
			||||||
 | 
					#include "ui_PasswordDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CPasswordDialog : public PasswordDlg
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					CMainWindow* parentwnd;
 | 
				
			||||||
 | 
					int NumComboEntries;
 | 
				
			||||||
 | 
					QStringList Paths;
 | 
				
			||||||
 | 
					QValueList<bool> IsFile;
 | 
				
			||||||
 | 
					LinkLabel* Label_select;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString keyfile;
 | 
				
			||||||
 | 
					QString password;
 | 
				
			||||||
 | 
					bool canceled;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CPasswordDialog(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CPasswordDialog();
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    virtual void OnOK();
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					    virtual void OnSelectClicked();
 | 
				
			||||||
 | 
					    virtual void OnButtonBrowse();
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnComboSelectionChanged(int);
 | 
				
			||||||
 | 
					    virtual void OnPasswordChanged(const QString &txt);
 | 
				
			||||||
 | 
					    virtual void OnCheckBox_BothChanged(int state);
 | 
				
			||||||
 | 
					    virtual void ChangeEchoMode();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,236 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <fstream>
 | 
				
			||||||
 | 
					#include <qspinbox.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					#include "PasswordGenDlg.h"
 | 
				
			||||||
 | 
					#include <qradiobutton.h>
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qcheckbox.h>
 | 
				
			||||||
 | 
					#include <qprogressbar.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGenPwDialog::CGenPwDialog(QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: GenPwDlg(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					mainwnd=(CMainWindow*)(((CEditEntryDlg*)parentWidget())->parentWidget());
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Key32x32,QString::fromUtf8("Passwort generieren"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Radio_1->setChecked(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Edit_chars->setDisabled(true);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CGenPwDialog::~CGenPwDialog()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CGenPwDialog::OnRadio1StateChanged(int state)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					switch (state){
 | 
				
			||||||
 | 
					 case QButton::On:
 | 
				
			||||||
 | 
					 Radio_2->setChecked(false);
 | 
				
			||||||
 | 
					 checkBox1->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox2->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox3->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox4->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox5->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox6->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox7->setEnabled(true);
 | 
				
			||||||
 | 
					 checkBox8->setEnabled(true);
 | 
				
			||||||
 | 
					 break;
 | 
				
			||||||
 | 
					 case QButton::Off:
 | 
				
			||||||
 | 
					 if(Radio_2->isChecked()==false)Radio_2->setChecked(true);
 | 
				
			||||||
 | 
					 checkBox1->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox2->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox3->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox4->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox5->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox6->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox7->setDisabled(true);
 | 
				
			||||||
 | 
					 checkBox8->setDisabled(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 break;
 | 
				
			||||||
 | 
					 case QButton::NoChange:
 | 
				
			||||||
 | 
					 break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CGenPwDialog::OnRadio2StateChanged(int state)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					switch (state){
 | 
				
			||||||
 | 
					 case QButton::On:
 | 
				
			||||||
 | 
					 Radio_1->setChecked(false);
 | 
				
			||||||
 | 
					 Edit_chars->setEnabled(true);
 | 
				
			||||||
 | 
					 break;
 | 
				
			||||||
 | 
					 case QButton::Off:
 | 
				
			||||||
 | 
					  if(Radio_1->isChecked()==false)Radio_1->setChecked(true);
 | 
				
			||||||
 | 
					 Edit_chars->setDisabled(true);
 | 
				
			||||||
 | 
					 break;
 | 
				
			||||||
 | 
					 case QButton::NoChange:
 | 
				
			||||||
 | 
					 break;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CGenPwDialog::OnGeneratePw()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					Großbuchstaben 65...90
 | 
				
			||||||
 | 
					Kleinbuchstaben 97...122
 | 
				
			||||||
 | 
					Zahlen 48...57
 | 
				
			||||||
 | 
					Sonderzeichen 33...47;58...64;91...96;123...126
 | 
				
			||||||
 | 
					Minus 45
 | 
				
			||||||
 | 
					Unterstrich 95
 | 
				
			||||||
 | 
					ANSI >127
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int num=0;
 | 
				
			||||||
 | 
					char assoctable[255];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Radio_1->isChecked()){
 | 
				
			||||||
 | 
					if(checkBox1->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,65,90,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox2->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,97,122,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox3->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,48,57,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox4->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,33,47,num);
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,58,64,num);
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,91,96,num);
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,123,126,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox5->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,32,32,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox6->isChecked() && !checkBox4->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,45,45,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox7->isChecked() && !checkBox4->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,95,95,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(checkBox8->isChecked()){
 | 
				
			||||||
 | 
					num+=AddToAssoctable(assoctable,128,255,num);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}else
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QString str=Edit_chars->text();
 | 
				
			||||||
 | 
					int i=0;
 | 
				
			||||||
 | 
					while(str.length()>0){
 | 
				
			||||||
 | 
					assoctable[i]=(char)((QChar)str[0]);
 | 
				
			||||||
 | 
					str.remove(str[0]);
 | 
				
			||||||
 | 
					i++;
 | 
				
			||||||
 | 
					num++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(num==0){
 | 
				
			||||||
 | 
					if(Radio_2->isChecked())QMessageBox::information(this,"Hinweis",QString::fromUtf8("Es wird mindestens ein Zeichen benötigt"),"OK");
 | 
				
			||||||
 | 
					else QMessageBox::information(this,"Hinweis",QString::fromUtf8("Es muss mindestens ein Gruppe von Zeichen gewählt werden"),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					int length=Spin_Num->value();
 | 
				
			||||||
 | 
					char* buffer=new char[length+1];
 | 
				
			||||||
 | 
					buffer[length]=0;
 | 
				
			||||||
 | 
					FILE *dev_random;
 | 
				
			||||||
 | 
					if(Check_strongrandom->isChecked()){
 | 
				
			||||||
 | 
					dev_random = fopen("/dev/random","r");}
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					{dev_random = fopen("/dev/urandom","r");}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (dev_random==NULL){
 | 
				
			||||||
 | 
					QMessageBox::critical(this,"Fehler",QString::fromUtf8("'/dev/random' bzw. '/dev/urandom' konnte nicht zum lesen geöffnet werden."),"OK");
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					unsigned char tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i=0;i<length;i++){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					do{
 | 
				
			||||||
 | 
					fread(&tmp,1,1,dev_random);
 | 
				
			||||||
 | 
					}while(trim(tmp,num)==false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					buffer[i]=assoctable[tmp];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Edit_dest->setText(buffer);
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					fclose(dev_random);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int bits;
 | 
				
			||||||
 | 
					if(checkBox8->isChecked())bits=length*8;
 | 
				
			||||||
 | 
					else bits=length*7;
 | 
				
			||||||
 | 
					Label_Bits->setText(QString::number(bits)+" Bit");
 | 
				
			||||||
 | 
					if(bits>128)bits=128;
 | 
				
			||||||
 | 
					Progress_Quali->setProgress(bits,128);
 | 
				
			||||||
 | 
					Progress_Quali->setPercentageVisible(false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int CGenPwDialog::AddToAssoctable(char* table,int start,int end,int pos){
 | 
				
			||||||
 | 
					for(int i=start;i<=end;i++){
 | 
				
			||||||
 | 
					table[pos]=i;
 | 
				
			||||||
 | 
					pos++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					return (end-start)+1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CGenPwDialog::trim(unsigned char &x, int r){
 | 
				
			||||||
 | 
					if(x<r)return true;
 | 
				
			||||||
 | 
					if(256%r!=0)return false;
 | 
				
			||||||
 | 
					x=x-(x/r)*r;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CGenPwDialog::OnAccept()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					((CEditEntryDlg*)parentWidget())->Edit_Password->setText(Edit_dest->text());
 | 
				
			||||||
 | 
					((CEditEntryDlg*)parentWidget())->Edit_Password_w->setText(Edit_dest->text());
 | 
				
			||||||
 | 
					((CEditEntryDlg*)parentWidget())->ModFlag=true;
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CGenPwDialog::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "genpwdialog.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef GENPWDIALOG_H
 | 
				
			||||||
 | 
					#define GENPWDIALOG_H
 | 
				
			||||||
 | 
					#include "ui_PasswordGenDlg.h"
 | 
				
			||||||
 | 
					#include "EditEntryDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CGenPwDialog : public GenPwDlg
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					int AddToAssoctable(char* table,int start,int end,int pos);
 | 
				
			||||||
 | 
					bool trim(unsigned char &value,int range);
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CGenPwDialog(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CGenPwDialog();
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					CMainWindow* mainwnd;
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnGeneratePw();
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnRadio2StateChanged(int);
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnRadio1StateChanged(int);
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					    virtual void OnAccept();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,97 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					#include "SearchDlg.h"
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qcheckbox.h>
 | 
				
			||||||
 | 
					#include <qregexp.h>
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSearchDlg::CSearchDlg(CGroup* pGroup,QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: Search_Dlg(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					parentwnd=(CMainWindow*)parent;
 | 
				
			||||||
 | 
					parentwnd->CreateBanner(Banner,parentwnd->Icon_Search32x32,tr("Suchen"));
 | 
				
			||||||
 | 
					group=pGroup;
 | 
				
			||||||
 | 
					pw=parentwnd->db;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					checkBox_Cs->setChecked(parentwnd->config.SearchOptions[0]);
 | 
				
			||||||
 | 
					checkBox_regExp->setChecked(parentwnd->config.SearchOptions[1]);
 | 
				
			||||||
 | 
					checkBox_Title->setChecked(parentwnd->config.SearchOptions[2]);
 | 
				
			||||||
 | 
					checkBox_Username->setChecked(parentwnd->config.SearchOptions[3]);
 | 
				
			||||||
 | 
					checkBox_Password->setChecked(parentwnd->config.SearchOptions[4]);
 | 
				
			||||||
 | 
					checkBox_Comment->setChecked(parentwnd->config.SearchOptions[5]);
 | 
				
			||||||
 | 
					checkBox_URL->setChecked(parentwnd->config.SearchOptions[6]);
 | 
				
			||||||
 | 
					checkBox_Attachment->setChecked(parentwnd->config.SearchOptions[7]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSearchDlg::~CSearchDlg()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[0]=checkBox_Cs->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[1]=checkBox_regExp->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[2]=checkBox_Title->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[3]=checkBox_Username->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[4]=checkBox_Password->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[5]=checkBox_Comment->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[6]=checkBox_URL->isChecked();
 | 
				
			||||||
 | 
					parentwnd->config.SearchOptions[7]=checkBox_Attachment->isChecked();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSearchDlg::OnButtonClose()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					done(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSearchDlg::OnButtonSearch()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					txt=Edit_Search->text();
 | 
				
			||||||
 | 
					regexp=checkBox_regExp->isChecked();
 | 
				
			||||||
 | 
					if(txt==""){
 | 
				
			||||||
 | 
					QMessageBox::information(this,trUtf8("Hinweis"),trUtf8("Bitte geben Sie einen Suchbegriff ein."),"OK",0,0);
 | 
				
			||||||
 | 
					return;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for(int i=0;i<pw->Entries.size();i++){
 | 
				
			||||||
 | 
					 if(group){if(pw->Entries[i].GroupID != group->ID)continue;}
 | 
				
			||||||
 | 
					 bool hit=false;
 | 
				
			||||||
 | 
					 if(checkBox_Title->isChecked())	hit=hit||search(pw->Entries[i].Title);
 | 
				
			||||||
 | 
					 if(checkBox_Username->isChecked())	hit=hit||search(pw->Entries[i].UserName);
 | 
				
			||||||
 | 
					 if(checkBox_URL->isChecked())		hit=hit||search(pw->Entries[i].URL);
 | 
				
			||||||
 | 
					 if(checkBox_Comment->isChecked())	hit=hit||search(pw->Entries[i].Additional);
 | 
				
			||||||
 | 
					 if(checkBox_Attachment->isChecked())	hit=hit||search(pw->Entries[i].BinaryDesc);
 | 
				
			||||||
 | 
					 if(checkBox_Password->isChecked())	hit=hit||search(pw->Entries[i].Password.getString());
 | 
				
			||||||
 | 
					 pw->Entries[i].Password.delRef();
 | 
				
			||||||
 | 
					 if(hit)hits.push_back(&pw->Entries[i]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					done(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					bool CSearchDlg::search(QString& str){
 | 
				
			||||||
 | 
					if(regexp){
 | 
				
			||||||
 | 
					 QRegExp exp(txt,checkBox_Cs->isChecked());
 | 
				
			||||||
 | 
					 if(str.contains(exp)==0)return false;}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					 if(str.contains(txt,checkBox_Cs->isChecked())==0)return false;}
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef SEARCHDLG_H
 | 
				
			||||||
 | 
					#define SEARCHDLG_H
 | 
				
			||||||
 | 
					#include "ui_SearchDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CSearchDlg : public Search_Dlg
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CSearchDlg(CGroup* pGroup=NULL,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CSearchDlg();
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnButtonClose();
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnButtonSearch();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					  CMainWindow* parentwnd;
 | 
				
			||||||
 | 
					  CGroup* group;
 | 
				
			||||||
 | 
					  PwDatabase* pw;
 | 
				
			||||||
 | 
					  QString txt;
 | 
				
			||||||
 | 
					  bool regexp;
 | 
				
			||||||
 | 
					  bool search(QString&);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:   
 | 
				
			||||||
 | 
					  vector<CEntry*> hits;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,125 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include <qpixmap.h>
 | 
				
			||||||
 | 
					#include <qcheckbox.h>
 | 
				
			||||||
 | 
					#include <qspinbox.h>
 | 
				
			||||||
 | 
					#include <qcolordialog.h>
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include "SettingsDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSettingsDlg::CSettingsDlg(QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: SettingsDialog(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					pw=((CMainWindow*)parentWidget())->db;
 | 
				
			||||||
 | 
					mainwnd=((CMainWindow*)parentWidget());
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Settings32x32,trUtf8("Einstellungen"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CheckBox_OpenLast->setChecked(mainwnd->config.OpenLast);
 | 
				
			||||||
 | 
					SpinBox_ClipboardTime->setValue(mainwnd->config.ClipboardTimeOut);
 | 
				
			||||||
 | 
					pixmTextColor->setPixmap(*(new QPixmap(pixmTextColor->width(),pixmTextColor->height())));
 | 
				
			||||||
 | 
					pixmTextColor->pixmap()->fill(mainwnd->config.BannerTextColor);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pixmColor1->setPixmap(*(new QPixmap(pixmColor1->width(),pixmColor1->height())));
 | 
				
			||||||
 | 
					pixmColor1->pixmap()->fill(mainwnd->config.BannerColor1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pixmColor2->setPixmap(*(new QPixmap(pixmColor2->width(),pixmColor2->height())));
 | 
				
			||||||
 | 
					pixmColor2->pixmap()->fill(mainwnd->config.BannerColor2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					color1=mainwnd->config.BannerColor1;
 | 
				
			||||||
 | 
					color2=mainwnd->config.BannerColor2;
 | 
				
			||||||
 | 
					textcolor=mainwnd->config.BannerTextColor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CheckBox_ShowPasswords->setChecked(mainwnd->config.ShowPasswords);
 | 
				
			||||||
 | 
					Edit_BrowserCmd->setText(mainwnd->config.OpenUrlCommand);
 | 
				
			||||||
 | 
					CheckBox_ExpandGroupTree->setChecked(mainwnd->config.ExpandGroupTree);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSettingsDlg::~CSettingsDlg()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSettingsDlg::OnOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					mainwnd->config.OpenLast=CheckBox_OpenLast->isChecked();
 | 
				
			||||||
 | 
					mainwnd->config.ClipboardTimeOut=SpinBox_ClipboardTime->value();
 | 
				
			||||||
 | 
					mainwnd->config.BannerColor1=color1;
 | 
				
			||||||
 | 
					mainwnd->config.BannerColor2=color2;
 | 
				
			||||||
 | 
					mainwnd->config.BannerTextColor=textcolor;
 | 
				
			||||||
 | 
					mainwnd->config.ShowPasswords=CheckBox_ShowPasswords->isChecked();
 | 
				
			||||||
 | 
					mainwnd->config.OpenUrlCommand=Edit_BrowserCmd->text();
 | 
				
			||||||
 | 
					mainwnd->config.ExpandGroupTree=CheckBox_ExpandGroupTree->isChecked();
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSettingsDlg::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					close();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSettingsDlg::OnTextColor()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QColor c=QColorDialog::getColor(textcolor,this);
 | 
				
			||||||
 | 
					if(c.isValid()){
 | 
				
			||||||
 | 
					textcolor=c;
 | 
				
			||||||
 | 
					QPixmap *px=new QPixmap(pixmTextColor->width(),pixmTextColor->height());
 | 
				
			||||||
 | 
					px->fill(c);
 | 
				
			||||||
 | 
					pixmTextColor->clear();
 | 
				
			||||||
 | 
					pixmTextColor->setPixmap(*px);
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Settings32x32,trUtf8("Einstellungen"),color1,color2,textcolor);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSettingsDlg::OnColor2()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QColor c=QColorDialog::getColor(color2,this);
 | 
				
			||||||
 | 
					if(c.isValid()){
 | 
				
			||||||
 | 
					color2=c;
 | 
				
			||||||
 | 
					QPixmap *px=new QPixmap(pixmColor2->width(),pixmColor2->height());
 | 
				
			||||||
 | 
					px->fill(c);
 | 
				
			||||||
 | 
					pixmColor2->clear();
 | 
				
			||||||
 | 
					pixmColor2->setPixmap(*px);
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Settings32x32,trUtf8("Einstellungen"),color1,color2,textcolor);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSettingsDlg::OnColor1()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					QColor c=QColorDialog::getColor(color1,this);
 | 
				
			||||||
 | 
					if(c.isValid()){
 | 
				
			||||||
 | 
					color1=c;
 | 
				
			||||||
 | 
					QPixmap *px=new QPixmap(pixmColor1->width(),pixmColor1->height());
 | 
				
			||||||
 | 
					px->fill(c);
 | 
				
			||||||
 | 
					pixmColor1->clear();
 | 
				
			||||||
 | 
					pixmColor1->setPixmap(*px);
 | 
				
			||||||
 | 
					mainwnd->CreateBanner(Banner,mainwnd->Icon_Settings32x32,trUtf8("Einstellungen"),color1,color2,textcolor);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//#include "settingsdlg.moc"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,60 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#ifndef SETTINGSDLG_H
 | 
				
			||||||
 | 
					#define SETTINGSDLG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ui_SettingsDlg.h"
 | 
				
			||||||
 | 
					#include <qcolor.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CSettingsDlg : public SettingsDialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CMainWindow* mainwnd;
 | 
				
			||||||
 | 
					  PwDatabase* pw;
 | 
				
			||||||
 | 
					  CSettingsDlg(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CSettingsDlg();
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnOK();
 | 
				
			||||||
 | 
					    virtual void OnTextColor();
 | 
				
			||||||
 | 
					    virtual void OnColor2();
 | 
				
			||||||
 | 
					    virtual void OnColor1();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					 QColor color1,color2,textcolor;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,58 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "SimplePasswordDlg.h"
 | 
				
			||||||
 | 
					#include <qlineedit.h>
 | 
				
			||||||
 | 
					#include <qpushbutton.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSimplePasswordDialog::CSimplePasswordDialog(bool HidePw,QWidget* parent, const char* name, bool modal, WFlags fl)
 | 
				
			||||||
 | 
					: SimplePasswordDialog(parent,name, modal,fl)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(HidePw)Button_HidePassword->toggle();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CSimplePasswordDialog::~CSimplePasswordDialog()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSimplePasswordDialog::OnCancel()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					done(0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSimplePasswordDialog::OnOK()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					password=EditPassword->text();
 | 
				
			||||||
 | 
					done(1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CSimplePasswordDialog::OnHidePasswordToggled(bool state)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					if(state)EditPassword->setEchoMode(QLineEdit::Password);
 | 
				
			||||||
 | 
					else EditPassword->setEchoMode(QLineEdit::Normal);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*$SPECIALIZATION$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,54 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _SIMPLEPASSWORDDIALOG_H
 | 
				
			||||||
 | 
					#define _SIMPLEPASSWORDDIALOG_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "ui_SimplePasswordDlg.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CSimplePasswordDialog : public SimplePasswordDialog
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  CSimplePasswordDialog(bool HidePw,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CSimplePasswordDialog();
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					  /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					public: QString password;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnCancel();
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnOK();
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    virtual void OnHidePasswordToggled(bool state);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					Mit QMake 4.x bekommen die vom uic erstellten Header
 | 
				
			||||||
 | 
					automatisch den Präfix ui_* - also vor der Portierung entfernen! 
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,196 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>AboutDlg</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>AboutDlg</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>419</width>
 | 
				
			||||||
 | 
					            <height>211</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>0</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>0</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>419</width>
 | 
				
			||||||
 | 
					            <height>211</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>211</width>
 | 
				
			||||||
 | 
					            <height>32767</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Über...</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="Line">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>line1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>120</y>
 | 
				
			||||||
 | 
					                <width>400</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShape">
 | 
				
			||||||
 | 
					            <enum>HLine</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShadow">
 | 
				
			||||||
 | 
					            <enum>Sunken</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="orientation">
 | 
				
			||||||
 | 
					            <enum>Horizontal</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label3</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>140</y>
 | 
				
			||||||
 | 
					                <width>60</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Homepage:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>420</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label4</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>160</y>
 | 
				
			||||||
 | 
					                <width>54</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>EMail:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonClose</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>326</x>
 | 
				
			||||||
 | 
					                <y>183</y>
 | 
				
			||||||
 | 
					                <width>80</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Schlie&ßen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+ß</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label2</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>100</y>
 | 
				
			||||||
 | 
					                <width>400</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Keepass/L steht unter der General Public License.</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>80</y>
 | 
				
			||||||
 | 
					                <width>240</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Copyright (c) Tarek Saidi 2005</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label0</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>220</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Keepass/L  Version %1</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonClose</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>AboutDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnClose()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnClose()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,345 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>ChangeKeyDialog</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>ChangeKeyDialog</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>560</width>
 | 
				
			||||||
 | 
					            <height>270</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Hauptschlüssel ändern</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>560</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>56</y>
 | 
				
			||||||
 | 
					                <width>450</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShape">
 | 
				
			||||||
 | 
					            <enum>NoFrame</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShadow">
 | 
				
			||||||
 | 
					            <enum>Plain</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Geben Sie das Passwort ein und/oder wählen Sie eine Schlüsseldatei.</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>457</x>
 | 
				
			||||||
 | 
					                <y>240</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abb&rechen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+R</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>360</x>
 | 
				
			||||||
 | 
					                <y>240</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QGroupBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>groupBox1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>80</y>
 | 
				
			||||||
 | 
					                <width>540</width>
 | 
				
			||||||
 | 
					                <height>150</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="title">
 | 
				
			||||||
 | 
					            <string>Schlüssel</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel3</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>90</y>
 | 
				
			||||||
 | 
					                    <width>177</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Schlüsseldatei oder Datenträger:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>180</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Passwort:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel1_2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>30</x>
 | 
				
			||||||
 | 
					                    <y>118</y>
 | 
				
			||||||
 | 
					                    <width>300</width>
 | 
				
			||||||
 | 
					                    <height>18</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Passwort <b>und</b> Schlüsseldatei verwenden</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QComboBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Combo_Dirs</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>201</x>
 | 
				
			||||||
 | 
					                    <y>90</y>
 | 
				
			||||||
 | 
					                    <width>240</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QPushButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Button_Browse</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>450</x>
 | 
				
			||||||
 | 
					                    <y>90</y>
 | 
				
			||||||
 | 
					                    <width>80</width>
 | 
				
			||||||
 | 
					                    <height>22</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>W&ählen...</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+ä</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>CheckBox_Both</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>120</y>
 | 
				
			||||||
 | 
					                    <width>16</width>
 | 
				
			||||||
 | 
					                    <height>16</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string></string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLineEdit">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Edit_Password</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>200</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>310</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLineEdit">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Edit_Password_2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>200</x>
 | 
				
			||||||
 | 
					                    <y>60</y>
 | 
				
			||||||
 | 
					                    <width>310</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QPushButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>ButtonChangeEchoMode</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>510</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>20</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>...</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel1_3</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>60</y>
 | 
				
			||||||
 | 
					                    <width>180</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Passwortwiederholung:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Button_Browse</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnBrowse()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password</sender>
 | 
				
			||||||
 | 
					        <signal>textChanged(const QString&)</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnPasswordChanged(const QString&)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password_2</sender>
 | 
				
			||||||
 | 
					        <signal>textChanged(const QString&)</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnPassword2Changed(const QString&)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Combo_Dirs</sender>
 | 
				
			||||||
 | 
					        <signal>activated(int)</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnComboChanged(int)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>CheckBox_Both</sender>
 | 
				
			||||||
 | 
					        <signal>stateChanged(int)</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCheckBoxChanged(int)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonChangeEchoMode</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>ChangeKeyDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>ChangeEchoMode()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Password</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Password_2</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Combo_Dirs</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Button_Browse</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>CheckBox_Both</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOK</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonCancel</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonChangeEchoMode</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    <slot>OnBrowse()</slot>
 | 
				
			||||||
 | 
					    <slot>OnSelect()</slot>
 | 
				
			||||||
 | 
					    <slot>OnPasswordChanged(const QString& str)</slot>
 | 
				
			||||||
 | 
					    <slot>OnPassword2Changed(const QString& str)</slot>
 | 
				
			||||||
 | 
					    <slot>OnCheckBoxChanged(int i)</slot>
 | 
				
			||||||
 | 
					    <slot>OnComboChanged(int i)</slot>
 | 
				
			||||||
 | 
					    <slot>ChangeEchoMode()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,220 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>dbsettingdlg_base</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>dbsettingdlg_base</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>440</width>
 | 
				
			||||||
 | 
					            <height>213</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>0</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>0</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>440</width>
 | 
				
			||||||
 | 
					            <height>213</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>440</width>
 | 
				
			||||||
 | 
					            <height>213</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Datenbankeinstellungen</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QGroupBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>groupBox1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>420</width>
 | 
				
			||||||
 | 
					                <height>110</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="title">
 | 
				
			||||||
 | 
					            <string>Verschlüsselung</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>90</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Algorithmus:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QPushButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>pushButton1</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>390</x>
 | 
				
			||||||
 | 
					                    <y>0</y>
 | 
				
			||||||
 | 
					                    <width>20</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>?</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string></string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QComboBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>ComboAlgo</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>109</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>300</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLineEdit">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>EditRounds</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>180</x>
 | 
				
			||||||
 | 
					                    <y>70</y>
 | 
				
			||||||
 | 
					                    <width>230</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel3</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>70</y>
 | 
				
			||||||
 | 
					                    <width>150</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Verschlüsselungsrunden:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>440</width>
 | 
				
			||||||
 | 
					                <height>51</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>210</x>
 | 
				
			||||||
 | 
					                <y>180</y>
 | 
				
			||||||
 | 
					                <width>102</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>320</x>
 | 
				
			||||||
 | 
					                <y>180</y>
 | 
				
			||||||
 | 
					                <width>102</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+C</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>dbsettingdlg_base</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>dbsettingdlg_base</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>ComboAlgo</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>EditRounds</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOK</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonCancel</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>pushButton1</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,712 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>EditEntryDialog</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>EditEntryDialog</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>493</width>
 | 
				
			||||||
 | 
					            <height>526</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>1</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>1</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>493</width>
 | 
				
			||||||
 | 
					            <height>526</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>493</width>
 | 
				
			||||||
 | 
					            <height>526</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Eintrag bearbeiten</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="modal">
 | 
				
			||||||
 | 
					        <bool>true</bool>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Title</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>90</y>
 | 
				
			||||||
 | 
					                <width>370</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Expire_Time</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>220</x>
 | 
				
			||||||
 | 
					                <y>410</y>
 | 
				
			||||||
 | 
					                <width>260</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label_Bits</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>400</x>
 | 
				
			||||||
 | 
					                <y>228</y>
 | 
				
			||||||
 | 
					                <width>44</width>
 | 
				
			||||||
 | 
					                <height>14</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>120 Bits</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonDeleteAttachment</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>450</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>31</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string></string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonGenPw</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>450</x>
 | 
				
			||||||
 | 
					                <y>200</y>
 | 
				
			||||||
 | 
					                <width>31</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Ge&n.</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Password_w</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>200</y>
 | 
				
			||||||
 | 
					                <width>330</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QProgressBar">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Progress_Quali</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="enabled">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>226</y>
 | 
				
			||||||
 | 
					                <width>280</width>
 | 
				
			||||||
 | 
					                <height>22</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="progress">
 | 
				
			||||||
 | 
					            <number>50</number>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_UserName</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>120</y>
 | 
				
			||||||
 | 
					                <width>370</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Attachment</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="enabled">
 | 
				
			||||||
 | 
					            <bool>false</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>280</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Password</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>180</y>
 | 
				
			||||||
 | 
					                <width>330</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>400</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>27</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Icon:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonEchoMode</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>450</x>
 | 
				
			||||||
 | 
					                <y>180</y>
 | 
				
			||||||
 | 
					                <width>31</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>...</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="flat">
 | 
				
			||||||
 | 
					            <bool>false</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonSaveAttachment</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>420</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>31</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string></string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image1</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOpenAttachment</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>390</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>30</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string></string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image2</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QComboBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Combo_Group</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>220</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QComboBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Combo_IconPicker</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>431</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>50</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel5</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>120</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Benutzername:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel8</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>200</y>
 | 
				
			||||||
 | 
					                <width>97</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Passwort Wdhlg.:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel4</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>90</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Titel:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel7</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>150</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>URL:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel6</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>180</y>
 | 
				
			||||||
 | 
					                <width>100</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Passwort:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel9</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>225</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Qualität:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel10</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>250</y>
 | 
				
			||||||
 | 
					                <width>100</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Kommentar:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Expire_Date</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>410</y>
 | 
				
			||||||
 | 
					                <width>110</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="maxLength">
 | 
				
			||||||
 | 
					            <number>10</number>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel11</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>410</y>
 | 
				
			||||||
 | 
					                <width>100</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>gültig bis:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel12</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Anhang:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_URL</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>150</y>
 | 
				
			||||||
 | 
					                <width>370</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel3</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Gruppe:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>493</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="sizePolicy">
 | 
				
			||||||
 | 
					            <sizepolicy>
 | 
				
			||||||
 | 
					                <hsizetype>7</hsizetype>
 | 
				
			||||||
 | 
					                <vsizetype>5</vsizetype>
 | 
				
			||||||
 | 
					                <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					                <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					            </sizepolicy>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="Line">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>line1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>476</y>
 | 
				
			||||||
 | 
					                <width>490</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShape">
 | 
				
			||||||
 | 
					            <enum>HLine</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShadow">
 | 
				
			||||||
 | 
					            <enum>Sunken</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="orientation">
 | 
				
			||||||
 | 
					            <enum>Horizontal</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label_AttachmentSize</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>461</y>
 | 
				
			||||||
 | 
					                <width>120</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>5,30 MB</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>380</x>
 | 
				
			||||||
 | 
					                <y>497</y>
 | 
				
			||||||
 | 
					                <width>104</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+C</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>270</x>
 | 
				
			||||||
 | 
					                <y>497</y>
 | 
				
			||||||
 | 
					                <width>103</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QTextEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Comment</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>111</x>
 | 
				
			||||||
 | 
					                <y>250</y>
 | 
				
			||||||
 | 
					                <width>370</width>
 | 
				
			||||||
 | 
					                <height>151</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="PNG" length="219">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff61000000a249444154388da553c10d8440081cece03ad0a74fb7246bf35ab00bf79e57c69530be301c82c62c09c926300303ac90448b754d684b50a5b04a79dcce41f0c5ef20ba02f8b8f819684261950c6c63a71968d0574a894986be61e2829efeed3d2550e0868933108249e66bb412862c2993a0952339b7123cf88ee44f82b6ad37e1b733e285b70cf11d58cdd10df8229ad379d08acfd5c85058c57678bac4a7d6fc1b77b26fedbde105cdd30000000049454e44ae426082</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					    <image name="image1">
 | 
				
			||||||
 | 
					        <data format="PNG" length="441">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000018049444154388d8d933d4b034110869f88c51e58ec818507165e619172c5346727dad8fa135269fe81a412ff820a622c84945ac6c6fa2c2eb8a5a58d7081087b85982902671192dce5fc7aab6566e7e19d99dd5a9ee714757e715e0ab8cce16b1ff7ee00f0577d5ac7adda34bf5cbcdcbdede6bd871eca5368fd4ab46d0856c1345e01b009f41e2d403e859400006b414ae7c800a6108dc0804d62dcd0e13237cb2c2d02aa8aca2c80f1fc5872202288d4c1447f73ffef602eed6fe1ad78a55865064abd80551317169e89b109c47d4b96851568053048039a9796413a98ad4e440008d6e5f716642c8c3e46d804d2b77456a8b59eb8f3d4df0ebc156f5658172112c1c8135bc021d516be1d625384589ee86001b0953dfe00983e90de6648b3714df7ea93ddfb3bccd11cb0d846750b9ee2604fd36c00ec40667197d0c1e0866eb2c6e55f0000f42dcfdc60fb8638310cd60394a708b526dc08699fb4bfff4c003212ba43cd7d7a80f635c17e40a875a9a8a8dae2773e3b3dcba7d89f8a8afa0278938fbf2fda853f0000000049454e44ae426082</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					    <image name="image2">
 | 
				
			||||||
 | 
					        <data format="PNG" length="290">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff61000000e949444154388da593416ec32010451f56b3e87140cd26d741e2465115247a9c6c9232c7e9a28be902db01ecda51fb25160cff7ffe8cc0a82affc14bbdc9d1356e2e64b3eba0aaa82a9f17ab3dc61a5bcba82a393a752103a9b3f7e4e8562f9ed2552df4e2522bc62d7274a4e0d4c76cda19c8196e3dfdbc9ac0be410a461f0642111f2dce8e69bebfe0f0ba544b02eb91bba95bb896deece9d1ce61f5f2990bd50c32f21b7b810c20c56498ab37e0f8845ac021c8fb073e6a3b44871d49d735699b60c4d09cd8d3ae784e3bc24c7fa17fc65b903bf8581e92a93f530acf994ce285c15f30ec53b6f103005182147f92e4240000000049454e44ae426082</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonEchoMode</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>ChangeEchoMode()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password</sender>
 | 
				
			||||||
 | 
					        <signal>textChanged(const QString&)</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnPasswordTextChanged(const QString&)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password_w</sender>
 | 
				
			||||||
 | 
					        <signal>textChanged(const QString&)</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnPasswordwTextChanged(const QString&)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password_w</sender>
 | 
				
			||||||
 | 
					        <signal>lostFocus()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnPasswordwLostFocus()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Expire_Date</sender>
 | 
				
			||||||
 | 
					        <signal>lostFocus()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnExpDateLostFocus()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Expire_Time</sender>
 | 
				
			||||||
 | 
					        <signal>lostFocus()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnExpTimeLostFocus()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOpenAttachment</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnNewAttachment()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonSaveAttachment</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnSaveAttachment()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonDeleteAttachment</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnDeleteAttachment()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonGenPw</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonGenPw()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditEntryDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>Combo_Group</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Combo_IconPicker</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Title</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_UserName</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_URL</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Password</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Password_w</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Comment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Expire_Date</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Expire_Time</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Attachment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOpenAttachment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonSaveAttachment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonDeleteAttachment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonEchoMode</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonGenPw</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnButtonOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnButtonCancel()</slot>
 | 
				
			||||||
 | 
					    <slot>ChangeEchoMode()</slot>
 | 
				
			||||||
 | 
					    <slot>OnPasswordTextChanged(const QString&)</slot>
 | 
				
			||||||
 | 
					    <slot>OnPasswordwTextChanged(const QString&)</slot>
 | 
				
			||||||
 | 
					    <slot>OnPasswordwLostFocus()</slot>
 | 
				
			||||||
 | 
					    <slot>OnExpDateLostFocus()</slot>
 | 
				
			||||||
 | 
					    <slot>OnExpTimeLostFocus()</slot>
 | 
				
			||||||
 | 
					    <slot>OnNewAttachment()</slot>
 | 
				
			||||||
 | 
					    <slot>OnSaveAttachment()</slot>
 | 
				
			||||||
 | 
					    <slot>OnDeleteAttachment()</slot>
 | 
				
			||||||
 | 
					    <slot>OnButtonGenPw()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,174 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>EditGroupDialog</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>EditGroupDialog</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>302</width>
 | 
				
			||||||
 | 
					            <height>105</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>200</width>
 | 
				
			||||||
 | 
					            <height>105</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>302</width>
 | 
				
			||||||
 | 
					            <height>100</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Gruppeneigenschaften</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="Line">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>line1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>62</y>
 | 
				
			||||||
 | 
					                <width>290</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShape">
 | 
				
			||||||
 | 
					            <enum>HLine</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShadow">
 | 
				
			||||||
 | 
					            <enum>Sunken</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="orientation">
 | 
				
			||||||
 | 
					            <enum>Horizontal</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>EditTitle</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>70</x>
 | 
				
			||||||
 | 
					                <y>10</y>
 | 
				
			||||||
 | 
					                <width>230</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>10</y>
 | 
				
			||||||
 | 
					                <width>27</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Titel:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label2</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>40</y>
 | 
				
			||||||
 | 
					                <width>43</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Symbol:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QComboBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ComboIconPicker</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>70</x>
 | 
				
			||||||
 | 
					                <y>40</y>
 | 
				
			||||||
 | 
					                <width>50</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>226</x>
 | 
				
			||||||
 | 
					                <y>80</y>
 | 
				
			||||||
 | 
					                <width>70</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+C</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>147</x>
 | 
				
			||||||
 | 
					                <y>80</y>
 | 
				
			||||||
 | 
					                <width>70</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditGroupDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>EditGroupDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>EditTitle</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ComboIconPicker</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOK</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonCancel</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,215 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>LanguageDlg</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>LanguageDlg</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>500</width>
 | 
				
			||||||
 | 
					            <height>252</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>0</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>0</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>500</width>
 | 
				
			||||||
 | 
					            <height>252</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>500</width>
 | 
				
			||||||
 | 
					            <height>252</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Keepass</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizeGripEnabled">
 | 
				
			||||||
 | 
					        <bool>false</bool>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>500</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonClose</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>407</x>
 | 
				
			||||||
 | 
					                <y>220</y>
 | 
				
			||||||
 | 
					                <width>80</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Schlie&ßen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+ß</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QListView">
 | 
				
			||||||
 | 
					        <column>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>*</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="clickable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="resizable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </column>
 | 
				
			||||||
 | 
					        <column>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Sprache</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="clickable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="resizable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </column>
 | 
				
			||||||
 | 
					        <column>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Version</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="clickable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="resizable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </column>
 | 
				
			||||||
 | 
					        <column>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Autor</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="clickable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="resizable">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </column>
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>List</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>480</width>
 | 
				
			||||||
 | 
					                <height>150</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="allColumnsShowFocus">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="showSortIndicator">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="resizeMode">
 | 
				
			||||||
 | 
					            <enum>NoColumn</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonApply</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>20</x>
 | 
				
			||||||
 | 
					                <y>220</y>
 | 
				
			||||||
 | 
					                <width>80</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Fes&tlegen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+T</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="toolTip" stdset="0">
 | 
				
			||||||
 | 
					            <string></string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="whatsThis" stdset="0">
 | 
				
			||||||
 | 
					            <string>Legt die aktuell markierte Sprache
 | 
				
			||||||
 | 
					als Übersetzung für Keepass fest.</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>List</sender>
 | 
				
			||||||
 | 
					        <signal>doubleClicked(QListViewItem*)</signal>
 | 
				
			||||||
 | 
					        <receiver>LanguageDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnItemDoubleClicked(QListViewItem*)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>List</sender>
 | 
				
			||||||
 | 
					        <signal>rightButtonClicked(QListViewItem*,const QPoint&,int)</signal>
 | 
				
			||||||
 | 
					        <receiver>LanguageDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnItemRightClick(QListViewItem*,const QPoint&)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonApply</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>LanguageDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnApplyButtonClicked()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonClose</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>LanguageDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonCloseClicked()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>List</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonApply</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonClose</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnItemRightClick(QListViewItem* item, const QPoint& p)</slot>
 | 
				
			||||||
 | 
					    <slot>OnItemDoubleClicked(QListViewItem* item)</slot>
 | 
				
			||||||
 | 
					    <slot>OnApplyButtonClicked()</slot>
 | 
				
			||||||
 | 
					    <slot>OnButtonCloseClicked()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,328 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>PasswordDlg</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>PasswordDlg</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>562</width>
 | 
				
			||||||
 | 
					            <height>250</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>1</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>1</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>562</width>
 | 
				
			||||||
 | 
					            <height>250</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>562</width>
 | 
				
			||||||
 | 
					            <height>250</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Datenbank öffnen</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizeGripEnabled">
 | 
				
			||||||
 | 
					        <bool>false</bool>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>56</y>
 | 
				
			||||||
 | 
					                <width>450</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Geben Sie das Passwort ein oder wählen Sie eine Schlüsseldatei.</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>562</width>
 | 
				
			||||||
 | 
					                <height>51</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>460</x>
 | 
				
			||||||
 | 
					                <y>220</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>360</x>
 | 
				
			||||||
 | 
					                <y>220</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QGroupBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>groupframe</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>80</y>
 | 
				
			||||||
 | 
					                <width>540</width>
 | 
				
			||||||
 | 
					                <height>130</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="title">
 | 
				
			||||||
 | 
					            <string>Schlüssel</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <widget class="QPushButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>ButtonChangeEchoMode</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>510</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>20</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>...</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QPushButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Button_Browse</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>450</x>
 | 
				
			||||||
 | 
					                    <y>70</y>
 | 
				
			||||||
 | 
					                    <width>80</width>
 | 
				
			||||||
 | 
					                    <height>22</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>W&ählen...</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+ä</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QComboBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Combo_Dirs</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>201</x>
 | 
				
			||||||
 | 
					                    <y>70</y>
 | 
				
			||||||
 | 
					                    <width>240</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>180</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Passwort:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel3</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>70</y>
 | 
				
			||||||
 | 
					                    <width>180</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Schlüsseldatei oder Datenträger:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>CheckBox_Both</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>100</y>
 | 
				
			||||||
 | 
					                    <width>16</width>
 | 
				
			||||||
 | 
					                    <height>16</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string></string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLineEdit">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Edit_Password</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>200</x>
 | 
				
			||||||
 | 
					                    <y>30</y>
 | 
				
			||||||
 | 
					                    <width>310</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel1_2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>30</x>
 | 
				
			||||||
 | 
					                    <y>98</y>
 | 
				
			||||||
 | 
					                    <width>300</width>
 | 
				
			||||||
 | 
					                    <height>18</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Passwort <b>und</b> Schlüsseldatei verwenden</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Combo_Dirs</sender>
 | 
				
			||||||
 | 
					        <signal>activated(int)</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnComboSelectionChanged(int)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Button_Browse</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonBrowse()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password</sender>
 | 
				
			||||||
 | 
					        <signal>textChanged(const QString&)</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnPasswordChanged(const QString&)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>CheckBox_Both</sender>
 | 
				
			||||||
 | 
					        <signal>stateChanged(int)</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCheckBox_BothChanged(int)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonChangeEchoMode</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>ChangeEchoMode()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Edit_Password</sender>
 | 
				
			||||||
 | 
					        <signal>returnPressed()</signal>
 | 
				
			||||||
 | 
					        <receiver>PasswordDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Password</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Combo_Dirs</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Button_Browse</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>CheckBox_Both</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOK</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonCancel</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonChangeEchoMode</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnComboSelectionChanged(int)</slot>
 | 
				
			||||||
 | 
					    <slot>OnButtonBrowse()</slot>
 | 
				
			||||||
 | 
					    <slot>OnSelectClicked()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    <slot>OnPasswordChanged(const QString &txt)</slot>
 | 
				
			||||||
 | 
					    <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCheckBox_BothChanged(int state)</slot>
 | 
				
			||||||
 | 
					    <slot>ChangeEchoMode()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,551 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>GenPwDlg</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>GenPwDlg</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>460</width>
 | 
				
			||||||
 | 
					            <height>470</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>0</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>0</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>460</width>
 | 
				
			||||||
 | 
					            <height>470</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>460</width>
 | 
				
			||||||
 | 
					            <height>470</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Passwort Generator</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QProgressBar">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Progress_Quali</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>130</x>
 | 
				
			||||||
 | 
					                <y>400</y>
 | 
				
			||||||
 | 
					                <width>180</width>
 | 
				
			||||||
 | 
					                <height>15</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_dest</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>130</x>
 | 
				
			||||||
 | 
					                <y>370</y>
 | 
				
			||||||
 | 
					                <width>250</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Label_Bits</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>320</x>
 | 
				
			||||||
 | 
					                <y>399</y>
 | 
				
			||||||
 | 
					                <width>60</width>
 | 
				
			||||||
 | 
					                <height>16</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string></string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>460</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>263</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>25</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Akzep&tieren</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Button_Cancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>360</x>
 | 
				
			||||||
 | 
					                <y>440</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>25</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonGenerate</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>381</x>
 | 
				
			||||||
 | 
					                <y>370</y>
 | 
				
			||||||
 | 
					                <width>70</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Generieren</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel4</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>20</x>
 | 
				
			||||||
 | 
					                <y>370</y>
 | 
				
			||||||
 | 
					                <width>110</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Neues Passwort:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel5</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>20</x>
 | 
				
			||||||
 | 
					                <y>400</y>
 | 
				
			||||||
 | 
					                <width>110</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Qualität:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="Line">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>line3</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>420</y>
 | 
				
			||||||
 | 
					                <width>460</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShape">
 | 
				
			||||||
 | 
					            <enum>HLine</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="frameShadow">
 | 
				
			||||||
 | 
					            <enum>Sunken</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="orientation">
 | 
				
			||||||
 | 
					            <enum>Horizontal</enum>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QGroupBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>groupBox1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>440</width>
 | 
				
			||||||
 | 
					                <height>280</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="title">
 | 
				
			||||||
 | 
					            <string>Optionen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <widget class="QLineEdit">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Edit_chars</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>30</x>
 | 
				
			||||||
 | 
					                    <y>170</y>
 | 
				
			||||||
 | 
					                    <width>400</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QSpinBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Spin_Num</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>120</x>
 | 
				
			||||||
 | 
					                    <y>220</y>
 | 
				
			||||||
 | 
					                    <width>310</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="maxValue">
 | 
				
			||||||
 | 
					                <number>1000</number>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="minValue">
 | 
				
			||||||
 | 
					                <number>1</number>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="value">
 | 
				
			||||||
 | 
					                <number>20</number>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox1</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>120</x>
 | 
				
			||||||
 | 
					                    <y>40</y>
 | 
				
			||||||
 | 
					                    <width>131</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Gro&ßbuchstaben</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+ß</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="checked">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>120</x>
 | 
				
			||||||
 | 
					                    <y>60</y>
 | 
				
			||||||
 | 
					                    <width>140</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&Kleinbuchstaben</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+K</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="checked">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox3</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>120</x>
 | 
				
			||||||
 | 
					                    <y>80</y>
 | 
				
			||||||
 | 
					                    <width>140</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&Zahlen</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+Z</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="checked">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox4</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>120</x>
 | 
				
			||||||
 | 
					                    <y>100</y>
 | 
				
			||||||
 | 
					                    <width>140</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>S&onderzeichen</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="checked">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox6</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>260</x>
 | 
				
			||||||
 | 
					                    <y>60</y>
 | 
				
			||||||
 | 
					                    <width>170</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Bindestriche</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox7</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>260</x>
 | 
				
			||||||
 | 
					                    <y>80</y>
 | 
				
			||||||
 | 
					                    <width>170</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&Unterstriche</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+U</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox8</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>260</x>
 | 
				
			||||||
 | 
					                    <y>100</y>
 | 
				
			||||||
 | 
					                    <width>170</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>h&öhere ANSI-Zeichen</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+ö</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QRadioButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Radio_2</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>150</y>
 | 
				
			||||||
 | 
					                    <width>420</width>
 | 
				
			||||||
 | 
					                    <height>16</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&nur folgende Zeichen benutzen:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+N</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QLabel">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>220</y>
 | 
				
			||||||
 | 
					                    <width>110</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Zeichenanzahl:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Check_strongrandom</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>120</x>
 | 
				
			||||||
 | 
					                    <y>250</y>
 | 
				
			||||||
 | 
					                    <width>310</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>"/dev/rando&m" nutzen (empfohlen)</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+M</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="checked">
 | 
				
			||||||
 | 
					                <bool>true</bool>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QRadioButton">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>Radio_1</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>10</x>
 | 
				
			||||||
 | 
					                    <y>20</y>
 | 
				
			||||||
 | 
					                    <width>420</width>
 | 
				
			||||||
 | 
					                    <height>21</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>folgende Zeichengruppen &verwenden:</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+V</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox5</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>260</x>
 | 
				
			||||||
 | 
					                    <y>40</y>
 | 
				
			||||||
 | 
					                    <width>170</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&Leerzeichen</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+L</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Radio_1</sender>
 | 
				
			||||||
 | 
					        <signal>stateChanged(int)</signal>
 | 
				
			||||||
 | 
					        <receiver>GenPwDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnRadio1StateChanged(int)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Radio_2</sender>
 | 
				
			||||||
 | 
					        <signal>stateChanged(int)</signal>
 | 
				
			||||||
 | 
					        <receiver>GenPwDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnRadio2StateChanged(int)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonGenerate</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>GenPwDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnGeneratePw()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>GenPwDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnAccept()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Button_Cancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>GenPwDlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>Radio_1</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox1</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox2</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox3</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox4</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox5</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox6</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox7</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox8</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Radio_2</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_chars</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Spin_Num</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Check_strongrandom</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_dest</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonGenerate</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOK</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Button_Cancel</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnRadio1StateChanged(int)</slot>
 | 
				
			||||||
 | 
					    <slot>OnRadio2StateChanged(int)</slot>
 | 
				
			||||||
 | 
					    <slot>OnGeneratePw()</slot>
 | 
				
			||||||
 | 
					    <slot>OnAccept()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,327 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>Search_Dlg</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>Search_Dlg</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>390</width>
 | 
				
			||||||
 | 
					            <height>246</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>0</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>0</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>390</width>
 | 
				
			||||||
 | 
					            <height>246</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>390</width>
 | 
				
			||||||
 | 
					            <height>246</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Suche...</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>390</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QGroupBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>groupBox1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>130</y>
 | 
				
			||||||
 | 
					                <width>370</width>
 | 
				
			||||||
 | 
					                <height>70</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="title">
 | 
				
			||||||
 | 
					            <string>Suche nach</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox_Title</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>20</x>
 | 
				
			||||||
 | 
					                    <y>20</y>
 | 
				
			||||||
 | 
					                    <width>110</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&Titel</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+T</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox_Username</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>20</x>
 | 
				
			||||||
 | 
					                    <y>40</y>
 | 
				
			||||||
 | 
					                    <width>110</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Benut&zername</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+Z</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox_Comment</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>140</x>
 | 
				
			||||||
 | 
					                    <y>40</y>
 | 
				
			||||||
 | 
					                    <width>120</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&Kommentar</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+K</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox_URL</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>260</x>
 | 
				
			||||||
 | 
					                    <y>20</y>
 | 
				
			||||||
 | 
					                    <width>100</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>&URL</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+U</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox_Attachment</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>260</x>
 | 
				
			||||||
 | 
					                    <y>40</y>
 | 
				
			||||||
 | 
					                    <width>100</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>A&nhang</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+N</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QCheckBox">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>checkBox_Password</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="geometry">
 | 
				
			||||||
 | 
					                <rect>
 | 
				
			||||||
 | 
					                    <x>140</x>
 | 
				
			||||||
 | 
					                    <y>20</y>
 | 
				
			||||||
 | 
					                    <width>110</width>
 | 
				
			||||||
 | 
					                    <height>20</height>
 | 
				
			||||||
 | 
					                </rect>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="text">
 | 
				
			||||||
 | 
					                <string>Pass&wort</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <property name="accel">
 | 
				
			||||||
 | 
					                <string>Alt+W</string>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Button_Close</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>280</x>
 | 
				
			||||||
 | 
					                <y>210</y>
 | 
				
			||||||
 | 
					                <width>97</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>S&chließen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+C</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Suchbegriff:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Button_Search</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>170</x>
 | 
				
			||||||
 | 
					                <y>210</y>
 | 
				
			||||||
 | 
					                <width>97</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Suchen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Edit_Search</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>270</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QCheckBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>checkBox_regExp</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>110</y>
 | 
				
			||||||
 | 
					                <width>170</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>regul&ärer Ausdruck</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+ä</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QCheckBox">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>checkBox_Cs</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>110</x>
 | 
				
			||||||
 | 
					                <y>90</y>
 | 
				
			||||||
 | 
					                <width>250</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Gro&ß- und Kleinschreibung beachten</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+ß</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Button_Search</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>Search_Dlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonSearch()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Button_Close</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>Search_Dlg</receiver>
 | 
				
			||||||
 | 
					        <slot>OnButtonClose()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>Edit_Search</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_Cs</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_regExp</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_Title</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_Username</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_Password</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_Comment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_URL</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>checkBox_Attachment</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Button_Search</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Button_Close</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnButtonSearch()</slot>
 | 
				
			||||||
 | 
					    <slot>OnButtonClose()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,492 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>SettingsDialog</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>SettingsDialog</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>0</x>
 | 
				
			||||||
 | 
					            <y>0</y>
 | 
				
			||||||
 | 
					            <width>571</width>
 | 
				
			||||||
 | 
					            <height>341</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>571</width>
 | 
				
			||||||
 | 
					            <height>341</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>571</width>
 | 
				
			||||||
 | 
					            <height>341</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Einstellungen</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>470</x>
 | 
				
			||||||
 | 
					                <y>310</y>
 | 
				
			||||||
 | 
					                <width>90</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+C</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Banner</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>0</x>
 | 
				
			||||||
 | 
					                <y>0</y>
 | 
				
			||||||
 | 
					                <width>570</width>
 | 
				
			||||||
 | 
					                <height>50</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="pixmap">
 | 
				
			||||||
 | 
					            <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="scaledContents">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>380</x>
 | 
				
			||||||
 | 
					                <y>310</y>
 | 
				
			||||||
 | 
					                <width>80</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QTabWidget">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>tabWidget4</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>550</width>
 | 
				
			||||||
 | 
					                <height>240</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <widget class="QWidget">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>tab</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <attribute name="title">
 | 
				
			||||||
 | 
					                <string>Sicherhei&t</string>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					            <widget class="QLabel">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>10</x>
 | 
				
			||||||
 | 
					                        <y>20</y>
 | 
				
			||||||
 | 
					                        <width>180</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="text">
 | 
				
			||||||
 | 
					                    <string>Zwischenablage löschen nach:</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					            <widget class="QLabel">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>textLabel2</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>280</x>
 | 
				
			||||||
 | 
					                        <y>20</y>
 | 
				
			||||||
 | 
					                        <width>100</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="text">
 | 
				
			||||||
 | 
					                    <string>Sekunden</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					            <widget class="QSpinBox">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>SpinBox_ClipboardTime</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>190</x>
 | 
				
			||||||
 | 
					                        <y>20</y>
 | 
				
			||||||
 | 
					                        <width>80</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					            <widget class="QCheckBox">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>CheckBox_ShowPasswords</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>10</x>
 | 
				
			||||||
 | 
					                        <y>50</y>
 | 
				
			||||||
 | 
					                        <width>420</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="text">
 | 
				
			||||||
 | 
					                    <string>Passw&örter standardmäßig in Klartext anzeigen</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="accel">
 | 
				
			||||||
 | 
					                    <string>Alt+ö</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QWidget">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>TabPage</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <attribute name="title">
 | 
				
			||||||
 | 
					                <string>E&rscheinungsbild</string>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					            <widget class="QGroupBox">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>groupBox1</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>10</x>
 | 
				
			||||||
 | 
					                        <y>10</y>
 | 
				
			||||||
 | 
					                        <width>520</width>
 | 
				
			||||||
 | 
					                        <height>90</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="title">
 | 
				
			||||||
 | 
					                    <string>Bannerfarbverlauf</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <widget class="QLabel">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>textLabel1_3</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>10</x>
 | 
				
			||||||
 | 
					                            <y>20</y>
 | 
				
			||||||
 | 
					                            <width>53</width>
 | 
				
			||||||
 | 
					                            <height>20</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="text">
 | 
				
			||||||
 | 
					                        <string>Farbe 1</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QLabel">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>pixmColor1</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>70</x>
 | 
				
			||||||
 | 
					                            <y>20</y>
 | 
				
			||||||
 | 
					                            <width>22</width>
 | 
				
			||||||
 | 
					                            <height>22</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="pixmap">
 | 
				
			||||||
 | 
					                        <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="scaledContents">
 | 
				
			||||||
 | 
					                        <bool>true</bool>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QPushButton">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>ButtonColor1</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>100</x>
 | 
				
			||||||
 | 
					                            <y>20</y>
 | 
				
			||||||
 | 
					                            <width>60</width>
 | 
				
			||||||
 | 
					                            <height>23</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="text">
 | 
				
			||||||
 | 
					                        <string>&ändern...</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="accel">
 | 
				
			||||||
 | 
					                        <string>Alt+ä</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QLabel">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>textLabel3</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>190</x>
 | 
				
			||||||
 | 
					                            <y>20</y>
 | 
				
			||||||
 | 
					                            <width>60</width>
 | 
				
			||||||
 | 
					                            <height>20</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="text">
 | 
				
			||||||
 | 
					                        <string>Farbe 2</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QLabel">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>pixmTextColor</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>70</x>
 | 
				
			||||||
 | 
					                            <y>50</y>
 | 
				
			||||||
 | 
					                            <width>22</width>
 | 
				
			||||||
 | 
					                            <height>22</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="pixmap">
 | 
				
			||||||
 | 
					                        <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="scaledContents">
 | 
				
			||||||
 | 
					                        <bool>true</bool>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QPushButton">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>ButtonTextColor</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>100</x>
 | 
				
			||||||
 | 
					                            <y>50</y>
 | 
				
			||||||
 | 
					                            <width>60</width>
 | 
				
			||||||
 | 
					                            <height>23</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="text">
 | 
				
			||||||
 | 
					                        <string>ändern...</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="accel">
 | 
				
			||||||
 | 
					                        <string></string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QLabel">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>textLabel2_2</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>10</x>
 | 
				
			||||||
 | 
					                            <y>50</y>
 | 
				
			||||||
 | 
					                            <width>54</width>
 | 
				
			||||||
 | 
					                            <height>20</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="text">
 | 
				
			||||||
 | 
					                        <string>Textfarbe</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QLabel">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>pixmColor2</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>250</x>
 | 
				
			||||||
 | 
					                            <y>20</y>
 | 
				
			||||||
 | 
					                            <width>22</width>
 | 
				
			||||||
 | 
					                            <height>22</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="pixmap">
 | 
				
			||||||
 | 
					                        <pixmap>image0</pixmap>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="scaledContents">
 | 
				
			||||||
 | 
					                        <bool>true</bool>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					                <widget class="QPushButton">
 | 
				
			||||||
 | 
					                    <property name="name">
 | 
				
			||||||
 | 
					                        <cstring>ButtonColor2</cstring>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="geometry">
 | 
				
			||||||
 | 
					                        <rect>
 | 
				
			||||||
 | 
					                            <x>280</x>
 | 
				
			||||||
 | 
					                            <y>20</y>
 | 
				
			||||||
 | 
					                            <width>60</width>
 | 
				
			||||||
 | 
					                            <height>23</height>
 | 
				
			||||||
 | 
					                        </rect>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="text">
 | 
				
			||||||
 | 
					                        <string>ändern...</string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                    <property name="accel">
 | 
				
			||||||
 | 
					                        <string></string>
 | 
				
			||||||
 | 
					                    </property>
 | 
				
			||||||
 | 
					                </widget>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					            <widget class="QCheckBox">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>CheckBox_ExpandGroupTree</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>10</x>
 | 
				
			||||||
 | 
					                        <y>110</y>
 | 
				
			||||||
 | 
					                        <width>380</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="text">
 | 
				
			||||||
 | 
					                    <string>Gruppenbaum beim &Öffnen aufklappen</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="accel">
 | 
				
			||||||
 | 
					                    <string>Alt+ö</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					        <widget class="QWidget">
 | 
				
			||||||
 | 
					            <property name="name">
 | 
				
			||||||
 | 
					                <cstring>tab</cstring>
 | 
				
			||||||
 | 
					            </property>
 | 
				
			||||||
 | 
					            <attribute name="title">
 | 
				
			||||||
 | 
					                <string>S&onstiges</string>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					            <widget class="QCheckBox">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>CheckBox_OpenLast</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>10</x>
 | 
				
			||||||
 | 
					                        <y>20</y>
 | 
				
			||||||
 | 
					                        <width>380</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="text">
 | 
				
			||||||
 | 
					                    <string>zuletzt geöffnete Datei bei Programmstart &öffnen</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="accel">
 | 
				
			||||||
 | 
					                    <string>Alt+ö</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					            <widget class="QLabel">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>textLabel1_4</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>10</x>
 | 
				
			||||||
 | 
					                        <y>50</y>
 | 
				
			||||||
 | 
					                        <width>110</width>
 | 
				
			||||||
 | 
					                        <height>20</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="text">
 | 
				
			||||||
 | 
					                    <string>Browseraufruf:</string>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					            <widget class="QLineEdit">
 | 
				
			||||||
 | 
					                <property name="name">
 | 
				
			||||||
 | 
					                    <cstring>Edit_BrowserCmd</cstring>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					                <property name="geometry">
 | 
				
			||||||
 | 
					                    <rect>
 | 
				
			||||||
 | 
					                        <x>120</x>
 | 
				
			||||||
 | 
					                        <y>50</y>
 | 
				
			||||||
 | 
					                        <width>190</width>
 | 
				
			||||||
 | 
					                        <height>21</height>
 | 
				
			||||||
 | 
					                    </rect>
 | 
				
			||||||
 | 
					                </property>
 | 
				
			||||||
 | 
					            </widget>
 | 
				
			||||||
 | 
					        </widget>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<images>
 | 
				
			||||||
 | 
					    <image name="image0">
 | 
				
			||||||
 | 
					        <data format="XPM.GZ" length="4833">789c8597596f23470e80dfe75718c3b7c182e9eabb11ec834fc9873cbeaf601fc86ec9966df994cfc5fef794483633934d10c836fcb9582cde55fee5dbd2d9de68e9db2f5f9ee7349fb64bed153d2d7deb5e66b38fdffef3efff7ef99aa64b8baf2c5b4abffeebcb57dc5c6a9720499290640b8613e110ff22eb941b07657e7256f90be742e4a7c6a9ed076791c7a1732efbd784d3f817615a71167db0e55c0a17ce95c88f8ced3c7e74d6f306cea29fd159f583b3e8a75367d18f5bce8df0b63389be67e3ccfcd97716fd78e22cfaf1d459edefedcbedbc63e75af4cf85b33edeb8616cfef1b5b39eb7e72cf6c28b7166fb53678df7b5b3fadf388b3d503a8b3d40c6b9eaa35767d9cf37c6a5e53f73d6f3769d55bedf5f2789ac6bfcf2de1fda33ce4cdfbb716eeb6fce1acf1de3c2f2bbe7acf573605cdafe2b67f5efd359f20bb97165febe38b3c453fd2bfa7cd0a67165fea97c9db416ff1de3b1e9d77a6d12567bf8c159ed9d1ab7969fc2b8d378e2ba304579c93769bd719457fd524f2184cae221f51bd250a8fd3c35ae4cfec1b8b6fa06e3c6eaffc859d651f215b2d0c7efdab8327b969d459e9e8d7bfd57c68df587c43be4c1e20b685c1b9f0b17c1e283cfce927f96f911ca40d63fcbce7afebd31eb3a91b3fa37376ead9e64dea5759606a94f546eb23499883d9bc69932bef4acf22cf594725c1f8bfca9b3c8d3aa711e82c82bb73de3817111a4fe2171d67e1a1b97ba8e87ce5a8f12bfb48b2cfae8ceb85206894f9666135bff2e5c45d6fae894a3393a3f5be13aaeb7729eca4ff2d6ce3f5b701ef2b1c95f0aa7715dfb4de657519675d0fc8d8c9ba0f527f12faab234fd8fc695f1ab716dfa3f84ebb2089dec5f779678d381711d74beae398b7f540b3751bfd6e39ab1c9033b6bbd07e326687dcb3c2da8ecf47cfa301e9bbe37e389c94b3c0a2edba0f5f361dc194b3c8b36eed77acf9c453fab7f6d95587e6e8d83c957c25dc9668fdc5fc538b2c6e3a6e754e7adcc836252b6a9d69bccffb2ad535d67e98fb2ab538befaab3e8439947e5b84e82f6ffa17165f1bd7096fcc1ccb8b67a981b375a0f20f92d2775b078493dd54c75aaef0de9dfba75167fea2eb2f683dc5771388d753fbe396b7fca7c6b52ea2c5e57ce621fcbfdd26464f1812767ed8f63e3ced665de34c464fe9e1bb3d5b3f45bc3dca67a7fc9fba7697b46a9bf66cc13cb8fcc8b66c2960f3832b6f3988dad1e2828b799c53371d6f9766b9c5b7f4afe286983f5c3aeb3be177ace6c1ecc9cb51f6a678def8a7169f351fca710f5a93d9db3d64febacf9981aa76a2f5e3b6b7d5d1af7f6df3aebfb67e4acf93f72d6f972675cd83c7d77d67cac3bebfdfce9acf7eb87b3c66b665cdabc5feed9f44bfd51caade59395dbc4fc3f33cecc9f9b9e35bf786fdccfffc459e7ffc059eb7fe2acefcfd459df13dbceda5f4367bddffed8affdf0665c243a6f769c351f6367f51f7ad6fcefcf9dd57e72567fd959e3dd3a6bbc3b677daf34ce6affadb3dadbdb57263a5f46ce7adf8e9dd5dededfbe5e2f9cb5de5b678df7bb71a5fa59f767dccf77cd57d6f7136c185b7e79d359f3159cf53df7e8acf19e19f7f57ee5acef9b0d67f5b733b6fa844b63f38f07ceea9fcc3fca5b9bef58199b3dbce5acefa53567bd6fee8c73d54f95b3fa3b34b6fcc3b3b3f6dba1b3f6afe6a788fb6bad9f1f3f08f19b90b18ddff0f3dafefc2fe4bb284948f1b7f1e2e73fca4ff012af708ad77883b77f2f8f33bc8b9aeff1011ff1099f718e2ff88a6ff88e1ff8196da33fc92fe30aaee21aaee3060e70889bb885dbb88323dc8d7a407df941be8dd2dfa3ec5e94dac7033cc4233cc6133cc5333cc78bffb327c18029669863812556d1ef1a9ba8168080a1850ec608daaf30814bb882296ec035dc486426700b33b8837b78c0213cc2133ce367af3f7a93c01c5e700b5ee10d6fe11d093ee01396610556f104d6601d36a2d77abf0da2f41036610bb6b1841d18c12e7c873dd887033884233886133885b318297d3fc558e114cee1021208d1e01432c8a180122aa8e3c5190f2322c63bb507995aea62bc37698c9f34a14bba822d9ad235ddd02dcde80e87744f0f7fc823d1233de1363d634d737aa1577aa3ebf8047ba70ffaa4655aa1555aa375b37f0c298e6923ca0fb0a1212cd3266dd136edd08876e93bedd13e1dd0211d997e88f6031dd3099d624e67744e17f15f8b40296594cb273ef61632aa5ff34515d5d43032707c19449fd6e993db283b8217ee62fc0630fa31bf1cdf037c493bb1724ef98a162d30e56bcae185467cc3b731dfa0f935f919dff13daef1033ff2133fc77d039e73d41da55ff90d268b8afba17ea27d30a18edff9833f7999577895d7a88421aff31b6fc0e04ff5c6314acc031ef2266cc4c7ce036ff12ca66a10ff75d95eacfd2ccf3b0bfd38e651ac93f7d83b77f84e47d1e6f1222e0bf9c5ef3ff7a3f690766f4ffd0490aa85affffbf5cbef985d44a8</data>
 | 
				
			||||||
 | 
					    </image>
 | 
				
			||||||
 | 
					</images>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SettingsDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SettingsDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonColor1</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SettingsDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnColor1()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonColor2</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SettingsDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnColor2()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonTextColor</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SettingsDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnTextColor()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<tabstops>
 | 
				
			||||||
 | 
					    <tabstop>tabWidget4</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>SpinBox_ClipboardTime</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>CheckBox_ShowPasswords</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonColor1</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonTextColor</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonColor2</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>CheckBox_OpenLast</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>Edit_BrowserCmd</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonOK</tabstop>
 | 
				
			||||||
 | 
					    <tabstop>ButtonCancel</tabstop>
 | 
				
			||||||
 | 
					</tabstops>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    <slot>OnColor1()</slot>
 | 
				
			||||||
 | 
					    <slot>OnColor2()</slot>
 | 
				
			||||||
 | 
					    <slot>OnTextColor()</slot>
 | 
				
			||||||
 | 
					    <slot>newSlot()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,154 @@
 | 
				
			||||||
 | 
					<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
 | 
				
			||||||
 | 
					<class>SimplePasswordDialog</class>
 | 
				
			||||||
 | 
					<widget class="QDialog">
 | 
				
			||||||
 | 
					    <property name="name">
 | 
				
			||||||
 | 
					        <cstring>SimplePasswordDialog</cstring>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="geometry">
 | 
				
			||||||
 | 
					        <rect>
 | 
				
			||||||
 | 
					            <x>2</x>
 | 
				
			||||||
 | 
					            <y>3</y>
 | 
				
			||||||
 | 
					            <width>345</width>
 | 
				
			||||||
 | 
					            <height>90</height>
 | 
				
			||||||
 | 
					        </rect>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="sizePolicy">
 | 
				
			||||||
 | 
					        <sizepolicy>
 | 
				
			||||||
 | 
					            <hsizetype>0</hsizetype>
 | 
				
			||||||
 | 
					            <vsizetype>0</vsizetype>
 | 
				
			||||||
 | 
					            <horstretch>0</horstretch>
 | 
				
			||||||
 | 
					            <verstretch>0</verstretch>
 | 
				
			||||||
 | 
					        </sizepolicy>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="minimumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>345</width>
 | 
				
			||||||
 | 
					            <height>90</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="maximumSize">
 | 
				
			||||||
 | 
					        <size>
 | 
				
			||||||
 | 
					            <width>345</width>
 | 
				
			||||||
 | 
					            <height>90</height>
 | 
				
			||||||
 | 
					        </size>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <property name="caption">
 | 
				
			||||||
 | 
					        <string>Passworteingabe</string>
 | 
				
			||||||
 | 
					    </property>
 | 
				
			||||||
 | 
					    <widget class="QLabel">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>textLabel1</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>10</x>
 | 
				
			||||||
 | 
					                <y>20</y>
 | 
				
			||||||
 | 
					                <width>60</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Passwort:</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QLineEdit">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>EditPassword</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>80</x>
 | 
				
			||||||
 | 
					                <y>20</y>
 | 
				
			||||||
 | 
					                <width>240</width>
 | 
				
			||||||
 | 
					                <height>21</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonOK</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>170</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>80</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>O&K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+K</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>ButtonCancel</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>257</x>
 | 
				
			||||||
 | 
					                <y>60</y>
 | 
				
			||||||
 | 
					                <width>80</width>
 | 
				
			||||||
 | 
					                <height>23</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>Abbre&chen</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string>Alt+C</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					    <widget class="QPushButton">
 | 
				
			||||||
 | 
					        <property name="name">
 | 
				
			||||||
 | 
					            <cstring>Button_HidePassword</cstring>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="geometry">
 | 
				
			||||||
 | 
					            <rect>
 | 
				
			||||||
 | 
					                <x>320</x>
 | 
				
			||||||
 | 
					                <y>20</y>
 | 
				
			||||||
 | 
					                <width>20</width>
 | 
				
			||||||
 | 
					                <height>20</height>
 | 
				
			||||||
 | 
					            </rect>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="text">
 | 
				
			||||||
 | 
					            <string>...</string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="accel">
 | 
				
			||||||
 | 
					            <string></string>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					        <property name="toggleButton">
 | 
				
			||||||
 | 
					            <bool>true</bool>
 | 
				
			||||||
 | 
					        </property>
 | 
				
			||||||
 | 
					    </widget>
 | 
				
			||||||
 | 
					</widget>
 | 
				
			||||||
 | 
					<connections>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>Button_HidePassword</sender>
 | 
				
			||||||
 | 
					        <signal>toggled(bool)</signal>
 | 
				
			||||||
 | 
					        <receiver>SimplePasswordDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnHidePasswordToggled(bool)</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonOK</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SimplePasswordDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					    <connection>
 | 
				
			||||||
 | 
					        <sender>ButtonCancel</sender>
 | 
				
			||||||
 | 
					        <signal>clicked()</signal>
 | 
				
			||||||
 | 
					        <receiver>SimplePasswordDialog</receiver>
 | 
				
			||||||
 | 
					        <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					    </connection>
 | 
				
			||||||
 | 
					</connections>
 | 
				
			||||||
 | 
					<slots>
 | 
				
			||||||
 | 
					    <slot>OnHidePasswordToggled(bool state)</slot>
 | 
				
			||||||
 | 
					    <slot>OnOK()</slot>
 | 
				
			||||||
 | 
					    <slot>OnCancel()</slot>
 | 
				
			||||||
 | 
					</slots>
 | 
				
			||||||
 | 
					<layoutdefaults spacing="6" margin="11"/>
 | 
				
			||||||
 | 
					</UI>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,121 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "Import_KWalletXml.h"
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					#include <qobject.h>
 | 
				
			||||||
 | 
					#include <qfile.h>
 | 
				
			||||||
 | 
					#include <qdom.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool Import_KWalletXml::importFile(QString FileName,PwDatabase* pwm,QString& err){
 | 
				
			||||||
 | 
					QFile file(FileName);
 | 
				
			||||||
 | 
					if(!file.exists()){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Datei nicht gefunden");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					if(!file.open(IO_ReadOnly)){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Datei konnte nicht geöffnet werden");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					int len=file.size();
 | 
				
			||||||
 | 
					if(len==0){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Datei ist leer");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					UINT8* buffer=new UINT8[len];
 | 
				
			||||||
 | 
					file.readBlock((char*)buffer,len);
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					QDomDocument doc;
 | 
				
			||||||
 | 
					QString xmlerr;
 | 
				
			||||||
 | 
					int col,line;
 | 
				
			||||||
 | 
					if(!doc.setContent(QString::fromUtf8((char*)buffer,len),false,&xmlerr,&line,&col)){
 | 
				
			||||||
 | 
						cout << "Import_PwManager::parseXmlContent():" << endl;
 | 
				
			||||||
 | 
						cout << (xmlerr+" (Line:%1 Column:%2)").arg(line).arg(col) << endl;
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Ungültiges XML-Dokument");
 | 
				
			||||||
 | 
						delete [] buffer;
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					QDomElement root=doc.documentElement();
 | 
				
			||||||
 | 
					if(root.tagName()!="wallet"){err+=QObject::trUtf8("Ungültiges XML-Dokument"); return false;}
 | 
				
			||||||
 | 
					QDomNodeList groups=root.elementsByTagName("folder");
 | 
				
			||||||
 | 
					if(!groups.length()){err+=QObject::trUtf8("Dokument enthält keine Daten"); return false;}
 | 
				
			||||||
 | 
					for(int i=0;i<groups.length();i++){
 | 
				
			||||||
 | 
						if(!groups.item(i).isElement()){err+=QObject::trUtf8("Ungültiges XML-Dokument"); return false;}
 | 
				
			||||||
 | 
						QDomElement CurrGroup=groups.item(i).toElement();
 | 
				
			||||||
 | 
						if(!CurrGroup.hasAttribute("name")){err+=QObject::trUtf8("Ungültiges XML-Dokument"); return false;}
 | 
				
			||||||
 | 
					 	CGroup* NewGroup=pwm->addGroup(NULL);
 | 
				
			||||||
 | 
						NewGroup->Name=CurrGroup.attribute("name");
 | 
				
			||||||
 | 
						QDomNodeList entries=CurrGroup.elementsByTagName("password");
 | 
				
			||||||
 | 
						for(int j=0;j<entries.length();j++){
 | 
				
			||||||
 | 
							if(!entries.item(j).isElement()){err+=QObject::trUtf8("Ungültiges XML-Dokument"); return false;}
 | 
				
			||||||
 | 
							QDomElement CurrEntry=entries.item(j).toElement();
 | 
				
			||||||
 | 
							if(!CurrEntry.hasAttribute("name")){err+=QObject::trUtf8("Ungültiges XML-Dokument"); return false;}
 | 
				
			||||||
 | 
							CEntry* NewEntry=pwm->addEntry();
 | 
				
			||||||
 | 
							NewEntry->Title=CurrEntry.attribute("name");
 | 
				
			||||||
 | 
							NewEntry->GroupID=NewGroup->ID;
 | 
				
			||||||
 | 
							QString pw=CurrEntry.text();
 | 
				
			||||||
 | 
							NewEntry->Password.setString(pw,true);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					pwm->filename="";
 | 
				
			||||||
 | 
					pwm->SearchGroupID=-1;
 | 
				
			||||||
 | 
					pwm->CryptoAlgorithmus=ALGO_AES;
 | 
				
			||||||
 | 
					pwm->KeyEncRounds=6000;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// unvollständiger Schnippsel zum Lesen des Binärformats
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					QFile file(FileName);
 | 
				
			||||||
 | 
					if(!file.exists()){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Datei nicht gefunden");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					if(!file.open(IO_ReadOnly)){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Datei konnte nicht geöffnet werden");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					int len=file.size();
 | 
				
			||||||
 | 
					int offset=0;
 | 
				
			||||||
 | 
					if(len<48){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Unerwartete Dateilänge");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					UINT8* buffer=new UINT8[len];
 | 
				
			||||||
 | 
					int df=file.readBlock((char*)buffer,len);
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(memcmp(buffer,"KWALLET\n\r\0\r\n",12)){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Keine gültige KWallet-Datei");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					offset+=12;
 | 
				
			||||||
 | 
					MajorVersion=buffer[offset];
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					MinorVersion=buffer[offset];
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(MajorVersion != 0 || MinorVersion !=0){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Nicht unterstützte Format Version");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					CryptAlgo=buffer[offset];
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(CryptAlgo != 0){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Nicht unterstützter Verschlüsselungsalgorithmus");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					HashAlgo=buffer[offset];
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(HashAlgo != 0){
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Nicht unterstützter Hash-Algorithmus");
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _IMPORT_KWALLET_H_
 | 
				
			||||||
 | 
					#define _IMPORT_KWALLET_H_
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Import_KWalletXml{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  bool importFile(QString FileName,PwDatabase* db,QString& err);
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,165 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qobject.h>
 | 
				
			||||||
 | 
					#include <qfile.h>
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					#include <qdom.h>
 | 
				
			||||||
 | 
					#include "crypto/blowfish.h"
 | 
				
			||||||
 | 
					#include "crypto/sha1.h"
 | 
				
			||||||
 | 
					#include "Import_PwManager.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool Import_PwManager::importFile(QString filename, QString password, PwDatabase* db, QString& err){
 | 
				
			||||||
 | 
					database=db;
 | 
				
			||||||
 | 
					QFile file(filename);
 | 
				
			||||||
 | 
					char* buffer=NULL;
 | 
				
			||||||
 | 
					int offset=0;
 | 
				
			||||||
 | 
					int len=0;
 | 
				
			||||||
 | 
					if(!file.exists()){err+=QObject::trUtf8("Die angegebene Datei existiert nicht."); return false;}
 | 
				
			||||||
 | 
					if(!file.open(IO_ReadOnly)){err+=QObject::trUtf8("Datei konnte nicht geöffnet werden."); return false;}
 | 
				
			||||||
 | 
					if(len=file.size()) buffer=new char[len];
 | 
				
			||||||
 | 
					else {err+=QObject::trUtf8("Datei ist leer"); return false;}
 | 
				
			||||||
 | 
					file.readBlock(buffer,len);
 | 
				
			||||||
 | 
					file.close();
 | 
				
			||||||
 | 
					if(QString::fromAscii(buffer,17)!="PWM_PASSWORD_FILE")
 | 
				
			||||||
 | 
					  {err+=QObject::trUtf8("Keine gültige PwManager-Datei"); return false;}
 | 
				
			||||||
 | 
					offset+=17;
 | 
				
			||||||
 | 
					if(buffer[offset]!=0x05)
 | 
				
			||||||
 | 
					 {err+=QObject::trUtf8("Nicht unterstützte Version"); return false;}
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(buffer[offset]!=0x01)
 | 
				
			||||||
 | 
					 {err+=QObject::trUtf8("Nicht unterstützter Hash-Algorithmus"); return false;}
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(buffer[offset]!=0x01)
 | 
				
			||||||
 | 
					 {err+=QObject::trUtf8("Nicht unterstützter Hash-Algorithmus"); return false;}
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(buffer[offset]!=0x01)
 | 
				
			||||||
 | 
					 {err+=QObject::trUtf8("Nicht unterstützter Verschlüsselungs-Algorithmus"); return false;}
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(buffer[offset]==0x00)Compression=0;
 | 
				
			||||||
 | 
					if(buffer[offset]==0x01)Compression=1;
 | 
				
			||||||
 | 
					if(buffer[offset]==0x02)Compression=2;
 | 
				
			||||||
 | 
					  ///@TODO Compression
 | 
				
			||||||
 | 
					  if(buffer[offset])
 | 
				
			||||||
 | 
					  {err+=QObject::trUtf8("Komprimierte PwManager-Dateien werden nicht unterstützt"); return false;}
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					if(buffer[offset]==0x00)KeyFlag=true;
 | 
				
			||||||
 | 
					else KeyFlag=false;
 | 
				
			||||||
 | 
					offset++;
 | 
				
			||||||
 | 
					//Reserved Bytes (64)
 | 
				
			||||||
 | 
					offset+=64;
 | 
				
			||||||
 | 
					memcpy(KeyHash,buffer+offset,20);
 | 
				
			||||||
 | 
					offset+=20;
 | 
				
			||||||
 | 
					memcpy(DataHash,buffer+offset,20);
 | 
				
			||||||
 | 
					offset+=20;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Blowfish blowfish;
 | 
				
			||||||
 | 
					int pwlen=password.length();
 | 
				
			||||||
 | 
					byte* Key=new byte[pwlen];
 | 
				
			||||||
 | 
					byte* xml=new byte[len-offset+1];
 | 
				
			||||||
 | 
					xml[len-offset]=0;
 | 
				
			||||||
 | 
					memcpy(Key,password.ascii(),pwlen);
 | 
				
			||||||
 | 
					  char* key_hash=new char[20];
 | 
				
			||||||
 | 
					  CSHA1 sha;
 | 
				
			||||||
 | 
					  sha.Update(Key,pwlen);
 | 
				
			||||||
 | 
					  sha.Final();
 | 
				
			||||||
 | 
					  sha.GetHash((unsigned char*)key_hash);
 | 
				
			||||||
 | 
					  if(memcmp(key_hash,KeyHash,20)){
 | 
				
			||||||
 | 
						delete[] Key; delete [] key_hash; delete [] buffer;
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Falsches Passwort");
 | 
				
			||||||
 | 
						return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					delete [] key_hash;
 | 
				
			||||||
 | 
					blowfish.bf_setkey(Key,password.length());
 | 
				
			||||||
 | 
					blowfish.bf_decrypt(xml,(byte*)buffer+offset,len-offset);
 | 
				
			||||||
 | 
					delete [] Key;
 | 
				
			||||||
 | 
					delete [] buffer;
 | 
				
			||||||
 | 
					  char* content_hash=new char[20];
 | 
				
			||||||
 | 
					  sha.Reset();
 | 
				
			||||||
 | 
					  sha.Update(xml,strlen((char*)xml)-1);
 | 
				
			||||||
 | 
					  sha.Final();
 | 
				
			||||||
 | 
					  sha.GetHash((unsigned char*)content_hash);
 | 
				
			||||||
 | 
					  if(memcmp(content_hash,DataHash,20)){
 | 
				
			||||||
 | 
						delete [] content_hash; delete [] xml;
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Dateiinhalt ungültig (Hash-Test fehlgeschlagen)");
 | 
				
			||||||
 | 
						return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					delete[] content_hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(!parseXmlContent((char*)xml)){
 | 
				
			||||||
 | 
						delete [] xml;
 | 
				
			||||||
 | 
						err+=QObject::trUtf8("Ungültiger XML-Inhalt"); return false;}
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool Import_PwManager::parseXmlContent(char* content){
 | 
				
			||||||
 | 
					QDomDocument db;
 | 
				
			||||||
 | 
					QString err;
 | 
				
			||||||
 | 
					int col,line;
 | 
				
			||||||
 | 
					if(!db.setContent(QString::fromUtf8(content,strlen(content)-1),false,&err,&line,&col)){
 | 
				
			||||||
 | 
						cout << "Import_PwManager::parseXmlContent():" << endl;
 | 
				
			||||||
 | 
						cout << (err+" (Line:%1 Column:%2)").arg(line).arg(col) << endl;
 | 
				
			||||||
 | 
						return false;}
 | 
				
			||||||
 | 
					QDomElement root=db.documentElement();
 | 
				
			||||||
 | 
					if(root.tagName()!="P")return false;
 | 
				
			||||||
 | 
					//Kommentar und Kategorie haben das selbe Tag "c"
 | 
				
			||||||
 | 
					if(!root.elementsByTagName("c").item(0).isElement())return false;
 | 
				
			||||||
 | 
					QDomElement groups=root.elementsByTagName("c").item(0).toElement();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int i=0;
 | 
				
			||||||
 | 
					while(1){
 | 
				
			||||||
 | 
					 QDomElement CurrGroup;
 | 
				
			||||||
 | 
					 if(!groups.elementsByTagName("c"+QString::number(i)).length())break;
 | 
				
			||||||
 | 
					 if(groups.elementsByTagName("c"+QString::number(i)).length()>1)return false;
 | 
				
			||||||
 | 
					 if(!groups.elementsByTagName("c"+QString::number(i)).item(0).isElement())return false;
 | 
				
			||||||
 | 
					 CurrGroup=groups.elementsByTagName("c"+QString::number(i)).item(0).toElement();
 | 
				
			||||||
 | 
					 if(!CurrGroup.hasAttribute("n"))return false;
 | 
				
			||||||
 | 
					 CGroup* NewGroup=database->addGroup(NULL);
 | 
				
			||||||
 | 
					 NewGroup->Name=CurrGroup.attribute("n");
 | 
				
			||||||
 | 
					 int j=0;
 | 
				
			||||||
 | 
						while(1){
 | 
				
			||||||
 | 
						  QDomElement CurrEntry;
 | 
				
			||||||
 | 
						  if(!CurrGroup.elementsByTagName("e"+QString::number(j)).length())break;
 | 
				
			||||||
 | 
					 	  if(CurrGroup.elementsByTagName("e"+QString::number(j)).length()>1)return false;
 | 
				
			||||||
 | 
					 	  if(!CurrGroup.elementsByTagName("e"+QString::number(j)).item(0).isElement())return false;
 | 
				
			||||||
 | 
						  CurrEntry=CurrGroup.elementsByTagName("e"+QString::number(j)).item(0).toElement();
 | 
				
			||||||
 | 
						  if(!xml_parseEntryAttributes(&CurrEntry,NewGroup))return false;
 | 
				
			||||||
 | 
						  j++;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					 i++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool Import_PwManager::xml_parseEntryAttributes(QDomElement* EntryElement,CGroup* NewGroup){
 | 
				
			||||||
 | 
					CEntry* e=database->addEntry();
 | 
				
			||||||
 | 
					e->Title=EntryElement->elementsByTagName("d").item(0).toElement().text();
 | 
				
			||||||
 | 
					e->UserName=EntryElement->elementsByTagName("n").item(0).toElement().text();
 | 
				
			||||||
 | 
					QString pw=EntryElement->elementsByTagName("p").item(0).toElement().text();
 | 
				
			||||||
 | 
					e->Password.setString(pw,true);
 | 
				
			||||||
 | 
					e->Additional=EntryElement->elementsByTagName("c").item(0).toElement().text();
 | 
				
			||||||
 | 
					e->Additional=e->Additional.replace("$>--endl--<$","\n");
 | 
				
			||||||
 | 
					e->URL=EntryElement->elementsByTagName("u").item(0).toElement().text();
 | 
				
			||||||
 | 
					e->GroupID=NewGroup->ID;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _IMPORT_PWMANAGER_
 | 
				
			||||||
 | 
					#define _IMPORT_PWMANAGER_
 | 
				
			||||||
 | 
					#include <qdom.h>
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					#include "PwManager.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Import_PwManager{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					bool importFile(QString FileName, QString Password,PwDatabase* db,QString& err);
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					 bool KeyFlag; // true=Password, false=Chipcard
 | 
				
			||||||
 | 
					 int Compression; // 0=none, 1=gzip, 2=bzip2
 | 
				
			||||||
 | 
					 unsigned char KeyHash[20];
 | 
				
			||||||
 | 
					 unsigned char DataHash[20];
 | 
				
			||||||
 | 
					 PwDatabase* database;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 bool parseXmlContent(char* content);
 | 
				
			||||||
 | 
					 bool xml_parseEntryAttributes(QDomElement* EntryTag,CGroup* parent);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,488 @@
 | 
				
			||||||
 | 
					// IniFile.cpp:  Implementation of the CIniFile class.
 | 
				
			||||||
 | 
					// Written by:   Adam Clauss
 | 
				
			||||||
 | 
					// Email: cabadam@houston.rr.com
 | 
				
			||||||
 | 
					// You may use this class/code as you wish in your programs.  Feel free to distribute it, and
 | 
				
			||||||
 | 
					// email suggested changes to me.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Rewritten by: Shane Hill
 | 
				
			||||||
 | 
					// Date:         21/08/2001
 | 
				
			||||||
 | 
					// Email:        Shane.Hill@dsto.defence.gov.au
 | 
				
			||||||
 | 
					// Reason:       Remove dependancy on MFC. Code should compile on any
 | 
				
			||||||
 | 
					//               platform.
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// C++ Includes
 | 
				
			||||||
 | 
					#include <iostream>
 | 
				
			||||||
 | 
					#include <fstream>
 | 
				
			||||||
 | 
					#include <strstream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// C Includes
 | 
				
			||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdarg.h>
 | 
				
			||||||
 | 
					#include <ctype.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Local Includes
 | 
				
			||||||
 | 
					#include "IniReader.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(WIN32)
 | 
				
			||||||
 | 
					#define iniEOL endl
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define iniEOL '\r' << endl
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CIniFile::CIniFile( string const iniPath)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  Path( iniPath);
 | 
				
			||||||
 | 
					  caseInsensitive = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::ReadFile()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  // Normally you would use ifstream, but the SGI CC compiler has
 | 
				
			||||||
 | 
					  // a few bugs with ifstream. So ... fstream used.
 | 
				
			||||||
 | 
					  fstream f;
 | 
				
			||||||
 | 
					  string   line;
 | 
				
			||||||
 | 
					  string   keyname, valuename, value;
 | 
				
			||||||
 | 
					  string::size_type pLeft, pRight;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  f.open( path.c_str(), ios::in);
 | 
				
			||||||
 | 
					  if ( f.fail())
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  while( getline( f, line)) {
 | 
				
			||||||
 | 
					    // To be compatible with Win32, check for existence of '\r'.
 | 
				
			||||||
 | 
					    // Win32 files have the '\r' and Unix files don't at the end of a line.
 | 
				
			||||||
 | 
					    // Note that the '\r' will be written to INI files from
 | 
				
			||||||
 | 
					    // Unix so that the created INI file can be read under Win32
 | 
				
			||||||
 | 
					    // without change.
 | 
				
			||||||
 | 
					    if ( line[line.length() - 1] == '\r')
 | 
				
			||||||
 | 
					      line = line.substr( 0, line.length() - 1);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( line.length()) {
 | 
				
			||||||
 | 
					      // Check that the user hasn't openned a binary file by checking the first
 | 
				
			||||||
 | 
					      // character of each line!
 | 
				
			||||||
 | 
					      if ( !isprint( line[0])) {
 | 
				
			||||||
 | 
						printf( "Failing on char %d\n", line[0]);
 | 
				
			||||||
 | 
						f.close();
 | 
				
			||||||
 | 
						return false;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      if (( pLeft = line.find_first_of(";#[=")) != string::npos) {
 | 
				
			||||||
 | 
						switch ( line[pLeft]) {
 | 
				
			||||||
 | 
						case '[':
 | 
				
			||||||
 | 
						  if ((pRight = line.find_last_of("]")) != string::npos &&
 | 
				
			||||||
 | 
						      pRight > pLeft) {
 | 
				
			||||||
 | 
						    keyname = line.substr( pLeft + 1, pRight - pLeft - 1);
 | 
				
			||||||
 | 
						    AddKeyName( keyname);
 | 
				
			||||||
 | 
						  }
 | 
				
			||||||
 | 
						  break;
 | 
				
			||||||
 | 
						  
 | 
				
			||||||
 | 
						case '=':
 | 
				
			||||||
 | 
						  valuename = line.substr( 0, pLeft);
 | 
				
			||||||
 | 
						  value = line.substr( pLeft + 1);
 | 
				
			||||||
 | 
						  SetValue( keyname, valuename, value);
 | 
				
			||||||
 | 
						  break;
 | 
				
			||||||
 | 
						  
 | 
				
			||||||
 | 
						case ';':
 | 
				
			||||||
 | 
						case '#':
 | 
				
			||||||
 | 
						  if ( !names.size())
 | 
				
			||||||
 | 
						    HeaderComment( line.substr( pLeft + 1));
 | 
				
			||||||
 | 
						  else
 | 
				
			||||||
 | 
						    KeyComment( keyname, line.substr( pLeft + 1));
 | 
				
			||||||
 | 
						  break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  f.close();
 | 
				
			||||||
 | 
					  if ( names.size())
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::WriteFile()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  unsigned commentID, keyID, valueID;
 | 
				
			||||||
 | 
					  // Normally you would use ofstream, but the SGI CC compiler has
 | 
				
			||||||
 | 
					  // a few bugs with ofstream. So ... fstream used.
 | 
				
			||||||
 | 
					  fstream f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  f.open( path.c_str(), ios::out);
 | 
				
			||||||
 | 
					  if ( f.fail())
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Write header comments.
 | 
				
			||||||
 | 
					  for ( commentID = 0; commentID < comments.size(); ++commentID)
 | 
				
			||||||
 | 
					    f << ';' << comments[commentID] << iniEOL;
 | 
				
			||||||
 | 
					  if ( comments.size())
 | 
				
			||||||
 | 
					    f << iniEOL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Write keys and values.
 | 
				
			||||||
 | 
					  for ( keyID = 0; keyID < keys.size(); ++keyID) {
 | 
				
			||||||
 | 
					    f << '[' << names[keyID] << ']' << iniEOL;
 | 
				
			||||||
 | 
					    // Comments.
 | 
				
			||||||
 | 
					    for ( commentID = 0; commentID < keys[keyID].comments.size(); ++commentID)
 | 
				
			||||||
 | 
					      f << ';' << keys[keyID].comments[commentID] << iniEOL;
 | 
				
			||||||
 | 
					    // Values.
 | 
				
			||||||
 | 
					    for ( valueID = 0; valueID < keys[keyID].names.size(); ++valueID)
 | 
				
			||||||
 | 
					      f << keys[keyID].names[valueID] << '=' << keys[keyID].values[valueID] << iniEOL;
 | 
				
			||||||
 | 
					    f << iniEOL;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  f.close();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					long CIniFile::FindKey( string const keyname) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  for ( unsigned keyID = 0; keyID < names.size(); ++keyID)
 | 
				
			||||||
 | 
					    if ( CheckCase( names[keyID]) == CheckCase( keyname))
 | 
				
			||||||
 | 
					      return long(keyID);
 | 
				
			||||||
 | 
					  return noID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					long CIniFile::FindValue( unsigned const keyID, string const valuename) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( !keys.size() || keyID >= keys.size())
 | 
				
			||||||
 | 
					    return noID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  for ( unsigned valueID = 0; valueID < keys[keyID].names.size(); ++valueID)
 | 
				
			||||||
 | 
					    if ( CheckCase( keys[keyID].names[valueID]) == CheckCase( valuename))
 | 
				
			||||||
 | 
					      return long(valueID);
 | 
				
			||||||
 | 
					  return noID;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned CIniFile::AddKeyName( string const keyname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  names.resize( names.size() + 1, keyname);
 | 
				
			||||||
 | 
					  keys.resize( keys.size() + 1);
 | 
				
			||||||
 | 
					  return names.size() - 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::KeyName( unsigned const keyID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < names.size())
 | 
				
			||||||
 | 
					    return names[keyID];
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    return "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned CIniFile::NumValues( unsigned const keyID)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size())
 | 
				
			||||||
 | 
					    return keys[keyID].names.size();
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned CIniFile::NumValues( string const keyname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					  return keys[keyID].names.size();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::ValueName( unsigned const keyID, unsigned const valueID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size() && valueID < keys[keyID].names.size())
 | 
				
			||||||
 | 
					    return keys[keyID].names[valueID];
 | 
				
			||||||
 | 
					  return "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::ValueName( string const keyname, unsigned const valueID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return "";
 | 
				
			||||||
 | 
					  return ValueName( keyID, valueID);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::SetValue( unsigned const keyID, unsigned const valueID, string const value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size() && valueID < keys[keyID].names.size())
 | 
				
			||||||
 | 
					    keys[keyID].values[valueID] = value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::SetValue( string const keyname, string const valuename, string const value, bool const create)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID) {
 | 
				
			||||||
 | 
					    if ( create)
 | 
				
			||||||
 | 
					      keyID = long( AddKeyName( keyname));
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  long valueID = FindValue( unsigned(keyID), valuename);
 | 
				
			||||||
 | 
					  if ( valueID == noID) {
 | 
				
			||||||
 | 
					    if ( !create)
 | 
				
			||||||
 | 
					      return false;
 | 
				
			||||||
 | 
					    keys[keyID].names.resize( keys[keyID].names.size() + 1, valuename);
 | 
				
			||||||
 | 
					    keys[keyID].values.resize( keys[keyID].values.size() + 1, value);
 | 
				
			||||||
 | 
					  } else
 | 
				
			||||||
 | 
					    keys[keyID].values[valueID] = value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::SetValueI( string const keyname, string const valuename, int const value, bool const create)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  char svalue[MAX_VALUEDATA];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sprintf( svalue, "%d", value);
 | 
				
			||||||
 | 
					  return SetValue( keyname, valuename, svalue);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::SetValueF( string const keyname, string const valuename, double const value, bool const create)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  char svalue[MAX_VALUEDATA];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sprintf( svalue, "%f", value);
 | 
				
			||||||
 | 
					  return SetValue( keyname, valuename, svalue);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::SetValueV( string const keyname, string const valuename, char *format, ...)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  va_list args;
 | 
				
			||||||
 | 
					  char value[MAX_VALUEDATA];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  va_start( args, format);
 | 
				
			||||||
 | 
					  vsprintf( value, format, args);
 | 
				
			||||||
 | 
					  va_end( args);
 | 
				
			||||||
 | 
					  return SetValue( keyname, valuename, value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::GetValue( unsigned const keyID, unsigned const valueID, string const defValue) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size() && valueID < keys[keyID].names.size())
 | 
				
			||||||
 | 
					    return keys[keyID].values[valueID];
 | 
				
			||||||
 | 
					  return defValue;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::GetValue( string const keyname, string const valuename, string const defValue) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return defValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  long valueID = FindValue( unsigned(keyID), valuename);
 | 
				
			||||||
 | 
					  if ( valueID == noID)
 | 
				
			||||||
 | 
					    return defValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return keys[keyID].values[valueID];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int CIniFile::GetValueI(string const keyname, string const valuename, int const defValue) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  char svalue[MAX_VALUEDATA];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sprintf( svalue, "%d", defValue);
 | 
				
			||||||
 | 
					  return atoi( GetValue( keyname, valuename, svalue).c_str()); 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double CIniFile::GetValueF(string const keyname, string const valuename, double const defValue) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  char svalue[MAX_VALUEDATA];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sprintf( svalue, "%f", defValue);
 | 
				
			||||||
 | 
					  return atof( GetValue( keyname, valuename, svalue).c_str()); 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 16 variables may be a bit of over kill, but hey, it's only code.
 | 
				
			||||||
 | 
					unsigned CIniFile::GetValueV( string const keyname, string const valuename, char *format,
 | 
				
			||||||
 | 
								      void *v1, void *v2, void *v3, void *v4,
 | 
				
			||||||
 | 
					  			      void *v5, void *v6, void *v7, void *v8,
 | 
				
			||||||
 | 
					  			      void *v9, void *v10, void *v11, void *v12,
 | 
				
			||||||
 | 
					  			      void *v13, void *v14, void *v15, void *v16)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  string   value;
 | 
				
			||||||
 | 
					  // va_list  args;
 | 
				
			||||||
 | 
					  unsigned nVals;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  value = GetValue( keyname, valuename);
 | 
				
			||||||
 | 
					  if ( !value.length())
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  // Why is there not vsscanf() function. Linux man pages say that there is
 | 
				
			||||||
 | 
					  // but no compiler I've seen has it defined. Bummer!
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // va_start( args, format);
 | 
				
			||||||
 | 
					  // nVals = vsscanf( value.c_str(), format, args);
 | 
				
			||||||
 | 
					  // va_end( args);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  nVals = sscanf( value.c_str(), format,
 | 
				
			||||||
 | 
							  v1, v2, v3, v4, v5, v6, v7, v8,
 | 
				
			||||||
 | 
							  v9, v10, v11, v12, v13, v14, v15, v16);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return nVals;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteValue( string const keyname, string const valuename)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  long valueID = FindValue( unsigned(keyID), valuename);
 | 
				
			||||||
 | 
					  if ( valueID == noID)
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // This looks strange, but is neccessary.
 | 
				
			||||||
 | 
					  vector<string>::iterator npos = keys[keyID].names.begin() + valueID;
 | 
				
			||||||
 | 
					  vector<string>::iterator vpos = keys[keyID].values.begin() + valueID;
 | 
				
			||||||
 | 
					  keys[keyID].names.erase( npos, npos + 1);
 | 
				
			||||||
 | 
					  keys[keyID].values.erase( vpos, vpos + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteKey( string const keyname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Now hopefully this destroys the vector lists within keys.
 | 
				
			||||||
 | 
					  // Looking at <vector> source, this should be the case using the destructor.
 | 
				
			||||||
 | 
					  // If not, I may have to do it explicitly. Memory leak check should tell.
 | 
				
			||||||
 | 
					  // memleak_test.cpp shows that the following not required.
 | 
				
			||||||
 | 
					  //keys[keyID].names.clear();
 | 
				
			||||||
 | 
					  //keys[keyID].values.clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  vector<string>::iterator npos = names.begin() + keyID;
 | 
				
			||||||
 | 
					  vector<key>::iterator    kpos = keys.begin() + keyID;
 | 
				
			||||||
 | 
					  names.erase( npos, npos + 1);
 | 
				
			||||||
 | 
					  keys.erase( kpos, kpos + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CIniFile::Erase()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  // This loop not needed. The vector<> destructor seems to do
 | 
				
			||||||
 | 
					  // all the work itself. memleak_test.cpp shows this.
 | 
				
			||||||
 | 
					  //for ( unsigned i = 0; i < keys.size(); ++i) {
 | 
				
			||||||
 | 
					  //  keys[i].names.clear();
 | 
				
			||||||
 | 
					  //  keys[i].values.clear();
 | 
				
			||||||
 | 
					  //}
 | 
				
			||||||
 | 
					  names.clear();
 | 
				
			||||||
 | 
					  keys.clear();
 | 
				
			||||||
 | 
					  comments.clear();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CIniFile::HeaderComment( string const comment)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  comments.resize( comments.size() + 1, comment);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::HeaderComment( unsigned const commentID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( commentID < comments.size())
 | 
				
			||||||
 | 
					    return comments[commentID];
 | 
				
			||||||
 | 
					  return "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteHeaderComment( unsigned commentID)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( commentID < comments.size()) {
 | 
				
			||||||
 | 
					    vector<string>::iterator cpos = comments.begin() + commentID;
 | 
				
			||||||
 | 
					    comments.erase( cpos, cpos + 1);
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned CIniFile::NumKeyComments( unsigned const keyID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size())
 | 
				
			||||||
 | 
					    return keys[keyID].comments.size();
 | 
				
			||||||
 | 
					  return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					unsigned CIniFile::NumKeyComments( string const keyname) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					  return keys[keyID].comments.size();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::KeyComment( unsigned const keyID, string const comment)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size()) {
 | 
				
			||||||
 | 
					    keys[keyID].comments.resize( keys[keyID].comments.size() + 1, comment);
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::KeyComment( string const keyname, string const comment)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  return KeyComment( unsigned(keyID), comment);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::KeyComment( unsigned const keyID, unsigned const commentID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size() && commentID < keys[keyID].comments.size())
 | 
				
			||||||
 | 
					    return keys[keyID].comments[commentID];
 | 
				
			||||||
 | 
					  return "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::KeyComment( string const keyname, unsigned const commentID) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return "";
 | 
				
			||||||
 | 
					  return KeyComment( unsigned(keyID), commentID);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteKeyComment( unsigned const keyID, unsigned const commentID)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size() && commentID < keys[keyID].comments.size()) {
 | 
				
			||||||
 | 
					    vector<string>::iterator cpos = keys[keyID].comments.begin() + commentID;
 | 
				
			||||||
 | 
					    keys[keyID].comments.erase( cpos, cpos + 1);
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteKeyComment( string const keyname, unsigned const commentID)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  return DeleteKeyComment( unsigned(keyID), commentID);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteKeyComments( unsigned const keyID)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( keyID < keys.size()) {
 | 
				
			||||||
 | 
					    keys[keyID].comments.clear();
 | 
				
			||||||
 | 
					    return true;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CIniFile::DeleteKeyComments( string const keyname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  long keyID = FindKey( keyname);
 | 
				
			||||||
 | 
					  if ( keyID == noID)
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  return DeleteKeyComments( unsigned(keyID));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					string CIniFile::CheckCase( string s) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( caseInsensitive)
 | 
				
			||||||
 | 
					    for ( string::size_type i = 0; i < s.length(); ++i)
 | 
				
			||||||
 | 
					      s[i] = tolower(s[i]);
 | 
				
			||||||
 | 
					  return s;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,180 @@
 | 
				
			||||||
 | 
					// IniFile.cpp:  Implementation of the CIniFile class.
 | 
				
			||||||
 | 
					// Written by:   Adam Clauss
 | 
				
			||||||
 | 
					// Email: cabadam@tamu.edu
 | 
				
			||||||
 | 
					// You may use this class/code as you wish in your programs.  Feel free to distribute it, and
 | 
				
			||||||
 | 
					// email suggested changes to me.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Rewritten by: Shane Hill
 | 
				
			||||||
 | 
					// Date:         21/08/2001
 | 
				
			||||||
 | 
					// Email:        Shane.Hill@dsto.defence.gov.au
 | 
				
			||||||
 | 
					// Reason:       Remove dependancy on MFC. Code should compile on any
 | 
				
			||||||
 | 
					//               platform. Tested on Windows/Linux/Irix
 | 
				
			||||||
 | 
					//////////////////////////////////////////////////////////////////////
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef CIniFile_H
 | 
				
			||||||
 | 
					#define CIniFile_H
 | 
				
			||||||
 | 
					using namespace std;
 | 
				
			||||||
 | 
					// C++ Includes
 | 
				
			||||||
 | 
					#include <string>
 | 
				
			||||||
 | 
					#include <vector>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// C Includes
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAX_KEYNAME    128
 | 
				
			||||||
 | 
					#define MAX_VALUENAME  128
 | 
				
			||||||
 | 
					#define MAX_VALUEDATA 2048
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CIniFile  
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					  bool   caseInsensitive;
 | 
				
			||||||
 | 
					  string path;
 | 
				
			||||||
 | 
					  struct key {
 | 
				
			||||||
 | 
					    vector<string> names;
 | 
				
			||||||
 | 
					    vector<string> values; 
 | 
				
			||||||
 | 
					    vector<string> comments;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  vector<key>    keys; 
 | 
				
			||||||
 | 
					  vector<string> names; 
 | 
				
			||||||
 | 
					  vector<string> comments;
 | 
				
			||||||
 | 
					  string CheckCase( string s) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  enum errors{ noID = -1};
 | 
				
			||||||
 | 
					  CIniFile( string const iniPath = "");
 | 
				
			||||||
 | 
					  virtual ~CIniFile()                            {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Sets whether or not keynames and valuenames should be case sensitive.
 | 
				
			||||||
 | 
					  // The default is case insensitive.
 | 
				
			||||||
 | 
					  void CaseSensitive()                           {caseInsensitive = false;}
 | 
				
			||||||
 | 
					  void CaseInsensitive()                         {caseInsensitive = true;}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Sets path of ini file to read and write from.
 | 
				
			||||||
 | 
					  void Path(string const newPath)                {path = newPath;}
 | 
				
			||||||
 | 
					  string Path() const                            {return path;}
 | 
				
			||||||
 | 
					  void SetPath(string const newPath)             {Path( newPath);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Reads ini file specified using path.
 | 
				
			||||||
 | 
					  // Returns true if successful, false otherwise.
 | 
				
			||||||
 | 
					  bool ReadFile();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // Writes data stored in class to ini file.
 | 
				
			||||||
 | 
					  bool WriteFile(); 
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // Deletes all stored ini data.
 | 
				
			||||||
 | 
					  void Erase();
 | 
				
			||||||
 | 
					  void Clear()                                   {Erase();}
 | 
				
			||||||
 | 
					  void Reset()                                   {Erase();}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Returns index of specified key, or noID if not found.
 | 
				
			||||||
 | 
					  long FindKey( string const keyname) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Returns index of specified value, in the specified key, or noID if not found.
 | 
				
			||||||
 | 
					  long FindValue( unsigned const keyID, string const valuename) const;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Returns number of keys currently in the ini.
 | 
				
			||||||
 | 
					  unsigned NumKeys() const                       {return names.size();}
 | 
				
			||||||
 | 
					  unsigned GetNumKeys() const                    {return NumKeys();}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Add a key name.
 | 
				
			||||||
 | 
					  unsigned AddKeyName( string const keyname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Returns key names by index.
 | 
				
			||||||
 | 
					  string KeyName( unsigned const keyID) const;
 | 
				
			||||||
 | 
					  string GetKeyName( unsigned const keyID) const {return KeyName(keyID);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Returns number of values stored for specified key.
 | 
				
			||||||
 | 
					  unsigned NumValues( unsigned const keyID);
 | 
				
			||||||
 | 
					  unsigned GetNumValues( unsigned const keyID)   {return NumValues( keyID);}
 | 
				
			||||||
 | 
					  unsigned NumValues( string const keyname);
 | 
				
			||||||
 | 
					  unsigned GetNumValues( string const keyname)   {return NumValues( keyname);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Returns value name by index for a given keyname or keyID.
 | 
				
			||||||
 | 
					  string ValueName( unsigned const keyID, unsigned const valueID) const;
 | 
				
			||||||
 | 
					  string GetValueName( unsigned const keyID, unsigned const valueID) const {
 | 
				
			||||||
 | 
					    return ValueName( keyID, valueID);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  string ValueName( string const keyname, unsigned const valueID) const;
 | 
				
			||||||
 | 
					  string GetValueName( string const keyname, unsigned const valueID) const {
 | 
				
			||||||
 | 
					    return ValueName( keyname, valueID);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Gets value of [keyname] valuename =.
 | 
				
			||||||
 | 
					  // Overloaded to return string, int, and double.
 | 
				
			||||||
 | 
					  // Returns defValue if key/value not found.
 | 
				
			||||||
 | 
					  string GetValue( unsigned const keyID, unsigned const valueID, string const defValue = "") const;
 | 
				
			||||||
 | 
					  string GetValue(string const keyname, string const valuename, string const defValue = "") const; 
 | 
				
			||||||
 | 
					  int    GetValueI(string const keyname, string const valuename, int const defValue = 0) const;
 | 
				
			||||||
 | 
					  bool   GetValueB(string const keyname, string const valuename, bool const defValue = false) const {
 | 
				
			||||||
 | 
					    return bool( GetValueI( keyname, valuename, int( defValue)));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  double   GetValueF(string const keyname, string const valuename, double const defValue = 0.0) const;
 | 
				
			||||||
 | 
					  // This is a variable length formatted GetValue routine. All these voids
 | 
				
			||||||
 | 
					  // are required because there is no vsscanf() like there is a vsprintf().
 | 
				
			||||||
 | 
					  // Only a maximum of 8 variable can be read.
 | 
				
			||||||
 | 
					  unsigned GetValueV( string const keyname, string const valuename, char *format,
 | 
				
			||||||
 | 
							      void *v1 = 0, void *v2 = 0, void *v3 = 0, void *v4 = 0,
 | 
				
			||||||
 | 
					  		      void *v5 = 0, void *v6 = 0, void *v7 = 0, void *v8 = 0,
 | 
				
			||||||
 | 
					  		      void *v9 = 0, void *v10 = 0, void *v11 = 0, void *v12 = 0,
 | 
				
			||||||
 | 
					  		      void *v13 = 0, void *v14 = 0, void *v15 = 0, void *v16 = 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Sets value of [keyname] valuename =.
 | 
				
			||||||
 | 
					  // Specify the optional paramter as false (0) if you do not want it to create
 | 
				
			||||||
 | 
					  // the key if it doesn't exist. Returns true if data entered, false otherwise.
 | 
				
			||||||
 | 
					  // Overloaded to accept string, int, and double.
 | 
				
			||||||
 | 
					  bool SetValue( unsigned const keyID, unsigned const valueID, string const value);
 | 
				
			||||||
 | 
					  bool SetValue( string const keyname, string const valuename, string const value, bool const create = true);
 | 
				
			||||||
 | 
					  bool SetValueI( string const keyname, string const valuename, int const value, bool const create = true);
 | 
				
			||||||
 | 
					  bool SetValueB( string const keyname, string const valuename, bool const value, bool const create = true) {
 | 
				
			||||||
 | 
					    return SetValueI( keyname, valuename, int(value), create);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  bool SetValueF( string const keyname, string const valuename, double const value, bool const create = true);
 | 
				
			||||||
 | 
					  bool SetValueV( string const keyname, string const valuename, char *format, ...);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Deletes specified value.
 | 
				
			||||||
 | 
					  // Returns true if value existed and deleted, false otherwise.
 | 
				
			||||||
 | 
					  bool DeleteValue( string const keyname, string const valuename);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  // Deletes specified key and all values contained within.
 | 
				
			||||||
 | 
					  // Returns true if key existed and deleted, false otherwise.
 | 
				
			||||||
 | 
					  bool DeleteKey(string keyname);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Header comment functions.
 | 
				
			||||||
 | 
					  // Header comments are those comments before the first key.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Number of header comments.
 | 
				
			||||||
 | 
					  unsigned NumHeaderComments()                  {return comments.size();}
 | 
				
			||||||
 | 
					  // Add a header comment.
 | 
				
			||||||
 | 
					  void     HeaderComment( string const comment);
 | 
				
			||||||
 | 
					  // Return a header comment.
 | 
				
			||||||
 | 
					  string   HeaderComment( unsigned const commentID) const;
 | 
				
			||||||
 | 
					  // Delete a header comment.
 | 
				
			||||||
 | 
					  bool     DeleteHeaderComment( unsigned commentID);
 | 
				
			||||||
 | 
					  // Delete all header comments.
 | 
				
			||||||
 | 
					  void     DeleteHeaderComments()               {comments.clear();}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Key comment functions.
 | 
				
			||||||
 | 
					  // Key comments are those comments within a key. Any comments
 | 
				
			||||||
 | 
					  // defined within value names will be added to this list. Therefore,
 | 
				
			||||||
 | 
					  // these comments will be moved to the top of the key definition when
 | 
				
			||||||
 | 
					  // the CIniFile::WriteFile() is called.
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Number of key comments.
 | 
				
			||||||
 | 
					  unsigned NumKeyComments( unsigned const keyID) const;
 | 
				
			||||||
 | 
					  unsigned NumKeyComments( string const keyname) const;
 | 
				
			||||||
 | 
					  // Add a key comment.
 | 
				
			||||||
 | 
					  bool     KeyComment( unsigned const keyID, string const comment);
 | 
				
			||||||
 | 
					  bool     KeyComment( string const keyname, string const comment);
 | 
				
			||||||
 | 
					  // Return a key comment.
 | 
				
			||||||
 | 
					  string   KeyComment( unsigned const keyID, unsigned const commentID) const;
 | 
				
			||||||
 | 
					  string   KeyComment( string const keyname, unsigned const commentID) const;
 | 
				
			||||||
 | 
					  // Delete a key comment.
 | 
				
			||||||
 | 
					  bool     DeleteKeyComment( unsigned const keyID, unsigned const commentID);
 | 
				
			||||||
 | 
					  bool     DeleteKeyComment( string const keyname, unsigned const commentID);
 | 
				
			||||||
 | 
					  // Delete all comments for a key.
 | 
				
			||||||
 | 
					  bool     DeleteKeyComments( unsigned const keyID);
 | 
				
			||||||
 | 
					  bool     DeleteKeyComments( string const keyname);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,175 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include "PwmTime.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPwmTime::Set(unsigned char* pBytes){
 | 
				
			||||||
 | 
					UINT32 dw1, dw2, dw3, dw4, dw5;
 | 
				
			||||||
 | 
					dw1 = (UINT32)pBytes[0]; dw2 = (UINT32)pBytes[1]; dw3 = (UINT32)pBytes[2];
 | 
				
			||||||
 | 
					dw4 = (UINT32)pBytes[3]; dw5 = (UINT32)pBytes[4];
 | 
				
			||||||
 | 
					// Unpack 5 byte structure to date and time
 | 
				
			||||||
 | 
					///@FIXME nicht Endian-sicher
 | 
				
			||||||
 | 
					Year = (dw1 << 6) | (dw2 >> 2);
 | 
				
			||||||
 | 
					Month = ((dw2 & 0x00000003) << 2) | (dw3 >> 6);
 | 
				
			||||||
 | 
					Day = (dw3 >> 1) & 0x0000001F;
 | 
				
			||||||
 | 
					Hour = ((dw3 & 0x00000001) << 4) | (dw4 >> 4);
 | 
				
			||||||
 | 
					Minute = ((dw4 & 0x0000000F) << 2) | (dw5 >> 6);
 | 
				
			||||||
 | 
					Second = dw5 & 0x0000003F;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPwmTime::GetPackedTime(unsigned char* pBytes){
 | 
				
			||||||
 | 
					///@FIXME nicht Endian-sicher
 | 
				
			||||||
 | 
					pBytes[0] = (UINT8)(((UINT32)Year >> 6) & 0x0000003F);
 | 
				
			||||||
 | 
					pBytes[1] = (UINT8)((((UINT32)Year & 0x0000003F) << 2) | (((UINT32)Month >> 2) & 0x00000003));
 | 
				
			||||||
 | 
					pBytes[2] = (UINT8)((((UINT32)Month & 0x00000003) << 6) | (((UINT32)Day & 0x0000001F) << 1) | (((UINT32)Hour >> 4) & 0x00000001));
 | 
				
			||||||
 | 
					pBytes[3] = (UINT8)((((UINT32)Hour & 0x0000000F) << 4) | (((UINT32)Minute >> 2) & 0x0000000F));
 | 
				
			||||||
 | 
					pBytes[4] = (UINT8)((((UINT32)Minute & 0x00000003) << 6) | ((UINT32)Second & 0x0000003F));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString CPwmTime::GetString(UINT16 format){
 | 
				
			||||||
 | 
					QString str;
 | 
				
			||||||
 | 
					switch(format){
 | 
				
			||||||
 | 
						case 0:
 | 
				
			||||||
 | 
						//DD.MM.YYYY HH:MM:SS
 | 
				
			||||||
 | 
						str=(QString)"%1.%2.%3 %4:%5:%6";
 | 
				
			||||||
 | 
						break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						case 1:
 | 
				
			||||||
 | 
						//MM/DD/YYYY HH:MM:SS
 | 
				
			||||||
 | 
						str=(QString)"%2/%1/%3 %4:%5:%6";
 | 
				
			||||||
 | 
						break;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Day<10){
 | 
				
			||||||
 | 
					str=str.arg(((QString)"0"+QString::number(Day)));
 | 
				
			||||||
 | 
					}else{
 | 
				
			||||||
 | 
					str=str.arg(Day);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Month<10){
 | 
				
			||||||
 | 
					str=str.arg(((QString)"0"+QString::number(Month)));
 | 
				
			||||||
 | 
					}else{
 | 
				
			||||||
 | 
					str=str.arg(Month);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					str=str.arg(Year);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Hour<10){
 | 
				
			||||||
 | 
					str=str.arg(((QString)"0"+QString::number(Hour)));
 | 
				
			||||||
 | 
					}else{
 | 
				
			||||||
 | 
					str=str.arg(Hour);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Minute<10){
 | 
				
			||||||
 | 
					str=str.arg(((QString)"0"+QString::number(Minute)));
 | 
				
			||||||
 | 
					}else{
 | 
				
			||||||
 | 
					str=str.arg(Minute);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(Second<10){
 | 
				
			||||||
 | 
					str=str.arg(((QString)"0"+QString::number(Second)));
 | 
				
			||||||
 | 
					}else{
 | 
				
			||||||
 | 
					str=str.arg(Second);}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return str;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPwmTime::Set(UINT8 iDay,UINT8 iMonth,UINT16 iYear,UINT8 iHour,UINT8 iMinute,UINT8 iSecond){
 | 
				
			||||||
 | 
					Day=iDay;
 | 
				
			||||||
 | 
					Month=iMonth;
 | 
				
			||||||
 | 
					Year=iYear;
 | 
				
			||||||
 | 
					Hour=iHour;
 | 
				
			||||||
 | 
					Minute=iMinute;
 | 
				
			||||||
 | 
					Second=iSecond;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CPwmTime::IsValidDate(QString& s){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(s.length()>10)return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int count=0;
 | 
				
			||||||
 | 
					for(int i=0;i<s.length();i++){
 | 
				
			||||||
 | 
					if(s[i]=='.')count++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(count!=2)return false;
 | 
				
			||||||
 | 
					bool conv_error[3];
 | 
				
			||||||
 | 
					int day=s.section(".",0,0).toInt(&conv_error[0]);
 | 
				
			||||||
 | 
					int month=s.section(".",1,1).toInt(&conv_error[1]);
 | 
				
			||||||
 | 
					int year=s.section(".",2,2).toInt(&conv_error[2]);
 | 
				
			||||||
 | 
					if(conv_error[0]==false || conv_error[1]==false || conv_error[2]==false)return false;
 | 
				
			||||||
 | 
					if(day>31 || day<1 || month>12 || month<1 || year<0 || year>2999)return false;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CPwmTime::IsValidTime(QString& s){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if(s.length()>8)return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int count=0;
 | 
				
			||||||
 | 
					for(int i=0;i<s.length();i++){
 | 
				
			||||||
 | 
					if(s[i]==':')count++;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					if(count!=2)return false;
 | 
				
			||||||
 | 
					bool conv_error[3];
 | 
				
			||||||
 | 
					int hour=s.section(":",0,0).toInt(&conv_error[0]);
 | 
				
			||||||
 | 
					int minute=s.section(":",1,1).toInt(&conv_error[1]);
 | 
				
			||||||
 | 
					int second=s.section(":",2,2).toInt(&conv_error[2]);
 | 
				
			||||||
 | 
					if(conv_error[0]==false || conv_error[1]==false || conv_error[2]==false)return false;
 | 
				
			||||||
 | 
					if(hour>23 || hour<0 || minute>59 || minute<0 || second>59 || second<0)return false;
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CPwmTime::SetDate(QString s){
 | 
				
			||||||
 | 
					if(IsValidDate(s)==false)return false;
 | 
				
			||||||
 | 
					Day=s.section(".",0,0).toInt();
 | 
				
			||||||
 | 
					Month=s.section(".",1,1).toInt();
 | 
				
			||||||
 | 
					Year=s.section(".",2,2).toInt();
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CPwmTime::SetTime(QString s){
 | 
				
			||||||
 | 
					if(IsValidTime(s)==false)return false;
 | 
				
			||||||
 | 
					Hour=s.section(":",0,0).toInt();
 | 
				
			||||||
 | 
					Minute=s.section(":",1,1).toInt();
 | 
				
			||||||
 | 
					Second=s.section(":",2,2).toInt();
 | 
				
			||||||
 | 
					return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void CPwmTime::SetToNow(){
 | 
				
			||||||
 | 
					time_t curTime=time(NULL);
 | 
				
			||||||
 | 
					tm* current=localtime(&curTime);
 | 
				
			||||||
 | 
					Year=current->tm_year+1900;
 | 
				
			||||||
 | 
					Month=current->tm_mon;
 | 
				
			||||||
 | 
					Day=current->tm_mday;
 | 
				
			||||||
 | 
					Hour=current->tm_hour;
 | 
				
			||||||
 | 
					Minute=current->tm_min;
 | 
				
			||||||
 | 
					Second=current->tm_sec;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CPwmTime::operator==(const CPwmTime& t){
 | 
				
			||||||
 | 
					if(   Year==t.Year
 | 
				
			||||||
 | 
					   && Month==t.Month
 | 
				
			||||||
 | 
					   && Day==t.Day
 | 
				
			||||||
 | 
					   && Hour==t.Hour
 | 
				
			||||||
 | 
					   && Minute==t.Minute
 | 
				
			||||||
 | 
					   && Second==t.Second) return true;
 | 
				
			||||||
 | 
					else return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool CPwmTime::operator!=(const CPwmTime& t){
 | 
				
			||||||
 | 
					return !(*this==t);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _PWMTIME_H_
 | 
				
			||||||
 | 
					#define _PWMTIME_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qglobal.h>
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					class CPwmTime;
 | 
				
			||||||
 | 
					class CPwmTime{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  UINT16 Year;
 | 
				
			||||||
 | 
					  UINT8 Month;
 | 
				
			||||||
 | 
					  UINT8 Day;
 | 
				
			||||||
 | 
					  UINT8 Hour;
 | 
				
			||||||
 | 
					  UINT8 Minute;
 | 
				
			||||||
 | 
					  UINT8 Second;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  QString GetString(UINT16 format);
 | 
				
			||||||
 | 
					  void Set(UINT8,UINT8,UINT16,UINT8,UINT8,UINT8);
 | 
				
			||||||
 | 
					  void Set(unsigned char* packedTime);
 | 
				
			||||||
 | 
					  void GetPackedTime(unsigned char* dst);
 | 
				
			||||||
 | 
					  static bool IsValidDate(QString& string);
 | 
				
			||||||
 | 
					  static bool IsValidTime(QString& string);
 | 
				
			||||||
 | 
					  bool SetDate(QString string);
 | 
				
			||||||
 | 
					  bool SetTime(QString string);
 | 
				
			||||||
 | 
					  void SetToNow();
 | 
				
			||||||
 | 
					  bool operator==(const CPwmTime& t);
 | 
				
			||||||
 | 
					  bool operator!=(const CPwmTime& t);
 | 
				
			||||||
 | 
					//  bool operator>(const CPwmTime& t);
 | 
				
			||||||
 | 
					//  bool operator<(const CPwmTime& t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,105 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "SecString.h"
 | 
				
			||||||
 | 
					#include <qmessagebox.h>
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					#include "random.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					UINT8 SecString::Key[32]={0};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SecString::SecString(){
 | 
				
			||||||
 | 
					data=NULL;
 | 
				
			||||||
 | 
					len=0;
 | 
				
			||||||
 | 
					cryptlen=0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SecString::~SecString(){
 | 
				
			||||||
 | 
					//if(data)delete [] data; ///@FIXME zerschießt den Stack, aber warum???
 | 
				
			||||||
 | 
					overwrite(plaintext);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecString::getString(QString & str){
 | 
				
			||||||
 | 
					if(data){
 | 
				
			||||||
 | 
					Rijndael aes;
 | 
				
			||||||
 | 
					int r=aes.init(Rijndael::CBC, Rijndael::Decrypt,Key,Rijndael::Key32Bytes);
 | 
				
			||||||
 | 
					if(r){ cout << "AES error, code " << r << endl;
 | 
				
			||||||
 | 
					       exit(-1);}
 | 
				
			||||||
 | 
					char* out=new char[len];
 | 
				
			||||||
 | 
					r=aes.padDecrypt((unsigned char*)data,cryptlen,(unsigned char*)out);
 | 
				
			||||||
 | 
					if(r!=len){ cout << "AES error in SecString::getString(), r!=length, r=" << r << endl;
 | 
				
			||||||
 | 
					       	       exit(-1);}
 | 
				
			||||||
 | 
					str=QString::fromUtf8(out,len);
 | 
				
			||||||
 | 
					overwrite(out,len);
 | 
				
			||||||
 | 
					delete [] out;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QString& SecString::getString(){
 | 
				
			||||||
 | 
					getString(plaintext);
 | 
				
			||||||
 | 
					return plaintext;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecString::delRef(){
 | 
				
			||||||
 | 
					overwrite(plaintext);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecString::setString(QString& str,bool DelSrc){
 | 
				
			||||||
 | 
					Rijndael aes;
 | 
				
			||||||
 | 
					int r=aes.init(Rijndael::CBC, Rijndael::Encrypt,Key,Rijndael::Key32Bytes);
 | 
				
			||||||
 | 
					if(r){ cout << "AES error, code " << r << endl;
 | 
				
			||||||
 | 
					       exit(-1);}
 | 
				
			||||||
 | 
					int il=str.length();
 | 
				
			||||||
 | 
					char* input=new char[il];
 | 
				
			||||||
 | 
					char* output=new char[il+16];
 | 
				
			||||||
 | 
					memcpy(input,str.utf8(),il);
 | 
				
			||||||
 | 
					r=aes.padEncrypt((unsigned char*)input,il,(unsigned char*)output);
 | 
				
			||||||
 | 
					if(r<0){ cout << "AES error, code " << r << endl;
 | 
				
			||||||
 | 
					         exit(-1);}
 | 
				
			||||||
 | 
					cryptlen=r;
 | 
				
			||||||
 | 
					len=il;
 | 
				
			||||||
 | 
					if(data)delete [] data;
 | 
				
			||||||
 | 
					data=output;
 | 
				
			||||||
 | 
					overwrite(input,il);
 | 
				
			||||||
 | 
					delete [] input;
 | 
				
			||||||
 | 
					if(DelSrc)overwrite(str);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecString::overwrite(char* str,int strlen){
 | 
				
			||||||
 | 
					if(strlen==0 || str==NULL)return;
 | 
				
			||||||
 | 
					getRandomBytes(str,strlen,1,false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecString::overwrite(QString &str){
 | 
				
			||||||
 | 
					if(str.length()==0)return;
 | 
				
			||||||
 | 
					char* tmp=new char[str.length()];
 | 
				
			||||||
 | 
					getRandomBytes(tmp,str.length(),1,false);
 | 
				
			||||||
 | 
					str=tmp;
 | 
				
			||||||
 | 
					delete [] tmp;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int SecString::length(){
 | 
				
			||||||
 | 
					return len;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecString::generateSessionKey(){
 | 
				
			||||||
 | 
					getRandomBytes(Key,32,1,false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#ifndef _SECSTRING_H_
 | 
				
			||||||
 | 
					#define _SECSTRING_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qstring.h>
 | 
				
			||||||
 | 
					#include <qglobal.h>
 | 
				
			||||||
 | 
					#include "crypto/rijndael.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SecString{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					 SecString(unsigned char* key);
 | 
				
			||||||
 | 
					 SecString();
 | 
				
			||||||
 | 
					 ~SecString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void getString(QString& str);
 | 
				
			||||||
 | 
					 QString& getString();
 | 
				
			||||||
 | 
					 void setString(QString& str, bool DelSrc=false);
 | 
				
			||||||
 | 
					 void delRef();
 | 
				
			||||||
 | 
					 static void overwrite(char* str,int len);
 | 
				
			||||||
 | 
					 static void overwrite(QString& str);
 | 
				
			||||||
 | 
					 int length();
 | 
				
			||||||
 | 
					 static void generateSessionKey();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					 static UINT8 Key[32];
 | 
				
			||||||
 | 
					 QString plaintext;
 | 
				
			||||||
 | 
					 char* data;
 | 
				
			||||||
 | 
					 int len;
 | 
				
			||||||
 | 
					 int cryptlen;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,55 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "UrlLabel.h"
 | 
				
			||||||
 | 
					#include <qfont.h>
 | 
				
			||||||
 | 
					#include <qcolor.h>
 | 
				
			||||||
 | 
					#include <qcursor.h>
 | 
				
			||||||
 | 
					#include <qfontmetrics.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LinkLabel::LinkLabel(QWidget *parent, const char* name,const QString& text, int x, int y,WFlags f) : QLabel(parent,name,f){
 | 
				
			||||||
 | 
					QFont font(parentWidget()->font()); font.setUnderline(true);
 | 
				
			||||||
 | 
					setFont(font);
 | 
				
			||||||
 | 
					setPaletteForegroundColor(QColor(20,20,255));
 | 
				
			||||||
 | 
					setCursor(PointingHandCursor);
 | 
				
			||||||
 | 
					setText(text);
 | 
				
			||||||
 | 
					setPos(x,y);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LinkLabel::~LinkLabel(){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LinkLabel::mouseReleaseEvent(QMouseEvent* event){
 | 
				
			||||||
 | 
					if(event->button()==LeftButton)
 | 
				
			||||||
 | 
					clicked();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LinkLabel::setPos(int x,int y){
 | 
				
			||||||
 | 
					QFontMetrics fm(font());
 | 
				
			||||||
 | 
					setGeometry(x,y,fm.width(text()),fm.height());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void LinkLabel::setText(const QString& text){
 | 
				
			||||||
 | 
					QLabel::setText(text);
 | 
				
			||||||
 | 
					setPos(geometry().x(),geometry().y());
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _LINKLABEL_H_
 | 
				
			||||||
 | 
					#define _LINKLABEL_H_
 | 
				
			||||||
 | 
					#include <qlabel.h>
 | 
				
			||||||
 | 
					#include <qsignal.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LinkLabel : public QLabel{
 | 
				
			||||||
 | 
					Q_OBJECT
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					LinkLabel(QWidget *parent, const char* name = 0,const QString& text=QString::null, int x=0, int y=0,WFlags f=0);
 | 
				
			||||||
 | 
					~LinkLabel();
 | 
				
			||||||
 | 
					void setPos(int x,int y);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					virtual void setText(const QString&);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					signals:
 | 
				
			||||||
 | 
					 void clicked();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					virtual void mouseReleaseEvent(QMouseEvent* event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					#include <iostream.h>
 | 
				
			||||||
 | 
					#include <fstream.h>
 | 
				
			||||||
 | 
					#include <qdatetime.h>
 | 
				
			||||||
 | 
					#include <qobject.h>
 | 
				
			||||||
 | 
					#include "random.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void getRandomBytes(void* buffer,int NumBlocks,int BlockSize,bool Strong){
 | 
				
			||||||
 | 
					FILE *dev_random;
 | 
				
			||||||
 | 
					if(Strong){
 | 
				
			||||||
 | 
					dev_random = fopen("/dev/random","r");}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					dev_random = fopen("/dev/urandom","r");}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (dev_random==NULL){
 | 
				
			||||||
 | 
					 cout << QObject::tr("/dev/random konnte nicht geöffnet werden - nutze Standardbibliothek (stdlib)") << endl;
 | 
				
			||||||
 | 
					 srand(QTime(0,0,0).secsTo(QTime::currentTime()));
 | 
				
			||||||
 | 
					 for(int i=0;i<NumBlocks*BlockSize;i++){
 | 
				
			||||||
 | 
						UINT8 rnd=rand()%256;
 | 
				
			||||||
 | 
						((UINT8*)buffer)[i]=rnd;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					 return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					else{
 | 
				
			||||||
 | 
					fread(buffer,BlockSize,NumBlocks,dev_random);
 | 
				
			||||||
 | 
					fclose(dev_random);
 | 
				
			||||||
 | 
					return;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   mail@tarek-saidi.de                                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					extern void getRandomBytes(void* buffer,int NumBlocks,int BlockSize,bool Strong=false);
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,92 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "pwsafe.h"
 | 
				
			||||||
 | 
					#include <qapplication.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    QApplication app(argc,argv);
 | 
				
			||||||
 | 
					    PwSafe *mainWin = 0;
 | 
				
			||||||
 | 
					    /// @todo do something with the command line args here
 | 
				
			||||||
 | 
					    mainWin = new PwSafe(&app);
 | 
				
			||||||
 | 
					    app.setMainWidget( mainWin );
 | 
				
			||||||
 | 
					    mainWin->show();
 | 
				
			||||||
 | 
					    return app.exec();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/********* KDE **************
 | 
				
			||||||
 | 
					#include <kapplication.h>
 | 
				
			||||||
 | 
					#include <kaboutdata.h>
 | 
				
			||||||
 | 
					#include <kcmdlineargs.h>
 | 
				
			||||||
 | 
					#include <klocale.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const char description[] =
 | 
				
			||||||
 | 
					    I18N_NOOP("A KDE KPart Application");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const char version[] = "0.1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static KCmdLineOptions options[] =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					//    { "+[URL]", I18N_NOOP( "Document to open" ), 0 },
 | 
				
			||||||
 | 
					    KCmdLineLastOption
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main(int argc, char **argv)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    KAboutData about("Keepass", I18N_NOOP("Keepass"), version, description,
 | 
				
			||||||
 | 
					                     KAboutData::License_BSD, "(C) %{YEAR} Tarek Saidi", 0, 0, "tareks@arcor.de");
 | 
				
			||||||
 | 
					    about.addAuthor( "Tarek Saidi", 0, "tareks@arcor.de" );
 | 
				
			||||||
 | 
					    KCmdLineArgs::init(argc, argv, &about);
 | 
				
			||||||
 | 
					    KCmdLineArgs::addCmdLineOptions( options );
 | 
				
			||||||
 | 
					    KApplication app;
 | 
				
			||||||
 | 
					    PwSafe *mainWin = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (app.isRestored())
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        RESTORE(PwSafe);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // no session.. just start up normally
 | 
				
			||||||
 | 
					        KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /// @todo do something with the command line args here
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mainWin = new PwSafe();
 | 
				
			||||||
 | 
					        app.setMainWidget( mainWin );
 | 
				
			||||||
 | 
					        mainWin->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        args->clear();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // mainWin has WDestructiveClose flag by default, so it will delete itself.
 | 
				
			||||||
 | 
					    return app.exec();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,167 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek.saidi@arcor.de                                                  *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef MAINWINDOW_H
 | 
				
			||||||
 | 
					#define MAINWINDOW_H
 | 
				
			||||||
 | 
					#include <qimage.h>
 | 
				
			||||||
 | 
					#include <qpixmap.h>
 | 
				
			||||||
 | 
					#include <qpainter.h>
 | 
				
			||||||
 | 
					#include <qfont.h>
 | 
				
			||||||
 | 
					#include <qlabel.h>
 | 
				
			||||||
 | 
					#include <qtimer.h>
 | 
				
			||||||
 | 
					#include <qapplication.h>
 | 
				
			||||||
 | 
					#include "ui_MainWindow.h"
 | 
				
			||||||
 | 
					#include "ListViews.h"
 | 
				
			||||||
 | 
					#include "PwmConfig.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef vector<GroupItem*>::iterator GroupItemItr;
 | 
				
			||||||
 | 
					typedef vector<EntryItem*>::iterator EntryItemItr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CMainWindow : public MainFrame{
 | 
				
			||||||
 | 
					Q_OBJECT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  /*$PUBLIC_FUNCTIONS$*/
 | 
				
			||||||
 | 
					  CMainWindow(QApplication* app, QWidget* parent = 0,const char* name = 0, WFlags fl = 0 );
 | 
				
			||||||
 | 
					  ~CMainWindow();
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					  /*$PROTECTED_FUNCTIONS$*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected slots:
 | 
				
			||||||
 | 
					  /*$PROTECTED_SLOTS$*/
 | 
				
			||||||
 | 
					  virtual void showEvent(QShowEvent *e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public slots:
 | 
				
			||||||
 | 
					    /*$PUBLIC_SLOTS$*/
 | 
				
			||||||
 | 
					    virtual void OnClose();
 | 
				
			||||||
 | 
					    virtual void OnMainWinResize();
 | 
				
			||||||
 | 
					    virtual void OnFileOpen();
 | 
				
			||||||
 | 
					    virtual void OnGroupChanged(QListViewItem*);
 | 
				
			||||||
 | 
					    virtual void OnEntryChanged(QListViewItem*);
 | 
				
			||||||
 | 
					    virtual void OnEntryDoubleClicked(QListViewItem*,const QPoint&,int);
 | 
				
			||||||
 | 
					    virtual void OnMenu_closeDB();
 | 
				
			||||||
 | 
					    virtual void OnFileSaveAs();
 | 
				
			||||||
 | 
					    virtual void OnFileSave();
 | 
				
			||||||
 | 
					    virtual void OnMenuExit();
 | 
				
			||||||
 | 
					    virtual void OnAddGroup();
 | 
				
			||||||
 | 
					    virtual void OnUserNameToClipboard();
 | 
				
			||||||
 | 
					    virtual void OnPasswordToClipboard();
 | 
				
			||||||
 | 
					    virtual void OnDeleteGroup();
 | 
				
			||||||
 | 
					    virtual void OnEditGroup();
 | 
				
			||||||
 | 
					    virtual void OnAddSubGroup();
 | 
				
			||||||
 | 
					    virtual void OnClipboardTimerEvent();
 | 
				
			||||||
 | 
					    virtual void OnOpenURL();
 | 
				
			||||||
 | 
					    virtual void OnGroupSearch();
 | 
				
			||||||
 | 
					    virtual void OnGlobalSearch();
 | 
				
			||||||
 | 
					    virtual void OnDeleteEntry();
 | 
				
			||||||
 | 
					    virtual void OnCopyEntry();
 | 
				
			||||||
 | 
					    virtual void OnEditEntry();
 | 
				
			||||||
 | 
					    virtual void OnAddEntry();
 | 
				
			||||||
 | 
					    virtual void OnSaveAttachment();
 | 
				
			||||||
 | 
					    virtual void OnEntryRightClicked(QListViewItem* item, const QPoint& pos,int column);
 | 
				
			||||||
 | 
					    virtual void OnEntryCtxMenuClicked(int id);
 | 
				
			||||||
 | 
					    virtual void OnGroupRightClicked(QListViewItem* item, const QPoint& pos, int column);
 | 
				
			||||||
 | 
					    virtual void OnGroupCtxMenuClicked(int id);
 | 
				
			||||||
 | 
					    virtual void OnChangeDbKey();
 | 
				
			||||||
 | 
					    virtual void OnDbSettings();
 | 
				
			||||||
 | 
					    virtual void OnFileNew();
 | 
				
			||||||
 | 
					    virtual void OnViewToolbarToggled(bool toggled);
 | 
				
			||||||
 | 
					    virtual void OnViewEntryDetailsToggled(bool toggled);
 | 
				
			||||||
 | 
					    virtual void OnHelpAbout();
 | 
				
			||||||
 | 
					    virtual void OnSettings();
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnUrlToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnTitleToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnCreationToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnLastAccessToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnLastModToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnCommentToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnPasswordToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnAttachmentToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnExpireToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnView_ColumnUsernameToggled(bool value);
 | 
				
			||||||
 | 
					    virtual void OnExtrasLanguage();
 | 
				
			||||||
 | 
					    virtual void OnSearchGroupCtxMenuClicked(int);
 | 
				
			||||||
 | 
					    virtual void OnQickSearch();
 | 
				
			||||||
 | 
					    virtual void OnGroupItemExpanded(QListViewItem* item);
 | 
				
			||||||
 | 
					    virtual void OnGroupItemCollapsed(QListViewItem* item);
 | 
				
			||||||
 | 
					    virtual void DEBUG_OnPrintDbStucture();
 | 
				
			||||||
 | 
					    virtual void OnImportPwManagerFile();
 | 
				
			||||||
 | 
					    virtual void OnView_HideUsernamesToggled(bool state);
 | 
				
			||||||
 | 
					    virtual void OnView_HidePasswordsToggled(bool state);
 | 
				
			||||||
 | 
					    virtual void OnGroupViewDrop(QDropEvent* e);
 | 
				
			||||||
 | 
					    virtual void OnHelpAboutQt();
 | 
				
			||||||
 | 
					    virtual void OnImportKWalletXML();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  PwDatabase* db;
 | 
				
			||||||
 | 
					  vector<GroupItem*> GroupItems;
 | 
				
			||||||
 | 
					  vector<EntryItem*> EntryItems;
 | 
				
			||||||
 | 
					  vector<unsigned long> SearchResults;
 | 
				
			||||||
 | 
					  QString img_res_dir;
 | 
				
			||||||
 | 
					  QPixmap* EntryIcons;
 | 
				
			||||||
 | 
					  QPixmap* Icon_Key32x32;
 | 
				
			||||||
 | 
					  QPixmap* Icon_Settings32x32;
 | 
				
			||||||
 | 
					  QPixmap* Icon_Search32x32;
 | 
				
			||||||
 | 
					  QPixmap* Icon_I18n32x32;
 | 
				
			||||||
 | 
					  QPixmap* Icon_Ok16x16;
 | 
				
			||||||
 | 
					  QTimer ClipboardTimer;
 | 
				
			||||||
 | 
					  QString appdir;
 | 
				
			||||||
 | 
					  CConfig config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 enum FileMenuState{STATE_FileOpen,
 | 
				
			||||||
 | 
									STATE_NoFileOpen};
 | 
				
			||||||
 | 
					 enum EditMenuState{STATE_NoGroupSelected,
 | 
				
			||||||
 | 
									STATE_NoEntrySelected,
 | 
				
			||||||
 | 
									STATE_SingleGroupSelected,
 | 
				
			||||||
 | 
									STATE_SingleEntrySelected};
 | 
				
			||||||
 | 
					 void InitMenus();
 | 
				
			||||||
 | 
					 void SetFileMenuState(FileMenuState status);
 | 
				
			||||||
 | 
					 void SetEditMenuState(EditMenuState status);
 | 
				
			||||||
 | 
					 void LoadImg(QString name,QImage &tmpImg);
 | 
				
			||||||
 | 
					 void SetupColumns();
 | 
				
			||||||
 | 
					 void ResizeColumns();
 | 
				
			||||||
 | 
					 void OpenDatabase(QString filename);
 | 
				
			||||||
 | 
					 void CreateBanner(QLabel *Banner,QPixmap* symbol,QString text);
 | 
				
			||||||
 | 
					 void CreateBanner(QLabel *Banner,QPixmap* symbol,QString text,QColor color1,QColor color2,QColor textcolor);
 | 
				
			||||||
 | 
					 void CloseDataBase();
 | 
				
			||||||
 | 
					 void OpenURL(QString url);
 | 
				
			||||||
 | 
					 GroupItem* getLastSameLevelItem(int i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void setCurrentGroup(GroupItem* item);
 | 
				
			||||||
 | 
					 void updateEntryView();
 | 
				
			||||||
 | 
					 void updateGroupView();
 | 
				
			||||||
 | 
					 GroupItem* CurrentGroup;
 | 
				
			||||||
 | 
					 EntryItem* CurrentEntry;
 | 
				
			||||||
 | 
					 QClipboard* Clipboard;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					 bool isInSearchResults(CEntry*);
 | 
				
			||||||
 | 
					 void Search(CGroup* pGroup=NULL);
 | 
				
			||||||
 | 
					 QApplication* App;
 | 
				
			||||||
 | 
					 QTranslator* translator;
 | 
				
			||||||
 | 
					 bool modflag;
 | 
				
			||||||
 | 
					 void setModFlag(bool);
 | 
				
			||||||
 | 
					 bool FileOpen;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					#include "pwsafe.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PwSafe::PwSafe(QApplication* app):QMainWindow( 0, "Keepass",WDestructiveClose)
 | 
				
			||||||
 | 
					{   mainWin=new CMainWindow(app,this);
 | 
				
			||||||
 | 
					    setCentralWidget( mainWin );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PwSafe::~PwSafe()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    delete mainWin;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					 *   Copyright (C) 2005 by Tarek Saidi                                     *
 | 
				
			||||||
 | 
					 *   tarek@linux                                                           *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is free software; you can redistribute it and/or modify  *
 | 
				
			||||||
 | 
					 *   it under the terms of the GNU General Public License as published by  *
 | 
				
			||||||
 | 
					 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
				
			||||||
 | 
					 *   (at your option) any later version.                                   *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   This program is distributed in the hope that it will be useful,       *
 | 
				
			||||||
 | 
					 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 | 
				
			||||||
 | 
					 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 | 
				
			||||||
 | 
					 *   GNU General Public License for more details.                          *
 | 
				
			||||||
 | 
					 *                                                                         *
 | 
				
			||||||
 | 
					 *   You should have received a copy of the GNU General Public License     *
 | 
				
			||||||
 | 
					 *   along with this program; if not, write to the                         *
 | 
				
			||||||
 | 
					 *   Free Software Foundation, Inc.,                                       *
 | 
				
			||||||
 | 
					 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 | 
				
			||||||
 | 
					 ***************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _PWSAFE_H_
 | 
				
			||||||
 | 
					#define _PWSAFE_H_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <qapplication.h>
 | 
				
			||||||
 | 
					#include <qmainwindow.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CMainWindow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PwSafe : public QMainWindow
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Q_OBJECT
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Default Constructor
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    PwSafe(QApplication*);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Default Destructor
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    virtual ~PwSafe();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					  CMainWindow *mainWin;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _PWSAFE_H_
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,96 @@
 | 
				
			||||||
 | 
					# Diese Datei wurde mit dem qmake-Manager von KDevelop erstellt. 
 | 
				
			||||||
 | 
					# ------------------------------------------- 
 | 
				
			||||||
 | 
					# Unterordner relativ zum Projektordner: ./src
 | 
				
			||||||
 | 
					# Das Target ist eine Anwendung:  ../bin/keepass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					INSTALLS += Share \
 | 
				
			||||||
 | 
					            target 
 | 
				
			||||||
 | 
					target.path = /usr/local/bin 
 | 
				
			||||||
 | 
					Share.files += ../share/keepass/* 
 | 
				
			||||||
 | 
					Share.path = /usr/local/share/keepass 
 | 
				
			||||||
 | 
					MOC_DIR = ../build/moc 
 | 
				
			||||||
 | 
					UI_DIR = ../build/ui 
 | 
				
			||||||
 | 
					OBJECTS_DIR = ../build/ 
 | 
				
			||||||
 | 
					TARGET = ../bin/keepass 
 | 
				
			||||||
 | 
					CONFIG += debug \
 | 
				
			||||||
 | 
					          warn_off \
 | 
				
			||||||
 | 
					          qt \
 | 
				
			||||||
 | 
					          thread \
 | 
				
			||||||
 | 
					          exceptions \
 | 
				
			||||||
 | 
					          stl 
 | 
				
			||||||
 | 
					TEMPLATE = app 
 | 
				
			||||||
 | 
					FORMS += forms/ui_EditGroupDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_SearchDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_AboutDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_LanguageDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_SettingsDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_ChangeKeyDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_MainWindow.ui \
 | 
				
			||||||
 | 
					         forms/ui_SimplePasswordDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_DatabaseSettingsDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_PasswordDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_EditEntryDlg.ui \
 | 
				
			||||||
 | 
					         forms/ui_PasswordGenDlg.ui 
 | 
				
			||||||
 | 
					TRANSLATIONS += translations/english.ts \
 | 
				
			||||||
 | 
					                translations/russian.ts 
 | 
				
			||||||
 | 
					HEADERS += lib/IniReader.h \
 | 
				
			||||||
 | 
					           lib/UrlLabel.h \
 | 
				
			||||||
 | 
					           mainwindow.h \
 | 
				
			||||||
 | 
					           PwManager.h \
 | 
				
			||||||
 | 
					           pwsafe.h \
 | 
				
			||||||
 | 
					           crypto/rijndael.h \
 | 
				
			||||||
 | 
					           lib/SecString.h \
 | 
				
			||||||
 | 
					           crypto/sha256.h \
 | 
				
			||||||
 | 
					           crypto/twoclass.h \
 | 
				
			||||||
 | 
					           crypto/twofish.h \
 | 
				
			||||||
 | 
					           ListViews.h \
 | 
				
			||||||
 | 
					           import/Import_PwManager.h \
 | 
				
			||||||
 | 
					           crypto/blowfish.h \
 | 
				
			||||||
 | 
					           crypto/sha1.h \
 | 
				
			||||||
 | 
					           import/Import_KWalletXml.h \
 | 
				
			||||||
 | 
					           PwmConfig.h \
 | 
				
			||||||
 | 
					           dialogs/AboutDlg.h \
 | 
				
			||||||
 | 
					           dialogs/EditGroupDlg.h \
 | 
				
			||||||
 | 
					           dialogs/SearchDlg.h \
 | 
				
			||||||
 | 
					           dialogs/ChangeKeyDlg.h \
 | 
				
			||||||
 | 
					           dialogs/LanguageDlg.h \
 | 
				
			||||||
 | 
					           dialogs/SettingsDlg.h \
 | 
				
			||||||
 | 
					           dialogs/DatabaseSettingsDlg.h \
 | 
				
			||||||
 | 
					           dialogs/PasswordDlg.h \
 | 
				
			||||||
 | 
					           dialogs/SimplePasswordDlg.h \
 | 
				
			||||||
 | 
					           dialogs/EditEntryDlg.h \
 | 
				
			||||||
 | 
					           dialogs/PasswordGenDlg.h \
 | 
				
			||||||
 | 
					           lib/random.h \
 | 
				
			||||||
 | 
					           Database.h \
 | 
				
			||||||
 | 
					           lib/PwmTime.h 
 | 
				
			||||||
 | 
					SOURCES += lib/IniReader.cpp \
 | 
				
			||||||
 | 
					           lib/UrlLabel.cpp \
 | 
				
			||||||
 | 
					           main.cpp \
 | 
				
			||||||
 | 
					           mainwindow.cpp \
 | 
				
			||||||
 | 
					           PwManager.cpp \
 | 
				
			||||||
 | 
					           pwsafe.cpp \
 | 
				
			||||||
 | 
					           crypto/rijndael.cpp \
 | 
				
			||||||
 | 
					           lib/SecString.cpp \
 | 
				
			||||||
 | 
					           crypto/sha256.c \
 | 
				
			||||||
 | 
					           crypto/twoclass.cpp \
 | 
				
			||||||
 | 
					           crypto/twofish.cpp \
 | 
				
			||||||
 | 
					           ListViews.cpp \
 | 
				
			||||||
 | 
					           import/Import_PwManager.cpp \
 | 
				
			||||||
 | 
					           crypto/blowfish.cpp \
 | 
				
			||||||
 | 
					           crypto/sha1.cpp \
 | 
				
			||||||
 | 
					           import/Import_KWalletXml.cpp \
 | 
				
			||||||
 | 
					           PwmConfig.cpp \
 | 
				
			||||||
 | 
					           dialogs/AboutDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/EditGroupDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/SearchDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/ChangeKeyDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/LanguageDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/SettingsDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/DatabaseSettingsDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/PasswordDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/SimplePasswordDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/EditEntryDlg.cpp \
 | 
				
			||||||
 | 
					           dialogs/PasswordGenDlg.cpp \
 | 
				
			||||||
 | 
					           lib/random.cpp \
 | 
				
			||||||
 | 
					           Database.cpp \
 | 
				
			||||||
 | 
					           lib/PwmTime.cpp 
 | 
				
			||||||