summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/jabber/libiris/qca
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/jabber/libiris/qca')
-rw-r--r--kopete/protocols/jabber/libiris/qca/CMakeLists.txt12
-rw-r--r--kopete/protocols/jabber/libiris/qca/COPYING504
-rw-r--r--kopete/protocols/jabber/libiris/qca/INSTALL12
-rw-r--r--kopete/protocols/jabber/libiris/qca/Makefile.am1
-rw-r--r--kopete/protocols/jabber/libiris/qca/README29
-rw-r--r--kopete/protocols/jabber/libiris/qca/TODO6
-rw-r--r--kopete/protocols/jabber/libiris/qca/src/CMakeLists.txt22
-rw-r--r--kopete/protocols/jabber/libiris/qca/src/Makefile.am7
-rw-r--r--kopete/protocols/jabber/libiris/qca/src/tqca.cpp1481
-rw-r--r--kopete/protocols/jabber/libiris/qca/src/tqca.h468
-rw-r--r--kopete/protocols/jabber/libiris/qca/src/tqcaprovider.h191
11 files changed, 0 insertions, 2733 deletions
diff --git a/kopete/protocols/jabber/libiris/qca/CMakeLists.txt b/kopete/protocols/jabber/libiris/qca/CMakeLists.txt
deleted file mode 100644
index 7356f221..00000000
--- a/kopete/protocols/jabber/libiris/qca/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( src )
diff --git a/kopete/protocols/jabber/libiris/qca/COPYING b/kopete/protocols/jabber/libiris/qca/COPYING
deleted file mode 100644
index ae23fcfd..00000000
--- a/kopete/protocols/jabber/libiris/qca/COPYING
+++ /dev/null
@@ -1,504 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-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 and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, 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 library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete 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 distribute a copy of this License along with the
-Library.
-
- 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 Library or any portion
-of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-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 Library, 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 Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you 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.
-
- If distribution of 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 satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be 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.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library 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.
-
- 9. 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 Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-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 with
-this License.
-
- 11. 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 Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library 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 Library.
-
-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.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library 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.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser 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 Library
-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 Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-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
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "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
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. 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 LIBRARY 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
-LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. 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 library's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This library 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.
-
- This library 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 library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- <signature of Ty Coon>, 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/kopete/protocols/jabber/libiris/qca/INSTALL b/kopete/protocols/jabber/libiris/qca/INSTALL
deleted file mode 100644
index 355712f3..00000000
--- a/kopete/protocols/jabber/libiris/qca/INSTALL
+++ /dev/null
@@ -1,12 +0,0 @@
-Installing TQCA
---------------
-
-Installation should be straightforward:
-
- ./configure
- make
- make install
-
-NOTE: You may also need to run '/sbin/ldconfig' or a similar tool to
- get the new library files recognized by the system. If you are
- using Linux, just run it for good measure.
diff --git a/kopete/protocols/jabber/libiris/qca/Makefile.am b/kopete/protocols/jabber/libiris/qca/Makefile.am
deleted file mode 100644
index af437a64..00000000
--- a/kopete/protocols/jabber/libiris/qca/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = src
diff --git a/kopete/protocols/jabber/libiris/qca/README b/kopete/protocols/jabber/libiris/qca/README
deleted file mode 100644
index 8d388f86..00000000
--- a/kopete/protocols/jabber/libiris/qca/README
+++ /dev/null
@@ -1,29 +0,0 @@
-Qt Cryptographic Architecture
------------------------------
-Version: API v1.0, Plugin v1
-Author: Justin Karneges <justin@affinix.com>
-Date: September 10th 2003
-
-This library provides an easy API for the following features:
-
- SSL/TLS
- X509
- SASL
- RSA
- Hashing (SHA1, MD5)
- Ciphers (BlowFish, 3DES, AES)
-
-Functionality is supplied via plugins. This is useful for avoiding
-dependence on a particular crypto library and makes upgrading easier,
-as there is no need to recompile your application when adding or
-upgrading a crypto plugin. Also, by pushing crypto functionality into
-plugins, your application is free of legal issues, such as export
-regulation.
-
-And of course, you get a very simple crypto API for Qt, where you can
-do things like:
-
- QString hash = TQCA::SHA1::hashToString(blockOfData);
-
-Have fun!
-
diff --git a/kopete/protocols/jabber/libiris/qca/TODO b/kopete/protocols/jabber/libiris/qca/TODO
deleted file mode 100644
index bc8247e0..00000000
--- a/kopete/protocols/jabber/libiris/qca/TODO
+++ /dev/null
@@ -1,6 +0,0 @@
-* plugins: thread safety ?
-
-* dsa
-* diffie-hellman
-* entropy
-
diff --git a/kopete/protocols/jabber/libiris/qca/src/CMakeLists.txt b/kopete/protocols/jabber/libiris/qca/src/CMakeLists.txt
deleted file mode 100644
index 162ecffa..00000000
--- a/kopete/protocols/jabber/libiris/qca/src/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-# (C) 2010-2011 Serghei Amelian
-# serghei (DOT) amelian (AT) gmail.com
-#
-# Improvements and feedback are welcome
-#
-# This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
- ${CMAKE_CURRENT_BINARY_DIR}
- ${TQT_INCLUDE_DIRS}
-)
-
-
-##### tqca (static) #############################
-
-tde_add_library( tqca STATIC_PIC AUTOMOC
- SOURCES tqca.cpp
-)
diff --git a/kopete/protocols/jabber/libiris/qca/src/Makefile.am b/kopete/protocols/jabber/libiris/qca/src/Makefile.am
deleted file mode 100644
index 8c3c80d8..00000000
--- a/kopete/protocols/jabber/libiris/qca/src/Makefile.am
+++ /dev/null
@@ -1,7 +0,0 @@
-METASOURCES = AUTO
-
-noinst_LTLIBRARIES = libtqca.la
-INCLUDES = $(all_includes)
-
-libtqca_la_SOURCES = \
- tqca.cpp
diff --git a/kopete/protocols/jabber/libiris/qca/src/tqca.cpp b/kopete/protocols/jabber/libiris/qca/src/tqca.cpp
deleted file mode 100644
index a4e8ab11..00000000
--- a/kopete/protocols/jabber/libiris/qca/src/tqca.cpp
+++ /dev/null
@@ -1,1481 +0,0 @@
-/*
- * tqca.cpp - TQt Cryptographic Architecture
- * Copyright (C) 2003 Justin Karneges
- *
- * This library 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.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "tqca.h"
-
-#include <tqptrlist.h>
-#include <tqdir.h>
-#include <tqfileinfo.h>
-#include <tqstringlist.h>
-#include <tqlibrary.h>
-#include <tqtimer.h>
-#include <tqhostaddress.h>
-#include <tqapplication.h>
-#include <tqguardedptr.h>
-#include <stdlib.h>
-#include "tqcaprovider.h"
-
-#if defined(Q_OS_WIN32)
-#define PLUGIN_EXT "dll"
-#elif defined(Q_OS_MAC)
-#define PLUGIN_EXT "dylib"
-#else
-#define PLUGIN_EXT "so"
-#endif
-
-using namespace TQCA;
-
-class ProviderItem
-{
-public:
- TQCAProvider *p;
- TQString fname;
-
- static ProviderItem *load(const TQString &fname)
- {
- TQLibrary *lib = new TQLibrary(fname);
- if(!lib->load()) {
- delete lib;
- return 0;
- }
- void *s = lib->resolve("createProvider");
- if(!s) {
- delete lib;
- return 0;
- }
- TQCAProvider *(*createProvider)() = (TQCAProvider *(*)())s;
- TQCAProvider *p = createProvider();
- if(!p) {
- delete lib;
- return 0;
- }
- ProviderItem *i = new ProviderItem(lib, p);
- i->fname = fname;
- return i;
- }
-
- static ProviderItem *fromClass(TQCAProvider *p)
- {
- ProviderItem *i = new ProviderItem(0, p);
- return i;
- }
-
- ~ProviderItem()
- {
- delete p;
- delete lib;
- }
-
- void ensureInit()
- {
- if(init_done)
- return;
- init_done = true;
- p->init();
- }
-
-private:
- TQLibrary *lib;
- bool init_done;
-
- ProviderItem(TQLibrary *_lib, TQCAProvider *_p)
- {
- lib = _lib;
- p = _p;
- init_done = false;
- }
-};
-
-static TQPtrList<ProviderItem> providerList;
-static bool qca_init = false;
-
-static bool plugin_have(const TQString &fname)
-{
- TQPtrListIterator<ProviderItem> it(providerList);
- for(ProviderItem *i; (i = it.current()); ++it) {
- if(i->fname == fname)
- return true;
- }
- return false;
-}
-
-static void plugin_scan()
-{
- TQStringList dirs = TQApplication::libraryPaths();
- for(TQStringList::ConstIterator it = dirs.begin(); it != dirs.end(); ++it) {
- TQDir libpath(*it);
- TQDir dir(libpath.filePath("crypto"));
- if(!dir.exists())
- continue;
-
- TQStringList list = dir.entryList();
- for(TQStringList::ConstIterator it = list.begin(); it != list.end(); ++it) {
- TQFileInfo fi(dir.filePath(*it));
- if(fi.isDir())
- continue;
- if(fi.extension() != PLUGIN_EXT)
- continue;
- TQString fname = fi.filePath();
-
- // don't load the same plugin again!
- if(plugin_have(fname))
- continue;
- //printf("f=[%s]\n", fname.latin1());
-
- ProviderItem *i = ProviderItem::load(fname);
- if(!i)
- continue;
- if(i->p->qcaVersion() != TQCA_PLUGIN_VERSION) {
- delete i;
- continue;
- }
-
- providerList.append(i);
- }
- }
-}
-
-static void plugin_addClass(TQCAProvider *p)
-{
- ProviderItem *i = ProviderItem::fromClass(p);
- providerList.prepend(i);
-}
-
-static void plugin_unloadall()
-{
- providerList.clear();
-}
-
-static int plugin_caps()
-{
- int caps = 0;
- TQPtrListIterator<ProviderItem> it(providerList);
- for(ProviderItem *i; (i = it.current()); ++it)
- caps |= i->p->capabilities();
- return caps;
-}
-
-TQString TQCA::arrayToHex(const TQByteArray &a)
-{
- TQString out;
- for(int n = 0; n < (int)a.size(); ++n) {
- TQString str;
- str.sprintf("%02x", (uchar)a[n]);
- out.append(str);
- }
- return out;
-}
-
-TQByteArray TQCA::hexToArray(const TQString &str)
-{
- TQByteArray out(str.length() / 2);
- int at = 0;
- for(int n = 0; n + 1 < (int)str.length(); n += 2) {
- uchar a = str[n];
- uchar b = str[n+1];
- uchar c = ((a & 0x0f) << 4) + (b & 0x0f);
- out[at++] = c;
- }
- return out;
-}
-
-void TQCA::init()
-{
- if(qca_init)
- return;
- qca_init = true;
- providerList.setAutoDelete(true);
-}
-
-bool TQCA::isSupported(int capabilities)
-{
- init();
-
- int caps = plugin_caps();
- if(caps & capabilities)
- return true;
-
- // ok, try scanning for new stuff
- plugin_scan();
- caps = plugin_caps();
- if(caps & capabilities)
- return true;
-
- return false;
-}
-
-void TQCA::insertProvider(TQCAProvider *p)
-{
- plugin_addClass(p);
-}
-
-void TQCA::unloadAllPlugins()
-{
- plugin_unloadall();
-}
-
-static void *getContext(int cap)
-{
- init();
-
- // this call will also trip a scan for new plugins if needed
- if(!TQCA::isSupported(cap))
- return 0;
-
- TQPtrListIterator<ProviderItem> it(providerList);
- for(ProviderItem *i; (i = it.current()); ++it) {
- if(i->p->capabilities() & cap) {
- i->ensureInit();
- return i->p->context(cap);
- }
- }
- return 0;
-}
-
-
-//----------------------------------------------------------------------------
-// Hash
-//----------------------------------------------------------------------------
-class Hash::Private
-{
-public:
- Private()
- {
- c = 0;
- }
-
- ~Private()
- {
- delete c;
- }
-
- void reset()
- {
- c->reset();
- }
-
- TQCA_HashContext *c;
-};
-
-Hash::Hash(TQCA_HashContext *c)
-{
- d = new Private;
- d->c = c;
-}
-
-Hash::Hash(const Hash &from)
-{
- d = new Private;
- *this = from;
-}
-
-Hash & Hash::operator=(const Hash &from)
-{
- delete d->c;
- d->c = from.d->c->clone();
- return *this;
-}
-
-Hash::~Hash()
-{
- delete d;
-}
-
-void Hash::clear()
-{
- d->reset();
-}
-
-void Hash::update(const TQByteArray &a)
-{
- d->c->update(a.data(), a.size());
-}
-
-TQByteArray Hash::final()
-{
- TQByteArray buf;
- d->c->final(&buf);
- return buf;
-}
-
-
-//----------------------------------------------------------------------------
-// Cipher
-//----------------------------------------------------------------------------
-class Cipher::Private
-{
-public:
- Private()
- {
- c = 0;
- }
-
- ~Private()
- {
- delete c;
- }
-
- void reset()
- {
- dir = Encrypt;
- key.resize(0);
- iv.resize(0);
- err = false;
- }
-
- TQCA_CipherContext *c;
- int dir;
- int mode;
- TQByteArray key, iv;
- bool err;
-};
-
-Cipher::Cipher(TQCA_CipherContext *c, int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad)
-{
- d = new Private;
- d->c = c;
- reset(dir, mode, key, iv, pad);
-}
-
-Cipher::Cipher(const Cipher &from)
-{
- d = new Private;
- *this = from;
-}
-
-Cipher & Cipher::operator=(const Cipher &from)
-{
- delete d->c;
- d->c = from.d->c->clone();
- d->dir = from.d->dir;
- d->mode = from.d->mode;
- d->key = from.d->key.copy();
- d->iv = from.d->iv.copy();
- d->err = from.d->err;
- return *this;
-}
-
-Cipher::~Cipher()
-{
- delete d;
-}
-
-TQByteArray Cipher::dyn_generateKey(int size) const
-{
- TQByteArray buf;
- if(size != -1)
- buf.resize(size);
- else
- buf.resize(d->c->keySize());
- if(!d->c->generateKey(buf.data(), size))
- return TQByteArray();
- return buf;
-}
-
-TQByteArray Cipher::dyn_generateIV() const
-{
- TQByteArray buf(d->c->blockSize());
- if(!d->c->generateIV(buf.data()))
- return TQByteArray();
- return buf;
-}
-
-void Cipher::reset(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad)
-{
- d->reset();
-
- d->dir = dir;
- d->mode = mode;
- d->key = key.copy();
- d->iv = iv.copy();
- if(!d->c->setup(d->dir, d->mode, d->key.isEmpty() ? 0: d->key.data(), d->key.size(), d->iv.isEmpty() ? 0 : d->iv.data(), pad)) {
- d->err = true;
- return;
- }
-}
-
-bool Cipher::update(const TQByteArray &a)
-{
- if(d->err)
- return false;
-
- if(!a.isEmpty()) {
- if(!d->c->update(a.data(), a.size())) {
- d->err = true;
- return false;
- }
- }
- return true;
-}
-
-TQByteArray Cipher::final(bool *ok)
-{
- if(ok)
- *ok = false;
- if(d->err)
- return TQByteArray();
-
- TQByteArray out;
- if(!d->c->final(&out)) {
- d->err = true;
- return TQByteArray();
- }
- if(ok)
- *ok = true;
- return out;
-}
-
-
-//----------------------------------------------------------------------------
-// SHA1
-//----------------------------------------------------------------------------
-SHA1::SHA1()
-:Hash((TQCA_HashContext *)getContext(CAP_SHA1))
-{
-}
-
-
-//----------------------------------------------------------------------------
-// SHA256
-//----------------------------------------------------------------------------
-SHA256::SHA256()
-:Hash((TQCA_HashContext *)getContext(CAP_SHA256))
-{
-}
-
-
-//----------------------------------------------------------------------------
-// MD5
-//----------------------------------------------------------------------------
-MD5::MD5()
-:Hash((TQCA_HashContext *)getContext(CAP_MD5))
-{
-}
-
-
-//----------------------------------------------------------------------------
-// BlowFish
-//----------------------------------------------------------------------------
-BlowFish::BlowFish(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad)
-:Cipher((TQCA_CipherContext *)getContext(CAP_BlowFish), dir, mode, key, iv, pad)
-{
-}
-
-
-//----------------------------------------------------------------------------
-// TripleDES
-//----------------------------------------------------------------------------
-TripleDES::TripleDES(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad)
-:Cipher((TQCA_CipherContext *)getContext(CAP_TripleDES), dir, mode, key, iv, pad)
-{
-}
-
-
-//----------------------------------------------------------------------------
-// AES128
-//----------------------------------------------------------------------------
-AES128::AES128(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad)
-:Cipher((TQCA_CipherContext *)getContext(CAP_AES128), dir, mode, key, iv, pad)
-{
-}
-
-
-//----------------------------------------------------------------------------
-// AES256
-//----------------------------------------------------------------------------
-AES256::AES256(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad)
-:Cipher((TQCA_CipherContext *)getContext(CAP_AES256), dir, mode, key, iv, pad)
-{
-}
-
-
-//----------------------------------------------------------------------------
-// RSAKey
-//----------------------------------------------------------------------------
-class RSAKey::Private
-{
-public:
- Private()
- {
- c = 0;
- }
-
- ~Private()
- {
- delete c;
- }
-
- TQCA_RSAKeyContext *c;
-};
-
-RSAKey::RSAKey()
-{
- d = new Private;
- d->c = (TQCA_RSAKeyContext *)getContext(CAP_RSA);
-}
-
-RSAKey::RSAKey(const RSAKey &from)
-{
- d = new Private;
- *this = from;
-}
-
-RSAKey & RSAKey::operator=(const RSAKey &from)
-{
- delete d->c;
- d->c = from.d->c->clone();
- return *this;
-}
-
-RSAKey::~RSAKey()
-{
- delete d;
-}
-
-bool RSAKey::isNull() const
-{
- return d->c->isNull();
-}
-
-bool RSAKey::havePublic() const
-{
- return d->c->havePublic();
-}
-
-bool RSAKey::havePrivate() const
-{
- return d->c->havePrivate();
-}
-
-TQByteArray RSAKey::toDER(bool publicOnly) const
-{
- TQByteArray out;
- if(!d->c->toDER(&out, publicOnly))
- return TQByteArray();
- return out;
-}
-
-bool RSAKey::fromDER(const TQByteArray &a)
-{
- return d->c->createFromDER(a.data(), a.size());
-}
-
-TQString RSAKey::toPEM(bool publicOnly) const
-{
- TQByteArray out;
- if(!d->c->toPEM(&out, publicOnly))
- return TQByteArray();
-
- TQCString cs;
- cs.resize(out.size()+1);
- memcpy(cs.data(), out.data(), out.size());
- return TQString::fromLatin1(cs);
-}
-
-bool RSAKey::fromPEM(const TQString &str)
-{
- TQCString cs = str.latin1();
- TQByteArray a(cs.length());
- memcpy(a.data(), cs.data(), a.size());
- return d->c->createFromPEM(a.data(), a.size());
-}
-
-bool RSAKey::fromNative(void *p)
-{
- return d->c->createFromNative(p);
-}
-
-bool RSAKey::encrypt(const TQByteArray &a, TQByteArray *b, bool oaep) const
-{
- TQByteArray out;
- if(!d->c->encrypt(a, &out, oaep))
- return false;
- *b = out;
- return true;
-}
-
-bool RSAKey::decrypt(const TQByteArray &a, TQByteArray *b, bool oaep) const
-{
- TQByteArray out;
- if(!d->c->decrypt(a, &out, oaep))
- return false;
- *b = out;
- return true;
-}
-
-bool RSAKey::generate(unsigned int bits)
-{
- return d->c->generate(bits);
-}
-
-
-//----------------------------------------------------------------------------
-// RSA
-//----------------------------------------------------------------------------
-RSA::RSA()
-{
-}
-
-RSA::~RSA()
-{
-}
-
-RSAKey RSA::key() const
-{
- return v_key;
-}
-
-void RSA::setKey(const RSAKey &k)
-{
- v_key = k;
-}
-
-bool RSA::encrypt(const TQByteArray &a, TQByteArray *b, bool oaep) const
-{
- if(v_key.isNull())
- return false;
- return v_key.encrypt(a, b, oaep);
-}
-
-bool RSA::decrypt(const TQByteArray &a, TQByteArray *b, bool oaep) const
-{
- if(v_key.isNull())
- return false;
- return v_key.decrypt(a, b, oaep);
-}
-
-RSAKey RSA::generateKey(unsigned int bits)
-{
- RSAKey k;
- k.generate(bits);
- return k;
-}
-
-
-//----------------------------------------------------------------------------
-// Cert
-//----------------------------------------------------------------------------
-class Cert::Private
-{
-public:
- Private()
- {
- c = 0;
- }
-
- ~Private()
- {
- delete c;
- }
-
- TQCA_CertContext *c;
-};
-
-Cert::Cert()
-{
- d = new Private;
- d->c = (TQCA_CertContext *)getContext(CAP_X509);
-}
-
-Cert::Cert(const Cert &from)
-{
- d = new Private;
- *this = from;
-}
-
-Cert & Cert::operator=(const Cert &from)
-{
- delete d->c;
- d->c = from.d->c->clone();
- return *this;
-}
-
-Cert::~Cert()
-{
- delete d;
-}
-
-void Cert::fromContext(TQCA_CertContext *ctx)
-{
- delete d->c;
- d->c = ctx;
-}
-
-bool Cert::isNull() const
-{
- return d->c->isNull();
-}
-
-TQString Cert::commonName() const
-{
- CertProperties props = subject();
- return props["CN"];
-}
-
-TQString Cert::serialNumber() const
-{
- return d->c->serialNumber();
-}
-
-TQString Cert::subjectString() const
-{
- return d->c->subjectString();
-}
-
-TQString Cert::issuerString() const
-{
- return d->c->issuerString();
-}
-
-CertProperties Cert::subject() const
-{
- TQValueList<TQCA_CertProperty> list = d->c->subject();
- CertProperties props;
- for(TQValueList<TQCA_CertProperty>::ConstIterator it = list.begin(); it != list.end(); ++it)
- props[(*it).var] = (*it).val;
- return props;
-}
-
-CertProperties Cert::issuer() const
-{
- TQValueList<TQCA_CertProperty> list = d->c->issuer();
- CertProperties props;
- for(TQValueList<TQCA_CertProperty>::ConstIterator it = list.begin(); it != list.end(); ++it)
- props[(*it).var] = (*it).val;
- return props;
-}
-
-TQDateTime Cert::notBefore() const
-{
- return d->c->notBefore();
-}
-
-TQDateTime Cert::notAfter() const
-{
- return d->c->notAfter();
-}
-
-TQByteArray Cert::toDER() const
-{
- TQByteArray out;
- if(!d->c->toDER(&out))
- return TQByteArray();
- return out;
-}
-
-bool Cert::fromDER(const TQByteArray &a)
-{
- return d->c->createFromDER(a.data(), a.size());
-}
-
-TQString Cert::toPEM() const
-{
- TQByteArray out;
- if(!d->c->toPEM(&out))
- return TQByteArray();
-
- TQCString cs;
- cs.resize(out.size()+1);
- memcpy(cs.data(), out.data(), out.size());
- return TQString::fromLatin1(cs);
-}
-
-bool Cert::fromPEM(const TQString &str)
-{
- TQCString cs = str.latin1();
- TQByteArray a(cs.length());
- memcpy(a.data(), cs.data(), a.size());
- return d->c->createFromPEM(a.data(), a.size());
-}
-
-
-//----------------------------------------------------------------------------
-// TLS
-//----------------------------------------------------------------------------
-class TLS::Private
-{
-public:
- Private()
- {
- c = (TQCA_TLSContext *)getContext(CAP_TLS);
- }
-
- ~Private()
- {
- delete c;
- }
-
- void reset()
- {
- handshaken = false;
- closing = false;
- in.resize(0);
- out.resize(0);
- from_net.resize(0);
- to_net.resize(0);
- host = "";
- hostMismatch = false;
- cert = Cert();
- bytesEncoded = 0;
- tryMore = false;
- }
-
- void appendArray(TQByteArray *a, const TQByteArray &b)
- {
- int oldsize = a->size();
- a->resize(oldsize + b.size());
- memcpy(a->data() + oldsize, b.data(), b.size());
- }
-
- Cert cert;
- TQCA_TLSContext *c;
- TQByteArray in, out, to_net, from_net;
- int bytesEncoded;
- bool tryMore;
- bool handshaken;
- TQString host;
- bool hostMismatch;
- bool closing;
-
- Cert ourCert;
- RSAKey ourKey;
- TQPtrList<TQCA_CertContext> store;
-};
-
-TLS::TLS(TQObject *parent)
-:TQObject(parent)
-{
- d = new Private;
-}
-
-TLS::~TLS()
-{
- delete d;
-}
-
-void TLS::setCertificate(const Cert &cert, const RSAKey &key)
-{
- d->ourCert = cert;
- d->ourKey = key;
-}
-
-void TLS::setCertificateStore(const TQPtrList<Cert> &store)
-{
- // convert the cert list into a context list
- d->store.clear();
- TQPtrListIterator<Cert> it(store);
- for(Cert *cert; (cert = it.current()); ++it)
- d->store.append(cert->d->c);
-}
-
-void TLS::reset()
-{
- d->reset();
-}
-
-bool TLS::startClient(const TQString &host)
-{
- d->reset();
- d->host = host;
-
- if(!d->c->startClient(d->store, *d->ourCert.d->c, *d->ourKey.d->c))
- return false;
- TQTimer::singleShot(0, this, TQT_SLOT(update()));
- return true;
-}
-
-bool TLS::startServer()
-{
- d->reset();
-
- if(!d->c->startServer(d->store, *d->ourCert.d->c, *d->ourKey.d->c))
- return false;
- TQTimer::singleShot(0, this, TQT_SLOT(update()));
- return true;
-}
-
-void TLS::close()
-{
- if(!d->handshaken || d->closing)
- return;
-
- d->closing = true;
- TQTimer::singleShot(0, this, TQT_SLOT(update()));
-}
-
-bool TLS::isHandshaken() const
-{
- return d->handshaken;
-}
-
-void TLS::write(const TQByteArray &a)
-{
- d->appendArray(&d->out, a);
- update();
-}
-
-TQByteArray TLS::read()
-{
- TQByteArray a = d->in.copy();
- d->in.resize(0);
- return a;
-}
-
-void TLS::writeIncoming(const TQByteArray &a)
-{
- d->appendArray(&d->from_net, a);
- update();
-}
-
-TQByteArray TLS::readOutgoing()
-{
- TQByteArray a = d->to_net.copy();
- d->to_net.resize(0);
- return a;
-}
-
-TQByteArray TLS::readUnprocessed()
-{
- TQByteArray a = d->from_net.copy();
- d->from_net.resize(0);
- return a;
-}
-
-const Cert & TLS::peerCertificate() const
-{
- return d->cert;
-}
-
-int TLS::certificateValidityResult() const
-{
- if(d->hostMismatch)
- return TQCA::TLS::HostMismatch;
- else
- return d->c->validityResult();
-}
-
-void TLS::update()
-{
- bool force_read = false;
- bool eof = false;
- bool done = false;
- TQGuardedPtr<TLS> self = this;
-
- if(d->closing) {
- TQByteArray a;
- int r = d->c->shutdown(d->from_net, &a);
- d->from_net.resize(0);
- if(r == TQCA_TLSContext::Error) {
- reset();
- error(ErrHandshake);
- return;
- }
- if(r == TQCA_TLSContext::Success) {
- d->from_net = d->c->unprocessed().copy();
- done = true;
- }
- d->appendArray(&d->to_net, a);
- }
- else {
- if(!d->handshaken) {
- TQByteArray a;
- int r = d->c->handshake(d->from_net, &a);
- d->from_net.resize(0);
- if(r == TQCA_TLSContext::Error) {
- reset();
- error(ErrHandshake);
- return;
- }
- d->appendArray(&d->to_net, a);
- if(r == TQCA_TLSContext::Success) {
- TQCA_CertContext *cc = d->c->peerCertificate();
- if(cc && !d->host.isEmpty() && d->c->validityResult() == TQCA::TLS::Valid) {
- if(!cc->matchesAddress(d->host))
- d->hostMismatch = true;
- }
- d->cert.fromContext(cc);
- d->handshaken = true;
- handshaken();
- if(!self)
- return;
-
- // there is a teeny tiny possibility that incoming data awaits. let us get it.
- force_read = true;
- }
- }
-
- if(d->handshaken) {
- if(!d->out.isEmpty() || d->tryMore) {
- d->tryMore = false;
- TQByteArray a;
- int enc;
- bool more = false;
- bool ok = d->c->encode(d->out, &a, &enc);
- eof = d->c->eof();
- if(ok && enc < (int)d->out.size())
- more = true;
- d->out.resize(0);
- if(!eof) {
- if(!ok) {
- reset();
- error(ErrCrypt);
- return;
- }
- d->bytesEncoded += enc;
- if(more)
- d->tryMore = true;
- d->appendArray(&d->to_net, a);
- }
- }
- if(!d->from_net.isEmpty() || force_read) {
- TQByteArray a, b;
- bool ok = d->c->decode(d->from_net, &a, &b);
- eof = d->c->eof();
- d->from_net.resize(0);
- if(!ok) {
- reset();
- error(ErrCrypt);
- return;
- }
- d->appendArray(&d->in, a);
- d->appendArray(&d->to_net, b);
- }
-
- if(!d->in.isEmpty()) {
- readyRead();
- if(!self)
- return;
- }
- }
- }
-
- if(!d->to_net.isEmpty()) {
- int bytes = d->bytesEncoded;
- d->bytesEncoded = 0;
- readyReadOutgoing(bytes);
- if(!self)
- return;
- }
-
- if(eof) {
- close();
- if(!self)
- return;
- return;
- }
-
- if(d->closing && done) {
- reset();
- closed();
- }
-}
-
-
-//----------------------------------------------------------------------------
-// SASL
-//----------------------------------------------------------------------------
-TQString saslappname = "qca";
-class SASL::Private
-{
-public:
- Private()
- {
- c = (TQCA_SASLContext *)getContext(CAP_SASL);
- }
-
- ~Private()
- {
- delete c;
- }
-
- void setSecurityProps()
- {
- c->setSecurityProps(noPlain, noActive, noDict, noAnon, reqForward, reqCreds, reqMutual, ssfmin, ssfmax, ext_authid, ext_ssf);
- }
-
- // security opts
- bool noPlain, noActive, noDict, noAnon, reqForward, reqCreds, reqMutual;
- int ssfmin, ssfmax;
- TQString ext_authid;
- int ext_ssf;
-
- bool tried;
- TQCA_SASLContext *c;
- TQHostAddress localAddr, remoteAddr;
- int localPort, remotePort;
- TQByteArray stepData;
- bool allowCSF;
- bool first, server;
-
- TQByteArray inbuf, outbuf;
-};
-
-SASL::SASL(TQObject *parent)
-:TQObject(parent)
-{
- d = new Private;
- reset();
-}
-
-SASL::~SASL()
-{
- delete d;
-}
-
-void SASL::setAppName(const TQString &name)
-{
- saslappname = name;
-}
-
-void SASL::reset()
-{
- d->localPort = -1;
- d->remotePort = -1;
-
- d->noPlain = false;
- d->noActive = false;
- d->noDict = false;
- d->noAnon = false;
- d->reqForward = false;
- d->reqCreds = false;
- d->reqMutual = false;
- d->ssfmin = 0;
- d->ssfmax = 0;
- d->ext_authid = "";
- d->ext_ssf = 0;
-
- d->inbuf.resize(0);
- d->outbuf.resize(0);
-
- d->c->reset();
-}
-
-int SASL::errorCondition() const
-{
- return d->c->errorCond();
-}
-
-void SASL::setAllowPlain(bool b)
-{
- d->noPlain = !b;
-}
-
-void SASL::setAllowAnonymous(bool b)
-{
- d->noAnon = !b;
-}
-
-void SASL::setAllowActiveVulnerable(bool b)
-{
- d->noActive = !b;
-}
-
-void SASL::setAllowDictionaryVulnerable(bool b)
-{
- d->noDict = !b;
-}
-
-void SASL::setRequireForwardSecrecy(bool b)
-{
- d->reqForward = b;
-}
-
-void SASL::setRequirePassCredentials(bool b)
-{
- d->reqCreds = b;
-}
-
-void SASL::setRequireMutualAuth(bool b)
-{
- d->reqMutual = b;
-}
-
-void SASL::setMinimumSSF(int x)
-{
- d->ssfmin = x;
-}
-
-void SASL::setMaximumSSF(int x)
-{
- d->ssfmax = x;
-}
-
-void SASL::setExternalAuthID(const TQString &authid)
-{
- d->ext_authid = authid;
-}
-
-void SASL::setExternalSSF(int x)
-{
- d->ext_ssf = x;
-}
-
-void SASL::setLocalAddr(const TQHostAddress &addr, TQ_UINT16 port)
-{
- d->localAddr = addr;
- d->localPort = port;
-}
-
-void SASL::setRemoteAddr(const TQHostAddress &addr, TQ_UINT16 port)
-{
- d->remoteAddr = addr;
- d->remotePort = port;
-}
-
-bool SASL::startClient(const TQString &service, const TQString &host, const TQStringList &mechlist, bool allowClientSendFirst)
-{
- TQCA_SASLHostPort la, ra;
- if(d->localPort != -1) {
- la.addr = d->localAddr;
- la.port = d->localPort;
- }
- if(d->remotePort != -1) {
- ra.addr = d->remoteAddr;
- ra.port = d->remotePort;
- }
-
- d->allowCSF = allowClientSendFirst;
- d->c->setCoreProps(service, host, d->localPort != -1 ? &la : 0, d->remotePort != -1 ? &ra : 0);
- d->setSecurityProps();
-
- if(!d->c->clientStart(mechlist))
- return false;
- d->first = true;
- d->server = false;
- d->tried = false;
- TQTimer::singleShot(0, this, TQT_SLOT(tryAgain()));
- return true;
-}
-
-bool SASL::startServer(const TQString &service, const TQString &host, const TQString &realm, TQStringList *mechlist)
-{
- TQCA_SASLHostPort la, ra;
- if(d->localPort != -1) {
- la.addr = d->localAddr;
- la.port = d->localPort;
- }
- if(d->remotePort != -1) {
- ra.addr = d->remoteAddr;
- ra.port = d->remotePort;
- }
-
- d->c->setCoreProps(service, host, d->localPort != -1 ? &la : 0, d->remotePort != -1 ? &ra : 0);
- d->setSecurityProps();
-
- if(!d->c->serverStart(realm, mechlist, saslappname))
- return false;
- d->first = true;
- d->server = true;
- d->tried = false;
- return true;
-}
-
-void SASL::putServerFirstStep(const TQString &mech)
-{
- int r = d->c->serverFirstStep(mech, 0);
- handleServerFirstStep(r);
-}
-
-void SASL::putServerFirstStep(const TQString &mech, const TQByteArray &clientInit)
-{
- int r = d->c->serverFirstStep(mech, &clientInit);
- handleServerFirstStep(r);
-}
-
-void SASL::handleServerFirstStep(int r)
-{
- if(r == TQCA_SASLContext::Success)
- authenticated();
- else if(r == TQCA_SASLContext::Continue)
- nextStep(d->c->result());
- else if(r == TQCA_SASLContext::AuthCheck)
- tryAgain();
- else
- error(ErrAuth);
-}
-
-void SASL::putStep(const TQByteArray &stepData)
-{
- d->stepData = stepData.copy();
- tryAgain();
-}
-
-void SASL::setUsername(const TQString &user)
-{
- d->c->setClientParams(&user, 0, 0, 0);
-}
-
-void SASL::setAuthzid(const TQString &authzid)
-{
- d->c->setClientParams(0, &authzid, 0, 0);
-}
-
-void SASL::setPassword(const TQString &pass)
-{
- d->c->setClientParams(0, 0, &pass, 0);
-}
-
-void SASL::setRealm(const TQString &realm)
-{
- d->c->setClientParams(0, 0, 0, &realm);
-}
-
-void SASL::continueAfterParams()
-{
- tryAgain();
-}
-
-void SASL::continueAfterAuthCheck()
-{
- tryAgain();
-}
-
-void SASL::tryAgain()
-{
- int r;
-
- if(d->server) {
- if(!d->tried) {
- r = d->c->nextStep(d->stepData);
- d->tried = true;
- }
- else {
- r = d->c->tryAgain();
- }
-
- if(r == TQCA_SASLContext::Error) {
- error(ErrAuth);
- return;
- }
- else if(r == TQCA_SASLContext::Continue) {
- d->tried = false;
- nextStep(d->c->result());
- return;
- }
- else if(r == TQCA_SASLContext::AuthCheck) {
- authCheck(d->c->username(), d->c->authzid());
- return;
- }
- }
- else {
- if(d->first) {
- if(!d->tried) {
- r = d->c->clientFirstStep(d->allowCSF);
- d->tried = true;
- }
- else
- r = d->c->tryAgain();
-
- if(r == TQCA_SASLContext::Error) {
- error(ErrAuth);
- return;
- }
- else if(r == TQCA_SASLContext::NeedParams) {
- //d->tried = false;
- TQCA_SASLNeedParams np = d->c->clientParamsNeeded();
- needParams(np.user, np.authzid, np.pass, np.realm);
- return;
- }
-
- TQString mech = d->c->mech();
- const TQByteArray *clientInit = d->c->clientInit();
-
- d->first = false;
- d->tried = false;
- clientFirstStep(mech, clientInit);
- }
- else {
- if(!d->tried) {
- r = d->c->nextStep(d->stepData);
- d->tried = true;
- }
- else
- r = d->c->tryAgain();
-
- if(r == TQCA_SASLContext::Error) {
- error(ErrAuth);
- return;
- }
- else if(r == TQCA_SASLContext::NeedParams) {
- //d->tried = false;
- TQCA_SASLNeedParams np = d->c->clientParamsNeeded();
- needParams(np.user, np.authzid, np.pass, np.realm);
- return;
- }
- d->tried = false;
- //else if(r == TQCA_SASLContext::Continue) {
- nextStep(d->c->result());
- // return;
- //}
- }
- }
-
- if(r == TQCA_SASLContext::Success)
- authenticated();
- else if(r == TQCA_SASLContext::Error)
- error(ErrAuth);
-}
-
-int SASL::ssf() const
-{
- return d->c->security();
-}
-
-void SASL::write(const TQByteArray &a)
-{
- TQByteArray b;
- if(!d->c->encode(a, &b)) {
- error(ErrCrypt);
- return;
- }
- int oldsize = d->outbuf.size();
- d->outbuf.resize(oldsize + b.size());
- memcpy(d->outbuf.data() + oldsize, b.data(), b.size());
- readyReadOutgoing(a.size());
-}
-
-TQByteArray SASL::read()
-{
- TQByteArray a = d->inbuf.copy();
- d->inbuf.resize(0);
- return a;
-}
-
-void SASL::writeIncoming(const TQByteArray &a)
-{
- TQByteArray b;
- if(!d->c->decode(a, &b)) {
- error(ErrCrypt);
- return;
- }
- int oldsize = d->inbuf.size();
- d->inbuf.resize(oldsize + b.size());
- memcpy(d->inbuf.data() + oldsize, b.data(), b.size());
- readyRead();
-}
-
-TQByteArray SASL::readOutgoing()
-{
- TQByteArray a = d->outbuf.copy();
- d->outbuf.resize(0);
- return a;
-}
-
-#include "tqca.moc"
diff --git a/kopete/protocols/jabber/libiris/qca/src/tqca.h b/kopete/protocols/jabber/libiris/qca/src/tqca.h
deleted file mode 100644
index 701aeb31..00000000
--- a/kopete/protocols/jabber/libiris/qca/src/tqca.h
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * tqca.h - TQt Cryptographic Architecture
- * Copyright (C) 2003 Justin Karneges
- *
- * This library 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.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef TQCA_H
-#define TQCA_H
-
-#include <tqstring.h>
-#include <tqcstring.h>
-#include <tqdatetime.h>
-#include <tqmap.h>
-#include <tqptrlist.h>
-#include <tqobject.h>
-
-#ifdef Q_OS_WIN32
-# ifndef TQCA_STATIC
-# ifdef TQCA_MAKEDLL
-# define TQCA_EXPORT __declspec(dllexport)
-# else
-# define TQCA_EXPORT __declspec(dllimport)
-# endif
-# endif
-#endif
-#ifndef TQCA_EXPORT
-#define TQCA_EXPORT
-#endif
-
-#ifdef Q_OS_WIN32
-# ifdef TQCA_PLUGIN_DLL
-# define TQCA_PLUGIN_EXPORT extern "C" __declspec(dllexport)
-# else
-# define TQCA_PLUGIN_EXPORT extern "C" __declspec(dllimport)
-# endif
-#endif
-#ifndef TQCA_PLUGIN_EXPORT
-#define TQCA_PLUGIN_EXPORT extern "C"
-#endif
-
-class TQHostAddress;
-class TQStringList;
-
-class TQCAProvider;
-class TQCA_HashContext;
-class TQCA_CipherContext;
-class TQCA_CertContext;
-
-namespace TQCA
-{
- enum {
- CAP_SHA1 = 0x0001,
- CAP_SHA256 = 0x0002,
- CAP_MD5 = 0x0004,
- CAP_BlowFish = 0x0008,
- CAP_TripleDES = 0x0010,
- CAP_AES128 = 0x0020,
- CAP_AES256 = 0x0040,
- CAP_RSA = 0x0080,
- CAP_X509 = 0x0100,
- CAP_TLS = 0x0200,
- CAP_SASL = 0x0400
- };
-
- enum {
- CBC = 0x0001,
- CFB = 0x0002
- };
-
- enum {
- Encrypt = 0x0001,
- Decrypt = 0x0002
- };
-
- TQCA_EXPORT void init();
- TQCA_EXPORT bool isSupported(int capabilities);
- TQCA_EXPORT void insertProvider(TQCAProvider *);
- TQCA_EXPORT void unloadAllPlugins();
-
- TQCA_EXPORT TQString arrayToHex(const TQByteArray &);
- TQCA_EXPORT TQByteArray hexToArray(const TQString &);
-
- class TQCA_EXPORT Hash
- {
- public:
- Hash(const Hash &);
- Hash & operator=(const Hash &);
- ~Hash();
-
- void clear();
- void update(const TQByteArray &a);
- TQByteArray final();
-
- protected:
- Hash(TQCA_HashContext *);
-
- private:
- class Private;
- Private *d;
- };
-
- template <class T>
- class TQCA_EXPORT HashStatic
- {
- public:
- HashStatic<T>() {}
-
- static TQByteArray hash(const TQByteArray &a)
- {
- T obj;
- obj.update(a);
- return obj.final();
- }
-
- static TQByteArray hash(const TQCString &cs)
- {
- TQByteArray a(cs.length());
- memcpy(a.data(), cs.data(), a.size());
- return hash(a);
- }
-
- static TQString hashToString(const TQByteArray &a)
- {
- return arrayToHex(hash(a));
- }
-
- static TQString hashToString(const TQCString &cs)
- {
- return arrayToHex(hash(cs));
- }
- };
-
- class TQCA_EXPORT Cipher
- {
- public:
- Cipher(const Cipher &);
- Cipher & operator=(const Cipher &);
- ~Cipher();
-
- TQByteArray dyn_generateKey(int size=-1) const;
- TQByteArray dyn_generateIV() const;
- void reset(int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad=true);
- bool update(const TQByteArray &a);
- TQByteArray final(bool *ok=0);
-
- protected:
- Cipher(TQCA_CipherContext *, int dir, int mode, const TQByteArray &key, const TQByteArray &iv, bool pad);
-
- private:
- class Private;
- Private *d;
- };
-
- template <class T>
- class TQCA_EXPORT CipherStatic
- {
- public:
- CipherStatic<T>() {}
-
- static TQByteArray generateKey(int size=-1)
- {
- T obj;
- return obj.dyn_generateKey(size);
- }
-
- static TQByteArray generateIV()
- {
- T obj;
- return obj.dyn_generateIV();
- }
- };
-
- class TQCA_EXPORT SHA1 : public Hash, public HashStatic<SHA1>
- {
- public:
- SHA1();
- };
-
- class TQCA_EXPORT SHA256 : public Hash, public HashStatic<SHA256>
- {
- public:
- SHA256();
- };
-
- class TQCA_EXPORT MD5 : public Hash, public HashStatic<MD5>
- {
- public:
- MD5();
- };
-
- class TQCA_EXPORT BlowFish : public Cipher, public CipherStatic<BlowFish>
- {
- public:
- BlowFish(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class TQCA_EXPORT TripleDES : public Cipher, public CipherStatic<TripleDES>
- {
- public:
- TripleDES(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class TQCA_EXPORT AES128 : public Cipher, public CipherStatic<AES128>
- {
- public:
- AES128(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class TQCA_EXPORT AES256 : public Cipher, public CipherStatic<AES256>
- {
- public:
- AES256(int dir=Encrypt, int mode=CBC, const TQByteArray &key=TQByteArray(), const TQByteArray &iv=TQByteArray(), bool pad=true);
- };
-
- class RSA;
- class TQCA_EXPORT RSAKey
- {
- public:
- RSAKey();
- RSAKey(const RSAKey &from);
- RSAKey & operator=(const RSAKey &from);
- ~RSAKey();
-
- bool isNull() const;
- bool havePublic() const;
- bool havePrivate() const;
-
- TQByteArray toDER(bool publicOnly=false) const;
- bool fromDER(const TQByteArray &a);
-
- TQString toPEM(bool publicOnly=false) const;
- bool fromPEM(const TQString &);
-
- // only call if you know what you are doing
- bool fromNative(void *);
-
- private:
- class Private;
- Private *d;
-
- friend class RSA;
- friend class TLS;
- bool encrypt(const TQByteArray &a, TQByteArray *out, bool oaep) const;
- bool decrypt(const TQByteArray &a, TQByteArray *out, bool oaep) const;
- bool generate(unsigned int bits);
- };
-
- class TQCA_EXPORT RSA
- {
- public:
- RSA();
- ~RSA();
-
- RSAKey key() const;
- void setKey(const RSAKey &);
-
- bool encrypt(const TQByteArray &a, TQByteArray *out, bool oaep=false) const;
- bool decrypt(const TQByteArray &a, TQByteArray *out, bool oaep=false) const;
-
- static RSAKey generateKey(unsigned int bits);
-
- private:
- RSAKey v_key;
- };
-
- typedef TQMap<TQString, TQString> CertProperties;
- class TQCA_EXPORT Cert
- {
- public:
- Cert();
- Cert(const Cert &);
- Cert & operator=(const Cert &);
- ~Cert();
-
- bool isNull() const;
-
- TQString commonName() const;
- TQString serialNumber() const;
- TQString subjectString() const;
- TQString issuerString() const;
- CertProperties subject() const;
- CertProperties issuer() const;
- TQDateTime notBefore() const;
- TQDateTime notAfter() const;
-
- TQByteArray toDER() const;
- bool fromDER(const TQByteArray &a);
-
- TQString toPEM() const;
- bool fromPEM(const TQString &);
-
- private:
- class Private;
- Private *d;
-
- friend class TLS;
- void fromContext(TQCA_CertContext *);
- };
-
- class TQCA_EXPORT TLS : public TQObject
- {
- Q_OBJECT
-
- public:
- enum Validity {
- NoCert,
- Valid,
- HostMismatch,
- Rejected,
- Untrusted,
- SignatureFailed,
- InvalidCA,
- InvalidPurpose,
- SelfSigned,
- Revoked,
- PathLengthExceeded,
- Expired,
- Unknown
- };
- enum Error { ErrHandshake, ErrCrypt };
-
- TLS(TQObject *parent=0);
- ~TLS();
-
- void setCertificate(const Cert &cert, const RSAKey &key);
- void setCertificateStore(const TQPtrList<Cert> &store); // note: store must persist
-
- void reset();
- bool startClient(const TQString &host="");
- bool startServer();
- void close();
- bool isHandshaken() const;
-
- // plain (application side)
- void write(const TQByteArray &a);
- TQByteArray read();
-
- // encoded (socket side)
- void writeIncoming(const TQByteArray &a);
- TQByteArray readOutgoing();
- TQByteArray readUnprocessed();
-
- // cert related
- const Cert & peerCertificate() const;
- int certificateValidityResult() const;
-
- signals:
- void handshaken();
- void readyRead();
- void readyReadOutgoing(int plainBytes);
- void closed();
- void error(int);
-
- private slots:
- void update();
-
- private:
- class Private;
- Private *d;
- };
-
- class TQCA_EXPORT SASL : public TQObject
- {
- Q_OBJECT
-
- public:
- enum Error { ErrAuth, ErrCrypt };
- enum ErrorCond {
- NoMech,
- BadProto,
- BadServ,
- BadAuth,
- NoAuthzid,
- TooWeak,
- NeedEncrypt,
- Expired,
- Disabled,
- NoUser,
- RemoteUnavail
- };
- SASL(TQObject *parent=0);
- ~SASL();
-
- static void setAppName(const TQString &name);
-
- void reset();
- int errorCondition() const;
-
- // options
- void setAllowPlain(bool);
- void setAllowAnonymous(bool);
- void setAllowActiveVulnerable(bool);
- void setAllowDictionaryVulnerable(bool);
- void setRequireForwardSecrecy(bool);
- void setRequirePassCredentials(bool);
- void setRequireMutualAuth(bool);
-
- void setMinimumSSF(int);
- void setMaximumSSF(int);
- void setExternalAuthID(const TQString &authid);
- void setExternalSSF(int);
-
- void setLocalAddr(const TQHostAddress &addr, TQ_UINT16 port);
- void setRemoteAddr(const TQHostAddress &addr, TQ_UINT16 port);
-
- // initialize
- bool startClient(const TQString &service, const TQString &host, const TQStringList &mechlist, bool allowClientSendFirst=true);
- bool startServer(const TQString &service, const TQString &host, const TQString &realm, TQStringList *mechlist);
-
- // authentication
- void putStep(const TQByteArray &stepData);
- void putServerFirstStep(const TQString &mech);
- void putServerFirstStep(const TQString &mech, const TQByteArray &clientInit);
- void setUsername(const TQString &user);
- void setAuthzid(const TQString &auth);
- void setPassword(const TQString &pass);
- void setRealm(const TQString &realm);
- void continueAfterParams();
- void continueAfterAuthCheck();
-
- // security layer
- int ssf() const;
- void write(const TQByteArray &a);
- TQByteArray read();
- void writeIncoming(const TQByteArray &a);
- TQByteArray readOutgoing();
-
- signals:
- // for authentication
- void clientFirstStep(const TQString &mech, const TQByteArray *clientInit);
- void nextStep(const TQByteArray &stepData);
- void needParams(bool user, bool authzid, bool pass, bool realm);
- void authCheck(const TQString &user, const TQString &authzid);
- void authenticated();
-
- // for security layer
- void readyRead();
- void readyReadOutgoing(int plainBytes);
-
- // error
- void error(int);
-
- private slots:
- void tryAgain();
-
- private:
- class Private;
- Private *d;
-
- void handleServerFirstStep(int r);
- };
-}
-
-#endif
diff --git a/kopete/protocols/jabber/libiris/qca/src/tqcaprovider.h b/kopete/protocols/jabber/libiris/qca/src/tqcaprovider.h
deleted file mode 100644
index f88d1b4f..00000000
--- a/kopete/protocols/jabber/libiris/qca/src/tqcaprovider.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * tqcaprovider.h - TQCA Plugin API
- * Copyright (C) 2003 Justin Karneges
- *
- * This library 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.
- *
- * This library 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 library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef TQCAPROVIDER_H
-#define TQCAPROVIDER_H
-
-#include <tqglobal.h>
-#include <tqstring.h>
-#include <tqdatetime.h>
-#include <tqobject.h>
-#include <tqhostaddress.h>
-#include "tqca.h"
-
-#define TQCA_PLUGIN_VERSION 1
-
-class TQCAProvider
-{
-public:
- TQCAProvider() {}
- virtual ~TQCAProvider() {}
-
- virtual void init()=0;
- virtual int qcaVersion() const=0;
- virtual int capabilities() const=0;
- virtual void *context(int cap)=0;
-};
-
-class TQCA_HashContext
-{
-public:
- virtual ~TQCA_HashContext() {}
-
- virtual TQCA_HashContext *clone()=0;
- virtual void reset()=0;
- virtual void update(const char *in, unsigned int len)=0;
- virtual void final(TQByteArray *out)=0;
-};
-
-class TQCA_CipherContext
-{
-public:
- virtual ~TQCA_CipherContext() {}
-
- virtual TQCA_CipherContext *clone()=0;
- virtual int keySize()=0;
- virtual int blockSize()=0;
- virtual bool generateKey(char *out, int keysize=-1)=0;
- virtual bool generateIV(char *out)=0;
-
- virtual bool setup(int dir, int mode, const char *key, int keysize, const char *iv, bool pad)=0;
- virtual bool update(const char *in, unsigned int len)=0;
- virtual bool final(TQByteArray *out)=0;
-};
-
-class TQCA_RSAKeyContext
-{
-public:
- virtual ~TQCA_RSAKeyContext() {}
-
- virtual TQCA_RSAKeyContext *clone() const=0;
- virtual bool isNull() const=0;
- virtual bool havePublic() const=0;
- virtual bool havePrivate() const=0;
- virtual bool createFromDER(const char *in, unsigned int len)=0;
- virtual bool createFromPEM(const char *in, unsigned int len)=0;
- virtual bool createFromNative(void *in)=0;
- virtual bool generate(unsigned int bits)=0;
- virtual bool toDER(TQByteArray *out, bool publicOnly)=0;
- virtual bool toPEM(TQByteArray *out, bool publicOnly)=0;
-
- virtual bool encrypt(const TQByteArray &in, TQByteArray *out, bool oaep)=0;
- virtual bool decrypt(const TQByteArray &in, TQByteArray *out, bool oaep)=0;
-};
-
-struct TQCA_CertProperty
-{
- TQString var;
- TQString val;
-};
-
-class TQCA_CertContext
-{
-public:
- virtual ~TQCA_CertContext() {}
-
- virtual TQCA_CertContext *clone() const=0;
- virtual bool isNull() const=0;
- virtual bool createFromDER(const char *in, unsigned int len)=0;
- virtual bool createFromPEM(const char *in, unsigned int len)=0;
- virtual bool toDER(TQByteArray *out)=0;
- virtual bool toPEM(TQByteArray *out)=0;
-
- virtual TQString serialNumber() const=0;
- virtual TQString subjectString() const=0;
- virtual TQString issuerString() const=0;
- virtual TQValueList<TQCA_CertProperty> subject() const=0;
- virtual TQValueList<TQCA_CertProperty> issuer() const=0;
- virtual TQDateTime notBefore() const=0;
- virtual TQDateTime notAfter() const=0;
- virtual bool matchesAddress(const TQString &realHost) const=0;
-};
-
-class TQCA_TLSContext
-{
-public:
- enum Result { Success, Error, Continue };
- virtual ~TQCA_TLSContext() {}
-
- virtual void reset()=0;
- virtual bool startClient(const TQPtrList<TQCA_CertContext> &store, const TQCA_CertContext &cert, const TQCA_RSAKeyContext &key)=0;
- virtual bool startServer(const TQPtrList<TQCA_CertContext> &store, const TQCA_CertContext &cert, const TQCA_RSAKeyContext &key)=0;
-
- virtual int handshake(const TQByteArray &in, TQByteArray *out)=0;
- virtual int shutdown(const TQByteArray &in, TQByteArray *out)=0;
- virtual bool encode(const TQByteArray &plain, TQByteArray *to_net, int *encoded)=0;
- virtual bool decode(const TQByteArray &from_net, TQByteArray *plain, TQByteArray *to_net)=0;
- virtual bool eof() const=0;
- virtual TQByteArray unprocessed()=0;
-
- virtual TQCA_CertContext *peerCertificate() const=0;
- virtual int validityResult() const=0;
-};
-
-struct TQCA_SASLHostPort
-{
- TQHostAddress addr;
- TQ_UINT16 port;
-};
-
-struct TQCA_SASLNeedParams
-{
- bool user, authzid, pass, realm;
-};
-
-class TQCA_SASLContext
-{
-public:
- enum Result { Success, Error, NeedParams, AuthCheck, Continue };
- virtual ~TQCA_SASLContext() {}
-
- // common
- virtual void reset()=0;
- virtual void setCoreProps(const TQString &service, const TQString &host, TQCA_SASLHostPort *local, TQCA_SASLHostPort *remote)=0;
- virtual void setSecurityProps(bool noPlain, bool noActive, bool noDict, bool noAnon, bool reqForward, bool reqCreds, bool reqMutual, int ssfMin, int ssfMax, const TQString &_ext_authid, int _ext_ssf)=0;
- virtual int security() const=0;
- virtual int errorCond() const=0;
-
- // init / first step
- virtual bool clientStart(const TQStringList &mechlist)=0;
- virtual int clientFirstStep(bool allowClientSendFirst)=0;
- virtual bool serverStart(const TQString &realm, TQStringList *mechlist, const TQString &name)=0;
- virtual int serverFirstStep(const TQString &mech, const TQByteArray *in)=0;
-
- // get / set params
- virtual TQCA_SASLNeedParams clientParamsNeeded() const=0;
- virtual void setClientParams(const TQString *user, const TQString *authzid, const TQString *pass, const TQString *realm)=0;
- virtual TQString username() const=0;
- virtual TQString authzid() const=0;
-
- // continue steps
- virtual int nextStep(const TQByteArray &in)=0;
- virtual int tryAgain()=0;
-
- // results
- virtual TQString mech() const=0;
- virtual const TQByteArray *clientInit() const=0;
- virtual TQByteArray result() const=0;
-
- // security layer
- virtual bool encode(const TQByteArray &in, TQByteArray *out)=0;
- virtual bool decode(const TQByteArray &in, TQByteArray *out)=0;
-};
-
-#endif