mirror of
https://github.com/Kunzisoft/KeePassDX.git
synced 2025-12-04 15:49:33 +01:00
Import libgcrypt
This commit is contained in:
131
jni/libgcrypt/AUTHORS
Normal file
131
jni/libgcrypt/AUTHORS
Normal file
@@ -0,0 +1,131 @@
|
||||
Library: Libgcrypt
|
||||
Homepage: http://www.gnu.org/software/libgcrypt/
|
||||
Maintainer: Werner Koch <wk@gnupg.org>
|
||||
Bug reports: <bug-libgcrypt@gnupg.org> or http://bugs.gnupg.org
|
||||
Security related bug reports: <security@gnupg.org>
|
||||
License (library): LGPLv2.1+
|
||||
License (manual and tools): GPLv2+
|
||||
|
||||
Libgcrypt used to be part of GnuPG but has been taken out into its own
|
||||
package on 2000-12-21.
|
||||
|
||||
|
||||
Authors of Libgcrypt
|
||||
====================
|
||||
|
||||
GNUPG Werner Koch 1998-02-23
|
||||
Assigns GNU Privacy Guard and future changes.
|
||||
wk@gnupg.org
|
||||
Designed and implemented GnuPG.
|
||||
|
||||
GNUPG Matthew Skala 1998-08-10
|
||||
Disclaims changes.
|
||||
mskala@ansuz.sooke.bc.ca
|
||||
Wrote cipher/twofish.c.
|
||||
|
||||
GNUPG Natural Resources Canada 1998-08-11
|
||||
Disclaims changes by Matthew Skala.
|
||||
|
||||
GNUPG Michael Roth Germany 1998-09-17
|
||||
Assigns changes.
|
||||
mroth@nessie.de
|
||||
Wrote cipher/des.c.
|
||||
Changes and bug fixes all over the place.
|
||||
|
||||
GNUPG Niklas Hernaeus 1998-09-18
|
||||
Disclaims changes.
|
||||
nh@df.lth.se
|
||||
Weak key patches.
|
||||
|
||||
GNUPG R<>mi Guyomarch 1999-05-25
|
||||
Assigns past and future changes. (g10/compress.c, g10/encr-data.c,
|
||||
g10/free-packet.c, g10/mdfilter.c, g10/plaintext.c, util/iobuf.c)
|
||||
rguyom@mail.dotcom.fr
|
||||
|
||||
ANY g10 Code GmbH 2001-06-07
|
||||
Code marked with ChangeLog entries of g10 Code employees.
|
||||
|
||||
LIBGCRYPT Timo Schulz 2001-08-31
|
||||
Assigns past and future changes.
|
||||
twoaday@freakmail.de
|
||||
|
||||
LIBGCRYPT Simon Josefsson 2002-10-25
|
||||
Assigns past and future changes to FSF (cipher/{md4,crc}.c, CTR mode,
|
||||
CTS/MAC flags, self test improvements)
|
||||
simon@josefsson.org
|
||||
|
||||
LIBGCRYPT Moritz Schulte 2003-04-17
|
||||
Assigns past and future changes.
|
||||
moritz@g10code.com
|
||||
|
||||
GNUTLS Nikolaos Mavrogiannopoulos 2003-11-22
|
||||
nmav@gnutls.org
|
||||
Original code for cipher/rfc2268.c.
|
||||
|
||||
LIBGCRYPT The Written Word 2005-04-15
|
||||
Assigns past and future changes. (new: src/libgcrypt.pc.in,
|
||||
src/Makefile.am, src/secmem.c, mpi/hppa1.1/mpih-mul3.S,
|
||||
mpi/hppa1.1/udiv-qrnnd.S, mpi/hppa1.1/mpih-mul2.S,
|
||||
mpi/hppa1.1/mpih-mul1.S, mpi/Makefile.am, tests/prime.c,
|
||||
tests/register.c, tests/ac.c, tests/basic.c, tests/tsexp.c,
|
||||
tests/keygen.c, tests/pubkey.c, configure.ac, acinclude.m4)
|
||||
|
||||
LIBGCRYPT Brad Hards 2006-02-09
|
||||
Assigns Past and Future Changes
|
||||
bradh@frogmouth.net
|
||||
(Added OFB mode. Changed cipher/cipher.c, test/basic.c doc/gcrypt.tex.
|
||||
added SHA-224, changed cipher/sha256.c, added HMAC tests.)
|
||||
|
||||
LIBGCRYPT Hye-Shik Chang 2006-09-07
|
||||
Assigns Past and Future Changes
|
||||
perky@freebsd.org
|
||||
(SEED cipher)
|
||||
|
||||
LIBGCRYPT Werner Dittmann ** pending **
|
||||
werner.dittmann@t-online.de
|
||||
(mpi/amd64, tests/mpitests.c)
|
||||
|
||||
GNUPG David Shaw
|
||||
Assigns past and future changes.
|
||||
dshaw@jabberwocky.com>
|
||||
(cipher/camellia-glue.c and related stuff)
|
||||
|
||||
|
||||
|
||||
More credits
|
||||
============
|
||||
The ATH implementation (src/ath*) has been taken from GPGME and
|
||||
relicensed to the LGPL by the copyright holder of GPGME (g10 Code
|
||||
GmbH); it is now considered to be a part of Libgcrypt.
|
||||
|
||||
Most of the stuff in mpi has been taken from an old GMP library
|
||||
version by Torbjorn Granlund <tege@noisy.tmg.se>.
|
||||
|
||||
The files cipher/rndunix.c and cipher/rndw32.c are based on those
|
||||
files from Cryptlib. Copyright Peter Gutmann, Paul Kendall, and Chris
|
||||
Wedgwood 1996-1999.
|
||||
|
||||
The ECC code cipher/ecc.c was based on code by Sergi Blanch i Torne,
|
||||
sergi at calcurco dot org.
|
||||
|
||||
The implementation of the Camellia cipher has been been taken from the
|
||||
original NTT provided GPL source.
|
||||
|
||||
The CAVS testing program tests/cavs_driver.pl is not to be considered
|
||||
a part of libgcrypt proper. We distribute it merely for convenience.
|
||||
It has a permissive license and is copyright by atsec information
|
||||
security corporation. See the file for details.
|
||||
|
||||
|
||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2006,
|
||||
2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
340
jni/libgcrypt/COPYING
Normal file
340
jni/libgcrypt/COPYING
Normal file
@@ -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.
|
||||
510
jni/libgcrypt/COPYING.LIB
Normal file
510
jni/libgcrypt/COPYING.LIB
Normal file
@@ -0,0 +1,510 @@
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 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.
|
||||
|
||||
[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.
|
||||
^L
|
||||
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.
|
||||
^L
|
||||
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.
|
||||
^L
|
||||
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.
|
||||
^L
|
||||
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.
|
||||
^L
|
||||
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.
|
||||
^L
|
||||
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.
|
||||
^L
|
||||
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
|
||||
^L
|
||||
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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!
|
||||
|
||||
|
||||
1345
jni/libgcrypt/ChangeLog
Normal file
1345
jni/libgcrypt/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
234
jni/libgcrypt/INSTALL
Normal file
234
jni/libgcrypt/INSTALL
Normal file
@@ -0,0 +1,234 @@
|
||||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
53
jni/libgcrypt/Makefile.am
Normal file
53
jni/libgcrypt/Makefile.am
Normal file
@@ -0,0 +1,53 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
# Copyright (C) 1992, 1999, 2000, 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
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
AUTOMAKE_OPTIONS = dist-bzip2
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-random-daemon \
|
||||
--enable-ciphers=arcfour:blowfish:cast5:des:aes:twofish:serpent:rfc2268:seed:camellia
|
||||
|
||||
DIST_SUBDIRS = m4 mpi cipher random src doc tests
|
||||
SUBDIRS = mpi cipher random src doc tests
|
||||
EXTRA_DIST = autogen.sh README.SVN
|
||||
DISTCLEANFILES =
|
||||
|
||||
|
||||
# Add all the files listed in "distfiles" files to the distribution,
|
||||
# apply version number s to some files and create a VERSION file which
|
||||
# we need for the Prereq: patch file trick.
|
||||
dist-hook:
|
||||
@set -e; \
|
||||
for file in `cd $(top_srcdir); \
|
||||
find mpi -type f -name distfiles`; do \
|
||||
dir=`dirname $$file` ; $(mkinstalldirs) $(distdir)/$$dir ; \
|
||||
for i in distfiles `cat $(top_srcdir)/$$file` ; do \
|
||||
ln $(top_srcdir)/$$dir/$$i $(distdir)/$$dir/$$i 2> /dev/null \
|
||||
|| cp -p $(top_srcdir)/$$dir/$$i $(distdir)/$$dir/$$i; \
|
||||
done ; \
|
||||
done
|
||||
@set -e; \
|
||||
echo "$(VERSION)" > $(distdir)/VERSION
|
||||
|
||||
stowinstall:
|
||||
$(MAKE) $(AM_MAKEFLAGS) install prefix=/usr/local/stow/libgcrypt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
717
jni/libgcrypt/Makefile.in
Normal file
717
jni/libgcrypt/Makefile.in
Normal file
@@ -0,0 +1,717 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (C) 1992, 1999, 2000, 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
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(top_srcdir)/configure AUTHORS COPYING COPYING.LIB ChangeLog \
|
||||
INSTALL NEWS THANKS TODO compile config.guess config.sub \
|
||||
depcomp install-sh ltmain.sh missing mkinstalldirs
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/noexecstack.m4 $(top_srcdir)/m4/onceonly.m4 \
|
||||
$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-dvi-recursive install-exec-recursive \
|
||||
install-html-recursive install-info-recursive \
|
||||
install-pdf-recursive install-ps-recursive install-recursive \
|
||||
installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
ps-recursive uninstall-recursive
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_FILEVERSION = @BUILD_FILEVERSION@
|
||||
BUILD_REVISION = @BUILD_REVISION@
|
||||
BUILD_TIMESTAMP = @BUILD_TIMESTAMP@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DL_LIBS = @DL_LIBS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FALLBACK_SOCKLEN_T = @FALLBACK_SOCKLEN_T@
|
||||
FFLAGS = @FFLAGS@
|
||||
GCRYPT_CIPHERS = @GCRYPT_CIPHERS@
|
||||
GCRYPT_DIGESTS = @GCRYPT_DIGESTS@
|
||||
GCRYPT_PUBKEY_CIPHERS = @GCRYPT_PUBKEY_CIPHERS@
|
||||
GCRYPT_RANDOM = @GCRYPT_RANDOM@
|
||||
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
|
||||
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
|
||||
GPG_ERROR_LIBS = @GPG_ERROR_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBGCRYPT_CIPHERS = @LIBGCRYPT_CIPHERS@
|
||||
LIBGCRYPT_CONFIG_API_VERSION = @LIBGCRYPT_CONFIG_API_VERSION@
|
||||
LIBGCRYPT_CONFIG_CFLAGS = @LIBGCRYPT_CONFIG_CFLAGS@
|
||||
LIBGCRYPT_CONFIG_LIBS = @LIBGCRYPT_CONFIG_LIBS@
|
||||
LIBGCRYPT_DIGESTS = @LIBGCRYPT_DIGESTS@
|
||||
LIBGCRYPT_LT_AGE = @LIBGCRYPT_LT_AGE@
|
||||
LIBGCRYPT_LT_CURRENT = @LIBGCRYPT_LT_CURRENT@
|
||||
LIBGCRYPT_LT_REVISION = @LIBGCRYPT_LT_REVISION@
|
||||
LIBGCRYPT_PUBKEY_CIPHERS = @LIBGCRYPT_PUBKEY_CIPHERS@
|
||||
LIBGCRYPT_THREAD_MODULES = @LIBGCRYPT_THREAD_MODULES@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MPI_SFLAGS = @MPI_SFLAGS@
|
||||
NOEXECSTACK_FLAGS = @NOEXECSTACK_FLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PTH_CFLAGS = @PTH_CFLAGS@
|
||||
PTH_CONFIG = @PTH_CONFIG@
|
||||
PTH_LIBS = @PTH_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
RC = @RC@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
AUTOMAKE_OPTIONS = dist-bzip2
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-random-daemon \
|
||||
--enable-ciphers=arcfour:blowfish:cast5:des:aes:twofish:serpent:rfc2268:seed:camellia
|
||||
|
||||
DIST_SUBDIRS = m4 mpi cipher random src doc tests
|
||||
SUBDIRS = mpi cipher random src doc tests
|
||||
EXTRA_DIST = autogen.sh README.SVN
|
||||
DISTCLEANFILES =
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
$(RECURSIVE_CLEAN_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
test -d $(distdir) || mkdir $(distdir)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
am__remove_distdir=: \
|
||||
am__skip_length_check=: \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-lzma: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.lzma*) \
|
||||
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-recursive
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-recursive
|
||||
|
||||
install-ps: install-ps-recursive
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
||||
install-strip
|
||||
|
||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
all all-am am--refresh check check-am clean clean-generic \
|
||||
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-zip \
|
||||
distcheck distclean distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags tags-recursive uninstall uninstall-am
|
||||
|
||||
|
||||
# Add all the files listed in "distfiles" files to the distribution,
|
||||
# apply version number s to some files and create a VERSION file which
|
||||
# we need for the Prereq: patch file trick.
|
||||
dist-hook:
|
||||
@set -e; \
|
||||
for file in `cd $(top_srcdir); \
|
||||
find mpi -type f -name distfiles`; do \
|
||||
dir=`dirname $$file` ; $(mkinstalldirs) $(distdir)/$$dir ; \
|
||||
for i in distfiles `cat $(top_srcdir)/$$file` ; do \
|
||||
ln $(top_srcdir)/$$dir/$$i $(distdir)/$$dir/$$i 2> /dev/null \
|
||||
|| cp -p $(top_srcdir)/$$dir/$$i $(distdir)/$$dir/$$i; \
|
||||
done ; \
|
||||
done
|
||||
@set -e; \
|
||||
echo "$(VERSION)" > $(distdir)/VERSION
|
||||
|
||||
stowinstall:
|
||||
$(MAKE) $(AM_MAKEFLAGS) install prefix=/usr/local/stow/libgcrypt
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
597
jni/libgcrypt/NEWS
Normal file
597
jni/libgcrypt/NEWS
Normal file
@@ -0,0 +1,597 @@
|
||||
Noteworthy changes in version 1.4.4 (2009-01-22)
|
||||
------------------------------------------------
|
||||
|
||||
* Publish GCRY_MODULE_ID_USER and GCRY_MODULE_ID_USER_LAST constants.
|
||||
This functionality has been in Libgcrypt since 1.3.0.
|
||||
|
||||
* MD5 may now be used in non-enforced fips mode.
|
||||
|
||||
* Fixed HMAC for SHA-384 and SHA-512 with keys longer than 64 bytes.
|
||||
|
||||
* In fips mode, RSA keys are now generated using the X9.31 algorithm
|
||||
and DSA keys using the FIPS 186-2 algorithm.
|
||||
|
||||
* The transient-key flag is now also supported for DSA key
|
||||
generation. DSA domain parameters may be given as well.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.4.3 (2008-09-18)
|
||||
------------------------------------------------
|
||||
|
||||
* Try to auto-initialize Libgcrypt to minimize the effect of
|
||||
applications not doing that correctly. This is not a perfect
|
||||
solution but given that many applicationion would totally fail
|
||||
without such a hack, we try to help at least with the most common
|
||||
cases. Folks, please read the manual to learn how to properly
|
||||
initialize Libgcrypt!
|
||||
|
||||
* Auto-initialize the secure memory to 32k instead of aborting the
|
||||
process.
|
||||
|
||||
* Log fatal errors via syslog.
|
||||
|
||||
* Changed the name and the semantics of the fips mode config file.
|
||||
|
||||
* Add convenience macro gcry_fips_mode_active.
|
||||
|
||||
* More self-tests.
|
||||
|
||||
* Documentation cleanups.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.4.2 (2008-09-08)
|
||||
------------------------------------------------
|
||||
|
||||
* The long missing gcry_mpi_lshift function has been added.
|
||||
|
||||
* RSA key generation now supports a "transient-key" flag.
|
||||
|
||||
* The keygrip computation for ECDSA has been implemented thus ECDSA
|
||||
is now fully supported.
|
||||
|
||||
* A few macros have been replaced by functions for better type
|
||||
checking.
|
||||
|
||||
* The thread initialization structure now carries version
|
||||
information.
|
||||
|
||||
* The manual describes more clearly how to initialize Libgcrypt.
|
||||
|
||||
* The library may now be switched into a FIPS mode.
|
||||
|
||||
* Interface changes relative to the 1.3.0 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
GCRYCTL_OPERATIONAL_P NEW.
|
||||
GCRYCTL_FIPS_MODE_P NEW.
|
||||
GCRYCTL_FORCE_FIPS_MODE NEW.
|
||||
gcry_cipher_setkey NEW: Replaces macro.
|
||||
gcry_cipher_setiv NEW: Replaces macro.
|
||||
gcry_cipher_setctr NEW: Replaces macro.
|
||||
gcry_mpi_lshift NEW.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
Noteworthy changes in version 1.4.1 (2008-04-25)
|
||||
------------------------------------------------
|
||||
|
||||
* Fixed a bug introduced by 1.3.1 which led to the comsumption of far
|
||||
too much entropy for the intial seeding.
|
||||
|
||||
* Improved AES performance for CFB and CBC modes.
|
||||
|
||||
* Removed build problems for the Padlock support.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.4.0 (2007-12-10)
|
||||
------------------------------------------------
|
||||
|
||||
* New configure option --disable-padlock-support which is mostly
|
||||
useful in case of build problems.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.3.2 (2007-12-03)
|
||||
------------------------------------------------
|
||||
|
||||
* The visibility attribute is now used if supported by the toolchain.
|
||||
|
||||
* The ACE engine of VIA processors is now used for AES-128.
|
||||
|
||||
* The ASN.1 DER template for SHA-224 has been fixed.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.3.1 (2007-10-26)
|
||||
------------------------------------------------
|
||||
|
||||
* The entire library is now under the LGPL. The helper programs and
|
||||
the manual are under the GPL. Kudos to Peter Gutmann for giving
|
||||
permissions to relicense the rndw32 and rndunix modules.
|
||||
|
||||
* The Camellia cipher is now under the LGPL and included by default.
|
||||
|
||||
* Fixed a bug in the detection of symbol prefixes which inhibited the
|
||||
build of optimzied assembler code on certain systems.
|
||||
|
||||
* Updated the entropy gatherer for W32.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.3.0 (2007-05-04)
|
||||
------------------------------------------------
|
||||
|
||||
* Changed the way the RNG gets initialized. This allows to keep it
|
||||
uninitialized as long as no random numbers are used. To override
|
||||
this, the new macro gcry_fast_random_poll may be used. It is in
|
||||
general a good idea to spread this macro into the application code
|
||||
to make sure that these polls happen often enough.
|
||||
|
||||
* Made the RNG immune against fork without exec.
|
||||
|
||||
* Reading and writing the random seed file is now protected by a
|
||||
fcntl style file lock on systems that provide this function.
|
||||
|
||||
* Support for SHA-224 and HMAC using SHA-384 and SHA-512.
|
||||
|
||||
* Support for the SEED cipher.
|
||||
|
||||
* Support for the Camellia cipher. Note that Camellia is disabled by
|
||||
default, and that enabling it changes the license of libgcrypt from
|
||||
LGPL to GPL.
|
||||
|
||||
* Support for OFB encryption mode.
|
||||
|
||||
* gcry_mpi_rshift does not anymore truncate the shift count.
|
||||
|
||||
* Reserved algorithm ranges for use by applications.
|
||||
|
||||
* Support for DSA2.
|
||||
|
||||
* The new function gcry_md_debug should be used instead of the
|
||||
gcry_md_start_debug and gcry_md_stop_debug macros.
|
||||
|
||||
* New configure option --enable-random-daemon to support a system
|
||||
wide random daemon. The daemon code is experimental and not yet
|
||||
very well working. It will eventually allow to keep a global
|
||||
random pool for the sake of short living processes.
|
||||
|
||||
* Non executable stack support is now used by default on systems
|
||||
supporting it.
|
||||
|
||||
* Support for Microsoft Windows.
|
||||
|
||||
* Assembler support for the AMD64 architecture.
|
||||
|
||||
* New configure option --enable-mpi-path for optimized builds.
|
||||
|
||||
* Experimental support for ECDSA; should only be used for testing.
|
||||
|
||||
* New control code GCRYCTL_PRINT_CONFIG to print the build
|
||||
configuration.
|
||||
|
||||
* Minor changes to some function declarations. Buffer arguments are
|
||||
now typed as void pointer. This should not affect any compilation.
|
||||
Fixed two bugs in return values and clarified documentation.
|
||||
|
||||
* Interface changes relative to the 1.2.0 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gcry_fast_random_poll NEW
|
||||
gcry_md_debug NEW
|
||||
gcry_sexp_nth_string NEW
|
||||
GCRY_MD_SHA224 NEW
|
||||
GCRY_PK_USAGE_CERT NEW
|
||||
GCRY_PK_USAGE_AUTH NEW
|
||||
GCRY_PK_USAGE_UNKN NEW
|
||||
GCRY_PK_ECDSA NEW
|
||||
GCRY_CIPHER_SEED NEW
|
||||
GCRY_CIPHER_CAMELLIA128 NEW
|
||||
GCRY_CIPHER_CAMELLIA192 NEW
|
||||
GCRY_CIPHER_CAMELLIA256 NEW
|
||||
GCRYCTL_FAKED_RANDOM_P NEW
|
||||
GCRYCTL_PRINT_CONFIG NEW
|
||||
GCRYCTL_SET_RNDEGD_SOCKET NEW.
|
||||
gcry_mpi_scan CHANGED: Argument BUFFER is now void*.
|
||||
gcry_pk_algo_name CHANGED: Returns "?" instead of NULL.
|
||||
gcry_cipher_algo_name CHANGED: Returns "?" instead of "".
|
||||
gcry_pk_spec_t CHANGED: Element ALIASES is now const ptr.
|
||||
gcry_md_write_t CHANGED: Argument BUF is now a const void*.
|
||||
gcry_md_ctl CHANGED: Argument BUFFER is now void*.
|
||||
gcry_cipher_encrypt CHANGED: Arguments IN and OUT are now void*.
|
||||
gcry_cipher_decrypt CHANGED: Arguments IN and OUT are now void*.
|
||||
gcry_sexp_sprint CHANGED: Argument BUFFER is now void*.
|
||||
gcry_create_nonce CHANGED: Argument BUFFER is now void*.
|
||||
gcry_randomize CHANGED: Argument BUFFER is now void*.
|
||||
gcry_cipher_register CHANGED: Argument ALGORITHM_ID is now int*.
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
Noteworthy changes in version 1.2.0 (2004-04-15)
|
||||
------------------------------------------------
|
||||
|
||||
* First stable release.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.94 (2004-03-29)
|
||||
-------------------------------------------------
|
||||
|
||||
* The support for multi-threaded users goes into its third
|
||||
incarnation. We removed compile time support for thread libraries.
|
||||
To support the thread library of your choice, you have to set up
|
||||
callback handlers at initialization time. New data structures, a
|
||||
new control command, and default initializers are provided for this
|
||||
purpose.
|
||||
|
||||
* Interface changes relative to the 1.1.93 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
libgcrypt-config --thread OBSOLETE
|
||||
libgcrypt-pth.la REMOVED
|
||||
libgcrypt-pthread.la REMOVED
|
||||
GCRYCTL_SET_THREAD_CBS NEW
|
||||
struct gcrypt_thread_cbs NEW
|
||||
enum gcry_thread_option NEW
|
||||
GCRY_THREAD_OPTION_PTH_IMPL NEW
|
||||
GCRY_THREAD_OPTION_PTHREAD_IMPL NEW
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Noteworthy changes in version 1.1.93 (2004-03-06)
|
||||
-------------------------------------------------
|
||||
|
||||
* The automatic thread library detection has finally been removed.
|
||||
From now on, only linking explicitely to libgcrypt, libgcrypt-pth
|
||||
or libgcrypt-pthread is supported.
|
||||
|
||||
Noteworthy changes in version 1.1.92 (2004-02-20)
|
||||
-------------------------------------------------
|
||||
|
||||
* Minor bug fixes.
|
||||
|
||||
* Included a limited implementation of RFC2268.
|
||||
|
||||
* Changed API of the gcry_ac_ functions. Only a very few programs
|
||||
should be affected by this.
|
||||
|
||||
* Interface changes relative to the 1.1.91 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
GCRY_CIPHER_RFC2268_40 NEW.
|
||||
gcry_ac_data_set CHANGED: New argument FLAGS.
|
||||
gcry_ac_data_get_name CHANGED: New argument FLAGS.
|
||||
gcry_ac_data_get_index CHANGED: New argument FLAGS.
|
||||
gcry_ac_key_pair_generate CHANGED: New and reordered arguments.
|
||||
gcry_ac_key_test CHANGED: New argument HANDLE.
|
||||
gcry_ac_key_get_nbits CHANGED: New argument HANDLE.
|
||||
gcry_ac_key_get_grip CHANGED: New argument HANDLE.
|
||||
gcry_ac_data_search REMOVED.
|
||||
gcry_ac_data_add REMOVED.
|
||||
GCRY_AC_DATA_FLAG_NO_BLINDING REMOVED.
|
||||
GCRY_AC_FLAG_NO_BLINDING NEW: Replaces above.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.91 (2003-12-19)
|
||||
-------------------------------------------------
|
||||
|
||||
* Code cleanups and minor bug fixes.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.90 (2003-11-14)
|
||||
-------------------------------------------------
|
||||
|
||||
* The use of the GCRY_WEAK_RANDOM level is now deprecated in favor of
|
||||
the new gcry_create_nonce function.
|
||||
|
||||
* gcry_sexp_build now supports a "%b" format to include a memory buffer.
|
||||
|
||||
* Minor configuration fixes.
|
||||
|
||||
* Interface changes relative to the 1.1.44 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gcry_create_nonce NEW
|
||||
gcry_sexp_build ENHANCED
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.44 (2003-10-31)
|
||||
-------------------------------------------------
|
||||
|
||||
* Bug fixes and more code cleanups.
|
||||
|
||||
* Enhanced the prime API.
|
||||
|
||||
* Interface changes relative to the 1.1.43 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gcry_prime_group_generator NEW
|
||||
gcry_prime_release_factors NEW
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.43 (2003-09-04)
|
||||
-------------------------------------------------
|
||||
|
||||
* Bug fixes and internal code cleanups.
|
||||
|
||||
* Support for the Serpent cipher algorithm.
|
||||
|
||||
* Interface changes relative to the 1.1.42 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gcry_prime_generate NEW
|
||||
gcry_prime_check NEW
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.42 (2003-07-31)
|
||||
-------------------------------------------------
|
||||
|
||||
* Major API cleanup. Applications need to be converted to the new
|
||||
API. See README.apichanges for hints on how to do that. Backward
|
||||
compatibility is provided where it was possible without too much
|
||||
effort and did not collide with the overall sanitization effort.
|
||||
However, this is only for ease of transition. NO DEPRECATED
|
||||
FUNCTION OR DATA TYPE IS CONSIDERED A PART OF THE API OR ABI AND
|
||||
WILL BE DROPPED IN THE FUTURE WITHOUT CHANGING THE SONAME OF THE
|
||||
LIBRARY.
|
||||
|
||||
* If gcrypt.h is included in sources compiled by GCC 3.1 or later,
|
||||
deprecated attributes will warn about use of obsolete functions and
|
||||
type definitions. You can suppress these warnings by passing
|
||||
-Wno-deprecated-declarations to the gcc command.
|
||||
|
||||
* gcry_check_version must be called from now on to initialize the
|
||||
library, it is not longer optional.
|
||||
|
||||
* Removed `libgcrypt errno' concept.
|
||||
|
||||
* Libgcrypt depends on libgpg-error, a library that provides error
|
||||
codes and according functions for all GnuPG components. Functions
|
||||
that used to return error codes asa `int' have been changed to
|
||||
return a code of type `gcry_error_t'. All GCRYERR_* error symbols
|
||||
have been removed, since they are now contained in libgpg-error
|
||||
(GPG_ERR_*). All functions and types in libgpg-error have also been
|
||||
wrapped in Libgcrypt. The new types are gcry_err_code_t and
|
||||
gcry_err_source_t. The new functions are gcry_err_code,
|
||||
gcry_err_source, gcry_error, gcry_err_make, gcry_error_from_errno,
|
||||
gcry_err_make_from_errno, gcry_err_code_from_errno,
|
||||
gcry_err_code_to_errno, gcry_strsource.
|
||||
|
||||
* New function gcry_mpi_dump to help in debugging.
|
||||
|
||||
* Added alternative interface for asymmetric cryptography.
|
||||
|
||||
* CRC-32, CRC-32 a'la RFC 1510, CRC-24 a'la RFC 2440 are now
|
||||
supported.
|
||||
|
||||
* SHA-256, SHA-384 and SHA-512 are now supported.
|
||||
|
||||
* 128 bit Twofish is now supported.
|
||||
|
||||
* The random module won't print the "not enough random bytes
|
||||
available" anymore. A new progress status is issued instead.
|
||||
|
||||
* CBC-MAC for block ciphers is now supported, by using a
|
||||
GCRY_CIPHER_CBC_MAC cipher flag.
|
||||
|
||||
* CTR mode for block ciphers is now supported.
|
||||
|
||||
* The public RSA exponent can now be specified in key generation.
|
||||
|
||||
* RSA blinding is now supported and is used automatically for RSA
|
||||
decryption. It can be explicitely disabled by using the
|
||||
`no-blinding' symbol in the `flags' S-Expression or by using the
|
||||
GCRY_AC_FLAG_DATA_NO_BLINDING flag when using the ac interface.
|
||||
|
||||
* gcry_sexp_canon_len does not use a `historically encoded' error
|
||||
code anymore.
|
||||
|
||||
|
||||
* Interface changes relative to the 1.1.12 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
GCRY_MPI DEPRECATED; Use: gcry_mpi_t
|
||||
GcryMPI DEPRECATED; Use: gcry_mpi_t
|
||||
GCRY_SEXP DEPRECATED; Use: gcry_sexp_t
|
||||
GcrySexp DEPRECATED; Use: gcry_sexp_t
|
||||
GCRY_CIPHER_HD DEPRECATED; Use: gcry_cipher_hd_t
|
||||
GcryCipherHd DEPRECATED; Use: gcry_cipher_hd_t
|
||||
GCRY_MD_HD DEPRECATED; Use: gcry_md_hd_t
|
||||
GcryMDHd DEPRECATED; Use: gcry_md_hd_t
|
||||
gcry_error_t NEW
|
||||
gcry_err_code_t NEW
|
||||
gcry_err_source_t NEW
|
||||
gcry_err_make NEW
|
||||
gcry_error NEW
|
||||
gcry_err_code NEW
|
||||
gcry_err_source NEW
|
||||
gcry_err_code_from_errno NEW
|
||||
gcry_err_code_to_errno NEW
|
||||
gcry_err_make_from_errno NEW
|
||||
gcry_error_from_errno NEW
|
||||
gcry_strsource NEW
|
||||
GCRYERR_{some error code} REMOVED; Use GPG_ERR_*
|
||||
from libgpg-error instead.
|
||||
gcry_errno REMOVED
|
||||
gcry_sexp_canon_len CHANGED
|
||||
gcry_sexp_build_array NEW
|
||||
gcry_mpi_scan CHANGED: New argument to separate in/out args.
|
||||
gcry_mpi_print CHANGED: Ditto.
|
||||
gcry_mpi_dump NEW
|
||||
gcry_cipher_open CHANGED
|
||||
gcry_cipher_reset NEW
|
||||
gcry_cipher_register NEW
|
||||
gcry_cipher_unregister NEW
|
||||
gcry_cipher_list NEW
|
||||
gcry_cipher_algo_keylen REPLACED macro with function.
|
||||
gcry_cipher_algo_blklen REPLACED macro with function.
|
||||
gcry_pk_register NEW
|
||||
gcry_pk_unregister NEW
|
||||
gcry_pk_list NEW
|
||||
gcry_pk_decrypt ENHANCED: Allows flag to return
|
||||
complete S-expression.
|
||||
gcry_md_open CHANGED
|
||||
gcry_md_copy CHANGED
|
||||
gcry_md_is_enabled NEW
|
||||
gcry_md_is_secure NEW
|
||||
gcry_md_register NEW
|
||||
gcry_md_unregister NEW
|
||||
gcry_md_list NEW
|
||||
gcry_ac_data_t NEW
|
||||
gcry_ac_key_t NEW
|
||||
gcry_ac_key_pair_t NEW
|
||||
gcry_ac_handle_t NEW
|
||||
gcry_ac_key_spec_rsa_t NEW
|
||||
gcry_ac_data_new NEW
|
||||
gcry_ac_data_destroy NEW
|
||||
gcry_ac_data_set NEW
|
||||
gcry_ac_data_copy NEW
|
||||
gcry_ac_data_length NEW
|
||||
gcry_ac_data_get_name NEW
|
||||
gcry_ac_data_get_index NEW
|
||||
gcry_ac_data_clear NEW
|
||||
gcry_ac_open NEW
|
||||
gcry_ac_close NEW
|
||||
gcry_ac_key_init NEW
|
||||
gcry_ac_key_pair_generate NEW
|
||||
gcry_ac_key_pair_extract NEW
|
||||
gcry_ac_key_data_get NEW
|
||||
gcry_ac_key_test NEW
|
||||
gcry_ac_key_get_nbits NEW
|
||||
gcry_ac_key_get_grip NEW
|
||||
gcry_ac_key_destroy NEW
|
||||
gcry_ac_key_pair_destroy NEW
|
||||
gcry_ac_data_encrypt NEW
|
||||
gcry_ac_data_decrypt NEW
|
||||
gcry_ac_data_sign NEW
|
||||
gcry_ac_data_verify NEW
|
||||
gcry_ac_id_to_name NEW
|
||||
gcry_ac_name_to_id NEW
|
||||
gcry_handler_progress_t NEW
|
||||
gcry_handler_alloc_t NEW
|
||||
gcry_handler_secure_check_t NEW
|
||||
gcry_handle_realloc_t NEW
|
||||
gcry_handler_free_t NEW
|
||||
gcry_handler_no_mem_t NEW
|
||||
gcry_handler_error_t NEW
|
||||
gcry_handler_log_t NEW
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Noteworthy changes in version 1.1.12 (2003-01-20)
|
||||
-------------------------------------------------
|
||||
|
||||
* gcry_pk_sign, gcry_pk_verify and gcry_pk_encrypt can now handle an
|
||||
optional pkcs1 flags parameter in the S-expression. A similar flag
|
||||
may be passed to gcry_pk_decrypt but it is only syntactically
|
||||
implemented.
|
||||
|
||||
* New convenience macro gcry_md_get_asnoid.
|
||||
|
||||
* There is now some real stuff in the manual.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.11 (2002-12-21)
|
||||
-------------------------------------------------
|
||||
|
||||
* Don't export internal symbols anymore (currently only for GNU systems)
|
||||
|
||||
* New algorithm: MD4
|
||||
|
||||
* Implemented ciphertext stealing.
|
||||
|
||||
* Smaller bugs fixes and a few new OIDs.
|
||||
|
||||
* Interface changes relative to the 1.1.8 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gcry_cipher_cts NEW
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.10 (2002-09-20)
|
||||
-------------------------------------------------
|
||||
|
||||
* Fixed shared library builds for i386, PPC and Sparc.
|
||||
|
||||
* Added simple benchmark tool.
|
||||
|
||||
* Replaced the internal mutexes by code which automatically adapts to
|
||||
the used threading library. Currently Pth and Pthread are
|
||||
supported. For non-ELF systems the GNU toolchain is now required..
|
||||
|
||||
* Added untested support to build Windows DLLs.
|
||||
|
||||
Noteworthy changes in version 1.1.9 (2002-08-23)
|
||||
------------------------------------------------
|
||||
|
||||
* Support for plain old DES.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.8 (2002-06-25)
|
||||
------------------------------------------------
|
||||
|
||||
* Minor cleanups and exported a few new functions.
|
||||
|
||||
* Interface changes relative to the 1.1.7 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
gcry_mpi_div NEW
|
||||
gcry_mpi_mod NEW
|
||||
gcry_mpi_invm NEW
|
||||
gcry_mpi_swap NEW
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Noteworthy changes in version 1.1.7 (2002-05-21)
|
||||
------------------------------------------------
|
||||
|
||||
* Libgcrypt is now distributed under the terms of the GNU Lesser
|
||||
General Public License; see the README file for details.
|
||||
|
||||
* It is possible to use libgcrypt w/o intialized secure memory.
|
||||
|
||||
* Libgcrypt should now be thread safe after the initialization.
|
||||
gcry_control (GCRYCRL_INITIALIZATION_FINISHED,NULL,0) should have
|
||||
been called before creating additional threads.
|
||||
|
||||
* Interface changes relative to the 1.1.6 release:
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
GCRYCTL_DISABLE_INTERNAL_LOCKING NEW
|
||||
GCRYCTL_DISABLE_SECMEM NEW
|
||||
GCRYCTL_INITIALIZATION_FINISHED NEW
|
||||
GCRYCTL_INITIALIZATION_FINISHED_P NEW
|
||||
GCRYCTL_ANY_INITIALIZATION_P NEW
|
||||
gcry_strdup NEW
|
||||
gcry_sexp_create NEW
|
||||
gcry_sexp_new NEW
|
||||
gcry_set_progress_handler NEW
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Noteworthy changes in version 1.1.6 (2002-02-07)
|
||||
------------------------------------------------
|
||||
|
||||
* Enhanced the S-expression conversion functions.
|
||||
|
||||
Noteworthy changes in version 1.1.5 (2001-12-18)
|
||||
------------------------------------------------
|
||||
|
||||
* gcry_{cipher,md}_map_name are now able to map stringified object IDs.
|
||||
|
||||
* New functions gcry_sexp_canon_len and gcry_cipher_mode_from_oid.
|
||||
|
||||
* Closed some memory leaks.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.4 (2001-08-03)
|
||||
------------------------------------------------
|
||||
|
||||
* Arcfour does now work.
|
||||
|
||||
* Some minor fixes.
|
||||
|
||||
* Added a first test program
|
||||
|
||||
* Migrated to autoconf 2.52.
|
||||
|
||||
|
||||
Noteworthy changes in version 1.1.3 (2001-05-31)
|
||||
------------------------------------------------
|
||||
|
||||
* First release of Libgcrypt which is a result of splitting GnuPG
|
||||
into into libgcrypt and GnuPG.
|
||||
|
||||
|
||||
Copyright 2001, 2002, 2003, 2004, 2007, 2008,
|
||||
2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
216
jni/libgcrypt/README
Normal file
216
jni/libgcrypt/README
Normal file
@@ -0,0 +1,216 @@
|
||||
Libgcrypt - The GNU Crypto Library
|
||||
------------------------------------
|
||||
Version 1.4.4
|
||||
|
||||
|
||||
Copyright 2000, 2002, 2003, 2004, 2007, 2008,
|
||||
2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Libgcrypt is a general purpose crypto library based on the code
|
||||
used in GnuPG. Libgcrypt depends on the library `libgpg-error',
|
||||
which must be installed correctly before Libgcrypt is to be built.
|
||||
Libgcrypt is distributed under the LGPL, see the section "License"
|
||||
below for details.
|
||||
|
||||
|
||||
Build Instructions
|
||||
------------------
|
||||
|
||||
The download canonical location for libgcrypt is:
|
||||
|
||||
ftp://ftp.gnupg.org/gcrypt/libgcrypt/
|
||||
|
||||
To build libgcrypt you need libgpg-error:
|
||||
|
||||
ftp://ftp.gnupg.org/gcrypt/libgpg-error/
|
||||
|
||||
You should get the latest versions of course.
|
||||
|
||||
After building and installing the libgpg-error package, you may
|
||||
continue with Libgcrypt installation As with allmost all GNU
|
||||
packages, you just have to do
|
||||
|
||||
./configure
|
||||
make
|
||||
make check
|
||||
make install
|
||||
|
||||
The "make check" is not required but a good idea to see whether
|
||||
the library works as expected. The check takes some while and
|
||||
prints some benchmarking results. Before doing "make install" you
|
||||
probably need to become root.
|
||||
|
||||
To build libgcrypt for Microsoft Windows, you need to have the
|
||||
mingw32 cross-building toolchain installed. Instead of running a
|
||||
plain configure you use
|
||||
|
||||
./autogen.sh --build-w32
|
||||
make
|
||||
make install
|
||||
|
||||
By default this command sequences expectsd a libgpg-error
|
||||
installed below $HOME/w32root and installs libgcrypt to that
|
||||
directory too. See the autogen.sh code for details.
|
||||
|
||||
The documentation is available as an Info file (gcrypt.info). To
|
||||
build documentation in PDF, run this:
|
||||
|
||||
cd doc
|
||||
make pdf
|
||||
|
||||
|
||||
|
||||
Mailing List
|
||||
------------
|
||||
|
||||
You may want to join the developer's mailing list
|
||||
gcrypt-devel@gnupg.org by sending mail with a subject of
|
||||
"subscribe" to gcrypt-devel-request@gnupg.org. An archive of this
|
||||
list is available at http://lists.gnupg.org .
|
||||
|
||||
|
||||
Configure options
|
||||
-----------------
|
||||
Here is a list of configure options which are sometimes useful
|
||||
for installation.
|
||||
|
||||
--enable-m-guard
|
||||
Enable the integrated malloc checking code. Please
|
||||
note that this feature does not work on all CPUs
|
||||
(e.g. SunOS 5.7 on UltraSparc-2) and might give
|
||||
you a bus error.
|
||||
|
||||
--disable-asm
|
||||
Do not use assembler modules. It is not possible
|
||||
to use this on some CPU types.
|
||||
|
||||
--enable-ld-version-script
|
||||
Libgcrypt tries to build a library where internal
|
||||
symbols are not exported. This requires support
|
||||
from ld and is currently enabled for a few OSes.
|
||||
If you know that your ld supports the so called
|
||||
ELF version scripts, you can use this option to
|
||||
force its use. OTOH, if you get error message
|
||||
from the linker, you probably want to use this
|
||||
option to disable the use of version scripts.
|
||||
Note, that you should never ever use an
|
||||
undocumented symbol or one which is prefixed with
|
||||
an underscore.
|
||||
|
||||
--enable-ciphers=list
|
||||
--enable-pubkey-ciphers=list
|
||||
--enable-digests=list
|
||||
If not otherwise specified, all algorithms
|
||||
included in the libgcrypt source tree are built.
|
||||
An exception are algorithms, which depend on
|
||||
features not provided by the system, like 64bit
|
||||
data types. With these switches it is possible
|
||||
to select exactly those algorithm modules, which
|
||||
should be built. The algorithms are to be
|
||||
separated by spaces, commas or colons. To view
|
||||
the list used with the current build the program
|
||||
tests/version may be used.
|
||||
|
||||
--disable-endian-check
|
||||
Don't let configure test for the endianness but
|
||||
try to use the OS provided macros at compile
|
||||
time. This is helpful to create OS X fat binaries.
|
||||
|
||||
--enable-random-daemon
|
||||
Include support for a global random damon and
|
||||
build the daemon. This is an experimental feature.
|
||||
|
||||
--enable-mpi-path=EXTRA_PATH
|
||||
Prepend EXTRA_PATH to list of CPU specific
|
||||
optimizations. For example, if you want to add
|
||||
optimizations forn a Intel Pentium 4 compatible
|
||||
CPU, you may use
|
||||
--enable-mpi-path=pentium4/sse2:pentium4/mmx
|
||||
Take care: The generated library may crash on
|
||||
non-compatible CPUs.
|
||||
|
||||
--enable-random=NAME
|
||||
Force the use of the random gathering module
|
||||
NAME. Default is either to use /dev/random or
|
||||
the auto mode. Possible values for NAME are:
|
||||
egd - Use the module which accesses the
|
||||
Entropy Gathering Daemon. See the webpages
|
||||
for more information about it.
|
||||
unix - Use the standard Unix module which does not
|
||||
have a very good performance.
|
||||
linux - Use the module which accesses /dev/random.
|
||||
This is the first choice and the default one
|
||||
for GNU/Linux or *BSD.
|
||||
auto - Compile linux, egd and unix in and
|
||||
automagically select at runtime.
|
||||
|
||||
--enable-hmac-binary-check
|
||||
Include support to check the binary at runtime
|
||||
against a HMAC checksum. This works only in FIPS
|
||||
mode and on systems providing the dladdr function.
|
||||
|
||||
--disable-padlock-support
|
||||
Disable support for the PadLock engine of VIA
|
||||
processors. The default is to use PadLock if
|
||||
available. Try this if you get problems with
|
||||
assembler code.
|
||||
|
||||
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
The library is distributed under the terms of the GNU Lesser
|
||||
General Public License (LGPL); see the file COPYING.LIB for the
|
||||
actual terms. The helper programs (e.g. gcryptrnd and getrandom)
|
||||
as well as the documentation are distributed under the terms of
|
||||
the GNU General Public License (GPL); see the file COPYING for the
|
||||
actual terms.
|
||||
|
||||
This library used to be available under the GPL - this was changed
|
||||
with version 1.1.7 with the rationale that there are now many free
|
||||
crypto libraries available and many of them come with capabilities
|
||||
similar to Libcrypt. We decided that to foster the use of
|
||||
cryptography in Free Software an LGPLed library would make more
|
||||
sense because it avoids problems due to license incompatibilities
|
||||
between some Free Software licenses and the GPL.
|
||||
|
||||
Please note that in many cases it is better for a library to be
|
||||
licensed under the GPL, so that it provides an advantage for free
|
||||
software projects. The Lesser GPL is so named because it does
|
||||
less to protect the freedom of the users of the code that it
|
||||
covers. See http://www.gnu.org/philosophy/why-not-lgpl.html for
|
||||
more explanation.
|
||||
|
||||
|
||||
Contact
|
||||
-------
|
||||
|
||||
See the file AUTHORS.
|
||||
|
||||
Commercial grade support for Libgcrypt is available; please see
|
||||
http://www.gnupg.org/service.html .
|
||||
|
||||
|
||||
This file is Free Software; as a special exception the authors gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved. For conditions
|
||||
of the whole package, please see the file COPYING. This file is
|
||||
distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY, to the extent permitted by law; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
51
jni/libgcrypt/README.SVN
Normal file
51
jni/libgcrypt/README.SVN
Normal file
@@ -0,0 +1,51 @@
|
||||
If you are building from CVS, run the script
|
||||
|
||||
./autogen.sh
|
||||
|
||||
first, to make sure that you have all the necessary maintainer tools
|
||||
are installed and to build the actual configuration files. Then run
|
||||
|
||||
./configure --enable-maintainer-mode
|
||||
|
||||
followed by the usual make.
|
||||
|
||||
If autogen.sh complains about insufficient versions of the required
|
||||
tools, or the tools are not installed, you may use environment
|
||||
variables to override the default tool names:
|
||||
|
||||
AUTOMAKE_SUFFIX is used as a suffix for all tools from the automake
|
||||
package. For example
|
||||
AUTOMAKE_SUFFIX="-1.7" ./autogen.sh
|
||||
uses "automake-1.7" and "aclocal-1.7.
|
||||
AUTOMAKE_PREFIX is used as a prefix for all tools from the automake
|
||||
page and may be combined with AUTOMAKE_SUFFIX. e.g.:
|
||||
AUTOMAKE_PREFIX=/usr/foo/bin ./autogen.sh
|
||||
uses "automake" and "aclocal" in the /usr/foo/bin
|
||||
directory.
|
||||
AUTOCONF_SUFFIX is used as a suffix for all tools from the automake
|
||||
package
|
||||
AUTOCONF_PREFIX is used as a prefix for all tools from the automake
|
||||
package
|
||||
GETTEXT_SUFFIX is used as a suffix for all tools from the gettext
|
||||
package
|
||||
GETTEXT_PREFIX is used as a prefix for all tools from the gettext
|
||||
package
|
||||
|
||||
It is also possible to use the variable name AUTOMAKE, AUTOCONF,
|
||||
ACLOCAL, AUTOHEADER, GETTEXT and MSGMERGE to directly specify the name
|
||||
of the programs to run. It is however better to use the suffix and
|
||||
prefix forms as described above because that does not require
|
||||
knowledge about the actual tools used by autgen.sh.
|
||||
|
||||
|
||||
Please don't use autopoint, libtoolize or autoreconf unless you are
|
||||
the current maintainer and want to update the standard configuration
|
||||
files. All those files should be in the CVS and only updated manually
|
||||
if the maintainer decides that newer versions are required. The
|
||||
maintainer should also make sure that the required version of automake
|
||||
et al. are properly indicated at the top of configure.ac and take care
|
||||
to copy the files and not merely use symlinks.
|
||||
|
||||
|
||||
|
||||
|
||||
159
jni/libgcrypt/THANKS
Normal file
159
jni/libgcrypt/THANKS
Normal file
@@ -0,0 +1,159 @@
|
||||
Libgcrypt is based on the GnuPG code. Here is a list of people, who
|
||||
helped in GnuPG and Libgcrypt development. Please help us to keep it
|
||||
complete and free of errors.
|
||||
|
||||
Albert Chin china at thewrittenword com
|
||||
Allan Clark allanc@sco.com
|
||||
Anand Kumria wildfire@progsoc.uts.edu.au
|
||||
Andreas Metzler ametzler at downhill.at.eu.org
|
||||
Ariel T Glenn ariel@columbia.edu
|
||||
Bodo Moeller Bodo_Moeller@public.uni-hamburg.de
|
||||
Brenno de Winter brenno@dewinter.com
|
||||
Brian Moore bem@cmc.net
|
||||
Brian Warner warner@lothar.com
|
||||
Brieuc Jeunhomme bbp@via.ecp.fr
|
||||
Bryan Fullerton bryanf@samurai.com
|
||||
Caskey L. Dickson caskey@technocage.com
|
||||
Cees van de Griend cees-list@griend.xs4all.nl
|
||||
Charles Levert charles@comm.polymtl.ca
|
||||
Christian Biere christianbiere@gmx.de
|
||||
Christian Grothoff grothoff@cs.purdue.edu
|
||||
Christian von Roques roques@pond.sub.org
|
||||
Christopher Oliver oliver@fritz.traverse.net
|
||||
Christian Recktenwald chris@citecs.de
|
||||
Daniel Eisenbud eisenbud@cs.swarthmore.edu
|
||||
Daniel Koening dan@mail.isis.de
|
||||
David Ellement ellement@sdd.hp.com
|
||||
Detlef Lannert lannert@lannert.rz.uni-duesseldorf.de
|
||||
Dirk Lattermann dlatt@t-online.de
|
||||
Dirk Stoecker gcrypt@dstoecker.de
|
||||
Ed Boraas ecxjo@esperanto.org
|
||||
Elie De Brauwer elie@de-brauwer.be
|
||||
Enzo Michelangeli em@MailAndNews.com
|
||||
Ernst Molitor ernst.molitor@uni-bonn.de
|
||||
Fabio Coatti cova@felix.unife.it
|
||||
Felix von Leitner leitner@amdiv.de
|
||||
Frank Heckenbach heckenb@mi.uni-erlangen.de
|
||||
Frank Stajano frank.stajano@cl.cam.ac.uk
|
||||
Gabriele Monti psicus78 gmail com
|
||||
Gaël Quéri gqueri@mail.dotcom.fr
|
||||
Gregor Riepl seto-kun@freesurf.ch
|
||||
Gerlinde Klaes gk@u64.de
|
||||
Greg Louis glouis@dynamicro.on.ca
|
||||
Greg Troxel gdt@ir.bbn.com
|
||||
Gregory Steuck steuck@iname.com
|
||||
Geoff Keating geoffk@ozemail.com.au
|
||||
Harald Denker harry@hal.westfalen.de
|
||||
Hendrik Buschkamp buschkamp@rheumanet.org
|
||||
Holger Schurig holger@d.om.org
|
||||
Hugh Daniel hugh@toad.com
|
||||
Ian McKellar imckellar@harvestroad.com.au
|
||||
Ian Peters itp@ximian.com
|
||||
Janusz A. Urbanowicz alex@bofh.torun.pl
|
||||
James Troup james@nocrew.org
|
||||
Jean-loup Gailly gzip@prep.ai.mit.edu
|
||||
Jeff Johnson jbj@redhat.com
|
||||
Jens Bachem bachem@rrz.uni-koeln.de
|
||||
J Horacio MG homega@ciberia.es
|
||||
Joachim Backes backes@rhrk.uni-kl.de
|
||||
Jordi Mallach jordi@sindominio.net
|
||||
John A. Martin jam@jamux.com
|
||||
Johnny Teveßen j.tevessen@gmx.de
|
||||
Jörg Schilling schilling@fokus.gmd.de
|
||||
Jun Kuriyama kuriyama@sky.rim.or.jp
|
||||
Karl Fogel kfogel@guanabana.onshore.com
|
||||
Karsten Thygesen karthy@kom.auc.dk
|
||||
Katsuhiro Kondou kondou@nec.co.jp
|
||||
Kazu Yamamoto kazu@iijlab.net
|
||||
Lars Kellogg-Stedman lars@bu.edu
|
||||
Lee Fisher blibbet at gmail dot com
|
||||
Marco d'Itri md@linux.it
|
||||
Mark Adler madler@alumni.caltech.edu
|
||||
Mark Elbrecht snowball3@bigfoot.com
|
||||
Markus Friedl Markus.Friedl@informatik.uni-erlangen.de
|
||||
Matthias Urlichs smurf@smurf.noris.de
|
||||
Martin Kahlert martin.kahlert@provi.de
|
||||
Martin Hamilton
|
||||
Martin Schulte schulte@thp.uni-koeln.de
|
||||
Matthew Skala mskala@ansuz.sooke.bc.ca
|
||||
Max Kellermann max@duempel.org
|
||||
Max Valianskiy maxcom@maxcom.ml.org
|
||||
Michael Fischer v. Mollard mfvm@gmx.de
|
||||
Michael Roth mroth@nessie.de
|
||||
Michael Sobolev mss@despair.transas.com
|
||||
Michele Baldessari michele@pupazzo.org
|
||||
Modestas Vainius geromanas@mailas.com
|
||||
Neil Dunbar neil.dunbar at pobox.com
|
||||
Neil Spring nspring@cs.washington.edu
|
||||
Newton Hammet newton@hammet.net
|
||||
Nicolas Graner Nicolas.Graner@cri.u-psud.fr
|
||||
NIIBE Yutaka gniibe@chroot.org
|
||||
Niklas Hernaeus
|
||||
Nikolay Sturm sturm@sec.informatik.tu-darmstadt.de
|
||||
Nikos Mavroyanopoulos nmav@hellug.gr
|
||||
Nimrod Zimerman zimerman@forfree.at
|
||||
N J Doye nic@niss.ac.uk
|
||||
Oliver Haakert haakert@hsp.de
|
||||
Oskari Jääskeläinen f33003a@cc.hut.fi
|
||||
Paul D. Smith psmith@baynetworks.com
|
||||
Philippe Laliberte arsphl@oeil.qc.ca
|
||||
Peter Gutmann pgut001@cs.auckland.ac.nz
|
||||
QingLong qinglong@bolizm.ihep.su
|
||||
Rafael Ávila de Espíndola rafael.espindola@gmail.com
|
||||
Rafaël Carré funman@videolan.org
|
||||
Ralf Fassel ralf@akutech.de
|
||||
Ralf Hildebrandt Ralf.Hildebrandt@innominate.com
|
||||
Ralf Schneider ralf@tapfere-schneiderleins.de
|
||||
Ralph Gillen gillen@theochem.uni-duesseldorf.de
|
||||
Rami Lehti Rami.Lehti@finland.sun.com
|
||||
Randolph Chung tausq@debian.org
|
||||
Randy mcclellr@oit.edu
|
||||
Rat ratinox@peorth.gweep.net
|
||||
Reinhard Wobst R.Wobst@ifw-dresden.de
|
||||
Rémi Guyomarch rguyom@mail.dotcom.fr
|
||||
Reuben Sumner rasumner@wisdom.weizmann.ac.il
|
||||
Richard Outerbridge outer@interlog.com
|
||||
Roddy Strachan roddy@satlink.com.au
|
||||
Roland Rosenfeld roland@spinnaker.rhein.de
|
||||
Ross Golder rossigee@bigfoot.com
|
||||
Serge Munhoven munhoven@mema.ucl.ac.be
|
||||
Simon Josefsson jas@extundo.com
|
||||
SL Baur steve@xemacs.org
|
||||
Stephan Austermuehle au@hcsd.de
|
||||
Stephan Müller smueller at atsec com
|
||||
Stephane Corthesy stephane@sente.ch
|
||||
Stefan Karrmann S.Karrmann@gmx.net
|
||||
Stefan Keller dres@cs.tu-berlin.de
|
||||
Steffen Ullrich ccrlphr@xensei.com
|
||||
Steffen Zahn zahn@berlin.snafu.de
|
||||
Steven Bakker steven@icoe.att.com
|
||||
Susanne Schultz schultz@hsp.de
|
||||
Szakats Istvan szaki.ms@gmail.com
|
||||
Thiago Jung Bauermann jungmann@cwb.matrix.com.br
|
||||
Thomas Roessler roessler@guug.de
|
||||
Tom Holroyd tomh@po.crl.go.jp
|
||||
Tom Spindler dogcow@home.merit.edu
|
||||
Tom Zerucha tzeruch@ceddec.com
|
||||
Tomas Fasth tomas.fasth@twinspot.net
|
||||
Tommi Komulainen Tommi.Komulainen@iki.fi
|
||||
Thomas Mikkelsen tbm@image.dk
|
||||
Ulf Möller 3umoelle@informatik.uni-hamburg.de
|
||||
Umberto Salsi salsi@icosaedro.it
|
||||
Uoti Urpala
|
||||
Urko Lusa ulusa@euskalnet.net
|
||||
Victor Stinner haypo@inl.fr
|
||||
Walter Koch koch@u32.de
|
||||
Werner Koch wk@gnupg.org
|
||||
Wim Vandeputte wim@kd85.com
|
||||
nbecker@hns.com
|
||||
|
||||
|
||||
Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
61
jni/libgcrypt/TODO
Normal file
61
jni/libgcrypt/TODO
Normal file
@@ -0,0 +1,61 @@
|
||||
What's left to do -*- outline -*-
|
||||
|
||||
* Next API break:
|
||||
** gcry_ac_io_t
|
||||
Remove use of anonymous union.
|
||||
** gcry_ac
|
||||
Consider to remove it.
|
||||
|
||||
* udiv-qrnbd.o should get build as *.lo [HPUX]
|
||||
|
||||
* Allow operation using RSA keys consisting of the OpenSSL keys.
|
||||
This requires the introduction of a parameter names (say) U which
|
||||
is calculated according to OpenSSL/PKCS#1 rules.
|
||||
|
||||
* linker script test
|
||||
Write an autoconf test to check whether the linker supports a
|
||||
version script.
|
||||
|
||||
* Add attributes to the MPI functions.
|
||||
|
||||
* cipher/pubkey.c and pubkey implementaions.
|
||||
Don't rely on the secure memory based wiping function but add an
|
||||
extra wiping.
|
||||
|
||||
* Use builtin bit functions of gcc 3.4
|
||||
|
||||
* Consider using a daemon to maintain the random pool
|
||||
[Partly done] The down side of this is that we can't assume that the
|
||||
random has has always been stored in "secure memory". And we rely
|
||||
on that sniffing of Unix domain sockets is not possible. We can
|
||||
implement this simply by detecting a special prefixed random seed
|
||||
name and divert in this case to the daemon. There are several
|
||||
benefits with such an approach: We keep the state of the RNG over
|
||||
invocations of libgcrypt based applications, don't need time
|
||||
consuming initialization of the pool and in case the entropy
|
||||
collectros need to run that bunch of Unix utilities we don't waste
|
||||
their precious results.
|
||||
|
||||
* Add OAEP
|
||||
|
||||
* gcryptrnd.c
|
||||
Requires a test for pth [done] as well as some other tests.
|
||||
|
||||
* secmem.c
|
||||
Check whether the memory block is valid before releasing it and
|
||||
print a diagnosic, like glibc does.
|
||||
|
||||
* threads
|
||||
** We need to document fork problems
|
||||
In particular that reinitialization is required in random.c
|
||||
However, there is no code yet to do it.
|
||||
|
||||
* Tests
|
||||
We need a lot more tests. Lets keep an ever growing list here.
|
||||
** Write tests for the progress function
|
||||
** mpitests does no real checks yet.
|
||||
** pthreads
|
||||
To catch simple errors like the one fixed on 2007-03-16.
|
||||
** C++ tests
|
||||
We have some code to allow using libgcrypt from C++, so we also
|
||||
should have a test case.
|
||||
1
jni/libgcrypt/VERSION
Normal file
1
jni/libgcrypt/VERSION
Normal file
@@ -0,0 +1 @@
|
||||
1.4.4
|
||||
420
jni/libgcrypt/acinclude.m4
Normal file
420
jni/libgcrypt/acinclude.m4
Normal file
@@ -0,0 +1,420 @@
|
||||
dnl macros to configure Libgcrypt
|
||||
dnl Copyright (C) 1998, 1999, 2000, 2001, 2002,
|
||||
dnl 2003 Free Software Foundation, Inc.
|
||||
dnl
|
||||
dnl This file is part of Libgcrypt.
|
||||
dnl
|
||||
dnl Libgcrypt is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU Lesser General Public License as
|
||||
dnl published by the Free Software Foundation; either version 2.1 of
|
||||
dnl the License, or (at your option) any later version.
|
||||
dnl
|
||||
dnl Libgcrypt is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
dnl GNU Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this program; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
|
||||
dnl GNUPG_MSG_PRINT(STRING)
|
||||
dnl print a message
|
||||
dnl
|
||||
define([GNUPG_MSG_PRINT],
|
||||
[ echo $ac_n "$1"" $ac_c" 1>&AS_MESSAGE_FD([])
|
||||
])
|
||||
|
||||
dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
|
||||
dnl Check whether a typedef exists and create a #define $2 if it exists
|
||||
dnl
|
||||
AC_DEFUN([GNUPG_CHECK_TYPEDEF],
|
||||
[ AC_MSG_CHECKING(for $1 typedef)
|
||||
AC_CACHE_VAL(gnupg_cv_typedef_$1,
|
||||
[AC_TRY_COMPILE([#define _GNU_SOURCE 1
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>], [
|
||||
#undef $1
|
||||
int a = sizeof($1);
|
||||
], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
|
||||
AC_MSG_RESULT($gnupg_cv_typedef_$1)
|
||||
if test "$gnupg_cv_typedef_$1" = yes; then
|
||||
AC_DEFINE($2,1,[Defined if a `]$1[' is typedef'd])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl GNUPG_CHECK_GNUMAKE
|
||||
dnl
|
||||
AC_DEFUN([GNUPG_CHECK_GNUMAKE],
|
||||
[
|
||||
if ${MAKE-make} --version 2>/dev/null | grep '^GNU ' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
AC_MSG_WARN([[
|
||||
***
|
||||
*** It seems that you are not using GNU make. Some make tools have serious
|
||||
*** flaws and you may not be able to build this software at all. Before you
|
||||
*** complain, please try GNU make: GNU make is easy to build and available
|
||||
*** at all GNU archives. It is always available from ftp.gnu.org:/gnu/make.
|
||||
***]])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
#
|
||||
# GNUPG_SYS_SYMBOL_UNDERSCORE
|
||||
# Does the compiler prefix global symbols with an underscore?
|
||||
#
|
||||
# Taken from GnuPG 1.2 and modified to use the libtool macros.
|
||||
AC_DEFUN([GNUPG_SYS_SYMBOL_UNDERSCORE],
|
||||
[tmp_do_check="no"
|
||||
case "${host}" in
|
||||
*-mingw32msvc*)
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
;;
|
||||
i386-emx-os2 | i[3456]86-pc-os2*emx | i386-pc-msdosdjgpp)
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
;;
|
||||
*)
|
||||
if test "$cross_compiling" = yes; then
|
||||
if test "x$ac_cv_sys_symbol_underscore" = x ; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
fi
|
||||
else
|
||||
tmp_do_check="yes"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$tmp_do_check" = "yes"; then
|
||||
AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])
|
||||
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||
AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
|
||||
[ac_cv_sys_symbol_underscore=no
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
void nm_test_func(){}
|
||||
int main(){nm_test_func;return 0;}
|
||||
EOF
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \| cut -d \' \' -f 2 \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
# See whether the symbols have a leading underscore.
|
||||
if egrep '^_nm_test_func' "$ac_nlist" >/dev/null; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
if egrep '^nm_test_func ' "$ac_nlist" >/dev/null; then
|
||||
:
|
||||
else
|
||||
echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest*
|
||||
])
|
||||
else
|
||||
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||
fi
|
||||
AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
|
||||
if test x$ac_cv_sys_symbol_underscore = xyes; then
|
||||
AC_DEFINE(WITH_SYMBOL_UNDERSCORE,1,
|
||||
[Defined if compiled symbols have a leading underscore])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
######################################################################
|
||||
# Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock
|
||||
# is not called from uid 0 (not tested whether uid 0 works)
|
||||
# For DECs Tru64 we have also to check whether mlock is in librt
|
||||
# mlock is there a macro using memlk()
|
||||
######################################################################
|
||||
dnl GNUPG_CHECK_MLOCK
|
||||
dnl
|
||||
define(GNUPG_CHECK_MLOCK,
|
||||
[ AC_CHECK_FUNCS(mlock)
|
||||
if test "$ac_cv_func_mlock" = "no"; then
|
||||
AC_CHECK_HEADERS(sys/mman.h)
|
||||
if test "$ac_cv_header_sys_mman_h" = "yes"; then
|
||||
# Add librt to LIBS:
|
||||
AC_CHECK_LIB(rt, memlk)
|
||||
AC_CACHE_CHECK([whether mlock is in sys/mman.h],
|
||||
gnupg_cv_mlock_is_in_sys_mman,
|
||||
[AC_TRY_LINK([
|
||||
#include <assert.h>
|
||||
#ifdef HAVE_SYS_MMAN_H
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
], [
|
||||
int i;
|
||||
|
||||
/* glibc defines this for functions which it implements
|
||||
* to always fail with ENOSYS. Some functions are actually
|
||||
* named something starting with __ and the normal name
|
||||
* is an alias. */
|
||||
#if defined (__stub_mlock) || defined (__stub___mlock)
|
||||
choke me
|
||||
#else
|
||||
mlock(&i, 4);
|
||||
#endif
|
||||
; return 0;
|
||||
],
|
||||
gnupg_cv_mlock_is_in_sys_mman=yes,
|
||||
gnupg_cv_mlock_is_in_sys_mman=no)])
|
||||
if test "$gnupg_cv_mlock_is_in_sys_mman" = "yes"; then
|
||||
AC_DEFINE(HAVE_MLOCK,1,
|
||||
[Defined if the system supports an mlock() call])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$ac_cv_func_mlock" = "yes"; then
|
||||
AC_CHECK_FUNCS(sysconf getpagesize)
|
||||
AC_MSG_CHECKING(whether mlock is broken)
|
||||
AC_CACHE_VAL(gnupg_cv_have_broken_mlock,
|
||||
AC_TRY_RUN([
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/types.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
char *pool;
|
||||
int err;
|
||||
long int pgsize;
|
||||
|
||||
#if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
|
||||
pgsize = sysconf (_SC_PAGESIZE);
|
||||
#elif defined (HAVE_GETPAGESIZE)
|
||||
pgsize = getpagesize();
|
||||
#else
|
||||
pgsize = -1;
|
||||
#endif
|
||||
|
||||
if (pgsize == -1)
|
||||
pgsize = 4096;
|
||||
|
||||
pool = malloc( 4096 + pgsize );
|
||||
if( !pool )
|
||||
return 2;
|
||||
pool += (pgsize - ((long int)pool % pgsize));
|
||||
|
||||
err = mlock( pool, 4096 );
|
||||
if( !err || errno == EPERM )
|
||||
return 0; /* okay */
|
||||
|
||||
return 1; /* hmmm */
|
||||
}
|
||||
|
||||
],
|
||||
gnupg_cv_have_broken_mlock="no",
|
||||
gnupg_cv_have_broken_mlock="yes",
|
||||
gnupg_cv_have_broken_mlock="assume-no"
|
||||
)
|
||||
)
|
||||
if test "$gnupg_cv_have_broken_mlock" = "yes"; then
|
||||
AC_DEFINE(HAVE_BROKEN_MLOCK,1,
|
||||
[Defined if the mlock() call does not work])
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
if test "$gnupg_cv_have_broken_mlock" = "no"; then
|
||||
AC_MSG_RESULT(no)
|
||||
else
|
||||
AC_MSG_RESULT(assuming no)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
# GNUPG_SYS_LIBTOOL_CYGWIN32 - find tools needed on cygwin32
|
||||
AC_DEFUN([GNUPG_SYS_LIBTOOL_CYGWIN32],
|
||||
[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
])
|
||||
|
||||
dnl LIST_MEMBER()
|
||||
dnl Check wether an element ist contained in a list. Set `found' to
|
||||
dnl `1' if the element is found in the list, to `0' otherwise.
|
||||
AC_DEFUN([LIST_MEMBER],
|
||||
[
|
||||
name=$1
|
||||
list=$2
|
||||
found=0
|
||||
|
||||
for n in $list; do
|
||||
if test "x$name" = "x$n"; then
|
||||
found=1
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
|
||||
dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
|
||||
dnl Test for libgpg-error and define GPG_ERROR_CFLAGS and GPG_ERROR_LIBS
|
||||
dnl
|
||||
AC_DEFUN([AM_PATH_GPG_ERROR],
|
||||
[ AC_ARG_WITH(gpg-error-prefix,
|
||||
AC_HELP_STRING([--with-gpg-error-prefix=PFX],
|
||||
[prefix where GPG Error is installed (optional)]),
|
||||
gpg_error_config_prefix="$withval", gpg_error_config_prefix="")
|
||||
if test x$gpg_error_config_prefix != x ; then
|
||||
if test x${GPG_ERROR_CONFIG+set} != xset ; then
|
||||
GPG_ERROR_CONFIG=$gpg_error_config_prefix/bin/gpg-error-config
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
|
||||
min_gpg_error_version=ifelse([$1], ,0.0,$1)
|
||||
AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
|
||||
ok=no
|
||||
if test "$GPG_ERROR_CONFIG" != "no" ; then
|
||||
req_major=`echo $min_gpg_error_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
|
||||
req_minor=`echo $min_gpg_error_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
|
||||
gpg_error_config_version=`$GPG_ERROR_CONFIG $gpg_error_config_args --version`
|
||||
if test "$gpg_error_config_version"; then
|
||||
major=`echo $gpg_error_config_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
|
||||
minor=`echo $gpg_error_config_version | \
|
||||
sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
|
||||
if test "$major" -gt "$req_major"; then
|
||||
ok=yes
|
||||
else
|
||||
if test "$major" -eq "$req_major"; then
|
||||
if test "$minor" -ge "$req_minor"; then
|
||||
ok=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test $ok = yes; then
|
||||
GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG $gpg_error_config_args --cflags`
|
||||
GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG $gpg_error_config_args --libs`
|
||||
AC_MSG_RESULT(yes)
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
GPG_ERROR_CFLAGS=""
|
||||
GPG_ERROR_LIBS=""
|
||||
AC_MSG_RESULT(no)
|
||||
ifelse([$3], , :, [$3])
|
||||
fi
|
||||
AC_SUBST(GPG_ERROR_CFLAGS)
|
||||
AC_SUBST(GPG_ERROR_LIBS)
|
||||
])
|
||||
|
||||
|
||||
dnl Check for socklen_t: historically on BSD it is an int, and in
|
||||
dnl POSIX 1g it is a type of its own, but some platforms use different
|
||||
dnl types for the argument to getsockopt, getpeername, etc. So we
|
||||
dnl have to test to find something that will work.
|
||||
AC_DEFUN([TYPE_SOCKLEN_T],
|
||||
[
|
||||
AC_CHECK_TYPE([socklen_t], ,[
|
||||
AC_MSG_CHECKING([for socklen_t equivalent])
|
||||
AC_CACHE_VAL([socklen_t_equiv],
|
||||
[
|
||||
# Systems have either "struct sockaddr *" or
|
||||
# "void *" as the second argument to getpeername
|
||||
socklen_t_equiv=
|
||||
for arg2 in "struct sockaddr" void; do
|
||||
for t in int size_t unsigned long "unsigned long"; do
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
int getpeername (int, $arg2 *, $t *);
|
||||
],[
|
||||
$t len;
|
||||
getpeername(0,0,&len);
|
||||
],[
|
||||
socklen_t_equiv="$t"
|
||||
break
|
||||
])
|
||||
done
|
||||
done
|
||||
|
||||
if test "x$socklen_t_equiv" = x; then
|
||||
AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
|
||||
fi
|
||||
])
|
||||
AC_MSG_RESULT($socklen_t_equiv)
|
||||
AC_DEFINE_UNQUOTED(socklen_t, $socklen_t_equiv,
|
||||
[type to use in place of socklen_t if not defined])],
|
||||
[#include <sys/types.h>
|
||||
#include <sys/socket.h>])
|
||||
])
|
||||
|
||||
|
||||
# GNUPG_PTH_VERSION_CHECK(REQUIRED)
|
||||
#
|
||||
# If the version is sufficient, HAVE_PTH will be set to yes.
|
||||
#
|
||||
# Taken form the m4 macros which come with Pth
|
||||
AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
|
||||
[
|
||||
_pth_version=`$PTH_CONFIG --version | awk 'NR==1 {print [$]3}'`
|
||||
_req_version="ifelse([$1],,1.2.0,$1)"
|
||||
|
||||
AC_MSG_CHECKING(for PTH - version >= $_req_version)
|
||||
for _var in _pth_version _req_version; do
|
||||
eval "_val=\"\$${_var}\""
|
||||
_major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\1/'`
|
||||
_minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\2/'`
|
||||
_rtype=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\3/'`
|
||||
_micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\4/'`
|
||||
case $_rtype in
|
||||
"a" ) _rtype=0 ;;
|
||||
"b" ) _rtype=1 ;;
|
||||
"." ) _rtype=2 ;;
|
||||
esac
|
||||
_hex=`echo dummy | awk '{ printf("%d%02d%1d%02d", major, minor, rtype, micro); }' \
|
||||
"major=$_major" "minor=$_minor" "rtype=$_rtype" "micro=$_micro"`
|
||||
eval "${_var}_hex=\"\$_hex\""
|
||||
done
|
||||
have_pth=no
|
||||
if test ".$_pth_version_hex" != .; then
|
||||
if test ".$_req_version_hex" != .; then
|
||||
if test $_pth_version_hex -ge $_req_version_hex; then
|
||||
have_pth=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test $have_pth = yes; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING([whether PTH installation is sane])
|
||||
AC_CACHE_VAL(gnupg_cv_pth_is_sane,[
|
||||
_gnupg_pth_save_cflags=$CFLAGS
|
||||
_gnupg_pth_save_ldflags=$LDFLAGS
|
||||
_gnupg_pth_save_libs=$LIBS
|
||||
CFLAGS="$CFLAGS `$PTH_CONFIG --cflags`"
|
||||
LDFLAGS="$LDFLAGS `$PTH_CONFIG --ldflags`"
|
||||
LIBS="$LIBS `$PTH_CONFIG --libs`"
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pth.h>
|
||||
],
|
||||
[[ pth_init ();]])],
|
||||
gnupg_cv_pth_is_sane=yes,
|
||||
gnupg_cv_pth_is_sane=no)
|
||||
CFLAGS=$_gnupg_pth_save_cflags
|
||||
LDFLAGS=$_gnupg_pth_save_ldflags
|
||||
LIBS=$_gnupg_pth_save_libs
|
||||
])
|
||||
if test $gnupg_cv_pth_is_sane != yes; then
|
||||
have_pth=no
|
||||
fi
|
||||
AC_MSG_RESULT($gnupg_cv_pth_is_sane)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
971
jni/libgcrypt/aclocal.m4
vendored
Normal file
971
jni/libgcrypt/aclocal.m4
vendored
Normal file
@@ -0,0 +1,971 @@
|
||||
# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
m4_if(AC_AUTOCONF_VERSION, [2.61],,
|
||||
[m4_warning([this file was generated for autoconf 2.61.
|
||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
||||
|
||||
# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_AUTOMAKE_VERSION(VERSION)
|
||||
# ----------------------------
|
||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.10'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.10.1], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
# _AM_AUTOCONF_VERSION(VERSION)
|
||||
# -----------------------------
|
||||
# aclocal traces this macro to find the Autoconf version.
|
||||
# This is a private macro too. Using m4_define simplifies
|
||||
# the logic in aclocal, which can simply ignore this definition.
|
||||
m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
|
||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||
# -------------------------------
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.10.1])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
|
||||
|
||||
# Figure out how to run the assembler. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_PROG_AS
|
||||
# ----------
|
||||
AC_DEFUN([AM_PROG_AS],
|
||||
[# By default we simply use the C compiler to build assembly code.
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
test "${CCAS+set}" = set || CCAS=$CC
|
||||
test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS
|
||||
AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)])
|
||||
AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)])
|
||||
_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl
|
||||
])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||
#
|
||||
# Of course, Automake must honor this variable whenever it calls a
|
||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
||||
# depending on how configure is run. This is pretty annoying, since
|
||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
||||
# source directory, any form will work fine, but in subdirectories a
|
||||
# relative path needs to be adjusted first.
|
||||
#
|
||||
# $ac_aux_dir/missing
|
||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
||||
# $top_srcdir/$ac_aux_dir/missing
|
||||
# fails if $ac_aux_dir is absolute,
|
||||
# fails when called from a subdirectory in a VPATH build with
|
||||
# a relative $ac_aux_dir
|
||||
#
|
||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
||||
# harmless because $srcdir is `.', but things will broke when you
|
||||
# start a VPATH build or use an absolute $srcdir.
|
||||
#
|
||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
||||
# and then we would define $MISSING as
|
||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# This will work as long as MISSING is not called from configure, because
|
||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
||||
# However there are other variables, like CC, which are often used in
|
||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
||||
#
|
||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||
# -------------------------------------
|
||||
# Define a conditional.
|
||||
AC_DEFUN([AM_CONDITIONAL],
|
||||
[AC_PREREQ(2.52)dnl
|
||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
||||
AC_SUBST([$1_TRUE])dnl
|
||||
AC_SUBST([$1_FALSE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi
|
||||
AC_CONFIG_COMMANDS_PRE(
|
||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 9
|
||||
|
||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||
# written in clear, in which case automake, when reading aclocal.m4,
|
||||
# will think it sees a *use*, and therefore will trigger all it's
|
||||
# C support machinery. Also note that it means that autoscan, seeing
|
||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
||||
|
||||
|
||||
# _AM_DEPENDENCIES(NAME)
|
||||
# ----------------------
|
||||
# See how the compiler implements dependency checking.
|
||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
||||
# We try a few techniques and use that to set a single cache variable.
|
||||
#
|
||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
||||
# dependency, and given that the user is not expected to run this macro,
|
||||
# just rely on AC_PROG_CC.
|
||||
AC_DEFUN([_AM_DEPENDENCIES],
|
||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
||||
|
||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
||||
[$1], UPC, [depcc="$UPC" am_compiler_list=],
|
||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
||||
[depcc="$$1" am_compiler_list=])
|
||||
|
||||
AC_CACHE_CHECK([dependency style of $depcc],
|
||||
[am_cv_$1_dependencies_compiler_type],
|
||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
||||
# We make a subdir and do the tests there. Otherwise we can end up
|
||||
# making bogus files that we don't know about and never remove. For
|
||||
# instance it was reported that on HP-UX the gcc test will end up
|
||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||
# in D'.
|
||||
mkdir conftest.dir
|
||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||
# using a relative directory.
|
||||
cp "$am_depcomp" conftest.dir
|
||||
cd conftest.dir
|
||||
# We will build objects and dependencies in a subdirectory because
|
||||
# it helps to detect inapplicable dependency modes. For instance
|
||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
||||
# side effect of compilation, but ICC will put the dependencies in
|
||||
# the current directory while Tru64 will put them in the object
|
||||
# directory.
|
||||
mkdir sub
|
||||
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
if test "$am_compiler_list" = ""; then
|
||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||
fi
|
||||
for depmode in $am_compiler_list; do
|
||||
# Setup a source with many dependencies, because some compilers
|
||||
# like to wrap large dependency lists on column 80 (with \), and
|
||||
# we should not choose a depcomp mode which is confused by this.
|
||||
#
|
||||
# We need to recreate these files for each test, as the compiler may
|
||||
# overwrite some of them when testing with obscure command lines.
|
||||
# This happens at least with the AIX C compiler.
|
||||
: > sub/conftest.c
|
||||
for i in 1 2 3 4 5 6; do
|
||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
||||
# Solaris 8's {/usr,}/bin/sh.
|
||||
touch sub/conftst$i.h
|
||||
done
|
||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||
|
||||
case $depmode in
|
||||
nosideeffect)
|
||||
# after this tag, mechanisms are not by side-effect, so they'll
|
||||
# only be used when explicitly requested
|
||||
if test "x$enable_dependency_tracking" = xyes; then
|
||||
continue
|
||||
else
|
||||
break
|
||||
fi
|
||||
;;
|
||||
none) break ;;
|
||||
esac
|
||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||
# handle `-M -o', and we need to detect this.
|
||||
if depmode=$depmode \
|
||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
||||
>/dev/null 2>conftest.err &&
|
||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||
# icc doesn't choke on unknown options, it will just issue warnings
|
||||
# or remarks (even with -Werror). So we grep stderr for any message
|
||||
# that says an option was ignored or not supported.
|
||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
||||
# The diagnosis changed in icc 8.0:
|
||||
# icc: Command line remark: option '-MP' not supported
|
||||
if (grep 'ignoring option' conftest.err ||
|
||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
||||
am_cv_$1_dependencies_compiler_type=$depmode
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
cd ..
|
||||
rm -rf conftest.dir
|
||||
else
|
||||
am_cv_$1_dependencies_compiler_type=none
|
||||
fi
|
||||
])
|
||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
||||
AM_CONDITIONAL([am__fastdep$1], [
|
||||
test "x$enable_dependency_tracking" != xno \
|
||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
||||
])
|
||||
|
||||
|
||||
# AM_SET_DEPDIR
|
||||
# -------------
|
||||
# Choose a directory name for dependency files.
|
||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
||||
AC_DEFUN([AM_SET_DEPDIR],
|
||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
||||
])
|
||||
|
||||
|
||||
# AM_DEP_TRACK
|
||||
# ------------
|
||||
AC_DEFUN([AM_DEP_TRACK],
|
||||
[AC_ARG_ENABLE(dependency-tracking,
|
||||
[ --disable-dependency-tracking speeds up one-time build
|
||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
||||
if test "x$enable_dependency_tracking" != xno; then
|
||||
am_depcomp="$ac_aux_dir/depcomp"
|
||||
AMDEPBACKSLASH='\'
|
||||
fi
|
||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
#serial 3
|
||||
|
||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# ------------------------------
|
||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[for mf in $CONFIG_FILES; do
|
||||
# Strip MF so we end up with the name of the file.
|
||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||
# Check whether this is an Automake generated Makefile or not.
|
||||
# We used to match only the files named `Makefile.in', but
|
||||
# some people rename them; so instead we look at the file content.
|
||||
# Grep'ing the first line is not enough: some people post-process
|
||||
# each Makefile.in and add a new line on top of each file to say so.
|
||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
||||
dirpart=`AS_DIRNAME("$mf")`
|
||||
else
|
||||
continue
|
||||
fi
|
||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||
# from the Makefile without running `make'.
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||
U=`sed -n 's/^U = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||
# expansion.
|
||||
for file in `sed -n "
|
||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||
# Make sure the directory exists.
|
||||
test -f "$dirpart/$file" && continue
|
||||
fdir=`AS_DIRNAME(["$file"])`
|
||||
AS_MKDIR_P([$dirpart/$fdir])
|
||||
# echo "creating $dirpart/$file"
|
||||
echo '# dummy' > "$dirpart/$file"
|
||||
done
|
||||
done
|
||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
|
||||
|
||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||
# -----------------------------
|
||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
||||
#
|
||||
# This code is only required when automatic dependency tracking
|
||||
# is enabled. FIXME. This creates each `.P' file that we will
|
||||
# need in order to bootstrap the dependency handling code.
|
||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AC_CONFIG_COMMANDS([depfiles],
|
||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
||||
])
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 8
|
||||
|
||||
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
|
||||
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||
# 2005, 2006, 2008 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 13
|
||||
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
# The call with PACKAGE and VERSION arguments is the old style
|
||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
||||
# and VERSION should now be passed to AC_INIT and removed from
|
||||
# the call to AM_INIT_AUTOMAKE.
|
||||
# We support both call styles for the transition. After
|
||||
# the next Automake release, Autoconf can make the AC_INIT
|
||||
# arguments mandatory, and then we can depend on a new Autoconf
|
||||
# release and drop the old call support.
|
||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||
dnl the ones we care about.
|
||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
||||
# is not polluted with repeated "-I."
|
||||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
|
||||
# test to see if srcdir already configured
|
||||
if test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
fi
|
||||
|
||||
# test whether we have cygpath
|
||||
if test -z "$CYGPATH_W"; then
|
||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
||||
CYGPATH_W='cygpath -w'
|
||||
else
|
||||
CYGPATH_W=echo
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CYGPATH_W])
|
||||
|
||||
# Define the identity of the package.
|
||||
dnl Distinguish between old-style and new-style calls.
|
||||
m4_ifval([$2],
|
||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||
AC_SUBST([PACKAGE], [$1])dnl
|
||||
AC_SUBST([VERSION], [$2])],
|
||||
[_AM_SET_OPTIONS([$1])dnl
|
||||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
|
||||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
|
||||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
|
||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
||||
|
||||
_AM_IF_OPTION([no-define],,
|
||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
||||
|
||||
# Some tools Automake needs.
|
||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||
AM_PROG_INSTALL_SH
|
||||
AM_PROG_INSTALL_STRIP
|
||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||
[_AM_PROG_TAR([v7])])])
|
||||
_AM_IF_OPTION([no-dependencies],,
|
||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||
[_AM_DEPENDENCIES(CC)],
|
||||
[define([AC_PROG_CC],
|
||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||
[_AM_DEPENDENCIES(CXX)],
|
||||
[define([AC_PROG_CXX],
|
||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
||||
[_AM_DEPENDENCIES(OBJC)],
|
||||
[define([AC_PROG_OBJC],
|
||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
||||
])
|
||||
])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
|
||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
||||
# loop where config.status creates the headers, so we can generate
|
||||
# our stamp files there.
|
||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
||||
[# Compute $1's index in $config_headers.
|
||||
_am_arg=$1
|
||||
_am_stamp_count=1
|
||||
for _am_header in $config_headers :; do
|
||||
case $_am_header in
|
||||
$_am_arg | $_am_arg:* )
|
||||
break ;;
|
||||
* )
|
||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
||||
esac
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_SH
|
||||
# ------------------
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
|
||||
AC_SUBST(install_sh)])
|
||||
|
||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# Check whether the underlying file-system supports filenames
|
||||
# with a leading dot. For instance MS-DOS doesn't.
|
||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||
[rm -rf .tst 2>/dev/null
|
||||
mkdir .tst 2>/dev/null
|
||||
if test -d .tst; then
|
||||
am__leading_dot=.
|
||||
else
|
||||
am__leading_dot=_
|
||||
fi
|
||||
rmdir .tst 2>/dev/null
|
||||
AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||
# From Jim Meyering
|
||||
|
||||
# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
dnl maintainer-mode is disabled by default
|
||||
AC_ARG_ENABLE(maintainer-mode,
|
||||
[ --enable-maintainer-mode enable make rules and dependencies not useful
|
||||
(and sometimes confusing) to the casual installer],
|
||||
USE_MAINTAINER_MODE=$enableval,
|
||||
USE_MAINTAINER_MODE=no)
|
||||
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
||||
AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
|
||||
MAINT=$MAINTAINER_MODE_TRUE
|
||||
AC_SUBST(MAINT)dnl
|
||||
]
|
||||
)
|
||||
|
||||
AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# AM_MAKE_INCLUDE()
|
||||
# -----------------
|
||||
# Check to see how make treats includes.
|
||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
||||
[am_make=${MAKE-make}
|
||||
cat > confinc << 'END'
|
||||
am__doit:
|
||||
@echo done
|
||||
.PHONY: am__doit
|
||||
END
|
||||
# If we don't find an include directive, just comment out the code.
|
||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
||||
am__include="#"
|
||||
am__quote=
|
||||
_am_result=none
|
||||
# First try GNU make style include.
|
||||
echo "include confinc" > confmf
|
||||
# We grep out `Entering directory' and `Leaving directory'
|
||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
||||
# In particular we don't look at `^make:' because GNU make might
|
||||
# be invoked under some other name (usually "gmake"), in which
|
||||
# case it prints its new name instead of `make'.
|
||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
||||
am__include=include
|
||||
am__quote=
|
||||
_am_result=GNU
|
||||
fi
|
||||
# Now try BSD make style include.
|
||||
if test "$am__include" = "#"; then
|
||||
echo '.include "confinc"' > confmf
|
||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
||||
am__include=.include
|
||||
am__quote="\""
|
||||
_am_result=BSD
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([am__include])
|
||||
AC_SUBST([am__quote])
|
||||
AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_PROG_CC_C_O
|
||||
# --------------
|
||||
# Like AC_PROG_CC_C_O, but changed for automake.
|
||||
AC_DEFUN([AM_PROG_CC_C_O],
|
||||
[AC_REQUIRE([AC_PROG_CC_C_O])dnl
|
||||
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([compile])dnl
|
||||
# FIXME: we rely on the cache variable name because
|
||||
# there is no other way.
|
||||
set dummy $CC
|
||||
ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
|
||||
if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
dnl Make sure AC_PROG_CC is never called again, or it will override our
|
||||
dnl setting of CC.
|
||||
m4_define([AC_PROG_CC],
|
||||
[m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 5
|
||||
|
||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||
# ------------------------------
|
||||
AC_DEFUN([AM_MISSING_PROG],
|
||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
||||
$1=${$1-"${am_missing_run}$2"}
|
||||
AC_SUBST($1)])
|
||||
|
||||
|
||||
# AM_MISSING_HAS_RUN
|
||||
# ------------------
|
||||
# Define MISSING if not defined so far and test if it supports --run.
|
||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
||||
# Use eval to expand $SHELL
|
||||
if eval "$MISSING --run true"; then
|
||||
am_missing_run="$MISSING --run "
|
||||
else
|
||||
am_missing_run=
|
||||
AC_MSG_WARN([`missing' script is too old or missing])
|
||||
fi
|
||||
])
|
||||
|
||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_MKDIR_P
|
||||
# ---------------
|
||||
# Check for `mkdir -p'.
|
||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||
[AC_PREREQ([2.60])dnl
|
||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
|
||||
dnl while keeping a definition of mkdir_p for backward compatibility.
|
||||
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
|
||||
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
|
||||
dnl Makefile.ins that do not define MKDIR_P, so we do our own
|
||||
dnl adjustment using top_builddir (which is defined more often than
|
||||
dnl MKDIR_P).
|
||||
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
|
||||
case $mkdir_p in
|
||||
[[\\/$]]* | ?:[[\\/]]*) ;;
|
||||
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 3
|
||||
|
||||
# _AM_MANGLE_OPTION(NAME)
|
||||
# -----------------------
|
||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||
|
||||
# _AM_SET_OPTION(NAME)
|
||||
# ------------------------------
|
||||
# Set option NAME. Presently that only means defining a flag for this option.
|
||||
AC_DEFUN([_AM_SET_OPTION],
|
||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||
|
||||
# _AM_SET_OPTIONS(OPTIONS)
|
||||
# ----------------------------------
|
||||
# OPTIONS is a space-separated list of Automake options.
|
||||
AC_DEFUN([_AM_SET_OPTIONS],
|
||||
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||
|
||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||
# -------------------------------------------
|
||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 4
|
||||
|
||||
# AM_SANITY_CHECK
|
||||
# ---------------
|
||||
AC_DEFUN([AM_SANITY_CHECK],
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftest.file
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
||||
if test "$[*]" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftest.file`
|
||||
fi
|
||||
rm -f conftest.file
|
||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "$[2]" = conftest.file
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_INSTALL_STRIP
|
||||
# ---------------------
|
||||
# One issue with vendor `install' (even GNU) is that you can't
|
||||
# specify the program used to strip binaries. This is especially
|
||||
# annoying in cross-compiling environments, where the build's strip
|
||||
# is unlikely to handle the host's binaries.
|
||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
||||
# always use install-sh in `make install-strip', and initialize
|
||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||
# Installed binaries are usually stripped using `strip' when the user
|
||||
# run `make install-strip'. However `strip' might not be the right
|
||||
# tool to use in cross-compilation environments, therefore Automake
|
||||
# will honor the `STRIP' environment variable to overrule this program.
|
||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
||||
if test "$cross_compiling" != no; then
|
||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
||||
fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||
# ---------------------------
|
||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
||||
# This macro is traced by Automake.
|
||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 2
|
||||
|
||||
# _AM_PROG_TAR(FORMAT)
|
||||
# --------------------
|
||||
# Check how to create a tarball in format FORMAT.
|
||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
||||
#
|
||||
# Substitute a variable $(am__tar) that is a command
|
||||
# writing to stdout a FORMAT-tarball containing the directory
|
||||
# $tardir.
|
||||
# tardir=directory && $(am__tar) > result.tar
|
||||
#
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility.
|
||||
AM_MISSING_PROG([AMTAR], [tar])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
||||
m4_include([m4/libtool.m4])
|
||||
m4_include([m4/noexecstack.m4])
|
||||
m4_include([m4/onceonly.m4])
|
||||
m4_include([m4/socklen.m4])
|
||||
m4_include([m4/sys_socket_h.m4])
|
||||
m4_include([acinclude.m4])
|
||||
200
jni/libgcrypt/autogen.sh
Executable file
200
jni/libgcrypt/autogen.sh
Executable file
@@ -0,0 +1,200 @@
|
||||
#! /bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
#
|
||||
# Copyright (C) 2003 g10 Code GmbH
|
||||
#
|
||||
# This file is free software; as a special exception the author gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
configure_ac="configure.ac"
|
||||
|
||||
cvtver () {
|
||||
awk 'NR==1 {split($NF,A,".");X=1000000*A[1]+1000*A[2]+A[3];print X;exit 0}'
|
||||
}
|
||||
|
||||
check_version () {
|
||||
if [ `("$1" --version || echo "0") | cvtver` -ge "$2" ]; then
|
||||
return 0
|
||||
fi
|
||||
echo "**Error**: "\`$1\'" not installed or too old." >&2
|
||||
echo ' Version '$3' or newer is required.' >&2
|
||||
[ -n "$4" ] && echo ' Note that this is part of '\`$4\''.' >&2
|
||||
DIE="yes"
|
||||
return 1
|
||||
}
|
||||
|
||||
|
||||
DIE=no
|
||||
FORCE=
|
||||
if test x"$1" = x"--force"; then
|
||||
FORCE=" --force"
|
||||
shift
|
||||
fi
|
||||
|
||||
# ***** W32 build script *******
|
||||
# Used to cross-compile for Windows.
|
||||
if test "$1" = "--build-w32"; then
|
||||
tmp=`dirname $0`
|
||||
tsdir=`cd "$tmp"; pwd`
|
||||
shift
|
||||
if [ ! -f $tsdir/config.guess ]; then
|
||||
echo "$tsdir/config.guess not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
build=`$tsdir/config.guess`
|
||||
|
||||
[ -z "$w32root" ] && w32root="$HOME/w32root"
|
||||
echo "Using $w32root as standard install directory" >&2
|
||||
|
||||
# Locate the cross compiler
|
||||
crossbindir=
|
||||
for host in i586-mingw32msvc i386-mingw32msvc; do
|
||||
if ${host}-gcc --version >/dev/null 2>&1 ; then
|
||||
crossbindir=/usr/${host}/bin
|
||||
conf_CC="CC=${host}-gcc"
|
||||
break;
|
||||
fi
|
||||
done
|
||||
if [ -z "$crossbindir" ]; then
|
||||
echo "Cross compiler kit not installed" >&2
|
||||
echo "Under Debian GNU/Linux, you may install it using" >&2
|
||||
echo " apt-get install mingw32 mingw32-runtime mingw32-binutils" >&2
|
||||
echo "Stop." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "$tsdir/config.log" ]; then
|
||||
if ! head $tsdir/config.log | grep "$host" >/dev/null; then
|
||||
echo "Pease run a 'make distclean' first" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
./configure --enable-maintainer-mode --prefix=${w32root} \
|
||||
--host=${host} --build=${build} \
|
||||
--with-gpg-error-prefix=${w32root}
|
||||
exit $?
|
||||
fi
|
||||
# ***** end W32 build script *******
|
||||
|
||||
|
||||
# ***** AMD64 cross build script *******
|
||||
# Used to cross-compile for AMD64 (for testing)
|
||||
if test "$1" = "--build-amd64"; then
|
||||
tmp=`dirname $0`
|
||||
tsdir=`cd "$tmp"; pwd`
|
||||
shift
|
||||
if [ ! -f $tsdir/config.guess ]; then
|
||||
echo "$tsdir/config.guess not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
build=`$tsdir/config.guess`
|
||||
|
||||
[ -z "$amd64root" ] && amd64root="$HOME/amd64root"
|
||||
echo "Using $amd64root as standard install directory" >&2
|
||||
|
||||
# Locate the cross compiler
|
||||
crossbindir=
|
||||
for host in x86_64-linux-gnu amd64-linux-gnu; do
|
||||
if ${host}-gcc --version >/dev/null 2>&1 ; then
|
||||
crossbindir=/usr/${host}/bin
|
||||
conf_CC="CC=${host}-gcc"
|
||||
break;
|
||||
fi
|
||||
done
|
||||
if [ -z "$crossbindir" ]; then
|
||||
echo "Cross compiler kit not installed" >&2
|
||||
echo "Stop." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f "$tsdir/config.log" ]; then
|
||||
if ! head $tsdir/config.log | grep "$host" >/dev/null; then
|
||||
echo "Please run a 'make distclean' first" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
$tsdir/configure --enable-maintainer-mode --prefix=${amd64root} \
|
||||
--host=${host} --build=${build} \
|
||||
--with-gpg-error-prefix=${amd64root}
|
||||
|
||||
rc=$?
|
||||
exit $rc
|
||||
fi
|
||||
# ***** end AMD64 cross build script *******
|
||||
|
||||
# Grep the required versions from configure.ac
|
||||
autoconf_vers=`sed -n '/^AC_PREREQ(/ {
|
||||
s/^.*(\(.*\))/\1/p
|
||||
q
|
||||
}' ${configure_ac}`
|
||||
autoconf_vers_num=`echo "$autoconf_vers" | cvtver`
|
||||
|
||||
automake_vers=`sed -n '/^min_automake_version=/ {
|
||||
s/^.*="\(.*\)"/\1/p
|
||||
q
|
||||
}' ${configure_ac}`
|
||||
automake_vers_num=`echo "$automake_vers" | cvtver`
|
||||
|
||||
#gettext_vers=`sed -n '/^AM_GNU_GETTEXT_VERSION(/ {
|
||||
#s/^.*(\(.*\))/\1/p
|
||||
#q
|
||||
#}' ${configure_ac}`
|
||||
#gettext_vers_num=`echo "$gettext_vers" | cvtver`
|
||||
|
||||
|
||||
if [ -z "$autoconf_vers" -o -z "$automake_vers" ]
|
||||
then
|
||||
echo "**Error**: version information not found in "\`${configure_ac}\'"." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Allow to override the default tool names
|
||||
AUTOCONF=${AUTOCONF_PREFIX}${AUTOCONF:-autoconf}${AUTOCONF_SUFFIX}
|
||||
AUTOHEADER=${AUTOCONF_PREFIX}${AUTOHEADER:-autoheader}${AUTOCONF_SUFFIX}
|
||||
|
||||
AUTOMAKE=${AUTOMAKE_PREFIX}${AUTOMAKE:-automake}${AUTOMAKE_SUFFIX}
|
||||
ACLOCAL=${AUTOMAKE_PREFIX}${ACLOCAL:-aclocal}${AUTOMAKE_SUFFIX}
|
||||
|
||||
#GETTEXT=${GETTEXT_PREFIX}${GETTEXT:-gettext}${GETTEXT_SUFFIX}
|
||||
#MSGMERGE=${GETTEXT_PREFIX}${MSGMERGE:-msgmerge}${GETTEXT_SUFFIX}
|
||||
|
||||
|
||||
if check_version $AUTOCONF $autoconf_vers_num $autoconf_vers ; then
|
||||
check_version $AUTOHEADER $autoconf_vers_num $autoconf_vers autoconf
|
||||
fi
|
||||
if check_version $AUTOMAKE $automake_vers_num $automake_vers; then
|
||||
check_version $ACLOCAL $automake_vers_num $autoconf_vers automake
|
||||
fi
|
||||
#if check_version $GETTEXT $gettext_vers_num $gettext_vers; then
|
||||
# check_version $MSGMERGE $gettext_vers_num $gettext_vers gettext
|
||||
#fi
|
||||
|
||||
if test "$DIE" = "yes"; then
|
||||
cat <<EOF
|
||||
|
||||
Note that you may use alternative versions of the tools by setting
|
||||
the corresponding environment variables; see README.SVN for details.
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Running aclocal -I m4 ${ACLOCAL_FLAGS:+$ACLOCAL_FLAGS }..."
|
||||
$ACLOCAL -I m4 $ACLOCAL_FLAGS
|
||||
echo "Running autoheader..."
|
||||
$AUTOHEADER
|
||||
echo "Running automake --gnu ..."
|
||||
$AUTOMAKE --gnu;
|
||||
echo "Running autoconf${FORCE} ..."
|
||||
$AUTOCONF${FORCE}
|
||||
|
||||
echo "You may now run:
|
||||
./configure --enable-maintainer-mode && make
|
||||
"
|
||||
3900
jni/libgcrypt/cipher/ChangeLog
Normal file
3900
jni/libgcrypt/cipher/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
76
jni/libgcrypt/cipher/Makefile.am
Normal file
76
jni/libgcrypt/cipher/Makefile.am
Normal file
@@ -0,0 +1,76 @@
|
||||
# Makefile for cipher modules
|
||||
# Copyright (C) 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
EXTRA_DIST = Manifest
|
||||
|
||||
# Need to include ../src in addition to top_srcdir because gcrypt.h is
|
||||
# a built header.
|
||||
AM_CPPFLAGS = -I../src -I$(top_srcdir)/src
|
||||
AM_CFLAGS = $(GPG_ERROR_CFLAGS)
|
||||
|
||||
|
||||
noinst_LTLIBRARIES = libcipher.la
|
||||
|
||||
GCRYPT_MODULES = @GCRYPT_CIPHERS@ @GCRYPT_PUBKEY_CIPHERS@ @GCRYPT_DIGESTS@
|
||||
|
||||
libcipher_la_DEPENDENCIES = $(GCRYPT_MODULES)
|
||||
libcipher_la_LIBADD = $(GCRYPT_MODULES)
|
||||
|
||||
libcipher_la_SOURCES = \
|
||||
cipher.c pubkey.c ac.c md.c \
|
||||
hmac-tests.c \
|
||||
bithelp.h \
|
||||
primegen.c \
|
||||
hash-common.c hash-common.h \
|
||||
rmd.h
|
||||
|
||||
EXTRA_libcipher_la_SOURCES = \
|
||||
arcfour.c \
|
||||
blowfish.c \
|
||||
cast5.c \
|
||||
crc.c \
|
||||
des.c \
|
||||
dsa.c \
|
||||
elgamal.c \
|
||||
ecc.c \
|
||||
md4.c \
|
||||
md5.c \
|
||||
rijndael.c rijndael-tables.h \
|
||||
rmd160.c \
|
||||
rsa.c \
|
||||
seed.c \
|
||||
serpent.c \
|
||||
sha1.c \
|
||||
sha256.c \
|
||||
sha512.c \
|
||||
tiger.c \
|
||||
whirlpool.c \
|
||||
twofish.c \
|
||||
rfc2268.c \
|
||||
camellia.c camellia.h camellia-glue.c
|
||||
|
||||
|
||||
# We need to lower the optimization for this module.
|
||||
tiger.o: $(srcdir)/tiger.c
|
||||
`echo $(COMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' `
|
||||
|
||||
tiger.lo: $(srcdir)/tiger.c
|
||||
`echo $(LTCOMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' `
|
||||
568
jni/libgcrypt/cipher/Makefile.in
Normal file
568
jni/libgcrypt/cipher/Makefile.in
Normal file
@@ -0,0 +1,568 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Makefile for cipher modules
|
||||
# Copyright (C) 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Process this file with automake to produce Makefile.in
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = cipher
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/noexecstack.m4 $(top_srcdir)/m4/onceonly.m4 \
|
||||
$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
am__DEPENDENCIES_1 =
|
||||
am_libcipher_la_OBJECTS = cipher.lo pubkey.lo ac.lo md.lo \
|
||||
hmac-tests.lo primegen.lo hash-common.lo
|
||||
libcipher_la_OBJECTS = $(am_libcipher_la_OBJECTS)
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(libcipher_la_SOURCES) $(EXTRA_libcipher_la_SOURCES)
|
||||
DIST_SOURCES = $(libcipher_la_SOURCES) $(EXTRA_libcipher_la_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_FILEVERSION = @BUILD_FILEVERSION@
|
||||
BUILD_REVISION = @BUILD_REVISION@
|
||||
BUILD_TIMESTAMP = @BUILD_TIMESTAMP@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DL_LIBS = @DL_LIBS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FALLBACK_SOCKLEN_T = @FALLBACK_SOCKLEN_T@
|
||||
FFLAGS = @FFLAGS@
|
||||
GCRYPT_CIPHERS = @GCRYPT_CIPHERS@
|
||||
GCRYPT_DIGESTS = @GCRYPT_DIGESTS@
|
||||
GCRYPT_PUBKEY_CIPHERS = @GCRYPT_PUBKEY_CIPHERS@
|
||||
GCRYPT_RANDOM = @GCRYPT_RANDOM@
|
||||
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
|
||||
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
|
||||
GPG_ERROR_LIBS = @GPG_ERROR_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBGCRYPT_CIPHERS = @LIBGCRYPT_CIPHERS@
|
||||
LIBGCRYPT_CONFIG_API_VERSION = @LIBGCRYPT_CONFIG_API_VERSION@
|
||||
LIBGCRYPT_CONFIG_CFLAGS = @LIBGCRYPT_CONFIG_CFLAGS@
|
||||
LIBGCRYPT_CONFIG_LIBS = @LIBGCRYPT_CONFIG_LIBS@
|
||||
LIBGCRYPT_DIGESTS = @LIBGCRYPT_DIGESTS@
|
||||
LIBGCRYPT_LT_AGE = @LIBGCRYPT_LT_AGE@
|
||||
LIBGCRYPT_LT_CURRENT = @LIBGCRYPT_LT_CURRENT@
|
||||
LIBGCRYPT_LT_REVISION = @LIBGCRYPT_LT_REVISION@
|
||||
LIBGCRYPT_PUBKEY_CIPHERS = @LIBGCRYPT_PUBKEY_CIPHERS@
|
||||
LIBGCRYPT_THREAD_MODULES = @LIBGCRYPT_THREAD_MODULES@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MPI_SFLAGS = @MPI_SFLAGS@
|
||||
NOEXECSTACK_FLAGS = @NOEXECSTACK_FLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PTH_CFLAGS = @PTH_CFLAGS@
|
||||
PTH_CONFIG = @PTH_CONFIG@
|
||||
PTH_LIBS = @PTH_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
RC = @RC@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = Manifest
|
||||
|
||||
# Need to include ../src in addition to top_srcdir because gcrypt.h is
|
||||
# a built header.
|
||||
AM_CPPFLAGS = -I../src -I$(top_srcdir)/src
|
||||
AM_CFLAGS = $(GPG_ERROR_CFLAGS)
|
||||
noinst_LTLIBRARIES = libcipher.la
|
||||
GCRYPT_MODULES = @GCRYPT_CIPHERS@ @GCRYPT_PUBKEY_CIPHERS@ @GCRYPT_DIGESTS@
|
||||
libcipher_la_DEPENDENCIES = $(GCRYPT_MODULES)
|
||||
libcipher_la_LIBADD = $(GCRYPT_MODULES)
|
||||
libcipher_la_SOURCES = \
|
||||
cipher.c pubkey.c ac.c md.c \
|
||||
hmac-tests.c \
|
||||
bithelp.h \
|
||||
primegen.c \
|
||||
hash-common.c hash-common.h \
|
||||
rmd.h
|
||||
|
||||
EXTRA_libcipher_la_SOURCES = \
|
||||
arcfour.c \
|
||||
blowfish.c \
|
||||
cast5.c \
|
||||
crc.c \
|
||||
des.c \
|
||||
dsa.c \
|
||||
elgamal.c \
|
||||
ecc.c \
|
||||
md4.c \
|
||||
md5.c \
|
||||
rijndael.c rijndael-tables.h \
|
||||
rmd160.c \
|
||||
rsa.c \
|
||||
seed.c \
|
||||
serpent.c \
|
||||
sha1.c \
|
||||
sha256.c \
|
||||
sha512.c \
|
||||
tiger.c \
|
||||
whirlpool.c \
|
||||
twofish.c \
|
||||
rfc2268.c \
|
||||
camellia.c camellia.h camellia-glue.c
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cipher/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu cipher/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libcipher.la: $(libcipher_la_OBJECTS) $(libcipher_la_DEPENDENCIES)
|
||||
$(LINK) $(libcipher_la_OBJECTS) $(libcipher_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ac.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arcfour.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blowfish.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/camellia-glue.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/camellia.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cast5.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cipher.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/des.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsa.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elgamal.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash-common.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmac-tests.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md4.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/primegen.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pubkey.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rfc2268.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rijndael.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmd160.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rsa.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seed.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serpent.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha512.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiger.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/twofish.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/whirlpool.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am
|
||||
|
||||
|
||||
# We need to lower the optimization for this module.
|
||||
tiger.o: $(srcdir)/tiger.c
|
||||
`echo $(COMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' `
|
||||
|
||||
tiger.lo: $(srcdir)/tiger.c
|
||||
`echo $(LTCOMPILE) -c $(srcdir)/tiger.c | sed -e 's/-O[2-9s]*/-O1/g' `
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
73
jni/libgcrypt/cipher/Manifest
Normal file
73
jni/libgcrypt/cipher/Manifest
Normal file
@@ -0,0 +1,73 @@
|
||||
# Manifest - checksums of the cipher directory
|
||||
# Copyright 2003 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
|
||||
|
||||
# Checksums for all source files in this directory. Format is
|
||||
# filename, blanks, base-64 part of an OpenPGP detached signature
|
||||
# without the header lines. Blank lines and lines beginning with a
|
||||
# hash mark are ignored. A tool to process this file is available by
|
||||
# cvs -d :pserver:anoncvs@cvs.gnupg.org:/cvs/wk co misc-scripts/manifest-tool
|
||||
#
|
||||
# The special entry "$names$" holds a signature over all sorted
|
||||
# filenames excluding itself.
|
||||
|
||||
|
||||
# Algorithm API
|
||||
cipher.c iQCVAwUAQDzrVjEAnp832S/7AQIPDgP+OVJ/YNWY5m7c09EBbPAzL/WsGoj6wrBNMmkRlMOqTHeh+OOtjuFHt1f9uhfM2Nzl7sJ5+h4ryZKLEZmQPRMTZTnAqkvGdsrJWJnigUA9QwYdV0ONqC9C63gpuG465gO9TZVOqlQu/FTxSRuTQYUulkaBNG71n8nZEOusBVwV2YA==58xH
|
||||
pubkey.c iQCVAwUAP9XQ3jEAnp832S/7AQJ5UgQAyHfEBvPVJ8wTRg8c7ixS2GiVmIgwIo5tvQaiQJTPWASevvYrB+2Z2qa9cATyu50ACjLzbaquGBgPzjJV3dU/qttT1gCqRuN/LCNvXFe5qnIZezejc3RAadFNTw/pOTHq0wxD1Keg66ruei9R36Nba59pEQIWIBXTfubRft2hMYk==E09t
|
||||
ac.c iQCVAwUAQDzsOzEAnp832S/7AQJCBQP/WI6EV/dsR4rmha6RVhvkjZo17kQ8z6pIl5J3cXOvqEkIFeD2HYu3HHrWST5l7yXlffhpDkVHkfMih4ruK76q6Fm0dxZ98pO4C/dVtgimlvvcy/wOQjpzsE0fYAe1BYdg81LJ09X33vW5x6C29lunfKROO2tPlV5i8ffeoFvmMF8==j26g
|
||||
md.c iQCVAwUAP+NFGjEAnp832S/7AQJs8wP/Qdk0EAKsyr3O1/pmOSN8AG4rPKbd6KDTzvoBPAN4upFwKYY4hWwvy12Q3YU9DmECrzZkRCXHR7mljVQKs6B7CRZJKjFKmOELpcJDtKvu40vTs1bOH4k9iJYZpGgRA83nkQ+ELAcphAbCA+KIpVr2K4mCJAB0FhpC2uOQ50JHAko==BeF6
|
||||
primegen.c iQCVAwUAQDzsoDEAnp832S/7AQKYRwP/TqAQBm1rHTnF0HYE05PqXfWlOqa6EosqVpaOcs/OIW6PaqX0xH1UlrukK7jNOjK3xC4o1qNQ1UKzz2dvQaq1bMvNNizeavxAh10SJZc0hIc/ofc83IbjLh8SZVWQ67JxjsUd3DOXmSmhPZ+Pqd7cUIiw8fDoF+I9EZqy3COu1wY==1ebT
|
||||
|
||||
# Algorithm implementations
|
||||
arcfour.c iQCVAwUAP9XR/TEAnp832S/7AQJcRwP6AlvYEx++fpT4mIYo0xRDqKEQeqMQvbaRhIg2eV74JxItpHa3q5YsYIl+n1yUz5g35JRWWXSWmAZBwO5wLKsHii4kRUhgrKWnSoQZoPpl49L5+N3R58ON3S0ru5lsBiEJEze3xplf2vqwrH9v1QHVD+gU7UTlfNqrIJoOUXN+1O4==Tq+x
|
||||
blowfish.c iQCVAwUAP9XTETEAnp832S/7AQJaEgQAgiqqfuO+zQtscgTB0rvOzVymIKjRKjYhFuLjVuc79G4z1RCAffvIn/YM2d7kt+Z/QF7zjcTAOgETCQL1XokpX2zz9HPAMi2tlDY5zsDufTNqj0n4WBL9nM7w6XAvsiwP1B3bqCTv9SjJV4KbxJ58vw1yQE+sqW74R/QIHFvC7mU==wZnX
|
||||
cast5.c iQCVAwUAP9XT6DEAnp832S/7AQJ3xgP/ehLjEN3GELGudbqeo91Xd+PqitHrkuBbtRIYX7Udd/fyXLN+h8rMJVyIQX2m+mpxbBxudVU3x8/DNT8B0ZHAwK6qqJmEBLLhEYPgIuF76i9LMrP1KqUPhAwRZ2OppjIIugBQ+rP74aD4eLyd/aKQHNuXML8QGWR6KwQShohXM5I==/BRh
|
||||
crc.c iQCVAwUAP7ouejEAnp832S/7AQIgwQQApg5Nm63tH5DQkbN+zPzMO9Ygoj3ukxfFTyTBPYSXYKMiTjEbESegaU40uN8jnz2vprcIQWcgZfzO4+opEJMcI35aPwzEk0vKOp0S/PrBLUY2rJfnDVkX5XgJFZa2Q7LLe826UEBzTVYW924utiCCe8oOaOEWVNpg1mqdknu3M9o==kz5D
|
||||
des.c iQCVAwUAQCN2oDEAnp832S/7AQL/jwP6Auoq6nZCDBjpgc9tDzuIRwa9DqyuM3gX94uvgEpUwdHszb2bG43dz03kVmcYxtj1MzXbyCeCZOwox0b2SKmLgxIbrNP6yGbzVdTj6592gDYuf/ZXmc1ZNJ1DDldcPQ0n9fXUipUPwyPaNWo3mSZaNcMKSWWzdK0J6ciG6nk7SWI==9k/t
|
||||
dsa.c iQCVAwUAP9XZHDEAnp832S/7AQLBRgP/XrBzTEYx5ccMj1MMb6sg37liEHdIyyy49zjvt6jUqxj4RuwVEN8S6v3u4q/QyJkHAi1E0EkREgENlyHW6PKWhYbcrd0vPIAN15yjnl2yqtrCrJImexUCoqJJewK0E4JOicGbabTil8MZjk+mbhEPnjJBqOkyP1w0i31pEDgE/8M==pC8s
|
||||
elgamal.c iQCVAwUAP9XbYzEAnp832S/7AQLXagQA3HrvspZfbTGgmUH0IqLQTJ0exUPxJv5DET2TvoIy62trDmMN6lTAj5P+a7jQ8udcu0w+mR2vXUHcxUpNA2PxLaMwGzNSY4zRDNe9r3SFTDrFm6m4y9Ko2e8XtEA+WF6P/XLpck4Jn7vMEDmVGPwkNd22kXFFE8dBGwG6i5Hk1Mk==oBUs
|
||||
md4.c iQCVAwUAP9h50DEAnp832S/7AQJhHgQAzNA/B6MWFDlCtPkIVaW8RpP1Eg0ZNMsy0s7SJkopOCBlu6CwXUOKe+8ppcSxhjYKh4i4uQr/QtfipYlBjzKJGnrafoF/NugXNCOHSTGT11TvK7mCiBuUMVgvZGAlOJImk6eTTfUjRrMfaXM/SWl8bdJ4ZpzdjEyVh89r7I5JrGk==x2UD
|
||||
md5.c iQCVAwUAP9h7LzEAnp832S/7AQJUGQP/c0cbf6WZXCzmjufHxiE9FAQBzTsA0WtaNqdFcHl7fhmikGtknlaED8n5a7eYd/C481UQW6Wgq/oZdsvgoPWPhG3fOCy2CFP9cZVXITuMSf0ucyZTFUJNO15fnZ+nDfsUv+JPdv1aSeRinAUtfAcSKfkSyR9BCPZvkx+tgU6cphU==Zv+h
|
||||
rijndael.c iQCVAwUAP9h9cTEAnp832S/7AQKF1AP+P2L/tPqDJRDg+/fwbOk8Ts0MNxnvvYEm3gE73TKuLt1S+B2+jkrZcKNvM5VGPnVMJbnS0lmIK04nmedHCOftGTOwhGulZAHHIaKGystT3Jql4iPws/JMgAjE7Fyxh5WZMtB9yEljKBpJ5XNqhrMvvxcHpnyP3+YzIXNwzk34V+c==dJ5k
|
||||
rmd160.c iQCVAwUAP9h+bTEAnp832S/7AQK1OgP+PNKF6Nzi6X93easVlksdLqKEsArCAw2QjGWDGyxTnbiJM55qAl9JxR1mn3V+oOL7izLLwTt6EYK9evhzfcxY5N5Mni85RAcsLPsuAfQDEzjI6GUWHtQUKPbM+BaorzfhQjYFSZyvum/dZYJ/WfiwwwhqqIKyVU2ZFSqA38YGC/c==9jdA
|
||||
rsa.c iQCVAwUAP9iHIzEAnp832S/7AQKAYwQAuWtnMte54QHN+Hij9t4sGuypXogajOb1vQQwGgS0fKsaBZsuSP2amze4o5diIvsQTsFQ4CzjvqoCVuBDoHM3xkSD8wGDizgvtCamAxkdbF7wmzldKFn8SpJqlVwWQMP6kk1IjXHEuYb4IDWGTbVMhfEu+eOlU8+PSK4IhZqNvt4==/3hp
|
||||
serpent.c iQCVAwUAP9h/VzEAnp832S/7AQLyCwP/d1zbmb7l/PriZNa9/Z7mo01XFe5MnAqCfIwhl9GjeaMszcoS37jECNq5nLvrTTFIIJpm3rvBePwiCG4Wwx1I18HCxaP198pcSaR+BLOJ3Aj52EZPrxtqlDKuFr38ZOP5giyUqUYVYGVdrz4kRMNWAZQK53GeJnGhXCnhxojLEgA==ck46
|
||||
sha1.c iQCVAwUAP9iATTEAnp832S/7AQKcSwQAwAs/HnNqho3lU1ZUgCPNt5P2/Brm6W21+wWWGKJkSrra/c4NYVKJGDDwlsFE0b9ln1uZt7bHReFkKXK3JnrKTmNVcx/Cy64iCMRNMhaM72Mqy7wWx5yHBAmMBxzFGnNQKbmeY52zeGih5HsNLSibc2pPuOViWo2JPJ5Ci/wIwl8==/wtO
|
||||
sha256.c iQCVAwUAP9iAtzEAnp832S/7AQJD2QP/UqvL0hhjG1wEFbGrdkV9tba1sMDXdnnK6X7HdLuRpVAgNiQiFf8JDmntd/dZ2Q71p4Uae2ctqve4WoEijPUZPjACnpuZfx0SEQL0lQBkwxzJp7lz9ujVtwQ2cM/aYexJkXcWgGcloJNLM3JbWPGIJnuYbr/IwJ6RQF9vgj0357o==UWO1
|
||||
sha512.c iQCVAwUAP9iBTDEAnp832S/7AQIPBAQA28CJSUQLiW0s2x9u8/OH2eKnxPjA4sZmb50WP7920Lem66P31C3BrOqwfBot4RLhjL+zh/+Uc4s3HPwApZuj9E4BxNMlqLv+Tqk++DAbdaOeYT4jeUt+mlhQQ6mH/RDsy32rZsNsGQ2bUGxazZmfG++PL3JyhawqCy00SUDr/o0==H+0X
|
||||
tiger.c iQCVAwUAP9iCfjEAnp832S/7AQKufwP/fryv3MqSOYY+90325DH7X3/CtekxeooN0scGsHX0fxBakWSMecTNrj33KPddLS46gU/S89zIc2N/Bw/7EVIAXVFA3/3Ip+OrFOuIMO4Py1sCdB8o2Y+5ygv8iXLcsXIq1O0av79i9g774V3uaXa2qN9ZnXe0AEhcy8FHJ2i/wro==5XVB
|
||||
twofish.c iQCVAwUAP9iD6TEAnp832S/7AQKUnQP/Rq8FaYeHTG7HbZuqAs9pbPitzjDbkdZddmInWR7NmevBkKvhsJALjVooc0KGQfo2lAAmy3Xi/4QQN8VPn51DVjDIgf7x+DQh/9TFJHMccxI9asUgi4+TNnmMqLU1k3N8S2PjyZ1sjeC8B79fKPpwCzj72WkqPkzZw3l2jArr+dU==NdJT
|
||||
rfc2268.c iQCVAwUAQCN+3jEAnp832S/7AQLv1gQA1hJh29hAjKi4uLSGxXvJ6cyYmPdmevdKrbLnuHZWtHe4xvCgy/nTdEojEpxgLp/hL/ogasuWRC1W16Wiz9ryxf7YR0uhZWayO/bQNagpfU5MIkJTLuKqqgpwYumCSQfOugXVAqcgEzj+13eeyJaFVrzwrNa67sh84nmbjOjNjvE==0zBq
|
||||
|
||||
# Random number related
|
||||
random.c iQCVAwUAP7nsITEAnp832S/7AQK4SAQAtvfUgrtGOQ2PlxGMla0qJLPHjJacMwgq0ecusiI79elPdDsFfCCk6dK1Ug2kFbNm22nCGHNcUquqbX7noi7ZVQnmPBQXzyLNZd7GmrawRZfdlRerTUDBpSnR8V8ui/5+YYp627E7kKGC0hPSgqXFql6oBMIfno0LZwFJTjIevRY==L419
|
||||
random.h iQCVAwUAP7ovKDEAnp832S/7AQJ3bQQAjnPebnyTC7sphAv2I7uIz+yPgw1ZfbVhLv+OiWDlO9ish+fRyyMpy+HELBOgZjJdgRegqhlZC6qyns5arM/VglYi+PzvdLO3hIqHE/YFfpIFPz8wBrcmlqrYyd3CsGqcYsfjocXNttCBLeSWmoJ09ltKQH8yzJf3oAgN6X1yuc4==eNoU
|
||||
rand-internal.h iQCVAwUAP7ouvDEAnp832S/7AQLYnAQAhdI7ERoJVCkV8GiV7MjaUxv1WIL7iZ+jIOvVhv4fNyhCGCGoEtTjkyput/lj7Nsh3FXEqRhypGGrCLf47x/gua5n+BwffogxVyUDqiOyyGhNTPpe3fQcNBvbPCtco8yMK4GJO5G3BqzlPyN+BMeogLymyV6Sm1mvh5LZDyAFbfQ==tZSE
|
||||
rndlinux.c iQCVAwUAP9iPYTEAnp832S/7AQL6/AP/ZDrbOkVuB9qJ7sKeX1MImZEsz3mi0xPovJzaBtBU7a0idcUKrWYOvQFWRlLUeq0iCT6+h2l5bniP7q7hepzlKa+VPY9VWaQthqeJm2l5LN6QQ5PyMfBq04QuBncw9BJnCGmEyTLt3RxIXBAPdxmiVxtcRIFUqCBtQvoUXGLvemw==t37k
|
||||
rndegd.c iQCVAwUAP9iPRDEAnp832S/7AQImBQP/WHKg+hKXcm1pQvilzML0jZpwK5PAMM4uBnnPJNIXWOYBO6I/Xg9d/tPLg8NlmmtyQCo2Eu0ybDSt+8mu+dWveAys+0LTi0MIqeP9BMzCKz8dnWH6+S8huLXwTF3m0IrqM0JLb6b71GK9SOq6sWQ22yW5vf61hXP8kH9dhIaoMZs==FaHV
|
||||
rndunix.c iQCVAwUAP9iQlzEAnp832S/7AQL/KgQA29GnvcD4Xb5qjDMBgW9THEE4+4lfex/6k+Fh0IT61OLJsWVLJ7bJpRntburw4uQm4Tf7CO8vaiDFDYhKKrzXeOF1fmdpcL8hA+fNp9I/MUOc4e9kN9+YJ9wikVa0SZj1OBfhzgcFLd1xOtulkr3ii52HLF9vhrxzkgVwvD10Bi8==2cML
|
||||
rndw32.c iQCVAwUAP9iRKDEAnp832S/7AQIuaAQA3AJr3WqnxNDsWCIdvehf8Suotthj+laX8nJsvDfFhXPKcXDpsg0wTTXSnnKgyED53+uYiMDnVRsxeWAyhKwvx1MjjlaSMMjzbH6isWTH8FaWpLgrxEkXoPeNqYf5FXpdUkcUxGX2RkQeuX/cIfiHLNE9CV0usaF2jysjBX2iERY==EEnO
|
||||
|
||||
# Helper
|
||||
bithelp.h iQCVAwUAP7ouPTEAnp832S/7AQKXggQAqjcgvihIF3WclOgw1JV2rbARw4ISIDRMFqdaNCqBRx6BwEz3UGsEIlz6+iR1sS/reqN61WvtjLb+D0+tujAkGrgQJhFLG85WtG2tB5UVoI3am1fpkwiRm+bR4rv0rGk0BYk81bC7+l4KrK9o5lVp4lCsrorlUKsd48lNmBHyAXM==mDDN
|
||||
rmd.h iQCVAwUAP7oumjEAnp832S/7AQJiJQP/V4bJwjZaYndJzV+KRnIDbl1koHuw+ZK5heMYVu8Qk4ylqv//BGyeRa3jZCcfPHI35q6HilCs2VBm8hiBMjHSqY/VPn2ZQ0yg/lt6qEvl7YjsLmyMICvjG+ncszHoq9pRvnF3vTnM18sPIioXLk8fskuM0XOCNBs0ARBAQjY9UGI==olUN
|
||||
|
||||
# Configuration
|
||||
Makefile.am iQCVAwUAQCN33TEAnp832S/7AQKFJAQAz7BDkC814q+QiuE/jnutJHR5qlgbrm3ikGbQwdRzYUscst4bCCWy3uKL/sIPGLg+JQXtF5FnsQy3s4D9BOYhp72cA9ktYK65hhi4pNm/JQ0lXkZMNfk8Go5lNzKezlWwHvkMwRXR0Fep0wPdyeaKW5BfaW2ABvgep6Bp+hHEbyg==zSyi
|
||||
$names$ iQCVAwUAQCN3EDEAnp832S/7AQJXLAP8DvHTpm5DkTF35EmzeKpi9ie59AZcZanD19ir/e/7+PaQxr2riuLHDGwFKTju+dcvvBsqrygXOC378GXVWzIF2OZwS4EdDcJ+pgojo9UpsqpKsJHouY4Ugx5cQialxba462kUn8hcihSBnMyc4LzbJ5WQ4puQuqy544d2x94+2ms==G4Ls
|
||||
3301
jni/libgcrypt/cipher/ac.c
Normal file
3301
jni/libgcrypt/cipher/ac.c
Normal file
File diff suppressed because it is too large
Load Diff
156
jni/libgcrypt/cipher/arcfour.c
Normal file
156
jni/libgcrypt/cipher/arcfour.c
Normal file
@@ -0,0 +1,156 @@
|
||||
/* arcfour.c - The arcfour stream cipher
|
||||
* Copyright (C) 2000, 2001, 2002, 2003 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 397 ff.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "types.h"
|
||||
#include "g10lib.h"
|
||||
#include "cipher.h"
|
||||
|
||||
static const char *selftest(void);
|
||||
|
||||
typedef struct {
|
||||
int idx_i, idx_j;
|
||||
byte sbox[256];
|
||||
} ARCFOUR_context;
|
||||
|
||||
static void
|
||||
do_encrypt_stream( ARCFOUR_context *ctx,
|
||||
byte *outbuf, const byte *inbuf, unsigned int length )
|
||||
{
|
||||
register int i = ctx->idx_i;
|
||||
register int j = ctx->idx_j;
|
||||
register byte *sbox = ctx->sbox;
|
||||
register int t;
|
||||
|
||||
while ( length-- )
|
||||
{
|
||||
i++;
|
||||
i = i & 255; /* The and-op seems to be faster than the mod-op. */
|
||||
j += sbox[i];
|
||||
j &= 255;
|
||||
t = sbox[i]; sbox[i] = sbox[j]; sbox[j] = t;
|
||||
*outbuf++ = *inbuf++ ^ sbox[(sbox[i] + sbox[j]) & 255];
|
||||
}
|
||||
|
||||
ctx->idx_i = i;
|
||||
ctx->idx_j = j;
|
||||
}
|
||||
|
||||
static void
|
||||
encrypt_stream (void *context,
|
||||
byte *outbuf, const byte *inbuf, unsigned int length)
|
||||
{
|
||||
ARCFOUR_context *ctx = (ARCFOUR_context *) context;
|
||||
do_encrypt_stream (ctx, outbuf, inbuf, length );
|
||||
_gcry_burn_stack (64);
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
do_arcfour_setkey (void *context, const byte *key, unsigned int keylen)
|
||||
{
|
||||
static int initialized;
|
||||
static const char* selftest_failed;
|
||||
int i, j;
|
||||
byte karr[256];
|
||||
ARCFOUR_context *ctx = (ARCFOUR_context *) context;
|
||||
|
||||
if (!initialized )
|
||||
{
|
||||
initialized = 1;
|
||||
selftest_failed = selftest();
|
||||
if( selftest_failed )
|
||||
log_error ("ARCFOUR selftest failed (%s)\n", selftest_failed );
|
||||
}
|
||||
if( selftest_failed )
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
|
||||
if( keylen < 40/8 ) /* we want at least 40 bits */
|
||||
return GPG_ERR_INV_KEYLEN;
|
||||
|
||||
ctx->idx_i = ctx->idx_j = 0;
|
||||
for (i=0; i < 256; i++ )
|
||||
ctx->sbox[i] = i;
|
||||
for (i=0; i < 256; i++ )
|
||||
karr[i] = key[i%keylen];
|
||||
for (i=j=0; i < 256; i++ )
|
||||
{
|
||||
int t;
|
||||
j = (j + ctx->sbox[i] + karr[i]) % 256;
|
||||
t = ctx->sbox[i];
|
||||
ctx->sbox[i] = ctx->sbox[j];
|
||||
ctx->sbox[j] = t;
|
||||
}
|
||||
memset( karr, 0, 256 );
|
||||
|
||||
return GPG_ERR_NO_ERROR;
|
||||
}
|
||||
|
||||
static gcry_err_code_t
|
||||
arcfour_setkey ( void *context, const byte *key, unsigned int keylen )
|
||||
{
|
||||
ARCFOUR_context *ctx = (ARCFOUR_context *) context;
|
||||
gcry_err_code_t rc = do_arcfour_setkey (ctx, key, keylen );
|
||||
_gcry_burn_stack (300);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
static const char*
|
||||
selftest(void)
|
||||
{
|
||||
ARCFOUR_context ctx;
|
||||
byte scratch[16];
|
||||
|
||||
/* Test vector from Cryptlib labeled there: "from the
|
||||
State/Commerce Department". */
|
||||
static byte key_1[] =
|
||||
{ 0x61, 0x8A, 0x63, 0xD2, 0xFB };
|
||||
static byte plaintext_1[] =
|
||||
{ 0xDC, 0xEE, 0x4C, 0xF9, 0x2C };
|
||||
static const byte ciphertext_1[] =
|
||||
{ 0xF1, 0x38, 0x29, 0xC9, 0xDE };
|
||||
|
||||
arcfour_setkey( &ctx, key_1, sizeof(key_1));
|
||||
encrypt_stream( &ctx, scratch, plaintext_1, sizeof(plaintext_1));
|
||||
if ( memcmp (scratch, ciphertext_1, sizeof (ciphertext_1)))
|
||||
return "Arcfour encryption test 1 failed.";
|
||||
arcfour_setkey( &ctx, key_1, sizeof(key_1));
|
||||
encrypt_stream(&ctx, scratch, scratch, sizeof(plaintext_1)); /* decrypt */
|
||||
if ( memcmp (scratch, plaintext_1, sizeof (plaintext_1)))
|
||||
return "Arcfour decryption test 1 failed.";
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_arcfour =
|
||||
{
|
||||
"ARCFOUR", NULL, NULL, 1, 128, sizeof (ARCFOUR_context),
|
||||
arcfour_setkey, NULL, NULL, encrypt_stream, encrypt_stream,
|
||||
};
|
||||
|
||||
54
jni/libgcrypt/cipher/bithelp.h
Normal file
54
jni/libgcrypt/cipher/bithelp.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* bithelp.h - Some bit manipulation helpers
|
||||
* Copyright (C) 1999, 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
|
||||
*/
|
||||
#ifndef G10_BITHELP_H
|
||||
#define G10_BITHELP_H
|
||||
|
||||
|
||||
/****************
|
||||
* Rotate the 32 bit unsigned integer X by N bits left/right
|
||||
*/
|
||||
#if defined(__GNUC__) && defined(__i386__)
|
||||
static inline u32
|
||||
rol( u32 x, int n)
|
||||
{
|
||||
__asm__("roll %%cl,%0"
|
||||
:"=r" (x)
|
||||
:"0" (x),"c" (n));
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
#define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && defined(__i386__)
|
||||
static inline u32
|
||||
ror(u32 x, int n)
|
||||
{
|
||||
__asm__("rorl %%cl,%0"
|
||||
:"=r" (x)
|
||||
:"0" (x),"c" (n));
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
#define ror(x,n) ( ((x) >> (n)) | ((x) << (32-(n))) )
|
||||
#endif
|
||||
|
||||
|
||||
#endif /*G10_BITHELP_H*/
|
||||
605
jni/libgcrypt/cipher/blowfish.c
Normal file
605
jni/libgcrypt/cipher/blowfish.c
Normal file
@@ -0,0 +1,605 @@
|
||||
/* blowfish.c - Blowfish encryption
|
||||
* Copyright (C) 1998, 2001, 2002, 2003 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 <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "types.h"
|
||||
#include "g10lib.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#define BLOWFISH_BLOCKSIZE 8
|
||||
#define BLOWFISH_ROUNDS 16
|
||||
|
||||
typedef struct {
|
||||
u32 s0[256];
|
||||
u32 s1[256];
|
||||
u32 s2[256];
|
||||
u32 s3[256];
|
||||
u32 p[BLOWFISH_ROUNDS+2];
|
||||
} BLOWFISH_context;
|
||||
|
||||
static gcry_err_code_t bf_setkey (void *c, const byte *key, unsigned keylen);
|
||||
static void encrypt_block (void *bc, byte *outbuf, const byte *inbuf);
|
||||
static void decrypt_block (void *bc, byte *outbuf, const byte *inbuf);
|
||||
|
||||
|
||||
/* precomputed S boxes */
|
||||
static const u32 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 u32 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 u32 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 u32 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 u32 ps[BLOWFISH_ROUNDS+2] = {
|
||||
0x243F6A88,0x85A308D3,0x13198A2E,0x03707344,0xA4093822,0x299F31D0,
|
||||
0x082EFA98,0xEC4E6C89,0x452821E6,0x38D01377,0xBE5466CF,0x34E90C6C,
|
||||
0xC0AC29B7,0xC97C50DD,0x3F84D5B5,0xB5470917,0x9216D5D9,0x8979FB1B };
|
||||
|
||||
|
||||
|
||||
#if BLOWFISH_ROUNDS != 16
|
||||
static inline u32
|
||||
function_F( BLOWFISH_context *bc, u32 x )
|
||||
{
|
||||
u16 a, b, c, d;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
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
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define F(x) ((( s0[((byte*)&x)[0]] + s1[((byte*)&x)[1]]) \
|
||||
^ s2[((byte*)&x)[2]]) + s3[((byte*)&x)[3]] )
|
||||
#else
|
||||
#define F(x) ((( s0[((byte*)&x)[3]] + s1[((byte*)&x)[2]]) \
|
||||
^ s2[((byte*)&x)[1]]) + s3[((byte*)&x)[0]] )
|
||||
#endif
|
||||
#define R(l,r,i) do { l ^= p[i]; r ^= F(l); } while(0)
|
||||
|
||||
|
||||
static void
|
||||
do_encrypt ( BLOWFISH_context *bc, u32 *ret_xl, u32 *ret_xr )
|
||||
{
|
||||
#if BLOWFISH_ROUNDS == 16
|
||||
u32 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);
|
||||
R( xr, xl, 1);
|
||||
R( xl, xr, 2);
|
||||
R( xr, xl, 3);
|
||||
R( xl, xr, 4);
|
||||
R( xr, xl, 5);
|
||||
R( xl, xr, 6);
|
||||
R( xr, xl, 7);
|
||||
R( xl, xr, 8);
|
||||
R( xr, xl, 9);
|
||||
R( xl, xr, 10);
|
||||
R( xr, xl, 11);
|
||||
R( xl, xr, 12);
|
||||
R( xr, xl, 13);
|
||||
R( xl, xr, 14);
|
||||
R( xr, xl, 15);
|
||||
|
||||
xl ^= p[BLOWFISH_ROUNDS];
|
||||
xr ^= p[BLOWFISH_ROUNDS+1];
|
||||
|
||||
*ret_xl = xr;
|
||||
*ret_xr = xl;
|
||||
|
||||
#else
|
||||
u32 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(bc, 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
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
decrypt ( BLOWFISH_context *bc, u32 *ret_xl, u32 *ret_xr )
|
||||
{
|
||||
#if BLOWFISH_ROUNDS == 16
|
||||
u32 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);
|
||||
R( xr, xl, 16);
|
||||
R( xl, xr, 15);
|
||||
R( xr, xl, 14);
|
||||
R( xl, xr, 13);
|
||||
R( xr, xl, 12);
|
||||
R( xl, xr, 11);
|
||||
R( xr, xl, 10);
|
||||
R( xl, xr, 9);
|
||||
R( xr, xl, 8);
|
||||
R( xl, xr, 7);
|
||||
R( xr, xl, 6);
|
||||
R( xl, xr, 5);
|
||||
R( xr, xl, 4);
|
||||
R( xl, xr, 3);
|
||||
R( xr, xl, 2);
|
||||
|
||||
xl ^= p[1];
|
||||
xr ^= p[0];
|
||||
|
||||
*ret_xl = xr;
|
||||
*ret_xr = xl;
|
||||
|
||||
#else
|
||||
u32 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(bc, 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
|
||||
}
|
||||
|
||||
#undef F
|
||||
#undef R
|
||||
|
||||
static void
|
||||
do_encrypt_block ( BLOWFISH_context *bc, byte *outbuf, const byte *inbuf )
|
||||
{
|
||||
u32 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( bc, &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;
|
||||
}
|
||||
|
||||
static void
|
||||
encrypt_block (void *context, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
BLOWFISH_context *bc = (BLOWFISH_context *) context;
|
||||
do_encrypt_block (bc, outbuf, inbuf);
|
||||
_gcry_burn_stack (64);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
do_decrypt_block (BLOWFISH_context *bc, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
u32 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];
|
||||
decrypt( bc, &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;
|
||||
}
|
||||
|
||||
static void
|
||||
decrypt_block (void *context, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
BLOWFISH_context *bc = (BLOWFISH_context *) context;
|
||||
do_decrypt_block (bc, outbuf, inbuf);
|
||||
_gcry_burn_stack (64);
|
||||
}
|
||||
|
||||
|
||||
static const char*
|
||||
selftest(void)
|
||||
{
|
||||
BLOWFISH_context c;
|
||||
byte plain[] = "BLOWFISH";
|
||||
byte buffer[8];
|
||||
byte plain3[] = { 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10 };
|
||||
byte key3[] = { 0x41, 0x79, 0x6E, 0xA0, 0x52, 0x61, 0x6E, 0xE4 };
|
||||
byte cipher3[] = { 0xE1, 0x13, 0xF4, 0x10, 0x2C, 0xFC, 0xCE, 0x43 };
|
||||
|
||||
bf_setkey( (void *) &c,
|
||||
(const unsigned char*)"abcdefghijklmnopqrstuvwxyz", 26 );
|
||||
encrypt_block( (void *) &c, buffer, plain );
|
||||
if( memcmp( buffer, "\x32\x4E\xD0\xFE\xF4\x13\xA2\x03", 8 ) )
|
||||
return "Blowfish selftest failed (1).";
|
||||
decrypt_block( (void *) &c, buffer, buffer );
|
||||
if( memcmp( buffer, plain, 8 ) )
|
||||
return "Blowfish selftest failed (2).";
|
||||
|
||||
bf_setkey( (void *) &c, key3, 8 );
|
||||
encrypt_block( (void *) &c, buffer, plain3 );
|
||||
if( memcmp( buffer, cipher3, 8 ) )
|
||||
return "Blowfish selftest failed (3).";
|
||||
decrypt_block( (void *) &c, buffer, buffer );
|
||||
if( memcmp( buffer, plain3, 8 ) )
|
||||
return "Blowfish selftest failed (4).";
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
do_bf_setkey (BLOWFISH_context *c, const byte *key, unsigned keylen)
|
||||
{
|
||||
int i, j;
|
||||
u32 data, datal, datar;
|
||||
static int initialized;
|
||||
static const char *selftest_failed;
|
||||
|
||||
if( !initialized )
|
||||
{
|
||||
initialized = 1;
|
||||
selftest_failed = selftest();
|
||||
if( selftest_failed )
|
||||
log_error ("%s\n", selftest_failed );
|
||||
}
|
||||
if( selftest_failed )
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
|
||||
for(i=0; i < BLOWFISH_ROUNDS+2; i++ )
|
||||
c->p[i] = ps[i];
|
||||
for(i=0; i < 256; i++ )
|
||||
{
|
||||
c->s0[i] = ks0[i];
|
||||
c->s1[i] = ks1[i];
|
||||
c->s2[i] = ks2[i];
|
||||
c->s3[i] = ks3[i];
|
||||
}
|
||||
|
||||
for(i=j=0; i < BLOWFISH_ROUNDS+2; i++ )
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
((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
|
||||
c->p[i] ^= data;
|
||||
j = (j+4) % keylen;
|
||||
}
|
||||
|
||||
datal = datar = 0;
|
||||
for(i=0; i < BLOWFISH_ROUNDS+2; i += 2 )
|
||||
{
|
||||
do_encrypt( c, &datal, &datar );
|
||||
c->p[i] = datal;
|
||||
c->p[i+1] = datar;
|
||||
}
|
||||
for(i=0; i < 256; i += 2 )
|
||||
{
|
||||
do_encrypt( c, &datal, &datar );
|
||||
c->s0[i] = datal;
|
||||
c->s0[i+1] = datar;
|
||||
}
|
||||
for(i=0; i < 256; i += 2 )
|
||||
{
|
||||
do_encrypt( c, &datal, &datar );
|
||||
c->s1[i] = datal;
|
||||
c->s1[i+1] = datar;
|
||||
}
|
||||
for(i=0; i < 256; i += 2 )
|
||||
{
|
||||
do_encrypt( c, &datal, &datar );
|
||||
c->s2[i] = datal;
|
||||
c->s2[i+1] = datar;
|
||||
}
|
||||
for(i=0; i < 256; i += 2 )
|
||||
{
|
||||
do_encrypt( c, &datal, &datar );
|
||||
c->s3[i] = datal;
|
||||
c->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( (c->s0[i] == c->s0[j]) || (c->s1[i] == c->s1[j]) ||
|
||||
(c->s2[i] == c->s2[j]) || (c->s3[i] == c->s3[j]) )
|
||||
return GPG_ERR_WEAK_KEY;
|
||||
}
|
||||
}
|
||||
|
||||
return GPG_ERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
bf_setkey (void *context, const byte *key, unsigned keylen)
|
||||
{
|
||||
BLOWFISH_context *c = (BLOWFISH_context *) context;
|
||||
gcry_err_code_t rc = do_bf_setkey (c, key, keylen);
|
||||
_gcry_burn_stack (64);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_blowfish =
|
||||
{
|
||||
"BLOWFISH", NULL, NULL, BLOWFISH_BLOCKSIZE, 128,
|
||||
sizeof (BLOWFISH_context),
|
||||
bf_setkey, encrypt_block, decrypt_block
|
||||
};
|
||||
253
jni/libgcrypt/cipher/camellia-glue.c
Normal file
253
jni/libgcrypt/cipher/camellia-glue.c
Normal file
@@ -0,0 +1,253 @@
|
||||
/* camellia-glue.c - Glue for the Camellia cipher
|
||||
* Copyright (C) 2007 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 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., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
/* I put all the libgcrypt-specific stuff in this file to keep the
|
||||
camellia.c/camellia.h files exactly as provided by NTT. If they
|
||||
update their code, this should make it easier to bring the changes
|
||||
in. - dshaw
|
||||
|
||||
There is one small change which needs to be done: Include the
|
||||
following code at the top of camellia.h: */
|
||||
#if 0
|
||||
|
||||
/* To use Camellia with libraries it is often useful to keep the name
|
||||
* space of the library clean. The following macro is thus useful:
|
||||
*
|
||||
* #define CAMELLIA_EXT_SYM_PREFIX foo_
|
||||
*
|
||||
* This prefixes all external symbols with "foo_".
|
||||
*/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#ifdef CAMELLIA_EXT_SYM_PREFIX
|
||||
#define CAMELLIA_PREFIX1(x,y) x ## y
|
||||
#define CAMELLIA_PREFIX2(x,y) CAMELLIA_PREFIX1(x,y)
|
||||
#define CAMELLIA_PREFIX(x) CAMELLIA_PREFIX2(CAMELLIA_EXT_SYM_PREFIX,x)
|
||||
#define Camellia_Ekeygen CAMELLIA_PREFIX(Camellia_Ekeygen)
|
||||
#define Camellia_EncryptBlock CAMELLIA_PREFIX(Camellia_EncryptBlock)
|
||||
#define Camellia_DecryptBlock CAMELLIA_PREFIX(Camellia_DecryptBlock)
|
||||
#define camellia_decrypt128 CAMELLIA_PREFIX(camellia_decrypt128)
|
||||
#define camellia_decrypt256 CAMELLIA_PREFIX(camellia_decrypt256)
|
||||
#define camellia_encrypt128 CAMELLIA_PREFIX(camellia_encrypt128)
|
||||
#define camellia_encrypt256 CAMELLIA_PREFIX(camellia_encrypt256)
|
||||
#define camellia_setup128 CAMELLIA_PREFIX(camellia_setup128)
|
||||
#define camellia_setup192 CAMELLIA_PREFIX(camellia_setup192)
|
||||
#define camellia_setup256 CAMELLIA_PREFIX(camellia_setup256)
|
||||
#endif /*CAMELLIA_EXT_SYM_PREFIX*/
|
||||
|
||||
#endif /* Code sample. */
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include "types.h"
|
||||
#include "g10lib.h"
|
||||
#include "cipher.h"
|
||||
#include "camellia.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int keybitlength;
|
||||
KEY_TABLE_TYPE keytable;
|
||||
} CAMELLIA_context;
|
||||
|
||||
static const char *selftest(void);
|
||||
|
||||
static gcry_err_code_t
|
||||
camellia_setkey(void *c, const byte *key, unsigned keylen)
|
||||
{
|
||||
CAMELLIA_context *ctx=c;
|
||||
static int initialized=0;
|
||||
static const char *selftest_failed=NULL;
|
||||
|
||||
if(keylen!=16 && keylen!=24 && keylen!=32)
|
||||
return GPG_ERR_INV_KEYLEN;
|
||||
|
||||
if(!initialized)
|
||||
{
|
||||
initialized=1;
|
||||
selftest_failed=selftest();
|
||||
if(selftest_failed)
|
||||
log_error("%s\n",selftest_failed);
|
||||
}
|
||||
|
||||
if(selftest_failed)
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
|
||||
ctx->keybitlength=keylen*8;
|
||||
Camellia_Ekeygen(ctx->keybitlength,key,ctx->keytable);
|
||||
_gcry_burn_stack
|
||||
((19+34+34)*sizeof(u32)+2*sizeof(void*) /* camellia_setup256 */
|
||||
+(4+32)*sizeof(u32)+2*sizeof(void*) /* camellia_setup192 */
|
||||
+0+sizeof(int)+2*sizeof(void*) /* Camellia_Ekeygen */
|
||||
+3*2*sizeof(void*) /* Function calls. */
|
||||
);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
camellia_encrypt(void *c, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
CAMELLIA_context *ctx=c;
|
||||
|
||||
Camellia_EncryptBlock(ctx->keybitlength,inbuf,ctx->keytable,outbuf);
|
||||
_gcry_burn_stack
|
||||
(sizeof(int)+2*sizeof(unsigned char *)+sizeof(KEY_TABLE_TYPE)
|
||||
+4*sizeof(u32)
|
||||
+2*sizeof(u32*)+4*sizeof(u32)
|
||||
+2*2*sizeof(void*) /* Function calls. */
|
||||
);
|
||||
}
|
||||
|
||||
static void
|
||||
camellia_decrypt(void *c, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
CAMELLIA_context *ctx=c;
|
||||
|
||||
Camellia_DecryptBlock(ctx->keybitlength,inbuf,ctx->keytable,outbuf);
|
||||
_gcry_burn_stack
|
||||
(sizeof(int)+2*sizeof(unsigned char *)+sizeof(KEY_TABLE_TYPE)
|
||||
+4*sizeof(u32)
|
||||
+2*sizeof(u32*)+4*sizeof(u32)
|
||||
+2*2*sizeof(void*) /* Function calls. */
|
||||
);
|
||||
}
|
||||
|
||||
static const char *
|
||||
selftest(void)
|
||||
{
|
||||
CAMELLIA_context ctx;
|
||||
byte scratch[16];
|
||||
|
||||
/* These test vectors are from RFC-3713 */
|
||||
const byte plaintext[]=
|
||||
{
|
||||
0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
|
||||
0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10
|
||||
};
|
||||
const byte key_128[]=
|
||||
{
|
||||
0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,
|
||||
0xfe,0xdc,0xba,0x98,0x76,0x54,0x32,0x10
|
||||
};
|
||||
const byte ciphertext_128[]=
|
||||
{
|
||||
0x67,0x67,0x31,0x38,0x54,0x96,0x69,0x73,
|
||||
0x08,0x57,0x06,0x56,0x48,0xea,0xbe,0x43
|
||||
};
|
||||
const byte key_192[]=
|
||||
{
|
||||
0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,0x98,
|
||||
0x76,0x54,0x32,0x10,0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77
|
||||
};
|
||||
const byte ciphertext_192[]=
|
||||
{
|
||||
0xb4,0x99,0x34,0x01,0xb3,0xe9,0x96,0xf8,
|
||||
0x4e,0xe5,0xce,0xe7,0xd7,0x9b,0x09,0xb9
|
||||
};
|
||||
const byte key_256[]=
|
||||
{
|
||||
0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef,0xfe,0xdc,0xba,
|
||||
0x98,0x76,0x54,0x32,0x10,0x00,0x11,0x22,0x33,0x44,0x55,
|
||||
0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff
|
||||
};
|
||||
const byte ciphertext_256[]=
|
||||
{
|
||||
0x9a,0xcc,0x23,0x7d,0xff,0x16,0xd7,0x6c,
|
||||
0x20,0xef,0x7c,0x91,0x9e,0x3a,0x75,0x09
|
||||
};
|
||||
|
||||
camellia_setkey(&ctx,key_128,sizeof(key_128));
|
||||
camellia_encrypt(&ctx,scratch,plaintext);
|
||||
if(memcmp(scratch,ciphertext_128,sizeof(ciphertext_128))!=0)
|
||||
return "CAMELLIA-128 test encryption failed.";
|
||||
camellia_decrypt(&ctx,scratch,scratch);
|
||||
if(memcmp(scratch,plaintext,sizeof(plaintext))!=0)
|
||||
return "CAMELLIA-128 test decryption failed.";
|
||||
|
||||
camellia_setkey(&ctx,key_192,sizeof(key_192));
|
||||
camellia_encrypt(&ctx,scratch,plaintext);
|
||||
if(memcmp(scratch,ciphertext_192,sizeof(ciphertext_192))!=0)
|
||||
return "CAMELLIA-192 test encryption failed.";
|
||||
camellia_decrypt(&ctx,scratch,scratch);
|
||||
if(memcmp(scratch,plaintext,sizeof(plaintext))!=0)
|
||||
return "CAMELLIA-192 test decryption failed.";
|
||||
|
||||
camellia_setkey(&ctx,key_256,sizeof(key_256));
|
||||
camellia_encrypt(&ctx,scratch,plaintext);
|
||||
if(memcmp(scratch,ciphertext_256,sizeof(ciphertext_256))!=0)
|
||||
return "CAMELLIA-256 test encryption failed.";
|
||||
camellia_decrypt(&ctx,scratch,scratch);
|
||||
if(memcmp(scratch,plaintext,sizeof(plaintext))!=0)
|
||||
return "CAMELLIA-256 test decryption failed.";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* These oids are from
|
||||
<http://info.isl.ntt.co.jp/crypt/eng/camellia/specifications_oid.html>,
|
||||
retrieved May 1, 2007. */
|
||||
|
||||
static gcry_cipher_oid_spec_t camellia128_oids[] =
|
||||
{
|
||||
{"1.2.392.200011.61.1.1.1.2", GCRY_CIPHER_MODE_CBC},
|
||||
{"0.3.4401.5.3.1.9.1", GCRY_CIPHER_MODE_ECB},
|
||||
{"0.3.4401.5.3.1.9.3", GCRY_CIPHER_MODE_OFB},
|
||||
{"0.3.4401.5.3.1.9.4", GCRY_CIPHER_MODE_CFB},
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static gcry_cipher_oid_spec_t camellia192_oids[] =
|
||||
{
|
||||
{"1.2.392.200011.61.1.1.1.3", GCRY_CIPHER_MODE_CBC},
|
||||
{"0.3.4401.5.3.1.9.21", GCRY_CIPHER_MODE_ECB},
|
||||
{"0.3.4401.5.3.1.9.23", GCRY_CIPHER_MODE_OFB},
|
||||
{"0.3.4401.5.3.1.9.24", GCRY_CIPHER_MODE_CFB},
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static gcry_cipher_oid_spec_t camellia256_oids[] =
|
||||
{
|
||||
{"1.2.392.200011.61.1.1.1.4", GCRY_CIPHER_MODE_CBC},
|
||||
{"0.3.4401.5.3.1.9.41", GCRY_CIPHER_MODE_ECB},
|
||||
{"0.3.4401.5.3.1.9.43", GCRY_CIPHER_MODE_OFB},
|
||||
{"0.3.4401.5.3.1.9.44", GCRY_CIPHER_MODE_CFB},
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_camellia128 =
|
||||
{
|
||||
"CAMELLIA128",NULL,camellia128_oids,CAMELLIA_BLOCK_SIZE,128,
|
||||
sizeof(CAMELLIA_context),camellia_setkey,camellia_encrypt,camellia_decrypt
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_camellia192 =
|
||||
{
|
||||
"CAMELLIA192",NULL,camellia192_oids,CAMELLIA_BLOCK_SIZE,192,
|
||||
sizeof(CAMELLIA_context),camellia_setkey,camellia_encrypt,camellia_decrypt
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_camellia256 =
|
||||
{
|
||||
"CAMELLIA256",NULL,camellia256_oids,CAMELLIA_BLOCK_SIZE,256,
|
||||
sizeof(CAMELLIA_context),camellia_setkey,camellia_encrypt,camellia_decrypt
|
||||
};
|
||||
1461
jni/libgcrypt/cipher/camellia.c
Normal file
1461
jni/libgcrypt/cipher/camellia.c
Normal file
File diff suppressed because it is too large
Load Diff
81
jni/libgcrypt/cipher/camellia.h
Normal file
81
jni/libgcrypt/cipher/camellia.h
Normal file
@@ -0,0 +1,81 @@
|
||||
/* camellia.h ver 1.2.0
|
||||
*
|
||||
* Copyright (C) 2006,2007
|
||||
* NTT (Nippon Telegraph and Telephone Corporation).
|
||||
*
|
||||
* 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 HEADER_CAMELLIA_H
|
||||
#define HEADER_CAMELLIA_H
|
||||
|
||||
/* To use Camellia with libraries it is often useful to keep the name
|
||||
* space of the library clean. The following macro is thus useful:
|
||||
*
|
||||
* #define CAMELLIA_EXT_SYM_PREFIX foo_
|
||||
*
|
||||
* This prefixes all external symbols with "foo_".
|
||||
*/
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
#ifdef CAMELLIA_EXT_SYM_PREFIX
|
||||
#define CAMELLIA_PREFIX1(x,y) x ## y
|
||||
#define CAMELLIA_PREFIX2(x,y) CAMELLIA_PREFIX1(x,y)
|
||||
#define CAMELLIA_PREFIX(x) CAMELLIA_PREFIX2(CAMELLIA_EXT_SYM_PREFIX,x)
|
||||
#define Camellia_Ekeygen CAMELLIA_PREFIX(Camellia_Ekeygen)
|
||||
#define Camellia_EncryptBlock CAMELLIA_PREFIX(Camellia_EncryptBlock)
|
||||
#define Camellia_DecryptBlock CAMELLIA_PREFIX(Camellia_DecryptBlock)
|
||||
#define camellia_decrypt128 CAMELLIA_PREFIX(camellia_decrypt128)
|
||||
#define camellia_decrypt256 CAMELLIA_PREFIX(camellia_decrypt256)
|
||||
#define camellia_encrypt128 CAMELLIA_PREFIX(camellia_encrypt128)
|
||||
#define camellia_encrypt256 CAMELLIA_PREFIX(camellia_encrypt256)
|
||||
#define camellia_setup128 CAMELLIA_PREFIX(camellia_setup128)
|
||||
#define camellia_setup192 CAMELLIA_PREFIX(camellia_setup192)
|
||||
#define camellia_setup256 CAMELLIA_PREFIX(camellia_setup256)
|
||||
#endif /*CAMELLIA_EXT_SYM_PREFIX*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define CAMELLIA_BLOCK_SIZE 16
|
||||
#define CAMELLIA_TABLE_BYTE_LEN 272
|
||||
#define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4)
|
||||
|
||||
typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN];
|
||||
|
||||
|
||||
void Camellia_Ekeygen(const int keyBitLength,
|
||||
const unsigned char *rawKey,
|
||||
KEY_TABLE_TYPE keyTable);
|
||||
|
||||
void Camellia_EncryptBlock(const int keyBitLength,
|
||||
const unsigned char *plaintext,
|
||||
const KEY_TABLE_TYPE keyTable,
|
||||
unsigned char *cipherText);
|
||||
|
||||
void Camellia_DecryptBlock(const int keyBitLength,
|
||||
const unsigned char *cipherText,
|
||||
const KEY_TABLE_TYPE keyTable,
|
||||
unsigned char *plaintext);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* HEADER_CAMELLIA_H */
|
||||
620
jni/libgcrypt/cipher/cast5.c
Normal file
620
jni/libgcrypt/cipher/cast5.c
Normal file
@@ -0,0 +1,620 @@
|
||||
/* cast5.c - CAST5 cipher (RFC2144)
|
||||
* Copyright (C) 1998, 2001, 2002, 2003 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
|
||||
*/
|
||||
|
||||
/* Test vectors:
|
||||
*
|
||||
* 128-bit key = 01 23 45 67 12 34 56 78 23 45 67 89 34 56 78 9A
|
||||
* plaintext = 01 23 45 67 89 AB CD EF
|
||||
* ciphertext = 23 8B 4F E5 84 7E 44 B2
|
||||
*
|
||||
* 80-bit key = 01 23 45 67 12 34 56 78 23 45
|
||||
* = 01 23 45 67 12 34 56 78 23 45 00 00 00 00 00 00
|
||||
* plaintext = 01 23 45 67 89 AB CD EF
|
||||
* ciphertext = EB 6A 71 1A 2C 02 27 1B
|
||||
*
|
||||
* 40-bit key = 01 23 45 67 12
|
||||
* = 01 23 45 67 12 00 00 00 00 00 00 00 00 00 00 00
|
||||
* plaintext = 01 23 45 67 89 AB CD EF
|
||||
* ciphertext = 7A C8 16 D1 6E 9B 30 2E
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "g10lib.h"
|
||||
#include "types.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#define CAST5_BLOCKSIZE 8
|
||||
|
||||
typedef struct {
|
||||
u32 Km[16];
|
||||
byte Kr[16];
|
||||
} CAST5_context;
|
||||
|
||||
static gcry_err_code_t cast_setkey (void *c, const byte *key, unsigned keylen);
|
||||
static void encrypt_block (void *c, byte *outbuf, const byte *inbuf);
|
||||
static void decrypt_block (void *c, byte *outbuf, const byte *inbuf);
|
||||
|
||||
|
||||
|
||||
|
||||
static const u32 s1[256] = {
|
||||
0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,
|
||||
0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,
|
||||
0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,
|
||||
0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,
|
||||
0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,
|
||||
0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,
|
||||
0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,
|
||||
0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,
|
||||
0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,
|
||||
0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,
|
||||
0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,
|
||||
0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,
|
||||
0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,
|
||||
0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,
|
||||
0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,
|
||||
0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,
|
||||
0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,
|
||||
0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,
|
||||
0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,
|
||||
0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,
|
||||
0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,
|
||||
0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,
|
||||
0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,
|
||||
0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,
|
||||
0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,
|
||||
0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,
|
||||
0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,
|
||||
0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,
|
||||
0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,
|
||||
0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,
|
||||
0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,
|
||||
0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf
|
||||
};
|
||||
static const u32 s2[256] = {
|
||||
0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,
|
||||
0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,
|
||||
0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,
|
||||
0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,
|
||||
0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,
|
||||
0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,
|
||||
0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,
|
||||
0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,
|
||||
0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,
|
||||
0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,
|
||||
0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,
|
||||
0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,
|
||||
0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,
|
||||
0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,
|
||||
0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,
|
||||
0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,
|
||||
0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,
|
||||
0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,
|
||||
0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,
|
||||
0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,
|
||||
0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,
|
||||
0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,
|
||||
0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,
|
||||
0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,
|
||||
0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,
|
||||
0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,
|
||||
0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,
|
||||
0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,
|
||||
0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,
|
||||
0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,
|
||||
0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,
|
||||
0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1
|
||||
};
|
||||
static const u32 s3[256] = {
|
||||
0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,
|
||||
0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,
|
||||
0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,
|
||||
0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,
|
||||
0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,
|
||||
0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,
|
||||
0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,
|
||||
0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,
|
||||
0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,
|
||||
0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,
|
||||
0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,
|
||||
0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,
|
||||
0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,
|
||||
0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,
|
||||
0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,
|
||||
0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,
|
||||
0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,
|
||||
0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,
|
||||
0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,
|
||||
0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,
|
||||
0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,
|
||||
0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,
|
||||
0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,
|
||||
0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,
|
||||
0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,
|
||||
0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,
|
||||
0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,
|
||||
0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,
|
||||
0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,
|
||||
0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,
|
||||
0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,
|
||||
0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783
|
||||
};
|
||||
static const u32 s4[256] = {
|
||||
0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,
|
||||
0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,
|
||||
0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,
|
||||
0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,
|
||||
0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,
|
||||
0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,
|
||||
0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,
|
||||
0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,
|
||||
0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,
|
||||
0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,
|
||||
0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,
|
||||
0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,
|
||||
0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,
|
||||
0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,
|
||||
0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,
|
||||
0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,
|
||||
0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,
|
||||
0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,
|
||||
0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,
|
||||
0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,
|
||||
0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,
|
||||
0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,
|
||||
0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,
|
||||
0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,
|
||||
0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,
|
||||
0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,
|
||||
0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,
|
||||
0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,
|
||||
0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,
|
||||
0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,
|
||||
0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,
|
||||
0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2
|
||||
};
|
||||
static const u32 s5[256] = {
|
||||
0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,
|
||||
0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,
|
||||
0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,
|
||||
0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,
|
||||
0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,
|
||||
0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,
|
||||
0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,
|
||||
0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,
|
||||
0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,
|
||||
0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,
|
||||
0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,
|
||||
0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,
|
||||
0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,
|
||||
0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,
|
||||
0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,
|
||||
0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,
|
||||
0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,
|
||||
0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,
|
||||
0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,
|
||||
0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,
|
||||
0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,
|
||||
0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,
|
||||
0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,
|
||||
0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,
|
||||
0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,
|
||||
0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,
|
||||
0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,
|
||||
0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,
|
||||
0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,
|
||||
0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,
|
||||
0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,
|
||||
0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4
|
||||
};
|
||||
static const u32 s6[256] = {
|
||||
0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,
|
||||
0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,
|
||||
0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,
|
||||
0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,
|
||||
0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,
|
||||
0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,
|
||||
0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,
|
||||
0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,
|
||||
0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,
|
||||
0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,
|
||||
0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,
|
||||
0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,
|
||||
0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,
|
||||
0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,
|
||||
0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,
|
||||
0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,
|
||||
0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,
|
||||
0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,
|
||||
0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,
|
||||
0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,
|
||||
0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,
|
||||
0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,
|
||||
0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,
|
||||
0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,
|
||||
0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,
|
||||
0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,
|
||||
0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,
|
||||
0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,
|
||||
0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,
|
||||
0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,
|
||||
0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,
|
||||
0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f
|
||||
};
|
||||
static const u32 s7[256] = {
|
||||
0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,
|
||||
0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,
|
||||
0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,
|
||||
0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,
|
||||
0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,
|
||||
0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,
|
||||
0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,
|
||||
0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,
|
||||
0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,
|
||||
0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,
|
||||
0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,
|
||||
0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,
|
||||
0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,
|
||||
0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,
|
||||
0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,
|
||||
0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,
|
||||
0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,
|
||||
0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,
|
||||
0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,
|
||||
0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,
|
||||
0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,
|
||||
0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,
|
||||
0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,
|
||||
0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,
|
||||
0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,
|
||||
0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,
|
||||
0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,
|
||||
0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,
|
||||
0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,
|
||||
0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,
|
||||
0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,
|
||||
0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3
|
||||
};
|
||||
static const u32 s8[256] = {
|
||||
0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,
|
||||
0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,
|
||||
0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,
|
||||
0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,
|
||||
0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,
|
||||
0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,
|
||||
0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,
|
||||
0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,
|
||||
0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,
|
||||
0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,
|
||||
0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,
|
||||
0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,
|
||||
0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,
|
||||
0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,
|
||||
0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,
|
||||
0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,
|
||||
0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,
|
||||
0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,
|
||||
0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,
|
||||
0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,
|
||||
0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,
|
||||
0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,
|
||||
0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,
|
||||
0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,
|
||||
0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,
|
||||
0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,
|
||||
0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,
|
||||
0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,
|
||||
0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,
|
||||
0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,
|
||||
0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,
|
||||
0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e
|
||||
};
|
||||
|
||||
|
||||
#if defined(__GNUC__) && defined(__i386__)
|
||||
static inline u32
|
||||
rol(int n, u32 x)
|
||||
{
|
||||
__asm__("roll %%cl,%0"
|
||||
:"=r" (x)
|
||||
:"0" (x),"c" (n));
|
||||
return x;
|
||||
}
|
||||
#else
|
||||
#define rol(n,x) ( ((x) << (n)) | ((x) >> (32-(n))) )
|
||||
#endif
|
||||
|
||||
#define F1(D,m,r) ( (I = ((m) + (D))), (I=rol((r),I)), \
|
||||
(((s1[I >> 24] ^ s2[(I>>16)&0xff]) - s3[(I>>8)&0xff]) + s4[I&0xff]) )
|
||||
#define F2(D,m,r) ( (I = ((m) ^ (D))), (I=rol((r),I)), \
|
||||
(((s1[I >> 24] - s2[(I>>16)&0xff]) + s3[(I>>8)&0xff]) ^ s4[I&0xff]) )
|
||||
#define F3(D,m,r) ( (I = ((m) - (D))), (I=rol((r),I)), \
|
||||
(((s1[I >> 24] + s2[(I>>16)&0xff]) ^ s3[(I>>8)&0xff]) - s4[I&0xff]) )
|
||||
|
||||
static void
|
||||
do_encrypt_block( CAST5_context *c, byte *outbuf, const byte *inbuf )
|
||||
{
|
||||
u32 l, r, t;
|
||||
u32 I; /* used by the Fx macros */
|
||||
u32 *Km;
|
||||
byte *Kr;
|
||||
|
||||
Km = c->Km;
|
||||
Kr = c->Kr;
|
||||
|
||||
/* (L0,R0) <-- (m1...m64). (Split the plaintext into left and
|
||||
* right 32-bit halves L0 = m1...m32 and R0 = m33...m64.)
|
||||
*/
|
||||
l = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3];
|
||||
r = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7];
|
||||
|
||||
/* (16 rounds) for i from 1 to 16, compute Li and Ri as follows:
|
||||
* Li = Ri-1;
|
||||
* Ri = Li-1 ^ f(Ri-1,Kmi,Kri), where f is defined in Section 2.2
|
||||
* Rounds 1, 4, 7, 10, 13, and 16 use f function Type 1.
|
||||
* Rounds 2, 5, 8, 11, and 14 use f function Type 2.
|
||||
* Rounds 3, 6, 9, 12, and 15 use f function Type 3.
|
||||
*/
|
||||
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 0], Kr[ 0]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[ 1], Kr[ 1]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[ 2], Kr[ 2]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 3], Kr[ 3]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[ 4], Kr[ 4]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[ 5], Kr[ 5]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 6], Kr[ 6]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[ 7], Kr[ 7]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[ 8], Kr[ 8]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 9], Kr[ 9]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[10], Kr[10]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[11], Kr[11]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[12], Kr[12]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[13], Kr[13]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[14], Kr[14]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[15], Kr[15]);
|
||||
|
||||
/* c1...c64 <-- (R16,L16). (Exchange final blocks L16, R16 and
|
||||
* concatenate to form the ciphertext.) */
|
||||
outbuf[0] = (r >> 24) & 0xff;
|
||||
outbuf[1] = (r >> 16) & 0xff;
|
||||
outbuf[2] = (r >> 8) & 0xff;
|
||||
outbuf[3] = r & 0xff;
|
||||
outbuf[4] = (l >> 24) & 0xff;
|
||||
outbuf[5] = (l >> 16) & 0xff;
|
||||
outbuf[6] = (l >> 8) & 0xff;
|
||||
outbuf[7] = l & 0xff;
|
||||
}
|
||||
|
||||
static void
|
||||
encrypt_block (void *context , byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
CAST5_context *c = (CAST5_context *) context;
|
||||
do_encrypt_block (c, outbuf, inbuf);
|
||||
_gcry_burn_stack (20+4*sizeof(void*));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
do_decrypt_block (CAST5_context *c, byte *outbuf, const byte *inbuf )
|
||||
{
|
||||
u32 l, r, t;
|
||||
u32 I;
|
||||
u32 *Km;
|
||||
byte *Kr;
|
||||
|
||||
Km = c->Km;
|
||||
Kr = c->Kr;
|
||||
|
||||
l = inbuf[0] << 24 | inbuf[1] << 16 | inbuf[2] << 8 | inbuf[3];
|
||||
r = inbuf[4] << 24 | inbuf[5] << 16 | inbuf[6] << 8 | inbuf[7];
|
||||
|
||||
t = l; l = r; r = t ^ F1(r, Km[15], Kr[15]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[14], Kr[14]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[13], Kr[13]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[12], Kr[12]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[11], Kr[11]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[10], Kr[10]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 9], Kr[ 9]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[ 8], Kr[ 8]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[ 7], Kr[ 7]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 6], Kr[ 6]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[ 5], Kr[ 5]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[ 4], Kr[ 4]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 3], Kr[ 3]);
|
||||
t = l; l = r; r = t ^ F3(r, Km[ 2], Kr[ 2]);
|
||||
t = l; l = r; r = t ^ F2(r, Km[ 1], Kr[ 1]);
|
||||
t = l; l = r; r = t ^ F1(r, Km[ 0], Kr[ 0]);
|
||||
|
||||
outbuf[0] = (r >> 24) & 0xff;
|
||||
outbuf[1] = (r >> 16) & 0xff;
|
||||
outbuf[2] = (r >> 8) & 0xff;
|
||||
outbuf[3] = r & 0xff;
|
||||
outbuf[4] = (l >> 24) & 0xff;
|
||||
outbuf[5] = (l >> 16) & 0xff;
|
||||
outbuf[6] = (l >> 8) & 0xff;
|
||||
outbuf[7] = l & 0xff;
|
||||
}
|
||||
|
||||
static void
|
||||
decrypt_block (void *context, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
CAST5_context *c = (CAST5_context *) context;
|
||||
do_decrypt_block (c, outbuf, inbuf);
|
||||
_gcry_burn_stack (20+4*sizeof(void*));
|
||||
}
|
||||
|
||||
|
||||
static const char*
|
||||
selftest(void)
|
||||
{
|
||||
CAST5_context c;
|
||||
byte key[16] = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78,
|
||||
0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A };
|
||||
byte plain[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF };
|
||||
byte cipher[8]= { 0x23, 0x8B, 0x4F, 0xE5, 0x84, 0x7E, 0x44, 0xB2 };
|
||||
byte buffer[8];
|
||||
|
||||
cast_setkey( &c, key, 16 );
|
||||
encrypt_block( &c, buffer, plain );
|
||||
if( memcmp( buffer, cipher, 8 ) )
|
||||
return "1";
|
||||
decrypt_block( &c, buffer, buffer );
|
||||
if( memcmp( buffer, plain, 8 ) )
|
||||
return "2";
|
||||
|
||||
#if 0 /* full maintenance test */
|
||||
{
|
||||
int i;
|
||||
byte a0[16] = { 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,
|
||||
0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A };
|
||||
byte b0[16] = { 0x01,0x23,0x45,0x67,0x12,0x34,0x56,0x78,
|
||||
0x23,0x45,0x67,0x89,0x34,0x56,0x78,0x9A };
|
||||
byte a1[16] = { 0xEE,0xA9,0xD0,0xA2,0x49,0xFD,0x3B,0xA6,
|
||||
0xB3,0x43,0x6F,0xB8,0x9D,0x6D,0xCA,0x92 };
|
||||
byte b1[16] = { 0xB2,0xC9,0x5E,0xB0,0x0C,0x31,0xAD,0x71,
|
||||
0x80,0xAC,0x05,0xB8,0xE8,0x3D,0x69,0x6E };
|
||||
|
||||
for(i=0; i < 1000000; i++ ) {
|
||||
cast_setkey( &c, b0, 16 );
|
||||
encrypt_block( &c, a0, a0 );
|
||||
encrypt_block( &c, a0+8, a0+8 );
|
||||
cast_setkey( &c, a0, 16 );
|
||||
encrypt_block( &c, b0, b0 );
|
||||
encrypt_block( &c, b0+8, b0+8 );
|
||||
}
|
||||
if( memcmp( a0, a1, 16 ) || memcmp( b0, b1, 16 ) )
|
||||
return "3";
|
||||
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
key_schedule( u32 *x, u32 *z, u32 *k )
|
||||
{
|
||||
|
||||
#define xi(i) ((x[(i)/4] >> (8*(3-((i)%4)))) & 0xff)
|
||||
#define zi(i) ((z[(i)/4] >> (8*(3-((i)%4)))) & 0xff)
|
||||
|
||||
z[0] = x[0] ^ s5[xi(13)]^s6[xi(15)]^s7[xi(12)]^s8[xi(14)]^s7[xi( 8)];
|
||||
z[1] = x[2] ^ s5[zi( 0)]^s6[zi( 2)]^s7[zi( 1)]^s8[zi( 3)]^s8[xi(10)];
|
||||
z[2] = x[3] ^ s5[zi( 7)]^s6[zi( 6)]^s7[zi( 5)]^s8[zi( 4)]^s5[xi( 9)];
|
||||
z[3] = x[1] ^ s5[zi(10)]^s6[zi( 9)]^s7[zi(11)]^s8[zi( 8)]^s6[xi(11)];
|
||||
k[0] = s5[zi( 8)]^s6[zi( 9)]^s7[zi( 7)]^s8[zi( 6)]^s5[zi( 2)];
|
||||
k[1] = s5[zi(10)]^s6[zi(11)]^s7[zi( 5)]^s8[zi( 4)]^s6[zi( 6)];
|
||||
k[2] = s5[zi(12)]^s6[zi(13)]^s7[zi( 3)]^s8[zi( 2)]^s7[zi( 9)];
|
||||
k[3] = s5[zi(14)]^s6[zi(15)]^s7[zi( 1)]^s8[zi( 0)]^s8[zi(12)];
|
||||
|
||||
x[0] = z[2] ^ s5[zi( 5)]^s6[zi( 7)]^s7[zi( 4)]^s8[zi( 6)]^s7[zi( 0)];
|
||||
x[1] = z[0] ^ s5[xi( 0)]^s6[xi( 2)]^s7[xi( 1)]^s8[xi( 3)]^s8[zi( 2)];
|
||||
x[2] = z[1] ^ s5[xi( 7)]^s6[xi( 6)]^s7[xi( 5)]^s8[xi( 4)]^s5[zi( 1)];
|
||||
x[3] = z[3] ^ s5[xi(10)]^s6[xi( 9)]^s7[xi(11)]^s8[xi( 8)]^s6[zi( 3)];
|
||||
k[4] = s5[xi( 3)]^s6[xi( 2)]^s7[xi(12)]^s8[xi(13)]^s5[xi( 8)];
|
||||
k[5] = s5[xi( 1)]^s6[xi( 0)]^s7[xi(14)]^s8[xi(15)]^s6[xi(13)];
|
||||
k[6] = s5[xi( 7)]^s6[xi( 6)]^s7[xi( 8)]^s8[xi( 9)]^s7[xi( 3)];
|
||||
k[7] = s5[xi( 5)]^s6[xi( 4)]^s7[xi(10)]^s8[xi(11)]^s8[xi( 7)];
|
||||
|
||||
z[0] = x[0] ^ s5[xi(13)]^s6[xi(15)]^s7[xi(12)]^s8[xi(14)]^s7[xi( 8)];
|
||||
z[1] = x[2] ^ s5[zi( 0)]^s6[zi( 2)]^s7[zi( 1)]^s8[zi( 3)]^s8[xi(10)];
|
||||
z[2] = x[3] ^ s5[zi( 7)]^s6[zi( 6)]^s7[zi( 5)]^s8[zi( 4)]^s5[xi( 9)];
|
||||
z[3] = x[1] ^ s5[zi(10)]^s6[zi( 9)]^s7[zi(11)]^s8[zi( 8)]^s6[xi(11)];
|
||||
k[8] = s5[zi( 3)]^s6[zi( 2)]^s7[zi(12)]^s8[zi(13)]^s5[zi( 9)];
|
||||
k[9] = s5[zi( 1)]^s6[zi( 0)]^s7[zi(14)]^s8[zi(15)]^s6[zi(12)];
|
||||
k[10]= s5[zi( 7)]^s6[zi( 6)]^s7[zi( 8)]^s8[zi( 9)]^s7[zi( 2)];
|
||||
k[11]= s5[zi( 5)]^s6[zi( 4)]^s7[zi(10)]^s8[zi(11)]^s8[zi( 6)];
|
||||
|
||||
x[0] = z[2] ^ s5[zi( 5)]^s6[zi( 7)]^s7[zi( 4)]^s8[zi( 6)]^s7[zi( 0)];
|
||||
x[1] = z[0] ^ s5[xi( 0)]^s6[xi( 2)]^s7[xi( 1)]^s8[xi( 3)]^s8[zi( 2)];
|
||||
x[2] = z[1] ^ s5[xi( 7)]^s6[xi( 6)]^s7[xi( 5)]^s8[xi( 4)]^s5[zi( 1)];
|
||||
x[3] = z[3] ^ s5[xi(10)]^s6[xi( 9)]^s7[xi(11)]^s8[xi( 8)]^s6[zi( 3)];
|
||||
k[12]= s5[xi( 8)]^s6[xi( 9)]^s7[xi( 7)]^s8[xi( 6)]^s5[xi( 3)];
|
||||
k[13]= s5[xi(10)]^s6[xi(11)]^s7[xi( 5)]^s8[xi( 4)]^s6[xi( 7)];
|
||||
k[14]= s5[xi(12)]^s6[xi(13)]^s7[xi( 3)]^s8[xi( 2)]^s7[xi( 8)];
|
||||
k[15]= s5[xi(14)]^s6[xi(15)]^s7[xi( 1)]^s8[xi( 0)]^s8[xi(13)];
|
||||
|
||||
#undef xi
|
||||
#undef zi
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
do_cast_setkey( CAST5_context *c, const byte *key, unsigned keylen )
|
||||
{
|
||||
static int initialized;
|
||||
static const char* selftest_failed;
|
||||
int i;
|
||||
u32 x[4];
|
||||
u32 z[4];
|
||||
u32 k[16];
|
||||
|
||||
if( !initialized )
|
||||
{
|
||||
initialized = 1;
|
||||
selftest_failed = selftest();
|
||||
if( selftest_failed )
|
||||
log_error ("CAST5 selftest failed (%s).\n", selftest_failed );
|
||||
}
|
||||
if( selftest_failed )
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
|
||||
if( keylen != 16 )
|
||||
return GPG_ERR_INV_KEYLEN;
|
||||
|
||||
x[0] = key[0] << 24 | key[1] << 16 | key[2] << 8 | key[3];
|
||||
x[1] = key[4] << 24 | key[5] << 16 | key[6] << 8 | key[7];
|
||||
x[2] = key[8] << 24 | key[9] << 16 | key[10] << 8 | key[11];
|
||||
x[3] = key[12] << 24 | key[13] << 16 | key[14] << 8 | key[15];
|
||||
|
||||
key_schedule( x, z, k );
|
||||
for(i=0; i < 16; i++ )
|
||||
c->Km[i] = k[i];
|
||||
key_schedule( x, z, k );
|
||||
for(i=0; i < 16; i++ )
|
||||
c->Kr[i] = k[i] & 0x1f;
|
||||
|
||||
memset(&x,0, sizeof x);
|
||||
memset(&z,0, sizeof z);
|
||||
memset(&k,0, sizeof k);
|
||||
|
||||
#undef xi
|
||||
#undef zi
|
||||
return GPG_ERR_NO_ERROR;
|
||||
}
|
||||
|
||||
static gcry_err_code_t
|
||||
cast_setkey (void *context, const byte *key, unsigned keylen )
|
||||
{
|
||||
CAST5_context *c = (CAST5_context *) context;
|
||||
gcry_err_code_t rc = do_cast_setkey (c, key, keylen);
|
||||
_gcry_burn_stack (96+7*sizeof(void*));
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_cast5 =
|
||||
{
|
||||
"CAST5", NULL, NULL, CAST5_BLOCKSIZE, 128, sizeof (CAST5_context),
|
||||
cast_setkey, encrypt_block, decrypt_block
|
||||
};
|
||||
1932
jni/libgcrypt/cipher/cipher.c
Normal file
1932
jni/libgcrypt/cipher/cipher.c
Normal file
File diff suppressed because it is too large
Load Diff
297
jni/libgcrypt/cipher/crc.c
Normal file
297
jni/libgcrypt/cipher/crc.c
Normal file
@@ -0,0 +1,297 @@
|
||||
/* crc.c - Cyclic redundancy checks.
|
||||
* Copyright (C) 2003 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
|
||||
*
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#include "bithelp.h"
|
||||
|
||||
/* Table of CRCs of all 8-bit messages. Generated by running code
|
||||
from RFC 1952 modified to print out the table. */
|
||||
static u32 crc32_table[256] = {
|
||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
|
||||
0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
||||
0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
|
||||
0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
|
||||
0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
|
||||
0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
|
||||
0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
|
||||
0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
|
||||
0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
|
||||
0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
|
||||
0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
|
||||
0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
|
||||
0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
|
||||
0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
|
||||
0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
|
||||
0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
|
||||
0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
|
||||
0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
|
||||
0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
|
||||
0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
|
||||
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
|
||||
0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
|
||||
0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
|
||||
0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
|
||||
0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
|
||||
0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
|
||||
0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
|
||||
0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
|
||||
0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
|
||||
0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
|
||||
0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
|
||||
0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
|
||||
0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
|
||||
0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
|
||||
0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
|
||||
0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
|
||||
0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
|
||||
0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
|
||||
0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
|
||||
0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
|
||||
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
|
||||
0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
|
||||
0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
|
||||
};
|
||||
|
||||
/*
|
||||
* The following function was extracted from RFC 1952 by Simon
|
||||
* Josefsson, for the Shishi project, and modified to be compatible
|
||||
* with the modified CRC-32 used by RFC 1510, and subsequently
|
||||
* modified for GNU Libgcrypt to allow it to be used for calculating
|
||||
* both unmodified CRC-32 and modified CRC-32 values. Original
|
||||
* copyright and notice from the document follows:
|
||||
*
|
||||
* Copyright (c) 1996 L. Peter Deutsch
|
||||
*
|
||||
* Permission is granted to copy and distribute this document for
|
||||
* any purpose and without charge, including translations into
|
||||
* other languages and incorporation into compilations, provided
|
||||
* that the copyright notice and this notice are preserved, and
|
||||
* that any substantive changes or deletions from the original are
|
||||
* clearly marked.
|
||||
*
|
||||
* The copyright on RFCs, and consequently the function below, are
|
||||
* supposedly also retroactively claimed by the Internet Society
|
||||
* (according to rfc-editor@rfc-editor.org), with the following
|
||||
* copyright notice:
|
||||
*
|
||||
* Copyright (C) The Internet Society. All Rights Reserved.
|
||||
*
|
||||
* This document and translations of it may be copied and furnished
|
||||
* to others, and derivative works that comment on or otherwise
|
||||
* explain it or assist in its implementation may be prepared,
|
||||
* copied, published and distributed, in whole or in part, without
|
||||
* restriction of any kind, provided that the above copyright
|
||||
* notice and this paragraph are included on all such copies and
|
||||
* derivative works. However, this document itself may not be
|
||||
* modified in any way, such as by removing the copyright notice or
|
||||
* references to the Internet Society or other Internet
|
||||
* organizations, except as needed for the purpose of developing
|
||||
* Internet standards in which case the procedures for copyrights
|
||||
* defined in the Internet Standards process must be followed, or
|
||||
* as required to translate it into languages other than English.
|
||||
*
|
||||
* The limited permissions granted above are perpetual and will not be
|
||||
* revoked by the Internet Society or its successors or assigns.
|
||||
*
|
||||
* This document and the information contained herein is provided
|
||||
* on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
|
||||
* ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE
|
||||
* OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
|
||||
* PARTICULAR PURPOSE.
|
||||
*
|
||||
*/
|
||||
static u32
|
||||
update_crc32 (u32 crc, const void *buf_arg, size_t len)
|
||||
{
|
||||
const char *buf = buf_arg;
|
||||
size_t n;
|
||||
|
||||
for (n = 0; n < len; n++)
|
||||
crc = crc32_table[(crc ^ buf[n]) & 0xff] ^ (crc >> 8);
|
||||
|
||||
return crc;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 CRC;
|
||||
byte buf[4];
|
||||
}
|
||||
CRC_CONTEXT;
|
||||
|
||||
/* CRC32 */
|
||||
|
||||
static void
|
||||
crc32_init (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
ctx->CRC = 0 ^ 0xffffffffL;
|
||||
}
|
||||
|
||||
static void
|
||||
crc32_write (void *context, const void *inbuf, size_t inlen)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
if (!inbuf)
|
||||
return;
|
||||
ctx->CRC = update_crc32 (ctx->CRC, inbuf, inlen);
|
||||
}
|
||||
|
||||
static byte *
|
||||
crc32_read (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
return ctx->buf;
|
||||
}
|
||||
|
||||
static void
|
||||
crc32_final (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
ctx->CRC ^= 0xffffffffL;
|
||||
ctx->buf[0] = (ctx->CRC >> 24) & 0xFF;
|
||||
ctx->buf[1] = (ctx->CRC >> 16) & 0xFF;
|
||||
ctx->buf[2] = (ctx->CRC >> 8) & 0xFF;
|
||||
ctx->buf[3] = (ctx->CRC ) & 0xFF;
|
||||
}
|
||||
|
||||
/* CRC32 a'la RFC 1510 */
|
||||
static void
|
||||
crc32rfc1510_init (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
ctx->CRC = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
crc32rfc1510_final (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
ctx->buf[0] = (ctx->CRC >> 24) & 0xFF;
|
||||
ctx->buf[1] = (ctx->CRC >> 16) & 0xFF;
|
||||
ctx->buf[2] = (ctx->CRC >> 8) & 0xFF;
|
||||
ctx->buf[3] = (ctx->CRC ) & 0xFF;
|
||||
}
|
||||
|
||||
/* CRC24 a'la RFC 2440 */
|
||||
/*
|
||||
* The following CRC 24 routines are adapted from RFC 2440, which has
|
||||
* the following copyright notice:
|
||||
*
|
||||
* Copyright (C) The Internet Society (1998). All Rights Reserved.
|
||||
*
|
||||
* This document and translations of it may be copied and furnished
|
||||
* to others, and derivative works that comment on or otherwise
|
||||
* explain it or assist in its implementation may be prepared,
|
||||
* copied, published and distributed, in whole or in part, without
|
||||
* restriction of any kind, provided that the above copyright notice
|
||||
* and this paragraph are included on all such copies and derivative
|
||||
* works. However, this document itself may not be modified in any
|
||||
* way, such as by removing the copyright notice or references to
|
||||
* the Internet Society or other Internet organizations, except as
|
||||
* needed for the purpose of developing Internet standards in which
|
||||
* case the procedures for copyrights defined in the Internet
|
||||
* Standards process must be followed, or as required to translate
|
||||
* it into languages other than English.
|
||||
*
|
||||
* The limited permissions granted above are perpetual and will not be
|
||||
* revoked by the Internet Society or its successors or assigns.
|
||||
*
|
||||
* This document and the information contained herein is provided on
|
||||
* an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
|
||||
* ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE
|
||||
* OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
|
||||
* PURPOSE.
|
||||
*/
|
||||
|
||||
#define CRC24_INIT 0xb704ceL
|
||||
#define CRC24_POLY 0x1864cfbL
|
||||
|
||||
static void
|
||||
crc24rfc2440_init (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
ctx->CRC = CRC24_INIT;
|
||||
}
|
||||
|
||||
static void
|
||||
crc24rfc2440_write (void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
int i;
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
|
||||
if (!inbuf)
|
||||
return;
|
||||
|
||||
while (inlen--) {
|
||||
ctx->CRC ^= (*inbuf++) << 16;
|
||||
for (i = 0; i < 8; i++) {
|
||||
ctx->CRC <<= 1;
|
||||
if (ctx->CRC & 0x1000000)
|
||||
ctx->CRC ^= CRC24_POLY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
crc24rfc2440_final (void *context)
|
||||
{
|
||||
CRC_CONTEXT *ctx = (CRC_CONTEXT *) context;
|
||||
ctx->buf[0] = (ctx->CRC >> 16) & 0xFF;
|
||||
ctx->buf[1] = (ctx->CRC >> 8) & 0xFF;
|
||||
ctx->buf[2] = (ctx->CRC ) & 0xFF;
|
||||
}
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_crc32 =
|
||||
{
|
||||
"CRC32", NULL, 0, NULL, 4,
|
||||
crc32_init, crc32_write, crc32_final, crc32_read,
|
||||
sizeof (CRC_CONTEXT)
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_crc32_rfc1510 =
|
||||
{
|
||||
"CRC32RFC1510", NULL, 0, NULL, 4,
|
||||
crc32rfc1510_init, crc32_write,
|
||||
crc32rfc1510_final, crc32_read,
|
||||
sizeof (CRC_CONTEXT)
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_crc24_rfc2440 =
|
||||
{
|
||||
"CRC24RFC2440", NULL, 0, NULL, 3,
|
||||
crc24rfc2440_init, crc24rfc2440_write,
|
||||
crc24rfc2440_final, crc32_read,
|
||||
sizeof (CRC_CONTEXT)
|
||||
};
|
||||
1196
jni/libgcrypt/cipher/des.c
Normal file
1196
jni/libgcrypt/cipher/des.c
Normal file
File diff suppressed because it is too large
Load Diff
1181
jni/libgcrypt/cipher/dsa.c
Normal file
1181
jni/libgcrypt/cipher/dsa.c
Normal file
File diff suppressed because it is too large
Load Diff
1390
jni/libgcrypt/cipher/ecc.c
Normal file
1390
jni/libgcrypt/cipher/ecc.c
Normal file
File diff suppressed because it is too large
Load Diff
846
jni/libgcrypt/cipher/elgamal.c
Normal file
846
jni/libgcrypt/cipher/elgamal.c
Normal file
@@ -0,0 +1,846 @@
|
||||
/* Elgamal.c - Elgamal Public Key encryption
|
||||
* Copyright (C) 1998, 2000, 2001, 2002, 2003,
|
||||
* 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* For a description of the algorithm, see:
|
||||
* Bruce Schneier: Applied Cryptography. John Wiley & Sons, 1996.
|
||||
* ISBN 0-471-11709-9. Pages 476 ff.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "g10lib.h"
|
||||
#include "mpi.h"
|
||||
#include "cipher.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
gcry_mpi_t p; /* prime */
|
||||
gcry_mpi_t g; /* group generator */
|
||||
gcry_mpi_t y; /* g^x mod p */
|
||||
} ELG_public_key;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
gcry_mpi_t p; /* prime */
|
||||
gcry_mpi_t g; /* group generator */
|
||||
gcry_mpi_t y; /* g^x mod p */
|
||||
gcry_mpi_t x; /* secret exponent */
|
||||
} ELG_secret_key;
|
||||
|
||||
|
||||
static int test_keys (ELG_secret_key *sk, unsigned int nbits, int nodie);
|
||||
static gcry_mpi_t gen_k (gcry_mpi_t p, int small_k);
|
||||
static void generate (ELG_secret_key *sk, unsigned nbits, gcry_mpi_t **factors);
|
||||
static int check_secret_key (ELG_secret_key *sk);
|
||||
static void do_encrypt (gcry_mpi_t a, gcry_mpi_t b, gcry_mpi_t input,
|
||||
ELG_public_key *pkey);
|
||||
static void decrypt (gcry_mpi_t output, gcry_mpi_t a, gcry_mpi_t b,
|
||||
ELG_secret_key *skey);
|
||||
static void sign (gcry_mpi_t a, gcry_mpi_t b, gcry_mpi_t input,
|
||||
ELG_secret_key *skey);
|
||||
static int verify (gcry_mpi_t a, gcry_mpi_t b, gcry_mpi_t input,
|
||||
ELG_public_key *pkey);
|
||||
|
||||
|
||||
static void (*progress_cb) (void *, const char *, int, int, int);
|
||||
static void *progress_cb_data;
|
||||
|
||||
void
|
||||
_gcry_register_pk_elg_progress (void (*cb) (void *, const char *,
|
||||
int, int, int),
|
||||
void *cb_data)
|
||||
{
|
||||
progress_cb = cb;
|
||||
progress_cb_data = cb_data;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
progress (int c)
|
||||
{
|
||||
if (progress_cb)
|
||||
progress_cb (progress_cb_data, "pk_elg", c, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Michael Wiener's table on subgroup sizes to match field sizes.
|
||||
* (floating around somewhere, probably based on the paper from
|
||||
* Eurocrypt 96, page 332)
|
||||
*/
|
||||
static unsigned int
|
||||
wiener_map( unsigned int n )
|
||||
{
|
||||
static struct { unsigned int p_n, q_n; } t[] =
|
||||
{ /* p q attack cost */
|
||||
{ 512, 119 }, /* 9 x 10^17 */
|
||||
{ 768, 145 }, /* 6 x 10^21 */
|
||||
{ 1024, 165 }, /* 7 x 10^24 */
|
||||
{ 1280, 183 }, /* 3 x 10^27 */
|
||||
{ 1536, 198 }, /* 7 x 10^29 */
|
||||
{ 1792, 212 }, /* 9 x 10^31 */
|
||||
{ 2048, 225 }, /* 8 x 10^33 */
|
||||
{ 2304, 237 }, /* 5 x 10^35 */
|
||||
{ 2560, 249 }, /* 3 x 10^37 */
|
||||
{ 2816, 259 }, /* 1 x 10^39 */
|
||||
{ 3072, 269 }, /* 3 x 10^40 */
|
||||
{ 3328, 279 }, /* 8 x 10^41 */
|
||||
{ 3584, 288 }, /* 2 x 10^43 */
|
||||
{ 3840, 296 }, /* 4 x 10^44 */
|
||||
{ 4096, 305 }, /* 7 x 10^45 */
|
||||
{ 4352, 313 }, /* 1 x 10^47 */
|
||||
{ 4608, 320 }, /* 2 x 10^48 */
|
||||
{ 4864, 328 }, /* 2 x 10^49 */
|
||||
{ 5120, 335 }, /* 3 x 10^50 */
|
||||
{ 0, 0 }
|
||||
};
|
||||
int i;
|
||||
|
||||
for(i=0; t[i].p_n; i++ )
|
||||
{
|
||||
if( n <= t[i].p_n )
|
||||
return t[i].q_n;
|
||||
}
|
||||
/* Not in table - use an arbitrary high number. */
|
||||
return n / 8 + 200;
|
||||
}
|
||||
|
||||
static int
|
||||
test_keys ( ELG_secret_key *sk, unsigned int nbits, int nodie )
|
||||
{
|
||||
ELG_public_key pk;
|
||||
gcry_mpi_t test = gcry_mpi_new ( 0 );
|
||||
gcry_mpi_t out1_a = gcry_mpi_new ( nbits );
|
||||
gcry_mpi_t out1_b = gcry_mpi_new ( nbits );
|
||||
gcry_mpi_t out2 = gcry_mpi_new ( nbits );
|
||||
int failed = 0;
|
||||
|
||||
pk.p = sk->p;
|
||||
pk.g = sk->g;
|
||||
pk.y = sk->y;
|
||||
|
||||
gcry_mpi_randomize ( test, nbits, GCRY_WEAK_RANDOM );
|
||||
|
||||
do_encrypt ( out1_a, out1_b, test, &pk );
|
||||
decrypt ( out2, out1_a, out1_b, sk );
|
||||
if ( mpi_cmp( test, out2 ) )
|
||||
failed |= 1;
|
||||
|
||||
sign ( out1_a, out1_b, test, sk );
|
||||
if ( !verify( out1_a, out1_b, test, &pk ) )
|
||||
failed |= 2;
|
||||
|
||||
gcry_mpi_release ( test );
|
||||
gcry_mpi_release ( out1_a );
|
||||
gcry_mpi_release ( out1_b );
|
||||
gcry_mpi_release ( out2 );
|
||||
|
||||
if (failed && !nodie)
|
||||
log_fatal ("Elgamal test key for %s %s failed\n",
|
||||
(failed & 1)? "encrypt+decrypt":"",
|
||||
(failed & 2)? "sign+verify":"");
|
||||
if (failed && DBG_CIPHER)
|
||||
log_debug ("Elgamal test key for %s %s failed\n",
|
||||
(failed & 1)? "encrypt+decrypt":"",
|
||||
(failed & 2)? "sign+verify":"");
|
||||
|
||||
return failed;
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Generate a random secret exponent k from prime p, so that k is
|
||||
* relatively prime to p-1. With SMALL_K set, k will be selected for
|
||||
* better encryption performance - this must never be used signing!
|
||||
*/
|
||||
static gcry_mpi_t
|
||||
gen_k( gcry_mpi_t p, int small_k )
|
||||
{
|
||||
gcry_mpi_t k = mpi_alloc_secure( 0 );
|
||||
gcry_mpi_t temp = mpi_alloc( mpi_get_nlimbs(p) );
|
||||
gcry_mpi_t p_1 = mpi_copy(p);
|
||||
unsigned int orig_nbits = mpi_get_nbits(p);
|
||||
unsigned int nbits, nbytes;
|
||||
char *rndbuf = NULL;
|
||||
|
||||
if (small_k)
|
||||
{
|
||||
/* Using a k much lesser than p is sufficient for encryption and
|
||||
* it greatly improves the encryption performance. We use
|
||||
* Wiener's table and add a large safety margin. */
|
||||
nbits = wiener_map( orig_nbits ) * 3 / 2;
|
||||
if( nbits >= orig_nbits )
|
||||
BUG();
|
||||
}
|
||||
else
|
||||
nbits = orig_nbits;
|
||||
|
||||
|
||||
nbytes = (nbits+7)/8;
|
||||
if( DBG_CIPHER )
|
||||
log_debug("choosing a random k ");
|
||||
mpi_sub_ui( p_1, p, 1);
|
||||
for(;;)
|
||||
{
|
||||
if( !rndbuf || nbits < 32 )
|
||||
{
|
||||
gcry_free(rndbuf);
|
||||
rndbuf = gcry_random_bytes_secure( nbytes, GCRY_STRONG_RANDOM );
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Change only some of the higher bits. We could improve
|
||||
this by directly requesting more memory at the first call
|
||||
to get_random_bytes() and use this the here maybe it is
|
||||
easier to do this directly in random.c Anyway, it is
|
||||
highly inlikely that we will ever reach this code. */
|
||||
char *pp = gcry_random_bytes_secure( 4, GCRY_STRONG_RANDOM );
|
||||
memcpy( rndbuf, pp, 4 );
|
||||
gcry_free(pp);
|
||||
}
|
||||
_gcry_mpi_set_buffer( k, rndbuf, nbytes, 0 );
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if( !(mpi_cmp( k, p_1 ) < 0) ) /* check: k < (p-1) */
|
||||
{
|
||||
if( DBG_CIPHER )
|
||||
progress('+');
|
||||
break; /* no */
|
||||
}
|
||||
if( !(mpi_cmp_ui( k, 0 ) > 0) ) /* check: k > 0 */
|
||||
{
|
||||
if( DBG_CIPHER )
|
||||
progress('-');
|
||||
break; /* no */
|
||||
}
|
||||
if (gcry_mpi_gcd( temp, k, p_1 ))
|
||||
goto found; /* okay, k is relative prime to (p-1) */
|
||||
mpi_add_ui( k, k, 1 );
|
||||
if( DBG_CIPHER )
|
||||
progress('.');
|
||||
}
|
||||
}
|
||||
found:
|
||||
gcry_free(rndbuf);
|
||||
if( DBG_CIPHER )
|
||||
progress('\n');
|
||||
mpi_free(p_1);
|
||||
mpi_free(temp);
|
||||
|
||||
return k;
|
||||
}
|
||||
|
||||
/****************
|
||||
* Generate a key pair with a key of size NBITS
|
||||
* Returns: 2 structures filled with all needed values
|
||||
* and an array with n-1 factors of (p-1)
|
||||
*/
|
||||
static void
|
||||
generate ( ELG_secret_key *sk, unsigned int nbits, gcry_mpi_t **ret_factors )
|
||||
{
|
||||
gcry_mpi_t p; /* the prime */
|
||||
gcry_mpi_t p_min1;
|
||||
gcry_mpi_t g;
|
||||
gcry_mpi_t x; /* the secret exponent */
|
||||
gcry_mpi_t y;
|
||||
unsigned int qbits;
|
||||
unsigned int xbits;
|
||||
byte *rndbuf;
|
||||
|
||||
p_min1 = gcry_mpi_new ( nbits );
|
||||
qbits = wiener_map( nbits );
|
||||
if( qbits & 1 ) /* better have a even one */
|
||||
qbits++;
|
||||
g = mpi_alloc(1);
|
||||
p = _gcry_generate_elg_prime( 0, nbits, qbits, g, ret_factors );
|
||||
mpi_sub_ui(p_min1, p, 1);
|
||||
|
||||
|
||||
/* Select a random number which has these properties:
|
||||
* 0 < x < p-1
|
||||
* This must be a very good random number because this is the
|
||||
* secret part. The prime is public and may be shared anyway,
|
||||
* so a random generator level of 1 is used for the prime.
|
||||
*
|
||||
* I don't see a reason to have a x of about the same size
|
||||
* as the p. It should be sufficient to have one about the size
|
||||
* of q or the later used k plus a large safety margin. Decryption
|
||||
* will be much faster with such an x.
|
||||
*/
|
||||
xbits = qbits * 3 / 2;
|
||||
if( xbits >= nbits )
|
||||
BUG();
|
||||
x = gcry_mpi_snew ( xbits );
|
||||
if( DBG_CIPHER )
|
||||
log_debug("choosing a random x of size %u", xbits );
|
||||
rndbuf = NULL;
|
||||
do
|
||||
{
|
||||
if( DBG_CIPHER )
|
||||
progress('.');
|
||||
if( rndbuf )
|
||||
{ /* Change only some of the higher bits */
|
||||
if( xbits < 16 ) /* should never happen ... */
|
||||
{
|
||||
gcry_free(rndbuf);
|
||||
rndbuf = gcry_random_bytes_secure( (xbits+7)/8,
|
||||
GCRY_VERY_STRONG_RANDOM );
|
||||
}
|
||||
else
|
||||
{
|
||||
char *r = gcry_random_bytes_secure( 2,
|
||||
GCRY_VERY_STRONG_RANDOM );
|
||||
memcpy(rndbuf, r, 2 );
|
||||
gcry_free(r);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
rndbuf = gcry_random_bytes_secure( (xbits+7)/8,
|
||||
GCRY_VERY_STRONG_RANDOM );
|
||||
}
|
||||
_gcry_mpi_set_buffer( x, rndbuf, (xbits+7)/8, 0 );
|
||||
mpi_clear_highbit( x, xbits+1 );
|
||||
}
|
||||
while( !( mpi_cmp_ui( x, 0 )>0 && mpi_cmp( x, p_min1 )<0 ) );
|
||||
gcry_free(rndbuf);
|
||||
|
||||
y = gcry_mpi_new (nbits);
|
||||
gcry_mpi_powm( y, g, x, p );
|
||||
|
||||
if( DBG_CIPHER )
|
||||
{
|
||||
progress('\n');
|
||||
log_mpidump("elg p= ", p );
|
||||
log_mpidump("elg g= ", g );
|
||||
log_mpidump("elg y= ", y );
|
||||
log_mpidump("elg x= ", x );
|
||||
}
|
||||
|
||||
/* Copy the stuff to the key structures */
|
||||
sk->p = p;
|
||||
sk->g = g;
|
||||
sk->y = y;
|
||||
sk->x = x;
|
||||
|
||||
gcry_mpi_release ( p_min1 );
|
||||
|
||||
/* Now we can test our keys (this should never fail!) */
|
||||
test_keys ( sk, nbits - 64, 0 );
|
||||
}
|
||||
|
||||
|
||||
/* Generate a key pair with a key of size NBITS not using a random
|
||||
value for the secret key but the one given as X. This is useful to
|
||||
implement a passphrase based decryption for a public key based
|
||||
encryption. It has appliactions in backup systems.
|
||||
|
||||
Returns: A structure filled with all needed values and an array
|
||||
with n-1 factors of (p-1). */
|
||||
static gcry_err_code_t
|
||||
generate_using_x (ELG_secret_key *sk, unsigned int nbits, gcry_mpi_t x,
|
||||
gcry_mpi_t **ret_factors )
|
||||
{
|
||||
gcry_mpi_t p; /* The prime. */
|
||||
gcry_mpi_t p_min1; /* The prime minus 1. */
|
||||
gcry_mpi_t g; /* The generator. */
|
||||
gcry_mpi_t y; /* g^x mod p. */
|
||||
unsigned int qbits;
|
||||
unsigned int xbits;
|
||||
|
||||
sk->p = NULL;
|
||||
sk->g = NULL;
|
||||
sk->y = NULL;
|
||||
sk->x = NULL;
|
||||
|
||||
/* Do a quick check to see whether X is suitable. */
|
||||
xbits = mpi_get_nbits (x);
|
||||
if ( xbits < 64 || xbits >= nbits )
|
||||
return GPG_ERR_INV_VALUE;
|
||||
|
||||
p_min1 = gcry_mpi_new ( nbits );
|
||||
qbits = wiener_map ( nbits );
|
||||
if ( (qbits & 1) ) /* Better have an even one. */
|
||||
qbits++;
|
||||
g = mpi_alloc (1);
|
||||
p = _gcry_generate_elg_prime ( 0, nbits, qbits, g, ret_factors );
|
||||
mpi_sub_ui (p_min1, p, 1);
|
||||
|
||||
if (DBG_CIPHER)
|
||||
log_debug ("using a supplied x of size %u", xbits );
|
||||
if ( !(mpi_cmp_ui ( x, 0 ) > 0 && mpi_cmp ( x, p_min1 ) <0 ) )
|
||||
{
|
||||
gcry_mpi_release ( p_min1 );
|
||||
gcry_mpi_release ( p );
|
||||
gcry_mpi_release ( g );
|
||||
return GPG_ERR_INV_VALUE;
|
||||
}
|
||||
|
||||
y = gcry_mpi_new (nbits);
|
||||
gcry_mpi_powm ( y, g, x, p );
|
||||
|
||||
if ( DBG_CIPHER )
|
||||
{
|
||||
progress ('\n');
|
||||
log_mpidump ("elg p= ", p );
|
||||
log_mpidump ("elg g= ", g );
|
||||
log_mpidump ("elg y= ", y );
|
||||
log_mpidump ("elg x= ", x );
|
||||
}
|
||||
|
||||
/* Copy the stuff to the key structures */
|
||||
sk->p = p;
|
||||
sk->g = g;
|
||||
sk->y = y;
|
||||
sk->x = gcry_mpi_copy (x);
|
||||
|
||||
gcry_mpi_release ( p_min1 );
|
||||
|
||||
/* Now we can test our keys. */
|
||||
if ( test_keys ( sk, nbits - 64, 1 ) )
|
||||
{
|
||||
gcry_mpi_release ( sk->p ); sk->p = NULL;
|
||||
gcry_mpi_release ( sk->g ); sk->g = NULL;
|
||||
gcry_mpi_release ( sk->y ); sk->y = NULL;
|
||||
gcry_mpi_release ( sk->x ); sk->x = NULL;
|
||||
return GPG_ERR_BAD_SECKEY;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Test whether the secret key is valid.
|
||||
* Returns: if this is a valid key.
|
||||
*/
|
||||
static int
|
||||
check_secret_key( ELG_secret_key *sk )
|
||||
{
|
||||
int rc;
|
||||
gcry_mpi_t y = mpi_alloc( mpi_get_nlimbs(sk->y) );
|
||||
|
||||
gcry_mpi_powm( y, sk->g, sk->x, sk->p );
|
||||
rc = !mpi_cmp( y, sk->y );
|
||||
mpi_free( y );
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
do_encrypt(gcry_mpi_t a, gcry_mpi_t b, gcry_mpi_t input, ELG_public_key *pkey )
|
||||
{
|
||||
gcry_mpi_t k;
|
||||
|
||||
/* Note: maybe we should change the interface, so that it
|
||||
* is possible to check that input is < p and return an
|
||||
* error code.
|
||||
*/
|
||||
|
||||
k = gen_k( pkey->p, 1 );
|
||||
gcry_mpi_powm( a, pkey->g, k, pkey->p );
|
||||
/* b = (y^k * input) mod p
|
||||
* = ((y^k mod p) * (input mod p)) mod p
|
||||
* and because input is < p
|
||||
* = ((y^k mod p) * input) mod p
|
||||
*/
|
||||
gcry_mpi_powm( b, pkey->y, k, pkey->p );
|
||||
gcry_mpi_mulm( b, b, input, pkey->p );
|
||||
#if 0
|
||||
if( DBG_CIPHER )
|
||||
{
|
||||
log_mpidump("elg encrypted y= ", pkey->y);
|
||||
log_mpidump("elg encrypted p= ", pkey->p);
|
||||
log_mpidump("elg encrypted k= ", k);
|
||||
log_mpidump("elg encrypted M= ", input);
|
||||
log_mpidump("elg encrypted a= ", a);
|
||||
log_mpidump("elg encrypted b= ", b);
|
||||
}
|
||||
#endif
|
||||
mpi_free(k);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void
|
||||
decrypt(gcry_mpi_t output, gcry_mpi_t a, gcry_mpi_t b, ELG_secret_key *skey )
|
||||
{
|
||||
gcry_mpi_t t1 = mpi_alloc_secure( mpi_get_nlimbs( skey->p ) );
|
||||
|
||||
/* output = b/(a^x) mod p */
|
||||
gcry_mpi_powm( t1, a, skey->x, skey->p );
|
||||
mpi_invm( t1, t1, skey->p );
|
||||
mpi_mulm( output, b, t1, skey->p );
|
||||
#if 0
|
||||
if( DBG_CIPHER )
|
||||
{
|
||||
log_mpidump("elg decrypted x= ", skey->x);
|
||||
log_mpidump("elg decrypted p= ", skey->p);
|
||||
log_mpidump("elg decrypted a= ", a);
|
||||
log_mpidump("elg decrypted b= ", b);
|
||||
log_mpidump("elg decrypted M= ", output);
|
||||
}
|
||||
#endif
|
||||
mpi_free(t1);
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Make an Elgamal signature out of INPUT
|
||||
*/
|
||||
|
||||
static void
|
||||
sign(gcry_mpi_t a, gcry_mpi_t b, gcry_mpi_t input, ELG_secret_key *skey )
|
||||
{
|
||||
gcry_mpi_t k;
|
||||
gcry_mpi_t t = mpi_alloc( mpi_get_nlimbs(a) );
|
||||
gcry_mpi_t inv = mpi_alloc( mpi_get_nlimbs(a) );
|
||||
gcry_mpi_t p_1 = mpi_copy(skey->p);
|
||||
|
||||
/*
|
||||
* b = (t * inv) mod (p-1)
|
||||
* b = (t * inv(k,(p-1),(p-1)) mod (p-1)
|
||||
* b = (((M-x*a) mod (p-1)) * inv(k,(p-1),(p-1))) mod (p-1)
|
||||
*
|
||||
*/
|
||||
mpi_sub_ui(p_1, p_1, 1);
|
||||
k = gen_k( skey->p, 0 /* no small K ! */ );
|
||||
gcry_mpi_powm( a, skey->g, k, skey->p );
|
||||
mpi_mul(t, skey->x, a );
|
||||
mpi_subm(t, input, t, p_1 );
|
||||
mpi_invm(inv, k, p_1 );
|
||||
mpi_mulm(b, t, inv, p_1 );
|
||||
|
||||
#if 0
|
||||
if( DBG_CIPHER )
|
||||
{
|
||||
log_mpidump("elg sign p= ", skey->p);
|
||||
log_mpidump("elg sign g= ", skey->g);
|
||||
log_mpidump("elg sign y= ", skey->y);
|
||||
log_mpidump("elg sign x= ", skey->x);
|
||||
log_mpidump("elg sign k= ", k);
|
||||
log_mpidump("elg sign M= ", input);
|
||||
log_mpidump("elg sign a= ", a);
|
||||
log_mpidump("elg sign b= ", b);
|
||||
}
|
||||
#endif
|
||||
mpi_free(k);
|
||||
mpi_free(t);
|
||||
mpi_free(inv);
|
||||
mpi_free(p_1);
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Returns true if the signature composed of A and B is valid.
|
||||
*/
|
||||
static int
|
||||
verify(gcry_mpi_t a, gcry_mpi_t b, gcry_mpi_t input, ELG_public_key *pkey )
|
||||
{
|
||||
int rc;
|
||||
gcry_mpi_t t1;
|
||||
gcry_mpi_t t2;
|
||||
gcry_mpi_t base[4];
|
||||
gcry_mpi_t ex[4];
|
||||
|
||||
if( !(mpi_cmp_ui( a, 0 ) > 0 && mpi_cmp( a, pkey->p ) < 0) )
|
||||
return 0; /* assertion 0 < a < p failed */
|
||||
|
||||
t1 = mpi_alloc( mpi_get_nlimbs(a) );
|
||||
t2 = mpi_alloc( mpi_get_nlimbs(a) );
|
||||
|
||||
#if 0
|
||||
/* t1 = (y^a mod p) * (a^b mod p) mod p */
|
||||
gcry_mpi_powm( t1, pkey->y, a, pkey->p );
|
||||
gcry_mpi_powm( t2, a, b, pkey->p );
|
||||
mpi_mulm( t1, t1, t2, pkey->p );
|
||||
|
||||
/* t2 = g ^ input mod p */
|
||||
gcry_mpi_powm( t2, pkey->g, input, pkey->p );
|
||||
|
||||
rc = !mpi_cmp( t1, t2 );
|
||||
#elif 0
|
||||
/* t1 = (y^a mod p) * (a^b mod p) mod p */
|
||||
base[0] = pkey->y; ex[0] = a;
|
||||
base[1] = a; ex[1] = b;
|
||||
base[2] = NULL; ex[2] = NULL;
|
||||
mpi_mulpowm( t1, base, ex, pkey->p );
|
||||
|
||||
/* t2 = g ^ input mod p */
|
||||
gcry_mpi_powm( t2, pkey->g, input, pkey->p );
|
||||
|
||||
rc = !mpi_cmp( t1, t2 );
|
||||
#else
|
||||
/* t1 = g ^ - input * y ^ a * a ^ b mod p */
|
||||
mpi_invm(t2, pkey->g, pkey->p );
|
||||
base[0] = t2 ; ex[0] = input;
|
||||
base[1] = pkey->y; ex[1] = a;
|
||||
base[2] = a; ex[2] = b;
|
||||
base[3] = NULL; ex[3] = NULL;
|
||||
mpi_mulpowm( t1, base, ex, pkey->p );
|
||||
rc = !mpi_cmp_ui( t1, 1 );
|
||||
|
||||
#endif
|
||||
|
||||
mpi_free(t1);
|
||||
mpi_free(t2);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
************** interface ******************
|
||||
*********************************************/
|
||||
|
||||
static gpg_err_code_t
|
||||
elg_generate_ext (int algo, unsigned int nbits, unsigned long evalue,
|
||||
const gcry_sexp_t genparms,
|
||||
gcry_mpi_t *skey, gcry_mpi_t **retfactors,
|
||||
gcry_sexp_t *r_extrainfo)
|
||||
{
|
||||
gpg_err_code_t ec;
|
||||
ELG_secret_key sk;
|
||||
gcry_mpi_t xvalue = NULL;
|
||||
gcry_sexp_t l1;
|
||||
|
||||
(void)algo;
|
||||
(void)evalue;
|
||||
(void)r_extrainfo;
|
||||
|
||||
if (genparms)
|
||||
{
|
||||
/* Parse the optional xvalue element. */
|
||||
l1 = gcry_sexp_find_token (genparms, "xvalue", 0);
|
||||
if (l1)
|
||||
{
|
||||
xvalue = gcry_sexp_nth_mpi (l1, 1, 0);
|
||||
gcry_sexp_release (l1);
|
||||
if (!xvalue)
|
||||
return GPG_ERR_BAD_MPI;
|
||||
}
|
||||
}
|
||||
|
||||
if (xvalue)
|
||||
ec = generate_using_x (&sk, nbits, xvalue, retfactors);
|
||||
else
|
||||
{
|
||||
generate (&sk, nbits, retfactors);
|
||||
ec = 0;
|
||||
}
|
||||
|
||||
skey[0] = sk.p;
|
||||
skey[1] = sk.g;
|
||||
skey[2] = sk.y;
|
||||
skey[3] = sk.x;
|
||||
|
||||
return ec;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
elg_generate (int algo, unsigned int nbits, unsigned long evalue,
|
||||
gcry_mpi_t *skey, gcry_mpi_t **retfactors)
|
||||
{
|
||||
ELG_secret_key sk;
|
||||
|
||||
(void)algo;
|
||||
(void)evalue;
|
||||
|
||||
generate (&sk, nbits, retfactors);
|
||||
skey[0] = sk.p;
|
||||
skey[1] = sk.g;
|
||||
skey[2] = sk.y;
|
||||
skey[3] = sk.x;
|
||||
|
||||
return GPG_ERR_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
elg_check_secret_key (int algo, gcry_mpi_t *skey)
|
||||
{
|
||||
gcry_err_code_t err = GPG_ERR_NO_ERROR;
|
||||
ELG_secret_key sk;
|
||||
|
||||
(void)algo;
|
||||
|
||||
if ((! skey[0]) || (! skey[1]) || (! skey[2]) || (! skey[3]))
|
||||
err = GPG_ERR_BAD_MPI;
|
||||
else
|
||||
{
|
||||
sk.p = skey[0];
|
||||
sk.g = skey[1];
|
||||
sk.y = skey[2];
|
||||
sk.x = skey[3];
|
||||
|
||||
if (! check_secret_key (&sk))
|
||||
err = GPG_ERR_BAD_SECKEY;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
elg_encrypt (int algo, gcry_mpi_t *resarr,
|
||||
gcry_mpi_t data, gcry_mpi_t *pkey, int flags)
|
||||
{
|
||||
gcry_err_code_t err = GPG_ERR_NO_ERROR;
|
||||
ELG_public_key pk;
|
||||
|
||||
(void)algo;
|
||||
(void)flags;
|
||||
|
||||
if ((! data) || (! pkey[0]) || (! pkey[1]) || (! pkey[2]))
|
||||
err = GPG_ERR_BAD_MPI;
|
||||
else
|
||||
{
|
||||
pk.p = pkey[0];
|
||||
pk.g = pkey[1];
|
||||
pk.y = pkey[2];
|
||||
resarr[0] = mpi_alloc (mpi_get_nlimbs (pk.p));
|
||||
resarr[1] = mpi_alloc (mpi_get_nlimbs (pk.p));
|
||||
do_encrypt (resarr[0], resarr[1], data, &pk);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
elg_decrypt (int algo, gcry_mpi_t *result,
|
||||
gcry_mpi_t *data, gcry_mpi_t *skey, int flags)
|
||||
{
|
||||
gcry_err_code_t err = GPG_ERR_NO_ERROR;
|
||||
ELG_secret_key sk;
|
||||
|
||||
(void)algo;
|
||||
(void)flags;
|
||||
|
||||
if ((! data[0]) || (! data[1])
|
||||
|| (! skey[0]) || (! skey[1]) || (! skey[2]) || (! skey[3]))
|
||||
err = GPG_ERR_BAD_MPI;
|
||||
else
|
||||
{
|
||||
sk.p = skey[0];
|
||||
sk.g = skey[1];
|
||||
sk.y = skey[2];
|
||||
sk.x = skey[3];
|
||||
*result = mpi_alloc_secure (mpi_get_nlimbs (sk.p));
|
||||
decrypt (*result, data[0], data[1], &sk);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
elg_sign (int algo, gcry_mpi_t *resarr, gcry_mpi_t data, gcry_mpi_t *skey)
|
||||
{
|
||||
gcry_err_code_t err = GPG_ERR_NO_ERROR;
|
||||
ELG_secret_key sk;
|
||||
|
||||
(void)algo;
|
||||
|
||||
if ((! data)
|
||||
|| (! skey[0]) || (! skey[1]) || (! skey[2]) || (! skey[3]))
|
||||
err = GPG_ERR_BAD_MPI;
|
||||
else
|
||||
{
|
||||
sk.p = skey[0];
|
||||
sk.g = skey[1];
|
||||
sk.y = skey[2];
|
||||
sk.x = skey[3];
|
||||
resarr[0] = mpi_alloc (mpi_get_nlimbs (sk.p));
|
||||
resarr[1] = mpi_alloc (mpi_get_nlimbs (sk.p));
|
||||
sign (resarr[0], resarr[1], data, &sk);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static gcry_err_code_t
|
||||
elg_verify (int algo, gcry_mpi_t hash, gcry_mpi_t *data, gcry_mpi_t *pkey,
|
||||
int (*cmp) (void *, gcry_mpi_t), void *opaquev)
|
||||
{
|
||||
gcry_err_code_t err = GPG_ERR_NO_ERROR;
|
||||
ELG_public_key pk;
|
||||
|
||||
(void)algo;
|
||||
(void)cmp;
|
||||
(void)opaquev;
|
||||
|
||||
if ((! data[0]) || (! data[1]) || (! hash)
|
||||
|| (! pkey[0]) || (! pkey[1]) || (! pkey[2]))
|
||||
err = GPG_ERR_BAD_MPI;
|
||||
else
|
||||
{
|
||||
pk.p = pkey[0];
|
||||
pk.g = pkey[1];
|
||||
pk.y = pkey[2];
|
||||
if (! verify (data[0], data[1], hash, &pk))
|
||||
err = GPG_ERR_BAD_SIGNATURE;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
static unsigned int
|
||||
elg_get_nbits (int algo, gcry_mpi_t *pkey)
|
||||
{
|
||||
(void)algo;
|
||||
|
||||
return mpi_get_nbits (pkey[0]);
|
||||
}
|
||||
|
||||
|
||||
static const char *elg_names[] =
|
||||
{
|
||||
"elg",
|
||||
"openpgp-elg",
|
||||
"openpgp-elg-sig",
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
||||
gcry_pk_spec_t _gcry_pubkey_spec_elg =
|
||||
{
|
||||
"ELG", elg_names,
|
||||
"pgy", "pgyx", "ab", "rs", "pgy",
|
||||
GCRY_PK_USAGE_SIGN | GCRY_PK_USAGE_ENCR,
|
||||
elg_generate,
|
||||
elg_check_secret_key,
|
||||
elg_encrypt,
|
||||
elg_decrypt,
|
||||
elg_sign,
|
||||
elg_verify,
|
||||
elg_get_nbits
|
||||
};
|
||||
|
||||
pk_extra_spec_t _gcry_pubkey_extraspec_elg =
|
||||
{
|
||||
NULL,
|
||||
elg_generate_ext,
|
||||
NULL
|
||||
};
|
||||
|
||||
94
jni/libgcrypt/cipher/hash-common.c
Normal file
94
jni/libgcrypt/cipher/hash-common.c
Normal file
@@ -0,0 +1,94 @@
|
||||
/* hash-common.c - Common code for hash algorithms
|
||||
* Copyright (C) 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "hash-common.h"
|
||||
|
||||
|
||||
/* Run a selftest for hash algorithm ALGO. If the resulting digest
|
||||
matches EXPECT/EXPECTLEN and everything else is fine as well,
|
||||
return NULL. If an error occurs, return a static text string
|
||||
describing the error.
|
||||
|
||||
DATAMODE controls what will be hashed according to this table:
|
||||
|
||||
0 - Hash the supplied DATA of DATALEN.
|
||||
1 - Hash one million times a 'a'. DATA and DATALEN are ignored.
|
||||
|
||||
*/
|
||||
const char *
|
||||
_gcry_hash_selftest_check_one (int algo,
|
||||
int datamode, const void *data, size_t datalen,
|
||||
const void *expect, size_t expectlen)
|
||||
{
|
||||
const char *result = NULL;
|
||||
gcry_error_t err = 0;
|
||||
gcry_md_hd_t hd;
|
||||
unsigned char *digest;
|
||||
|
||||
if (_gcry_md_get_algo_dlen (algo) != expectlen)
|
||||
return "digest size does not match expected size";
|
||||
|
||||
err = _gcry_md_open (&hd, algo, 0);
|
||||
if (err)
|
||||
return "gcry_md_open failed";
|
||||
|
||||
switch (datamode)
|
||||
{
|
||||
case 0:
|
||||
_gcry_md_write (hd, data, datalen);
|
||||
break;
|
||||
|
||||
case 1: /* Hash one million times an "a". */
|
||||
{
|
||||
char aaa[1000];
|
||||
int i;
|
||||
|
||||
/* Write in odd size chunks so that we test the buffering. */
|
||||
memset (aaa, 'a', 1000);
|
||||
for (i = 0; i < 1000; i++)
|
||||
_gcry_md_write (hd, aaa, 1000);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
result = "invalid DATAMODE";
|
||||
}
|
||||
|
||||
if (!result)
|
||||
{
|
||||
digest = _gcry_md_read (hd, algo);
|
||||
|
||||
if ( memcmp (digest, expect, expectlen) )
|
||||
result = "digest mismatch";
|
||||
}
|
||||
|
||||
_gcry_md_close (hd);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
33
jni/libgcrypt/cipher/hash-common.h
Normal file
33
jni/libgcrypt/cipher/hash-common.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/* hash-common.h - Declarations of common code for hash algorithms.
|
||||
* Copyright (C) 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef GCRY_HASH_COMMON_H
|
||||
#define GCRY_HASH_COMMON_H
|
||||
|
||||
|
||||
const char * _gcry_hash_selftest_check_one
|
||||
/**/ (int algo,
|
||||
int datamode, const void *data, size_t datalen,
|
||||
const void *expect, size_t expectlen);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /*GCRY_HASH_COMMON_H*/
|
||||
732
jni/libgcrypt/cipher/hmac-tests.c
Normal file
732
jni/libgcrypt/cipher/hmac-tests.c
Normal file
@@ -0,0 +1,732 @@
|
||||
/* hmac-tests.c - HMAC selftests.
|
||||
* Copyright (C) 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
Although algorithm self-tests are usually implemented in the module
|
||||
implementing the algorithm, the case for HMAC is different because
|
||||
HMAC is implemnetd on a higher level using a special feature of the
|
||||
gcry_md_ functions. It would be possible to do this also in the
|
||||
digest algorithm modules, but that would blow up the code too much
|
||||
and spread the hmac tests over several modules.
|
||||
|
||||
Thus we implement all HMAC tests in this test module and provide a
|
||||
function to run the tests.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "cipher.h"
|
||||
#include "hmac256.h"
|
||||
|
||||
/* Check one HMAC with digest ALGO using the regualr HAMC
|
||||
API. (DATA,DATALEN) is the data to be MACed, (KEY,KEYLEN) the key
|
||||
and (EXPECT,EXPECTLEN) the expected result. Returns NULL on
|
||||
succdess or a string describing the failure. */
|
||||
static const char *
|
||||
check_one (int algo,
|
||||
const void *data, size_t datalen,
|
||||
const void *key, size_t keylen,
|
||||
const void *expect, size_t expectlen)
|
||||
{
|
||||
gcry_md_hd_t hd;
|
||||
const unsigned char *digest;
|
||||
|
||||
/* printf ("HMAC algo %d\n", algo); */
|
||||
if (_gcry_md_get_algo_dlen (algo) != expectlen)
|
||||
return "invalid tests data";
|
||||
if (_gcry_md_open (&hd, algo, GCRY_MD_FLAG_HMAC))
|
||||
return "gcry_md_open failed";
|
||||
if (_gcry_md_setkey (hd, key, keylen))
|
||||
{
|
||||
_gcry_md_close (hd);
|
||||
return "gcry_md_setkey failed";
|
||||
}
|
||||
_gcry_md_write (hd, data, datalen);
|
||||
digest = _gcry_md_read (hd, algo);
|
||||
if (!digest)
|
||||
{
|
||||
_gcry_md_close (hd);
|
||||
return "gcry_md_read failed";
|
||||
}
|
||||
if (memcmp (digest, expect, expectlen))
|
||||
{
|
||||
/* int i; */
|
||||
|
||||
/* fputs (" {", stdout); */
|
||||
/* for (i=0; i < expectlen-1; i++) */
|
||||
/* { */
|
||||
/* if (i && !(i % 8)) */
|
||||
/* fputs ("\n ", stdout); */
|
||||
/* printf (" 0x%02x,", digest[i]); */
|
||||
/* } */
|
||||
/* printf (" 0x%02x } },\n", digest[i]); */
|
||||
|
||||
_gcry_md_close (hd);
|
||||
return "does not match";
|
||||
}
|
||||
_gcry_md_close (hd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha1 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
unsigned char key[128];
|
||||
int i, j;
|
||||
|
||||
what = "FIPS-198a, A.1";
|
||||
for (i=0; i < 64; i++)
|
||||
key[i] = i;
|
||||
errtxt = check_one (GCRY_MD_SHA1,
|
||||
"Sample #1", 9,
|
||||
key, 64,
|
||||
"\x4f\x4c\xa3\xd5\xd6\x8b\xa7\xcc\x0a\x12"
|
||||
"\x08\xc9\xc6\x1e\x9c\x5d\xa0\x40\x3c\x0a", 20);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
if (extended)
|
||||
{
|
||||
what = "FIPS-198a, A.2";
|
||||
for (i=0, j=0x30; i < 20; i++)
|
||||
key[i] = j++;
|
||||
errtxt = check_one (GCRY_MD_SHA1,
|
||||
"Sample #2", 9,
|
||||
key, 20,
|
||||
"\x09\x22\xd3\x40\x5f\xaa\x3d\x19\x4f\x82"
|
||||
"\xa4\x58\x30\x73\x7d\x5c\xc6\xc7\x5d\x24", 20);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "FIPS-198a, A.3";
|
||||
for (i=0, j=0x50; i < 100; i++)
|
||||
key[i] = j++;
|
||||
errtxt = check_one (GCRY_MD_SHA1,
|
||||
"Sample #3", 9,
|
||||
key, 100,
|
||||
"\xbc\xf4\x1e\xab\x8b\xb2\xd8\x02\xf3\xd0"
|
||||
"\x5c\xaf\x7c\xb0\x92\xec\xf8\xd1\xa3\xaa", 20 );
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "FIPS-198a, A.4";
|
||||
for (i=0, j=0x70; i < 49; i++)
|
||||
key[i] = j++;
|
||||
errtxt = check_one (GCRY_MD_SHA1,
|
||||
"Sample #4", 9,
|
||||
key, 49,
|
||||
"\x9e\xa8\x86\xef\xe2\x68\xdb\xec\xce\x42"
|
||||
"\x0c\x75\x24\xdf\x32\xe0\x75\x1a\x2a\x26", 20 );
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("hmac", GCRY_MD_SHA1, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha224 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
static struct
|
||||
{
|
||||
const char * const desc;
|
||||
const char * const data;
|
||||
const char * const key;
|
||||
const char expect[28];
|
||||
} tv[] =
|
||||
{
|
||||
{ "data-28 key-4",
|
||||
"what do ya want for nothing?",
|
||||
"Jefe",
|
||||
{ 0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf,
|
||||
0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f,
|
||||
0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00,
|
||||
0x8f, 0xd0, 0x5e, 0x44 } },
|
||||
|
||||
{ "data-9 key-20",
|
||||
"Hi There",
|
||||
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
|
||||
"\x0b\x0b\x0b\x0b",
|
||||
{ 0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19,
|
||||
0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f,
|
||||
0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f,
|
||||
0x53, 0x68, 0x4b, 0x22 } },
|
||||
|
||||
{ "data-50 key-20",
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa",
|
||||
{ 0x7f, 0xb3, 0xcb, 0x35, 0x88, 0xc6, 0xc1, 0xf6,
|
||||
0xff, 0xa9, 0x69, 0x4d, 0x7d, 0x6a, 0xd2, 0x64,
|
||||
0x93, 0x65, 0xb0, 0xc1, 0xf6, 0x5d, 0x69, 0xd1,
|
||||
0xec, 0x83, 0x33, 0xea } },
|
||||
|
||||
{ "data-50 key-26",
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd",
|
||||
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
|
||||
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
|
||||
{ 0x6c, 0x11, 0x50, 0x68, 0x74, 0x01, 0x3c, 0xac,
|
||||
0x6a, 0x2a, 0xbc, 0x1b, 0xb3, 0x82, 0x62, 0x7c,
|
||||
0xec, 0x6a, 0x90, 0xd8, 0x6e, 0xfc, 0x01, 0x2d,
|
||||
0xe7, 0xaf, 0xec, 0x5a } },
|
||||
|
||||
{ "data-54 key-131",
|
||||
"Test Using Larger Than Block-Size Key - Hash Key First",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad,
|
||||
0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2,
|
||||
0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27,
|
||||
0x3f, 0xa6, 0x87, 0x0e } },
|
||||
|
||||
{ "data-152 key-131",
|
||||
"This is a test using a larger than block-size key and a larger "
|
||||
"than block-size data. The key needs to be hashed before being "
|
||||
"used by the HMAC algorithm.",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02,
|
||||
0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd,
|
||||
0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9,
|
||||
0xf6, 0xf5, 0x65, 0xd1 } },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
int tvidx;
|
||||
|
||||
for (tvidx=0; tv[tvidx].desc; tvidx++)
|
||||
{
|
||||
what = tv[tvidx].desc;
|
||||
errtxt = check_one (GCRY_MD_SHA224,
|
||||
tv[tvidx].data, strlen (tv[tvidx].data),
|
||||
tv[tvidx].key, strlen (tv[tvidx].key),
|
||||
tv[tvidx].expect, DIM (tv[tvidx].expect) );
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
if (!extended)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("hmac", GCRY_MD_SHA224, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha256 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
static struct
|
||||
{
|
||||
const char * const desc;
|
||||
const char * const data;
|
||||
const char * const key;
|
||||
const char expect[32];
|
||||
} tv[] =
|
||||
{
|
||||
{ "data-28 key-4",
|
||||
"what do ya want for nothing?",
|
||||
"Jefe",
|
||||
{ 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
|
||||
0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
|
||||
0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
|
||||
0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43 } },
|
||||
|
||||
{ "data-9 key-20",
|
||||
"Hi There",
|
||||
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
|
||||
"\x0b\x0b\x0b\x0b",
|
||||
{ 0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53,
|
||||
0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b,
|
||||
0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7,
|
||||
0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7 } },
|
||||
|
||||
{ "data-50 key-20",
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa",
|
||||
{ 0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46,
|
||||
0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7,
|
||||
0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22,
|
||||
0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe } },
|
||||
|
||||
{ "data-50 key-26",
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd",
|
||||
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
|
||||
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
|
||||
{ 0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e,
|
||||
0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a,
|
||||
0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07,
|
||||
0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b } },
|
||||
|
||||
{ "data-54 key-131",
|
||||
"Test Using Larger Than Block-Size Key - Hash Key First",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f,
|
||||
0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f,
|
||||
0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14,
|
||||
0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54 } },
|
||||
|
||||
{ "data-152 key-131",
|
||||
"This is a test using a larger than block-size key and a larger "
|
||||
"than block-size data. The key needs to be hashed before being "
|
||||
"used by the HMAC algorithm.",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb,
|
||||
0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44,
|
||||
0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93,
|
||||
0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2 } },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
int tvidx;
|
||||
|
||||
for (tvidx=0; tv[tvidx].desc; tvidx++)
|
||||
{
|
||||
hmac256_context_t hmachd;
|
||||
const unsigned char *digest;
|
||||
size_t dlen;
|
||||
|
||||
what = tv[tvidx].desc;
|
||||
errtxt = check_one (GCRY_MD_SHA256,
|
||||
tv[tvidx].data, strlen (tv[tvidx].data),
|
||||
tv[tvidx].key, strlen (tv[tvidx].key),
|
||||
tv[tvidx].expect, DIM (tv[tvidx].expect) );
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
hmachd = _gcry_hmac256_new (tv[tvidx].key, strlen (tv[tvidx].key));
|
||||
if (!hmachd)
|
||||
{
|
||||
errtxt = "_gcry_hmac256_new failed";
|
||||
goto failed;
|
||||
}
|
||||
_gcry_hmac256_update (hmachd, tv[tvidx].data, strlen (tv[tvidx].data));
|
||||
digest = _gcry_hmac256_finalize (hmachd, &dlen);
|
||||
if (!digest)
|
||||
{
|
||||
errtxt = "_gcry_hmac256_finalize failed";
|
||||
_gcry_hmac256_release (hmachd);
|
||||
goto failed;
|
||||
}
|
||||
if (dlen != DIM (tv[tvidx].expect)
|
||||
|| memcmp (digest, tv[tvidx].expect, DIM (tv[tvidx].expect)))
|
||||
{
|
||||
errtxt = "does not match in second implementation";
|
||||
_gcry_hmac256_release (hmachd);
|
||||
goto failed;
|
||||
}
|
||||
_gcry_hmac256_release (hmachd);
|
||||
|
||||
if (!extended)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("hmac", GCRY_MD_SHA256, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha384 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
static struct
|
||||
{
|
||||
const char * const desc;
|
||||
const char * const data;
|
||||
const char * const key;
|
||||
const char expect[48];
|
||||
} tv[] =
|
||||
{
|
||||
{ "data-28 key-4",
|
||||
"what do ya want for nothing?",
|
||||
"Jefe",
|
||||
{ 0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31,
|
||||
0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b,
|
||||
0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47,
|
||||
0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e,
|
||||
0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7,
|
||||
0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49 } },
|
||||
|
||||
{ "data-9 key-20",
|
||||
"Hi There",
|
||||
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
|
||||
"\x0b\x0b\x0b\x0b",
|
||||
{ 0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62,
|
||||
0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f,
|
||||
0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6,
|
||||
0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c,
|
||||
0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f,
|
||||
0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6 } },
|
||||
|
||||
{ "data-50 key-20",
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa",
|
||||
{ 0x88, 0x06, 0x26, 0x08, 0xd3, 0xe6, 0xad, 0x8a,
|
||||
0x0a, 0xa2, 0xac, 0xe0, 0x14, 0xc8, 0xa8, 0x6f,
|
||||
0x0a, 0xa6, 0x35, 0xd9, 0x47, 0xac, 0x9f, 0xeb,
|
||||
0xe8, 0x3e, 0xf4, 0xe5, 0x59, 0x66, 0x14, 0x4b,
|
||||
0x2a, 0x5a, 0xb3, 0x9d, 0xc1, 0x38, 0x14, 0xb9,
|
||||
0x4e, 0x3a, 0xb6, 0xe1, 0x01, 0xa3, 0x4f, 0x27 } },
|
||||
|
||||
{ "data-50 key-26",
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd",
|
||||
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
|
||||
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
|
||||
{ 0x3e, 0x8a, 0x69, 0xb7, 0x78, 0x3c, 0x25, 0x85,
|
||||
0x19, 0x33, 0xab, 0x62, 0x90, 0xaf, 0x6c, 0xa7,
|
||||
0x7a, 0x99, 0x81, 0x48, 0x08, 0x50, 0x00, 0x9c,
|
||||
0xc5, 0x57, 0x7c, 0x6e, 0x1f, 0x57, 0x3b, 0x4e,
|
||||
0x68, 0x01, 0xdd, 0x23, 0xc4, 0xa7, 0xd6, 0x79,
|
||||
0xcc, 0xf8, 0xa3, 0x86, 0xc6, 0x74, 0xcf, 0xfb } },
|
||||
|
||||
{ "data-54 key-131",
|
||||
"Test Using Larger Than Block-Size Key - Hash Key First",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90,
|
||||
0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4,
|
||||
0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f,
|
||||
0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6,
|
||||
0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82,
|
||||
0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52 } },
|
||||
|
||||
{ "data-152 key-131",
|
||||
"This is a test using a larger than block-size key and a larger "
|
||||
"than block-size data. The key needs to be hashed before being "
|
||||
"used by the HMAC algorithm.",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d,
|
||||
0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c,
|
||||
0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a,
|
||||
0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5,
|
||||
0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d,
|
||||
0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e } },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
int tvidx;
|
||||
|
||||
for (tvidx=0; tv[tvidx].desc; tvidx++)
|
||||
{
|
||||
what = tv[tvidx].desc;
|
||||
errtxt = check_one (GCRY_MD_SHA384,
|
||||
tv[tvidx].data, strlen (tv[tvidx].data),
|
||||
tv[tvidx].key, strlen (tv[tvidx].key),
|
||||
tv[tvidx].expect, DIM (tv[tvidx].expect) );
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
if (!extended)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("hmac", GCRY_MD_SHA384, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha512 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
static struct
|
||||
{
|
||||
const char * const desc;
|
||||
const char * const data;
|
||||
const char * const key;
|
||||
const char expect[64];
|
||||
} tv[] =
|
||||
{
|
||||
{ "data-28 key-4",
|
||||
"what do ya want for nothing?",
|
||||
"Jefe",
|
||||
{ 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2,
|
||||
0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3,
|
||||
0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6,
|
||||
0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54,
|
||||
0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a,
|
||||
0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd,
|
||||
0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b,
|
||||
0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37 } },
|
||||
|
||||
{ "data-9 key-20",
|
||||
"Hi There",
|
||||
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
|
||||
"\x0b\x0b\x0b\x0b",
|
||||
{ 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d,
|
||||
0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0,
|
||||
0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78,
|
||||
0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde,
|
||||
0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02,
|
||||
0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4,
|
||||
0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70,
|
||||
0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54 } },
|
||||
|
||||
{ "data-50 key-20",
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
|
||||
"\xdd\xdd",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa",
|
||||
{ 0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84,
|
||||
0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9,
|
||||
0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36,
|
||||
0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39,
|
||||
0xbf, 0x3e, 0x84, 0x82, 0x79, 0xa7, 0x22, 0xc8,
|
||||
0x06, 0xb4, 0x85, 0xa4, 0x7e, 0x67, 0xc8, 0x07,
|
||||
0xb9, 0x46, 0xa3, 0x37, 0xbe, 0xe8, 0x94, 0x26,
|
||||
0x74, 0x27, 0x88, 0x59, 0xe1, 0x32, 0x92, 0xfb } },
|
||||
|
||||
{ "data-50 key-26",
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
|
||||
"\xcd\xcd",
|
||||
"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
|
||||
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
|
||||
{ 0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69,
|
||||
0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7,
|
||||
0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d,
|
||||
0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb,
|
||||
0xa9, 0x1c, 0xa5, 0xc1, 0x1a, 0xa2, 0x5e, 0xb4,
|
||||
0xd6, 0x79, 0x27, 0x5c, 0xc5, 0x78, 0x80, 0x63,
|
||||
0xa5, 0xf1, 0x97, 0x41, 0x12, 0x0c, 0x4f, 0x2d,
|
||||
0xe2, 0xad, 0xeb, 0xeb, 0x10, 0xa2, 0x98, 0xdd } },
|
||||
|
||||
{ "data-54 key-131",
|
||||
"Test Using Larger Than Block-Size Key - Hash Key First",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb,
|
||||
0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4,
|
||||
0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1,
|
||||
0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52,
|
||||
0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98,
|
||||
0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52,
|
||||
0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec,
|
||||
0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98 } },
|
||||
|
||||
{ "data-152 key-131",
|
||||
"This is a test using a larger than block-size key and a larger "
|
||||
"than block-size data. The key needs to be hashed before being "
|
||||
"used by the HMAC algorithm.",
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
|
||||
"\xaa\xaa\xaa",
|
||||
{ 0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba,
|
||||
0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd,
|
||||
0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86,
|
||||
0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44,
|
||||
0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1,
|
||||
0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15,
|
||||
0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60,
|
||||
0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58 } },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
int tvidx;
|
||||
|
||||
for (tvidx=0; tv[tvidx].desc; tvidx++)
|
||||
{
|
||||
what = tv[tvidx].desc;
|
||||
errtxt = check_one (GCRY_MD_SHA512,
|
||||
tv[tvidx].data, strlen (tv[tvidx].data),
|
||||
tv[tvidx].key, strlen (tv[tvidx].key),
|
||||
tv[tvidx].expect, DIM (tv[tvidx].expect) );
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
if (!extended)
|
||||
break;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("hmac", GCRY_MD_SHA512, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Run a full self-test for ALGO and return 0 on success. */
|
||||
static gpg_err_code_t
|
||||
run_selftests (int algo, int extended, selftest_report_func_t report)
|
||||
{
|
||||
gpg_err_code_t ec;
|
||||
|
||||
switch (algo)
|
||||
{
|
||||
case GCRY_MD_SHA1:
|
||||
ec = selftests_sha1 (extended, report);
|
||||
break;
|
||||
case GCRY_MD_SHA224:
|
||||
ec = selftests_sha224 (extended, report);
|
||||
break;
|
||||
case GCRY_MD_SHA256:
|
||||
ec = selftests_sha256 (extended, report);
|
||||
break;
|
||||
case GCRY_MD_SHA384:
|
||||
ec = selftests_sha384 (extended, report);
|
||||
break;
|
||||
case GCRY_MD_SHA512:
|
||||
ec = selftests_sha512 (extended, report);
|
||||
break;
|
||||
default:
|
||||
ec = GPG_ERR_DIGEST_ALGO;
|
||||
break;
|
||||
}
|
||||
return ec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Run the selftests for HMAC with digest algorithm ALGO with optional
|
||||
reporting function REPORT. */
|
||||
gpg_error_t
|
||||
_gcry_hmac_selftest (int algo, int extended, selftest_report_func_t report)
|
||||
{
|
||||
gcry_err_code_t ec = 0;
|
||||
|
||||
if (!gcry_md_test_algo (algo))
|
||||
{
|
||||
ec = run_selftests (algo, extended, report);
|
||||
}
|
||||
else
|
||||
{
|
||||
ec = GPG_ERR_DIGEST_ALGO;
|
||||
if (report)
|
||||
report ("hmac", algo, "module", "algorithm not available");
|
||||
}
|
||||
return gpg_error (ec);
|
||||
}
|
||||
1375
jni/libgcrypt/cipher/md.c
Normal file
1375
jni/libgcrypt/cipher/md.c
Normal file
File diff suppressed because it is too large
Load Diff
328
jni/libgcrypt/cipher/md4.c
Normal file
328
jni/libgcrypt/cipher/md4.c
Normal file
@@ -0,0 +1,328 @@
|
||||
/* md4.c - MD4 Message-Digest Algorithm
|
||||
* Copyright (C) 2002, 2003 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
|
||||
*
|
||||
* Based on md5.c in libgcrypt, but rewritten to compute md4 checksums
|
||||
* using a public domain md4 implementation with the following comments:
|
||||
*
|
||||
* Modified by Wei Dai from Andrew M. Kuchling's md4.c
|
||||
* The original code and all modifications are in the public domain.
|
||||
*
|
||||
* This is the original introductory comment:
|
||||
*
|
||||
* md4.c : MD4 hash algorithm.
|
||||
*
|
||||
* Part of the Python Cryptography Toolkit, version 1.1
|
||||
*
|
||||
* Distribute and use freely; there are no restrictions on further
|
||||
* dissemination and usage except those imposed by the laws of your
|
||||
* country of residence.
|
||||
*
|
||||
*/
|
||||
|
||||
/* MD4 test suite:
|
||||
* MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0
|
||||
* MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24
|
||||
* MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729d
|
||||
* MD4 ("message digest") = d9130a8164549fe818874806e1c7014b
|
||||
* MD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9
|
||||
* MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =
|
||||
* 043f8582f241db351ce627e153e7f0e4
|
||||
* MD4 ("123456789012345678901234567890123456789012345678901234567890123456
|
||||
* 78901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#include "bithelp.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
u32 A,B,C,D; /* chaining variables */
|
||||
u32 nblocks;
|
||||
byte buf[64];
|
||||
int count;
|
||||
} MD4_CONTEXT;
|
||||
|
||||
|
||||
static void
|
||||
md4_init( void *context )
|
||||
{
|
||||
MD4_CONTEXT *ctx = context;
|
||||
|
||||
ctx->A = 0x67452301;
|
||||
ctx->B = 0xefcdab89;
|
||||
ctx->C = 0x98badcfe;
|
||||
ctx->D = 0x10325476;
|
||||
|
||||
ctx->nblocks = 0;
|
||||
ctx->count = 0;
|
||||
}
|
||||
|
||||
#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
|
||||
#define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z)))
|
||||
#define H(x, y, z) ((x) ^ (y) ^ (z))
|
||||
|
||||
|
||||
/****************
|
||||
* transform 64 bytes
|
||||
*/
|
||||
static void
|
||||
transform ( MD4_CONTEXT *ctx, const unsigned char *data )
|
||||
{
|
||||
u32 in[16];
|
||||
register u32 A = ctx->A;
|
||||
register u32 B = ctx->B;
|
||||
register u32 C = ctx->C;
|
||||
register u32 D = ctx->D;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
{
|
||||
int i;
|
||||
byte *p2, *p1;
|
||||
for(i=0, p1=data, p2=(byte*)in; i < 16; i++, p2 += 4 )
|
||||
{
|
||||
p2[3] = *p1++;
|
||||
p2[2] = *p1++;
|
||||
p2[1] = *p1++;
|
||||
p2[0] = *p1++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
memcpy (in, data, 64);
|
||||
#endif
|
||||
|
||||
/* Round 1. */
|
||||
#define function(a,b,c,d,k,s) a=rol(a+F(b,c,d)+in[k],s);
|
||||
function(A,B,C,D, 0, 3);
|
||||
function(D,A,B,C, 1, 7);
|
||||
function(C,D,A,B, 2,11);
|
||||
function(B,C,D,A, 3,19);
|
||||
function(A,B,C,D, 4, 3);
|
||||
function(D,A,B,C, 5, 7);
|
||||
function(C,D,A,B, 6,11);
|
||||
function(B,C,D,A, 7,19);
|
||||
function(A,B,C,D, 8, 3);
|
||||
function(D,A,B,C, 9, 7);
|
||||
function(C,D,A,B,10,11);
|
||||
function(B,C,D,A,11,19);
|
||||
function(A,B,C,D,12, 3);
|
||||
function(D,A,B,C,13, 7);
|
||||
function(C,D,A,B,14,11);
|
||||
function(B,C,D,A,15,19);
|
||||
|
||||
#undef function
|
||||
|
||||
/* Round 2. */
|
||||
#define function(a,b,c,d,k,s) a=rol(a+G(b,c,d)+in[k]+0x5a827999,s);
|
||||
|
||||
function(A,B,C,D, 0, 3);
|
||||
function(D,A,B,C, 4, 5);
|
||||
function(C,D,A,B, 8, 9);
|
||||
function(B,C,D,A,12,13);
|
||||
function(A,B,C,D, 1, 3);
|
||||
function(D,A,B,C, 5, 5);
|
||||
function(C,D,A,B, 9, 9);
|
||||
function(B,C,D,A,13,13);
|
||||
function(A,B,C,D, 2, 3);
|
||||
function(D,A,B,C, 6, 5);
|
||||
function(C,D,A,B,10, 9);
|
||||
function(B,C,D,A,14,13);
|
||||
function(A,B,C,D, 3, 3);
|
||||
function(D,A,B,C, 7, 5);
|
||||
function(C,D,A,B,11, 9);
|
||||
function(B,C,D,A,15,13);
|
||||
|
||||
#undef function
|
||||
|
||||
/* Round 3. */
|
||||
#define function(a,b,c,d,k,s) a=rol(a+H(b,c,d)+in[k]+0x6ed9eba1,s);
|
||||
|
||||
function(A,B,C,D, 0, 3);
|
||||
function(D,A,B,C, 8, 9);
|
||||
function(C,D,A,B, 4,11);
|
||||
function(B,C,D,A,12,15);
|
||||
function(A,B,C,D, 2, 3);
|
||||
function(D,A,B,C,10, 9);
|
||||
function(C,D,A,B, 6,11);
|
||||
function(B,C,D,A,14,15);
|
||||
function(A,B,C,D, 1, 3);
|
||||
function(D,A,B,C, 9, 9);
|
||||
function(C,D,A,B, 5,11);
|
||||
function(B,C,D,A,13,15);
|
||||
function(A,B,C,D, 3, 3);
|
||||
function(D,A,B,C,11, 9);
|
||||
function(C,D,A,B, 7,11);
|
||||
function(B,C,D,A,15,15);
|
||||
|
||||
|
||||
/* Put checksum in context given as argument. */
|
||||
ctx->A += A;
|
||||
ctx->B += B;
|
||||
ctx->C += C;
|
||||
ctx->D += D;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The routine updates the message-digest context to
|
||||
* account for the presence of each of the characters inBuf[0..inLen-1]
|
||||
* in the message whose digest is being computed.
|
||||
*/
|
||||
static void
|
||||
md4_write ( void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
MD4_CONTEXT *hd = context;
|
||||
|
||||
if( hd->count == 64 ) /* flush the buffer */
|
||||
{
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (80+6*sizeof(void*));
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if( !inbuf )
|
||||
return;
|
||||
|
||||
if( hd->count )
|
||||
{
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
md4_write( hd, NULL, 0 );
|
||||
if( !inlen )
|
||||
return;
|
||||
}
|
||||
_gcry_burn_stack (80+6*sizeof(void*));
|
||||
|
||||
while( inlen >= 64 )
|
||||
{
|
||||
transform( hd, inbuf );
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
inlen -= 64;
|
||||
inbuf += 64;
|
||||
}
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The routine final terminates the message-digest computation and
|
||||
* ends with the desired message digest in mdContext->digest[0...15].
|
||||
* The handle is prepared for a new MD4 cycle.
|
||||
* Returns 16 bytes representing the digest.
|
||||
*/
|
||||
|
||||
static void
|
||||
md4_final( void *context )
|
||||
{
|
||||
MD4_CONTEXT *hd = context;
|
||||
u32 t, msb, lsb;
|
||||
byte *p;
|
||||
|
||||
md4_write(hd, NULL, 0); /* flush */;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 64 to make a byte count */
|
||||
lsb = t << 6;
|
||||
msb = t >> 26;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if( (lsb += hd->count) < t )
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 29;
|
||||
|
||||
if( hd->count < 56 ) /* enough room */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad */
|
||||
while( hd->count < 56 )
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else /* need one extra block */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad character */
|
||||
while( hd->count < 64 )
|
||||
hd->buf[hd->count++] = 0;
|
||||
md4_write(hd, NULL, 0); /* flush */;
|
||||
memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 64 bit count */
|
||||
hd->buf[56] = lsb ;
|
||||
hd->buf[57] = lsb >> 8;
|
||||
hd->buf[58] = lsb >> 16;
|
||||
hd->buf[59] = lsb >> 24;
|
||||
hd->buf[60] = msb ;
|
||||
hd->buf[61] = msb >> 8;
|
||||
hd->buf[62] = msb >> 16;
|
||||
hd->buf[63] = msb >> 24;
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (80+6*sizeof(void*));
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *p++ = hd->a ; *p++ = hd->a >> 8; \
|
||||
*p++ = hd->a >> 16; *p++ = hd->a >> 24; } while(0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *(u32*)p = (*hd).a ; p += 4; } while(0)
|
||||
#endif
|
||||
X(A);
|
||||
X(B);
|
||||
X(C);
|
||||
X(D);
|
||||
#undef X
|
||||
|
||||
}
|
||||
|
||||
static byte *
|
||||
md4_read (void *context)
|
||||
{
|
||||
MD4_CONTEXT *hd = context;
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
static byte asn[18] = /* Object ID is 1.2.840.113549.2.4 */
|
||||
{ 0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86,0x48,
|
||||
0x86, 0xf7, 0x0d, 0x02, 0x04, 0x05, 0x00, 0x04, 0x10 };
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_md4[] =
|
||||
{
|
||||
/* iso.member-body.us.rsadsi.digestAlgorithm.md4 */
|
||||
{ "1.2.840.113549.2.4" },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_md4 =
|
||||
{
|
||||
"MD4", asn, DIM (asn), oid_spec_md4,16,
|
||||
md4_init, md4_write, md4_final, md4_read,
|
||||
sizeof (MD4_CONTEXT)
|
||||
};
|
||||
|
||||
355
jni/libgcrypt/cipher/md5.c
Normal file
355
jni/libgcrypt/cipher/md5.c
Normal file
@@ -0,0 +1,355 @@
|
||||
/* md5.c - MD5 Message-Digest Algorithm
|
||||
* Copyright (C) 1995,1996,1998,1999,2001,2002,
|
||||
* 2003 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
|
||||
*
|
||||
* According to the definition of MD5 in RFC 1321 from April 1992.
|
||||
* NOTE: This is *not* the same file as the one from glibc.
|
||||
* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
|
||||
* heavily modified for GnuPG by Werner Koch <wk@gnupg.org>
|
||||
*/
|
||||
|
||||
/* Test values:
|
||||
* "" D4 1D 8C D9 8F 00 B2 04 E9 80 09 98 EC F8 42 7E
|
||||
* "a" 0C C1 75 B9 C0 F1 B6 A8 31 C3 99 E2 69 77 26 61
|
||||
* "abc 90 01 50 98 3C D2 4F B0 D6 96 3F 7D 28 E1 7F 72
|
||||
* "message digest" F9 6B 69 7D 7C B7 93 8D 52 5A 2F 31 AA F1 61 D0
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#include "bithelp.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
u32 A,B,C,D; /* chaining variables */
|
||||
u32 nblocks;
|
||||
byte buf[64];
|
||||
int count;
|
||||
} MD5_CONTEXT;
|
||||
|
||||
|
||||
static void
|
||||
md5_init( void *context )
|
||||
{
|
||||
MD5_CONTEXT *ctx = context;
|
||||
|
||||
ctx->A = 0x67452301;
|
||||
ctx->B = 0xefcdab89;
|
||||
ctx->C = 0x98badcfe;
|
||||
ctx->D = 0x10325476;
|
||||
|
||||
ctx->nblocks = 0;
|
||||
ctx->count = 0;
|
||||
}
|
||||
|
||||
|
||||
/* These are the four functions used in the four steps of the MD5 algorithm
|
||||
and defined in the RFC 1321. The first function is a little bit optimized
|
||||
(as found in Colin Plumbs public domain implementation). */
|
||||
/* #define FF(b, c, d) ((b & c) | (~b & d)) */
|
||||
#define FF(b, c, d) (d ^ (b & (c ^ d)))
|
||||
#define FG(b, c, d) FF (d, b, c)
|
||||
#define FH(b, c, d) (b ^ c ^ d)
|
||||
#define FI(b, c, d) (c ^ (b | ~d))
|
||||
|
||||
|
||||
/****************
|
||||
* transform n*64 bytes
|
||||
*/
|
||||
static void
|
||||
transform ( MD5_CONTEXT *ctx, const unsigned char *data )
|
||||
{
|
||||
u32 correct_words[16];
|
||||
register u32 A = ctx->A;
|
||||
register u32 B = ctx->B;
|
||||
register u32 C = ctx->C;
|
||||
register u32 D = ctx->D;
|
||||
u32 *cwp = correct_words;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
{
|
||||
int i;
|
||||
byte *p2, *p1;
|
||||
for(i=0, p1=data, p2=(byte*)correct_words; i < 16; i++, p2 += 4 )
|
||||
{
|
||||
p2[3] = *p1++;
|
||||
p2[2] = *p1++;
|
||||
p2[1] = *p1++;
|
||||
p2[0] = *p1++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
memcpy( correct_words, data, 64 );
|
||||
#endif
|
||||
|
||||
|
||||
#define OP(a, b, c, d, s, T) \
|
||||
do \
|
||||
{ \
|
||||
a += FF (b, c, d) + (*cwp++) + T; \
|
||||
a = rol(a, s); \
|
||||
a += b; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Before we start, one word about the strange constants.
|
||||
They are defined in RFC 1321 as
|
||||
|
||||
T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
|
||||
*/
|
||||
|
||||
/* Round 1. */
|
||||
OP (A, B, C, D, 7, 0xd76aa478);
|
||||
OP (D, A, B, C, 12, 0xe8c7b756);
|
||||
OP (C, D, A, B, 17, 0x242070db);
|
||||
OP (B, C, D, A, 22, 0xc1bdceee);
|
||||
OP (A, B, C, D, 7, 0xf57c0faf);
|
||||
OP (D, A, B, C, 12, 0x4787c62a);
|
||||
OP (C, D, A, B, 17, 0xa8304613);
|
||||
OP (B, C, D, A, 22, 0xfd469501);
|
||||
OP (A, B, C, D, 7, 0x698098d8);
|
||||
OP (D, A, B, C, 12, 0x8b44f7af);
|
||||
OP (C, D, A, B, 17, 0xffff5bb1);
|
||||
OP (B, C, D, A, 22, 0x895cd7be);
|
||||
OP (A, B, C, D, 7, 0x6b901122);
|
||||
OP (D, A, B, C, 12, 0xfd987193);
|
||||
OP (C, D, A, B, 17, 0xa679438e);
|
||||
OP (B, C, D, A, 22, 0x49b40821);
|
||||
|
||||
#undef OP
|
||||
#define OP(f, a, b, c, d, k, s, T) \
|
||||
do \
|
||||
{ \
|
||||
a += f (b, c, d) + correct_words[k] + T; \
|
||||
a = rol(a, s); \
|
||||
a += b; \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/* Round 2. */
|
||||
OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
|
||||
OP (FG, D, A, B, C, 6, 9, 0xc040b340);
|
||||
OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
|
||||
OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
|
||||
OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
|
||||
OP (FG, D, A, B, C, 10, 9, 0x02441453);
|
||||
OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
|
||||
OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
|
||||
OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
|
||||
OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
|
||||
OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
|
||||
OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
|
||||
OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
|
||||
OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
|
||||
OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
|
||||
OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
|
||||
|
||||
/* Round 3. */
|
||||
OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
|
||||
OP (FH, D, A, B, C, 8, 11, 0x8771f681);
|
||||
OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
|
||||
OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
|
||||
OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
|
||||
OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
|
||||
OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
|
||||
OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
|
||||
OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
|
||||
OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
|
||||
OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
|
||||
OP (FH, B, C, D, A, 6, 23, 0x04881d05);
|
||||
OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
|
||||
OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
|
||||
OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
|
||||
OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
|
||||
|
||||
/* Round 4. */
|
||||
OP (FI, A, B, C, D, 0, 6, 0xf4292244);
|
||||
OP (FI, D, A, B, C, 7, 10, 0x432aff97);
|
||||
OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
|
||||
OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
|
||||
OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
|
||||
OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
|
||||
OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
|
||||
OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
|
||||
OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
|
||||
OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
|
||||
OP (FI, C, D, A, B, 6, 15, 0xa3014314);
|
||||
OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
|
||||
OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
|
||||
OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
|
||||
OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
|
||||
OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
|
||||
|
||||
/* Put checksum in context given as argument. */
|
||||
ctx->A += A;
|
||||
ctx->B += B;
|
||||
ctx->C += C;
|
||||
ctx->D += D;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The routine updates the message-digest context to
|
||||
* account for the presence of each of the characters inBuf[0..inLen-1]
|
||||
* in the message whose digest is being computed.
|
||||
*/
|
||||
static void
|
||||
md5_write( void *context, const void *inbuf_arg , size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
MD5_CONTEXT *hd = context;
|
||||
|
||||
if( hd->count == 64 ) /* flush the buffer */
|
||||
{
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (80+6*sizeof(void*));
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if( !inbuf )
|
||||
return;
|
||||
|
||||
if( hd->count )
|
||||
{
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
md5_write( hd, NULL, 0 );
|
||||
if( !inlen )
|
||||
return;
|
||||
}
|
||||
_gcry_burn_stack (80+6*sizeof(void*));
|
||||
|
||||
while( inlen >= 64 )
|
||||
{
|
||||
transform( hd, inbuf );
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
inlen -= 64;
|
||||
inbuf += 64;
|
||||
}
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The routine final terminates the message-digest computation and
|
||||
* ends with the desired message digest in mdContext->digest[0...15].
|
||||
* The handle is prepared for a new MD5 cycle.
|
||||
* Returns 16 bytes representing the digest.
|
||||
*/
|
||||
|
||||
static void
|
||||
md5_final( void *context)
|
||||
{
|
||||
MD5_CONTEXT *hd = context;
|
||||
u32 t, msb, lsb;
|
||||
byte *p;
|
||||
|
||||
md5_write(hd, NULL, 0); /* flush */;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 64 to make a byte count */
|
||||
lsb = t << 6;
|
||||
msb = t >> 26;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if( (lsb += hd->count) < t )
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 29;
|
||||
|
||||
if( hd->count < 56 ) /* enough room */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad */
|
||||
while( hd->count < 56 )
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else /* need one extra block */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad character */
|
||||
while( hd->count < 64 )
|
||||
hd->buf[hd->count++] = 0;
|
||||
md5_write(hd, NULL, 0); /* flush */;
|
||||
memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 64 bit count */
|
||||
hd->buf[56] = lsb ;
|
||||
hd->buf[57] = lsb >> 8;
|
||||
hd->buf[58] = lsb >> 16;
|
||||
hd->buf[59] = lsb >> 24;
|
||||
hd->buf[60] = msb ;
|
||||
hd->buf[61] = msb >> 8;
|
||||
hd->buf[62] = msb >> 16;
|
||||
hd->buf[63] = msb >> 24;
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (80+6*sizeof(void*));
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *p++ = hd->a ; *p++ = hd->a >> 8; \
|
||||
*p++ = hd->a >> 16; *p++ = hd->a >> 24; } while(0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *(u32*)p = (*hd).a ; p += 4; } while(0)
|
||||
#endif
|
||||
X(A);
|
||||
X(B);
|
||||
X(C);
|
||||
X(D);
|
||||
#undef X
|
||||
|
||||
}
|
||||
|
||||
static byte *
|
||||
md5_read( void *context )
|
||||
{
|
||||
MD5_CONTEXT *hd = (MD5_CONTEXT *) context;
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
static byte asn[18] = /* Object ID is 1.2.840.113549.2.5 */
|
||||
{ 0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86,0x48,
|
||||
0x86, 0xf7, 0x0d, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10 };
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_md5[] =
|
||||
{
|
||||
/* iso.member-body.us.rsadsi.pkcs.pkcs-1.4 (md5WithRSAEncryption) */
|
||||
{ "1.2.840.113549.1.1.4" },
|
||||
/* RSADSI digestAlgorithm MD5 */
|
||||
{ "1.2.840.113549.2.5" },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_md5 =
|
||||
{
|
||||
"MD5", asn, DIM (asn), oid_spec_md5, 16,
|
||||
md5_init, md5_write, md5_final, md5_read,
|
||||
sizeof (MD5_CONTEXT)
|
||||
};
|
||||
1862
jni/libgcrypt/cipher/primegen.c
Normal file
1862
jni/libgcrypt/cipher/primegen.c
Normal file
File diff suppressed because it is too large
Load Diff
2749
jni/libgcrypt/cipher/pubkey.c
Normal file
2749
jni/libgcrypt/cipher/pubkey.c
Normal file
File diff suppressed because it is too large
Load Diff
345
jni/libgcrypt/cipher/rfc2268.c
Normal file
345
jni/libgcrypt/cipher/rfc2268.c
Normal file
@@ -0,0 +1,345 @@
|
||||
/* rfc2268.c - The cipher described in rfc2268; aka Ron's Cipher 2.
|
||||
* Copyright (C) 2003 Nikos Mavroyanopoulos
|
||||
* Copyright (C) 2004 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
|
||||
*/
|
||||
|
||||
/* This implementation was written by Nikos Mavroyanopoulos for GNUTLS
|
||||
* as a Libgcrypt module (gnutls/lib/x509/rc2.c) and later adapted for
|
||||
* direct use by Libgcrypt by Werner Koch. This implementation is
|
||||
* only useful for pkcs#12 descryption.
|
||||
*
|
||||
* The implementation here is based on Peter Gutmann's RRC.2 paper.
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "g10lib.h"
|
||||
#include "types.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#define RFC2268_BLOCKSIZE 8
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u16 S[64];
|
||||
} RFC2268_context;
|
||||
|
||||
static const unsigned char rfc2268_sbox[] = {
|
||||
217, 120, 249, 196, 25, 221, 181, 237,
|
||||
40, 233, 253, 121, 74, 160, 216, 157,
|
||||
198, 126, 55, 131, 43, 118, 83, 142,
|
||||
98, 76, 100, 136, 68, 139, 251, 162,
|
||||
23, 154, 89, 245, 135, 179, 79, 19,
|
||||
97, 69, 109, 141, 9, 129, 125, 50,
|
||||
189, 143, 64, 235, 134, 183, 123, 11,
|
||||
240, 149, 33, 34, 92, 107, 78, 130,
|
||||
84, 214, 101, 147, 206, 96, 178, 28,
|
||||
115, 86, 192, 20, 167, 140, 241, 220,
|
||||
18, 117, 202, 31, 59, 190, 228, 209,
|
||||
66, 61, 212, 48, 163, 60, 182, 38,
|
||||
111, 191, 14, 218, 70, 105, 7, 87,
|
||||
39, 242, 29, 155, 188, 148, 67, 3,
|
||||
248, 17, 199, 246, 144, 239, 62, 231,
|
||||
6, 195, 213, 47, 200, 102, 30, 215,
|
||||
8, 232, 234, 222, 128, 82, 238, 247,
|
||||
132, 170, 114, 172, 53, 77, 106, 42,
|
||||
150, 26, 210, 113, 90, 21, 73, 116,
|
||||
75, 159, 208, 94, 4, 24, 164, 236,
|
||||
194, 224, 65, 110, 15, 81, 203, 204,
|
||||
36, 145, 175, 80, 161, 244, 112, 57,
|
||||
153, 124, 58, 133, 35, 184, 180, 122,
|
||||
252, 2, 54, 91, 37, 85, 151, 49,
|
||||
45, 93, 250, 152, 227, 138, 146, 174,
|
||||
5, 223, 41, 16, 103, 108, 186, 201,
|
||||
211, 0, 230, 207, 225, 158, 168, 44,
|
||||
99, 22, 1, 63, 88, 226, 137, 169,
|
||||
13, 56, 52, 27, 171, 51, 255, 176,
|
||||
187, 72, 12, 95, 185, 177, 205, 46,
|
||||
197, 243, 219, 71, 229, 165, 156, 119,
|
||||
10, 166, 32, 104, 254, 127, 193, 173
|
||||
};
|
||||
|
||||
#define rotl16(x,n) (((x) << ((u16)(n))) | ((x) >> (16 - (u16)(n))))
|
||||
#define rotr16(x,n) (((x) >> ((u16)(n))) | ((x) << (16 - (u16)(n))))
|
||||
|
||||
static const char *selftest (void);
|
||||
|
||||
|
||||
static void
|
||||
do_encrypt (void *context, unsigned char *outbuf, const unsigned char *inbuf)
|
||||
{
|
||||
RFC2268_context *ctx = context;
|
||||
register int i, j;
|
||||
u16 word0 = 0, word1 = 0, word2 = 0, word3 = 0;
|
||||
|
||||
word0 = (word0 << 8) | inbuf[1];
|
||||
word0 = (word0 << 8) | inbuf[0];
|
||||
word1 = (word1 << 8) | inbuf[3];
|
||||
word1 = (word1 << 8) | inbuf[2];
|
||||
word2 = (word2 << 8) | inbuf[5];
|
||||
word2 = (word2 << 8) | inbuf[4];
|
||||
word3 = (word3 << 8) | inbuf[7];
|
||||
word3 = (word3 << 8) | inbuf[6];
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
j = i * 4;
|
||||
/* For some reason I cannot combine those steps. */
|
||||
word0 += (word1 & ~word3) + (word2 & word3) + ctx->S[j];
|
||||
word0 = rotl16(word0, 1);
|
||||
|
||||
word1 += (word2 & ~word0) + (word3 & word0) + ctx->S[j + 1];
|
||||
word1 = rotl16(word1, 2);
|
||||
|
||||
word2 += (word3 & ~word1) + (word0 & word1) + ctx->S[j + 2];
|
||||
word2 = rotl16(word2, 3);
|
||||
|
||||
word3 += (word0 & ~word2) + (word1 & word2) + ctx->S[j + 3];
|
||||
word3 = rotl16(word3, 5);
|
||||
|
||||
if (i == 4 || i == 10)
|
||||
{
|
||||
word0 += ctx->S[word3 & 63];
|
||||
word1 += ctx->S[word0 & 63];
|
||||
word2 += ctx->S[word1 & 63];
|
||||
word3 += ctx->S[word2 & 63];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
outbuf[0] = word0 & 255;
|
||||
outbuf[1] = word0 >> 8;
|
||||
outbuf[2] = word1 & 255;
|
||||
outbuf[3] = word1 >> 8;
|
||||
outbuf[4] = word2 & 255;
|
||||
outbuf[5] = word2 >> 8;
|
||||
outbuf[6] = word3 & 255;
|
||||
outbuf[7] = word3 >> 8;
|
||||
}
|
||||
|
||||
static void
|
||||
do_decrypt (void *context, unsigned char *outbuf, const unsigned char *inbuf)
|
||||
{
|
||||
RFC2268_context *ctx = context;
|
||||
register int i, j;
|
||||
u16 word0 = 0, word1 = 0, word2 = 0, word3 = 0;
|
||||
|
||||
word0 = (word0 << 8) | inbuf[1];
|
||||
word0 = (word0 << 8) | inbuf[0];
|
||||
word1 = (word1 << 8) | inbuf[3];
|
||||
word1 = (word1 << 8) | inbuf[2];
|
||||
word2 = (word2 << 8) | inbuf[5];
|
||||
word2 = (word2 << 8) | inbuf[4];
|
||||
word3 = (word3 << 8) | inbuf[7];
|
||||
word3 = (word3 << 8) | inbuf[6];
|
||||
|
||||
for (i = 15; i >= 0; i--)
|
||||
{
|
||||
j = i * 4;
|
||||
|
||||
word3 = rotr16(word3, 5);
|
||||
word3 -= (word0 & ~word2) + (word1 & word2) + ctx->S[j + 3];
|
||||
|
||||
word2 = rotr16(word2, 3);
|
||||
word2 -= (word3 & ~word1) + (word0 & word1) + ctx->S[j + 2];
|
||||
|
||||
word1 = rotr16(word1, 2);
|
||||
word1 -= (word2 & ~word0) + (word3 & word0) + ctx->S[j + 1];
|
||||
|
||||
word0 = rotr16(word0, 1);
|
||||
word0 -= (word1 & ~word3) + (word2 & word3) + ctx->S[j];
|
||||
|
||||
if (i == 5 || i == 11)
|
||||
{
|
||||
word3 = word3 - ctx->S[word2 & 63];
|
||||
word2 = word2 - ctx->S[word1 & 63];
|
||||
word1 = word1 - ctx->S[word0 & 63];
|
||||
word0 = word0 - ctx->S[word3 & 63];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
outbuf[0] = word0 & 255;
|
||||
outbuf[1] = word0 >> 8;
|
||||
outbuf[2] = word1 & 255;
|
||||
outbuf[3] = word1 >> 8;
|
||||
outbuf[4] = word2 & 255;
|
||||
outbuf[5] = word2 >> 8;
|
||||
outbuf[6] = word3 & 255;
|
||||
outbuf[7] = word3 >> 8;
|
||||
}
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
setkey_core (void *context, const unsigned char *key, unsigned int keylen, int with_phase2)
|
||||
{
|
||||
static int initialized;
|
||||
static const char *selftest_failed;
|
||||
RFC2268_context *ctx = context;
|
||||
unsigned int i;
|
||||
unsigned char *S, x;
|
||||
int len;
|
||||
int bits = keylen * 8;
|
||||
|
||||
if (!initialized)
|
||||
{
|
||||
initialized = 1;
|
||||
selftest_failed = selftest ();
|
||||
if (selftest_failed)
|
||||
log_error ("RFC2268 selftest failed (%s).\n", selftest_failed);
|
||||
}
|
||||
if (selftest_failed)
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
|
||||
if (keylen < 40 / 8) /* We want at least 40 bits. */
|
||||
return GPG_ERR_INV_KEYLEN;
|
||||
|
||||
S = (unsigned char *) ctx->S;
|
||||
|
||||
for (i = 0; i < keylen; i++)
|
||||
S[i] = key[i];
|
||||
|
||||
for (i = keylen; i < 128; i++)
|
||||
S[i] = rfc2268_sbox[(S[i - keylen] + S[i - 1]) & 255];
|
||||
|
||||
S[0] = rfc2268_sbox[S[0]];
|
||||
|
||||
/* Phase 2 - reduce effective key size to "bits". This was not
|
||||
* discussed in Gutmann's paper. I've copied that from the public
|
||||
* domain code posted in sci.crypt. */
|
||||
if (with_phase2)
|
||||
{
|
||||
len = (bits + 7) >> 3;
|
||||
i = 128 - len;
|
||||
x = rfc2268_sbox[S[i] & (255 >> (7 & -bits))];
|
||||
S[i] = x;
|
||||
|
||||
while (i--)
|
||||
{
|
||||
x = rfc2268_sbox[x ^ S[i + len]];
|
||||
S[i] = x;
|
||||
}
|
||||
}
|
||||
|
||||
/* Make the expanded key, endian independent. */
|
||||
for (i = 0; i < 64; i++)
|
||||
ctx->S[i] = ( (u16) S[i * 2] | (((u16) S[i * 2 + 1]) << 8));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static gpg_err_code_t
|
||||
do_setkey (void *context, const unsigned char *key, unsigned int keylen)
|
||||
{
|
||||
return setkey_core (context, key, keylen, 1);
|
||||
}
|
||||
|
||||
static const char *
|
||||
selftest (void)
|
||||
{
|
||||
RFC2268_context ctx;
|
||||
unsigned char scratch[16];
|
||||
|
||||
/* Test vectors from Peter Gutmann's paper. */
|
||||
static unsigned char key_1[] =
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
static unsigned char plaintext_1[] =
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
static const unsigned char ciphertext_1[] =
|
||||
{ 0x1C, 0x19, 0x8A, 0x83, 0x8D, 0xF0, 0x28, 0xB7 };
|
||||
|
||||
static unsigned char key_2[] =
|
||||
{ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
||||
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
|
||||
};
|
||||
static unsigned char plaintext_2[] =
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
static unsigned char ciphertext_2[] =
|
||||
{ 0x50, 0xDC, 0x01, 0x62, 0xBD, 0x75, 0x7F, 0x31 };
|
||||
|
||||
/* This one was checked against libmcrypt's RFC2268. */
|
||||
static unsigned char key_3[] =
|
||||
{ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
static unsigned char plaintext_3[] =
|
||||
{ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
static unsigned char ciphertext_3[] =
|
||||
{ 0x8f, 0xd1, 0x03, 0x89, 0x33, 0x6b, 0xf9, 0x5e };
|
||||
|
||||
|
||||
/* First test. */
|
||||
setkey_core (&ctx, key_1, sizeof(key_1), 0);
|
||||
do_encrypt (&ctx, scratch, plaintext_1);
|
||||
|
||||
if (memcmp (scratch, ciphertext_1, sizeof(ciphertext_1)))
|
||||
return "RFC2268 encryption test 1 failed.";
|
||||
|
||||
setkey_core (&ctx, key_1, sizeof(key_1), 0);
|
||||
do_decrypt (&ctx, scratch, scratch);
|
||||
if (memcmp (scratch, plaintext_1, sizeof(plaintext_1)))
|
||||
return "RFC2268 decryption test 1 failed.";
|
||||
|
||||
/* Second test. */
|
||||
setkey_core (&ctx, key_2, sizeof(key_2), 0);
|
||||
do_encrypt (&ctx, scratch, plaintext_2);
|
||||
if (memcmp (scratch, ciphertext_2, sizeof(ciphertext_2)))
|
||||
return "RFC2268 encryption test 2 failed.";
|
||||
|
||||
setkey_core (&ctx, key_2, sizeof(key_2), 0);
|
||||
do_decrypt (&ctx, scratch, scratch);
|
||||
if (memcmp (scratch, plaintext_2, sizeof(plaintext_2)))
|
||||
return "RFC2268 decryption test 2 failed.";
|
||||
|
||||
/* Third test. */
|
||||
setkey_core(&ctx, key_3, sizeof(key_3), 0);
|
||||
do_encrypt(&ctx, scratch, plaintext_3);
|
||||
|
||||
if (memcmp(scratch, ciphertext_3, sizeof(ciphertext_3)))
|
||||
return "RFC2268 encryption test 3 failed.";
|
||||
|
||||
setkey_core (&ctx, key_3, sizeof(key_3), 0);
|
||||
do_decrypt (&ctx, scratch, scratch);
|
||||
if (memcmp(scratch, plaintext_3, sizeof(plaintext_3)))
|
||||
return "RFC2268 decryption test 3 failed.";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gcry_cipher_oid_spec_t oids_rfc2268_40[] =
|
||||
{
|
||||
/*{ "1.2.840.113549.3.2", GCRY_CIPHER_MODE_CBC },*/
|
||||
/* pbeWithSHAAnd40BitRC2_CBC */
|
||||
{ "1.2.840.113549.1.12.1.6", GCRY_CIPHER_MODE_CBC },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_rfc2268_40 = {
|
||||
"RFC2268_40", NULL, oids_rfc2268_40,
|
||||
RFC2268_BLOCKSIZE, 40, sizeof(RFC2268_context),
|
||||
do_setkey, do_encrypt, do_decrypt
|
||||
};
|
||||
|
||||
1687
jni/libgcrypt/cipher/rijndael-tables.h
Normal file
1687
jni/libgcrypt/cipher/rijndael-tables.h
Normal file
File diff suppressed because it is too large
Load Diff
1253
jni/libgcrypt/cipher/rijndael.c
Normal file
1253
jni/libgcrypt/cipher/rijndael.c
Normal file
File diff suppressed because it is too large
Load Diff
37
jni/libgcrypt/cipher/rmd.h
Normal file
37
jni/libgcrypt/cipher/rmd.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/* rmd.h - RIPE-MD hash functions
|
||||
* 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
|
||||
*/
|
||||
#ifndef G10_RMD_H
|
||||
#define G10_RMD_H
|
||||
|
||||
|
||||
/* We need this here because random.c must have direct access. */
|
||||
typedef struct
|
||||
{
|
||||
u32 h0,h1,h2,h3,h4;
|
||||
u32 nblocks;
|
||||
byte buf[64];
|
||||
int count;
|
||||
} RMD160_CONTEXT;
|
||||
|
||||
void _gcry_rmd160_init ( void *context );
|
||||
void _gcry_rmd160_mixblock ( RMD160_CONTEXT *hd, void *blockof64byte );
|
||||
|
||||
#endif /*G10_RMD_H*/
|
||||
|
||||
572
jni/libgcrypt/cipher/rmd160.c
Normal file
572
jni/libgcrypt/cipher/rmd160.c
Normal file
@@ -0,0 +1,572 @@
|
||||
/* rmd160.c - RIPE-MD160
|
||||
* Copyright (C) 1998, 2001, 2002, 2003 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
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "rmd.h"
|
||||
#include "cipher.h" /* Only used for the rmd160_hash_buffer() prototype. */
|
||||
|
||||
#include "bithelp.h"
|
||||
|
||||
/*********************************
|
||||
* RIPEMD-160 is not patented, see (as of 25.10.97)
|
||||
* http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
|
||||
* Note that the code uses Little Endian byteorder, which is good for
|
||||
* 386 etc, but we must add some conversion when used on a big endian box.
|
||||
*
|
||||
*
|
||||
* Pseudo-code for RIPEMD-160
|
||||
*
|
||||
* RIPEMD-160 is an iterative hash function that operates on 32-bit words.
|
||||
* The round function takes as input a 5-word chaining variable and a 16-word
|
||||
* message block and maps this to a new chaining variable. All operations are
|
||||
* defined on 32-bit words. Padding is identical to that of MD4.
|
||||
*
|
||||
*
|
||||
* RIPEMD-160: definitions
|
||||
*
|
||||
*
|
||||
* nonlinear functions at bit level: exor, mux, -, mux, -
|
||||
*
|
||||
* f(j, x, y, z) = x XOR y XOR z (0 <= j <= 15)
|
||||
* f(j, x, y, z) = (x AND y) OR (NOT(x) AND z) (16 <= j <= 31)
|
||||
* f(j, x, y, z) = (x OR NOT(y)) XOR z (32 <= j <= 47)
|
||||
* f(j, x, y, z) = (x AND z) OR (y AND NOT(z)) (48 <= j <= 63)
|
||||
* f(j, x, y, z) = x XOR (y OR NOT(z)) (64 <= j <= 79)
|
||||
*
|
||||
*
|
||||
* added constants (hexadecimal)
|
||||
*
|
||||
* K(j) = 0x00000000 (0 <= j <= 15)
|
||||
* K(j) = 0x5A827999 (16 <= j <= 31) int(2**30 x sqrt(2))
|
||||
* K(j) = 0x6ED9EBA1 (32 <= j <= 47) int(2**30 x sqrt(3))
|
||||
* K(j) = 0x8F1BBCDC (48 <= j <= 63) int(2**30 x sqrt(5))
|
||||
* K(j) = 0xA953FD4E (64 <= j <= 79) int(2**30 x sqrt(7))
|
||||
* K'(j) = 0x50A28BE6 (0 <= j <= 15) int(2**30 x cbrt(2))
|
||||
* K'(j) = 0x5C4DD124 (16 <= j <= 31) int(2**30 x cbrt(3))
|
||||
* K'(j) = 0x6D703EF3 (32 <= j <= 47) int(2**30 x cbrt(5))
|
||||
* K'(j) = 0x7A6D76E9 (48 <= j <= 63) int(2**30 x cbrt(7))
|
||||
* K'(j) = 0x00000000 (64 <= j <= 79)
|
||||
*
|
||||
*
|
||||
* selection of message word
|
||||
*
|
||||
* r(j) = j (0 <= j <= 15)
|
||||
* r(16..31) = 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8
|
||||
* r(32..47) = 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12
|
||||
* r(48..63) = 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2
|
||||
* r(64..79) = 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
|
||||
* r0(0..15) = 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12
|
||||
* r0(16..31)= 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2
|
||||
* r0(32..47)= 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13
|
||||
* r0(48..63)= 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14
|
||||
* r0(64..79)= 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
|
||||
*
|
||||
*
|
||||
* amount for rotate left (rol)
|
||||
*
|
||||
* s(0..15) = 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8
|
||||
* s(16..31) = 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12
|
||||
* s(32..47) = 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5
|
||||
* s(48..63) = 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12
|
||||
* s(64..79) = 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
|
||||
* s'(0..15) = 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6
|
||||
* s'(16..31)= 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11
|
||||
* s'(32..47)= 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5
|
||||
* s'(48..63)= 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8
|
||||
* s'(64..79)= 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
|
||||
*
|
||||
*
|
||||
* initial value (hexadecimal)
|
||||
*
|
||||
* h0 = 0x67452301; h1 = 0xEFCDAB89; h2 = 0x98BADCFE; h3 = 0x10325476;
|
||||
* h4 = 0xC3D2E1F0;
|
||||
*
|
||||
*
|
||||
* RIPEMD-160: pseudo-code
|
||||
*
|
||||
* It is assumed that the message after padding consists of t 16-word blocks
|
||||
* that will be denoted with X[i][j], with 0 <= i <= t-1 and 0 <= j <= 15.
|
||||
* The symbol [+] denotes addition modulo 2**32 and rol_s denotes cyclic left
|
||||
* shift (rotate) over s positions.
|
||||
*
|
||||
*
|
||||
* for i := 0 to t-1 {
|
||||
* A := h0; B := h1; C := h2; D = h3; E = h4;
|
||||
* A' := h0; B' := h1; C' := h2; D' = h3; E' = h4;
|
||||
* for j := 0 to 79 {
|
||||
* T := rol_s(j)(A [+] f(j, B, C, D) [+] X[i][r(j)] [+] K(j)) [+] E;
|
||||
* A := E; E := D; D := rol_10(C); C := B; B := T;
|
||||
* T := rol_s'(j)(A' [+] f(79-j, B', C', D') [+] X[i][r'(j)]
|
||||
[+] K'(j)) [+] E';
|
||||
* A' := E'; E' := D'; D' := rol_10(C'); C' := B'; B' := T;
|
||||
* }
|
||||
* T := h1 [+] C [+] D'; h1 := h2 [+] D [+] E'; h2 := h3 [+] E [+] A';
|
||||
* h3 := h4 [+] A [+] B'; h4 := h0 [+] B [+] C'; h0 := T;
|
||||
* }
|
||||
*/
|
||||
|
||||
/* Some examples:
|
||||
* "" 9c1185a5c5e9fc54612808977ee8f548b2258d31
|
||||
* "a" 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe
|
||||
* "abc" 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc
|
||||
* "message digest" 5d0689ef49d2fae572b881b123a85ffa21595f36
|
||||
* "a...z" f71c27109c692c1b56bbdceb5b9d2865b3708dbc
|
||||
* "abcdbcde...nopq" 12a053384a9c0c88e405a06c27dcf49ada62eb2b
|
||||
* "A...Za...z0...9" b0e20b6e3116640286ed3a87a5713079b21f5189
|
||||
* 8 times "1234567890" 9b752e45573d4b39f4dbd3323cab82bf63326bfb
|
||||
* 1 million times "a" 52783243c1697bdbe16d37f97f68f08325dc1528
|
||||
*/
|
||||
|
||||
|
||||
void
|
||||
_gcry_rmd160_init (void *context)
|
||||
{
|
||||
RMD160_CONTEXT *hd = context;
|
||||
|
||||
hd->h0 = 0x67452301;
|
||||
hd->h1 = 0xEFCDAB89;
|
||||
hd->h2 = 0x98BADCFE;
|
||||
hd->h3 = 0x10325476;
|
||||
hd->h4 = 0xC3D2E1F0;
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************
|
||||
* Transform the message X which consists of 16 32-bit-words
|
||||
*/
|
||||
static void
|
||||
transform ( RMD160_CONTEXT *hd, const unsigned char *data )
|
||||
{
|
||||
register u32 a,b,c,d,e;
|
||||
u32 aa,bb,cc,dd,ee,t;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
u32 x[16];
|
||||
{
|
||||
int i;
|
||||
byte *p2, *p1;
|
||||
for (i=0, p1=data, p2=(byte*)x; i < 16; i++, p2 += 4 )
|
||||
{
|
||||
p2[3] = *p1++;
|
||||
p2[2] = *p1++;
|
||||
p2[1] = *p1++;
|
||||
p2[0] = *p1++;
|
||||
}
|
||||
}
|
||||
#else
|
||||
/* This version is better because it is always aligned;
|
||||
* The performance penalty on a 586-100 is about 6% which
|
||||
* is acceptable - because the data is more local it might
|
||||
* also be possible that this is faster on some machines.
|
||||
* This function (when compiled with -02 on gcc 2.7.2)
|
||||
* executes on a 586-100 (39.73 bogomips) at about 1900kb/sec;
|
||||
* [measured with a 4MB data and "gpgm --print-md rmd160"] */
|
||||
u32 x[16];
|
||||
memcpy( x, data, 64 );
|
||||
#endif
|
||||
|
||||
|
||||
#define K0 0x00000000
|
||||
#define K1 0x5A827999
|
||||
#define K2 0x6ED9EBA1
|
||||
#define K3 0x8F1BBCDC
|
||||
#define K4 0xA953FD4E
|
||||
#define KK0 0x50A28BE6
|
||||
#define KK1 0x5C4DD124
|
||||
#define KK2 0x6D703EF3
|
||||
#define KK3 0x7A6D76E9
|
||||
#define KK4 0x00000000
|
||||
#define F0(x,y,z) ( (x) ^ (y) ^ (z) )
|
||||
#define F1(x,y,z) ( ((x) & (y)) | (~(x) & (z)) )
|
||||
#define F2(x,y,z) ( ((x) | ~(y)) ^ (z) )
|
||||
#define F3(x,y,z) ( ((x) & (z)) | ((y) & ~(z)) )
|
||||
#define F4(x,y,z) ( (x) ^ ((y) | ~(z)) )
|
||||
#define R(a,b,c,d,e,f,k,r,s) do { t = a + f(b,c,d) + k + x[r]; \
|
||||
a = rol(t,s) + e; \
|
||||
c = rol(c,10); \
|
||||
} while(0)
|
||||
|
||||
/* left lane */
|
||||
a = hd->h0;
|
||||
b = hd->h1;
|
||||
c = hd->h2;
|
||||
d = hd->h3;
|
||||
e = hd->h4;
|
||||
R( a, b, c, d, e, F0, K0, 0, 11 );
|
||||
R( e, a, b, c, d, F0, K0, 1, 14 );
|
||||
R( d, e, a, b, c, F0, K0, 2, 15 );
|
||||
R( c, d, e, a, b, F0, K0, 3, 12 );
|
||||
R( b, c, d, e, a, F0, K0, 4, 5 );
|
||||
R( a, b, c, d, e, F0, K0, 5, 8 );
|
||||
R( e, a, b, c, d, F0, K0, 6, 7 );
|
||||
R( d, e, a, b, c, F0, K0, 7, 9 );
|
||||
R( c, d, e, a, b, F0, K0, 8, 11 );
|
||||
R( b, c, d, e, a, F0, K0, 9, 13 );
|
||||
R( a, b, c, d, e, F0, K0, 10, 14 );
|
||||
R( e, a, b, c, d, F0, K0, 11, 15 );
|
||||
R( d, e, a, b, c, F0, K0, 12, 6 );
|
||||
R( c, d, e, a, b, F0, K0, 13, 7 );
|
||||
R( b, c, d, e, a, F0, K0, 14, 9 );
|
||||
R( a, b, c, d, e, F0, K0, 15, 8 );
|
||||
R( e, a, b, c, d, F1, K1, 7, 7 );
|
||||
R( d, e, a, b, c, F1, K1, 4, 6 );
|
||||
R( c, d, e, a, b, F1, K1, 13, 8 );
|
||||
R( b, c, d, e, a, F1, K1, 1, 13 );
|
||||
R( a, b, c, d, e, F1, K1, 10, 11 );
|
||||
R( e, a, b, c, d, F1, K1, 6, 9 );
|
||||
R( d, e, a, b, c, F1, K1, 15, 7 );
|
||||
R( c, d, e, a, b, F1, K1, 3, 15 );
|
||||
R( b, c, d, e, a, F1, K1, 12, 7 );
|
||||
R( a, b, c, d, e, F1, K1, 0, 12 );
|
||||
R( e, a, b, c, d, F1, K1, 9, 15 );
|
||||
R( d, e, a, b, c, F1, K1, 5, 9 );
|
||||
R( c, d, e, a, b, F1, K1, 2, 11 );
|
||||
R( b, c, d, e, a, F1, K1, 14, 7 );
|
||||
R( a, b, c, d, e, F1, K1, 11, 13 );
|
||||
R( e, a, b, c, d, F1, K1, 8, 12 );
|
||||
R( d, e, a, b, c, F2, K2, 3, 11 );
|
||||
R( c, d, e, a, b, F2, K2, 10, 13 );
|
||||
R( b, c, d, e, a, F2, K2, 14, 6 );
|
||||
R( a, b, c, d, e, F2, K2, 4, 7 );
|
||||
R( e, a, b, c, d, F2, K2, 9, 14 );
|
||||
R( d, e, a, b, c, F2, K2, 15, 9 );
|
||||
R( c, d, e, a, b, F2, K2, 8, 13 );
|
||||
R( b, c, d, e, a, F2, K2, 1, 15 );
|
||||
R( a, b, c, d, e, F2, K2, 2, 14 );
|
||||
R( e, a, b, c, d, F2, K2, 7, 8 );
|
||||
R( d, e, a, b, c, F2, K2, 0, 13 );
|
||||
R( c, d, e, a, b, F2, K2, 6, 6 );
|
||||
R( b, c, d, e, a, F2, K2, 13, 5 );
|
||||
R( a, b, c, d, e, F2, K2, 11, 12 );
|
||||
R( e, a, b, c, d, F2, K2, 5, 7 );
|
||||
R( d, e, a, b, c, F2, K2, 12, 5 );
|
||||
R( c, d, e, a, b, F3, K3, 1, 11 );
|
||||
R( b, c, d, e, a, F3, K3, 9, 12 );
|
||||
R( a, b, c, d, e, F3, K3, 11, 14 );
|
||||
R( e, a, b, c, d, F3, K3, 10, 15 );
|
||||
R( d, e, a, b, c, F3, K3, 0, 14 );
|
||||
R( c, d, e, a, b, F3, K3, 8, 15 );
|
||||
R( b, c, d, e, a, F3, K3, 12, 9 );
|
||||
R( a, b, c, d, e, F3, K3, 4, 8 );
|
||||
R( e, a, b, c, d, F3, K3, 13, 9 );
|
||||
R( d, e, a, b, c, F3, K3, 3, 14 );
|
||||
R( c, d, e, a, b, F3, K3, 7, 5 );
|
||||
R( b, c, d, e, a, F3, K3, 15, 6 );
|
||||
R( a, b, c, d, e, F3, K3, 14, 8 );
|
||||
R( e, a, b, c, d, F3, K3, 5, 6 );
|
||||
R( d, e, a, b, c, F3, K3, 6, 5 );
|
||||
R( c, d, e, a, b, F3, K3, 2, 12 );
|
||||
R( b, c, d, e, a, F4, K4, 4, 9 );
|
||||
R( a, b, c, d, e, F4, K4, 0, 15 );
|
||||
R( e, a, b, c, d, F4, K4, 5, 5 );
|
||||
R( d, e, a, b, c, F4, K4, 9, 11 );
|
||||
R( c, d, e, a, b, F4, K4, 7, 6 );
|
||||
R( b, c, d, e, a, F4, K4, 12, 8 );
|
||||
R( a, b, c, d, e, F4, K4, 2, 13 );
|
||||
R( e, a, b, c, d, F4, K4, 10, 12 );
|
||||
R( d, e, a, b, c, F4, K4, 14, 5 );
|
||||
R( c, d, e, a, b, F4, K4, 1, 12 );
|
||||
R( b, c, d, e, a, F4, K4, 3, 13 );
|
||||
R( a, b, c, d, e, F4, K4, 8, 14 );
|
||||
R( e, a, b, c, d, F4, K4, 11, 11 );
|
||||
R( d, e, a, b, c, F4, K4, 6, 8 );
|
||||
R( c, d, e, a, b, F4, K4, 15, 5 );
|
||||
R( b, c, d, e, a, F4, K4, 13, 6 );
|
||||
|
||||
aa = a; bb = b; cc = c; dd = d; ee = e;
|
||||
|
||||
/* right lane */
|
||||
a = hd->h0;
|
||||
b = hd->h1;
|
||||
c = hd->h2;
|
||||
d = hd->h3;
|
||||
e = hd->h4;
|
||||
R( a, b, c, d, e, F4, KK0, 5, 8);
|
||||
R( e, a, b, c, d, F4, KK0, 14, 9);
|
||||
R( d, e, a, b, c, F4, KK0, 7, 9);
|
||||
R( c, d, e, a, b, F4, KK0, 0, 11);
|
||||
R( b, c, d, e, a, F4, KK0, 9, 13);
|
||||
R( a, b, c, d, e, F4, KK0, 2, 15);
|
||||
R( e, a, b, c, d, F4, KK0, 11, 15);
|
||||
R( d, e, a, b, c, F4, KK0, 4, 5);
|
||||
R( c, d, e, a, b, F4, KK0, 13, 7);
|
||||
R( b, c, d, e, a, F4, KK0, 6, 7);
|
||||
R( a, b, c, d, e, F4, KK0, 15, 8);
|
||||
R( e, a, b, c, d, F4, KK0, 8, 11);
|
||||
R( d, e, a, b, c, F4, KK0, 1, 14);
|
||||
R( c, d, e, a, b, F4, KK0, 10, 14);
|
||||
R( b, c, d, e, a, F4, KK0, 3, 12);
|
||||
R( a, b, c, d, e, F4, KK0, 12, 6);
|
||||
R( e, a, b, c, d, F3, KK1, 6, 9);
|
||||
R( d, e, a, b, c, F3, KK1, 11, 13);
|
||||
R( c, d, e, a, b, F3, KK1, 3, 15);
|
||||
R( b, c, d, e, a, F3, KK1, 7, 7);
|
||||
R( a, b, c, d, e, F3, KK1, 0, 12);
|
||||
R( e, a, b, c, d, F3, KK1, 13, 8);
|
||||
R( d, e, a, b, c, F3, KK1, 5, 9);
|
||||
R( c, d, e, a, b, F3, KK1, 10, 11);
|
||||
R( b, c, d, e, a, F3, KK1, 14, 7);
|
||||
R( a, b, c, d, e, F3, KK1, 15, 7);
|
||||
R( e, a, b, c, d, F3, KK1, 8, 12);
|
||||
R( d, e, a, b, c, F3, KK1, 12, 7);
|
||||
R( c, d, e, a, b, F3, KK1, 4, 6);
|
||||
R( b, c, d, e, a, F3, KK1, 9, 15);
|
||||
R( a, b, c, d, e, F3, KK1, 1, 13);
|
||||
R( e, a, b, c, d, F3, KK1, 2, 11);
|
||||
R( d, e, a, b, c, F2, KK2, 15, 9);
|
||||
R( c, d, e, a, b, F2, KK2, 5, 7);
|
||||
R( b, c, d, e, a, F2, KK2, 1, 15);
|
||||
R( a, b, c, d, e, F2, KK2, 3, 11);
|
||||
R( e, a, b, c, d, F2, KK2, 7, 8);
|
||||
R( d, e, a, b, c, F2, KK2, 14, 6);
|
||||
R( c, d, e, a, b, F2, KK2, 6, 6);
|
||||
R( b, c, d, e, a, F2, KK2, 9, 14);
|
||||
R( a, b, c, d, e, F2, KK2, 11, 12);
|
||||
R( e, a, b, c, d, F2, KK2, 8, 13);
|
||||
R( d, e, a, b, c, F2, KK2, 12, 5);
|
||||
R( c, d, e, a, b, F2, KK2, 2, 14);
|
||||
R( b, c, d, e, a, F2, KK2, 10, 13);
|
||||
R( a, b, c, d, e, F2, KK2, 0, 13);
|
||||
R( e, a, b, c, d, F2, KK2, 4, 7);
|
||||
R( d, e, a, b, c, F2, KK2, 13, 5);
|
||||
R( c, d, e, a, b, F1, KK3, 8, 15);
|
||||
R( b, c, d, e, a, F1, KK3, 6, 5);
|
||||
R( a, b, c, d, e, F1, KK3, 4, 8);
|
||||
R( e, a, b, c, d, F1, KK3, 1, 11);
|
||||
R( d, e, a, b, c, F1, KK3, 3, 14);
|
||||
R( c, d, e, a, b, F1, KK3, 11, 14);
|
||||
R( b, c, d, e, a, F1, KK3, 15, 6);
|
||||
R( a, b, c, d, e, F1, KK3, 0, 14);
|
||||
R( e, a, b, c, d, F1, KK3, 5, 6);
|
||||
R( d, e, a, b, c, F1, KK3, 12, 9);
|
||||
R( c, d, e, a, b, F1, KK3, 2, 12);
|
||||
R( b, c, d, e, a, F1, KK3, 13, 9);
|
||||
R( a, b, c, d, e, F1, KK3, 9, 12);
|
||||
R( e, a, b, c, d, F1, KK3, 7, 5);
|
||||
R( d, e, a, b, c, F1, KK3, 10, 15);
|
||||
R( c, d, e, a, b, F1, KK3, 14, 8);
|
||||
R( b, c, d, e, a, F0, KK4, 12, 8);
|
||||
R( a, b, c, d, e, F0, KK4, 15, 5);
|
||||
R( e, a, b, c, d, F0, KK4, 10, 12);
|
||||
R( d, e, a, b, c, F0, KK4, 4, 9);
|
||||
R( c, d, e, a, b, F0, KK4, 1, 12);
|
||||
R( b, c, d, e, a, F0, KK4, 5, 5);
|
||||
R( a, b, c, d, e, F0, KK4, 8, 14);
|
||||
R( e, a, b, c, d, F0, KK4, 7, 6);
|
||||
R( d, e, a, b, c, F0, KK4, 6, 8);
|
||||
R( c, d, e, a, b, F0, KK4, 2, 13);
|
||||
R( b, c, d, e, a, F0, KK4, 13, 6);
|
||||
R( a, b, c, d, e, F0, KK4, 14, 5);
|
||||
R( e, a, b, c, d, F0, KK4, 0, 15);
|
||||
R( d, e, a, b, c, F0, KK4, 3, 13);
|
||||
R( c, d, e, a, b, F0, KK4, 9, 11);
|
||||
R( b, c, d, e, a, F0, KK4, 11, 11);
|
||||
|
||||
|
||||
t = hd->h1 + d + cc;
|
||||
hd->h1 = hd->h2 + e + dd;
|
||||
hd->h2 = hd->h3 + a + ee;
|
||||
hd->h3 = hd->h4 + b + aa;
|
||||
hd->h4 = hd->h0 + c + bb;
|
||||
hd->h0 = t;
|
||||
}
|
||||
|
||||
|
||||
/* Update the message digest with the contents
|
||||
* of INBUF with length INLEN.
|
||||
*/
|
||||
static void
|
||||
rmd160_write ( void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
RMD160_CONTEXT *hd = context;
|
||||
|
||||
if( hd->count == 64 ) /* flush the buffer */
|
||||
{
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (108+5*sizeof(void*));
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if( !inbuf )
|
||||
return;
|
||||
if( hd->count )
|
||||
{
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
rmd160_write( hd, NULL, 0 );
|
||||
if( !inlen )
|
||||
return;
|
||||
}
|
||||
|
||||
while( inlen >= 64 )
|
||||
{
|
||||
transform( hd, inbuf );
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
inlen -= 64;
|
||||
inbuf += 64;
|
||||
}
|
||||
_gcry_burn_stack (108+5*sizeof(void*));
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
}
|
||||
|
||||
/****************
|
||||
* Apply the rmd160 transform function on the buffer which must have
|
||||
* a length 64 bytes. Do not use this function together with the
|
||||
* other functions, use rmd160_init to initialize internal variables.
|
||||
* Returns: 16 bytes in buffer with the mixed contentes of buffer.
|
||||
*/
|
||||
void
|
||||
_gcry_rmd160_mixblock ( RMD160_CONTEXT *hd, void *blockof64byte )
|
||||
{
|
||||
char *p = blockof64byte;
|
||||
|
||||
transform ( hd, blockof64byte );
|
||||
#define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0)
|
||||
X(0);
|
||||
X(1);
|
||||
X(2);
|
||||
X(3);
|
||||
X(4);
|
||||
#undef X
|
||||
}
|
||||
|
||||
|
||||
/* The routine terminates the computation
|
||||
*/
|
||||
|
||||
static void
|
||||
rmd160_final( void *context )
|
||||
{
|
||||
RMD160_CONTEXT *hd = context;
|
||||
u32 t, msb, lsb;
|
||||
byte *p;
|
||||
|
||||
rmd160_write(hd, NULL, 0); /* flush */;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 64 to make a byte count */
|
||||
lsb = t << 6;
|
||||
msb = t >> 26;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if( (lsb += hd->count) < t )
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 29;
|
||||
|
||||
if( hd->count < 56 ) /* enough room */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad */
|
||||
while( hd->count < 56 )
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else /* need one extra block */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad character */
|
||||
while( hd->count < 64 )
|
||||
hd->buf[hd->count++] = 0;
|
||||
rmd160_write(hd, NULL, 0); /* flush */;
|
||||
memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 64 bit count */
|
||||
hd->buf[56] = lsb ;
|
||||
hd->buf[57] = lsb >> 8;
|
||||
hd->buf[58] = lsb >> 16;
|
||||
hd->buf[59] = lsb >> 24;
|
||||
hd->buf[60] = msb ;
|
||||
hd->buf[61] = msb >> 8;
|
||||
hd->buf[62] = msb >> 16;
|
||||
hd->buf[63] = msb >> 24;
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (108+5*sizeof(void*));
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *p++ = hd->h##a ; *p++ = hd->h##a >> 8; \
|
||||
*p++ = hd->h##a >> 16; *p++ = hd->h##a >> 24; } while(0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0)
|
||||
#endif
|
||||
X(0);
|
||||
X(1);
|
||||
X(2);
|
||||
X(3);
|
||||
X(4);
|
||||
#undef X
|
||||
}
|
||||
|
||||
static byte *
|
||||
rmd160_read( void *context )
|
||||
{
|
||||
RMD160_CONTEXT *hd = context;
|
||||
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************
|
||||
* Shortcut functions which puts the hash value of the supplied buffer
|
||||
* into outbuf which must have a size of 20 bytes.
|
||||
*/
|
||||
void
|
||||
_gcry_rmd160_hash_buffer (void *outbuf, const void *buffer, size_t length )
|
||||
{
|
||||
RMD160_CONTEXT hd;
|
||||
|
||||
_gcry_rmd160_init ( &hd );
|
||||
rmd160_write ( &hd, buffer, length );
|
||||
rmd160_final ( &hd );
|
||||
memcpy ( outbuf, hd.buf, 20 );
|
||||
}
|
||||
|
||||
static byte asn[15] = /* Object ID is 1.3.36.3.2.1 */
|
||||
{ 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x24, 0x03,
|
||||
0x02, 0x01, 0x05, 0x00, 0x04, 0x14 };
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_rmd160[] =
|
||||
{
|
||||
/* rsaSignatureWithripemd160 */
|
||||
{ "1.3.36.3.3.1.2" },
|
||||
/* TeleTrust hash algorithm. */
|
||||
{ "1.3.36.3.2.1" },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_rmd160 =
|
||||
{
|
||||
"RIPEMD160", asn, DIM (asn), oid_spec_rmd160, 20,
|
||||
_gcry_rmd160_init, rmd160_write, rmd160_final, rmd160_read,
|
||||
sizeof (RMD160_CONTEXT)
|
||||
};
|
||||
1379
jni/libgcrypt/cipher/rsa.c
Normal file
1379
jni/libgcrypt/cipher/rsa.c
Normal file
File diff suppressed because it is too large
Load Diff
478
jni/libgcrypt/cipher/seed.c
Normal file
478
jni/libgcrypt/cipher/seed.c
Normal file
@@ -0,0 +1,478 @@
|
||||
/* SEED for libgcrypt
|
||||
* Copyright (C) 2006 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
|
||||
*
|
||||
* --
|
||||
* This implementation was provided for libgcrypt in public domain
|
||||
* by Hye-Shik Chang <perky@FreeBSD.org>, July 2006.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "types.h" /* for byte and u32 typedefs */
|
||||
#include "g10lib.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#define NUMKC 16
|
||||
|
||||
#define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ \
|
||||
((u32)(pt)[2] << 8) ^ ((u32)(pt)[3]))
|
||||
#define PUTU32(ct, st) { (ct)[0] = (byte)((st) >> 24); \
|
||||
(ct)[1] = (byte)((st) >> 16); \
|
||||
(ct)[2] = (byte)((st) >> 8); \
|
||||
(ct)[3] = (byte)(st); }
|
||||
|
||||
union wordbuf
|
||||
{
|
||||
u32 w;
|
||||
byte b[4];
|
||||
};
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define b0 b[3]
|
||||
#define b1 b[2]
|
||||
#define b2 b[1]
|
||||
#define b3 b[0]
|
||||
#else
|
||||
#define b0 b[0]
|
||||
#define b1 b[1]
|
||||
#define b2 b[2]
|
||||
#define b3 b[3]
|
||||
#endif
|
||||
|
||||
static const char *selftest(void);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 keyschedule[32];
|
||||
} SEED_context;
|
||||
|
||||
static const u32 SS0[256] = {
|
||||
0x2989a1a8, 0x05858184, 0x16c6d2d4, 0x13c3d3d0, 0x14445054, 0x1d0d111c,
|
||||
0x2c8ca0ac, 0x25052124, 0x1d4d515c, 0x03434340, 0x18081018, 0x1e0e121c,
|
||||
0x11415150, 0x3cccf0fc, 0x0acac2c8, 0x23436360, 0x28082028, 0x04444044,
|
||||
0x20002020, 0x1d8d919c, 0x20c0e0e0, 0x22c2e2e0, 0x08c8c0c8, 0x17071314,
|
||||
0x2585a1a4, 0x0f8f838c, 0x03030300, 0x3b4b7378, 0x3b8bb3b8, 0x13031310,
|
||||
0x12c2d2d0, 0x2ecee2ec, 0x30407070, 0x0c8c808c, 0x3f0f333c, 0x2888a0a8,
|
||||
0x32023230, 0x1dcdd1dc, 0x36c6f2f4, 0x34447074, 0x2ccce0ec, 0x15859194,
|
||||
0x0b0b0308, 0x17475354, 0x1c4c505c, 0x1b4b5358, 0x3d8db1bc, 0x01010100,
|
||||
0x24042024, 0x1c0c101c, 0x33437370, 0x18889098, 0x10001010, 0x0cccc0cc,
|
||||
0x32c2f2f0, 0x19c9d1d8, 0x2c0c202c, 0x27c7e3e4, 0x32427270, 0x03838380,
|
||||
0x1b8b9398, 0x11c1d1d0, 0x06868284, 0x09c9c1c8, 0x20406060, 0x10405050,
|
||||
0x2383a3a0, 0x2bcbe3e8, 0x0d0d010c, 0x3686b2b4, 0x1e8e929c, 0x0f4f434c,
|
||||
0x3787b3b4, 0x1a4a5258, 0x06c6c2c4, 0x38487078, 0x2686a2a4, 0x12021210,
|
||||
0x2f8fa3ac, 0x15c5d1d4, 0x21416160, 0x03c3c3c0, 0x3484b0b4, 0x01414140,
|
||||
0x12425250, 0x3d4d717c, 0x0d8d818c, 0x08080008, 0x1f0f131c, 0x19899198,
|
||||
0x00000000, 0x19091118, 0x04040004, 0x13435350, 0x37c7f3f4, 0x21c1e1e0,
|
||||
0x3dcdf1fc, 0x36467274, 0x2f0f232c, 0x27072324, 0x3080b0b0, 0x0b8b8388,
|
||||
0x0e0e020c, 0x2b8ba3a8, 0x2282a2a0, 0x2e4e626c, 0x13839390, 0x0d4d414c,
|
||||
0x29496168, 0x3c4c707c, 0x09090108, 0x0a0a0208, 0x3f8fb3bc, 0x2fcfe3ec,
|
||||
0x33c3f3f0, 0x05c5c1c4, 0x07878384, 0x14041014, 0x3ecef2fc, 0x24446064,
|
||||
0x1eced2dc, 0x2e0e222c, 0x0b4b4348, 0x1a0a1218, 0x06060204, 0x21012120,
|
||||
0x2b4b6368, 0x26466264, 0x02020200, 0x35c5f1f4, 0x12829290, 0x0a8a8288,
|
||||
0x0c0c000c, 0x3383b3b0, 0x3e4e727c, 0x10c0d0d0, 0x3a4a7278, 0x07474344,
|
||||
0x16869294, 0x25c5e1e4, 0x26062224, 0x00808080, 0x2d8da1ac, 0x1fcfd3dc,
|
||||
0x2181a1a0, 0x30003030, 0x37073334, 0x2e8ea2ac, 0x36063234, 0x15051114,
|
||||
0x22022220, 0x38083038, 0x34c4f0f4, 0x2787a3a4, 0x05454144, 0x0c4c404c,
|
||||
0x01818180, 0x29c9e1e8, 0x04848084, 0x17879394, 0x35053134, 0x0bcbc3c8,
|
||||
0x0ecec2cc, 0x3c0c303c, 0x31417170, 0x11011110, 0x07c7c3c4, 0x09898188,
|
||||
0x35457174, 0x3bcbf3f8, 0x1acad2d8, 0x38c8f0f8, 0x14849094, 0x19495158,
|
||||
0x02828280, 0x04c4c0c4, 0x3fcff3fc, 0x09494148, 0x39093138, 0x27476364,
|
||||
0x00c0c0c0, 0x0fcfc3cc, 0x17c7d3d4, 0x3888b0b8, 0x0f0f030c, 0x0e8e828c,
|
||||
0x02424240, 0x23032320, 0x11819190, 0x2c4c606c, 0x1bcbd3d8, 0x2484a0a4,
|
||||
0x34043034, 0x31c1f1f0, 0x08484048, 0x02c2c2c0, 0x2f4f636c, 0x3d0d313c,
|
||||
0x2d0d212c, 0x00404040, 0x3e8eb2bc, 0x3e0e323c, 0x3c8cb0bc, 0x01c1c1c0,
|
||||
0x2a8aa2a8, 0x3a8ab2b8, 0x0e4e424c, 0x15455154, 0x3b0b3338, 0x1cccd0dc,
|
||||
0x28486068, 0x3f4f737c, 0x1c8c909c, 0x18c8d0d8, 0x0a4a4248, 0x16465254,
|
||||
0x37477374, 0x2080a0a0, 0x2dcde1ec, 0x06464244, 0x3585b1b4, 0x2b0b2328,
|
||||
0x25456164, 0x3acaf2f8, 0x23c3e3e0, 0x3989b1b8, 0x3181b1b0, 0x1f8f939c,
|
||||
0x1e4e525c, 0x39c9f1f8, 0x26c6e2e4, 0x3282b2b0, 0x31013130, 0x2acae2e8,
|
||||
0x2d4d616c, 0x1f4f535c, 0x24c4e0e4, 0x30c0f0f0, 0x0dcdc1cc, 0x08888088,
|
||||
0x16061214, 0x3a0a3238, 0x18485058, 0x14c4d0d4, 0x22426260, 0x29092128,
|
||||
0x07070304, 0x33033330, 0x28c8e0e8, 0x1b0b1318, 0x05050104, 0x39497178,
|
||||
0x10809090, 0x2a4a6268, 0x2a0a2228, 0x1a8a9298,
|
||||
};
|
||||
|
||||
static const u32 SS1[256] = {
|
||||
0x38380830, 0xe828c8e0, 0x2c2d0d21, 0xa42686a2, 0xcc0fcfc3, 0xdc1eced2,
|
||||
0xb03383b3, 0xb83888b0, 0xac2f8fa3, 0x60204060, 0x54154551, 0xc407c7c3,
|
||||
0x44044440, 0x6c2f4f63, 0x682b4b63, 0x581b4b53, 0xc003c3c3, 0x60224262,
|
||||
0x30330333, 0xb43585b1, 0x28290921, 0xa02080a0, 0xe022c2e2, 0xa42787a3,
|
||||
0xd013c3d3, 0x90118191, 0x10110111, 0x04060602, 0x1c1c0c10, 0xbc3c8cb0,
|
||||
0x34360632, 0x480b4b43, 0xec2fcfe3, 0x88088880, 0x6c2c4c60, 0xa82888a0,
|
||||
0x14170713, 0xc404c4c0, 0x14160612, 0xf434c4f0, 0xc002c2c2, 0x44054541,
|
||||
0xe021c1e1, 0xd416c6d2, 0x3c3f0f33, 0x3c3d0d31, 0x8c0e8e82, 0x98188890,
|
||||
0x28280820, 0x4c0e4e42, 0xf436c6f2, 0x3c3e0e32, 0xa42585a1, 0xf839c9f1,
|
||||
0x0c0d0d01, 0xdc1fcfd3, 0xd818c8d0, 0x282b0b23, 0x64264662, 0x783a4a72,
|
||||
0x24270723, 0x2c2f0f23, 0xf031c1f1, 0x70324272, 0x40024242, 0xd414c4d0,
|
||||
0x40014141, 0xc000c0c0, 0x70334373, 0x64274763, 0xac2c8ca0, 0x880b8b83,
|
||||
0xf437c7f3, 0xac2d8da1, 0x80008080, 0x1c1f0f13, 0xc80acac2, 0x2c2c0c20,
|
||||
0xa82a8aa2, 0x34340430, 0xd012c2d2, 0x080b0b03, 0xec2ecee2, 0xe829c9e1,
|
||||
0x5c1d4d51, 0x94148490, 0x18180810, 0xf838c8f0, 0x54174753, 0xac2e8ea2,
|
||||
0x08080800, 0xc405c5c1, 0x10130313, 0xcc0dcdc1, 0x84068682, 0xb83989b1,
|
||||
0xfc3fcff3, 0x7c3d4d71, 0xc001c1c1, 0x30310131, 0xf435c5f1, 0x880a8a82,
|
||||
0x682a4a62, 0xb03181b1, 0xd011c1d1, 0x20200020, 0xd417c7d3, 0x00020202,
|
||||
0x20220222, 0x04040400, 0x68284860, 0x70314171, 0x04070703, 0xd81bcbd3,
|
||||
0x9c1d8d91, 0x98198991, 0x60214161, 0xbc3e8eb2, 0xe426c6e2, 0x58194951,
|
||||
0xdc1dcdd1, 0x50114151, 0x90108090, 0xdc1cccd0, 0x981a8a92, 0xa02383a3,
|
||||
0xa82b8ba3, 0xd010c0d0, 0x80018181, 0x0c0f0f03, 0x44074743, 0x181a0a12,
|
||||
0xe023c3e3, 0xec2ccce0, 0x8c0d8d81, 0xbc3f8fb3, 0x94168692, 0x783b4b73,
|
||||
0x5c1c4c50, 0xa02282a2, 0xa02181a1, 0x60234363, 0x20230323, 0x4c0d4d41,
|
||||
0xc808c8c0, 0x9c1e8e92, 0x9c1c8c90, 0x383a0a32, 0x0c0c0c00, 0x2c2e0e22,
|
||||
0xb83a8ab2, 0x6c2e4e62, 0x9c1f8f93, 0x581a4a52, 0xf032c2f2, 0x90128292,
|
||||
0xf033c3f3, 0x48094941, 0x78384870, 0xcc0cccc0, 0x14150511, 0xf83bcbf3,
|
||||
0x70304070, 0x74354571, 0x7c3f4f73, 0x34350531, 0x10100010, 0x00030303,
|
||||
0x64244460, 0x6c2d4d61, 0xc406c6c2, 0x74344470, 0xd415c5d1, 0xb43484b0,
|
||||
0xe82acae2, 0x08090901, 0x74364672, 0x18190911, 0xfc3ecef2, 0x40004040,
|
||||
0x10120212, 0xe020c0e0, 0xbc3d8db1, 0x04050501, 0xf83acaf2, 0x00010101,
|
||||
0xf030c0f0, 0x282a0a22, 0x5c1e4e52, 0xa82989a1, 0x54164652, 0x40034343,
|
||||
0x84058581, 0x14140410, 0x88098981, 0x981b8b93, 0xb03080b0, 0xe425c5e1,
|
||||
0x48084840, 0x78394971, 0x94178793, 0xfc3cccf0, 0x1c1e0e12, 0x80028282,
|
||||
0x20210121, 0x8c0c8c80, 0x181b0b13, 0x5c1f4f53, 0x74374773, 0x54144450,
|
||||
0xb03282b2, 0x1c1d0d11, 0x24250521, 0x4c0f4f43, 0x00000000, 0x44064642,
|
||||
0xec2dcde1, 0x58184850, 0x50124252, 0xe82bcbe3, 0x7c3e4e72, 0xd81acad2,
|
||||
0xc809c9c1, 0xfc3dcdf1, 0x30300030, 0x94158591, 0x64254561, 0x3c3c0c30,
|
||||
0xb43686b2, 0xe424c4e0, 0xb83b8bb3, 0x7c3c4c70, 0x0c0e0e02, 0x50104050,
|
||||
0x38390931, 0x24260622, 0x30320232, 0x84048480, 0x68294961, 0x90138393,
|
||||
0x34370733, 0xe427c7e3, 0x24240420, 0xa42484a0, 0xc80bcbc3, 0x50134353,
|
||||
0x080a0a02, 0x84078783, 0xd819c9d1, 0x4c0c4c40, 0x80038383, 0x8c0f8f83,
|
||||
0xcc0ecec2, 0x383b0b33, 0x480a4a42, 0xb43787b3,
|
||||
};
|
||||
|
||||
static const u32 SS2[256] = {
|
||||
0xa1a82989, 0x81840585, 0xd2d416c6, 0xd3d013c3, 0x50541444, 0x111c1d0d,
|
||||
0xa0ac2c8c, 0x21242505, 0x515c1d4d, 0x43400343, 0x10181808, 0x121c1e0e,
|
||||
0x51501141, 0xf0fc3ccc, 0xc2c80aca, 0x63602343, 0x20282808, 0x40440444,
|
||||
0x20202000, 0x919c1d8d, 0xe0e020c0, 0xe2e022c2, 0xc0c808c8, 0x13141707,
|
||||
0xa1a42585, 0x838c0f8f, 0x03000303, 0x73783b4b, 0xb3b83b8b, 0x13101303,
|
||||
0xd2d012c2, 0xe2ec2ece, 0x70703040, 0x808c0c8c, 0x333c3f0f, 0xa0a82888,
|
||||
0x32303202, 0xd1dc1dcd, 0xf2f436c6, 0x70743444, 0xe0ec2ccc, 0x91941585,
|
||||
0x03080b0b, 0x53541747, 0x505c1c4c, 0x53581b4b, 0xb1bc3d8d, 0x01000101,
|
||||
0x20242404, 0x101c1c0c, 0x73703343, 0x90981888, 0x10101000, 0xc0cc0ccc,
|
||||
0xf2f032c2, 0xd1d819c9, 0x202c2c0c, 0xe3e427c7, 0x72703242, 0x83800383,
|
||||
0x93981b8b, 0xd1d011c1, 0x82840686, 0xc1c809c9, 0x60602040, 0x50501040,
|
||||
0xa3a02383, 0xe3e82bcb, 0x010c0d0d, 0xb2b43686, 0x929c1e8e, 0x434c0f4f,
|
||||
0xb3b43787, 0x52581a4a, 0xc2c406c6, 0x70783848, 0xa2a42686, 0x12101202,
|
||||
0xa3ac2f8f, 0xd1d415c5, 0x61602141, 0xc3c003c3, 0xb0b43484, 0x41400141,
|
||||
0x52501242, 0x717c3d4d, 0x818c0d8d, 0x00080808, 0x131c1f0f, 0x91981989,
|
||||
0x00000000, 0x11181909, 0x00040404, 0x53501343, 0xf3f437c7, 0xe1e021c1,
|
||||
0xf1fc3dcd, 0x72743646, 0x232c2f0f, 0x23242707, 0xb0b03080, 0x83880b8b,
|
||||
0x020c0e0e, 0xa3a82b8b, 0xa2a02282, 0x626c2e4e, 0x93901383, 0x414c0d4d,
|
||||
0x61682949, 0x707c3c4c, 0x01080909, 0x02080a0a, 0xb3bc3f8f, 0xe3ec2fcf,
|
||||
0xf3f033c3, 0xc1c405c5, 0x83840787, 0x10141404, 0xf2fc3ece, 0x60642444,
|
||||
0xd2dc1ece, 0x222c2e0e, 0x43480b4b, 0x12181a0a, 0x02040606, 0x21202101,
|
||||
0x63682b4b, 0x62642646, 0x02000202, 0xf1f435c5, 0x92901282, 0x82880a8a,
|
||||
0x000c0c0c, 0xb3b03383, 0x727c3e4e, 0xd0d010c0, 0x72783a4a, 0x43440747,
|
||||
0x92941686, 0xe1e425c5, 0x22242606, 0x80800080, 0xa1ac2d8d, 0xd3dc1fcf,
|
||||
0xa1a02181, 0x30303000, 0x33343707, 0xa2ac2e8e, 0x32343606, 0x11141505,
|
||||
0x22202202, 0x30383808, 0xf0f434c4, 0xa3a42787, 0x41440545, 0x404c0c4c,
|
||||
0x81800181, 0xe1e829c9, 0x80840484, 0x93941787, 0x31343505, 0xc3c80bcb,
|
||||
0xc2cc0ece, 0x303c3c0c, 0x71703141, 0x11101101, 0xc3c407c7, 0x81880989,
|
||||
0x71743545, 0xf3f83bcb, 0xd2d81aca, 0xf0f838c8, 0x90941484, 0x51581949,
|
||||
0x82800282, 0xc0c404c4, 0xf3fc3fcf, 0x41480949, 0x31383909, 0x63642747,
|
||||
0xc0c000c0, 0xc3cc0fcf, 0xd3d417c7, 0xb0b83888, 0x030c0f0f, 0x828c0e8e,
|
||||
0x42400242, 0x23202303, 0x91901181, 0x606c2c4c, 0xd3d81bcb, 0xa0a42484,
|
||||
0x30343404, 0xf1f031c1, 0x40480848, 0xc2c002c2, 0x636c2f4f, 0x313c3d0d,
|
||||
0x212c2d0d, 0x40400040, 0xb2bc3e8e, 0x323c3e0e, 0xb0bc3c8c, 0xc1c001c1,
|
||||
0xa2a82a8a, 0xb2b83a8a, 0x424c0e4e, 0x51541545, 0x33383b0b, 0xd0dc1ccc,
|
||||
0x60682848, 0x737c3f4f, 0x909c1c8c, 0xd0d818c8, 0x42480a4a, 0x52541646,
|
||||
0x73743747, 0xa0a02080, 0xe1ec2dcd, 0x42440646, 0xb1b43585, 0x23282b0b,
|
||||
0x61642545, 0xf2f83aca, 0xe3e023c3, 0xb1b83989, 0xb1b03181, 0x939c1f8f,
|
||||
0x525c1e4e, 0xf1f839c9, 0xe2e426c6, 0xb2b03282, 0x31303101, 0xe2e82aca,
|
||||
0x616c2d4d, 0x535c1f4f, 0xe0e424c4, 0xf0f030c0, 0xc1cc0dcd, 0x80880888,
|
||||
0x12141606, 0x32383a0a, 0x50581848, 0xd0d414c4, 0x62602242, 0x21282909,
|
||||
0x03040707, 0x33303303, 0xe0e828c8, 0x13181b0b, 0x01040505, 0x71783949,
|
||||
0x90901080, 0x62682a4a, 0x22282a0a, 0x92981a8a,
|
||||
};
|
||||
|
||||
static const u32 SS3[256] = {
|
||||
0x08303838, 0xc8e0e828, 0x0d212c2d, 0x86a2a426, 0xcfc3cc0f, 0xced2dc1e,
|
||||
0x83b3b033, 0x88b0b838, 0x8fa3ac2f, 0x40606020, 0x45515415, 0xc7c3c407,
|
||||
0x44404404, 0x4f636c2f, 0x4b63682b, 0x4b53581b, 0xc3c3c003, 0x42626022,
|
||||
0x03333033, 0x85b1b435, 0x09212829, 0x80a0a020, 0xc2e2e022, 0x87a3a427,
|
||||
0xc3d3d013, 0x81919011, 0x01111011, 0x06020406, 0x0c101c1c, 0x8cb0bc3c,
|
||||
0x06323436, 0x4b43480b, 0xcfe3ec2f, 0x88808808, 0x4c606c2c, 0x88a0a828,
|
||||
0x07131417, 0xc4c0c404, 0x06121416, 0xc4f0f434, 0xc2c2c002, 0x45414405,
|
||||
0xc1e1e021, 0xc6d2d416, 0x0f333c3f, 0x0d313c3d, 0x8e828c0e, 0x88909818,
|
||||
0x08202828, 0x4e424c0e, 0xc6f2f436, 0x0e323c3e, 0x85a1a425, 0xc9f1f839,
|
||||
0x0d010c0d, 0xcfd3dc1f, 0xc8d0d818, 0x0b23282b, 0x46626426, 0x4a72783a,
|
||||
0x07232427, 0x0f232c2f, 0xc1f1f031, 0x42727032, 0x42424002, 0xc4d0d414,
|
||||
0x41414001, 0xc0c0c000, 0x43737033, 0x47636427, 0x8ca0ac2c, 0x8b83880b,
|
||||
0xc7f3f437, 0x8da1ac2d, 0x80808000, 0x0f131c1f, 0xcac2c80a, 0x0c202c2c,
|
||||
0x8aa2a82a, 0x04303434, 0xc2d2d012, 0x0b03080b, 0xcee2ec2e, 0xc9e1e829,
|
||||
0x4d515c1d, 0x84909414, 0x08101818, 0xc8f0f838, 0x47535417, 0x8ea2ac2e,
|
||||
0x08000808, 0xc5c1c405, 0x03131013, 0xcdc1cc0d, 0x86828406, 0x89b1b839,
|
||||
0xcff3fc3f, 0x4d717c3d, 0xc1c1c001, 0x01313031, 0xc5f1f435, 0x8a82880a,
|
||||
0x4a62682a, 0x81b1b031, 0xc1d1d011, 0x00202020, 0xc7d3d417, 0x02020002,
|
||||
0x02222022, 0x04000404, 0x48606828, 0x41717031, 0x07030407, 0xcbd3d81b,
|
||||
0x8d919c1d, 0x89919819, 0x41616021, 0x8eb2bc3e, 0xc6e2e426, 0x49515819,
|
||||
0xcdd1dc1d, 0x41515011, 0x80909010, 0xccd0dc1c, 0x8a92981a, 0x83a3a023,
|
||||
0x8ba3a82b, 0xc0d0d010, 0x81818001, 0x0f030c0f, 0x47434407, 0x0a12181a,
|
||||
0xc3e3e023, 0xcce0ec2c, 0x8d818c0d, 0x8fb3bc3f, 0x86929416, 0x4b73783b,
|
||||
0x4c505c1c, 0x82a2a022, 0x81a1a021, 0x43636023, 0x03232023, 0x4d414c0d,
|
||||
0xc8c0c808, 0x8e929c1e, 0x8c909c1c, 0x0a32383a, 0x0c000c0c, 0x0e222c2e,
|
||||
0x8ab2b83a, 0x4e626c2e, 0x8f939c1f, 0x4a52581a, 0xc2f2f032, 0x82929012,
|
||||
0xc3f3f033, 0x49414809, 0x48707838, 0xccc0cc0c, 0x05111415, 0xcbf3f83b,
|
||||
0x40707030, 0x45717435, 0x4f737c3f, 0x05313435, 0x00101010, 0x03030003,
|
||||
0x44606424, 0x4d616c2d, 0xc6c2c406, 0x44707434, 0xc5d1d415, 0x84b0b434,
|
||||
0xcae2e82a, 0x09010809, 0x46727436, 0x09111819, 0xcef2fc3e, 0x40404000,
|
||||
0x02121012, 0xc0e0e020, 0x8db1bc3d, 0x05010405, 0xcaf2f83a, 0x01010001,
|
||||
0xc0f0f030, 0x0a22282a, 0x4e525c1e, 0x89a1a829, 0x46525416, 0x43434003,
|
||||
0x85818405, 0x04101414, 0x89818809, 0x8b93981b, 0x80b0b030, 0xc5e1e425,
|
||||
0x48404808, 0x49717839, 0x87939417, 0xccf0fc3c, 0x0e121c1e, 0x82828002,
|
||||
0x01212021, 0x8c808c0c, 0x0b13181b, 0x4f535c1f, 0x47737437, 0x44505414,
|
||||
0x82b2b032, 0x0d111c1d, 0x05212425, 0x4f434c0f, 0x00000000, 0x46424406,
|
||||
0xcde1ec2d, 0x48505818, 0x42525012, 0xcbe3e82b, 0x4e727c3e, 0xcad2d81a,
|
||||
0xc9c1c809, 0xcdf1fc3d, 0x00303030, 0x85919415, 0x45616425, 0x0c303c3c,
|
||||
0x86b2b436, 0xc4e0e424, 0x8bb3b83b, 0x4c707c3c, 0x0e020c0e, 0x40505010,
|
||||
0x09313839, 0x06222426, 0x02323032, 0x84808404, 0x49616829, 0x83939013,
|
||||
0x07333437, 0xc7e3e427, 0x04202424, 0x84a0a424, 0xcbc3c80b, 0x43535013,
|
||||
0x0a02080a, 0x87838407, 0xc9d1d819, 0x4c404c0c, 0x83838003, 0x8f838c0f,
|
||||
0xcec2cc0e, 0x0b33383b, 0x4a42480a, 0x87b3b437,
|
||||
};
|
||||
|
||||
static const u32 KC[NUMKC] = {
|
||||
0x9e3779b9, 0x3c6ef373, 0x78dde6e6, 0xf1bbcdcc,
|
||||
0xe3779b99, 0xc6ef3733, 0x8dde6e67, 0x1bbcdccf,
|
||||
0x3779b99e, 0x6ef3733c, 0xdde6e678, 0xbbcdccf1,
|
||||
0x779b99e3, 0xef3733c6, 0xde6e678d, 0xbcdccf1b,
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Perform the key setup.
|
||||
*/
|
||||
static gcry_err_code_t
|
||||
do_setkey (SEED_context *ctx, const byte *key, const unsigned keylen)
|
||||
{
|
||||
static int initialized = 0;
|
||||
static const char *selftest_failed=0;
|
||||
u32 x1, x2, x3, x4;
|
||||
union wordbuf t0, t1;
|
||||
u32 *keyout = ctx->keyschedule;
|
||||
int i;
|
||||
|
||||
if (!initialized)
|
||||
{
|
||||
initialized = 1;
|
||||
selftest_failed = selftest ();
|
||||
if( selftest_failed )
|
||||
log_error ("%s\n", selftest_failed );
|
||||
}
|
||||
if (selftest_failed)
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
|
||||
if (keylen != 16)
|
||||
return GPG_ERR_INV_KEYLEN;
|
||||
|
||||
x1 = GETU32 (key);
|
||||
x2 = GETU32 (key+4);
|
||||
x3 = GETU32 (key+8);
|
||||
x4 = GETU32 (key+12);
|
||||
|
||||
for (i = 0; i < NUMKC; i++)
|
||||
{
|
||||
t0.w = x1 + x3 - KC[i];
|
||||
t1.w = x2 + KC[i] - x4;
|
||||
*(keyout++) = SS0[t0.b0] ^ SS1[t0.b1] ^ SS2[t0.b2] ^ SS3[t0.b3];
|
||||
*(keyout++) = SS0[t1.b0] ^ SS1[t1.b1] ^ SS2[t1.b2] ^ SS3[t1.b3];
|
||||
|
||||
if (i % 2 == 0)
|
||||
{
|
||||
t0.w = x1;
|
||||
x1 = (x1>>8) ^ (x2<<24);
|
||||
x2 = (x2>>8) ^ (t0.w<<24);
|
||||
}
|
||||
else
|
||||
{
|
||||
t0.w = x3;
|
||||
x3 = (x3<<8) ^ (x4>>24);
|
||||
x4 = (x4<<8) ^ (t0.w>>24);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static gcry_err_code_t
|
||||
seed_setkey (void *context, const byte *key, const unsigned keylen)
|
||||
{
|
||||
SEED_context *ctx = context;
|
||||
|
||||
int rc = do_setkey (ctx, key, keylen);
|
||||
_gcry_burn_stack (4*6 + sizeof(void*)*2 + sizeof(int)*2);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define OP(X1, X2, X3, X4, rbase) \
|
||||
t0.w = X3 ^ ctx->keyschedule[rbase]; \
|
||||
t1.w = X4 ^ ctx->keyschedule[rbase+1]; \
|
||||
t1.w ^= t0.w; \
|
||||
t1.w = SS0[t1.b0] ^ SS1[t1.b1] ^ SS2[t1.b2] ^ SS3[t1.b3]; \
|
||||
t0.w += t1.w; \
|
||||
t0.w = SS0[t0.b0] ^ SS1[t0.b1] ^ SS2[t0.b2] ^ SS3[t0.b3]; \
|
||||
t1.w += t0.w; \
|
||||
t1.w = SS0[t1.b0] ^ SS1[t1.b1] ^ SS2[t1.b2] ^ SS3[t1.b3]; \
|
||||
t0.w += t1.w; \
|
||||
X1 ^= t0.w; \
|
||||
X2 ^= t1.w;
|
||||
|
||||
/* Encrypt one block. inbuf and outbuf may be the same. */
|
||||
static void
|
||||
do_encrypt (const SEED_context *ctx, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
u32 x1, x2, x3, x4;
|
||||
union wordbuf t0, t1;
|
||||
|
||||
x1 = GETU32 (inbuf);
|
||||
x2 = GETU32 (inbuf+4);
|
||||
x3 = GETU32 (inbuf+8);
|
||||
x4 = GETU32 (inbuf+12);
|
||||
|
||||
OP (x1, x2, x3, x4, 0);
|
||||
OP (x3, x4, x1, x2, 2);
|
||||
OP (x1, x2, x3, x4, 4);
|
||||
OP (x3, x4, x1, x2, 6);
|
||||
OP (x1, x2, x3, x4, 8);
|
||||
OP (x3, x4, x1, x2, 10);
|
||||
OP (x1, x2, x3, x4, 12);
|
||||
OP (x3, x4, x1, x2, 14);
|
||||
OP (x1, x2, x3, x4, 16);
|
||||
OP (x3, x4, x1, x2, 18);
|
||||
OP (x1, x2, x3, x4, 20);
|
||||
OP (x3, x4, x1, x2, 22);
|
||||
OP (x1, x2, x3, x4, 24);
|
||||
OP (x3, x4, x1, x2, 26);
|
||||
OP (x1, x2, x3, x4, 28);
|
||||
OP (x3, x4, x1, x2, 30);
|
||||
|
||||
PUTU32 (outbuf, x3);
|
||||
PUTU32 (outbuf+4, x4);
|
||||
PUTU32 (outbuf+8, x1);
|
||||
PUTU32 (outbuf+12, x2);
|
||||
}
|
||||
|
||||
static void
|
||||
seed_encrypt (void *context, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
SEED_context *ctx = context;
|
||||
|
||||
do_encrypt (ctx, outbuf, inbuf);
|
||||
_gcry_burn_stack (4*6);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Decrypt one block. inbuf and outbuf may be the same. */
|
||||
static void
|
||||
do_decrypt (SEED_context *ctx, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
u32 x1, x2, x3, x4;
|
||||
union wordbuf t0, t1;
|
||||
|
||||
x1 = GETU32 (inbuf);
|
||||
x2 = GETU32 (inbuf+4);
|
||||
x3 = GETU32 (inbuf+8);
|
||||
x4 = GETU32 (inbuf+12);
|
||||
|
||||
OP (x1, x2, x3, x4, 30);
|
||||
OP (x3, x4, x1, x2, 28);
|
||||
OP (x1, x2, x3, x4, 26);
|
||||
OP (x3, x4, x1, x2, 24);
|
||||
OP (x1, x2, x3, x4, 22);
|
||||
OP (x3, x4, x1, x2, 20);
|
||||
OP (x1, x2, x3, x4, 18);
|
||||
OP (x3, x4, x1, x2, 16);
|
||||
OP (x1, x2, x3, x4, 14);
|
||||
OP (x3, x4, x1, x2, 12);
|
||||
OP (x1, x2, x3, x4, 10);
|
||||
OP (x3, x4, x1, x2, 8);
|
||||
OP (x1, x2, x3, x4, 6);
|
||||
OP (x3, x4, x1, x2, 4);
|
||||
OP (x1, x2, x3, x4, 2);
|
||||
OP (x3, x4, x1, x2, 0);
|
||||
|
||||
PUTU32 (outbuf, x3);
|
||||
PUTU32 (outbuf+4, x4);
|
||||
PUTU32 (outbuf+8, x1);
|
||||
PUTU32 (outbuf+12, x2);
|
||||
}
|
||||
|
||||
static void
|
||||
seed_decrypt (void *context, byte *outbuf, const byte *inbuf)
|
||||
{
|
||||
SEED_context *ctx = context;
|
||||
|
||||
do_decrypt (ctx, outbuf, inbuf);
|
||||
_gcry_burn_stack (4*6);
|
||||
}
|
||||
|
||||
|
||||
/* Test a single encryption and decryption with each key size. */
|
||||
static const char*
|
||||
selftest (void)
|
||||
{
|
||||
SEED_context ctx;
|
||||
byte scratch[16];
|
||||
|
||||
/* The test vector is taken from the appendix section B.3 of RFC4269.
|
||||
*/
|
||||
static const byte plaintext[16] = {
|
||||
0x83, 0xA2, 0xF8, 0xA2, 0x88, 0x64, 0x1F, 0xB9,
|
||||
0xA4, 0xE9, 0xA5, 0xCC, 0x2F, 0x13, 0x1C, 0x7D
|
||||
};
|
||||
static const byte key[16] = {
|
||||
0x47, 0x06, 0x48, 0x08, 0x51, 0xE6, 0x1B, 0xE8,
|
||||
0x5D, 0x74, 0xBF, 0xB3, 0xFD, 0x95, 0x61, 0x85
|
||||
};
|
||||
static const byte ciphertext[16] = {
|
||||
0xEE, 0x54, 0xD1, 0x3E, 0xBC, 0xAE, 0x70, 0x6D,
|
||||
0x22, 0x6B, 0xC3, 0x14, 0x2C, 0xD4, 0x0D, 0x4A,
|
||||
};
|
||||
|
||||
seed_setkey (&ctx, key, sizeof(key));
|
||||
seed_encrypt (&ctx, scratch, plaintext);
|
||||
if (memcmp (scratch, ciphertext, sizeof (ciphertext)))
|
||||
return "SEED test encryption failed.";
|
||||
seed_decrypt (&ctx, scratch, scratch);
|
||||
if (memcmp (scratch, plaintext, sizeof (plaintext)))
|
||||
return "SEED test decryption failed.";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static gcry_cipher_oid_spec_t seed_oids[] =
|
||||
{
|
||||
{ "1.2.410.200004.1.3", GCRY_CIPHER_MODE_ECB },
|
||||
{ "1.2.410.200004.1.4", GCRY_CIPHER_MODE_CBC },
|
||||
{ "1.2.410.200004.1.5", GCRY_CIPHER_MODE_CFB },
|
||||
{ "1.2.410.200004.1.6", GCRY_CIPHER_MODE_OFB },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_seed =
|
||||
{
|
||||
"SEED", NULL, seed_oids, 16, 128, sizeof (SEED_context),
|
||||
seed_setkey, seed_encrypt, seed_decrypt,
|
||||
};
|
||||
978
jni/libgcrypt/cipher/serpent.c
Normal file
978
jni/libgcrypt/cipher/serpent.c
Normal file
@@ -0,0 +1,978 @@
|
||||
/* serpent.c - Implementation of the Serpent encryption algorithm.
|
||||
* Copyright (C) 2003, 2004, 2005 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.
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "types.h"
|
||||
#include "g10lib.h"
|
||||
#include "cipher.h"
|
||||
#include "bithelp.h"
|
||||
|
||||
/* Number of rounds per Serpent encrypt/decrypt operation. */
|
||||
#define ROUNDS 32
|
||||
|
||||
/* Magic number, used during generating of the subkeys. */
|
||||
#define PHI 0x9E3779B9
|
||||
|
||||
/* Serpent works on 128 bit blocks. */
|
||||
typedef u32 serpent_block_t[4];
|
||||
|
||||
/* Serpent key, provided by the user. If the original key is shorter
|
||||
than 256 bits, it is padded. */
|
||||
typedef u32 serpent_key_t[8];
|
||||
|
||||
/* The key schedule consists of 33 128 bit subkeys. */
|
||||
typedef u32 serpent_subkeys_t[ROUNDS + 1][4];
|
||||
|
||||
/* A Serpent context. */
|
||||
typedef struct serpent_context
|
||||
{
|
||||
serpent_subkeys_t keys; /* Generated subkeys. */
|
||||
} serpent_context_t;
|
||||
|
||||
|
||||
/* A prototype. */
|
||||
static const char *serpent_test (void);
|
||||
|
||||
|
||||
#define byte_swap_32(x) \
|
||||
(0 \
|
||||
| (((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) \
|
||||
| (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
|
||||
|
||||
/* These are the S-Boxes of Serpent. They are copied from Serpents
|
||||
reference implementation (the optimized one, contained in
|
||||
`floppy2') and are therefore:
|
||||
|
||||
Copyright (C) 1998 Ross Anderson, Eli Biham, Lars Knudsen.
|
||||
|
||||
To quote the Serpent homepage
|
||||
(http://www.cl.cam.ac.uk/~rja14/serpent.html):
|
||||
|
||||
"Serpent is now completely in the public domain, and we impose no
|
||||
restrictions on its use. This was announced on the 21st August at
|
||||
the First AES Candidate Conference. The optimised implementations
|
||||
in the submission package are now under the GNU PUBLIC LICENSE
|
||||
(GPL), although some comments in the code still say otherwise. You
|
||||
are welcome to use Serpent for any application." */
|
||||
|
||||
#define SBOX0(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t05, t06, t07, t08, t09; \
|
||||
u32 t11, t12, t13, t14, t15, t17, t01; \
|
||||
t01 = b ^ c ; \
|
||||
t02 = a | d ; \
|
||||
t03 = a ^ b ; \
|
||||
z = t02 ^ t01; \
|
||||
t05 = c | z ; \
|
||||
t06 = a ^ d ; \
|
||||
t07 = b | c ; \
|
||||
t08 = d & t05; \
|
||||
t09 = t03 & t07; \
|
||||
y = t09 ^ t08; \
|
||||
t11 = t09 & y ; \
|
||||
t12 = c ^ d ; \
|
||||
t13 = t07 ^ t11; \
|
||||
t14 = b & t06; \
|
||||
t15 = t06 ^ t13; \
|
||||
w = ~ t15; \
|
||||
t17 = w ^ t14; \
|
||||
x = t12 ^ t17; \
|
||||
}
|
||||
|
||||
#define SBOX0_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t08, t09, t10; \
|
||||
u32 t12, t13, t14, t15, t17, t18, t01; \
|
||||
t01 = c ^ d ; \
|
||||
t02 = a | b ; \
|
||||
t03 = b | c ; \
|
||||
t04 = c & t01; \
|
||||
t05 = t02 ^ t01; \
|
||||
t06 = a | t04; \
|
||||
y = ~ t05; \
|
||||
t08 = b ^ d ; \
|
||||
t09 = t03 & t08; \
|
||||
t10 = d | y ; \
|
||||
x = t09 ^ t06; \
|
||||
t12 = a | t05; \
|
||||
t13 = x ^ t12; \
|
||||
t14 = t03 ^ t10; \
|
||||
t15 = a ^ c ; \
|
||||
z = t14 ^ t13; \
|
||||
t17 = t05 & t13; \
|
||||
t18 = t14 | t17; \
|
||||
w = t15 ^ t18; \
|
||||
}
|
||||
|
||||
#define SBOX1(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t07, t08; \
|
||||
u32 t10, t11, t12, t13, t16, t17, t01; \
|
||||
t01 = a | d ; \
|
||||
t02 = c ^ d ; \
|
||||
t03 = ~ b ; \
|
||||
t04 = a ^ c ; \
|
||||
t05 = a | t03; \
|
||||
t06 = d & t04; \
|
||||
t07 = t01 & t02; \
|
||||
t08 = b | t06; \
|
||||
y = t02 ^ t05; \
|
||||
t10 = t07 ^ t08; \
|
||||
t11 = t01 ^ t10; \
|
||||
t12 = y ^ t11; \
|
||||
t13 = b & d ; \
|
||||
z = ~ t10; \
|
||||
x = t13 ^ t12; \
|
||||
t16 = t10 | x ; \
|
||||
t17 = t05 & t16; \
|
||||
w = c ^ t17; \
|
||||
}
|
||||
|
||||
#define SBOX1_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t07, t08; \
|
||||
u32 t09, t10, t11, t14, t15, t17, t01; \
|
||||
t01 = a ^ b ; \
|
||||
t02 = b | d ; \
|
||||
t03 = a & c ; \
|
||||
t04 = c ^ t02; \
|
||||
t05 = a | t04; \
|
||||
t06 = t01 & t05; \
|
||||
t07 = d | t03; \
|
||||
t08 = b ^ t06; \
|
||||
t09 = t07 ^ t06; \
|
||||
t10 = t04 | t03; \
|
||||
t11 = d & t08; \
|
||||
y = ~ t09; \
|
||||
x = t10 ^ t11; \
|
||||
t14 = a | y ; \
|
||||
t15 = t06 ^ x ; \
|
||||
z = t01 ^ t04; \
|
||||
t17 = c ^ t15; \
|
||||
w = t14 ^ t17; \
|
||||
}
|
||||
|
||||
#define SBOX2(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t05, t06, t07, t08; \
|
||||
u32 t09, t10, t12, t13, t14, t01; \
|
||||
t01 = a | c ; \
|
||||
t02 = a ^ b ; \
|
||||
t03 = d ^ t01; \
|
||||
w = t02 ^ t03; \
|
||||
t05 = c ^ w ; \
|
||||
t06 = b ^ t05; \
|
||||
t07 = b | t05; \
|
||||
t08 = t01 & t06; \
|
||||
t09 = t03 ^ t07; \
|
||||
t10 = t02 | t09; \
|
||||
x = t10 ^ t08; \
|
||||
t12 = a | d ; \
|
||||
t13 = t09 ^ x ; \
|
||||
t14 = b ^ t13; \
|
||||
z = ~ t09; \
|
||||
y = t12 ^ t14; \
|
||||
}
|
||||
|
||||
#define SBOX2_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t06, t07, t08, t09; \
|
||||
u32 t10, t11, t12, t15, t16, t17, t01; \
|
||||
t01 = a ^ d ; \
|
||||
t02 = c ^ d ; \
|
||||
t03 = a & c ; \
|
||||
t04 = b | t02; \
|
||||
w = t01 ^ t04; \
|
||||
t06 = a | c ; \
|
||||
t07 = d | w ; \
|
||||
t08 = ~ d ; \
|
||||
t09 = b & t06; \
|
||||
t10 = t08 | t03; \
|
||||
t11 = b & t07; \
|
||||
t12 = t06 & t02; \
|
||||
z = t09 ^ t10; \
|
||||
x = t12 ^ t11; \
|
||||
t15 = c & z ; \
|
||||
t16 = w ^ x ; \
|
||||
t17 = t10 ^ t15; \
|
||||
y = t16 ^ t17; \
|
||||
}
|
||||
|
||||
#define SBOX3(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t07, t08; \
|
||||
u32 t09, t10, t11, t13, t14, t15, t01; \
|
||||
t01 = a ^ c ; \
|
||||
t02 = a | d ; \
|
||||
t03 = a & d ; \
|
||||
t04 = t01 & t02; \
|
||||
t05 = b | t03; \
|
||||
t06 = a & b ; \
|
||||
t07 = d ^ t04; \
|
||||
t08 = c | t06; \
|
||||
t09 = b ^ t07; \
|
||||
t10 = d & t05; \
|
||||
t11 = t02 ^ t10; \
|
||||
z = t08 ^ t09; \
|
||||
t13 = d | z ; \
|
||||
t14 = a | t07; \
|
||||
t15 = b & t13; \
|
||||
y = t08 ^ t11; \
|
||||
w = t14 ^ t15; \
|
||||
x = t05 ^ t04; \
|
||||
}
|
||||
|
||||
#define SBOX3_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t07, t09; \
|
||||
u32 t11, t12, t13, t14, t16, t01; \
|
||||
t01 = c | d ; \
|
||||
t02 = a | d ; \
|
||||
t03 = c ^ t02; \
|
||||
t04 = b ^ t02; \
|
||||
t05 = a ^ d ; \
|
||||
t06 = t04 & t03; \
|
||||
t07 = b & t01; \
|
||||
y = t05 ^ t06; \
|
||||
t09 = a ^ t03; \
|
||||
w = t07 ^ t03; \
|
||||
t11 = w | t05; \
|
||||
t12 = t09 & t11; \
|
||||
t13 = a & y ; \
|
||||
t14 = t01 ^ t05; \
|
||||
x = b ^ t12; \
|
||||
t16 = b | t13; \
|
||||
z = t14 ^ t16; \
|
||||
}
|
||||
|
||||
#define SBOX4(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t08, t09; \
|
||||
u32 t10, t11, t12, t13, t14, t15, t16, t01; \
|
||||
t01 = a | b ; \
|
||||
t02 = b | c ; \
|
||||
t03 = a ^ t02; \
|
||||
t04 = b ^ d ; \
|
||||
t05 = d | t03; \
|
||||
t06 = d & t01; \
|
||||
z = t03 ^ t06; \
|
||||
t08 = z & t04; \
|
||||
t09 = t04 & t05; \
|
||||
t10 = c ^ t06; \
|
||||
t11 = b & c ; \
|
||||
t12 = t04 ^ t08; \
|
||||
t13 = t11 | t03; \
|
||||
t14 = t10 ^ t09; \
|
||||
t15 = a & t05; \
|
||||
t16 = t11 | t12; \
|
||||
y = t13 ^ t08; \
|
||||
x = t15 ^ t16; \
|
||||
w = ~ t14; \
|
||||
}
|
||||
|
||||
#define SBOX4_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t07, t09; \
|
||||
u32 t10, t11, t12, t13, t15, t01; \
|
||||
t01 = b | d ; \
|
||||
t02 = c | d ; \
|
||||
t03 = a & t01; \
|
||||
t04 = b ^ t02; \
|
||||
t05 = c ^ d ; \
|
||||
t06 = ~ t03; \
|
||||
t07 = a & t04; \
|
||||
x = t05 ^ t07; \
|
||||
t09 = x | t06; \
|
||||
t10 = a ^ t07; \
|
||||
t11 = t01 ^ t09; \
|
||||
t12 = d ^ t04; \
|
||||
t13 = c | t10; \
|
||||
z = t03 ^ t12; \
|
||||
t15 = a ^ t04; \
|
||||
y = t11 ^ t13; \
|
||||
w = t15 ^ t09; \
|
||||
}
|
||||
|
||||
#define SBOX5(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t07, t08, t09; \
|
||||
u32 t10, t11, t12, t13, t14, t01; \
|
||||
t01 = b ^ d ; \
|
||||
t02 = b | d ; \
|
||||
t03 = a & t01; \
|
||||
t04 = c ^ t02; \
|
||||
t05 = t03 ^ t04; \
|
||||
w = ~ t05; \
|
||||
t07 = a ^ t01; \
|
||||
t08 = d | w ; \
|
||||
t09 = b | t05; \
|
||||
t10 = d ^ t08; \
|
||||
t11 = b | t07; \
|
||||
t12 = t03 | w ; \
|
||||
t13 = t07 | t10; \
|
||||
t14 = t01 ^ t11; \
|
||||
y = t09 ^ t13; \
|
||||
x = t07 ^ t08; \
|
||||
z = t12 ^ t14; \
|
||||
}
|
||||
|
||||
#define SBOX5_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t07, t08, t09; \
|
||||
u32 t10, t12, t13, t15, t16, t01; \
|
||||
t01 = a & d ; \
|
||||
t02 = c ^ t01; \
|
||||
t03 = a ^ d ; \
|
||||
t04 = b & t02; \
|
||||
t05 = a & c ; \
|
||||
w = t03 ^ t04; \
|
||||
t07 = a & w ; \
|
||||
t08 = t01 ^ w ; \
|
||||
t09 = b | t05; \
|
||||
t10 = ~ b ; \
|
||||
x = t08 ^ t09; \
|
||||
t12 = t10 | t07; \
|
||||
t13 = w | x ; \
|
||||
z = t02 ^ t12; \
|
||||
t15 = t02 ^ t13; \
|
||||
t16 = b ^ d ; \
|
||||
y = t16 ^ t15; \
|
||||
}
|
||||
|
||||
#define SBOX6(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t07, t08, t09, t10; \
|
||||
u32 t11, t12, t13, t15, t17, t18, t01; \
|
||||
t01 = a & d ; \
|
||||
t02 = b ^ c ; \
|
||||
t03 = a ^ d ; \
|
||||
t04 = t01 ^ t02; \
|
||||
t05 = b | c ; \
|
||||
x = ~ t04; \
|
||||
t07 = t03 & t05; \
|
||||
t08 = b & x ; \
|
||||
t09 = a | c ; \
|
||||
t10 = t07 ^ t08; \
|
||||
t11 = b | d ; \
|
||||
t12 = c ^ t11; \
|
||||
t13 = t09 ^ t10; \
|
||||
y = ~ t13; \
|
||||
t15 = x & t03; \
|
||||
z = t12 ^ t07; \
|
||||
t17 = a ^ b ; \
|
||||
t18 = y ^ t15; \
|
||||
w = t17 ^ t18; \
|
||||
}
|
||||
|
||||
#define SBOX6_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t07, t08, t09; \
|
||||
u32 t12, t13, t14, t15, t16, t17, t01; \
|
||||
t01 = a ^ c ; \
|
||||
t02 = ~ c ; \
|
||||
t03 = b & t01; \
|
||||
t04 = b | t02; \
|
||||
t05 = d | t03; \
|
||||
t06 = b ^ d ; \
|
||||
t07 = a & t04; \
|
||||
t08 = a | t02; \
|
||||
t09 = t07 ^ t05; \
|
||||
x = t06 ^ t08; \
|
||||
w = ~ t09; \
|
||||
t12 = b & w ; \
|
||||
t13 = t01 & t05; \
|
||||
t14 = t01 ^ t12; \
|
||||
t15 = t07 ^ t13; \
|
||||
t16 = d | t02; \
|
||||
t17 = a ^ x ; \
|
||||
z = t17 ^ t15; \
|
||||
y = t16 ^ t14; \
|
||||
}
|
||||
|
||||
#define SBOX7(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t05, t06, t08, t09, t10; \
|
||||
u32 t11, t13, t14, t15, t16, t17, t01; \
|
||||
t01 = a & c ; \
|
||||
t02 = ~ d ; \
|
||||
t03 = a & t02; \
|
||||
t04 = b | t01; \
|
||||
t05 = a & b ; \
|
||||
t06 = c ^ t04; \
|
||||
z = t03 ^ t06; \
|
||||
t08 = c | z ; \
|
||||
t09 = d | t05; \
|
||||
t10 = a ^ t08; \
|
||||
t11 = t04 & z ; \
|
||||
x = t09 ^ t10; \
|
||||
t13 = b ^ x ; \
|
||||
t14 = t01 ^ x ; \
|
||||
t15 = c ^ t05; \
|
||||
t16 = t11 | t13; \
|
||||
t17 = t02 | t14; \
|
||||
w = t15 ^ t17; \
|
||||
y = a ^ t16; \
|
||||
}
|
||||
|
||||
#define SBOX7_INVERSE(a, b, c, d, w, x, y, z) \
|
||||
{ \
|
||||
u32 t02, t03, t04, t06, t07, t08, t09; \
|
||||
u32 t10, t11, t13, t14, t15, t16, t01; \
|
||||
t01 = a & b ; \
|
||||
t02 = a | b ; \
|
||||
t03 = c | t01; \
|
||||
t04 = d & t02; \
|
||||
z = t03 ^ t04; \
|
||||
t06 = b ^ t04; \
|
||||
t07 = d ^ z ; \
|
||||
t08 = ~ t07; \
|
||||
t09 = t06 | t08; \
|
||||
t10 = b ^ d ; \
|
||||
t11 = a | d ; \
|
||||
x = a ^ t09; \
|
||||
t13 = c ^ t06; \
|
||||
t14 = c & t11; \
|
||||
t15 = d | x ; \
|
||||
t16 = t01 | t10; \
|
||||
w = t13 ^ t15; \
|
||||
y = t14 ^ t16; \
|
||||
}
|
||||
|
||||
/* XOR BLOCK1 into BLOCK0. */
|
||||
#define BLOCK_XOR(block0, block1) \
|
||||
{ \
|
||||
block0[0] ^= block1[0]; \
|
||||
block0[1] ^= block1[1]; \
|
||||
block0[2] ^= block1[2]; \
|
||||
block0[3] ^= block1[3]; \
|
||||
}
|
||||
|
||||
/* Copy BLOCK_SRC to BLOCK_DST. */
|
||||
#define BLOCK_COPY(block_dst, block_src) \
|
||||
{ \
|
||||
block_dst[0] = block_src[0]; \
|
||||
block_dst[1] = block_src[1]; \
|
||||
block_dst[2] = block_src[2]; \
|
||||
block_dst[3] = block_src[3]; \
|
||||
}
|
||||
|
||||
/* Apply SBOX number WHICH to to the block found in ARRAY0 at index
|
||||
INDEX, writing the output to the block found in ARRAY1 at index
|
||||
INDEX. */
|
||||
#define SBOX(which, array0, array1, index) \
|
||||
SBOX##which (array0[index + 0], array0[index + 1], \
|
||||
array0[index + 2], array0[index + 3], \
|
||||
array1[index + 0], array1[index + 1], \
|
||||
array1[index + 2], array1[index + 3]);
|
||||
|
||||
/* Apply inverse SBOX number WHICH to to the block found in ARRAY0 at
|
||||
index INDEX, writing the output to the block found in ARRAY1 at
|
||||
index INDEX. */
|
||||
#define SBOX_INVERSE(which, array0, array1, index) \
|
||||
SBOX##which##_INVERSE (array0[index + 0], array0[index + 1], \
|
||||
array0[index + 2], array0[index + 3], \
|
||||
array1[index + 0], array1[index + 1], \
|
||||
array1[index + 2], array1[index + 3]);
|
||||
|
||||
/* Apply the linear transformation to BLOCK. */
|
||||
#define LINEAR_TRANSFORMATION(block) \
|
||||
{ \
|
||||
block[0] = rol (block[0], 13); \
|
||||
block[2] = rol (block[2], 3); \
|
||||
block[1] = block[1] ^ block[0] ^ block[2]; \
|
||||
block[3] = block[3] ^ block[2] ^ (block[0] << 3); \
|
||||
block[1] = rol (block[1], 1); \
|
||||
block[3] = rol (block[3], 7); \
|
||||
block[0] = block[0] ^ block[1] ^ block[3]; \
|
||||
block[2] = block[2] ^ block[3] ^ (block[1] << 7); \
|
||||
block[0] = rol (block[0], 5); \
|
||||
block[2] = rol (block[2], 22); \
|
||||
}
|
||||
|
||||
/* Apply the inverse linear transformation to BLOCK. */
|
||||
#define LINEAR_TRANSFORMATION_INVERSE(block) \
|
||||
{ \
|
||||
block[2] = ror (block[2], 22); \
|
||||
block[0] = ror (block[0] , 5); \
|
||||
block[2] = block[2] ^ block[3] ^ (block[1] << 7); \
|
||||
block[0] = block[0] ^ block[1] ^ block[3]; \
|
||||
block[3] = ror (block[3], 7); \
|
||||
block[1] = ror (block[1], 1); \
|
||||
block[3] = block[3] ^ block[2] ^ (block[0] << 3); \
|
||||
block[1] = block[1] ^ block[0] ^ block[2]; \
|
||||
block[2] = ror (block[2], 3); \
|
||||
block[0] = ror (block[0], 13); \
|
||||
}
|
||||
|
||||
/* Apply a Serpent round to BLOCK, using the SBOX number WHICH and the
|
||||
subkeys contained in SUBKEYS. Use BLOCK_TMP as temporary storage.
|
||||
This macro increments `round'. */
|
||||
#define ROUND(which, subkeys, block, block_tmp) \
|
||||
{ \
|
||||
BLOCK_XOR (block, subkeys[round]); \
|
||||
round++; \
|
||||
SBOX (which, block, block_tmp, 0); \
|
||||
LINEAR_TRANSFORMATION (block_tmp); \
|
||||
BLOCK_COPY (block, block_tmp); \
|
||||
}
|
||||
|
||||
/* Apply the last Serpent round to BLOCK, using the SBOX number WHICH
|
||||
and the subkeys contained in SUBKEYS. Use BLOCK_TMP as temporary
|
||||
storage. The result will be stored in BLOCK_TMP. This macro
|
||||
increments `round'. */
|
||||
#define ROUND_LAST(which, subkeys, block, block_tmp) \
|
||||
{ \
|
||||
BLOCK_XOR (block, subkeys[round]); \
|
||||
round++; \
|
||||
SBOX (which, block, block_tmp, 0); \
|
||||
BLOCK_XOR (block_tmp, subkeys[round]); \
|
||||
round++; \
|
||||
}
|
||||
|
||||
/* Apply an inverse Serpent round to BLOCK, using the SBOX number
|
||||
WHICH and the subkeys contained in SUBKEYS. Use BLOCK_TMP as
|
||||
temporary storage. This macro increments `round'. */
|
||||
#define ROUND_INVERSE(which, subkey, block, block_tmp) \
|
||||
{ \
|
||||
LINEAR_TRANSFORMATION_INVERSE (block); \
|
||||
SBOX_INVERSE (which, block, block_tmp, 0); \
|
||||
BLOCK_XOR (block_tmp, subkey[round]); \
|
||||
round--; \
|
||||
BLOCK_COPY (block, block_tmp); \
|
||||
}
|
||||
|
||||
/* Apply the first Serpent round to BLOCK, using the SBOX number WHICH
|
||||
and the subkeys contained in SUBKEYS. Use BLOCK_TMP as temporary
|
||||
storage. The result will be stored in BLOCK_TMP. This macro
|
||||
increments `round'. */
|
||||
#define ROUND_FIRST_INVERSE(which, subkeys, block, block_tmp) \
|
||||
{ \
|
||||
BLOCK_XOR (block, subkeys[round]); \
|
||||
round--; \
|
||||
SBOX_INVERSE (which, block, block_tmp, 0); \
|
||||
BLOCK_XOR (block_tmp, subkeys[round]); \
|
||||
round--; \
|
||||
}
|
||||
|
||||
/* Convert the user provided key KEY of KEY_LENGTH bytes into the
|
||||
internally used format. */
|
||||
static void
|
||||
serpent_key_prepare (const byte *key, unsigned int key_length,
|
||||
serpent_key_t key_prepared)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Copy key. */
|
||||
for (i = 0; i < key_length / 4; i++)
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
key_prepared[i] = byte_swap_32 (((u32 *) key)[i]);
|
||||
#else
|
||||
key_prepared[i] = ((u32 *) key)[i];
|
||||
#endif
|
||||
}
|
||||
|
||||
if (i < 8)
|
||||
{
|
||||
/* Key must be padded according to the Serpent
|
||||
specification. */
|
||||
key_prepared[i] = 0x00000001;
|
||||
|
||||
for (i++; i < 8; i++)
|
||||
key_prepared[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Derive the 33 subkeys from KEY and store them in SUBKEYS. */
|
||||
static void
|
||||
serpent_subkeys_generate (serpent_key_t key, serpent_subkeys_t subkeys)
|
||||
{
|
||||
u32 w_real[140]; /* The `prekey'. */
|
||||
u32 k[132];
|
||||
u32 *w = &w_real[8];
|
||||
int i, j;
|
||||
|
||||
/* Initialize with key values. */
|
||||
for (i = 0; i < 8; i++)
|
||||
w[i - 8] = key[i];
|
||||
|
||||
/* Expand to intermediate key using the affine recurrence. */
|
||||
for (i = 0; i < 132; i++)
|
||||
w[i] = rol (w[i - 8] ^ w[i - 5] ^ w[i - 3] ^ w[i - 1] ^ PHI ^ i, 11);
|
||||
|
||||
/* Calculate subkeys via S-Boxes, in bitslice mode. */
|
||||
SBOX (3, w, k, 0);
|
||||
SBOX (2, w, k, 4);
|
||||
SBOX (1, w, k, 8);
|
||||
SBOX (0, w, k, 12);
|
||||
SBOX (7, w, k, 16);
|
||||
SBOX (6, w, k, 20);
|
||||
SBOX (5, w, k, 24);
|
||||
SBOX (4, w, k, 28);
|
||||
SBOX (3, w, k, 32);
|
||||
SBOX (2, w, k, 36);
|
||||
SBOX (1, w, k, 40);
|
||||
SBOX (0, w, k, 44);
|
||||
SBOX (7, w, k, 48);
|
||||
SBOX (6, w, k, 52);
|
||||
SBOX (5, w, k, 56);
|
||||
SBOX (4, w, k, 60);
|
||||
SBOX (3, w, k, 64);
|
||||
SBOX (2, w, k, 68);
|
||||
SBOX (1, w, k, 72);
|
||||
SBOX (0, w, k, 76);
|
||||
SBOX (7, w, k, 80);
|
||||
SBOX (6, w, k, 84);
|
||||
SBOX (5, w, k, 88);
|
||||
SBOX (4, w, k, 92);
|
||||
SBOX (3, w, k, 96);
|
||||
SBOX (2, w, k, 100);
|
||||
SBOX (1, w, k, 104);
|
||||
SBOX (0, w, k, 108);
|
||||
SBOX (7, w, k, 112);
|
||||
SBOX (6, w, k, 116);
|
||||
SBOX (5, w, k, 120);
|
||||
SBOX (4, w, k, 124);
|
||||
SBOX (3, w, k, 128);
|
||||
|
||||
/* Renumber subkeys. */
|
||||
for (i = 0; i < ROUNDS + 1; i++)
|
||||
for (j = 0; j < 4; j++)
|
||||
subkeys[i][j] = k[4 * i + j];
|
||||
}
|
||||
|
||||
/* Initialize CONTEXT with the key KEY of KEY_LENGTH bits. */
|
||||
static void
|
||||
serpent_setkey_internal (serpent_context_t *context,
|
||||
const byte *key, unsigned int key_length)
|
||||
{
|
||||
serpent_key_t key_prepared;
|
||||
|
||||
serpent_key_prepare (key, key_length, key_prepared);
|
||||
serpent_subkeys_generate (key_prepared, context->keys);
|
||||
_gcry_burn_stack (272 * sizeof (u32));
|
||||
}
|
||||
|
||||
/* Initialize CTX with the key KEY of KEY_LENGTH bytes. */
|
||||
static gcry_err_code_t
|
||||
serpent_setkey (void *ctx,
|
||||
const byte *key, unsigned int key_length)
|
||||
{
|
||||
serpent_context_t *context = ctx;
|
||||
static const char *serpent_test_ret;
|
||||
static int serpent_init_done;
|
||||
gcry_err_code_t ret = GPG_ERR_NO_ERROR;
|
||||
|
||||
if (! serpent_init_done)
|
||||
{
|
||||
/* Execute a self-test the first time, Serpent is used. */
|
||||
serpent_test_ret = serpent_test ();
|
||||
if (serpent_test_ret)
|
||||
log_error ("Serpent test failure: %s\n", serpent_test_ret);
|
||||
serpent_init_done = 1;
|
||||
}
|
||||
|
||||
if (serpent_test_ret)
|
||||
ret = GPG_ERR_SELFTEST_FAILED;
|
||||
else
|
||||
{
|
||||
serpent_setkey_internal (context, key, key_length);
|
||||
_gcry_burn_stack (sizeof (serpent_key_t));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
serpent_encrypt_internal (serpent_context_t *context,
|
||||
const serpent_block_t input, serpent_block_t output)
|
||||
{
|
||||
serpent_block_t b, b_next;
|
||||
int round = 0;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
b[0] = byte_swap_32 (input[0]);
|
||||
b[1] = byte_swap_32 (input[1]);
|
||||
b[2] = byte_swap_32 (input[2]);
|
||||
b[3] = byte_swap_32 (input[3]);
|
||||
#else
|
||||
b[0] = input[0];
|
||||
b[1] = input[1];
|
||||
b[2] = input[2];
|
||||
b[3] = input[3];
|
||||
#endif
|
||||
|
||||
ROUND (0, context->keys, b, b_next);
|
||||
ROUND (1, context->keys, b, b_next);
|
||||
ROUND (2, context->keys, b, b_next);
|
||||
ROUND (3, context->keys, b, b_next);
|
||||
ROUND (4, context->keys, b, b_next);
|
||||
ROUND (5, context->keys, b, b_next);
|
||||
ROUND (6, context->keys, b, b_next);
|
||||
ROUND (7, context->keys, b, b_next);
|
||||
ROUND (0, context->keys, b, b_next);
|
||||
ROUND (1, context->keys, b, b_next);
|
||||
ROUND (2, context->keys, b, b_next);
|
||||
ROUND (3, context->keys, b, b_next);
|
||||
ROUND (4, context->keys, b, b_next);
|
||||
ROUND (5, context->keys, b, b_next);
|
||||
ROUND (6, context->keys, b, b_next);
|
||||
ROUND (7, context->keys, b, b_next);
|
||||
ROUND (0, context->keys, b, b_next);
|
||||
ROUND (1, context->keys, b, b_next);
|
||||
ROUND (2, context->keys, b, b_next);
|
||||
ROUND (3, context->keys, b, b_next);
|
||||
ROUND (4, context->keys, b, b_next);
|
||||
ROUND (5, context->keys, b, b_next);
|
||||
ROUND (6, context->keys, b, b_next);
|
||||
ROUND (7, context->keys, b, b_next);
|
||||
ROUND (0, context->keys, b, b_next);
|
||||
ROUND (1, context->keys, b, b_next);
|
||||
ROUND (2, context->keys, b, b_next);
|
||||
ROUND (3, context->keys, b, b_next);
|
||||
ROUND (4, context->keys, b, b_next);
|
||||
ROUND (5, context->keys, b, b_next);
|
||||
ROUND (6, context->keys, b, b_next);
|
||||
|
||||
ROUND_LAST (7, context->keys, b, b_next);
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
output[0] = byte_swap_32 (b_next[0]);
|
||||
output[1] = byte_swap_32 (b_next[1]);
|
||||
output[2] = byte_swap_32 (b_next[2]);
|
||||
output[3] = byte_swap_32 (b_next[3]);
|
||||
#else
|
||||
output[0] = b_next[0];
|
||||
output[1] = b_next[1];
|
||||
output[2] = b_next[2];
|
||||
output[3] = b_next[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
serpent_decrypt_internal (serpent_context_t *context,
|
||||
const serpent_block_t input, serpent_block_t output)
|
||||
{
|
||||
serpent_block_t b, b_next;
|
||||
int round = ROUNDS;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
b_next[0] = byte_swap_32 (input[0]);
|
||||
b_next[1] = byte_swap_32 (input[1]);
|
||||
b_next[2] = byte_swap_32 (input[2]);
|
||||
b_next[3] = byte_swap_32 (input[3]);
|
||||
#else
|
||||
b_next[0] = input[0];
|
||||
b_next[1] = input[1];
|
||||
b_next[2] = input[2];
|
||||
b_next[3] = input[3];
|
||||
#endif
|
||||
|
||||
ROUND_FIRST_INVERSE (7, context->keys, b_next, b);
|
||||
|
||||
ROUND_INVERSE (6, context->keys, b, b_next);
|
||||
ROUND_INVERSE (5, context->keys, b, b_next);
|
||||
ROUND_INVERSE (4, context->keys, b, b_next);
|
||||
ROUND_INVERSE (3, context->keys, b, b_next);
|
||||
ROUND_INVERSE (2, context->keys, b, b_next);
|
||||
ROUND_INVERSE (1, context->keys, b, b_next);
|
||||
ROUND_INVERSE (0, context->keys, b, b_next);
|
||||
ROUND_INVERSE (7, context->keys, b, b_next);
|
||||
ROUND_INVERSE (6, context->keys, b, b_next);
|
||||
ROUND_INVERSE (5, context->keys, b, b_next);
|
||||
ROUND_INVERSE (4, context->keys, b, b_next);
|
||||
ROUND_INVERSE (3, context->keys, b, b_next);
|
||||
ROUND_INVERSE (2, context->keys, b, b_next);
|
||||
ROUND_INVERSE (1, context->keys, b, b_next);
|
||||
ROUND_INVERSE (0, context->keys, b, b_next);
|
||||
ROUND_INVERSE (7, context->keys, b, b_next);
|
||||
ROUND_INVERSE (6, context->keys, b, b_next);
|
||||
ROUND_INVERSE (5, context->keys, b, b_next);
|
||||
ROUND_INVERSE (4, context->keys, b, b_next);
|
||||
ROUND_INVERSE (3, context->keys, b, b_next);
|
||||
ROUND_INVERSE (2, context->keys, b, b_next);
|
||||
ROUND_INVERSE (1, context->keys, b, b_next);
|
||||
ROUND_INVERSE (0, context->keys, b, b_next);
|
||||
ROUND_INVERSE (7, context->keys, b, b_next);
|
||||
ROUND_INVERSE (6, context->keys, b, b_next);
|
||||
ROUND_INVERSE (5, context->keys, b, b_next);
|
||||
ROUND_INVERSE (4, context->keys, b, b_next);
|
||||
ROUND_INVERSE (3, context->keys, b, b_next);
|
||||
ROUND_INVERSE (2, context->keys, b, b_next);
|
||||
ROUND_INVERSE (1, context->keys, b, b_next);
|
||||
ROUND_INVERSE (0, context->keys, b, b_next);
|
||||
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
output[0] = byte_swap_32 (b_next[0]);
|
||||
output[1] = byte_swap_32 (b_next[1]);
|
||||
output[2] = byte_swap_32 (b_next[2]);
|
||||
output[3] = byte_swap_32 (b_next[3]);
|
||||
#else
|
||||
output[0] = b_next[0];
|
||||
output[1] = b_next[1];
|
||||
output[2] = b_next[2];
|
||||
output[3] = b_next[3];
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
serpent_encrypt (void *ctx, byte *buffer_out, const byte *buffer_in)
|
||||
{
|
||||
serpent_context_t *context = ctx;
|
||||
|
||||
serpent_encrypt_internal (context,
|
||||
(const u32 *) buffer_in, (u32 *) buffer_out);
|
||||
_gcry_burn_stack (2 * sizeof (serpent_block_t));
|
||||
}
|
||||
|
||||
static void
|
||||
serpent_decrypt (void *ctx, byte *buffer_out, const byte *buffer_in)
|
||||
{
|
||||
serpent_context_t *context = ctx;
|
||||
|
||||
serpent_decrypt_internal (context,
|
||||
(const u32 *) buffer_in,
|
||||
(u32 *) buffer_out);
|
||||
_gcry_burn_stack (2 * sizeof (serpent_block_t));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Serpent test. */
|
||||
|
||||
static const char *
|
||||
serpent_test (void)
|
||||
{
|
||||
serpent_context_t context;
|
||||
unsigned char scratch[16];
|
||||
unsigned int i;
|
||||
|
||||
static struct test
|
||||
{
|
||||
int key_length;
|
||||
unsigned char key[32];
|
||||
unsigned char text_plain[16];
|
||||
unsigned char text_cipher[16];
|
||||
} test_data[] =
|
||||
{
|
||||
{
|
||||
16,
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
"\xD2\x9D\x57\x6F\xCE\xA3\xA3\xA7\xED\x90\x99\xF2\x92\x73\xD7\x8E",
|
||||
"\xB2\x28\x8B\x96\x8A\xE8\xB0\x86\x48\xD1\xCE\x96\x06\xFD\x99\x2D"
|
||||
},
|
||||
{
|
||||
24,
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
"\xD2\x9D\x57\x6F\xCE\xAB\xA3\xA7\xED\x98\x99\xF2\x92\x7B\xD7\x8E",
|
||||
"\x13\x0E\x35\x3E\x10\x37\xC2\x24\x05\xE8\xFA\xEF\xB2\xC3\xC3\xE9"
|
||||
},
|
||||
{
|
||||
32,
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
"\xD0\x95\x57\x6F\xCE\xA3\xE3\xA7\xED\x98\xD9\xF2\x90\x73\xD7\x8E",
|
||||
"\xB9\x0E\xE5\x86\x2D\xE6\x91\x68\xF2\xBD\xD5\x12\x5B\x45\x47\x2B"
|
||||
},
|
||||
{
|
||||
32,
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
|
||||
"\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00",
|
||||
"\x20\x61\xA4\x27\x82\xBD\x52\xEC\x69\x1E\xC3\x83\xB0\x3B\xA7\x7C"
|
||||
},
|
||||
{
|
||||
0
|
||||
},
|
||||
};
|
||||
|
||||
for (i = 0; test_data[i].key_length; i++)
|
||||
{
|
||||
serpent_setkey_internal (&context, test_data[i].key,
|
||||
test_data[i].key_length);
|
||||
serpent_encrypt_internal (&context,
|
||||
(const u32 *) test_data[i].text_plain,
|
||||
(u32 *) scratch);
|
||||
|
||||
if (memcmp (scratch, test_data[i].text_cipher, sizeof (serpent_block_t)))
|
||||
switch (test_data[i].key_length)
|
||||
{
|
||||
case 16:
|
||||
return "Serpent-128 test encryption failed.";
|
||||
case 24:
|
||||
return "Serpent-192 test encryption failed.";
|
||||
case 32:
|
||||
return "Serpent-256 test encryption failed.";
|
||||
}
|
||||
|
||||
serpent_decrypt_internal (&context,
|
||||
(const u32 *) test_data[i].text_cipher,
|
||||
(u32 *) scratch);
|
||||
if (memcmp (scratch, test_data[i].text_plain, sizeof (serpent_block_t)))
|
||||
switch (test_data[i].key_length)
|
||||
{
|
||||
case 16:
|
||||
return "Serpent-128 test decryption failed.";
|
||||
case 24:
|
||||
return "Serpent-192 test decryption failed.";
|
||||
case 32:
|
||||
return "Serpent-256 test decryption failed.";
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* "SERPENT" is an alias for "SERPENT128". */
|
||||
static const char *cipher_spec_serpent128_aliases[] =
|
||||
{
|
||||
"SERPENT",
|
||||
NULL
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_serpent128 =
|
||||
{
|
||||
"SERPENT128", cipher_spec_serpent128_aliases, NULL, 16, 128,
|
||||
sizeof (serpent_context_t),
|
||||
serpent_setkey, serpent_encrypt, serpent_decrypt
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_serpent192 =
|
||||
{
|
||||
"SERPENT192", NULL, NULL, 16, 192,
|
||||
sizeof (serpent_context_t),
|
||||
serpent_setkey, serpent_encrypt, serpent_decrypt
|
||||
};
|
||||
|
||||
gcry_cipher_spec_t _gcry_cipher_spec_serpent256 =
|
||||
{
|
||||
"SERPENT256", NULL, NULL, 16, 256,
|
||||
sizeof (serpent_context_t),
|
||||
serpent_setkey, serpent_encrypt, serpent_decrypt
|
||||
};
|
||||
479
jni/libgcrypt/cipher/sha1.c
Normal file
479
jni/libgcrypt/cipher/sha1.c
Normal file
@@ -0,0 +1,479 @@
|
||||
/* sha1.c - SHA1 hash function
|
||||
* Copyright (C) 1998, 2001, 2002, 2003, 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
/* Test vectors:
|
||||
*
|
||||
* "abc"
|
||||
* A999 3E36 4706 816A BA3E 2571 7850 C26C 9CD0 D89D
|
||||
*
|
||||
* "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
|
||||
* 8498 3E44 1C3B D26E BAAE 4AA1 F951 29E5 E546 70F1
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "bithelp.h"
|
||||
#include "cipher.h"
|
||||
#include "hash-common.h"
|
||||
|
||||
|
||||
/* A macro to test whether P is properly aligned for an u32 type.
|
||||
Note that config.h provides a suitable replacement for uintptr_t if
|
||||
it does not exist in stdint.h. */
|
||||
/* #if __GNUC__ >= 2 */
|
||||
/* # define U32_ALIGNED_P(p) (!(((uintptr_t)p) % __alignof__ (u32))) */
|
||||
/* #else */
|
||||
/* # define U32_ALIGNED_P(p) (!(((uintptr_t)p) % sizeof (u32))) */
|
||||
/* #endif */
|
||||
|
||||
#define TRANSFORM(x,d,n) transform ((x), (d), (n))
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 h0,h1,h2,h3,h4;
|
||||
u32 nblocks;
|
||||
unsigned char buf[64];
|
||||
int count;
|
||||
} SHA1_CONTEXT;
|
||||
|
||||
|
||||
|
||||
static void
|
||||
sha1_init (void *context)
|
||||
{
|
||||
SHA1_CONTEXT *hd = context;
|
||||
|
||||
hd->h0 = 0x67452301;
|
||||
hd->h1 = 0xefcdab89;
|
||||
hd->h2 = 0x98badcfe;
|
||||
hd->h3 = 0x10325476;
|
||||
hd->h4 = 0xc3d2e1f0;
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
|
||||
/* Round function macros. */
|
||||
#define K1 0x5A827999L
|
||||
#define K2 0x6ED9EBA1L
|
||||
#define K3 0x8F1BBCDCL
|
||||
#define K4 0xCA62C1D6L
|
||||
#define F1(x,y,z) ( z ^ ( x & ( y ^ z ) ) )
|
||||
#define F2(x,y,z) ( x ^ y ^ z )
|
||||
#define F3(x,y,z) ( ( x & y ) | ( z & ( x | y ) ) )
|
||||
#define F4(x,y,z) ( x ^ y ^ z )
|
||||
#define M(i) ( tm = x[ i &0x0f] \
|
||||
^ x[(i-14)&0x0f] \
|
||||
^ x[(i-8) &0x0f] \
|
||||
^ x[(i-3) &0x0f], \
|
||||
(x[i&0x0f] = rol(tm, 1)))
|
||||
#define R(a,b,c,d,e,f,k,m) do { e += rol( a, 5 ) \
|
||||
+ f( b, c, d ) \
|
||||
+ k \
|
||||
+ m; \
|
||||
b = rol( b, 30 ); \
|
||||
} while(0)
|
||||
|
||||
|
||||
/*
|
||||
* Transform NBLOCKS of each 64 bytes (16 32-bit words) at DATA.
|
||||
*/
|
||||
static void
|
||||
transform (SHA1_CONTEXT *hd, const unsigned char *data, size_t nblocks)
|
||||
{
|
||||
register u32 a, b, c, d, e; /* Local copies of the chaining variables. */
|
||||
register u32 tm; /* Helper. */
|
||||
u32 x[16]; /* The array we work on. */
|
||||
|
||||
/* Loop over all blocks. */
|
||||
for ( ;nblocks; nblocks--)
|
||||
{
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
memcpy (x, data, 64);
|
||||
data += 64;
|
||||
#else
|
||||
{
|
||||
int i;
|
||||
unsigned char *p;
|
||||
|
||||
for(i=0, p=(unsigned char*)x; i < 16; i++, p += 4 )
|
||||
{
|
||||
p[3] = *data++;
|
||||
p[2] = *data++;
|
||||
p[1] = *data++;
|
||||
p[0] = *data++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* Get the values of the chaining variables. */
|
||||
a = hd->h0;
|
||||
b = hd->h1;
|
||||
c = hd->h2;
|
||||
d = hd->h3;
|
||||
e = hd->h4;
|
||||
|
||||
/* Transform. */
|
||||
R( a, b, c, d, e, F1, K1, x[ 0] );
|
||||
R( e, a, b, c, d, F1, K1, x[ 1] );
|
||||
R( d, e, a, b, c, F1, K1, x[ 2] );
|
||||
R( c, d, e, a, b, F1, K1, x[ 3] );
|
||||
R( b, c, d, e, a, F1, K1, x[ 4] );
|
||||
R( a, b, c, d, e, F1, K1, x[ 5] );
|
||||
R( e, a, b, c, d, F1, K1, x[ 6] );
|
||||
R( d, e, a, b, c, F1, K1, x[ 7] );
|
||||
R( c, d, e, a, b, F1, K1, x[ 8] );
|
||||
R( b, c, d, e, a, F1, K1, x[ 9] );
|
||||
R( a, b, c, d, e, F1, K1, x[10] );
|
||||
R( e, a, b, c, d, F1, K1, x[11] );
|
||||
R( d, e, a, b, c, F1, K1, x[12] );
|
||||
R( c, d, e, a, b, F1, K1, x[13] );
|
||||
R( b, c, d, e, a, F1, K1, x[14] );
|
||||
R( a, b, c, d, e, F1, K1, x[15] );
|
||||
R( e, a, b, c, d, F1, K1, M(16) );
|
||||
R( d, e, a, b, c, F1, K1, M(17) );
|
||||
R( c, d, e, a, b, F1, K1, M(18) );
|
||||
R( b, c, d, e, a, F1, K1, M(19) );
|
||||
R( a, b, c, d, e, F2, K2, M(20) );
|
||||
R( e, a, b, c, d, F2, K2, M(21) );
|
||||
R( d, e, a, b, c, F2, K2, M(22) );
|
||||
R( c, d, e, a, b, F2, K2, M(23) );
|
||||
R( b, c, d, e, a, F2, K2, M(24) );
|
||||
R( a, b, c, d, e, F2, K2, M(25) );
|
||||
R( e, a, b, c, d, F2, K2, M(26) );
|
||||
R( d, e, a, b, c, F2, K2, M(27) );
|
||||
R( c, d, e, a, b, F2, K2, M(28) );
|
||||
R( b, c, d, e, a, F2, K2, M(29) );
|
||||
R( a, b, c, d, e, F2, K2, M(30) );
|
||||
R( e, a, b, c, d, F2, K2, M(31) );
|
||||
R( d, e, a, b, c, F2, K2, M(32) );
|
||||
R( c, d, e, a, b, F2, K2, M(33) );
|
||||
R( b, c, d, e, a, F2, K2, M(34) );
|
||||
R( a, b, c, d, e, F2, K2, M(35) );
|
||||
R( e, a, b, c, d, F2, K2, M(36) );
|
||||
R( d, e, a, b, c, F2, K2, M(37) );
|
||||
R( c, d, e, a, b, F2, K2, M(38) );
|
||||
R( b, c, d, e, a, F2, K2, M(39) );
|
||||
R( a, b, c, d, e, F3, K3, M(40) );
|
||||
R( e, a, b, c, d, F3, K3, M(41) );
|
||||
R( d, e, a, b, c, F3, K3, M(42) );
|
||||
R( c, d, e, a, b, F3, K3, M(43) );
|
||||
R( b, c, d, e, a, F3, K3, M(44) );
|
||||
R( a, b, c, d, e, F3, K3, M(45) );
|
||||
R( e, a, b, c, d, F3, K3, M(46) );
|
||||
R( d, e, a, b, c, F3, K3, M(47) );
|
||||
R( c, d, e, a, b, F3, K3, M(48) );
|
||||
R( b, c, d, e, a, F3, K3, M(49) );
|
||||
R( a, b, c, d, e, F3, K3, M(50) );
|
||||
R( e, a, b, c, d, F3, K3, M(51) );
|
||||
R( d, e, a, b, c, F3, K3, M(52) );
|
||||
R( c, d, e, a, b, F3, K3, M(53) );
|
||||
R( b, c, d, e, a, F3, K3, M(54) );
|
||||
R( a, b, c, d, e, F3, K3, M(55) );
|
||||
R( e, a, b, c, d, F3, K3, M(56) );
|
||||
R( d, e, a, b, c, F3, K3, M(57) );
|
||||
R( c, d, e, a, b, F3, K3, M(58) );
|
||||
R( b, c, d, e, a, F3, K3, M(59) );
|
||||
R( a, b, c, d, e, F4, K4, M(60) );
|
||||
R( e, a, b, c, d, F4, K4, M(61) );
|
||||
R( d, e, a, b, c, F4, K4, M(62) );
|
||||
R( c, d, e, a, b, F4, K4, M(63) );
|
||||
R( b, c, d, e, a, F4, K4, M(64) );
|
||||
R( a, b, c, d, e, F4, K4, M(65) );
|
||||
R( e, a, b, c, d, F4, K4, M(66) );
|
||||
R( d, e, a, b, c, F4, K4, M(67) );
|
||||
R( c, d, e, a, b, F4, K4, M(68) );
|
||||
R( b, c, d, e, a, F4, K4, M(69) );
|
||||
R( a, b, c, d, e, F4, K4, M(70) );
|
||||
R( e, a, b, c, d, F4, K4, M(71) );
|
||||
R( d, e, a, b, c, F4, K4, M(72) );
|
||||
R( c, d, e, a, b, F4, K4, M(73) );
|
||||
R( b, c, d, e, a, F4, K4, M(74) );
|
||||
R( a, b, c, d, e, F4, K4, M(75) );
|
||||
R( e, a, b, c, d, F4, K4, M(76) );
|
||||
R( d, e, a, b, c, F4, K4, M(77) );
|
||||
R( c, d, e, a, b, F4, K4, M(78) );
|
||||
R( b, c, d, e, a, F4, K4, M(79) );
|
||||
|
||||
/* Update the chaining variables. */
|
||||
hd->h0 += a;
|
||||
hd->h1 += b;
|
||||
hd->h2 += c;
|
||||
hd->h3 += d;
|
||||
hd->h4 += e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Update the message digest with the contents
|
||||
* of INBUF with length INLEN.
|
||||
*/
|
||||
static void
|
||||
sha1_write( void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
SHA1_CONTEXT *hd = context;
|
||||
size_t nblocks;
|
||||
|
||||
if (hd->count == 64) /* Flush the buffer. */
|
||||
{
|
||||
TRANSFORM( hd, hd->buf, 1 );
|
||||
_gcry_burn_stack (88+4*sizeof(void*));
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if (!inbuf)
|
||||
return;
|
||||
|
||||
if (hd->count)
|
||||
{
|
||||
for (; inlen && hd->count < 64; inlen--)
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
sha1_write (hd, NULL, 0);
|
||||
if (!inlen)
|
||||
return;
|
||||
}
|
||||
|
||||
nblocks = inlen / 64;
|
||||
if (nblocks)
|
||||
{
|
||||
TRANSFORM (hd, inbuf, nblocks);
|
||||
hd->count = 0;
|
||||
hd->nblocks += nblocks;
|
||||
inlen -= nblocks * 64;
|
||||
inbuf += nblocks * 64;
|
||||
}
|
||||
_gcry_burn_stack (88+4*sizeof(void*));
|
||||
|
||||
/* Save remaining bytes. */
|
||||
for (; inlen && hd->count < 64; inlen--)
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
}
|
||||
|
||||
|
||||
/* The routine final terminates the computation and
|
||||
* returns the digest.
|
||||
* The handle is prepared for a new cycle, but adding bytes to the
|
||||
* handle will the destroy the returned buffer.
|
||||
* Returns: 20 bytes representing the digest.
|
||||
*/
|
||||
|
||||
static void
|
||||
sha1_final(void *context)
|
||||
{
|
||||
SHA1_CONTEXT *hd = context;
|
||||
|
||||
u32 t, msb, lsb;
|
||||
unsigned char *p;
|
||||
|
||||
sha1_write(hd, NULL, 0); /* flush */;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 64 to make a byte count */
|
||||
lsb = t << 6;
|
||||
msb = t >> 26;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if( (lsb += hd->count) < t )
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 29;
|
||||
|
||||
if( hd->count < 56 ) /* enough room */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad */
|
||||
while( hd->count < 56 )
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else /* need one extra block */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x80; /* pad character */
|
||||
while( hd->count < 64 )
|
||||
hd->buf[hd->count++] = 0;
|
||||
sha1_write(hd, NULL, 0); /* flush */;
|
||||
memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 64 bit count */
|
||||
hd->buf[56] = msb >> 24;
|
||||
hd->buf[57] = msb >> 16;
|
||||
hd->buf[58] = msb >> 8;
|
||||
hd->buf[59] = msb ;
|
||||
hd->buf[60] = lsb >> 24;
|
||||
hd->buf[61] = lsb >> 16;
|
||||
hd->buf[62] = lsb >> 8;
|
||||
hd->buf[63] = lsb ;
|
||||
TRANSFORM( hd, hd->buf, 1 );
|
||||
_gcry_burn_stack (88+4*sizeof(void*));
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *p++ = hd->h##a >> 24; *p++ = hd->h##a >> 16; \
|
||||
*p++ = hd->h##a >> 8; *p++ = hd->h##a; } while(0)
|
||||
#endif
|
||||
X(0);
|
||||
X(1);
|
||||
X(2);
|
||||
X(3);
|
||||
X(4);
|
||||
#undef X
|
||||
|
||||
}
|
||||
|
||||
static unsigned char *
|
||||
sha1_read( void *context )
|
||||
{
|
||||
SHA1_CONTEXT *hd = context;
|
||||
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
/****************
|
||||
* Shortcut functions which puts the hash value of the supplied buffer
|
||||
* into outbuf which must have a size of 20 bytes.
|
||||
*/
|
||||
void
|
||||
_gcry_sha1_hash_buffer (void *outbuf, const void *buffer, size_t length)
|
||||
{
|
||||
SHA1_CONTEXT hd;
|
||||
|
||||
sha1_init (&hd);
|
||||
sha1_write (&hd, buffer, length);
|
||||
sha1_final (&hd);
|
||||
memcpy (outbuf, hd.buf, 20);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Self-test section.
|
||||
*/
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha1 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
|
||||
what = "short string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA1, 0,
|
||||
"abc", 3,
|
||||
"\xA9\x99\x3E\x36\x47\x06\x81\x6A\xBA\x3E"
|
||||
"\x25\x71\x78\x50\xC2\x6C\x9C\xD0\xD8\x9D", 20);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
if (extended)
|
||||
{
|
||||
what = "long string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA1, 0,
|
||||
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56,
|
||||
"\x84\x98\x3E\x44\x1C\x3B\xD2\x6E\xBA\xAE"
|
||||
"\x4A\xA1\xF9\x51\x29\xE5\xE5\x46\x70\xF1", 20);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "one million \"a\"";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA1, 1,
|
||||
NULL, 0,
|
||||
"\x34\xAA\x97\x3C\xD4\xC4\xDA\xA4\xF6\x1E"
|
||||
"\xEB\x2B\xDB\xAD\x27\x31\x65\x34\x01\x6F", 20);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("digest", GCRY_MD_SHA1, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
/* Run a full self-test for ALGO and return 0 on success. */
|
||||
static gpg_err_code_t
|
||||
run_selftests (int algo, int extended, selftest_report_func_t report)
|
||||
{
|
||||
gpg_err_code_t ec;
|
||||
|
||||
switch (algo)
|
||||
{
|
||||
case GCRY_MD_SHA1:
|
||||
ec = selftests_sha1 (extended, report);
|
||||
break;
|
||||
default:
|
||||
ec = GPG_ERR_DIGEST_ALGO;
|
||||
break;
|
||||
|
||||
}
|
||||
return ec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static unsigned char asn[15] = /* Object ID is 1.3.14.3.2.26 */
|
||||
{ 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03,
|
||||
0x02, 0x1a, 0x05, 0x00, 0x04, 0x14 };
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_sha1[] =
|
||||
{
|
||||
/* iso.member-body.us.rsadsi.pkcs.pkcs-1.5 (sha1WithRSAEncryption) */
|
||||
{ "1.2.840.113549.1.1.5" },
|
||||
/* iso.member-body.us.x9-57.x9cm.3 (dsaWithSha1)*/
|
||||
{ "1.2.840.10040.4.3" },
|
||||
/* from NIST's OIW (sha1) */
|
||||
{ "1.3.14.3.2.26" },
|
||||
/* from NIST OIW (sha-1WithRSAEncryption) */
|
||||
{ "1.3.14.3.2.29" },
|
||||
/* iso.member-body.us.ansi-x9-62.signatures.ecdsa-with-sha1 */
|
||||
{ "1.2.840.10045.4.1" },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_sha1 =
|
||||
{
|
||||
"SHA1", asn, DIM (asn), oid_spec_sha1, 20,
|
||||
sha1_init, sha1_write, sha1_final, sha1_read,
|
||||
sizeof (SHA1_CONTEXT)
|
||||
};
|
||||
md_extra_spec_t _gcry_digest_extraspec_sha1 =
|
||||
{
|
||||
run_selftests
|
||||
};
|
||||
|
||||
487
jni/libgcrypt/cipher/sha256.c
Normal file
487
jni/libgcrypt/cipher/sha256.c
Normal file
@@ -0,0 +1,487 @@
|
||||
/* sha256.c - SHA256 hash function
|
||||
* Copyright (C) 2003, 2006, 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
/* Test vectors:
|
||||
|
||||
"abc"
|
||||
SHA224: 23097d22 3405d822 8642a477 bda255b3 2aadbce4 bda0b3f7 e36c9da7
|
||||
SHA256: ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad
|
||||
|
||||
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
|
||||
SHA224: 75388b16 512776cc 5dba5da1 fd890150 b0c6455c b4f58b19 52522525
|
||||
SHA256: 248d6a61 d20638b8 e5c02693 0c3e6039 a33ce459 64ff2167 f6ecedd4 19db06c1
|
||||
|
||||
"a" one million times
|
||||
SHA224: 20794655 980c91d8 bbb4c1ea 97618a4b f03f4258 1948b2ee 4ee7ad67
|
||||
SHA256: cdc76e5c 9914fb92 81a1c7e2 84d73e67 f1809a48 a497200e 046d39cc c7112cd0
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "bithelp.h"
|
||||
#include "cipher.h"
|
||||
#include "hash-common.h"
|
||||
|
||||
typedef struct {
|
||||
u32 h0,h1,h2,h3,h4,h5,h6,h7;
|
||||
u32 nblocks;
|
||||
byte buf[64];
|
||||
int count;
|
||||
} SHA256_CONTEXT;
|
||||
|
||||
|
||||
static void
|
||||
sha256_init (void *context)
|
||||
{
|
||||
SHA256_CONTEXT *hd = context;
|
||||
|
||||
hd->h0 = 0x6a09e667;
|
||||
hd->h1 = 0xbb67ae85;
|
||||
hd->h2 = 0x3c6ef372;
|
||||
hd->h3 = 0xa54ff53a;
|
||||
hd->h4 = 0x510e527f;
|
||||
hd->h5 = 0x9b05688c;
|
||||
hd->h6 = 0x1f83d9ab;
|
||||
hd->h7 = 0x5be0cd19;
|
||||
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
sha224_init (void *context)
|
||||
{
|
||||
SHA256_CONTEXT *hd = context;
|
||||
|
||||
hd->h0 = 0xc1059ed8;
|
||||
hd->h1 = 0x367cd507;
|
||||
hd->h2 = 0x3070dd17;
|
||||
hd->h3 = 0xf70e5939;
|
||||
hd->h4 = 0xffc00b31;
|
||||
hd->h5 = 0x68581511;
|
||||
hd->h6 = 0x64f98fa7;
|
||||
hd->h7 = 0xbefa4fa4;
|
||||
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Transform the message X which consists of 16 32-bit-words. See FIPS
|
||||
180-2 for details. */
|
||||
#define Cho(x,y,z) (z ^ (x & (y ^ z))) /* (4.2) same as SHA-1's F1 */
|
||||
#define Maj(x,y,z) ((x & y) | (z & (x|y))) /* (4.3) same as SHA-1's F3 */
|
||||
#define Sum0(x) (ror ((x), 2) ^ ror ((x), 13) ^ ror ((x), 22)) /* (4.4) */
|
||||
#define Sum1(x) (ror ((x), 6) ^ ror ((x), 11) ^ ror ((x), 25)) /* (4.5) */
|
||||
#define S0(x) (ror ((x), 7) ^ ror ((x), 18) ^ ((x) >> 3)) /* (4.6) */
|
||||
#define S1(x) (ror ((x), 17) ^ ror ((x), 19) ^ ((x) >> 10)) /* (4.7) */
|
||||
#define R(a,b,c,d,e,f,g,h,k,w) do \
|
||||
{ \
|
||||
t1 = (h) + Sum1((e)) + Cho((e),(f),(g)) + (k) + (w); \
|
||||
t2 = Sum0((a)) + Maj((a),(b),(c)); \
|
||||
h = g; \
|
||||
g = f; \
|
||||
f = e; \
|
||||
e = d + t1; \
|
||||
d = c; \
|
||||
c = b; \
|
||||
b = a; \
|
||||
a = t1 + t2; \
|
||||
} while (0)
|
||||
|
||||
static void
|
||||
transform (SHA256_CONTEXT *hd, const unsigned char *data)
|
||||
{
|
||||
static const u32 K[64] = {
|
||||
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
||||
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
||||
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
||||
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
||||
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
||||
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
||||
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
||||
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
||||
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
||||
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
||||
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
||||
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
||||
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
||||
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
||||
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
||||
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
||||
};
|
||||
|
||||
u32 a,b,c,d,e,f,g,h,t1,t2;
|
||||
u32 x[16];
|
||||
u32 w[64];
|
||||
int i;
|
||||
|
||||
a = hd->h0;
|
||||
b = hd->h1;
|
||||
c = hd->h2;
|
||||
d = hd->h3;
|
||||
e = hd->h4;
|
||||
f = hd->h5;
|
||||
g = hd->h6;
|
||||
h = hd->h7;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
memcpy (x, data, 64);
|
||||
#else
|
||||
{
|
||||
byte *p2;
|
||||
|
||||
for (i=0, p2=(byte*)x; i < 16; i++, p2 += 4 )
|
||||
{
|
||||
p2[3] = *data++;
|
||||
p2[2] = *data++;
|
||||
p2[1] = *data++;
|
||||
p2[0] = *data++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i=0; i < 16; i++)
|
||||
w[i] = x[i];
|
||||
for (; i < 64; i++)
|
||||
w[i] = S1(w[i-2]) + w[i-7] + S0(w[i-15]) + w[i-16];
|
||||
|
||||
for (i=0; i < 64; i++)
|
||||
R(a,b,c,d,e,f,g,h,K[i],w[i]);
|
||||
|
||||
hd->h0 += a;
|
||||
hd->h1 += b;
|
||||
hd->h2 += c;
|
||||
hd->h3 += d;
|
||||
hd->h4 += e;
|
||||
hd->h5 += f;
|
||||
hd->h6 += g;
|
||||
hd->h7 += h;
|
||||
}
|
||||
#undef Cho
|
||||
#undef Maj
|
||||
#undef Sum0
|
||||
#undef Sum1
|
||||
#undef S0
|
||||
#undef S1
|
||||
#undef R
|
||||
|
||||
|
||||
/* Update the message digest with the contents of INBUF with length
|
||||
INLEN. */
|
||||
static void
|
||||
sha256_write (void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
SHA256_CONTEXT *hd = context;
|
||||
|
||||
if (hd->count == 64)
|
||||
{ /* flush the buffer */
|
||||
transform (hd, hd->buf);
|
||||
_gcry_burn_stack (74*4+32);
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if (!inbuf)
|
||||
return;
|
||||
if (hd->count)
|
||||
{
|
||||
for (; inlen && hd->count < 64; inlen--)
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
sha256_write (hd, NULL, 0);
|
||||
if (!inlen)
|
||||
return;
|
||||
}
|
||||
|
||||
while (inlen >= 64)
|
||||
{
|
||||
transform (hd, inbuf);
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
inlen -= 64;
|
||||
inbuf += 64;
|
||||
}
|
||||
_gcry_burn_stack (74*4+32);
|
||||
for (; inlen && hd->count < 64; inlen--)
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
The routine finally terminates the computation and returns the
|
||||
digest. The handle is prepared for a new cycle, but adding bytes
|
||||
to the handle will the destroy the returned buffer. Returns: 32
|
||||
bytes with the message the digest. */
|
||||
static void
|
||||
sha256_final(void *context)
|
||||
{
|
||||
SHA256_CONTEXT *hd = context;
|
||||
u32 t, msb, lsb;
|
||||
byte *p;
|
||||
|
||||
sha256_write (hd, NULL, 0); /* flush */;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 64 to make a byte count */
|
||||
lsb = t << 6;
|
||||
msb = t >> 26;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if ((lsb += hd->count) < t)
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 29;
|
||||
|
||||
if (hd->count < 56)
|
||||
{ /* enough room */
|
||||
hd->buf[hd->count++] = 0x80; /* pad */
|
||||
while (hd->count < 56)
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else
|
||||
{ /* need one extra block */
|
||||
hd->buf[hd->count++] = 0x80; /* pad character */
|
||||
while (hd->count < 64)
|
||||
hd->buf[hd->count++] = 0;
|
||||
sha256_write (hd, NULL, 0); /* flush */;
|
||||
memset (hd->buf, 0, 56 ); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 64 bit count */
|
||||
hd->buf[56] = msb >> 24;
|
||||
hd->buf[57] = msb >> 16;
|
||||
hd->buf[58] = msb >> 8;
|
||||
hd->buf[59] = msb;
|
||||
hd->buf[60] = lsb >> 24;
|
||||
hd->buf[61] = lsb >> 16;
|
||||
hd->buf[62] = lsb >> 8;
|
||||
hd->buf[63] = lsb;
|
||||
transform (hd, hd->buf);
|
||||
_gcry_burn_stack (74*4+32);
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *(u32*)p = hd->h##a ; p += 4; } while(0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *p++ = hd->h##a >> 24; *p++ = hd->h##a >> 16; \
|
||||
*p++ = hd->h##a >> 8; *p++ = hd->h##a; } while(0)
|
||||
#endif
|
||||
X(0);
|
||||
X(1);
|
||||
X(2);
|
||||
X(3);
|
||||
X(4);
|
||||
X(5);
|
||||
X(6);
|
||||
X(7);
|
||||
#undef X
|
||||
}
|
||||
|
||||
static byte *
|
||||
sha256_read (void *context)
|
||||
{
|
||||
SHA256_CONTEXT *hd = context;
|
||||
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Self-test section.
|
||||
*/
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha224 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
|
||||
what = "short string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA224, 0,
|
||||
"abc", 3,
|
||||
"\x23\x09\x7d\x22\x34\x05\xd8\x22\x86\x42\xa4\x77\xbd\xa2\x55\xb3"
|
||||
"\x2a\xad\xbc\xe4\xbd\xa0\xb3\xf7\xe3\x6c\x9d\xa7", 28);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
if (extended)
|
||||
{
|
||||
what = "long string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA224, 0,
|
||||
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56,
|
||||
"\x75\x38\x8b\x16\x51\x27\x76\xcc\x5d\xba\x5d\xa1\xfd\x89\x01\x50"
|
||||
"\xb0\xc6\x45\x5c\xb4\xf5\x8b\x19\x52\x52\x25\x25", 28);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "one million \"a\"";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA224, 1,
|
||||
NULL, 0,
|
||||
"\x20\x79\x46\x55\x98\x0c\x91\xd8\xbb\xb4\xc1\xea\x97\x61\x8a\x4b"
|
||||
"\xf0\x3f\x42\x58\x19\x48\xb2\xee\x4e\xe7\xad\x67", 28);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("digest", GCRY_MD_SHA224, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha256 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
|
||||
what = "short string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA256, 0,
|
||||
"abc", 3,
|
||||
"\xba\x78\x16\xbf\x8f\x01\xcf\xea\x41\x41\x40\xde\x5d\xae\x22\x23"
|
||||
"\xb0\x03\x61\xa3\x96\x17\x7a\x9c\xb4\x10\xff\x61\xf2\x00\x15\xad", 32);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
if (extended)
|
||||
{
|
||||
what = "long string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA256, 0,
|
||||
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56,
|
||||
"\x24\x8d\x6a\x61\xd2\x06\x38\xb8\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
|
||||
"\xa3\x3c\xe4\x59\x64\xff\x21\x67\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
|
||||
32);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "one million \"a\"";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA256, 1,
|
||||
NULL, 0,
|
||||
"\xcd\xc7\x6e\x5c\x99\x14\xfb\x92\x81\xa1\xc7\xe2\x84\xd7\x3e\x67"
|
||||
"\xf1\x80\x9a\x48\xa4\x97\x20\x0e\x04\x6d\x39\xcc\xc7\x11\x2c\xd0",
|
||||
32);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("digest", GCRY_MD_SHA256, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
/* Run a full self-test for ALGO and return 0 on success. */
|
||||
static gpg_err_code_t
|
||||
run_selftests (int algo, int extended, selftest_report_func_t report)
|
||||
{
|
||||
gpg_err_code_t ec;
|
||||
|
||||
switch (algo)
|
||||
{
|
||||
case GCRY_MD_SHA224:
|
||||
ec = selftests_sha224 (extended, report);
|
||||
break;
|
||||
case GCRY_MD_SHA256:
|
||||
ec = selftests_sha256 (extended, report);
|
||||
break;
|
||||
default:
|
||||
ec = GPG_ERR_DIGEST_ALGO;
|
||||
break;
|
||||
|
||||
}
|
||||
return ec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static byte asn224[19] = /* Object ID is 2.16.840.1.101.3.4.2.4 */
|
||||
{ 0x30, 0x2D, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48,
|
||||
0x01, 0x65, 0x03, 0x04, 0x02, 0x04, 0x05, 0x00, 0x04,
|
||||
0x1C
|
||||
};
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_sha224[] =
|
||||
{
|
||||
/* From RFC3874, Section 4 */
|
||||
{ "2.16.840.1.101.3.4.2.4" },
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
static byte asn256[19] = /* Object ID is 2.16.840.1.101.3.4.2.1 */
|
||||
{ 0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
|
||||
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05,
|
||||
0x00, 0x04, 0x20 };
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_sha256[] =
|
||||
{
|
||||
/* According to the OpenPGP draft rfc2440-bis06 */
|
||||
{ "2.16.840.1.101.3.4.2.1" },
|
||||
/* PKCS#1 sha256WithRSAEncryption */
|
||||
{ "1.2.840.113549.1.1.11" },
|
||||
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_sha224 =
|
||||
{
|
||||
"SHA224", asn224, DIM (asn224), oid_spec_sha224, 28,
|
||||
sha224_init, sha256_write, sha256_final, sha256_read,
|
||||
sizeof (SHA256_CONTEXT)
|
||||
};
|
||||
md_extra_spec_t _gcry_digest_extraspec_sha224 =
|
||||
{
|
||||
run_selftests
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_sha256 =
|
||||
{
|
||||
"SHA256", asn256, DIM (asn256), oid_spec_sha256, 32,
|
||||
sha256_init, sha256_write, sha256_final, sha256_read,
|
||||
sizeof (SHA256_CONTEXT)
|
||||
};
|
||||
md_extra_spec_t _gcry_digest_extraspec_sha256 =
|
||||
{
|
||||
run_selftests
|
||||
};
|
||||
553
jni/libgcrypt/cipher/sha512.c
Normal file
553
jni/libgcrypt/cipher/sha512.c
Normal file
@@ -0,0 +1,553 @@
|
||||
/* sha512.c - SHA384 and SHA512 hash functions
|
||||
* Copyright (C) 2003, 2008 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
/* Test vectors from FIPS-180-2:
|
||||
*
|
||||
* "abc"
|
||||
* 384:
|
||||
* CB00753F 45A35E8B B5A03D69 9AC65007 272C32AB 0EDED163
|
||||
* 1A8B605A 43FF5BED 8086072B A1E7CC23 58BAECA1 34C825A7
|
||||
* 512:
|
||||
* DDAF35A1 93617ABA CC417349 AE204131 12E6FA4E 89A97EA2 0A9EEEE6 4B55D39A
|
||||
* 2192992A 274FC1A8 36BA3C23 A3FEEBBD 454D4423 643CE80E 2A9AC94F A54CA49F
|
||||
*
|
||||
* "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"
|
||||
* 384:
|
||||
* 09330C33 F71147E8 3D192FC7 82CD1B47 53111B17 3B3B05D2
|
||||
* 2FA08086 E3B0F712 FCC7C71A 557E2DB9 66C3E9FA 91746039
|
||||
* 512:
|
||||
* 8E959B75 DAE313DA 8CF4F728 14FC143F 8F7779C6 EB9F7FA1 7299AEAD B6889018
|
||||
* 501D289E 4900F7E4 331B99DE C4B5433A C7D329EE B6DD2654 5E96E55B 874BE909
|
||||
*
|
||||
* "a" x 1000000
|
||||
* 384:
|
||||
* 9D0E1809 716474CB 086E834E 310A4A1C ED149E9C 00F24852
|
||||
* 7972CEC5 704C2A5B 07B8B3DC 38ECC4EB AE97DDD8 7F3D8985
|
||||
* 512:
|
||||
* E718483D 0CE76964 4E2E42C7 BC15B463 8E1F98B1 3B204428 5632A803 AFA973EB
|
||||
* DE0FF244 877EA60A 4CB0432C E577C31B EB009C5C 2C49AA2E 4EADB217 AD8CC09B
|
||||
*/
|
||||
|
||||
|
||||
#include <config.h>
|
||||
#include <string.h>
|
||||
#include "g10lib.h"
|
||||
#include "bithelp.h"
|
||||
#include "cipher.h"
|
||||
#include "hash-common.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u64 h0, h1, h2, h3, h4, h5, h6, h7;
|
||||
u64 nblocks;
|
||||
byte buf[128];
|
||||
int count;
|
||||
} SHA512_CONTEXT;
|
||||
|
||||
static void
|
||||
sha512_init (void *context)
|
||||
{
|
||||
SHA512_CONTEXT *hd = context;
|
||||
|
||||
hd->h0 = U64_C(0x6a09e667f3bcc908);
|
||||
hd->h1 = U64_C(0xbb67ae8584caa73b);
|
||||
hd->h2 = U64_C(0x3c6ef372fe94f82b);
|
||||
hd->h3 = U64_C(0xa54ff53a5f1d36f1);
|
||||
hd->h4 = U64_C(0x510e527fade682d1);
|
||||
hd->h5 = U64_C(0x9b05688c2b3e6c1f);
|
||||
hd->h6 = U64_C(0x1f83d9abfb41bd6b);
|
||||
hd->h7 = U64_C(0x5be0cd19137e2179);
|
||||
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
sha384_init (void *context)
|
||||
{
|
||||
SHA512_CONTEXT *hd = context;
|
||||
|
||||
hd->h0 = U64_C(0xcbbb9d5dc1059ed8);
|
||||
hd->h1 = U64_C(0x629a292a367cd507);
|
||||
hd->h2 = U64_C(0x9159015a3070dd17);
|
||||
hd->h3 = U64_C(0x152fecd8f70e5939);
|
||||
hd->h4 = U64_C(0x67332667ffc00b31);
|
||||
hd->h5 = U64_C(0x8eb44a8768581511);
|
||||
hd->h6 = U64_C(0xdb0c2e0d64f98fa7);
|
||||
hd->h7 = U64_C(0x47b5481dbefa4fa4);
|
||||
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Transform the message W which consists of 16 64-bit-words
|
||||
*/
|
||||
static void
|
||||
transform (SHA512_CONTEXT *hd, const unsigned char *data)
|
||||
{
|
||||
u64 a, b, c, d, e, f, g, h;
|
||||
u64 w[80];
|
||||
int t;
|
||||
static const u64 k[] =
|
||||
{
|
||||
U64_C(0x428a2f98d728ae22), U64_C(0x7137449123ef65cd),
|
||||
U64_C(0xb5c0fbcfec4d3b2f), U64_C(0xe9b5dba58189dbbc),
|
||||
U64_C(0x3956c25bf348b538), U64_C(0x59f111f1b605d019),
|
||||
U64_C(0x923f82a4af194f9b), U64_C(0xab1c5ed5da6d8118),
|
||||
U64_C(0xd807aa98a3030242), U64_C(0x12835b0145706fbe),
|
||||
U64_C(0x243185be4ee4b28c), U64_C(0x550c7dc3d5ffb4e2),
|
||||
U64_C(0x72be5d74f27b896f), U64_C(0x80deb1fe3b1696b1),
|
||||
U64_C(0x9bdc06a725c71235), U64_C(0xc19bf174cf692694),
|
||||
U64_C(0xe49b69c19ef14ad2), U64_C(0xefbe4786384f25e3),
|
||||
U64_C(0x0fc19dc68b8cd5b5), U64_C(0x240ca1cc77ac9c65),
|
||||
U64_C(0x2de92c6f592b0275), U64_C(0x4a7484aa6ea6e483),
|
||||
U64_C(0x5cb0a9dcbd41fbd4), U64_C(0x76f988da831153b5),
|
||||
U64_C(0x983e5152ee66dfab), U64_C(0xa831c66d2db43210),
|
||||
U64_C(0xb00327c898fb213f), U64_C(0xbf597fc7beef0ee4),
|
||||
U64_C(0xc6e00bf33da88fc2), U64_C(0xd5a79147930aa725),
|
||||
U64_C(0x06ca6351e003826f), U64_C(0x142929670a0e6e70),
|
||||
U64_C(0x27b70a8546d22ffc), U64_C(0x2e1b21385c26c926),
|
||||
U64_C(0x4d2c6dfc5ac42aed), U64_C(0x53380d139d95b3df),
|
||||
U64_C(0x650a73548baf63de), U64_C(0x766a0abb3c77b2a8),
|
||||
U64_C(0x81c2c92e47edaee6), U64_C(0x92722c851482353b),
|
||||
U64_C(0xa2bfe8a14cf10364), U64_C(0xa81a664bbc423001),
|
||||
U64_C(0xc24b8b70d0f89791), U64_C(0xc76c51a30654be30),
|
||||
U64_C(0xd192e819d6ef5218), U64_C(0xd69906245565a910),
|
||||
U64_C(0xf40e35855771202a), U64_C(0x106aa07032bbd1b8),
|
||||
U64_C(0x19a4c116b8d2d0c8), U64_C(0x1e376c085141ab53),
|
||||
U64_C(0x2748774cdf8eeb99), U64_C(0x34b0bcb5e19b48a8),
|
||||
U64_C(0x391c0cb3c5c95a63), U64_C(0x4ed8aa4ae3418acb),
|
||||
U64_C(0x5b9cca4f7763e373), U64_C(0x682e6ff3d6b2b8a3),
|
||||
U64_C(0x748f82ee5defb2fc), U64_C(0x78a5636f43172f60),
|
||||
U64_C(0x84c87814a1f0ab72), U64_C(0x8cc702081a6439ec),
|
||||
U64_C(0x90befffa23631e28), U64_C(0xa4506cebde82bde9),
|
||||
U64_C(0xbef9a3f7b2c67915), U64_C(0xc67178f2e372532b),
|
||||
U64_C(0xca273eceea26619c), U64_C(0xd186b8c721c0c207),
|
||||
U64_C(0xeada7dd6cde0eb1e), U64_C(0xf57d4f7fee6ed178),
|
||||
U64_C(0x06f067aa72176fba), U64_C(0x0a637dc5a2c898a6),
|
||||
U64_C(0x113f9804bef90dae), U64_C(0x1b710b35131c471b),
|
||||
U64_C(0x28db77f523047d84), U64_C(0x32caab7b40c72493),
|
||||
U64_C(0x3c9ebe0a15c9bebc), U64_C(0x431d67c49c100d4c),
|
||||
U64_C(0x4cc5d4becb3e42b6), U64_C(0x597f299cfc657e2a),
|
||||
U64_C(0x5fcb6fab3ad6faec), U64_C(0x6c44198c4a475817)
|
||||
};
|
||||
|
||||
/* get values from the chaining vars */
|
||||
a = hd->h0;
|
||||
b = hd->h1;
|
||||
c = hd->h2;
|
||||
d = hd->h3;
|
||||
e = hd->h4;
|
||||
f = hd->h5;
|
||||
g = hd->h6;
|
||||
h = hd->h7;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
memcpy (w, data, 128);
|
||||
#else
|
||||
{
|
||||
int i;
|
||||
byte *p2;
|
||||
|
||||
for (i = 0, p2 = (byte *) w; i < 16; i++, p2 += 8)
|
||||
{
|
||||
p2[7] = *data++;
|
||||
p2[6] = *data++;
|
||||
p2[5] = *data++;
|
||||
p2[4] = *data++;
|
||||
p2[3] = *data++;
|
||||
p2[2] = *data++;
|
||||
p2[1] = *data++;
|
||||
p2[0] = *data++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#define ROTR(x,n) (((x)>>(n)) | ((x)<<(64-(n))))
|
||||
#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z)))
|
||||
#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
|
||||
#define Sum0(x) (ROTR((x),28) ^ ROTR((x),34) ^ ROTR((x),39))
|
||||
#define Sum1(x) (ROTR((x),14) ^ ROTR((x),18) ^ ROTR((x),41))
|
||||
#define S0(x) (ROTR((x),1) ^ ROTR((x),8) ^ ((x)>>7))
|
||||
#define S1(x) (ROTR((x),19) ^ ROTR((x),61) ^ ((x)>>6))
|
||||
|
||||
for (t = 16; t < 80; t++)
|
||||
w[t] = S1 (w[t - 2]) + w[t - 7] + S0 (w[t - 15]) + w[t - 16];
|
||||
|
||||
for (t = 0; t < 80; t++)
|
||||
{
|
||||
u64 t1, t2;
|
||||
|
||||
t1 = h + Sum1 (e) + Ch (e, f, g) + k[t] + w[t];
|
||||
t2 = Sum0 (a) + Maj (a, b, c);
|
||||
h = g;
|
||||
g = f;
|
||||
f = e;
|
||||
e = d + t1;
|
||||
d = c;
|
||||
c = b;
|
||||
b = a;
|
||||
a = t1 + t2;
|
||||
|
||||
/* printf("t=%d a=%016llX b=%016llX c=%016llX d=%016llX "
|
||||
"e=%016llX f=%016llX g=%016llX h=%016llX\n",t,a,b,c,d,e,f,g,h); */
|
||||
}
|
||||
|
||||
/* update chaining vars */
|
||||
hd->h0 += a;
|
||||
hd->h1 += b;
|
||||
hd->h2 += c;
|
||||
hd->h3 += d;
|
||||
hd->h4 += e;
|
||||
hd->h5 += f;
|
||||
hd->h6 += g;
|
||||
hd->h7 += h;
|
||||
}
|
||||
|
||||
|
||||
/* Update the message digest with the contents
|
||||
* of INBUF with length INLEN.
|
||||
*/
|
||||
static void
|
||||
sha512_write (void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
SHA512_CONTEXT *hd = context;
|
||||
|
||||
if (hd->count == 128)
|
||||
{ /* flush the buffer */
|
||||
transform (hd, hd->buf);
|
||||
_gcry_burn_stack (768);
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if (!inbuf)
|
||||
return;
|
||||
if (hd->count)
|
||||
{
|
||||
for (; inlen && hd->count < 128; inlen--)
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
sha512_write (context, NULL, 0);
|
||||
if (!inlen)
|
||||
return;
|
||||
}
|
||||
|
||||
while (inlen >= 128)
|
||||
{
|
||||
transform (hd, inbuf);
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
inlen -= 128;
|
||||
inbuf += 128;
|
||||
}
|
||||
_gcry_burn_stack (768);
|
||||
for (; inlen && hd->count < 128; inlen--)
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
}
|
||||
|
||||
|
||||
/* The routine final terminates the computation and
|
||||
* returns the digest.
|
||||
* The handle is prepared for a new cycle, but adding bytes to the
|
||||
* handle will the destroy the returned buffer.
|
||||
* Returns: 64 bytes representing the digest. When used for sha384,
|
||||
* we take the leftmost 48 of those bytes.
|
||||
*/
|
||||
|
||||
static void
|
||||
sha512_final (void *context)
|
||||
{
|
||||
SHA512_CONTEXT *hd = context;
|
||||
u64 t, msb, lsb;
|
||||
byte *p;
|
||||
|
||||
sha512_write (context, NULL, 0); /* flush */ ;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 128 to make a byte count */
|
||||
lsb = t << 7;
|
||||
msb = t >> 57;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if ((lsb += hd->count) < t)
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 61;
|
||||
|
||||
if (hd->count < 112)
|
||||
{ /* enough room */
|
||||
hd->buf[hd->count++] = 0x80; /* pad */
|
||||
while (hd->count < 112)
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else
|
||||
{ /* need one extra block */
|
||||
hd->buf[hd->count++] = 0x80; /* pad character */
|
||||
while (hd->count < 128)
|
||||
hd->buf[hd->count++] = 0;
|
||||
sha512_write (context, NULL, 0); /* flush */ ;
|
||||
memset (hd->buf, 0, 112); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 128 bit count */
|
||||
hd->buf[112] = msb >> 56;
|
||||
hd->buf[113] = msb >> 48;
|
||||
hd->buf[114] = msb >> 40;
|
||||
hd->buf[115] = msb >> 32;
|
||||
hd->buf[116] = msb >> 24;
|
||||
hd->buf[117] = msb >> 16;
|
||||
hd->buf[118] = msb >> 8;
|
||||
hd->buf[119] = msb;
|
||||
|
||||
hd->buf[120] = lsb >> 56;
|
||||
hd->buf[121] = lsb >> 48;
|
||||
hd->buf[122] = lsb >> 40;
|
||||
hd->buf[123] = lsb >> 32;
|
||||
hd->buf[124] = lsb >> 24;
|
||||
hd->buf[125] = lsb >> 16;
|
||||
hd->buf[126] = lsb >> 8;
|
||||
hd->buf[127] = lsb;
|
||||
transform (hd, hd->buf);
|
||||
_gcry_burn_stack (768);
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *(u64*)p = hd->h##a ; p += 8; } while (0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *p++ = hd->h##a >> 56; *p++ = hd->h##a >> 48; \
|
||||
*p++ = hd->h##a >> 40; *p++ = hd->h##a >> 32; \
|
||||
*p++ = hd->h##a >> 24; *p++ = hd->h##a >> 16; \
|
||||
*p++ = hd->h##a >> 8; *p++ = hd->h##a; } while (0)
|
||||
#endif
|
||||
X (0);
|
||||
X (1);
|
||||
X (2);
|
||||
X (3);
|
||||
X (4);
|
||||
X (5);
|
||||
/* Note that these last two chunks are included even for SHA384.
|
||||
We just ignore them. */
|
||||
X (6);
|
||||
X (7);
|
||||
#undef X
|
||||
}
|
||||
|
||||
static byte *
|
||||
sha512_read (void *context)
|
||||
{
|
||||
SHA512_CONTEXT *hd = (SHA512_CONTEXT *) context;
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Self-test section.
|
||||
*/
|
||||
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha384 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
|
||||
what = "short string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA384, 0,
|
||||
"abc", 3,
|
||||
"\xcb\x00\x75\x3f\x45\xa3\x5e\x8b\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
|
||||
"\x27\x2c\x32\xab\x0e\xde\xd1\x63\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
|
||||
"\x80\x86\x07\x2b\xa1\xe7\xcc\x23\x58\xba\xec\xa1\x34\xc8\x25\xa7", 48);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
if (extended)
|
||||
{
|
||||
what = "long string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA384, 0,
|
||||
"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
|
||||
"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 112,
|
||||
"\x09\x33\x0C\x33\xF7\x11\x47\xE8\x3D\x19\x2F\xC7\x82\xCD\x1B\x47"
|
||||
"\x53\x11\x1B\x17\x3B\x3B\x05\xD2\x2F\xA0\x80\x86\xE3\xB0\xF7\x12"
|
||||
"\xFC\xC7\xC7\x1A\x55\x7E\x2D\xB9\x66\xC3\xE9\xFA\x91\x74\x60\x39",
|
||||
48);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "one million \"a\"";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA384, 1,
|
||||
NULL, 0,
|
||||
"\x9D\x0E\x18\x09\x71\x64\x74\xCB\x08\x6E\x83\x4E\x31\x0A\x4A\x1C"
|
||||
"\xED\x14\x9E\x9C\x00\xF2\x48\x52\x79\x72\xCE\xC5\x70\x4C\x2A\x5B"
|
||||
"\x07\xB8\xB3\xDC\x38\xEC\xC4\xEB\xAE\x97\xDD\xD8\x7F\x3D\x89\x85",
|
||||
48);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("digest", GCRY_MD_SHA384, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
static gpg_err_code_t
|
||||
selftests_sha512 (int extended, selftest_report_func_t report)
|
||||
{
|
||||
const char *what;
|
||||
const char *errtxt;
|
||||
|
||||
what = "short string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA512, 0,
|
||||
"abc", 3,
|
||||
"\xDD\xAF\x35\xA1\x93\x61\x7A\xBA\xCC\x41\x73\x49\xAE\x20\x41\x31"
|
||||
"\x12\xE6\xFA\x4E\x89\xA9\x7E\xA2\x0A\x9E\xEE\xE6\x4B\x55\xD3\x9A"
|
||||
"\x21\x92\x99\x2A\x27\x4F\xC1\xA8\x36\xBA\x3C\x23\xA3\xFE\xEB\xBD"
|
||||
"\x45\x4D\x44\x23\x64\x3C\xE8\x0E\x2A\x9A\xC9\x4F\xA5\x4C\xA4\x9F", 64);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
if (extended)
|
||||
{
|
||||
what = "long string";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA512, 0,
|
||||
"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
|
||||
"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 112,
|
||||
"\x8E\x95\x9B\x75\xDA\xE3\x13\xDA\x8C\xF4\xF7\x28\x14\xFC\x14\x3F"
|
||||
"\x8F\x77\x79\xC6\xEB\x9F\x7F\xA1\x72\x99\xAE\xAD\xB6\x88\x90\x18"
|
||||
"\x50\x1D\x28\x9E\x49\x00\xF7\xE4\x33\x1B\x99\xDE\xC4\xB5\x43\x3A"
|
||||
"\xC7\xD3\x29\xEE\xB6\xDD\x26\x54\x5E\x96\xE5\x5B\x87\x4B\xE9\x09",
|
||||
64);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
|
||||
what = "one million \"a\"";
|
||||
errtxt = _gcry_hash_selftest_check_one
|
||||
(GCRY_MD_SHA512, 1,
|
||||
NULL, 0,
|
||||
"\xE7\x18\x48\x3D\x0C\xE7\x69\x64\x4E\x2E\x42\xC7\xBC\x15\xB4\x63"
|
||||
"\x8E\x1F\x98\xB1\x3B\x20\x44\x28\x56\x32\xA8\x03\xAF\xA9\x73\xEB"
|
||||
"\xDE\x0F\xF2\x44\x87\x7E\xA6\x0A\x4C\xB0\x43\x2C\xE5\x77\xC3\x1B"
|
||||
"\xEB\x00\x9C\x5C\x2C\x49\xAA\x2E\x4E\xAD\xB2\x17\xAD\x8C\xC0\x9B",
|
||||
64);
|
||||
if (errtxt)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
return 0; /* Succeeded. */
|
||||
|
||||
failed:
|
||||
if (report)
|
||||
report ("digest", GCRY_MD_SHA512, what, errtxt);
|
||||
return GPG_ERR_SELFTEST_FAILED;
|
||||
}
|
||||
|
||||
|
||||
/* Run a full self-test for ALGO and return 0 on success. */
|
||||
static gpg_err_code_t
|
||||
run_selftests (int algo, int extended, selftest_report_func_t report)
|
||||
{
|
||||
gpg_err_code_t ec;
|
||||
|
||||
switch (algo)
|
||||
{
|
||||
case GCRY_MD_SHA384:
|
||||
ec = selftests_sha384 (extended, report);
|
||||
break;
|
||||
case GCRY_MD_SHA512:
|
||||
ec = selftests_sha512 (extended, report);
|
||||
break;
|
||||
default:
|
||||
ec = GPG_ERR_DIGEST_ALGO;
|
||||
break;
|
||||
|
||||
}
|
||||
return ec;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static byte sha512_asn[] = /* Object ID is 2.16.840.1.101.3.4.2.3 */
|
||||
{
|
||||
0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
|
||||
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05,
|
||||
0x00, 0x04, 0x40
|
||||
};
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_sha512[] =
|
||||
{
|
||||
{ "2.16.840.1.101.3.4.2.3" },
|
||||
|
||||
/* PKCS#1 sha512WithRSAEncryption */
|
||||
{ "1.2.840.113549.1.1.13" },
|
||||
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_sha512 =
|
||||
{
|
||||
"SHA512", sha512_asn, DIM (sha512_asn), oid_spec_sha512, 64,
|
||||
sha512_init, sha512_write, sha512_final, sha512_read,
|
||||
sizeof (SHA512_CONTEXT),
|
||||
};
|
||||
md_extra_spec_t _gcry_digest_extraspec_sha512 =
|
||||
{
|
||||
run_selftests
|
||||
};
|
||||
|
||||
static byte sha384_asn[] = /* Object ID is 2.16.840.1.101.3.4.2.2 */
|
||||
{
|
||||
0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
|
||||
0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05,
|
||||
0x00, 0x04, 0x30
|
||||
};
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_sha384[] =
|
||||
{
|
||||
{ "2.16.840.1.101.3.4.2.2" },
|
||||
|
||||
/* PKCS#1 sha384WithRSAEncryption */
|
||||
{ "1.2.840.113549.1.1.12" },
|
||||
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_sha384 =
|
||||
{
|
||||
"SHA384", sha384_asn, DIM (sha384_asn), oid_spec_sha384, 48,
|
||||
sha384_init, sha512_write, sha512_final, sha512_read,
|
||||
sizeof (SHA512_CONTEXT),
|
||||
};
|
||||
md_extra_spec_t _gcry_digest_extraspec_sha384 =
|
||||
{
|
||||
run_selftests
|
||||
};
|
||||
851
jni/libgcrypt/cipher/tiger.c
Normal file
851
jni/libgcrypt/cipher/tiger.c
Normal file
@@ -0,0 +1,851 @@
|
||||
/* tiger.c - The TIGER hash function
|
||||
* Copyright (C) 1998, 2001, 2002, 2003 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
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "g10lib.h"
|
||||
#include "memory.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#ifdef HAVE_U64_TYPEDEF
|
||||
|
||||
/* we really need it here, but as this is only experiment we
|
||||
* can live without Tiger */
|
||||
|
||||
typedef struct {
|
||||
u64 a, b, c;
|
||||
byte buf[64];
|
||||
int count;
|
||||
u32 nblocks;
|
||||
} TIGER_CONTEXT;
|
||||
|
||||
|
||||
/*********************************
|
||||
* Okay, okay, this is not the fastest code - improvements are welcome.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Some test vectors:
|
||||
* "" 24F0130C63AC9332 16166E76B1BB925F F373DE2D49584E7A
|
||||
* "abc" F258C1E88414AB2A 527AB541FFC5B8BF 935F7B951C132951
|
||||
* "Tiger" 9F00F599072300DD 276ABB38C8EB6DEC 37790C116F9D2BDF
|
||||
* "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-"
|
||||
* 87FB2A9083851CF7 470D2CF810E6DF9E B586445034A5A386
|
||||
* "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789"
|
||||
* 467DB80863EBCE48 8DF1CD1261655DE9 57896565975F9197
|
||||
* "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham"
|
||||
* 0C410A042968868A 1671DA5A3FD29A72 5EC1E457D3CDB303
|
||||
* "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proc"
|
||||
* "eedings of Fast Software Encryption 3, Cambridge."
|
||||
* EBF591D5AFA655CE 7F22894FF87F54AC 89C811B6B0DA3193
|
||||
* "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proc"
|
||||
* "eedings of Fast Software Encryption 3, Cambridge, 1996."
|
||||
* 3D9AEB03D1BD1A63 57B2774DFD6D5B24 DD68151D503974FC
|
||||
* "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEF"
|
||||
* "GHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-"
|
||||
* 00B83EB4E53440C5 76AC6AAEE0A74858 25FD15E70A59FFE4
|
||||
*/
|
||||
|
||||
static u64 sbox1[256] = {
|
||||
U64_C(0x02aab17cf7e90c5e) /* 0 */, U64_C(0xac424b03e243a8ec) /* 1 */,
|
||||
U64_C(0x72cd5be30dd5fcd3) /* 2 */, U64_C(0x6d019b93f6f97f3a) /* 3 */,
|
||||
U64_C(0xcd9978ffd21f9193) /* 4 */, U64_C(0x7573a1c9708029e2) /* 5 */,
|
||||
U64_C(0xb164326b922a83c3) /* 6 */, U64_C(0x46883eee04915870) /* 7 */,
|
||||
U64_C(0xeaace3057103ece6) /* 8 */, U64_C(0xc54169b808a3535c) /* 9 */,
|
||||
U64_C(0x4ce754918ddec47c) /* 10 */, U64_C(0x0aa2f4dfdc0df40c) /* 11 */,
|
||||
U64_C(0x10b76f18a74dbefa) /* 12 */, U64_C(0xc6ccb6235ad1ab6a) /* 13 */,
|
||||
U64_C(0x13726121572fe2ff) /* 14 */, U64_C(0x1a488c6f199d921e) /* 15 */,
|
||||
U64_C(0x4bc9f9f4da0007ca) /* 16 */, U64_C(0x26f5e6f6e85241c7) /* 17 */,
|
||||
U64_C(0x859079dbea5947b6) /* 18 */, U64_C(0x4f1885c5c99e8c92) /* 19 */,
|
||||
U64_C(0xd78e761ea96f864b) /* 20 */, U64_C(0x8e36428c52b5c17d) /* 21 */,
|
||||
U64_C(0x69cf6827373063c1) /* 22 */, U64_C(0xb607c93d9bb4c56e) /* 23 */,
|
||||
U64_C(0x7d820e760e76b5ea) /* 24 */, U64_C(0x645c9cc6f07fdc42) /* 25 */,
|
||||
U64_C(0xbf38a078243342e0) /* 26 */, U64_C(0x5f6b343c9d2e7d04) /* 27 */,
|
||||
U64_C(0xf2c28aeb600b0ec6) /* 28 */, U64_C(0x6c0ed85f7254bcac) /* 29 */,
|
||||
U64_C(0x71592281a4db4fe5) /* 30 */, U64_C(0x1967fa69ce0fed9f) /* 31 */,
|
||||
U64_C(0xfd5293f8b96545db) /* 32 */, U64_C(0xc879e9d7f2a7600b) /* 33 */,
|
||||
U64_C(0x860248920193194e) /* 34 */, U64_C(0xa4f9533b2d9cc0b3) /* 35 */,
|
||||
U64_C(0x9053836c15957613) /* 36 */, U64_C(0xdb6dcf8afc357bf1) /* 37 */,
|
||||
U64_C(0x18beea7a7a370f57) /* 38 */, U64_C(0x037117ca50b99066) /* 39 */,
|
||||
U64_C(0x6ab30a9774424a35) /* 40 */, U64_C(0xf4e92f02e325249b) /* 41 */,
|
||||
U64_C(0x7739db07061ccae1) /* 42 */, U64_C(0xd8f3b49ceca42a05) /* 43 */,
|
||||
U64_C(0xbd56be3f51382f73) /* 44 */, U64_C(0x45faed5843b0bb28) /* 45 */,
|
||||
U64_C(0x1c813d5c11bf1f83) /* 46 */, U64_C(0x8af0e4b6d75fa169) /* 47 */,
|
||||
U64_C(0x33ee18a487ad9999) /* 48 */, U64_C(0x3c26e8eab1c94410) /* 49 */,
|
||||
U64_C(0xb510102bc0a822f9) /* 50 */, U64_C(0x141eef310ce6123b) /* 51 */,
|
||||
U64_C(0xfc65b90059ddb154) /* 52 */, U64_C(0xe0158640c5e0e607) /* 53 */,
|
||||
U64_C(0x884e079826c3a3cf) /* 54 */, U64_C(0x930d0d9523c535fd) /* 55 */,
|
||||
U64_C(0x35638d754e9a2b00) /* 56 */, U64_C(0x4085fccf40469dd5) /* 57 */,
|
||||
U64_C(0xc4b17ad28be23a4c) /* 58 */, U64_C(0xcab2f0fc6a3e6a2e) /* 59 */,
|
||||
U64_C(0x2860971a6b943fcd) /* 60 */, U64_C(0x3dde6ee212e30446) /* 61 */,
|
||||
U64_C(0x6222f32ae01765ae) /* 62 */, U64_C(0x5d550bb5478308fe) /* 63 */,
|
||||
U64_C(0xa9efa98da0eda22a) /* 64 */, U64_C(0xc351a71686c40da7) /* 65 */,
|
||||
U64_C(0x1105586d9c867c84) /* 66 */, U64_C(0xdcffee85fda22853) /* 67 */,
|
||||
U64_C(0xccfbd0262c5eef76) /* 68 */, U64_C(0xbaf294cb8990d201) /* 69 */,
|
||||
U64_C(0xe69464f52afad975) /* 70 */, U64_C(0x94b013afdf133e14) /* 71 */,
|
||||
U64_C(0x06a7d1a32823c958) /* 72 */, U64_C(0x6f95fe5130f61119) /* 73 */,
|
||||
U64_C(0xd92ab34e462c06c0) /* 74 */, U64_C(0xed7bde33887c71d2) /* 75 */,
|
||||
U64_C(0x79746d6e6518393e) /* 76 */, U64_C(0x5ba419385d713329) /* 77 */,
|
||||
U64_C(0x7c1ba6b948a97564) /* 78 */, U64_C(0x31987c197bfdac67) /* 79 */,
|
||||
U64_C(0xde6c23c44b053d02) /* 80 */, U64_C(0x581c49fed002d64d) /* 81 */,
|
||||
U64_C(0xdd474d6338261571) /* 82 */, U64_C(0xaa4546c3e473d062) /* 83 */,
|
||||
U64_C(0x928fce349455f860) /* 84 */, U64_C(0x48161bbacaab94d9) /* 85 */,
|
||||
U64_C(0x63912430770e6f68) /* 86 */, U64_C(0x6ec8a5e602c6641c) /* 87 */,
|
||||
U64_C(0x87282515337ddd2b) /* 88 */, U64_C(0x2cda6b42034b701b) /* 89 */,
|
||||
U64_C(0xb03d37c181cb096d) /* 90 */, U64_C(0xe108438266c71c6f) /* 91 */,
|
||||
U64_C(0x2b3180c7eb51b255) /* 92 */, U64_C(0xdf92b82f96c08bbc) /* 93 */,
|
||||
U64_C(0x5c68c8c0a632f3ba) /* 94 */, U64_C(0x5504cc861c3d0556) /* 95 */,
|
||||
U64_C(0xabbfa4e55fb26b8f) /* 96 */, U64_C(0x41848b0ab3baceb4) /* 97 */,
|
||||
U64_C(0xb334a273aa445d32) /* 98 */, U64_C(0xbca696f0a85ad881) /* 99 */,
|
||||
U64_C(0x24f6ec65b528d56c) /* 100 */, U64_C(0x0ce1512e90f4524a) /* 101 */,
|
||||
U64_C(0x4e9dd79d5506d35a) /* 102 */, U64_C(0x258905fac6ce9779) /* 103 */,
|
||||
U64_C(0x2019295b3e109b33) /* 104 */, U64_C(0xf8a9478b73a054cc) /* 105 */,
|
||||
U64_C(0x2924f2f934417eb0) /* 106 */, U64_C(0x3993357d536d1bc4) /* 107 */,
|
||||
U64_C(0x38a81ac21db6ff8b) /* 108 */, U64_C(0x47c4fbf17d6016bf) /* 109 */,
|
||||
U64_C(0x1e0faadd7667e3f5) /* 110 */, U64_C(0x7abcff62938beb96) /* 111 */,
|
||||
U64_C(0xa78dad948fc179c9) /* 112 */, U64_C(0x8f1f98b72911e50d) /* 113 */,
|
||||
U64_C(0x61e48eae27121a91) /* 114 */, U64_C(0x4d62f7ad31859808) /* 115 */,
|
||||
U64_C(0xeceba345ef5ceaeb) /* 116 */, U64_C(0xf5ceb25ebc9684ce) /* 117 */,
|
||||
U64_C(0xf633e20cb7f76221) /* 118 */, U64_C(0xa32cdf06ab8293e4) /* 119 */,
|
||||
U64_C(0x985a202ca5ee2ca4) /* 120 */, U64_C(0xcf0b8447cc8a8fb1) /* 121 */,
|
||||
U64_C(0x9f765244979859a3) /* 122 */, U64_C(0xa8d516b1a1240017) /* 123 */,
|
||||
U64_C(0x0bd7ba3ebb5dc726) /* 124 */, U64_C(0xe54bca55b86adb39) /* 125 */,
|
||||
U64_C(0x1d7a3afd6c478063) /* 126 */, U64_C(0x519ec608e7669edd) /* 127 */,
|
||||
U64_C(0x0e5715a2d149aa23) /* 128 */, U64_C(0x177d4571848ff194) /* 129 */,
|
||||
U64_C(0xeeb55f3241014c22) /* 130 */, U64_C(0x0f5e5ca13a6e2ec2) /* 131 */,
|
||||
U64_C(0x8029927b75f5c361) /* 132 */, U64_C(0xad139fabc3d6e436) /* 133 */,
|
||||
U64_C(0x0d5df1a94ccf402f) /* 134 */, U64_C(0x3e8bd948bea5dfc8) /* 135 */,
|
||||
U64_C(0xa5a0d357bd3ff77e) /* 136 */, U64_C(0xa2d12e251f74f645) /* 137 */,
|
||||
U64_C(0x66fd9e525e81a082) /* 138 */, U64_C(0x2e0c90ce7f687a49) /* 139 */,
|
||||
U64_C(0xc2e8bcbeba973bc5) /* 140 */, U64_C(0x000001bce509745f) /* 141 */,
|
||||
U64_C(0x423777bbe6dab3d6) /* 142 */, U64_C(0xd1661c7eaef06eb5) /* 143 */,
|
||||
U64_C(0xa1781f354daacfd8) /* 144 */, U64_C(0x2d11284a2b16affc) /* 145 */,
|
||||
U64_C(0xf1fc4f67fa891d1f) /* 146 */, U64_C(0x73ecc25dcb920ada) /* 147 */,
|
||||
U64_C(0xae610c22c2a12651) /* 148 */, U64_C(0x96e0a810d356b78a) /* 149 */,
|
||||
U64_C(0x5a9a381f2fe7870f) /* 150 */, U64_C(0xd5ad62ede94e5530) /* 151 */,
|
||||
U64_C(0xd225e5e8368d1427) /* 152 */, U64_C(0x65977b70c7af4631) /* 153 */,
|
||||
U64_C(0x99f889b2de39d74f) /* 154 */, U64_C(0x233f30bf54e1d143) /* 155 */,
|
||||
U64_C(0x9a9675d3d9a63c97) /* 156 */, U64_C(0x5470554ff334f9a8) /* 157 */,
|
||||
U64_C(0x166acb744a4f5688) /* 158 */, U64_C(0x70c74caab2e4aead) /* 159 */,
|
||||
U64_C(0xf0d091646f294d12) /* 160 */, U64_C(0x57b82a89684031d1) /* 161 */,
|
||||
U64_C(0xefd95a5a61be0b6b) /* 162 */, U64_C(0x2fbd12e969f2f29a) /* 163 */,
|
||||
U64_C(0x9bd37013feff9fe8) /* 164 */, U64_C(0x3f9b0404d6085a06) /* 165 */,
|
||||
U64_C(0x4940c1f3166cfe15) /* 166 */, U64_C(0x09542c4dcdf3defb) /* 167 */,
|
||||
U64_C(0xb4c5218385cd5ce3) /* 168 */, U64_C(0xc935b7dc4462a641) /* 169 */,
|
||||
U64_C(0x3417f8a68ed3b63f) /* 170 */, U64_C(0xb80959295b215b40) /* 171 */,
|
||||
U64_C(0xf99cdaef3b8c8572) /* 172 */, U64_C(0x018c0614f8fcb95d) /* 173 */,
|
||||
U64_C(0x1b14accd1a3acdf3) /* 174 */, U64_C(0x84d471f200bb732d) /* 175 */,
|
||||
U64_C(0xc1a3110e95e8da16) /* 176 */, U64_C(0x430a7220bf1a82b8) /* 177 */,
|
||||
U64_C(0xb77e090d39df210e) /* 178 */, U64_C(0x5ef4bd9f3cd05e9d) /* 179 */,
|
||||
U64_C(0x9d4ff6da7e57a444) /* 180 */, U64_C(0xda1d60e183d4a5f8) /* 181 */,
|
||||
U64_C(0xb287c38417998e47) /* 182 */, U64_C(0xfe3edc121bb31886) /* 183 */,
|
||||
U64_C(0xc7fe3ccc980ccbef) /* 184 */, U64_C(0xe46fb590189bfd03) /* 185 */,
|
||||
U64_C(0x3732fd469a4c57dc) /* 186 */, U64_C(0x7ef700a07cf1ad65) /* 187 */,
|
||||
U64_C(0x59c64468a31d8859) /* 188 */, U64_C(0x762fb0b4d45b61f6) /* 189 */,
|
||||
U64_C(0x155baed099047718) /* 190 */, U64_C(0x68755e4c3d50baa6) /* 191 */,
|
||||
U64_C(0xe9214e7f22d8b4df) /* 192 */, U64_C(0x2addbf532eac95f4) /* 193 */,
|
||||
U64_C(0x32ae3909b4bd0109) /* 194 */, U64_C(0x834df537b08e3450) /* 195 */,
|
||||
U64_C(0xfa209da84220728d) /* 196 */, U64_C(0x9e691d9b9efe23f7) /* 197 */,
|
||||
U64_C(0x0446d288c4ae8d7f) /* 198 */, U64_C(0x7b4cc524e169785b) /* 199 */,
|
||||
U64_C(0x21d87f0135ca1385) /* 200 */, U64_C(0xcebb400f137b8aa5) /* 201 */,
|
||||
U64_C(0x272e2b66580796be) /* 202 */, U64_C(0x3612264125c2b0de) /* 203 */,
|
||||
U64_C(0x057702bdad1efbb2) /* 204 */, U64_C(0xd4babb8eacf84be9) /* 205 */,
|
||||
U64_C(0x91583139641bc67b) /* 206 */, U64_C(0x8bdc2de08036e024) /* 207 */,
|
||||
U64_C(0x603c8156f49f68ed) /* 208 */, U64_C(0xf7d236f7dbef5111) /* 209 */,
|
||||
U64_C(0x9727c4598ad21e80) /* 210 */, U64_C(0xa08a0896670a5fd7) /* 211 */,
|
||||
U64_C(0xcb4a8f4309eba9cb) /* 212 */, U64_C(0x81af564b0f7036a1) /* 213 */,
|
||||
U64_C(0xc0b99aa778199abd) /* 214 */, U64_C(0x959f1ec83fc8e952) /* 215 */,
|
||||
U64_C(0x8c505077794a81b9) /* 216 */, U64_C(0x3acaaf8f056338f0) /* 217 */,
|
||||
U64_C(0x07b43f50627a6778) /* 218 */, U64_C(0x4a44ab49f5eccc77) /* 219 */,
|
||||
U64_C(0x3bc3d6e4b679ee98) /* 220 */, U64_C(0x9cc0d4d1cf14108c) /* 221 */,
|
||||
U64_C(0x4406c00b206bc8a0) /* 222 */, U64_C(0x82a18854c8d72d89) /* 223 */,
|
||||
U64_C(0x67e366b35c3c432c) /* 224 */, U64_C(0xb923dd61102b37f2) /* 225 */,
|
||||
U64_C(0x56ab2779d884271d) /* 226 */, U64_C(0xbe83e1b0ff1525af) /* 227 */,
|
||||
U64_C(0xfb7c65d4217e49a9) /* 228 */, U64_C(0x6bdbe0e76d48e7d4) /* 229 */,
|
||||
U64_C(0x08df828745d9179e) /* 230 */, U64_C(0x22ea6a9add53bd34) /* 231 */,
|
||||
U64_C(0xe36e141c5622200a) /* 232 */, U64_C(0x7f805d1b8cb750ee) /* 233 */,
|
||||
U64_C(0xafe5c7a59f58e837) /* 234 */, U64_C(0xe27f996a4fb1c23c) /* 235 */,
|
||||
U64_C(0xd3867dfb0775f0d0) /* 236 */, U64_C(0xd0e673de6e88891a) /* 237 */,
|
||||
U64_C(0x123aeb9eafb86c25) /* 238 */, U64_C(0x30f1d5d5c145b895) /* 239 */,
|
||||
U64_C(0xbb434a2dee7269e7) /* 240 */, U64_C(0x78cb67ecf931fa38) /* 241 */,
|
||||
U64_C(0xf33b0372323bbf9c) /* 242 */, U64_C(0x52d66336fb279c74) /* 243 */,
|
||||
U64_C(0x505f33ac0afb4eaa) /* 244 */, U64_C(0xe8a5cd99a2cce187) /* 245 */,
|
||||
U64_C(0x534974801e2d30bb) /* 246 */, U64_C(0x8d2d5711d5876d90) /* 247 */,
|
||||
U64_C(0x1f1a412891bc038e) /* 248 */, U64_C(0xd6e2e71d82e56648) /* 249 */,
|
||||
U64_C(0x74036c3a497732b7) /* 250 */, U64_C(0x89b67ed96361f5ab) /* 251 */,
|
||||
U64_C(0xffed95d8f1ea02a2) /* 252 */, U64_C(0xe72b3bd61464d43d) /* 253 */,
|
||||
U64_C(0xa6300f170bdc4820) /* 254 */, U64_C(0xebc18760ed78a77a) /* 255 */
|
||||
};
|
||||
static u64 sbox2[256] = {
|
||||
U64_C(0xe6a6be5a05a12138) /* 256 */, U64_C(0xb5a122a5b4f87c98) /* 257 */,
|
||||
U64_C(0x563c6089140b6990) /* 258 */, U64_C(0x4c46cb2e391f5dd5) /* 259 */,
|
||||
U64_C(0xd932addbc9b79434) /* 260 */, U64_C(0x08ea70e42015aff5) /* 261 */,
|
||||
U64_C(0xd765a6673e478cf1) /* 262 */, U64_C(0xc4fb757eab278d99) /* 263 */,
|
||||
U64_C(0xdf11c6862d6e0692) /* 264 */, U64_C(0xddeb84f10d7f3b16) /* 265 */,
|
||||
U64_C(0x6f2ef604a665ea04) /* 266 */, U64_C(0x4a8e0f0ff0e0dfb3) /* 267 */,
|
||||
U64_C(0xa5edeef83dbcba51) /* 268 */, U64_C(0xfc4f0a2a0ea4371e) /* 269 */,
|
||||
U64_C(0xe83e1da85cb38429) /* 270 */, U64_C(0xdc8ff882ba1b1ce2) /* 271 */,
|
||||
U64_C(0xcd45505e8353e80d) /* 272 */, U64_C(0x18d19a00d4db0717) /* 273 */,
|
||||
U64_C(0x34a0cfeda5f38101) /* 274 */, U64_C(0x0be77e518887caf2) /* 275 */,
|
||||
U64_C(0x1e341438b3c45136) /* 276 */, U64_C(0xe05797f49089ccf9) /* 277 */,
|
||||
U64_C(0xffd23f9df2591d14) /* 278 */, U64_C(0x543dda228595c5cd) /* 279 */,
|
||||
U64_C(0x661f81fd99052a33) /* 280 */, U64_C(0x8736e641db0f7b76) /* 281 */,
|
||||
U64_C(0x15227725418e5307) /* 282 */, U64_C(0xe25f7f46162eb2fa) /* 283 */,
|
||||
U64_C(0x48a8b2126c13d9fe) /* 284 */, U64_C(0xafdc541792e76eea) /* 285 */,
|
||||
U64_C(0x03d912bfc6d1898f) /* 286 */, U64_C(0x31b1aafa1b83f51b) /* 287 */,
|
||||
U64_C(0xf1ac2796e42ab7d9) /* 288 */, U64_C(0x40a3a7d7fcd2ebac) /* 289 */,
|
||||
U64_C(0x1056136d0afbbcc5) /* 290 */, U64_C(0x7889e1dd9a6d0c85) /* 291 */,
|
||||
U64_C(0xd33525782a7974aa) /* 292 */, U64_C(0xa7e25d09078ac09b) /* 293 */,
|
||||
U64_C(0xbd4138b3eac6edd0) /* 294 */, U64_C(0x920abfbe71eb9e70) /* 295 */,
|
||||
U64_C(0xa2a5d0f54fc2625c) /* 296 */, U64_C(0xc054e36b0b1290a3) /* 297 */,
|
||||
U64_C(0xf6dd59ff62fe932b) /* 298 */, U64_C(0x3537354511a8ac7d) /* 299 */,
|
||||
U64_C(0xca845e9172fadcd4) /* 300 */, U64_C(0x84f82b60329d20dc) /* 301 */,
|
||||
U64_C(0x79c62ce1cd672f18) /* 302 */, U64_C(0x8b09a2add124642c) /* 303 */,
|
||||
U64_C(0xd0c1e96a19d9e726) /* 304 */, U64_C(0x5a786a9b4ba9500c) /* 305 */,
|
||||
U64_C(0x0e020336634c43f3) /* 306 */, U64_C(0xc17b474aeb66d822) /* 307 */,
|
||||
U64_C(0x6a731ae3ec9baac2) /* 308 */, U64_C(0x8226667ae0840258) /* 309 */,
|
||||
U64_C(0x67d4567691caeca5) /* 310 */, U64_C(0x1d94155c4875adb5) /* 311 */,
|
||||
U64_C(0x6d00fd985b813fdf) /* 312 */, U64_C(0x51286efcb774cd06) /* 313 */,
|
||||
U64_C(0x5e8834471fa744af) /* 314 */, U64_C(0xf72ca0aee761ae2e) /* 315 */,
|
||||
U64_C(0xbe40e4cdaee8e09a) /* 316 */, U64_C(0xe9970bbb5118f665) /* 317 */,
|
||||
U64_C(0x726e4beb33df1964) /* 318 */, U64_C(0x703b000729199762) /* 319 */,
|
||||
U64_C(0x4631d816f5ef30a7) /* 320 */, U64_C(0xb880b5b51504a6be) /* 321 */,
|
||||
U64_C(0x641793c37ed84b6c) /* 322 */, U64_C(0x7b21ed77f6e97d96) /* 323 */,
|
||||
U64_C(0x776306312ef96b73) /* 324 */, U64_C(0xae528948e86ff3f4) /* 325 */,
|
||||
U64_C(0x53dbd7f286a3f8f8) /* 326 */, U64_C(0x16cadce74cfc1063) /* 327 */,
|
||||
U64_C(0x005c19bdfa52c6dd) /* 328 */, U64_C(0x68868f5d64d46ad3) /* 329 */,
|
||||
U64_C(0x3a9d512ccf1e186a) /* 330 */, U64_C(0x367e62c2385660ae) /* 331 */,
|
||||
U64_C(0xe359e7ea77dcb1d7) /* 332 */, U64_C(0x526c0773749abe6e) /* 333 */,
|
||||
U64_C(0x735ae5f9d09f734b) /* 334 */, U64_C(0x493fc7cc8a558ba8) /* 335 */,
|
||||
U64_C(0xb0b9c1533041ab45) /* 336 */, U64_C(0x321958ba470a59bd) /* 337 */,
|
||||
U64_C(0x852db00b5f46c393) /* 338 */, U64_C(0x91209b2bd336b0e5) /* 339 */,
|
||||
U64_C(0x6e604f7d659ef19f) /* 340 */, U64_C(0xb99a8ae2782ccb24) /* 341 */,
|
||||
U64_C(0xccf52ab6c814c4c7) /* 342 */, U64_C(0x4727d9afbe11727b) /* 343 */,
|
||||
U64_C(0x7e950d0c0121b34d) /* 344 */, U64_C(0x756f435670ad471f) /* 345 */,
|
||||
U64_C(0xf5add442615a6849) /* 346 */, U64_C(0x4e87e09980b9957a) /* 347 */,
|
||||
U64_C(0x2acfa1df50aee355) /* 348 */, U64_C(0xd898263afd2fd556) /* 349 */,
|
||||
U64_C(0xc8f4924dd80c8fd6) /* 350 */, U64_C(0xcf99ca3d754a173a) /* 351 */,
|
||||
U64_C(0xfe477bacaf91bf3c) /* 352 */, U64_C(0xed5371f6d690c12d) /* 353 */,
|
||||
U64_C(0x831a5c285e687094) /* 354 */, U64_C(0xc5d3c90a3708a0a4) /* 355 */,
|
||||
U64_C(0x0f7f903717d06580) /* 356 */, U64_C(0x19f9bb13b8fdf27f) /* 357 */,
|
||||
U64_C(0xb1bd6f1b4d502843) /* 358 */, U64_C(0x1c761ba38fff4012) /* 359 */,
|
||||
U64_C(0x0d1530c4e2e21f3b) /* 360 */, U64_C(0x8943ce69a7372c8a) /* 361 */,
|
||||
U64_C(0xe5184e11feb5ce66) /* 362 */, U64_C(0x618bdb80bd736621) /* 363 */,
|
||||
U64_C(0x7d29bad68b574d0b) /* 364 */, U64_C(0x81bb613e25e6fe5b) /* 365 */,
|
||||
U64_C(0x071c9c10bc07913f) /* 366 */, U64_C(0xc7beeb7909ac2d97) /* 367 */,
|
||||
U64_C(0xc3e58d353bc5d757) /* 368 */, U64_C(0xeb017892f38f61e8) /* 369 */,
|
||||
U64_C(0xd4effb9c9b1cc21a) /* 370 */, U64_C(0x99727d26f494f7ab) /* 371 */,
|
||||
U64_C(0xa3e063a2956b3e03) /* 372 */, U64_C(0x9d4a8b9a4aa09c30) /* 373 */,
|
||||
U64_C(0x3f6ab7d500090fb4) /* 374 */, U64_C(0x9cc0f2a057268ac0) /* 375 */,
|
||||
U64_C(0x3dee9d2dedbf42d1) /* 376 */, U64_C(0x330f49c87960a972) /* 377 */,
|
||||
U64_C(0xc6b2720287421b41) /* 378 */, U64_C(0x0ac59ec07c00369c) /* 379 */,
|
||||
U64_C(0xef4eac49cb353425) /* 380 */, U64_C(0xf450244eef0129d8) /* 381 */,
|
||||
U64_C(0x8acc46e5caf4deb6) /* 382 */, U64_C(0x2ffeab63989263f7) /* 383 */,
|
||||
U64_C(0x8f7cb9fe5d7a4578) /* 384 */, U64_C(0x5bd8f7644e634635) /* 385 */,
|
||||
U64_C(0x427a7315bf2dc900) /* 386 */, U64_C(0x17d0c4aa2125261c) /* 387 */,
|
||||
U64_C(0x3992486c93518e50) /* 388 */, U64_C(0xb4cbfee0a2d7d4c3) /* 389 */,
|
||||
U64_C(0x7c75d6202c5ddd8d) /* 390 */, U64_C(0xdbc295d8e35b6c61) /* 391 */,
|
||||
U64_C(0x60b369d302032b19) /* 392 */, U64_C(0xce42685fdce44132) /* 393 */,
|
||||
U64_C(0x06f3ddb9ddf65610) /* 394 */, U64_C(0x8ea4d21db5e148f0) /* 395 */,
|
||||
U64_C(0x20b0fce62fcd496f) /* 396 */, U64_C(0x2c1b912358b0ee31) /* 397 */,
|
||||
U64_C(0xb28317b818f5a308) /* 398 */, U64_C(0xa89c1e189ca6d2cf) /* 399 */,
|
||||
U64_C(0x0c6b18576aaadbc8) /* 400 */, U64_C(0xb65deaa91299fae3) /* 401 */,
|
||||
U64_C(0xfb2b794b7f1027e7) /* 402 */, U64_C(0x04e4317f443b5beb) /* 403 */,
|
||||
U64_C(0x4b852d325939d0a6) /* 404 */, U64_C(0xd5ae6beefb207ffc) /* 405 */,
|
||||
U64_C(0x309682b281c7d374) /* 406 */, U64_C(0xbae309a194c3b475) /* 407 */,
|
||||
U64_C(0x8cc3f97b13b49f05) /* 408 */, U64_C(0x98a9422ff8293967) /* 409 */,
|
||||
U64_C(0x244b16b01076ff7c) /* 410 */, U64_C(0xf8bf571c663d67ee) /* 411 */,
|
||||
U64_C(0x1f0d6758eee30da1) /* 412 */, U64_C(0xc9b611d97adeb9b7) /* 413 */,
|
||||
U64_C(0xb7afd5887b6c57a2) /* 414 */, U64_C(0x6290ae846b984fe1) /* 415 */,
|
||||
U64_C(0x94df4cdeacc1a5fd) /* 416 */, U64_C(0x058a5bd1c5483aff) /* 417 */,
|
||||
U64_C(0x63166cc142ba3c37) /* 418 */, U64_C(0x8db8526eb2f76f40) /* 419 */,
|
||||
U64_C(0xe10880036f0d6d4e) /* 420 */, U64_C(0x9e0523c9971d311d) /* 421 */,
|
||||
U64_C(0x45ec2824cc7cd691) /* 422 */, U64_C(0x575b8359e62382c9) /* 423 */,
|
||||
U64_C(0xfa9e400dc4889995) /* 424 */, U64_C(0xd1823ecb45721568) /* 425 */,
|
||||
U64_C(0xdafd983b8206082f) /* 426 */, U64_C(0xaa7d29082386a8cb) /* 427 */,
|
||||
U64_C(0x269fcd4403b87588) /* 428 */, U64_C(0x1b91f5f728bdd1e0) /* 429 */,
|
||||
U64_C(0xe4669f39040201f6) /* 430 */, U64_C(0x7a1d7c218cf04ade) /* 431 */,
|
||||
U64_C(0x65623c29d79ce5ce) /* 432 */, U64_C(0x2368449096c00bb1) /* 433 */,
|
||||
U64_C(0xab9bf1879da503ba) /* 434 */, U64_C(0xbc23ecb1a458058e) /* 435 */,
|
||||
U64_C(0x9a58df01bb401ecc) /* 436 */, U64_C(0xa070e868a85f143d) /* 437 */,
|
||||
U64_C(0x4ff188307df2239e) /* 438 */, U64_C(0x14d565b41a641183) /* 439 */,
|
||||
U64_C(0xee13337452701602) /* 440 */, U64_C(0x950e3dcf3f285e09) /* 441 */,
|
||||
U64_C(0x59930254b9c80953) /* 442 */, U64_C(0x3bf299408930da6d) /* 443 */,
|
||||
U64_C(0xa955943f53691387) /* 444 */, U64_C(0xa15edecaa9cb8784) /* 445 */,
|
||||
U64_C(0x29142127352be9a0) /* 446 */, U64_C(0x76f0371fff4e7afb) /* 447 */,
|
||||
U64_C(0x0239f450274f2228) /* 448 */, U64_C(0xbb073af01d5e868b) /* 449 */,
|
||||
U64_C(0xbfc80571c10e96c1) /* 450 */, U64_C(0xd267088568222e23) /* 451 */,
|
||||
U64_C(0x9671a3d48e80b5b0) /* 452 */, U64_C(0x55b5d38ae193bb81) /* 453 */,
|
||||
U64_C(0x693ae2d0a18b04b8) /* 454 */, U64_C(0x5c48b4ecadd5335f) /* 455 */,
|
||||
U64_C(0xfd743b194916a1ca) /* 456 */, U64_C(0x2577018134be98c4) /* 457 */,
|
||||
U64_C(0xe77987e83c54a4ad) /* 458 */, U64_C(0x28e11014da33e1b9) /* 459 */,
|
||||
U64_C(0x270cc59e226aa213) /* 460 */, U64_C(0x71495f756d1a5f60) /* 461 */,
|
||||
U64_C(0x9be853fb60afef77) /* 462 */, U64_C(0xadc786a7f7443dbf) /* 463 */,
|
||||
U64_C(0x0904456173b29a82) /* 464 */, U64_C(0x58bc7a66c232bd5e) /* 465 */,
|
||||
U64_C(0xf306558c673ac8b2) /* 466 */, U64_C(0x41f639c6b6c9772a) /* 467 */,
|
||||
U64_C(0x216defe99fda35da) /* 468 */, U64_C(0x11640cc71c7be615) /* 469 */,
|
||||
U64_C(0x93c43694565c5527) /* 470 */, U64_C(0xea038e6246777839) /* 471 */,
|
||||
U64_C(0xf9abf3ce5a3e2469) /* 472 */, U64_C(0x741e768d0fd312d2) /* 473 */,
|
||||
U64_C(0x0144b883ced652c6) /* 474 */, U64_C(0xc20b5a5ba33f8552) /* 475 */,
|
||||
U64_C(0x1ae69633c3435a9d) /* 476 */, U64_C(0x97a28ca4088cfdec) /* 477 */,
|
||||
U64_C(0x8824a43c1e96f420) /* 478 */, U64_C(0x37612fa66eeea746) /* 479 */,
|
||||
U64_C(0x6b4cb165f9cf0e5a) /* 480 */, U64_C(0x43aa1c06a0abfb4a) /* 481 */,
|
||||
U64_C(0x7f4dc26ff162796b) /* 482 */, U64_C(0x6cbacc8e54ed9b0f) /* 483 */,
|
||||
U64_C(0xa6b7ffefd2bb253e) /* 484 */, U64_C(0x2e25bc95b0a29d4f) /* 485 */,
|
||||
U64_C(0x86d6a58bdef1388c) /* 486 */, U64_C(0xded74ac576b6f054) /* 487 */,
|
||||
U64_C(0x8030bdbc2b45805d) /* 488 */, U64_C(0x3c81af70e94d9289) /* 489 */,
|
||||
U64_C(0x3eff6dda9e3100db) /* 490 */, U64_C(0xb38dc39fdfcc8847) /* 491 */,
|
||||
U64_C(0x123885528d17b87e) /* 492 */, U64_C(0xf2da0ed240b1b642) /* 493 */,
|
||||
U64_C(0x44cefadcd54bf9a9) /* 494 */, U64_C(0x1312200e433c7ee6) /* 495 */,
|
||||
U64_C(0x9ffcc84f3a78c748) /* 496 */, U64_C(0xf0cd1f72248576bb) /* 497 */,
|
||||
U64_C(0xec6974053638cfe4) /* 498 */, U64_C(0x2ba7b67c0cec4e4c) /* 499 */,
|
||||
U64_C(0xac2f4df3e5ce32ed) /* 500 */, U64_C(0xcb33d14326ea4c11) /* 501 */,
|
||||
U64_C(0xa4e9044cc77e58bc) /* 502 */, U64_C(0x5f513293d934fcef) /* 503 */,
|
||||
U64_C(0x5dc9645506e55444) /* 504 */, U64_C(0x50de418f317de40a) /* 505 */,
|
||||
U64_C(0x388cb31a69dde259) /* 506 */, U64_C(0x2db4a83455820a86) /* 507 */,
|
||||
U64_C(0x9010a91e84711ae9) /* 508 */, U64_C(0x4df7f0b7b1498371) /* 509 */,
|
||||
U64_C(0xd62a2eabc0977179) /* 510 */, U64_C(0x22fac097aa8d5c0e) /* 511 */
|
||||
};
|
||||
static u64 sbox3[256] = {
|
||||
U64_C(0xf49fcc2ff1daf39b) /* 512 */, U64_C(0x487fd5c66ff29281) /* 513 */,
|
||||
U64_C(0xe8a30667fcdca83f) /* 514 */, U64_C(0x2c9b4be3d2fcce63) /* 515 */,
|
||||
U64_C(0xda3ff74b93fbbbc2) /* 516 */, U64_C(0x2fa165d2fe70ba66) /* 517 */,
|
||||
U64_C(0xa103e279970e93d4) /* 518 */, U64_C(0xbecdec77b0e45e71) /* 519 */,
|
||||
U64_C(0xcfb41e723985e497) /* 520 */, U64_C(0xb70aaa025ef75017) /* 521 */,
|
||||
U64_C(0xd42309f03840b8e0) /* 522 */, U64_C(0x8efc1ad035898579) /* 523 */,
|
||||
U64_C(0x96c6920be2b2abc5) /* 524 */, U64_C(0x66af4163375a9172) /* 525 */,
|
||||
U64_C(0x2174abdcca7127fb) /* 526 */, U64_C(0xb33ccea64a72ff41) /* 527 */,
|
||||
U64_C(0xf04a4933083066a5) /* 528 */, U64_C(0x8d970acdd7289af5) /* 529 */,
|
||||
U64_C(0x8f96e8e031c8c25e) /* 530 */, U64_C(0xf3fec02276875d47) /* 531 */,
|
||||
U64_C(0xec7bf310056190dd) /* 532 */, U64_C(0xf5adb0aebb0f1491) /* 533 */,
|
||||
U64_C(0x9b50f8850fd58892) /* 534 */, U64_C(0x4975488358b74de8) /* 535 */,
|
||||
U64_C(0xa3354ff691531c61) /* 536 */, U64_C(0x0702bbe481d2c6ee) /* 537 */,
|
||||
U64_C(0x89fb24057deded98) /* 538 */, U64_C(0xac3075138596e902) /* 539 */,
|
||||
U64_C(0x1d2d3580172772ed) /* 540 */, U64_C(0xeb738fc28e6bc30d) /* 541 */,
|
||||
U64_C(0x5854ef8f63044326) /* 542 */, U64_C(0x9e5c52325add3bbe) /* 543 */,
|
||||
U64_C(0x90aa53cf325c4623) /* 544 */, U64_C(0xc1d24d51349dd067) /* 545 */,
|
||||
U64_C(0x2051cfeea69ea624) /* 546 */, U64_C(0x13220f0a862e7e4f) /* 547 */,
|
||||
U64_C(0xce39399404e04864) /* 548 */, U64_C(0xd9c42ca47086fcb7) /* 549 */,
|
||||
U64_C(0x685ad2238a03e7cc) /* 550 */, U64_C(0x066484b2ab2ff1db) /* 551 */,
|
||||
U64_C(0xfe9d5d70efbf79ec) /* 552 */, U64_C(0x5b13b9dd9c481854) /* 553 */,
|
||||
U64_C(0x15f0d475ed1509ad) /* 554 */, U64_C(0x0bebcd060ec79851) /* 555 */,
|
||||
U64_C(0xd58c6791183ab7f8) /* 556 */, U64_C(0xd1187c5052f3eee4) /* 557 */,
|
||||
U64_C(0xc95d1192e54e82ff) /* 558 */, U64_C(0x86eea14cb9ac6ca2) /* 559 */,
|
||||
U64_C(0x3485beb153677d5d) /* 560 */, U64_C(0xdd191d781f8c492a) /* 561 */,
|
||||
U64_C(0xf60866baa784ebf9) /* 562 */, U64_C(0x518f643ba2d08c74) /* 563 */,
|
||||
U64_C(0x8852e956e1087c22) /* 564 */, U64_C(0xa768cb8dc410ae8d) /* 565 */,
|
||||
U64_C(0x38047726bfec8e1a) /* 566 */, U64_C(0xa67738b4cd3b45aa) /* 567 */,
|
||||
U64_C(0xad16691cec0dde19) /* 568 */, U64_C(0xc6d4319380462e07) /* 569 */,
|
||||
U64_C(0xc5a5876d0ba61938) /* 570 */, U64_C(0x16b9fa1fa58fd840) /* 571 */,
|
||||
U64_C(0x188ab1173ca74f18) /* 572 */, U64_C(0xabda2f98c99c021f) /* 573 */,
|
||||
U64_C(0x3e0580ab134ae816) /* 574 */, U64_C(0x5f3b05b773645abb) /* 575 */,
|
||||
U64_C(0x2501a2be5575f2f6) /* 576 */, U64_C(0x1b2f74004e7e8ba9) /* 577 */,
|
||||
U64_C(0x1cd7580371e8d953) /* 578 */, U64_C(0x7f6ed89562764e30) /* 579 */,
|
||||
U64_C(0xb15926ff596f003d) /* 580 */, U64_C(0x9f65293da8c5d6b9) /* 581 */,
|
||||
U64_C(0x6ecef04dd690f84c) /* 582 */, U64_C(0x4782275fff33af88) /* 583 */,
|
||||
U64_C(0xe41433083f820801) /* 584 */, U64_C(0xfd0dfe409a1af9b5) /* 585 */,
|
||||
U64_C(0x4325a3342cdb396b) /* 586 */, U64_C(0x8ae77e62b301b252) /* 587 */,
|
||||
U64_C(0xc36f9e9f6655615a) /* 588 */, U64_C(0x85455a2d92d32c09) /* 589 */,
|
||||
U64_C(0xf2c7dea949477485) /* 590 */, U64_C(0x63cfb4c133a39eba) /* 591 */,
|
||||
U64_C(0x83b040cc6ebc5462) /* 592 */, U64_C(0x3b9454c8fdb326b0) /* 593 */,
|
||||
U64_C(0x56f56a9e87ffd78c) /* 594 */, U64_C(0x2dc2940d99f42bc6) /* 595 */,
|
||||
U64_C(0x98f7df096b096e2d) /* 596 */, U64_C(0x19a6e01e3ad852bf) /* 597 */,
|
||||
U64_C(0x42a99ccbdbd4b40b) /* 598 */, U64_C(0xa59998af45e9c559) /* 599 */,
|
||||
U64_C(0x366295e807d93186) /* 600 */, U64_C(0x6b48181bfaa1f773) /* 601 */,
|
||||
U64_C(0x1fec57e2157a0a1d) /* 602 */, U64_C(0x4667446af6201ad5) /* 603 */,
|
||||
U64_C(0xe615ebcacfb0f075) /* 604 */, U64_C(0xb8f31f4f68290778) /* 605 */,
|
||||
U64_C(0x22713ed6ce22d11e) /* 606 */, U64_C(0x3057c1a72ec3c93b) /* 607 */,
|
||||
U64_C(0xcb46acc37c3f1f2f) /* 608 */, U64_C(0xdbb893fd02aaf50e) /* 609 */,
|
||||
U64_C(0x331fd92e600b9fcf) /* 610 */, U64_C(0xa498f96148ea3ad6) /* 611 */,
|
||||
U64_C(0xa8d8426e8b6a83ea) /* 612 */, U64_C(0xa089b274b7735cdc) /* 613 */,
|
||||
U64_C(0x87f6b3731e524a11) /* 614 */, U64_C(0x118808e5cbc96749) /* 615 */,
|
||||
U64_C(0x9906e4c7b19bd394) /* 616 */, U64_C(0xafed7f7e9b24a20c) /* 617 */,
|
||||
U64_C(0x6509eadeeb3644a7) /* 618 */, U64_C(0x6c1ef1d3e8ef0ede) /* 619 */,
|
||||
U64_C(0xb9c97d43e9798fb4) /* 620 */, U64_C(0xa2f2d784740c28a3) /* 621 */,
|
||||
U64_C(0x7b8496476197566f) /* 622 */, U64_C(0x7a5be3e6b65f069d) /* 623 */,
|
||||
U64_C(0xf96330ed78be6f10) /* 624 */, U64_C(0xeee60de77a076a15) /* 625 */,
|
||||
U64_C(0x2b4bee4aa08b9bd0) /* 626 */, U64_C(0x6a56a63ec7b8894e) /* 627 */,
|
||||
U64_C(0x02121359ba34fef4) /* 628 */, U64_C(0x4cbf99f8283703fc) /* 629 */,
|
||||
U64_C(0x398071350caf30c8) /* 630 */, U64_C(0xd0a77a89f017687a) /* 631 */,
|
||||
U64_C(0xf1c1a9eb9e423569) /* 632 */, U64_C(0x8c7976282dee8199) /* 633 */,
|
||||
U64_C(0x5d1737a5dd1f7abd) /* 634 */, U64_C(0x4f53433c09a9fa80) /* 635 */,
|
||||
U64_C(0xfa8b0c53df7ca1d9) /* 636 */, U64_C(0x3fd9dcbc886ccb77) /* 637 */,
|
||||
U64_C(0xc040917ca91b4720) /* 638 */, U64_C(0x7dd00142f9d1dcdf) /* 639 */,
|
||||
U64_C(0x8476fc1d4f387b58) /* 640 */, U64_C(0x23f8e7c5f3316503) /* 641 */,
|
||||
U64_C(0x032a2244e7e37339) /* 642 */, U64_C(0x5c87a5d750f5a74b) /* 643 */,
|
||||
U64_C(0x082b4cc43698992e) /* 644 */, U64_C(0xdf917becb858f63c) /* 645 */,
|
||||
U64_C(0x3270b8fc5bf86dda) /* 646 */, U64_C(0x10ae72bb29b5dd76) /* 647 */,
|
||||
U64_C(0x576ac94e7700362b) /* 648 */, U64_C(0x1ad112dac61efb8f) /* 649 */,
|
||||
U64_C(0x691bc30ec5faa427) /* 650 */, U64_C(0xff246311cc327143) /* 651 */,
|
||||
U64_C(0x3142368e30e53206) /* 652 */, U64_C(0x71380e31e02ca396) /* 653 */,
|
||||
U64_C(0x958d5c960aad76f1) /* 654 */, U64_C(0xf8d6f430c16da536) /* 655 */,
|
||||
U64_C(0xc8ffd13f1be7e1d2) /* 656 */, U64_C(0x7578ae66004ddbe1) /* 657 */,
|
||||
U64_C(0x05833f01067be646) /* 658 */, U64_C(0xbb34b5ad3bfe586d) /* 659 */,
|
||||
U64_C(0x095f34c9a12b97f0) /* 660 */, U64_C(0x247ab64525d60ca8) /* 661 */,
|
||||
U64_C(0xdcdbc6f3017477d1) /* 662 */, U64_C(0x4a2e14d4decad24d) /* 663 */,
|
||||
U64_C(0xbdb5e6d9be0a1eeb) /* 664 */, U64_C(0x2a7e70f7794301ab) /* 665 */,
|
||||
U64_C(0xdef42d8a270540fd) /* 666 */, U64_C(0x01078ec0a34c22c1) /* 667 */,
|
||||
U64_C(0xe5de511af4c16387) /* 668 */, U64_C(0x7ebb3a52bd9a330a) /* 669 */,
|
||||
U64_C(0x77697857aa7d6435) /* 670 */, U64_C(0x004e831603ae4c32) /* 671 */,
|
||||
U64_C(0xe7a21020ad78e312) /* 672 */, U64_C(0x9d41a70c6ab420f2) /* 673 */,
|
||||
U64_C(0x28e06c18ea1141e6) /* 674 */, U64_C(0xd2b28cbd984f6b28) /* 675 */,
|
||||
U64_C(0x26b75f6c446e9d83) /* 676 */, U64_C(0xba47568c4d418d7f) /* 677 */,
|
||||
U64_C(0xd80badbfe6183d8e) /* 678 */, U64_C(0x0e206d7f5f166044) /* 679 */,
|
||||
U64_C(0xe258a43911cbca3e) /* 680 */, U64_C(0x723a1746b21dc0bc) /* 681 */,
|
||||
U64_C(0xc7caa854f5d7cdd3) /* 682 */, U64_C(0x7cac32883d261d9c) /* 683 */,
|
||||
U64_C(0x7690c26423ba942c) /* 684 */, U64_C(0x17e55524478042b8) /* 685 */,
|
||||
U64_C(0xe0be477656a2389f) /* 686 */, U64_C(0x4d289b5e67ab2da0) /* 687 */,
|
||||
U64_C(0x44862b9c8fbbfd31) /* 688 */, U64_C(0xb47cc8049d141365) /* 689 */,
|
||||
U64_C(0x822c1b362b91c793) /* 690 */, U64_C(0x4eb14655fb13dfd8) /* 691 */,
|
||||
U64_C(0x1ecbba0714e2a97b) /* 692 */, U64_C(0x6143459d5cde5f14) /* 693 */,
|
||||
U64_C(0x53a8fbf1d5f0ac89) /* 694 */, U64_C(0x97ea04d81c5e5b00) /* 695 */,
|
||||
U64_C(0x622181a8d4fdb3f3) /* 696 */, U64_C(0xe9bcd341572a1208) /* 697 */,
|
||||
U64_C(0x1411258643cce58a) /* 698 */, U64_C(0x9144c5fea4c6e0a4) /* 699 */,
|
||||
U64_C(0x0d33d06565cf620f) /* 700 */, U64_C(0x54a48d489f219ca1) /* 701 */,
|
||||
U64_C(0xc43e5eac6d63c821) /* 702 */, U64_C(0xa9728b3a72770daf) /* 703 */,
|
||||
U64_C(0xd7934e7b20df87ef) /* 704 */, U64_C(0xe35503b61a3e86e5) /* 705 */,
|
||||
U64_C(0xcae321fbc819d504) /* 706 */, U64_C(0x129a50b3ac60bfa6) /* 707 */,
|
||||
U64_C(0xcd5e68ea7e9fb6c3) /* 708 */, U64_C(0xb01c90199483b1c7) /* 709 */,
|
||||
U64_C(0x3de93cd5c295376c) /* 710 */, U64_C(0xaed52edf2ab9ad13) /* 711 */,
|
||||
U64_C(0x2e60f512c0a07884) /* 712 */, U64_C(0xbc3d86a3e36210c9) /* 713 */,
|
||||
U64_C(0x35269d9b163951ce) /* 714 */, U64_C(0x0c7d6e2ad0cdb5fa) /* 715 */,
|
||||
U64_C(0x59e86297d87f5733) /* 716 */, U64_C(0x298ef221898db0e7) /* 717 */,
|
||||
U64_C(0x55000029d1a5aa7e) /* 718 */, U64_C(0x8bc08ae1b5061b45) /* 719 */,
|
||||
U64_C(0xc2c31c2b6c92703a) /* 720 */, U64_C(0x94cc596baf25ef42) /* 721 */,
|
||||
U64_C(0x0a1d73db22540456) /* 722 */, U64_C(0x04b6a0f9d9c4179a) /* 723 */,
|
||||
U64_C(0xeffdafa2ae3d3c60) /* 724 */, U64_C(0xf7c8075bb49496c4) /* 725 */,
|
||||
U64_C(0x9cc5c7141d1cd4e3) /* 726 */, U64_C(0x78bd1638218e5534) /* 727 */,
|
||||
U64_C(0xb2f11568f850246a) /* 728 */, U64_C(0xedfabcfa9502bc29) /* 729 */,
|
||||
U64_C(0x796ce5f2da23051b) /* 730 */, U64_C(0xaae128b0dc93537c) /* 731 */,
|
||||
U64_C(0x3a493da0ee4b29ae) /* 732 */, U64_C(0xb5df6b2c416895d7) /* 733 */,
|
||||
U64_C(0xfcabbd25122d7f37) /* 734 */, U64_C(0x70810b58105dc4b1) /* 735 */,
|
||||
U64_C(0xe10fdd37f7882a90) /* 736 */, U64_C(0x524dcab5518a3f5c) /* 737 */,
|
||||
U64_C(0x3c9e85878451255b) /* 738 */, U64_C(0x4029828119bd34e2) /* 739 */,
|
||||
U64_C(0x74a05b6f5d3ceccb) /* 740 */, U64_C(0xb610021542e13eca) /* 741 */,
|
||||
U64_C(0x0ff979d12f59e2ac) /* 742 */, U64_C(0x6037da27e4f9cc50) /* 743 */,
|
||||
U64_C(0x5e92975a0df1847d) /* 744 */, U64_C(0xd66de190d3e623fe) /* 745 */,
|
||||
U64_C(0x5032d6b87b568048) /* 746 */, U64_C(0x9a36b7ce8235216e) /* 747 */,
|
||||
U64_C(0x80272a7a24f64b4a) /* 748 */, U64_C(0x93efed8b8c6916f7) /* 749 */,
|
||||
U64_C(0x37ddbff44cce1555) /* 750 */, U64_C(0x4b95db5d4b99bd25) /* 751 */,
|
||||
U64_C(0x92d3fda169812fc0) /* 752 */, U64_C(0xfb1a4a9a90660bb6) /* 753 */,
|
||||
U64_C(0x730c196946a4b9b2) /* 754 */, U64_C(0x81e289aa7f49da68) /* 755 */,
|
||||
U64_C(0x64669a0f83b1a05f) /* 756 */, U64_C(0x27b3ff7d9644f48b) /* 757 */,
|
||||
U64_C(0xcc6b615c8db675b3) /* 758 */, U64_C(0x674f20b9bcebbe95) /* 759 */,
|
||||
U64_C(0x6f31238275655982) /* 760 */, U64_C(0x5ae488713e45cf05) /* 761 */,
|
||||
U64_C(0xbf619f9954c21157) /* 762 */, U64_C(0xeabac46040a8eae9) /* 763 */,
|
||||
U64_C(0x454c6fe9f2c0c1cd) /* 764 */, U64_C(0x419cf6496412691c) /* 765 */,
|
||||
U64_C(0xd3dc3bef265b0f70) /* 766 */, U64_C(0x6d0e60f5c3578a9e) /* 767 */
|
||||
};
|
||||
static u64 sbox4[256] = {
|
||||
U64_C(0x5b0e608526323c55) /* 768 */, U64_C(0x1a46c1a9fa1b59f5) /* 769 */,
|
||||
U64_C(0xa9e245a17c4c8ffa) /* 770 */, U64_C(0x65ca5159db2955d7) /* 771 */,
|
||||
U64_C(0x05db0a76ce35afc2) /* 772 */, U64_C(0x81eac77ea9113d45) /* 773 */,
|
||||
U64_C(0x528ef88ab6ac0a0d) /* 774 */, U64_C(0xa09ea253597be3ff) /* 775 */,
|
||||
U64_C(0x430ddfb3ac48cd56) /* 776 */, U64_C(0xc4b3a67af45ce46f) /* 777 */,
|
||||
U64_C(0x4ececfd8fbe2d05e) /* 778 */, U64_C(0x3ef56f10b39935f0) /* 779 */,
|
||||
U64_C(0x0b22d6829cd619c6) /* 780 */, U64_C(0x17fd460a74df2069) /* 781 */,
|
||||
U64_C(0x6cf8cc8e8510ed40) /* 782 */, U64_C(0xd6c824bf3a6ecaa7) /* 783 */,
|
||||
U64_C(0x61243d581a817049) /* 784 */, U64_C(0x048bacb6bbc163a2) /* 785 */,
|
||||
U64_C(0xd9a38ac27d44cc32) /* 786 */, U64_C(0x7fddff5baaf410ab) /* 787 */,
|
||||
U64_C(0xad6d495aa804824b) /* 788 */, U64_C(0xe1a6a74f2d8c9f94) /* 789 */,
|
||||
U64_C(0xd4f7851235dee8e3) /* 790 */, U64_C(0xfd4b7f886540d893) /* 791 */,
|
||||
U64_C(0x247c20042aa4bfda) /* 792 */, U64_C(0x096ea1c517d1327c) /* 793 */,
|
||||
U64_C(0xd56966b4361a6685) /* 794 */, U64_C(0x277da5c31221057d) /* 795 */,
|
||||
U64_C(0x94d59893a43acff7) /* 796 */, U64_C(0x64f0c51ccdc02281) /* 797 */,
|
||||
U64_C(0x3d33bcc4ff6189db) /* 798 */, U64_C(0xe005cb184ce66af1) /* 799 */,
|
||||
U64_C(0xff5ccd1d1db99bea) /* 800 */, U64_C(0xb0b854a7fe42980f) /* 801 */,
|
||||
U64_C(0x7bd46a6a718d4b9f) /* 802 */, U64_C(0xd10fa8cc22a5fd8c) /* 803 */,
|
||||
U64_C(0xd31484952be4bd31) /* 804 */, U64_C(0xc7fa975fcb243847) /* 805 */,
|
||||
U64_C(0x4886ed1e5846c407) /* 806 */, U64_C(0x28cddb791eb70b04) /* 807 */,
|
||||
U64_C(0xc2b00be2f573417f) /* 808 */, U64_C(0x5c9590452180f877) /* 809 */,
|
||||
U64_C(0x7a6bddfff370eb00) /* 810 */, U64_C(0xce509e38d6d9d6a4) /* 811 */,
|
||||
U64_C(0xebeb0f00647fa702) /* 812 */, U64_C(0x1dcc06cf76606f06) /* 813 */,
|
||||
U64_C(0xe4d9f28ba286ff0a) /* 814 */, U64_C(0xd85a305dc918c262) /* 815 */,
|
||||
U64_C(0x475b1d8732225f54) /* 816 */, U64_C(0x2d4fb51668ccb5fe) /* 817 */,
|
||||
U64_C(0xa679b9d9d72bba20) /* 818 */, U64_C(0x53841c0d912d43a5) /* 819 */,
|
||||
U64_C(0x3b7eaa48bf12a4e8) /* 820 */, U64_C(0x781e0e47f22f1ddf) /* 821 */,
|
||||
U64_C(0xeff20ce60ab50973) /* 822 */, U64_C(0x20d261d19dffb742) /* 823 */,
|
||||
U64_C(0x16a12b03062a2e39) /* 824 */, U64_C(0x1960eb2239650495) /* 825 */,
|
||||
U64_C(0x251c16fed50eb8b8) /* 826 */, U64_C(0x9ac0c330f826016e) /* 827 */,
|
||||
U64_C(0xed152665953e7671) /* 828 */, U64_C(0x02d63194a6369570) /* 829 */,
|
||||
U64_C(0x5074f08394b1c987) /* 830 */, U64_C(0x70ba598c90b25ce1) /* 831 */,
|
||||
U64_C(0x794a15810b9742f6) /* 832 */, U64_C(0x0d5925e9fcaf8c6c) /* 833 */,
|
||||
U64_C(0x3067716cd868744e) /* 834 */, U64_C(0x910ab077e8d7731b) /* 835 */,
|
||||
U64_C(0x6a61bbdb5ac42f61) /* 836 */, U64_C(0x93513efbf0851567) /* 837 */,
|
||||
U64_C(0xf494724b9e83e9d5) /* 838 */, U64_C(0xe887e1985c09648d) /* 839 */,
|
||||
U64_C(0x34b1d3c675370cfd) /* 840 */, U64_C(0xdc35e433bc0d255d) /* 841 */,
|
||||
U64_C(0xd0aab84234131be0) /* 842 */, U64_C(0x08042a50b48b7eaf) /* 843 */,
|
||||
U64_C(0x9997c4ee44a3ab35) /* 844 */, U64_C(0x829a7b49201799d0) /* 845 */,
|
||||
U64_C(0x263b8307b7c54441) /* 846 */, U64_C(0x752f95f4fd6a6ca6) /* 847 */,
|
||||
U64_C(0x927217402c08c6e5) /* 848 */, U64_C(0x2a8ab754a795d9ee) /* 849 */,
|
||||
U64_C(0xa442f7552f72943d) /* 850 */, U64_C(0x2c31334e19781208) /* 851 */,
|
||||
U64_C(0x4fa98d7ceaee6291) /* 852 */, U64_C(0x55c3862f665db309) /* 853 */,
|
||||
U64_C(0xbd0610175d53b1f3) /* 854 */, U64_C(0x46fe6cb840413f27) /* 855 */,
|
||||
U64_C(0x3fe03792df0cfa59) /* 856 */, U64_C(0xcfe700372eb85e8f) /* 857 */,
|
||||
U64_C(0xa7be29e7adbce118) /* 858 */, U64_C(0xe544ee5cde8431dd) /* 859 */,
|
||||
U64_C(0x8a781b1b41f1873e) /* 860 */, U64_C(0xa5c94c78a0d2f0e7) /* 861 */,
|
||||
U64_C(0x39412e2877b60728) /* 862 */, U64_C(0xa1265ef3afc9a62c) /* 863 */,
|
||||
U64_C(0xbcc2770c6a2506c5) /* 864 */, U64_C(0x3ab66dd5dce1ce12) /* 865 */,
|
||||
U64_C(0xe65499d04a675b37) /* 866 */, U64_C(0x7d8f523481bfd216) /* 867 */,
|
||||
U64_C(0x0f6f64fcec15f389) /* 868 */, U64_C(0x74efbe618b5b13c8) /* 869 */,
|
||||
U64_C(0xacdc82b714273e1d) /* 870 */, U64_C(0xdd40bfe003199d17) /* 871 */,
|
||||
U64_C(0x37e99257e7e061f8) /* 872 */, U64_C(0xfa52626904775aaa) /* 873 */,
|
||||
U64_C(0x8bbbf63a463d56f9) /* 874 */, U64_C(0xf0013f1543a26e64) /* 875 */,
|
||||
U64_C(0xa8307e9f879ec898) /* 876 */, U64_C(0xcc4c27a4150177cc) /* 877 */,
|
||||
U64_C(0x1b432f2cca1d3348) /* 878 */, U64_C(0xde1d1f8f9f6fa013) /* 879 */,
|
||||
U64_C(0x606602a047a7ddd6) /* 880 */, U64_C(0xd237ab64cc1cb2c7) /* 881 */,
|
||||
U64_C(0x9b938e7225fcd1d3) /* 882 */, U64_C(0xec4e03708e0ff476) /* 883 */,
|
||||
U64_C(0xfeb2fbda3d03c12d) /* 884 */, U64_C(0xae0bced2ee43889a) /* 885 */,
|
||||
U64_C(0x22cb8923ebfb4f43) /* 886 */, U64_C(0x69360d013cf7396d) /* 887 */,
|
||||
U64_C(0x855e3602d2d4e022) /* 888 */, U64_C(0x073805bad01f784c) /* 889 */,
|
||||
U64_C(0x33e17a133852f546) /* 890 */, U64_C(0xdf4874058ac7b638) /* 891 */,
|
||||
U64_C(0xba92b29c678aa14a) /* 892 */, U64_C(0x0ce89fc76cfaadcd) /* 893 */,
|
||||
U64_C(0x5f9d4e0908339e34) /* 894 */, U64_C(0xf1afe9291f5923b9) /* 895 */,
|
||||
U64_C(0x6e3480f60f4a265f) /* 896 */, U64_C(0xeebf3a2ab29b841c) /* 897 */,
|
||||
U64_C(0xe21938a88f91b4ad) /* 898 */, U64_C(0x57dfeff845c6d3c3) /* 899 */,
|
||||
U64_C(0x2f006b0bf62caaf2) /* 900 */, U64_C(0x62f479ef6f75ee78) /* 901 */,
|
||||
U64_C(0x11a55ad41c8916a9) /* 902 */, U64_C(0xf229d29084fed453) /* 903 */,
|
||||
U64_C(0x42f1c27b16b000e6) /* 904 */, U64_C(0x2b1f76749823c074) /* 905 */,
|
||||
U64_C(0x4b76eca3c2745360) /* 906 */, U64_C(0x8c98f463b91691bd) /* 907 */,
|
||||
U64_C(0x14bcc93cf1ade66a) /* 908 */, U64_C(0x8885213e6d458397) /* 909 */,
|
||||
U64_C(0x8e177df0274d4711) /* 910 */, U64_C(0xb49b73b5503f2951) /* 911 */,
|
||||
U64_C(0x10168168c3f96b6b) /* 912 */, U64_C(0x0e3d963b63cab0ae) /* 913 */,
|
||||
U64_C(0x8dfc4b5655a1db14) /* 914 */, U64_C(0xf789f1356e14de5c) /* 915 */,
|
||||
U64_C(0x683e68af4e51dac1) /* 916 */, U64_C(0xc9a84f9d8d4b0fd9) /* 917 */,
|
||||
U64_C(0x3691e03f52a0f9d1) /* 918 */, U64_C(0x5ed86e46e1878e80) /* 919 */,
|
||||
U64_C(0x3c711a0e99d07150) /* 920 */, U64_C(0x5a0865b20c4e9310) /* 921 */,
|
||||
U64_C(0x56fbfc1fe4f0682e) /* 922 */, U64_C(0xea8d5de3105edf9b) /* 923 */,
|
||||
U64_C(0x71abfdb12379187a) /* 924 */, U64_C(0x2eb99de1bee77b9c) /* 925 */,
|
||||
U64_C(0x21ecc0ea33cf4523) /* 926 */, U64_C(0x59a4d7521805c7a1) /* 927 */,
|
||||
U64_C(0x3896f5eb56ae7c72) /* 928 */, U64_C(0xaa638f3db18f75dc) /* 929 */,
|
||||
U64_C(0x9f39358dabe9808e) /* 930 */, U64_C(0xb7defa91c00b72ac) /* 931 */,
|
||||
U64_C(0x6b5541fd62492d92) /* 932 */, U64_C(0x6dc6dee8f92e4d5b) /* 933 */,
|
||||
U64_C(0x353f57abc4beea7e) /* 934 */, U64_C(0x735769d6da5690ce) /* 935 */,
|
||||
U64_C(0x0a234aa642391484) /* 936 */, U64_C(0xf6f9508028f80d9d) /* 937 */,
|
||||
U64_C(0xb8e319a27ab3f215) /* 938 */, U64_C(0x31ad9c1151341a4d) /* 939 */,
|
||||
U64_C(0x773c22a57bef5805) /* 940 */, U64_C(0x45c7561a07968633) /* 941 */,
|
||||
U64_C(0xf913da9e249dbe36) /* 942 */, U64_C(0xda652d9b78a64c68) /* 943 */,
|
||||
U64_C(0x4c27a97f3bc334ef) /* 944 */, U64_C(0x76621220e66b17f4) /* 945 */,
|
||||
U64_C(0x967743899acd7d0b) /* 946 */, U64_C(0xf3ee5bcae0ed6782) /* 947 */,
|
||||
U64_C(0x409f753600c879fc) /* 948 */, U64_C(0x06d09a39b5926db6) /* 949 */,
|
||||
U64_C(0x6f83aeb0317ac588) /* 950 */, U64_C(0x01e6ca4a86381f21) /* 951 */,
|
||||
U64_C(0x66ff3462d19f3025) /* 952 */, U64_C(0x72207c24ddfd3bfb) /* 953 */,
|
||||
U64_C(0x4af6b6d3e2ece2eb) /* 954 */, U64_C(0x9c994dbec7ea08de) /* 955 */,
|
||||
U64_C(0x49ace597b09a8bc4) /* 956 */, U64_C(0xb38c4766cf0797ba) /* 957 */,
|
||||
U64_C(0x131b9373c57c2a75) /* 958 */, U64_C(0xb1822cce61931e58) /* 959 */,
|
||||
U64_C(0x9d7555b909ba1c0c) /* 960 */, U64_C(0x127fafdd937d11d2) /* 961 */,
|
||||
U64_C(0x29da3badc66d92e4) /* 962 */, U64_C(0xa2c1d57154c2ecbc) /* 963 */,
|
||||
U64_C(0x58c5134d82f6fe24) /* 964 */, U64_C(0x1c3ae3515b62274f) /* 965 */,
|
||||
U64_C(0xe907c82e01cb8126) /* 966 */, U64_C(0xf8ed091913e37fcb) /* 967 */,
|
||||
U64_C(0x3249d8f9c80046c9) /* 968 */, U64_C(0x80cf9bede388fb63) /* 969 */,
|
||||
U64_C(0x1881539a116cf19e) /* 970 */, U64_C(0x5103f3f76bd52457) /* 971 */,
|
||||
U64_C(0x15b7e6f5ae47f7a8) /* 972 */, U64_C(0xdbd7c6ded47e9ccf) /* 973 */,
|
||||
U64_C(0x44e55c410228bb1a) /* 974 */, U64_C(0xb647d4255edb4e99) /* 975 */,
|
||||
U64_C(0x5d11882bb8aafc30) /* 976 */, U64_C(0xf5098bbb29d3212a) /* 977 */,
|
||||
U64_C(0x8fb5ea14e90296b3) /* 978 */, U64_C(0x677b942157dd025a) /* 979 */,
|
||||
U64_C(0xfb58e7c0a390acb5) /* 980 */, U64_C(0x89d3674c83bd4a01) /* 981 */,
|
||||
U64_C(0x9e2da4df4bf3b93b) /* 982 */, U64_C(0xfcc41e328cab4829) /* 983 */,
|
||||
U64_C(0x03f38c96ba582c52) /* 984 */, U64_C(0xcad1bdbd7fd85db2) /* 985 */,
|
||||
U64_C(0xbbb442c16082ae83) /* 986 */, U64_C(0xb95fe86ba5da9ab0) /* 987 */,
|
||||
U64_C(0xb22e04673771a93f) /* 988 */, U64_C(0x845358c9493152d8) /* 989 */,
|
||||
U64_C(0xbe2a488697b4541e) /* 990 */, U64_C(0x95a2dc2dd38e6966) /* 991 */,
|
||||
U64_C(0xc02c11ac923c852b) /* 992 */, U64_C(0x2388b1990df2a87b) /* 993 */,
|
||||
U64_C(0x7c8008fa1b4f37be) /* 994 */, U64_C(0x1f70d0c84d54e503) /* 995 */,
|
||||
U64_C(0x5490adec7ece57d4) /* 996 */, U64_C(0x002b3c27d9063a3a) /* 997 */,
|
||||
U64_C(0x7eaea3848030a2bf) /* 998 */, U64_C(0xc602326ded2003c0) /* 999 */,
|
||||
U64_C(0x83a7287d69a94086) /* 1000 */, U64_C(0xc57a5fcb30f57a8a) /* 1001 */,
|
||||
U64_C(0xb56844e479ebe779) /* 1002 */, U64_C(0xa373b40f05dcbce9) /* 1003 */,
|
||||
U64_C(0xd71a786e88570ee2) /* 1004 */, U64_C(0x879cbacdbde8f6a0) /* 1005 */,
|
||||
U64_C(0x976ad1bcc164a32f) /* 1006 */, U64_C(0xab21e25e9666d78b) /* 1007 */,
|
||||
U64_C(0x901063aae5e5c33c) /* 1008 */, U64_C(0x9818b34448698d90) /* 1009 */,
|
||||
U64_C(0xe36487ae3e1e8abb) /* 1010 */, U64_C(0xafbdf931893bdcb4) /* 1011 */,
|
||||
U64_C(0x6345a0dc5fbbd519) /* 1012 */, U64_C(0x8628fe269b9465ca) /* 1013 */,
|
||||
U64_C(0x1e5d01603f9c51ec) /* 1014 */, U64_C(0x4de44006a15049b7) /* 1015 */,
|
||||
U64_C(0xbf6c70e5f776cbb1) /* 1016 */, U64_C(0x411218f2ef552bed) /* 1017 */,
|
||||
U64_C(0xcb0c0708705a36a3) /* 1018 */, U64_C(0xe74d14754f986044) /* 1019 */,
|
||||
U64_C(0xcd56d9430ea8280e) /* 1020 */, U64_C(0xc12591d7535f5065) /* 1021 */,
|
||||
U64_C(0xc83223f1720aef96) /* 1022 */, U64_C(0xc3a0396f7363a51f) /* 1023 */
|
||||
};
|
||||
|
||||
static void
|
||||
tiger_init( void *context )
|
||||
{
|
||||
TIGER_CONTEXT *hd = context;
|
||||
|
||||
hd->a = 0x0123456789abcdefLL;
|
||||
hd->b = 0xfedcba9876543210LL;
|
||||
hd->c = 0xf096a5b4c3b2e187LL;
|
||||
hd->nblocks = 0;
|
||||
hd->count = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
tiger_round( u64 *ra, u64 *rb, u64 *rc, u64 x, int mul )
|
||||
{
|
||||
u64 a = *ra;
|
||||
u64 b = *rb;
|
||||
u64 c = *rc;
|
||||
|
||||
c ^= x;
|
||||
a -= ( sbox1[ c & 0xff ] ^ sbox2[ (c >> 16) & 0xff ]
|
||||
^ sbox3[ (c >> 32) & 0xff ] ^ sbox4[ (c >> 48) & 0xff ]);
|
||||
b += ( sbox4[ (c >> 8) & 0xff ] ^ sbox3[ (c >> 24) & 0xff ]
|
||||
^ sbox2[ (c >> 40) & 0xff ] ^ sbox1[ (c >> 56) & 0xff ]);
|
||||
b *= mul;
|
||||
|
||||
*ra = a;
|
||||
*rb = b;
|
||||
*rc = c;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
pass( u64 *ra, u64 *rb, u64 *rc, u64 *x, int mul )
|
||||
{
|
||||
u64 a = *ra;
|
||||
u64 b = *rb;
|
||||
u64 c = *rc;
|
||||
|
||||
tiger_round( &a, &b, &c, x[0], mul );
|
||||
tiger_round( &b, &c, &a, x[1], mul );
|
||||
tiger_round( &c, &a, &b, x[2], mul );
|
||||
tiger_round( &a, &b, &c, x[3], mul );
|
||||
tiger_round( &b, &c, &a, x[4], mul );
|
||||
tiger_round( &c, &a, &b, x[5], mul );
|
||||
tiger_round( &a, &b, &c, x[6], mul );
|
||||
tiger_round( &b, &c, &a, x[7], mul );
|
||||
|
||||
*ra = a;
|
||||
*rb = b;
|
||||
*rc = c;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
key_schedule( u64 *x )
|
||||
{
|
||||
x[0] -= x[7] ^ 0xa5a5a5a5a5a5a5a5LL;
|
||||
x[1] ^= x[0];
|
||||
x[2] += x[1];
|
||||
x[3] -= x[2] ^ ((~x[1]) << 19 );
|
||||
x[4] ^= x[3];
|
||||
x[5] += x[4];
|
||||
x[6] -= x[5] ^ ((~x[4]) >> 23 );
|
||||
x[7] ^= x[6];
|
||||
x[0] += x[7];
|
||||
x[1] -= x[0] ^ ((~x[7]) << 19 );
|
||||
x[2] ^= x[1];
|
||||
x[3] += x[2];
|
||||
x[4] -= x[3] ^ ((~x[2]) >> 23 );
|
||||
x[5] ^= x[4];
|
||||
x[6] += x[5];
|
||||
x[7] -= x[6] ^ 0x0123456789abcdefLL;
|
||||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Transform the message DATA which consists of 512 bytes (8 words)
|
||||
*/
|
||||
static void
|
||||
transform ( TIGER_CONTEXT *hd, const unsigned char *data )
|
||||
{
|
||||
u64 a,b,c,aa,bb,cc;
|
||||
u64 x[8];
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define MKWORD(d,n) \
|
||||
( ((u64)(d)[8*(n)+7]) << 56 | ((u64)(d)[8*(n)+6]) << 48 \
|
||||
| ((u64)(d)[8*(n)+5]) << 40 | ((u64)(d)[8*(n)+4]) << 32 \
|
||||
| ((u64)(d)[8*(n)+3]) << 24 | ((u64)(d)[8*(n)+2]) << 16 \
|
||||
| ((u64)(d)[8*(n)+1]) << 8 | ((u64)(d)[8*(n) ]) )
|
||||
x[0] = MKWORD(data, 0);
|
||||
x[1] = MKWORD(data, 1);
|
||||
x[2] = MKWORD(data, 2);
|
||||
x[3] = MKWORD(data, 3);
|
||||
x[4] = MKWORD(data, 4);
|
||||
x[5] = MKWORD(data, 5);
|
||||
x[6] = MKWORD(data, 6);
|
||||
x[7] = MKWORD(data, 7);
|
||||
#undef MKWORD
|
||||
#else
|
||||
memcpy( &x[0], data, 64 );
|
||||
#endif
|
||||
|
||||
/* save */
|
||||
a = aa = hd->a;
|
||||
b = bb = hd->b;
|
||||
c = cc = hd->c;
|
||||
|
||||
pass( &a, &b, &c, x, 5);
|
||||
key_schedule( x );
|
||||
pass( &c, &a, &b, x, 7);
|
||||
key_schedule( x );
|
||||
pass( &b, &c, &a, x, 9);
|
||||
|
||||
/* feedforward */
|
||||
a ^= aa;
|
||||
b -= bb;
|
||||
c += cc;
|
||||
/* store */
|
||||
hd->a = a;
|
||||
hd->b = b;
|
||||
hd->c = c;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Update the message digest with the contents
|
||||
* of INBUF with length INLEN.
|
||||
*/
|
||||
static void
|
||||
tiger_write ( void *context, const void *inbuf_arg, size_t inlen)
|
||||
{
|
||||
const unsigned char *inbuf = inbuf_arg;
|
||||
TIGER_CONTEXT *hd = context;
|
||||
|
||||
if( hd->count == 64 ) /* flush the buffer */
|
||||
{
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (21*8+11*sizeof(void*));
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
}
|
||||
if( !inbuf )
|
||||
return;
|
||||
if( hd->count )
|
||||
{
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
tiger_write( hd, NULL, 0 );
|
||||
if( !inlen )
|
||||
return;
|
||||
}
|
||||
|
||||
while( inlen >= 64 )
|
||||
{
|
||||
transform( hd, inbuf );
|
||||
hd->count = 0;
|
||||
hd->nblocks++;
|
||||
inlen -= 64;
|
||||
inbuf += 64;
|
||||
}
|
||||
_gcry_burn_stack (21*8+11*sizeof(void*));
|
||||
for( ; inlen && hd->count < 64; inlen-- )
|
||||
hd->buf[hd->count++] = *inbuf++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* The routine terminates the computation
|
||||
*/
|
||||
static void
|
||||
tiger_final( void *context )
|
||||
{
|
||||
TIGER_CONTEXT *hd = context;
|
||||
u32 t, msb, lsb;
|
||||
byte *p;
|
||||
|
||||
tiger_write(hd, NULL, 0); /* flush */;
|
||||
|
||||
t = hd->nblocks;
|
||||
/* multiply by 64 to make a byte count */
|
||||
lsb = t << 6;
|
||||
msb = t >> 26;
|
||||
/* add the count */
|
||||
t = lsb;
|
||||
if( (lsb += hd->count) < t )
|
||||
msb++;
|
||||
/* multiply by 8 to make a bit count */
|
||||
t = lsb;
|
||||
lsb <<= 3;
|
||||
msb <<= 3;
|
||||
msb |= t >> 29;
|
||||
|
||||
if( hd->count < 56 ) /* enough room */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x01; /* pad */
|
||||
while( hd->count < 56 )
|
||||
hd->buf[hd->count++] = 0; /* pad */
|
||||
}
|
||||
else /* need one extra block */
|
||||
{
|
||||
hd->buf[hd->count++] = 0x01; /* pad character */
|
||||
while( hd->count < 64 )
|
||||
hd->buf[hd->count++] = 0;
|
||||
tiger_write(hd, NULL, 0); /* flush */;
|
||||
memset(hd->buf, 0, 56 ); /* fill next block with zeroes */
|
||||
}
|
||||
/* append the 64 bit count */
|
||||
hd->buf[56] = lsb ;
|
||||
hd->buf[57] = lsb >> 8;
|
||||
hd->buf[58] = lsb >> 16;
|
||||
hd->buf[59] = lsb >> 24;
|
||||
hd->buf[60] = msb ;
|
||||
hd->buf[61] = msb >> 8;
|
||||
hd->buf[62] = msb >> 16;
|
||||
hd->buf[63] = msb >> 24;
|
||||
transform( hd, hd->buf );
|
||||
_gcry_burn_stack (21*8+11*sizeof(void*));
|
||||
|
||||
p = hd->buf;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
#define X(a) do { *(u64*)p = hd->a ; p += 8; } while(0)
|
||||
#else /* little endian */
|
||||
#define X(a) do { *p++ = hd->a >> 56; *p++ = hd->a >> 48; \
|
||||
*p++ = hd->a >> 40; *p++ = hd->a >> 32; \
|
||||
*p++ = hd->a >> 24; *p++ = hd->a >> 16; \
|
||||
*p++ = hd->a >> 8; *p++ = hd->a; } while(0)
|
||||
#endif
|
||||
X(a);
|
||||
X(b);
|
||||
X(c);
|
||||
#undef X
|
||||
}
|
||||
|
||||
static byte *
|
||||
tiger_read( void *context )
|
||||
{
|
||||
TIGER_CONTEXT *hd = context;
|
||||
|
||||
return hd->buf;
|
||||
}
|
||||
|
||||
static byte asn[19] = /* Object ID is 1.3.6.1.4.1.11591.12.2 */
|
||||
{ 0x30, 0x29, 0x30, 0x0d, 0x06, 0x09, 0x2b, 0x06,
|
||||
0x01, 0x04, 0x01, 0xda, 0x47, 0x0c, 0x02,
|
||||
0x05, 0x00, 0x04, 0x18 };
|
||||
|
||||
static gcry_md_oid_spec_t oid_spec_tiger[] =
|
||||
{
|
||||
/* GNU.digestAlgorithm TIGER */
|
||||
{ "1.3.6.1.4.1.11591.12.2" },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
gcry_md_spec_t _gcry_digest_spec_tiger =
|
||||
{
|
||||
"TIGER192", asn, DIM (asn), oid_spec_tiger, 24,
|
||||
tiger_init, tiger_write, tiger_final, tiger_read,
|
||||
sizeof (TIGER_CONTEXT)
|
||||
};
|
||||
|
||||
#endif /* HAVE_U64_TYPEDEF */
|
||||
1040
jni/libgcrypt/cipher/twofish.c
Normal file
1040
jni/libgcrypt/cipher/twofish.c
Normal file
File diff suppressed because it is too large
Load Diff
1406
jni/libgcrypt/cipher/whirlpool.c
Normal file
1406
jni/libgcrypt/cipher/whirlpool.c
Normal file
File diff suppressed because it is too large
Load Diff
142
jni/libgcrypt/compile
Executable file
142
jni/libgcrypt/compile
Executable file
@@ -0,0 +1,142 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand `-c -o'.
|
||||
|
||||
scriptversion=2005-05-14.22
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# 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, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand `-c -o'.
|
||||
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file `INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
eat=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
||||
# So we strip `-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no `-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# `.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use `[/.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
1516
jni/libgcrypt/config.guess
vendored
Executable file
1516
jni/libgcrypt/config.guess
vendored
Executable file
File diff suppressed because it is too large
Load Diff
414
jni/libgcrypt/config.h.in
Normal file
414
jni/libgcrypt/config.h.in
Normal file
@@ -0,0 +1,414 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
|
||||
#ifndef _GCRYPT_CONFIG_H_INCLUDED
|
||||
#define _GCRYPT_CONFIG_H_INCLUDED
|
||||
/* need this, because some autoconf tests rely on this (e.g. stpcpy)
|
||||
* and it should be used for new programs */
|
||||
#define _GNU_SOURCE 1
|
||||
|
||||
|
||||
/* Subversion revision used to build this package */
|
||||
#undef BUILD_REVISION
|
||||
|
||||
/* configure did not test for endianess */
|
||||
#undef DISABLED_ENDIAN_CHECK
|
||||
|
||||
/* Define if you don't want the default EGD socket name. For details see
|
||||
cipher/rndegd.c */
|
||||
#undef EGD_SOCKET_NAME
|
||||
|
||||
/* Define to support an HMAC based integrity check */
|
||||
#undef ENABLE_HMAC_BINARY_CHECK
|
||||
|
||||
/* Enable support for the PadLock engine. */
|
||||
#undef ENABLE_PADLOCK_SUPPORT
|
||||
|
||||
/* Define to use the GNU C visibility attribute. */
|
||||
#undef GCRY_USE_VISIBILITY
|
||||
|
||||
/* The default error source for libgcrypt. */
|
||||
#undef GPG_ERR_SOURCE_DEFAULT
|
||||
|
||||
/* Define to 1 if you have the `atexit' function. */
|
||||
#undef HAVE_ATEXIT
|
||||
|
||||
/* Defined if the mlock() call does not work */
|
||||
#undef HAVE_BROKEN_MLOCK
|
||||
|
||||
/* Defined if a `byte' is typedef'd */
|
||||
#undef HAVE_BYTE_TYPEDEF
|
||||
|
||||
/* Define to 1 if you have the `clock_gettime' function. */
|
||||
#undef HAVE_CLOCK_GETTIME
|
||||
|
||||
/* Define to 1 if you have the declaration of `sys_siglist', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_SYS_SIGLIST
|
||||
|
||||
/* defined if the system supports a random device */
|
||||
#undef HAVE_DEV_RANDOM
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
|
||||
#undef HAVE_DOPRNT
|
||||
|
||||
/* defined if we run on some of the PCDOS like systems (DOS, Windoze. OS/2)
|
||||
with special properties like no file modes */
|
||||
#undef HAVE_DOSISH_SYSTEM
|
||||
|
||||
/* defined if we must run on a stupid file system */
|
||||
#undef HAVE_DRIVE_LETTERS
|
||||
|
||||
/* Define to 1 if you have the `fcntl' function. */
|
||||
#undef HAVE_FCNTL
|
||||
|
||||
/* Define to 1 if you have the `ftruncate' function. */
|
||||
#undef HAVE_FTRUNCATE
|
||||
|
||||
/* Define to 1 if you have the `gethrtime' function. */
|
||||
#undef HAVE_GETHRTIME
|
||||
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define to 1 if you have the `getrusage' function. */
|
||||
#undef HAVE_GETRUSAGE
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `rt' library (-lrt). */
|
||||
#undef HAVE_LIBRT
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
#undef HAVE_MEMMOVE
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Defined if the system supports an mlock() call */
|
||||
#undef HAVE_MLOCK
|
||||
|
||||
/* Define to 1 if you have the `mmap' function. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
/* Defined if the GNU Pth is available */
|
||||
#undef HAVE_PTH
|
||||
|
||||
/* Define to 1 if you have the `raise' function. */
|
||||
#undef HAVE_RAISE
|
||||
|
||||
/* Define to 1 if you have the `rand' function. */
|
||||
#undef HAVE_RAND
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the `stpcpy' function. */
|
||||
#undef HAVE_STPCPY
|
||||
|
||||
/* Define to 1 if you have the `strcasecmp' function. */
|
||||
#undef HAVE_STRCASECMP
|
||||
|
||||
/* Define to 1 if you have the `strerror' function. */
|
||||
#undef HAVE_STRERROR
|
||||
|
||||
/* Define to 1 if you have the `stricmp' function. */
|
||||
#undef HAVE_STRICMP
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the `strtoul' function. */
|
||||
#undef HAVE_STRTOUL
|
||||
|
||||
/* Define to 1 if you have the `sysconf' function. */
|
||||
#undef HAVE_SYSCONF
|
||||
|
||||
/* Define to 1 if you have the `syslog' function. */
|
||||
#undef HAVE_SYSLOG
|
||||
|
||||
/* Define to 1 if you have the <sys/capability.h> header file. */
|
||||
#undef HAVE_SYS_CAPABILITY_H
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#undef HAVE_SYS_MMAN_H
|
||||
|
||||
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Defined if a `u16' is typedef'd */
|
||||
#undef HAVE_U16_TYPEDEF
|
||||
|
||||
/* Defined if a `u32' is typedef'd */
|
||||
#undef HAVE_U32_TYPEDEF
|
||||
|
||||
/* Define to 1 if the system has the type `uintptr_t'. */
|
||||
#undef HAVE_UINTPTR_T
|
||||
|
||||
/* Defined if a `ulong' is typedef'd */
|
||||
#undef HAVE_ULONG_TYPEDEF
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Defined if a `ushort' is typedef'd */
|
||||
#undef HAVE_USHORT_TYPEDEF
|
||||
|
||||
/* Define to 1 if you have the `vprintf' function. */
|
||||
#undef HAVE_VPRINTF
|
||||
|
||||
/* Defined if we run on a W32 API based system */
|
||||
#undef HAVE_W32_SYSTEM
|
||||
|
||||
/* Define to 1 if you have the `wait4' function. */
|
||||
#undef HAVE_WAIT4
|
||||
|
||||
/* Define to 1 if you have the `waitpid' function. */
|
||||
#undef HAVE_WAITPID
|
||||
|
||||
/* Define to 1 if you have the <winsock2.h> header file. */
|
||||
#undef HAVE_WINSOCK2_H
|
||||
|
||||
/* Define to 1 if you have the <ws2tcpip.h> header file. */
|
||||
#undef HAVE_WS2TCPIP_H
|
||||
|
||||
/* Defined if this is not a regular release */
|
||||
#undef IS_DEVELOPMENT_VERSION
|
||||
|
||||
/* List of available cipher algorithms */
|
||||
#undef LIBGCRYPT_CIPHERS
|
||||
|
||||
/* List of available digest algorithms */
|
||||
#undef LIBGCRYPT_DIGESTS
|
||||
|
||||
/* List of available public key cipher algorithms */
|
||||
#undef LIBGCRYPT_PUBKEY_CIPHERS
|
||||
|
||||
/* Define to use the (obsolete) malloc guarding feature */
|
||||
#undef M_GUARD
|
||||
|
||||
/* defined to the name of the strong random device */
|
||||
#undef NAME_OF_DEV_RANDOM
|
||||
|
||||
/* defined to the name of the weaker random device */
|
||||
#undef NAME_OF_DEV_URANDOM
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of this package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* A human readable text with the name of the OS */
|
||||
#undef PRINTABLE_OS_NAME
|
||||
|
||||
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||
#undef RETSIGTYPE
|
||||
|
||||
/* The size of `unsigned int', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_INT
|
||||
|
||||
/* The size of `unsigned long', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_LONG
|
||||
|
||||
/* The size of `unsigned long long', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_LONG_LONG
|
||||
|
||||
/* The size of `unsigned short', as computed by sizeof. */
|
||||
#undef SIZEOF_UNSIGNED_SHORT
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_AES
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_ARCFOUR
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_BLOWFISH
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_CAMELLIA
|
||||
|
||||
/* define if capabilities should be used */
|
||||
#undef USE_CAPABILITIES
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_CAST5
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_CRC
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_DES
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_DSA
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_ECC
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_ELGAMAL
|
||||
|
||||
/* Defined if the GNU Portable Thread Library should be used */
|
||||
#undef USE_GNU_PTH
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_MD4
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_MD5
|
||||
|
||||
/* set this to limit filenames to the 8.3 format */
|
||||
#undef USE_ONLY_8DOT3
|
||||
|
||||
/* Define to support the experimental random daemon */
|
||||
#undef USE_RANDOM_DAEMON
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_RFC2268
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_RMD160
|
||||
|
||||
/* Defined if the EGD based RNG should be used. */
|
||||
#undef USE_RNDEGD
|
||||
|
||||
/* Defined if the /dev/random RNG should be used. */
|
||||
#undef USE_RNDLINUX
|
||||
|
||||
/* Defined if the default Unix RNG should be used. */
|
||||
#undef USE_RNDUNIX
|
||||
|
||||
/* Defined if the Windows specific RNG should be used. */
|
||||
#undef USE_RNDW32
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_RSA
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_SEED
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_SERPENT
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_SHA1
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_SHA256
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_SHA512
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_TIGER
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_TWOFISH
|
||||
|
||||
/* Defined if this module should be included */
|
||||
#undef USE_WHIRLPOOL
|
||||
|
||||
/* Version of this package */
|
||||
#undef VERSION
|
||||
|
||||
/* Defined if compiled symbols have a leading underscore */
|
||||
#undef WITH_SYMBOL_UNDERSCORE
|
||||
|
||||
/* Define to 1 if your processor stores words with the most significant byte
|
||||
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
#undef WORDS_BIGENDIAN
|
||||
|
||||
/* To allow the use of Libgcrypt in multithreaded programs we have to use
|
||||
special features from the library. */
|
||||
#ifndef _REENTRANT
|
||||
# define _REENTRANT 1
|
||||
#endif
|
||||
|
||||
|
||||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to `__inline__' or `__inline' if that's what the C compiler
|
||||
calls it, or to nothing if 'inline' is not supported under any name. */
|
||||
#ifndef __cplusplus
|
||||
#undef inline
|
||||
#endif
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
||||
|
||||
/* type to use in place of socklen_t if not defined */
|
||||
#undef socklen_t
|
||||
|
||||
/* Define to the type of an unsigned integer type wide enough to hold a
|
||||
pointer, if such a type exists, and if the system does not define it. */
|
||||
#undef uintptr_t
|
||||
|
||||
|
||||
#define _GCRYPT_IN_LIBGCRYPT 1
|
||||
|
||||
/* If the configure check for endianness has been disabled, get it from
|
||||
OS macros. This is intended for making fat binary builds on OS X. */
|
||||
#ifdef DISABLED_ENDIAN_CHECK
|
||||
# if defined(__BIG_ENDIAN__)
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# elif defined(__LITTLE_ENDIAN__)
|
||||
# undef WORDS_BIGENDIAN
|
||||
# else
|
||||
# error "No endianness found"
|
||||
# endif
|
||||
#endif /*DISABLED_ENDIAN_CHECK*/
|
||||
|
||||
/* We basically use the original Camellia source. Make sure the symbols
|
||||
properly prefixed. */
|
||||
#define CAMELLIA_EXT_SYM_PREFIX _gcry_
|
||||
|
||||
/* This error code is only available with gpg-error 1.7. Thus
|
||||
we define it here with the usual gcry prefix. */
|
||||
#define GCRY_GPG_ERR_NOT_OPERATIONAL 176
|
||||
|
||||
|
||||
#endif /*_GCRYPT_CONFIG_H_INCLUDED*/
|
||||
|
||||
1630
jni/libgcrypt/config.sub
vendored
Executable file
1630
jni/libgcrypt/config.sub
vendored
Executable file
File diff suppressed because it is too large
Load Diff
29910
jni/libgcrypt/configure
vendored
Executable file
29910
jni/libgcrypt/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
1164
jni/libgcrypt/configure.ac
Normal file
1164
jni/libgcrypt/configure.ac
Normal file
File diff suppressed because it is too large
Load Diff
584
jni/libgcrypt/depcomp
Executable file
584
jni/libgcrypt/depcomp
Executable file
@@ -0,0 +1,584 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2006-10-15.18
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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 as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputing dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
||||
## the command line argument order; so add the flags where they
|
||||
## appear in depend2.am. Note that the slowdown incurred here
|
||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
||||
*) set fnord "$@" "$arg" ;;
|
||||
esac
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
done
|
||||
"$@"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> $depfile
|
||||
echo >> $depfile
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> $depfile
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test -f "$tmpdepfile"; then :
|
||||
else
|
||||
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||
tmpdepfile="$stripped.u"
|
||||
fi
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
outname="$stripped.o"
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp2)
|
||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
||||
# compilers, which have integrated preprocessors. The correct option
|
||||
# to use with these is +Maked; it writes dependencies to a file named
|
||||
# 'foo.d', which lands next to the object file, wherever that
|
||||
# happens to be.
|
||||
# Much of this is similar to the tru64 case; see comments there.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
if test "$libtool" = yes; then
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir.libs/$base.d
|
||||
"$@" -Wc,+Maked
|
||||
else
|
||||
tmpdepfile1=$dir$base.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
"$@" +Maked
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||
# Add `dependent.h:' lines.
|
||||
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# With Tru64 cc, shared objects can also be used to make a
|
||||
# static library. This mechanism is used in libtool 1.4 series to
|
||||
# handle both shared and static libraries in a single compilation.
|
||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||
#
|
||||
# With libtool 1.5 this exception was removed, and libtool now
|
||||
# generates 2 separate objects for the 2 libraries. These two
|
||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.o.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
tmpdepfile4=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
444
jni/libgcrypt/doc/ChangeLog
Normal file
444
jni/libgcrypt/doc/ChangeLog
Normal file
@@ -0,0 +1,444 @@
|
||||
2008-12-10 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Cryptographic Functions): Explain the domain
|
||||
parameter for key generation.
|
||||
|
||||
2008-12-05 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Updates for pubkey generation.
|
||||
|
||||
2008-10-20 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Error handler): Fix description of
|
||||
gcry_handler_no_mem_t. Reported by Patrick Strateman. desribe
|
||||
what what the error handler is expected to do. Fixes bug #961.
|
||||
|
||||
2008-09-18 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (FIPS Mode): Add state transition Error to Error.
|
||||
* fips-fsm.fig: Ditto.
|
||||
|
||||
2008-09-18 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Add a couple of index items.
|
||||
(FIPS Mode): Reflect recent changes.
|
||||
(Controlling the library): Describe gcry_fips_mode_active.
|
||||
|
||||
2008-09-16 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (FIPS Mode): Describe new transitions 18 and 19.
|
||||
* fips-fsm.fig: Add new transitions.
|
||||
|
||||
2008-09-15 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Fold the two FIPS appendices into one.
|
||||
|
||||
2008-09-11 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Public-Key Subsystem Architecture): Explain RSA
|
||||
blinding.
|
||||
|
||||
2008-09-08 Marcus Brinkmann <marcus@g10code.com>
|
||||
|
||||
* gcrypt.texi: Some typos fixed.
|
||||
|
||||
2008-09-08 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Formatting cleanups.
|
||||
* lgpl.texi (Library Copying): Replace @appendix by @unnumbered.
|
||||
* gpl.texi (Copying): Ditto.
|
||||
|
||||
2008-08-27 Werner Koch <wk@g10code.com>
|
||||
|
||||
* Makefile.am (online): Take care of development versions.
|
||||
|
||||
2008-08-18 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Top): Remove the detailmenu.
|
||||
(Public Key Cryptographi (II)): Move into a section of the PK
|
||||
interface description.
|
||||
(Hashing): Move after the encryption chapters.
|
||||
|
||||
2008-08-15 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Controlling the library): Remove
|
||||
GCRYCTL_DUMP_CONFIG because it is not implemented.
|
||||
(Initializing the library): Describe initialization steps with
|
||||
regard to secure memory.
|
||||
|
||||
* gcrypt.texi (Working with cipher handles): Adjust for
|
||||
implementation changes of gcry_cipher_setkey, gcry_cipher_setiv and
|
||||
gcry_cipher_setctr.
|
||||
|
||||
2008-01-04 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Controlling the library): Add remark that the
|
||||
theoritical attack on a seed file is not feasible under Linux.
|
||||
|
||||
2007-12-11 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Various minor corrections as reported by Elie De
|
||||
Brauer more than a year ago.
|
||||
|
||||
2007-06-15 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Controlling the library): Clarified the use of
|
||||
GCRYCTL_ENABLE_QUICK_RANDOM.
|
||||
|
||||
2007-04-30 Werner Koch <wk@g10code.com>
|
||||
|
||||
* HACKING: New. Two items by Marcus.
|
||||
* README.apichanges: Move from .. to here.
|
||||
* Makefile.am (EXTRA_DIST): Add new files.
|
||||
|
||||
2007-04-09 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gcrypt.texi: Fix some typos.
|
||||
|
||||
2006-11-05 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (General public-key related Functions): Typo.
|
||||
|
||||
2006-09-19 Werner Koch <wk@g10code.com>
|
||||
|
||||
* Makefile.am (online): New target.
|
||||
|
||||
2006-08-29 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi (Available ciphers): Add missing ciphers.
|
||||
|
||||
2006-03-10 Brad Hards <bradh@frogmouth.net> (wk, patch 2005-04-25)
|
||||
|
||||
* gcrypt.texi: Document SHA-224 and typo fixes.
|
||||
|
||||
2006-01-18 Brad Hards <bradh@frogmouth.net> (wk 2006-03-07)
|
||||
|
||||
* gcrypt.texi (Available cipher modes): Typo fix, add a little
|
||||
more detail on cipher modes vs cipher algorithms.
|
||||
|
||||
2006-01-08 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Added documentation for more gcry_control commands.
|
||||
|
||||
* gcrypt.texi: Fixed several typos; thanks to Tommi Vainikainen.
|
||||
|
||||
2005-12-16 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (MPI formats): Fix return types of functions:
|
||||
gcry_mpi_scan, gcry_mpi_print, gcry_mpi_aprint.
|
||||
|
||||
2005-11-26 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: New chapter: Prime numbers.
|
||||
|
||||
2005-11-12 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (MPI formats): Document that for gcry_mpi_scan and
|
||||
in the case of GCRYMPI_FMT_HEX, BUFLEN must be zero.
|
||||
|
||||
2005-10-31 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Added more gcry_control related descriptions.
|
||||
|
||||
2005-10-16 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Controlling the library): Start documenting the
|
||||
existing control commands.
|
||||
|
||||
2005-04-11 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Available hash algorithms): Add entry for Whirlpool.
|
||||
|
||||
2005-03-30 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Working with IO objects): Document ac io objects;
|
||||
adjust ac scheme functions, which do now use io objects.
|
||||
|
||||
2005-03-19 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Working with cipher handles): Clarify CTS mode.
|
||||
|
||||
2005-02-08 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Fixed direntry.
|
||||
|
||||
2005-02-13 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Using cryptographic functions): Document new
|
||||
encoding and scheme crypto functionality.
|
||||
|
||||
2005-02-03 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Fixed several typos; thanks to Michele Baldessari.
|
||||
|
||||
2005-01-04 Werner Koch <wk@g10code.com>
|
||||
|
||||
* gcrypt.texi: Updated to use @copying. Fixed list of copyright
|
||||
years; we had real changes in 2004. Fixed some formatting issues.
|
||||
|
||||
2004-08-24 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Miscellaneous): Document gcry_mpi_randomize.
|
||||
|
||||
2004-08-18 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Multi Threading): Document
|
||||
GCRY_THREAD_OPTION_PTH_IMPL, GCRY_THREAD_OPTION_PTHREAD_IMPL.
|
||||
|
||||
2004-05-07 Moritz Schulte <moritz@g10code.de>
|
||||
|
||||
* gcrypt.texi: Merged several fixes reported by Umberto Salsi.
|
||||
|
||||
2004-04-08 Moritz Schulte <moritz@g10code.de>
|
||||
|
||||
* gcrypt.texi (Multi Threading): Typo fix.
|
||||
|
||||
2004-03-11 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gcrypt.texi (Multi Threading): Partially document new thread
|
||||
support.
|
||||
|
||||
2004-02-24 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (Calculations): Typo fix.
|
||||
|
||||
2004-01-25 Moritz Schulte <mo@g10code.com>
|
||||
|
||||
* gcrypt.texi (General cipher functions): Fixed descriptions of
|
||||
the arguments for GCRYCTL_GET_KEYLEN, GCRYCTL_GET_BLKLEN; reported
|
||||
by Randy.
|
||||
|
||||
2004-01-14 Moritz Schulte <mo@g10code.com>
|
||||
|
||||
* gcrypt.texi (Public Key cryptography II): Adjusted to new
|
||||
gcry_ac_* API; document flags.
|
||||
|
||||
2003-12-04 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* Makefile.am (gcrypt_TEXINFOS): Removed fdl.texi.
|
||||
|
||||
2003-12-03 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi: Changed license from FDL to GPL because this is a
|
||||
reference manual only useful along with actual code.
|
||||
* fdl.texi: Removed.
|
||||
|
||||
* gcrypt.texi: Minor cleanups
|
||||
(Working with keys): Clarified generation of RSA's E parameter.
|
||||
(Multi Threading): Clarified.
|
||||
|
||||
2003-11-11 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (Working with S-expressions): Added "%b".
|
||||
|
||||
2003-11-04 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (Retrieving random numbers): Add gcry_create_nonce.
|
||||
|
||||
2003-08-30 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (Working with hash algorithms): Clarified that HMAC
|
||||
does not work with all algorithms.
|
||||
|
||||
2003-07-30 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Available asymmetric algorithms): Mention
|
||||
GCRY_AC_ELG_E.
|
||||
|
||||
2003-07-28 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Working with keys): Mention that gcry_pk_testkey
|
||||
and gcry_ac_key_test only verify private keys.
|
||||
(Working with keys): Fix typo.
|
||||
(General public-key related Functions): Fixed some sentences,
|
||||
thanks to Neil Spring.
|
||||
|
||||
2003-07-27 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi: Adjusted description of gcry_mpi_scan and
|
||||
gcry_mpi_dump. Add gcry_mpi_dump.
|
||||
|
||||
2003-07-22 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Added more documentation for the register
|
||||
mechanism.
|
||||
|
||||
2003-07-18 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (Misc): Add a warning on the use of opaque values.
|
||||
|
||||
2003-07-14 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Overview): Mention the non-thread-safe-nature of
|
||||
functions modifying context stored in handles.
|
||||
|
||||
2003-07-12 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Available ciphers): Added: TWOFISH128.
|
||||
(Error Handling): Merged a lot of documentation taken from GPGME.
|
||||
|
||||
2003-07-08 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Working with sets of data): Documented:
|
||||
gcry_ac_data_copy.
|
||||
|
||||
2003-07-07 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Documented module system.
|
||||
|
||||
2003-07-05 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Working with cipher handles): Small fix by Simon
|
||||
Josefsson <jas@extundo.com>.
|
||||
|
||||
2003-07-02 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Documented ac interface.
|
||||
|
||||
2003-06-18 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Small fixes.
|
||||
|
||||
2003-06-16 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* cipher-ref.sgml: Removed file.
|
||||
* digest-ref.sgml: Likewise.
|
||||
* misc-ref.sgml: Likewise.
|
||||
* pubkey-ref.sgml: Likewise.
|
||||
* reference.sgml: Likewise.
|
||||
* version.sgml.in: Likewise.
|
||||
|
||||
2003-06-15 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Documented several parts of the library, merged
|
||||
some documentation from GPGME's manual, re-structured the whole
|
||||
manual, added more menus.
|
||||
|
||||
2003-06-14 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Hash Functions): Adjusteded description of
|
||||
gcry_md_copy.
|
||||
|
||||
2003-06-12 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Public Key Functions): Fix example S-Exp, i.e.:
|
||||
added the number of following digits as prefix to the number of
|
||||
bits.
|
||||
(Public Key Functions): Document the general usage of `flags',
|
||||
including the no-blinding flag.
|
||||
|
||||
2003-06-11 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (Hash Functions): Document possible values of HD.
|
||||
|
||||
2003-06-09 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Version Check): Changed description of
|
||||
gcry_check_version; the user now *must* call the function to
|
||||
initialize the library.
|
||||
|
||||
2003-06-08 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi: Change for libgpg-error.
|
||||
|
||||
2003-05-22 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Public Key Functions): Fixed typo.
|
||||
|
||||
2003-05-17 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Public Key Functions): Mention that only the
|
||||
checking of secret keys is supported currently.
|
||||
|
||||
2003-03-30 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* gcrypt.texi: Add CTR.
|
||||
|
||||
2003-03-22 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* gcrypt.texi: Add CBC-MAC.
|
||||
|
||||
2003-03-04 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* gcrypt.texi (Cipher Functions): Added gcry_cipher_reset.
|
||||
|
||||
2003-01-23 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi (gcry_pk_decrypt): Described use of FLAGS
|
||||
|
||||
2003-01-20 Simon Josefsson <jas@extundo.com>
|
||||
|
||||
* gcrypt.texi (Hash Functions): Add CRC.
|
||||
|
||||
2003-01-19 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi: Most functions are now documented. Still need to
|
||||
fine tune the menu structure, document some utility functions,
|
||||
mark up indices and references and add examples.
|
||||
|
||||
2002-08-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* gcrypt.texi: Typo fixes.
|
||||
|
||||
2002-05-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* lgpl.texi: New.
|
||||
* gcrypt.texi: Included lgpl and commented not yet converted text.
|
||||
|
||||
2002-04-16 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* version.sgml.in, cipher-ref.sgml, digest-ref.sgml, misc-ref.sgml
|
||||
* pubkey-ref.sgml, reference.sgml: Removed.
|
||||
* gcrypt.texi: New. Based on the old sgml version.
|
||||
* gpl.texi, fdl.texi: New.
|
||||
* Makefile.am: Adjusted for use with texinfo.
|
||||
|
||||
2000-12-21 Werner Koch <wk@gnupg.org>
|
||||
|
||||
Renamed the gcryptref.sgml files and removed the GnuPG stuff.
|
||||
|
||||
Tue Oct 26 14:10:21 CEST 1999 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* Makefile.am (SUBDIRS): Removed gph from this development series
|
||||
|
||||
Mon Sep 6 19:59:08 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* Makefile.am (SUBDIRS): New subdir gph for the manual.
|
||||
|
||||
Thu Jul 22 20:03:03 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* gpg.sgml (--always-trust): Added.
|
||||
|
||||
Wed Jul 14 19:42:08 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* Makefile.am: Create a dummy man page if docbook-to-man is missing.
|
||||
|
||||
Wed Jun 16 20:16:21 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* gpg1.pod: Removed.
|
||||
* gpg.sgml: New. Replaces the pod file
|
||||
* Makefile.am: Add rule to make a man file from sgml
|
||||
|
||||
Tue Jun 15 12:21:08 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* Makefile.in.in: Use DESTDIR.
|
||||
|
||||
Mon May 31 19:41:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* gpg.1pod: Enhanced the Bugs section (Michael).
|
||||
|
||||
Wed Feb 10 17:15:39 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* gpg.1pod: Spelling and grammar corrections (John A. Martin)
|
||||
* FAQ: Ditto.
|
||||
* DETAILS: Ditto.
|
||||
|
||||
Copyright 1999, 2000, 2002, 2003, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
66
jni/libgcrypt/doc/HACKING
Normal file
66
jni/libgcrypt/doc/HACKING
Normal file
@@ -0,0 +1,66 @@
|
||||
Various hacking notes -*- text -*-
|
||||
=======================
|
||||
|
||||
|
||||
Taking optimized MPI code out of GMP:
|
||||
-------------------------------------
|
||||
|
||||
I generated the pentium4/* files by glueing the existing assembler
|
||||
prologues to the GMP 4.2.1 assembler files generated with the m4
|
||||
tool in GMP's build process, for example:
|
||||
|
||||
$ m4 -DHAVE_CONFIG_H -D__GMP_WITHIN_GMP -DOPERATION_rshift -DPIC \
|
||||
rshift.asm >tmp-rshift.s
|
||||
|
||||
Then tmp-rshift will contain the assembler instructions for the
|
||||
configured platform. Unfortunately, this way the comments are lost.
|
||||
For most files I re-inserted some of the comments, but this is
|
||||
tedious work.
|
||||
|
||||
|
||||
Debugging math stuff:
|
||||
---------------------
|
||||
|
||||
While debugging the ECC code in libgcrypt, I was in need for some
|
||||
computer algebra system which would allow me to verify the numbers
|
||||
in the debugging easily. I found that PARI (pari-gp package in
|
||||
Debian) has support for elliptic curves. The below commands shows
|
||||
how they are set up and used with an example.
|
||||
|
||||
===8<========
|
||||
hextodec(s)=local(v=Vec(s),a=10,b=11,c=12,d=13,e=14,f=15,A=10,B=11,C=12,D=13,E=14,F=15,h);if(#setunion(Set(v),Vec("0123456789ABCDEFabcdef"))>22,error);for(i=1,#v,h=shift(h,4)+eval(v[i]));h
|
||||
|
||||
p = hextodec("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
|
||||
a = hextodec("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC")
|
||||
b = hextodec("51953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00")
|
||||
|
||||
/* Set up y^2 = x^3 + ax + b mod (p). */
|
||||
e = ellinit(Mod(1,p)*[0,0,0,a,b]);
|
||||
|
||||
gx = hextodec ("00C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66")
|
||||
gy = hextodec ("011839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650")
|
||||
g = Mod(1,p)*[gx,gy]
|
||||
|
||||
n = hextodec ("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409")
|
||||
|
||||
/* Verify that G is on the curve, and that n is the order. */
|
||||
ellisoncurve (e,g)
|
||||
isprime (n)
|
||||
ellpow (e,g,n)
|
||||
|
||||
d = hextodec ("018F9573F25059571BDF614529953DE2540497CEDABD04F3AF78813BED7BB163A2FD919EECF822848FCA39EF55E500F8CE861C7D53D371857F7774B79428E887F81B")
|
||||
|
||||
qx = hextodec ("00316AAAD3E905875938F588BD9E8A4785EF9BDB76D62A83A5340F82CB8E800B25619F5C3EA02B7A4FA43D7497C7702F7DFBEAC8E8F92C3CAABD9F84182FDA391B3B")
|
||||
/* Note: WRONG! (It is apparent that this is the same as X shifted by
|
||||
8 bit). */
|
||||
qy = hextodec ("0000316AAAD3E905875938F588BD9E8A4785EF9BDB76D62A83A5340F82CB8E800B25619F5C3EA02B7A4FA43D7497C7702F7DFBEAC8E8F92C3CAABD9F84182FDA391B")
|
||||
q = Mod(1,p)*[qx,qy]
|
||||
|
||||
/* Calculate what Q should be given d. */
|
||||
ellpow (e,g,d)
|
||||
|
||||
/* This is not 0 and thus shows that libgcrypt gave Q and d that do
|
||||
not match. */
|
||||
ellpow (e,g,d) - q
|
||||
====8<=====================
|
||||
|
||||
71
jni/libgcrypt/doc/Makefile.am
Normal file
71
jni/libgcrypt/doc/Makefile.am
Normal file
@@ -0,0 +1,71 @@
|
||||
## Process this file with automake to create Makefile.in
|
||||
# Copyright (C) 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
|
||||
|
||||
EXTRA_DIST = README.apichanges HACKING \
|
||||
libgcrypt-modules.eps fips-fsm.eps \
|
||||
libgcrypt-modules.png fips-fsm.png \
|
||||
libgcrypt-modules.pdf fips-fsm.pdf
|
||||
|
||||
DISTCLEANFILES = gcrypt.cps
|
||||
|
||||
BUILT_SOURCES = libgcrypt-modules.eps fips-fsm.eps \
|
||||
libgcrypt-modules.png fips-fsm.png \
|
||||
libgcrypt-modules.pdf fips-fsm.pdf
|
||||
|
||||
info_TEXINFOS = gcrypt.texi
|
||||
gcrypt_TEXINFOS = lgpl.texi gpl.texi libgcrypt-modules.fig fips-fsm.fig
|
||||
|
||||
|
||||
.fig.png:
|
||||
fig2dev -L png `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
.fig.jpg:
|
||||
fig2dev -L jpg `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
.fig.eps:
|
||||
fig2dev -L eps `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
.fig.pdf:
|
||||
fig2dev -L pdf `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
|
||||
# Make sure that gcrypt.texi is touched if any other source file has
|
||||
# been modified. This is required so that the version.texi magic
|
||||
# updates the release date.
|
||||
gnupg.texi : $(gcrypt_TEXINFOS)
|
||||
touch $(srcdir)/gcrypt.texi
|
||||
|
||||
online: gcrypt.html gcrypt.pdf gcrypt.info
|
||||
set -e; \
|
||||
echo "Uploading current manuals to www.gnupg.org ..."; \
|
||||
cp libgcrypt-modules.png gcrypt.html/; \
|
||||
cp fips-fsm.png gcrypt.html/; \
|
||||
user=werner ; dashdevel="" ; \
|
||||
if echo "@PACKAGE_VERSION@" | grep -- "-svn" >/dev/null; then \
|
||||
dashdevel="-devel" ; \
|
||||
cp gcrypt.pdf gcrypt.html/; \
|
||||
cp gcrypt.info gcrypt.html/; \
|
||||
else \
|
||||
rsync -v gcrypt.pdf gcrypt.info \
|
||||
$${user}@trithemius.gnupg.org:webspace/manuals/ ; \
|
||||
fi ; \
|
||||
cd gcrypt.html ; \
|
||||
rsync -vr --exclude='.svn' . \
|
||||
$${user}@trithemius.gnupg.org:webspace/manuals/gcrypt$${dashdevel}/
|
||||
|
||||
697
jni/libgcrypt/doc/Makefile.in
Normal file
697
jni/libgcrypt/doc/Makefile.in
Normal file
@@ -0,0 +1,697 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (C) 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
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = $(gcrypt_TEXINFOS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/stamp-vti \
|
||||
$(srcdir)/version.texi ChangeLog mdate-sh texinfo.tex
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/noexecstack.m4 $(top_srcdir)/m4/onceonly.m4 \
|
||||
$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
INFO_DEPS = $(srcdir)/gcrypt.info
|
||||
am__TEXINFO_TEX_DIR = $(srcdir)
|
||||
DVIS = gcrypt.dvi
|
||||
PDFS = gcrypt.pdf
|
||||
PSS = gcrypt.ps
|
||||
HTMLS = gcrypt.html
|
||||
TEXINFOS = gcrypt.texi
|
||||
TEXI2DVI = texi2dvi
|
||||
TEXI2PDF = $(TEXI2DVI) --pdf --batch
|
||||
MAKEINFOHTML = $(MAKEINFO) --html
|
||||
AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
|
||||
DVIPS = dvips
|
||||
am__installdirs = "$(DESTDIR)$(infodir)"
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_FILEVERSION = @BUILD_FILEVERSION@
|
||||
BUILD_REVISION = @BUILD_REVISION@
|
||||
BUILD_TIMESTAMP = @BUILD_TIMESTAMP@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DL_LIBS = @DL_LIBS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FALLBACK_SOCKLEN_T = @FALLBACK_SOCKLEN_T@
|
||||
FFLAGS = @FFLAGS@
|
||||
GCRYPT_CIPHERS = @GCRYPT_CIPHERS@
|
||||
GCRYPT_DIGESTS = @GCRYPT_DIGESTS@
|
||||
GCRYPT_PUBKEY_CIPHERS = @GCRYPT_PUBKEY_CIPHERS@
|
||||
GCRYPT_RANDOM = @GCRYPT_RANDOM@
|
||||
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
|
||||
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
|
||||
GPG_ERROR_LIBS = @GPG_ERROR_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBGCRYPT_CIPHERS = @LIBGCRYPT_CIPHERS@
|
||||
LIBGCRYPT_CONFIG_API_VERSION = @LIBGCRYPT_CONFIG_API_VERSION@
|
||||
LIBGCRYPT_CONFIG_CFLAGS = @LIBGCRYPT_CONFIG_CFLAGS@
|
||||
LIBGCRYPT_CONFIG_LIBS = @LIBGCRYPT_CONFIG_LIBS@
|
||||
LIBGCRYPT_DIGESTS = @LIBGCRYPT_DIGESTS@
|
||||
LIBGCRYPT_LT_AGE = @LIBGCRYPT_LT_AGE@
|
||||
LIBGCRYPT_LT_CURRENT = @LIBGCRYPT_LT_CURRENT@
|
||||
LIBGCRYPT_LT_REVISION = @LIBGCRYPT_LT_REVISION@
|
||||
LIBGCRYPT_PUBKEY_CIPHERS = @LIBGCRYPT_PUBKEY_CIPHERS@
|
||||
LIBGCRYPT_THREAD_MODULES = @LIBGCRYPT_THREAD_MODULES@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MPI_SFLAGS = @MPI_SFLAGS@
|
||||
NOEXECSTACK_FLAGS = @NOEXECSTACK_FLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PTH_CFLAGS = @PTH_CFLAGS@
|
||||
PTH_CONFIG = @PTH_CONFIG@
|
||||
PTH_LIBS = @PTH_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
RC = @RC@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = README.apichanges HACKING \
|
||||
libgcrypt-modules.eps fips-fsm.eps \
|
||||
libgcrypt-modules.png fips-fsm.png \
|
||||
libgcrypt-modules.pdf fips-fsm.pdf
|
||||
|
||||
DISTCLEANFILES = gcrypt.cps
|
||||
BUILT_SOURCES = libgcrypt-modules.eps fips-fsm.eps \
|
||||
libgcrypt-modules.png fips-fsm.png \
|
||||
libgcrypt-modules.pdf fips-fsm.pdf
|
||||
|
||||
info_TEXINFOS = gcrypt.texi
|
||||
gcrypt_TEXINFOS = lgpl.texi gpl.texi libgcrypt-modules.fig fips-fsm.fig
|
||||
all: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .dvi .eps .fig .html .info .jpg .pdf .png .ps .texi
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
.texi.info:
|
||||
restore=: && backupdir="$(am__leading_dot)am$$$$" && \
|
||||
am__cwd=`pwd` && cd $(srcdir) && \
|
||||
rm -rf $$backupdir && mkdir $$backupdir && \
|
||||
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
|
||||
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
|
||||
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
|
||||
done; \
|
||||
else :; fi && \
|
||||
cd "$$am__cwd"; \
|
||||
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $@ $<; \
|
||||
then \
|
||||
rc=0; \
|
||||
cd $(srcdir); \
|
||||
else \
|
||||
rc=$$?; \
|
||||
cd $(srcdir) && \
|
||||
$$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
|
||||
fi; \
|
||||
rm -rf $$backupdir; exit $$rc
|
||||
|
||||
.texi.dvi:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2DVI) $<
|
||||
|
||||
.texi.pdf:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
|
||||
$(TEXI2PDF) $<
|
||||
|
||||
.texi.html:
|
||||
rm -rf $(@:.html=.htp)
|
||||
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
|
||||
-o $(@:.html=.htp) $<; \
|
||||
then \
|
||||
rm -rf $@; \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \
|
||||
else \
|
||||
if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \
|
||||
rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \
|
||||
exit 1; \
|
||||
fi
|
||||
$(srcdir)/gcrypt.info: gcrypt.texi $(srcdir)/version.texi $(gcrypt_TEXINFOS)
|
||||
gcrypt.dvi: gcrypt.texi $(srcdir)/version.texi $(gcrypt_TEXINFOS)
|
||||
gcrypt.pdf: gcrypt.texi $(srcdir)/version.texi $(gcrypt_TEXINFOS)
|
||||
gcrypt.html: gcrypt.texi $(srcdir)/version.texi $(gcrypt_TEXINFOS)
|
||||
$(srcdir)/version.texi: @MAINTAINER_MODE_TRUE@ $(srcdir)/stamp-vti
|
||||
$(srcdir)/stamp-vti: gcrypt.texi $(top_srcdir)/configure
|
||||
@(dir=.; test -f ./gcrypt.texi || dir=$(srcdir); \
|
||||
set `$(SHELL) $(srcdir)/mdate-sh $$dir/gcrypt.texi`; \
|
||||
echo "@set UPDATED $$1 $$2 $$3"; \
|
||||
echo "@set UPDATED-MONTH $$2 $$3"; \
|
||||
echo "@set EDITION $(VERSION)"; \
|
||||
echo "@set VERSION $(VERSION)") > vti.tmp
|
||||
@cmp -s vti.tmp $(srcdir)/version.texi \
|
||||
|| (echo "Updating $(srcdir)/version.texi"; \
|
||||
cp vti.tmp $(srcdir)/version.texi)
|
||||
-@rm -f vti.tmp
|
||||
@cp $(srcdir)/version.texi $@
|
||||
|
||||
mostlyclean-vti:
|
||||
-rm -f vti.tmp
|
||||
|
||||
maintainer-clean-vti:
|
||||
@MAINTAINER_MODE_TRUE@ -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi
|
||||
.dvi.ps:
|
||||
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
|
||||
$(DVIPS) -o $@ $<
|
||||
|
||||
uninstall-dvi-am:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(DVIS)'; for p in $$list; do \
|
||||
f=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(dvidir)/$$f"; \
|
||||
done
|
||||
|
||||
uninstall-html-am:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(HTMLS)'; for p in $$list; do \
|
||||
f=$(am__strip_dir) \
|
||||
echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||
rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
|
||||
done
|
||||
|
||||
uninstall-info-am:
|
||||
@$(PRE_UNINSTALL)
|
||||
@if test -d '$(DESTDIR)$(infodir)' && \
|
||||
(install-info --version && \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||
install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||
done; \
|
||||
else :; fi
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
(if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
|
||||
echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
|
||||
rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
|
||||
else :; fi); \
|
||||
done
|
||||
|
||||
uninstall-pdf-am:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(PDFS)'; for p in $$list; do \
|
||||
f=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
|
||||
done
|
||||
|
||||
uninstall-ps-am:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(PSS)'; for p in $$list; do \
|
||||
f=$(am__strip_dir) \
|
||||
echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(psdir)/$$f"; \
|
||||
done
|
||||
|
||||
dist-info: $(INFO_DEPS)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for base in $$list; do \
|
||||
case $$base in \
|
||||
$(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
esac; \
|
||||
if test -f $$base; then d=.; else d=$(srcdir); fi; \
|
||||
base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
|
||||
if test -f $$file; then \
|
||||
relfile=`expr "$$file" : "$$d/\(.*\)"`; \
|
||||
test -f $(distdir)/$$relfile || \
|
||||
cp -p $$file $(distdir)/$$relfile; \
|
||||
else :; fi; \
|
||||
done; \
|
||||
done
|
||||
|
||||
mostlyclean-aminfo:
|
||||
-rm -rf gcrypt.aux gcrypt.cp gcrypt.cps gcrypt.fn gcrypt.fns gcrypt.ky \
|
||||
gcrypt.kys gcrypt.log gcrypt.pg gcrypt.tmp gcrypt.toc \
|
||||
gcrypt.tp gcrypt.vr gcrypt.vrs gcrypt.dvi gcrypt.pdf \
|
||||
gcrypt.ps gcrypt.html
|
||||
|
||||
maintainer-clean-aminfo:
|
||||
@list='$(INFO_DEPS)'; for i in $$list; do \
|
||||
i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
|
||||
rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-info
|
||||
check-am: all-am
|
||||
check: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) check-am
|
||||
all-am: Makefile $(INFO_DEPS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(infodir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: $(BUILT_SOURCES)
|
||||
$(MAKE) $(AM_MAKEFLAGS) install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am: $(DVIS)
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am: $(HTMLS)
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am: $(INFO_DEPS)
|
||||
|
||||
install-data-am: install-info-am
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am: $(DVIS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)"
|
||||
@list='$(DVIS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
|
||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
|
||||
done
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am: $(HTMLS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
|
||||
@list='$(HTMLS)'; for p in $$list; do \
|
||||
if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
if test -d "$$d$$p"; then \
|
||||
echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||
$(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
|
||||
echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||
$(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \
|
||||
else \
|
||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
|
||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
|
||||
fi; \
|
||||
done
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am: $(INFO_DEPS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)"
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
esac; \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
|
||||
for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
|
||||
$$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
|
||||
if test -f $$ifile; then \
|
||||
relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
|
||||
echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
|
||||
$(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
|
||||
else : ; fi; \
|
||||
done; \
|
||||
done
|
||||
@$(POST_INSTALL)
|
||||
@if (install-info --version && \
|
||||
install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
|
||||
list='$(INFO_DEPS)'; \
|
||||
for file in $$list; do \
|
||||
relfile=`echo "$$file" | sed 's|^.*/||'`; \
|
||||
echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
|
||||
install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
|
||||
done; \
|
||||
else : ; fi
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am: $(PDFS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)"
|
||||
@list='$(PDFS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
|
||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
|
||||
done
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am: $(PSS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
|
||||
@list='$(PSS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \
|
||||
$(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \
|
||||
done
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
|
||||
mostlyclean-libtool mostlyclean-vti
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am: $(PDFS)
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am: $(PSS)
|
||||
|
||||
uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
|
||||
uninstall-pdf-am uninstall-ps-am
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
dist-info distclean distclean-generic distclean-libtool \
|
||||
distdir dvi dvi-am html html-am info info-am install \
|
||||
install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-aminfo \
|
||||
maintainer-clean-generic maintainer-clean-vti mostlyclean \
|
||||
mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool \
|
||||
mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-dvi-am uninstall-html-am uninstall-info-am \
|
||||
uninstall-pdf-am uninstall-ps-am
|
||||
|
||||
|
||||
.fig.png:
|
||||
fig2dev -L png `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
.fig.jpg:
|
||||
fig2dev -L jpg `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
.fig.eps:
|
||||
fig2dev -L eps `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
.fig.pdf:
|
||||
fig2dev -L pdf `test -f '$<' || echo '$(srcdir)/'`$< $@
|
||||
|
||||
# Make sure that gcrypt.texi is touched if any other source file has
|
||||
# been modified. This is required so that the version.texi magic
|
||||
# updates the release date.
|
||||
gnupg.texi : $(gcrypt_TEXINFOS)
|
||||
touch $(srcdir)/gcrypt.texi
|
||||
|
||||
online: gcrypt.html gcrypt.pdf gcrypt.info
|
||||
set -e; \
|
||||
echo "Uploading current manuals to www.gnupg.org ..."; \
|
||||
cp libgcrypt-modules.png gcrypt.html/; \
|
||||
cp fips-fsm.png gcrypt.html/; \
|
||||
user=werner ; dashdevel="" ; \
|
||||
if echo "@PACKAGE_VERSION@" | grep -- "-svn" >/dev/null; then \
|
||||
dashdevel="-devel" ; \
|
||||
cp gcrypt.pdf gcrypt.html/; \
|
||||
cp gcrypt.info gcrypt.html/; \
|
||||
else \
|
||||
rsync -v gcrypt.pdf gcrypt.info \
|
||||
$${user}@trithemius.gnupg.org:webspace/manuals/ ; \
|
||||
fi ; \
|
||||
cd gcrypt.html ; \
|
||||
rsync -vr --exclude='.svn' . \
|
||||
$${user}@trithemius.gnupg.org:webspace/manuals/gcrypt$${dashdevel}/
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
115
jni/libgcrypt/doc/README.apichanges
Normal file
115
jni/libgcrypt/doc/README.apichanges
Normal file
@@ -0,0 +1,115 @@
|
||||
README.apichanges 2003-07-28
|
||||
|
||||
NOTE: THESE ARE API CHANGES DONE BEFORE THE FIRST STABLE RELEASE SO
|
||||
THEY ARE NOT RELEVANT ANYMORE [stable is 1.2.4 right now]
|
||||
|
||||
We decided to change a couple of annoying things in Libgcrypt and to
|
||||
cleanup the API. The new API better fits into a multi-threaded
|
||||
environment and is more consistent. One import change is that all
|
||||
functions return error codes from a set of error codes shared between
|
||||
GnuPG, GPGME and Libgcrypt.
|
||||
|
||||
This file contains some hints on how to port your application from
|
||||
libgcrypt <= 1.1.12 to the current API as of 1.1.42. We hope that
|
||||
there won't be another need for such a major change.
|
||||
|
||||
|
||||
* Types
|
||||
|
||||
All types definitions changed to a foo_t scheme; for some time we
|
||||
will support the old names but you better start to rename them:
|
||||
|
||||
s/GCRY_MPI/gcry_mpi_t/
|
||||
s/GcryMPI/gcry_mpi_t/
|
||||
s/GCRY_SEXP/gcry_sexp_t/
|
||||
s/GcrySexp/gcry_sexp_t/
|
||||
s/GCRY_CIPHER_HD/gcry_cipher_hd_t/
|
||||
s/GcryCipherHd/gcry_cipher_hd_t/
|
||||
s/GCRY_MD_HD/gcry_md_hd_t/
|
||||
s/GcryMDHd/gcry_md_hd_t/
|
||||
|
||||
* Initialization
|
||||
|
||||
For proper initialization of the library, you must call
|
||||
gcry_check_version() before calling any other function except for
|
||||
these gcry_control operations:
|
||||
GCRYCTL_SUSPEND_SECMEM_WARN
|
||||
GCRYCTL_DISABLE_INTERNAL_LOCKING
|
||||
GCRYCTL_ANY_INITIALIZATION_P
|
||||
GCRYCTL_INITIALIZATION_FINISHED_P
|
||||
|
||||
|
||||
* Handles
|
||||
|
||||
gcry_cipher_open and gcry_md_open do now return an error code
|
||||
instead of a NULL handle; the handle is now returned by
|
||||
asigning it to the first argument. Example on how to change your
|
||||
code:
|
||||
|
||||
Old:
|
||||
|
||||
hd = gcry_md_open (algo, flags);
|
||||
if (!hd)
|
||||
{
|
||||
fprintf (stderr, "md_open failed: %s\n", gcry_errno (-1));
|
||||
....
|
||||
|
||||
New:
|
||||
|
||||
rc = gcry_md_open (&hd, algo, flags);
|
||||
if (rc)
|
||||
{
|
||||
fprintf (stderr, "md_open failed: %s\n", gcry_strerror (rc));
|
||||
....
|
||||
|
||||
If you are not interested in the error code, you can do it in a
|
||||
simplified way:
|
||||
|
||||
gcry_md_open (&hd, algo, flags);
|
||||
if (!hd)
|
||||
abort ();
|
||||
|
||||
i.e. the function makes sure that HD points to NULL in case of an error.
|
||||
The required change for gcry_cipher_open is similar.
|
||||
|
||||
* Message Digests
|
||||
|
||||
The order of the arguments to gcry_md_copy has been changed in order
|
||||
to be more consistent with other functions of this type. This means
|
||||
that the new message digest handle will be a copy of the message
|
||||
handle specified by the second argument and stored at the address
|
||||
pointed to by the first argument.
|
||||
|
||||
* Error codes
|
||||
|
||||
gcry_errno () has been removed because it is hard to use in
|
||||
multi-threaded environment. You need to save the error code
|
||||
returned by the functions and use it either numerical or passing it
|
||||
to gcry_strerror (since gcry_strerror is a wrapper function for
|
||||
gpg_strerror, the latter function can also be used).
|
||||
|
||||
Instead of using the error codes GCRYERR_*, you have to use the
|
||||
GPG_ERR_* names.
|
||||
|
||||
* S-expressions
|
||||
|
||||
gcry_sexp_canon_len used to return a `historical' error code in
|
||||
`errcode', this is not the case anymore; the value returned in
|
||||
`errcode' is now a standard Libgcrypt (i.e. gpg-error) error code.
|
||||
|
||||
* MPI
|
||||
|
||||
gcry_mpi_scan and gcry_mpi_print need the size of a provided buffer
|
||||
as input and return the number of bytes actually scanned/printed to
|
||||
the user. The old API used a single size_t Pointer for both tasks,
|
||||
the new API distinguishes between the input and the output values.
|
||||
|
||||
* Public Key cryptography
|
||||
|
||||
gcry_pk_decrypt used to return a `simple S-expression part' that
|
||||
contains a single MPI value. In case the `data' S-expression
|
||||
contains a `flags' element, the result S-expression is filled with a
|
||||
complete S-expression of the following format:
|
||||
|
||||
(value PLAINTEXT)
|
||||
|
||||
580
jni/libgcrypt/doc/fips-fsm.eps
Normal file
580
jni/libgcrypt/doc/fips-fsm.eps
Normal file
@@ -0,0 +1,580 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: fips-fsm.fig
|
||||
%%Creator: fig2dev Version 3.2 Patchlevel 4
|
||||
%%CreationDate: Thu Sep 18 19:08:29 2008
|
||||
%%For: wk@vigenere (Werner Koch,,,)
|
||||
%%BoundingBox: 0 0 497 579
|
||||
%%Magnification: 1.0000
|
||||
%%EndComments
|
||||
/$F2psDict 200 dict def
|
||||
$F2psDict begin
|
||||
$F2psDict /mtrx matrix put
|
||||
/col-1 {0 setgray} bind def
|
||||
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||
/col32 {0.609 0.000 0.000 srgb} bind def
|
||||
/col33 {0.547 0.547 0.547 srgb} bind def
|
||||
/col34 {0.547 0.547 0.547 srgb} bind def
|
||||
/col35 {0.258 0.258 0.258 srgb} bind def
|
||||
/col36 {0.547 0.547 0.547 srgb} bind def
|
||||
/col37 {0.258 0.258 0.258 srgb} bind def
|
||||
/col38 {0.547 0.547 0.547 srgb} bind def
|
||||
/col39 {0.258 0.258 0.258 srgb} bind def
|
||||
/col40 {0.547 0.547 0.547 srgb} bind def
|
||||
/col41 {0.258 0.258 0.258 srgb} bind def
|
||||
/col42 {0.547 0.547 0.547 srgb} bind def
|
||||
/col43 {0.258 0.258 0.258 srgb} bind def
|
||||
|
||||
end
|
||||
save
|
||||
newpath 0 579 moveto 0 0 lineto 497 0 lineto 497 579 lineto closepath clip newpath
|
||||
-56.9 596.0 translate
|
||||
1 -1 scale
|
||||
|
||||
/cp {closepath} bind def
|
||||
/ef {eofill} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth} bind def
|
||||
/tr {translate} bind def
|
||||
/tnt {dup dup currentrgbcolor
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||
bind def
|
||||
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||
4 -2 roll mul srgb} bind def
|
||||
/reencdict 12 dict def /ReEncode { reencdict begin
|
||||
/newcodesandnames exch def /newfontname exch def /basefontname exch def
|
||||
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
|
||||
basefontdict { exch dup /FID ne { dup /Encoding eq
|
||||
{ exch dup length array copy newfont 3 1 roll put }
|
||||
{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
|
||||
newfont /FontName newfontname put newcodesandnames aload pop
|
||||
128 1 255 { newfont /Encoding get exch /.notdef put } for
|
||||
newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
|
||||
newfontname newfont definefont pop end } def
|
||||
/isovec [
|
||||
8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
|
||||
8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
|
||||
8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
|
||||
8#220 /dotlessi 8#230 /oe 8#231 /OE
|
||||
8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
|
||||
8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
|
||||
8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
|
||||
8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
|
||||
8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
|
||||
8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
|
||||
8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
|
||||
8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
|
||||
8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
|
||||
8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
|
||||
8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
|
||||
8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
|
||||
8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
|
||||
8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
|
||||
8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
|
||||
8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
|
||||
8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
|
||||
8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
|
||||
8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
|
||||
8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
|
||||
8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
|
||||
8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
|
||||
/Courier-Oblique /Courier-Oblique-iso isovec ReEncode
|
||||
/Times-Roman /Times-Roman-iso isovec ReEncode
|
||||
/DrawEllipse {
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def
|
||||
/savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc 0 0 1 startangle endangle arc
|
||||
closepath
|
||||
savematrix setmatrix
|
||||
} def
|
||||
|
||||
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||
/$F2psEnd {$F2psEnteredState restore end} def
|
||||
|
||||
$F2psBegin
|
||||
10 setmiterlimit
|
||||
0 slj 0 slc
|
||||
0.06299 0.06299 sc
|
||||
%
|
||||
% Fig objects follow
|
||||
%
|
||||
%
|
||||
% here starts figure with depth 50
|
||||
% Ellipse
|
||||
7.500 slw
|
||||
n 3238 1735 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
3157 1805 m
|
||||
gs 1 -1 sc (1) col0 sh gr
|
||||
% Ellipse
|
||||
n 2408 3749 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
2327 3819 m
|
||||
gs 1 -1 sc (2) col0 sh gr
|
||||
% Ellipse
|
||||
n 1708 5809 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
1627 5879 m
|
||||
gs 1 -1 sc (3) col0 sh gr
|
||||
% Ellipse
|
||||
n 5848 1685 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
5767 1755 m
|
||||
gs 1 -1 sc (6) col0 sh gr
|
||||
% Ellipse
|
||||
n 6128 7899 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
6047 7969 m
|
||||
gs 1 -1 sc (7) col0 sh gr
|
||||
% Ellipse
|
||||
n 7568 4889 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
7487 4959 m
|
||||
gs 1 -1 sc (8) col0 sh gr
|
||||
% Ellipse
|
||||
n 6008 3879 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
5882 3940 m
|
||||
gs 1 -1 sc (10) col0 sh gr
|
||||
% Ellipse
|
||||
n 5418 2659 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
5292 2720 m
|
||||
gs 1 -1 sc (11) col0 sh gr
|
||||
% Ellipse
|
||||
n 4268 3715 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
4142 3776 m
|
||||
gs 1 -1 sc (12) col0 sh gr
|
||||
% Ellipse
|
||||
n 3208 5865 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
3082 5926 m
|
||||
gs 1 -1 sc (13) col0 sh gr
|
||||
% Ellipse
|
||||
n 4178 6765 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
4052 6826 m
|
||||
gs 1 -1 sc (14) col0 sh gr
|
||||
% Ellipse
|
||||
n 4558 7355 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
4432 7416 m
|
||||
gs 1 -1 sc (15) col0 sh gr
|
||||
% Ellipse
|
||||
n 5208 7365 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
5127 7435 m
|
||||
gs 1 -1 sc (5) col0 sh gr
|
||||
% Ellipse
|
||||
n 3708 7715 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
3582 7776 m
|
||||
gs 1 -1 sc (16) col0 sh gr
|
||||
% Ellipse
|
||||
n 3038 7925 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
2957 7995 m
|
||||
gs 1 -1 sc (4) col0 sh gr
|
||||
% Ellipse
|
||||
n 6568 5895 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
6487 5965 m
|
||||
gs 1 -1 sc (9) col0 sh gr
|
||||
% Polyline
|
||||
n 3900 8370 m 3600 8370 3600 9150 300 arcto 4 {pop} repeat
|
||||
3600 9450 5670 9450 300 arcto 4 {pop} repeat
|
||||
5970 9450 5970 8670 300 arcto 4 {pop} repeat
|
||||
5970 8370 3900 8370 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
3870 9000 m
|
||||
gs 1 -1 sc (Operational) col0 sh gr
|
||||
% Polyline
|
||||
n 1215 4335 m 915 4335 915 5145 300 arcto 4 {pop} repeat
|
||||
915 5445 2640 5445 300 arcto 4 {pop} repeat
|
||||
2940 5445 2940 4635 300 arcto 4 {pop} repeat
|
||||
2940 4335 1215 4335 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
1620 4995 m
|
||||
gs 1 -1 sc (Init) col0 sh gr
|
||||
% Polyline
|
||||
n 1230 6345 m 930 6345 930 7155 300 arcto 4 {pop} repeat
|
||||
930 7455 2655 7455 300 arcto 4 {pop} repeat
|
||||
2955 7455 2955 6645 300 arcto 4 {pop} repeat
|
||||
2955 6345 1230 6345 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
1215 7020 m
|
||||
gs 1 -1 sc (Self-Test) col0 sh gr
|
||||
% Polyline
|
||||
n 7050 6360 m 6750 6360 6750 7170 300 arcto 4 {pop} repeat
|
||||
6750 7470 8475 7470 300 arcto 4 {pop} repeat
|
||||
8775 7470 8775 6660 300 arcto 4 {pop} repeat
|
||||
8775 6360 7050 6360 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
7335 7020 m
|
||||
gs 1 -1 sc (Error) col0 sh gr
|
||||
% Polyline
|
||||
n 4125 4335 m 3825 4335 3825 5145 300 arcto 4 {pop} repeat
|
||||
3825 5445 5550 5445 300 arcto 4 {pop} repeat
|
||||
5850 5445 5850 4635 300 arcto 4 {pop} repeat
|
||||
5850 4335 4125 4335 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
3915 4995 m
|
||||
gs 1 -1 sc (Fatal-Error) col0 sh gr
|
||||
% Polyline
|
||||
n 7050 2310 m 6750 2310 6750 3120 300 arcto 4 {pop} repeat
|
||||
6750 3420 8475 3420 300 arcto 4 {pop} repeat
|
||||
8775 3420 8775 2610 300 arcto 4 {pop} repeat
|
||||
8775 2310 7050 2310 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
6930 2970 m
|
||||
gs 1 -1 sc (Shutdown) col0 sh gr
|
||||
% Polyline
|
||||
n 2775 2295 m 2475 2295 2475 3105 300 arcto 4 {pop} repeat
|
||||
2475 3405 4200 3405 300 arcto 4 {pop} repeat
|
||||
4500 3405 4500 2595 300 arcto 4 {pop} repeat
|
||||
4500 2295 2775 2295 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
2655 2970 m
|
||||
gs 1 -1 sc (Power-On) col0 sh gr
|
||||
% Polyline
|
||||
n 2775 285 m 2475 285 2475 1095 300 arcto 4 {pop} repeat
|
||||
2475 1395 4200 1395 300 arcto 4 {pop} repeat
|
||||
4500 1395 4500 585 300 arcto 4 {pop} repeat
|
||||
4500 285 2775 285 300 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Times-Roman-iso ff 360.00 scf sf
|
||||
2565 945 m
|
||||
gs 1 -1 sc (Power-Off) col0 sh gr
|
||||
% Ellipse
|
||||
n 4192 6338 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
4066 6399 m
|
||||
gs 1 -1 sc (17) col0 sh gr
|
||||
% Ellipse
|
||||
n 3202 4507 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
3076 4568 m
|
||||
gs 1 -1 sc (19) col0 sh gr
|
||||
% Ellipse
|
||||
n 3181 5161 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
3055 5222 m
|
||||
gs 1 -1 sc (18) col0 sh gr
|
||||
% Ellipse
|
||||
n 7709 7996 142 142 0 360 DrawEllipse gs col0 s gr
|
||||
|
||||
/Courier-Oblique-iso ff 180.00 scf sf
|
||||
7612 8047 m
|
||||
gs 1 -1 sc (20) col0 sh gr
|
||||
% Arc
|
||||
15.000 slw
|
||||
1 slc
|
||||
gs clippath
|
||||
2899 6648 m 2920 6766 l 3203 6716 l 2957 6699 l 3182 6598 l cp
|
||||
eoclip
|
||||
n 4837.5 16740.0 10215.6 -79.2 -100.8 arcn
|
||||
gs col0 s gr
|
||||
gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 3182 6598 m 2957 6699 l 3203 6716 l 3182 6598 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Arc
|
||||
1 slc
|
||||
gs clippath
|
||||
2911 7184 m 2908 7304 l 3195 7313 l 2957 7246 l 3198 7193 l cp
|
||||
eoclip
|
||||
n 3026.1 8399.8 1159.2 -1.5 -95.0 arcn
|
||||
gs col0 s gr
|
||||
gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 3198 7193 m 2957 7246 l 3195 7313 l 3198 7193 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Arc
|
||||
1 slc
|
||||
gs clippath
|
||||
6757 6631 m 6772 6512 l 6487 6477 l 6718 6566 l 6472 6596 l cp
|
||||
eoclip
|
||||
n 7663.1 -2028.8 8647.1 123.6 96.1 arcn
|
||||
gs col0 s gr
|
||||
gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 6472 6596 m 6718 6566 l 6487 6477 l 6472 6596 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Arc
|
||||
1 slc
|
||||
gs clippath
|
||||
8336 7494 m 8241 7421 l 8066 7650 l 8260 7496 l 8162 7723 l cp
|
||||
eoclip
|
||||
n 7717.5 7211.2 619.2 155.3 24.7 arcn
|
||||
gs col0 s gr
|
||||
gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 8162 7723 m 8260 7496 l 8066 7650 l 8162 7723 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
3360 2310 m 3480 2310 l 3480 2023 l 3420 2263 l 3360 2023 l cp
|
||||
eoclip
|
||||
n 3420 1395 m
|
||||
3420 2295 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 3360 2023 m 3420 2263 l 3480 2023 l 3360 2023 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
4794 4378 m 4860 4278 l 4621 4118 l 4788 4302 l 4555 4218 l cp
|
||||
eoclip
|
||||
n 3465 3420 m
|
||||
4815 4320 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 4555 4218 m 4788 4302 l 4621 4118 l 4555 4218 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
1830 6360 m 1950 6360 l 1950 6073 l 1890 6313 l 1830 6073 l cp
|
||||
eoclip
|
||||
n 1890 5445 m
|
||||
1890 6345 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 1830 6073 m 1890 6313 l 1950 6073 l 1830 6073 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
3699 8465 m 3790 8386 l 3601 8170 l 3714 8391 l 3511 8249 l cp
|
||||
eoclip
|
||||
n 2835 7380 m
|
||||
3735 8415 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 3511 8249 m 3714 8391 l 3601 8170 l 3511 8249 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
4785 5475 m 4665 5475 l 4665 5762 l 4725 5522 l 4785 5762 l cp
|
||||
eoclip
|
||||
n 4725 8370 m
|
||||
4725 5490 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 4785 5762 m 4725 5522 l 4665 5762 l 4785 5762 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
7395 3432 m 7287 3380 l 7162 3639 l 7321 3449 l 7270 3691 l cp
|
||||
eoclip
|
||||
n 4950 8370 m
|
||||
7335 3420 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 7270 3691 m 7321 3449 l 7162 3639 l 7270 3691 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
6765 6990 m 6765 6870 l 6478 6870 l 6718 6930 l 6478 6990 l cp
|
||||
eoclip
|
||||
n 2925 6930 m
|
||||
6750 6930 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 6478 6990 m 6718 6930 l 6478 6870 l 6478 6990 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
3969 5384 m 3880 5303 l 3686 5515 l 3893 5379 l 3774 5596 l cp
|
||||
eoclip
|
||||
n 2880 6480 m
|
||||
3915 5355 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 3774 5596 m 3893 5379 l 3686 5515 l 3774 5596 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
6765 2895 m 6765 2775 l 6478 2775 l 6718 2835 l 6478 2895 l cp
|
||||
eoclip
|
||||
n 4500 2835 m
|
||||
6750 2835 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 6478 2895 m 6718 2835 l 6478 2775 l 6478 2895 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
7800 3405 m 7680 3405 l 7680 3692 l 7740 3452 l 7800 3692 l cp
|
||||
eoclip
|
||||
n 7740 6345 m
|
||||
7740 3420 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 7800 3692 m 7740 3452 l 7680 3692 l 7800 3692 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
1846 4276 m 1908 4379 l 2154 4229 l 1918 4303 l 2092 4127 l cp
|
||||
eoclip
|
||||
n 3375 3420 m
|
||||
1890 4320 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 2092 4127 m 1918 4303 l 2154 4229 l 2092 4127 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
6893 3361 m 6808 3276 l 6604 3480 l 6817 3353 l 6689 3565 l cp
|
||||
eoclip
|
||||
n 5760 4410 m
|
||||
6840 3330 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 6689 3565 m 6817 3353 l 6604 3480 l 6689 3565 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
4510 794 m 4461 903 l 4724 1020 l 4530 868 l 4773 910 l cp
|
||||
eoclip
|
||||
n 7740 2295 m
|
||||
4500 855 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 4773 910 m 4530 868 l 4724 1020 l 4773 910 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
5791 5301 m 5706 5386 l 5910 5590 l 5783 5378 l 5995 5505 l cp
|
||||
eoclip
|
||||
n 6840 6435 m
|
||||
5760 5355 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 5995 5505 m 5783 5378 l 5910 5590 l 5995 5505 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
6895 7408 m 6804 7329 l 6615 7545 l 6819 7404 l 6706 7624 l cp
|
||||
eoclip
|
||||
n 5895 8460 m
|
||||
6840 7380 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 6706 7624 m 6819 7404 l 6615 7545 l 6706 7624 l cp gs 0.00 setgray ef gr col0 s
|
||||
% Polyline
|
||||
1 slc
|
||||
gs clippath
|
||||
3840 4740 m 3840 4620 l 3553 4620 l 3793 4680 l 3553 4740 l cp
|
||||
eoclip
|
||||
n 2925 4680 m
|
||||
3825 4680 l gs col0 s gr gr
|
||||
|
||||
% arrowhead
|
||||
0 slc
|
||||
n 3553 4740 m 3793 4680 l 3553 4620 l 3553 4740 l cp gs 0.00 setgray ef gr col0 s
|
||||
% here ends figure;
|
||||
$F2psEnd
|
||||
rs
|
||||
showpage
|
||||
199
jni/libgcrypt/doc/fips-fsm.fig
Normal file
199
jni/libgcrypt/doc/fips-fsm.fig
Normal file
@@ -0,0 +1,199 @@
|
||||
#FIG 3.2
|
||||
Portrait
|
||||
Center
|
||||
Metric
|
||||
A4
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
0 32 #9c0000
|
||||
0 33 #8c8c8c
|
||||
0 34 #8c8c8c
|
||||
0 35 #424242
|
||||
0 36 #8c8c8c
|
||||
0 37 #424242
|
||||
0 38 #8c8c8c
|
||||
0 39 #424242
|
||||
0 40 #8c8c8c
|
||||
0 41 #424242
|
||||
0 42 #8c8c8c
|
||||
0 43 #424242
|
||||
6 900 270 8775 9450
|
||||
5 1 0 2 0 7 50 -1 -1 0.000 1 1 1 0 4837.500 16740.000 6750 6705 4725 6525 2925 6705
|
||||
1 1 2.00 120.00 240.00
|
||||
5 1 0 2 0 7 50 -1 -1 0.000 1 1 1 0 3026.138 8399.825 4185 8370 3870 7605 2925 7245
|
||||
1 1 2.00 120.00 240.00
|
||||
5 1 0 2 0 7 50 -1 -1 0.000 1 1 1 0 7663.125 -2028.750 2880 5175 4770 6120 6750 6570
|
||||
1 1 2.00 120.00 240.00
|
||||
5 1 0 2 0 7 50 -1 -1 0.000 1 1 1 0 7717.500 7211.250 7155 7470 7740 7830 8280 7470
|
||||
1 1 2.00 120.00 240.00
|
||||
6 3096 1593 3380 1877
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3238 1735 142 142 3238 1735 3103 1690
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 3157 1805 1\001
|
||||
-6
|
||||
6 2266 3607 2550 3891
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 2408 3749 142 142 2408 3749 2273 3704
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 2327 3819 2\001
|
||||
-6
|
||||
6 1566 5667 1850 5951
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 1708 5809 142 142 1708 5809 1573 5764
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 1627 5879 3\001
|
||||
-6
|
||||
6 5706 1543 5990 1827
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5848 1685 142 142 5848 1685 5713 1640
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 5767 1755 6\001
|
||||
-6
|
||||
6 5986 7757 6270 8041
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6128 7899 142 142 6128 7899 5993 7854
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 6047 7969 7\001
|
||||
-6
|
||||
6 7426 4747 7710 5031
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7568 4889 142 142 7568 4889 7433 4844
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 7487 4959 8\001
|
||||
-6
|
||||
6 5866 3737 6150 4021
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6008 3879 142 142 6008 3879 5873 3834
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 5882 3940 10\001
|
||||
-6
|
||||
6 5276 2517 5560 2801
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5418 2659 142 142 5418 2659 5283 2614
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 5292 2720 11\001
|
||||
-6
|
||||
6 4126 3573 4410 3857
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4268 3715 142 142 4268 3715 4133 3670
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 4142 3776 12\001
|
||||
-6
|
||||
6 3066 5723 3350 6007
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3208 5865 142 142 3208 5865 3073 5820
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 3082 5926 13\001
|
||||
-6
|
||||
6 4036 6623 4320 6907
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4178 6765 142 142 4178 6765 4043 6720
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 4052 6826 14\001
|
||||
-6
|
||||
6 4416 7213 4700 7497
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4558 7355 142 142 4558 7355 4423 7310
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 4432 7416 15\001
|
||||
-6
|
||||
6 5066 7223 5350 7507
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5208 7365 142 142 5208 7365 5073 7320
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 5127 7435 5\001
|
||||
-6
|
||||
6 3566 7573 3850 7857
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3708 7715 142 142 3708 7715 3573 7670
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 3582 7776 16\001
|
||||
-6
|
||||
6 2896 7783 3180 8067
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3038 7925 142 142 3038 7925 2903 7880
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 2957 7995 4\001
|
||||
-6
|
||||
6 6426 5753 6710 6037
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6568 5895 142 142 6568 5895 6433 5850
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 105 6487 5965 9\001
|
||||
-6
|
||||
6 3600 8370 5985 9450
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
5970 9450 3600 9450 3600 8370 5970 8370 5970 9450
|
||||
4 0 0 50 -1 0 24 0.0000 4 330 1725 3870 9000 Operational\001
|
||||
-6
|
||||
6 900 4320 2970 5445
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
2940 5445 915 5445 915 4335 2940 4335 2940 5445
|
||||
4 0 0 50 -1 0 24 0.0000 4 240 510 1620 4995 Init\001
|
||||
-6
|
||||
6 900 6345 2970 7470
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
2955 7455 930 7455 930 6345 2955 6345 2955 7455
|
||||
4 0 0 50 -1 0 24 0.0000 4 255 1335 1215 7020 Self-Test\001
|
||||
-6
|
||||
6 6750 6345 8775 7470
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
8775 7470 6750 7470 6750 6360 8775 6360 8775 7470
|
||||
4 0 0 50 -1 0 24 0.0000 4 240 765 7335 7020 Error\001
|
||||
-6
|
||||
6 3825 4320 5850 5445
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
5850 5445 3825 5445 3825 4335 5850 4335 5850 5445
|
||||
4 0 0 50 -1 0 24 0.0000 4 255 1620 3915 4995 Fatal-Error\001
|
||||
-6
|
||||
6 6750 2295 8775 3420
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
8775 3420 6750 3420 6750 2310 8775 2310 8775 3420
|
||||
4 0 0 50 -1 0 24 0.0000 4 240 1455 6930 2970 Shutdown\001
|
||||
-6
|
||||
6 2475 2295 4500 3420
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
4500 3405 2475 3405 2475 2295 4500 2295 4500 3405
|
||||
4 0 0 50 -1 0 24 0.0000 4 240 1470 2655 2970 Power-On\001
|
||||
-6
|
||||
6 2475 270 4500 1395
|
||||
2 4 0 1 0 7 50 -1 -1 0.000 0 0 20 0 0 5
|
||||
4500 1395 2475 1395 2475 285 4500 285 4500 1395
|
||||
4 0 0 50 -1 0 24 0.0000 4 240 1530 2565 945 Power-Off\001
|
||||
-6
|
||||
6 4050 6196 4334 6480
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4192 6338 142 142 4192 6338 4057 6293
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 4066 6399 17\001
|
||||
-6
|
||||
6 3053 4358 3351 4656
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3202 4507 142 142 3202 4507 3067 4462
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 3076 4568 19\001
|
||||
-6
|
||||
6 3032 5012 3330 5310
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 3181 5161 142 142 3181 5161 3046 5116
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 3055 5222 18\001
|
||||
-6
|
||||
6 7560 7847 7858 8145
|
||||
1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 7709 7996 142 142 7709 7996 7574 7951
|
||||
4 0 0 50 -1 13 12 0.0000 4 105 210 7612 8047 20\001
|
||||
-6
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
3420 1395 3420 2295
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
3465 3420 4815 4320
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
1890 5445 1890 6345
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
2835 7380 3735 8415
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
4725 8370 4725 5490
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
4950 8370 7335 3420
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
2925 6930 6750 6930
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
2880 6480 3915 5355
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
4500 2835 6750 2835
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
7740 6345 7740 3420
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
3375 3420 1890 4320
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
5760 4410 6840 3330
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
7740 2295 4500 855
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
6840 6435 5760 5355
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
5895 8460 6840 7380
|
||||
2 1 0 2 0 7 50 -1 -1 0.000 0 1 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
2925 4680 3825 4680
|
||||
-6
|
||||
BIN
jni/libgcrypt/doc/fips-fsm.pdf
Normal file
BIN
jni/libgcrypt/doc/fips-fsm.pdf
Normal file
Binary file not shown.
BIN
jni/libgcrypt/doc/fips-fsm.png
Normal file
BIN
jni/libgcrypt/doc/fips-fsm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
6814
jni/libgcrypt/doc/gcrypt.info
Normal file
6814
jni/libgcrypt/doc/gcrypt.info
Normal file
File diff suppressed because it is too large
Load Diff
5844
jni/libgcrypt/doc/gcrypt.texi
Normal file
5844
jni/libgcrypt/doc/gcrypt.texi
Normal file
File diff suppressed because it is too large
Load Diff
397
jni/libgcrypt/doc/gpl.texi
Normal file
397
jni/libgcrypt/doc/gpl.texi
Normal file
@@ -0,0 +1,397 @@
|
||||
@node Copying
|
||||
@unnumbered GNU General Public License
|
||||
|
||||
@cindex GPL, GNU General Public License
|
||||
@center Version 2, June 1991
|
||||
|
||||
@display
|
||||
Copyright @copyright{} 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.
|
||||
@end display
|
||||
|
||||
@heading 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.
|
||||
|
||||
@iftex
|
||||
@heading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
@end ifinfo
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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:
|
||||
|
||||
@enumerate a
|
||||
@item
|
||||
You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.)
|
||||
@end enumerate
|
||||
|
||||
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.
|
||||
|
||||
@item
|
||||
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:
|
||||
|
||||
@enumerate a
|
||||
@item
|
||||
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,
|
||||
|
||||
@item
|
||||
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,
|
||||
|
||||
@item
|
||||
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.)
|
||||
@end enumerate
|
||||
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@iftex
|
||||
@heading NO WARRANTY
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@center NO WARRANTY
|
||||
@end ifinfo
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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 enumerate
|
||||
|
||||
@iftex
|
||||
@heading END OF TERMS AND CONDITIONS
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@center END OF TERMS AND CONDITIONS
|
||||
@end ifinfo
|
||||
|
||||
@page
|
||||
@heading 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.
|
||||
|
||||
@smallexample
|
||||
@var{one line to give the program's name and an idea of what it does.}
|
||||
Copyright (C) 19@var{yy} @var{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.
|
||||
@end smallexample
|
||||
|
||||
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:
|
||||
|
||||
@smallexample
|
||||
Gnomovision version 69, Copyright (C) 19@var{yy} @var{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.
|
||||
@end smallexample
|
||||
|
||||
The hypothetical commands @samp{show w} and @samp{show c} should show
|
||||
the appropriate parts of the General Public License. Of course, the
|
||||
commands you use may be called something other than @samp{show w} and
|
||||
@samp{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:
|
||||
|
||||
@smallexample
|
||||
@group
|
||||
Yoyodyne, Inc., hereby disclaims all copyright
|
||||
interest in the program `Gnomovision'
|
||||
(which makes passes at compilers) written
|
||||
by James Hacker.
|
||||
|
||||
@var{signature of Ty Coon}, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
@end group
|
||||
@end smallexample
|
||||
|
||||
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.
|
||||
565
jni/libgcrypt/doc/lgpl.texi
Normal file
565
jni/libgcrypt/doc/lgpl.texi
Normal file
@@ -0,0 +1,565 @@
|
||||
@node Library Copying
|
||||
@unnumbered GNU Lesser General Public License
|
||||
|
||||
@cindex LGPL, GNU Lesser General Public License
|
||||
@center Version 2.1, February 1999
|
||||
|
||||
@display
|
||||
Copyright @copyright{} 1991, 1999 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.
|
||||
|
||||
[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.]
|
||||
@end display
|
||||
|
||||
@heading 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---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 @dfn{Lesser} General Public License because it
|
||||
does @emph{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.
|
||||
|
||||
@iftex
|
||||
@heading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@center GNU LESSER GENERAL PUBLIC LICENSE
|
||||
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
@end ifinfo
|
||||
|
||||
@enumerate 0
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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:
|
||||
|
||||
@enumerate a
|
||||
@item
|
||||
The modified work must itself be a software library.
|
||||
|
||||
@item
|
||||
You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
@item
|
||||
You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
@item
|
||||
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.)
|
||||
@end enumerate
|
||||
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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:
|
||||
|
||||
@enumerate a
|
||||
@item
|
||||
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.)
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
@end enumerate
|
||||
|
||||
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.
|
||||
|
||||
@item
|
||||
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:
|
||||
|
||||
@enumerate a
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
@end enumerate
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@iftex
|
||||
@heading NO WARRANTY
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@center NO WARRANTY
|
||||
@end ifinfo
|
||||
|
||||
@item
|
||||
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.
|
||||
|
||||
@item
|
||||
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 enumerate
|
||||
|
||||
@iftex
|
||||
@heading END OF TERMS AND CONDITIONS
|
||||
@end iftex
|
||||
@ifinfo
|
||||
@center END OF TERMS AND CONDITIONS
|
||||
@end ifinfo
|
||||
|
||||
@page
|
||||
@heading 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.
|
||||
|
||||
@smallexample
|
||||
@var{one line to give the library's name and an idea of what it does.}
|
||||
Copyright (C) @var{year} @var{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., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
|
||||
USA.
|
||||
@end smallexample
|
||||
|
||||
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:
|
||||
|
||||
@smallexample
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the library
|
||||
`Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
@var{signature of Ty Coon}, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
@end smallexample
|
||||
|
||||
That's all there is to it!
|
||||
349
jni/libgcrypt/doc/libgcrypt-modules.eps
Normal file
349
jni/libgcrypt/doc/libgcrypt-modules.eps
Normal file
@@ -0,0 +1,349 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: libgcrypt-modules.fig
|
||||
%%Creator: fig2dev Version 3.2 Patchlevel 4
|
||||
%%CreationDate: Tue Aug 19 17:49:04 2008
|
||||
%%For: wk@vigenere (Werner Koch,,,)
|
||||
%%BoundingBox: 0 0 488 300
|
||||
%%Magnification: 1.0000
|
||||
%%EndComments
|
||||
/$F2psDict 200 dict def
|
||||
$F2psDict begin
|
||||
$F2psDict /mtrx matrix put
|
||||
/col-1 {0 setgray} bind def
|
||||
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||
/col32 {0.555 0.555 0.555 srgb} bind def
|
||||
/col33 {0.254 0.270 0.254 srgb} bind def
|
||||
/col34 {0.750 0.750 0.750 srgb} bind def
|
||||
/col35 {0.500 0.500 0.500 srgb} bind def
|
||||
/col36 {0.387 0.387 0.387 srgb} bind def
|
||||
/col37 {0.801 0.801 0.801 srgb} bind def
|
||||
/col38 {0.422 0.422 0.422 srgb} bind def
|
||||
/col39 {0.773 0.715 0.590 srgb} bind def
|
||||
/col40 {0.934 0.969 0.996 srgb} bind def
|
||||
/col41 {0.859 0.793 0.648 srgb} bind def
|
||||
/col42 {0.250 0.250 0.250 srgb} bind def
|
||||
/col43 {0.875 0.875 0.875 srgb} bind def
|
||||
/col44 {0.555 0.559 0.555 srgb} bind def
|
||||
/col45 {0.664 0.664 0.664 srgb} bind def
|
||||
/col46 {0.332 0.332 0.332 srgb} bind def
|
||||
/col47 {0.840 0.840 0.840 srgb} bind def
|
||||
/col48 {0.680 0.680 0.680 srgb} bind def
|
||||
/col49 {0.742 0.742 0.742 srgb} bind def
|
||||
/col50 {0.316 0.316 0.316 srgb} bind def
|
||||
/col51 {0.902 0.887 0.902 srgb} bind def
|
||||
/col52 {0.000 0.000 0.285 srgb} bind def
|
||||
/col53 {0.473 0.473 0.473 srgb} bind def
|
||||
/col54 {0.188 0.203 0.188 srgb} bind def
|
||||
/col55 {0.254 0.254 0.254 srgb} bind def
|
||||
/col56 {0.777 0.711 0.586 srgb} bind def
|
||||
/col57 {0.863 0.613 0.574 srgb} bind def
|
||||
/col58 {0.941 0.922 0.875 srgb} bind def
|
||||
/col59 {0.762 0.762 0.762 srgb} bind def
|
||||
/col60 {0.883 0.781 0.656 srgb} bind def
|
||||
/col61 {0.879 0.879 0.879 srgb} bind def
|
||||
/col62 {0.820 0.820 0.820 srgb} bind def
|
||||
/col63 {0.926 0.926 0.926 srgb} bind def
|
||||
/col64 {0.852 0.477 0.102 srgb} bind def
|
||||
/col65 {0.941 0.891 0.102 srgb} bind def
|
||||
/col66 {0.531 0.488 0.758 srgb} bind def
|
||||
/col67 {0.836 0.836 0.836 srgb} bind def
|
||||
/col68 {0.547 0.547 0.645 srgb} bind def
|
||||
/col69 {0.289 0.289 0.289 srgb} bind def
|
||||
/col70 {0.547 0.418 0.418 srgb} bind def
|
||||
/col71 {0.352 0.352 0.352 srgb} bind def
|
||||
/col72 {0.715 0.605 0.449 srgb} bind def
|
||||
/col73 {0.254 0.574 0.996 srgb} bind def
|
||||
/col74 {0.746 0.438 0.230 srgb} bind def
|
||||
/col75 {0.855 0.465 0.000 srgb} bind def
|
||||
/col76 {0.852 0.719 0.000 srgb} bind def
|
||||
/col77 {0.000 0.391 0.000 srgb} bind def
|
||||
/col78 {0.352 0.418 0.230 srgb} bind def
|
||||
/col79 {0.824 0.824 0.824 srgb} bind def
|
||||
/col80 {0.555 0.555 0.641 srgb} bind def
|
||||
/col81 {0.949 0.723 0.363 srgb} bind def
|
||||
/col82 {0.535 0.598 0.418 srgb} bind def
|
||||
/col83 {0.391 0.391 0.391 srgb} bind def
|
||||
/col84 {0.715 0.898 0.996 srgb} bind def
|
||||
/col85 {0.523 0.750 0.922 srgb} bind def
|
||||
/col86 {0.738 0.738 0.738 srgb} bind def
|
||||
/col87 {0.824 0.582 0.320 srgb} bind def
|
||||
/col88 {0.594 0.820 0.992 srgb} bind def
|
||||
/col89 {0.547 0.609 0.418 srgb} bind def
|
||||
/col90 {0.965 0.418 0.000 srgb} bind def
|
||||
/col91 {0.352 0.418 0.223 srgb} bind def
|
||||
/col92 {0.547 0.609 0.418 srgb} bind def
|
||||
/col93 {0.547 0.609 0.480 srgb} bind def
|
||||
/col94 {0.094 0.289 0.094 srgb} bind def
|
||||
/col95 {0.676 0.676 0.676 srgb} bind def
|
||||
/col96 {0.965 0.738 0.352 srgb} bind def
|
||||
/col97 {0.387 0.418 0.609 srgb} bind def
|
||||
/col98 {0.965 0.965 0.965 srgb} bind def
|
||||
/col99 {0.867 0.000 0.000 srgb} bind def
|
||||
/col100 {0.676 0.676 0.676 srgb} bind def
|
||||
/col101 {0.965 0.738 0.352 srgb} bind def
|
||||
/col102 {0.676 0.676 0.676 srgb} bind def
|
||||
/col103 {0.965 0.738 0.352 srgb} bind def
|
||||
/col104 {0.387 0.418 0.609 srgb} bind def
|
||||
/col105 {0.320 0.418 0.160 srgb} bind def
|
||||
/col106 {0.578 0.578 0.578 srgb} bind def
|
||||
/col107 {0.000 0.387 0.000 srgb} bind def
|
||||
/col108 {0.000 0.387 0.289 srgb} bind def
|
||||
/col109 {0.480 0.516 0.289 srgb} bind def
|
||||
/col110 {0.902 0.738 0.480 srgb} bind def
|
||||
/col111 {0.645 0.707 0.773 srgb} bind def
|
||||
/col112 {0.418 0.418 0.578 srgb} bind def
|
||||
/col113 {0.516 0.418 0.418 srgb} bind def
|
||||
/col114 {0.320 0.609 0.289 srgb} bind def
|
||||
/col115 {0.836 0.902 0.902 srgb} bind def
|
||||
/col116 {0.320 0.387 0.387 srgb} bind def
|
||||
/col117 {0.094 0.418 0.289 srgb} bind def
|
||||
/col118 {0.609 0.645 0.707 srgb} bind def
|
||||
/col119 {0.996 0.578 0.000 srgb} bind def
|
||||
/col120 {0.996 0.578 0.000 srgb} bind def
|
||||
/col121 {0.000 0.387 0.289 srgb} bind def
|
||||
/col122 {0.480 0.516 0.289 srgb} bind def
|
||||
/col123 {0.387 0.449 0.480 srgb} bind def
|
||||
/col124 {0.902 0.738 0.480 srgb} bind def
|
||||
/col125 {0.867 0.867 0.867 srgb} bind def
|
||||
/col126 {0.949 0.930 0.824 srgb} bind def
|
||||
/col127 {0.957 0.680 0.363 srgb} bind def
|
||||
/col128 {0.582 0.805 0.598 srgb} bind def
|
||||
/col129 {0.707 0.082 0.488 srgb} bind def
|
||||
/col130 {0.930 0.930 0.930 srgb} bind def
|
||||
/col131 {0.516 0.516 0.516 srgb} bind def
|
||||
/col132 {0.480 0.480 0.480 srgb} bind def
|
||||
/col133 {0.000 0.352 0.000 srgb} bind def
|
||||
/col134 {0.902 0.449 0.449 srgb} bind def
|
||||
/col135 {0.996 0.793 0.191 srgb} bind def
|
||||
/col136 {0.160 0.473 0.289 srgb} bind def
|
||||
/col137 {0.867 0.156 0.129 srgb} bind def
|
||||
/col138 {0.129 0.348 0.773 srgb} bind def
|
||||
/col139 {0.969 0.969 0.969 srgb} bind def
|
||||
/col140 {0.898 0.898 0.898 srgb} bind def
|
||||
/col141 {0.129 0.516 0.352 srgb} bind def
|
||||
/col142 {0.785 0.785 0.785 srgb} bind def
|
||||
/col143 {0.871 0.844 0.871 srgb} bind def
|
||||
/col144 {0.965 0.949 0.965 srgb} bind def
|
||||
|
||||
end
|
||||
save
|
||||
newpath 0 300 moveto 0 0 lineto 488 0 lineto 488 300 lineto closepath clip newpath
|
||||
-32.6 348.9 translate
|
||||
1 -1 scale
|
||||
|
||||
/cp {closepath} bind def
|
||||
/ef {eofill} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth} bind def
|
||||
/tr {translate} bind def
|
||||
/tnt {dup dup currentrgbcolor
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||
bind def
|
||||
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||
4 -2 roll mul srgb} bind def
|
||||
/reencdict 12 dict def /ReEncode { reencdict begin
|
||||
/newcodesandnames exch def /newfontname exch def /basefontname exch def
|
||||
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
|
||||
basefontdict { exch dup /FID ne { dup /Encoding eq
|
||||
{ exch dup length array copy newfont 3 1 roll put }
|
||||
{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
|
||||
newfont /FontName newfontname put newcodesandnames aload pop
|
||||
128 1 255 { newfont /Encoding get exch /.notdef put } for
|
||||
newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
|
||||
newfontname newfont definefont pop end } def
|
||||
/isovec [
|
||||
8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
|
||||
8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
|
||||
8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
|
||||
8#220 /dotlessi 8#230 /oe 8#231 /OE
|
||||
8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
|
||||
8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
|
||||
8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
|
||||
8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
|
||||
8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
|
||||
8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
|
||||
8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
|
||||
8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
|
||||
8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
|
||||
8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
|
||||
8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
|
||||
8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
|
||||
8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
|
||||
8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
|
||||
8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
|
||||
8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
|
||||
8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
|
||||
8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
|
||||
8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
|
||||
8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
|
||||
8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
|
||||
8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
|
||||
/Helvetica /Helvetica-iso isovec ReEncode
|
||||
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||
/$F2psEnd {$F2psEnteredState restore end} def
|
||||
|
||||
$F2psBegin
|
||||
10 setmiterlimit
|
||||
0 slj 0 slc
|
||||
0.06299 0.06299 sc
|
||||
%
|
||||
% Fig objects follow
|
||||
%
|
||||
%
|
||||
% here starts figure with depth 50
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
900 1440 m
|
||||
gs 1 -1 sc (Public-Key) col0 sh gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
900 1815 m
|
||||
gs 1 -1 sc (Encryption) col0 sh gr
|
||||
% Polyline
|
||||
15.000 slw
|
||||
n 645 810 m 540 810 540 2055 105 arcto 4 {pop} repeat
|
||||
540 2160 2685 2160 105 arcto 4 {pop} repeat
|
||||
2790 2160 2790 915 105 arcto 4 {pop} repeat
|
||||
2790 810 645 810 105 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
630 3420 m
|
||||
gs 1 -1 sc (Multi-Precision-) col0 sh gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
900 3795 m
|
||||
gs 1 -1 sc (Integers) col0 sh gr
|
||||
% Polyline
|
||||
n 645 2790 m 540 2790 540 4035 105 arcto 4 {pop} repeat
|
||||
540 4140 2685 4140 105 arcto 4 {pop} repeat
|
||||
2790 4140 2790 2895 105 arcto 4 {pop} repeat
|
||||
2790 2790 645 2790 105 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
3420 3420 m
|
||||
gs 1 -1 sc (Prime-Number) col0 sh gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
3420 3795 m
|
||||
gs 1 -1 sc (Generator) col0 sh gr
|
||||
% Polyline
|
||||
n 3345 2790 m 3240 2790 3240 4035 105 arcto 4 {pop} repeat
|
||||
3240 4140 5385 4140 105 arcto 4 {pop} repeat
|
||||
5490 4140 5490 2895 105 arcto 4 {pop} repeat
|
||||
5490 2790 3345 2790 105 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
6420 3435 m
|
||||
gs 1 -1 sc (Random) col0 sh gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
6420 3810 m
|
||||
gs 1 -1 sc (Numbers) col0 sh gr
|
||||
% Polyline
|
||||
n 6075 2805 m 5970 2805 5970 4050 105 arcto 4 {pop} repeat
|
||||
5970 4155 8115 4155 105 arcto 4 {pop} repeat
|
||||
8220 4155 8220 2910 105 arcto 4 {pop} repeat
|
||||
8220 2805 6075 2805 105 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
3600 1440 m
|
||||
gs 1 -1 sc (Symmetric) col0 sh gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
3600 1815 m
|
||||
gs 1 -1 sc (Encryption) col0 sh gr
|
||||
% Polyline
|
||||
n 3345 810 m 3240 810 3240 2055 105 arcto 4 {pop} repeat
|
||||
3240 2160 5385 2160 105 arcto 4 {pop} repeat
|
||||
5490 2160 5490 915 105 arcto 4 {pop} repeat
|
||||
5490 810 3345 810 105 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
6435 1440 m
|
||||
gs 1 -1 sc (Hashing) col0 sh gr
|
||||
/Helvetica-iso ff 300.00 scf sf
|
||||
6435 1815 m
|
||||
gs 1 -1 sc (MACing) col0 sh gr
|
||||
% Polyline
|
||||
n 6090 810 m 5985 810 5985 2055 105 arcto 4 {pop} repeat
|
||||
5985 2160 8130 2160 105 arcto 4 {pop} repeat
|
||||
8235 2160 8235 915 105 arcto 4 {pop} repeat
|
||||
8235 810 6090 810 105 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
% Polyline
|
||||
n 3513 4563 m 3438 4563 3438 5438 75 arcto 4 {pop} repeat
|
||||
3438 5513 4947 5513 75 arcto 4 {pop} repeat
|
||||
5022 5513 5022 4638 75 arcto 4 {pop} repeat
|
||||
5022 4563 3513 4563 75 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 210.00 scf sf
|
||||
3825 5130 m
|
||||
gs 1 -1 sc (Memory) col0 sh gr
|
||||
% Polyline
|
||||
n 5583 4563 m 5508 4563 5508 5438 75 arcto 4 {pop} repeat
|
||||
5508 5513 7017 5513 75 arcto 4 {pop} repeat
|
||||
7092 5513 7092 4638 75 arcto 4 {pop} repeat
|
||||
7092 4563 5583 4563 75 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 210.00 scf sf
|
||||
5635 5133 m
|
||||
gs 1 -1 sc (Miscelleanous) col0 sh gr
|
||||
% Polyline
|
||||
n 1443 4567 m 1368 4567 1368 5442 75 arcto 4 {pop} repeat
|
||||
1368 5517 2877 5517 75 arcto 4 {pop} repeat
|
||||
2952 5517 2952 4642 75 arcto 4 {pop} repeat
|
||||
2952 4567 1443 4567 75 arcto 4 {pop} repeat
|
||||
cp gs col0 s gr
|
||||
/Helvetica-iso ff 210.00 scf sf
|
||||
1495 5137 m
|
||||
gs 1 -1 sc (S-expressions) col0 sh gr
|
||||
% here ends figure;
|
||||
$F2psEnd
|
||||
rs
|
||||
showpage
|
||||
193
jni/libgcrypt/doc/libgcrypt-modules.fig
Normal file
193
jni/libgcrypt/doc/libgcrypt-modules.fig
Normal file
@@ -0,0 +1,193 @@
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Metric
|
||||
A4
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
0 32 #8e8e8e
|
||||
0 33 #414541
|
||||
0 34 #c0c0c0
|
||||
0 35 #808080
|
||||
0 36 #636363
|
||||
0 37 #cdcdcd
|
||||
0 38 #6c6c6c
|
||||
0 39 #c6b797
|
||||
0 40 #eff8ff
|
||||
0 41 #dccba6
|
||||
0 42 #404040
|
||||
0 43 #e0e0e0
|
||||
0 44 #8e8f8e
|
||||
0 45 #aaaaaa
|
||||
0 46 #555555
|
||||
0 47 #d7d7d7
|
||||
0 48 #aeaeae
|
||||
0 49 #bebebe
|
||||
0 50 #515151
|
||||
0 51 #e7e3e7
|
||||
0 52 #000049
|
||||
0 53 #797979
|
||||
0 54 #303430
|
||||
0 55 #414141
|
||||
0 56 #c7b696
|
||||
0 57 #dd9d93
|
||||
0 58 #f1ece0
|
||||
0 59 #c3c3c3
|
||||
0 60 #e2c8a8
|
||||
0 61 #e1e1e1
|
||||
0 62 #d2d2d2
|
||||
0 63 #ededed
|
||||
0 64 #da7a1a
|
||||
0 65 #f1e41a
|
||||
0 66 #887dc2
|
||||
0 67 #d6d6d6
|
||||
0 68 #8c8ca5
|
||||
0 69 #4a4a4a
|
||||
0 70 #8c6b6b
|
||||
0 71 #5a5a5a
|
||||
0 72 #b79b73
|
||||
0 73 #4193ff
|
||||
0 74 #bf703b
|
||||
0 75 #db7700
|
||||
0 76 #dab800
|
||||
0 77 #006400
|
||||
0 78 #5a6b3b
|
||||
0 79 #d3d3d3
|
||||
0 80 #8e8ea4
|
||||
0 81 #f3b95d
|
||||
0 82 #89996b
|
||||
0 83 #646464
|
||||
0 84 #b7e6ff
|
||||
0 85 #86c0ec
|
||||
0 86 #bdbdbd
|
||||
0 87 #d39552
|
||||
0 88 #98d2fe
|
||||
0 89 #8c9c6b
|
||||
0 90 #f76b00
|
||||
0 91 #5a6b39
|
||||
0 92 #8c9c6b
|
||||
0 93 #8c9c7b
|
||||
0 94 #184a18
|
||||
0 95 #adadad
|
||||
0 96 #f7bd5a
|
||||
0 97 #636b9c
|
||||
0 98 #f7f7f7
|
||||
0 99 #de0000
|
||||
0 100 #adadad
|
||||
0 101 #f7bd5a
|
||||
0 102 #adadad
|
||||
0 103 #f7bd5a
|
||||
0 104 #636b9c
|
||||
0 105 #526b29
|
||||
0 106 #949494
|
||||
0 107 #006300
|
||||
0 108 #00634a
|
||||
0 109 #7b844a
|
||||
0 110 #e7bd7b
|
||||
0 111 #a5b5c6
|
||||
0 112 #6b6b94
|
||||
0 113 #846b6b
|
||||
0 114 #529c4a
|
||||
0 115 #d6e7e7
|
||||
0 116 #526363
|
||||
0 117 #186b4a
|
||||
0 118 #9ca5b5
|
||||
0 119 #ff9400
|
||||
0 120 #ff9400
|
||||
0 121 #00634a
|
||||
0 122 #7b844a
|
||||
0 123 #63737b
|
||||
0 124 #e7bd7b
|
||||
0 125 #dedede
|
||||
0 126 #f3eed3
|
||||
0 127 #f5ae5d
|
||||
0 128 #95ce99
|
||||
0 129 #b5157d
|
||||
0 130 #eeeeee
|
||||
0 131 #848484
|
||||
0 132 #7b7b7b
|
||||
0 133 #005a00
|
||||
0 134 #e77373
|
||||
0 135 #ffcb31
|
||||
0 136 #29794a
|
||||
0 137 #de2821
|
||||
0 138 #2159c6
|
||||
0 139 #f8f8f8
|
||||
0 140 #e6e6e6
|
||||
0 141 #21845a
|
||||
0 142 #c9c9c9
|
||||
0 143 #dfd8df
|
||||
0 144 #f7f3f7
|
||||
6 450 720 8325 5580
|
||||
6 450 720 8325 4275
|
||||
6 450 720 2880 2250
|
||||
6 900 1170 2340 1890
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1410 900 1440 Public-Key\001
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1410 900 1815 Encryption\001
|
||||
-6
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
|
||||
2790 2160 2790 810 540 810 540 2160 2790 2160
|
||||
-6
|
||||
6 525 2775 2805 4155
|
||||
6 630 3150 2700 3870
|
||||
6 630 3150 2700 3870
|
||||
4 0 0 50 -1 16 20 0.0000 4 225 2055 630 3420 Multi-Precision-\001
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1095 900 3795 Integers\001
|
||||
-6
|
||||
-6
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
|
||||
2790 4140 2790 2790 540 2790 540 4140 2790 4140
|
||||
-6
|
||||
6 3150 2700 5580 4230
|
||||
6 3420 3150 5400 3870
|
||||
4 0 0 50 -1 16 20 0.0000 4 225 1965 3420 3420 Prime-Number\001
|
||||
4 0 0 50 -1 16 20 0.0000 4 225 1365 3420 3795 Generator\001
|
||||
-6
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
|
||||
5490 4140 5490 2790 3240 2790 3240 4140 5490 4140
|
||||
-6
|
||||
6 5880 2715 8310 4245
|
||||
6 6420 3165 7680 3885
|
||||
4 0 0 50 -1 16 20 0.0000 4 225 1140 6420 3435 Random\001
|
||||
4 0 0 50 -1 16 20 0.0000 4 225 1230 6420 3810 Numbers\001
|
||||
-6
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
|
||||
8220 4155 8220 2805 5970 2805 5970 4155 8220 4155
|
||||
-6
|
||||
6 3150 720 5580 2250
|
||||
6 3600 1170 5040 1890
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1425 3600 1440 Symmetric\001
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1410 3600 1815 Encryption\001
|
||||
-6
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
|
||||
5490 2160 5490 810 3240 810 3240 2160 5490 2160
|
||||
-6
|
||||
6 5940 765 8280 2205
|
||||
6 6435 1215 7530 1890
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1095 6435 1440 Hashing\001
|
||||
4 0 0 50 -1 16 20 0.0000 4 300 1065 6435 1815 MACing\001
|
||||
-6
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 7 0 0 5
|
||||
8235 2160 8235 810 5985 810 5985 2160 8235 2160
|
||||
-6
|
||||
-6
|
||||
6 1305 4500 7155 5580
|
||||
6 3375 4500 5085 5580
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 5 0 0 5
|
||||
5022 5513 5022 4563 3438 4563 3438 5513 5022 5513
|
||||
4 0 0 50 -1 16 14 0.0000 4 195 780 3825 5130 Memory\001
|
||||
-6
|
||||
6 5445 4500 7155 5576
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 5 0 0 5
|
||||
7092 5513 7092 4563 5508 4563 5508 5513 7092 5513
|
||||
4 0 0 50 -1 16 14 0.0000 4 150 1350 5635 5133 Miscelleanous\001
|
||||
-6
|
||||
6 1305 4504 3015 5580
|
||||
2 4 0 2 0 7 50 -1 -1 0.000 0 0 5 0 0 5
|
||||
2952 5517 2952 4567 1368 4567 1368 5517 2952 5517
|
||||
4 0 0 50 -1 16 14 0.0000 4 195 1350 1495 5137 S-expressions\001
|
||||
-6
|
||||
-6
|
||||
-6
|
||||
BIN
jni/libgcrypt/doc/libgcrypt-modules.pdf
Normal file
BIN
jni/libgcrypt/doc/libgcrypt-modules.pdf
Normal file
Binary file not shown.
BIN
jni/libgcrypt/doc/libgcrypt-modules.png
Normal file
BIN
jni/libgcrypt/doc/libgcrypt-modules.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
201
jni/libgcrypt/doc/mdate-sh
Executable file
201
jni/libgcrypt/doc/mdate-sh
Executable file
@@ -0,0 +1,201 @@
|
||||
#!/bin/sh
|
||||
# Get modification time of a file or directory and pretty-print it.
|
||||
|
||||
scriptversion=2005-06-29.22
|
||||
|
||||
# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software
|
||||
# Foundation, Inc.
|
||||
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
|
||||
#
|
||||
# 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, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No file. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: mdate-sh [--help] [--version] FILE
|
||||
|
||||
Pretty-print the modification time of FILE.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "mdate-sh $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
# Prevent date giving response in another language.
|
||||
LANG=C
|
||||
export LANG
|
||||
LC_ALL=C
|
||||
export LC_ALL
|
||||
LC_TIME=C
|
||||
export LC_TIME
|
||||
|
||||
# GNU ls changes its time format in response to the TIME_STYLE
|
||||
# variable. Since we cannot assume `unset' works, revert this
|
||||
# variable to its documented default.
|
||||
if test "${TIME_STYLE+set}" = set; then
|
||||
TIME_STYLE=posix-long-iso
|
||||
export TIME_STYLE
|
||||
fi
|
||||
|
||||
save_arg1=$1
|
||||
|
||||
# Find out how to get the extended ls output of a file or directory.
|
||||
if ls -L /dev/null 1>/dev/null 2>&1; then
|
||||
ls_command='ls -L -l -d'
|
||||
else
|
||||
ls_command='ls -l -d'
|
||||
fi
|
||||
|
||||
# A `ls -l' line looks as follows on OS/2.
|
||||
# drwxrwx--- 0 Aug 11 2001 foo
|
||||
# This differs from Unix, which adds ownership information.
|
||||
# drwxrwx--- 2 root root 4096 Aug 11 2001 foo
|
||||
#
|
||||
# To find the date, we split the line on spaces and iterate on words
|
||||
# until we find a month. This cannot work with files whose owner is a
|
||||
# user named `Jan', or `Feb', etc. However, it's unlikely that `/'
|
||||
# will be owned by a user whose name is a month. So we first look at
|
||||
# the extended ls output of the root directory to decide how many
|
||||
# words should be skipped to get the date.
|
||||
|
||||
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
|
||||
set x`ls -l -d /`
|
||||
|
||||
# Find which argument is the month.
|
||||
month=
|
||||
command=
|
||||
until test $month
|
||||
do
|
||||
shift
|
||||
# Add another shift to the command.
|
||||
command="$command shift;"
|
||||
case $1 in
|
||||
Jan) month=January; nummonth=1;;
|
||||
Feb) month=February; nummonth=2;;
|
||||
Mar) month=March; nummonth=3;;
|
||||
Apr) month=April; nummonth=4;;
|
||||
May) month=May; nummonth=5;;
|
||||
Jun) month=June; nummonth=6;;
|
||||
Jul) month=July; nummonth=7;;
|
||||
Aug) month=August; nummonth=8;;
|
||||
Sep) month=September; nummonth=9;;
|
||||
Oct) month=October; nummonth=10;;
|
||||
Nov) month=November; nummonth=11;;
|
||||
Dec) month=December; nummonth=12;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Get the extended ls output of the file or directory.
|
||||
set dummy x`eval "$ls_command \"\$save_arg1\""`
|
||||
|
||||
# Remove all preceding arguments
|
||||
eval $command
|
||||
|
||||
# Because of the dummy argument above, month is in $2.
|
||||
#
|
||||
# On a POSIX system, we should have
|
||||
#
|
||||
# $# = 5
|
||||
# $1 = file size
|
||||
# $2 = month
|
||||
# $3 = day
|
||||
# $4 = year or time
|
||||
# $5 = filename
|
||||
#
|
||||
# On Darwin 7.7.0 and 7.6.0, we have
|
||||
#
|
||||
# $# = 4
|
||||
# $1 = day
|
||||
# $2 = month
|
||||
# $3 = year or time
|
||||
# $4 = filename
|
||||
|
||||
# Get the month.
|
||||
case $2 in
|
||||
Jan) month=January; nummonth=1;;
|
||||
Feb) month=February; nummonth=2;;
|
||||
Mar) month=March; nummonth=3;;
|
||||
Apr) month=April; nummonth=4;;
|
||||
May) month=May; nummonth=5;;
|
||||
Jun) month=June; nummonth=6;;
|
||||
Jul) month=July; nummonth=7;;
|
||||
Aug) month=August; nummonth=8;;
|
||||
Sep) month=September; nummonth=9;;
|
||||
Oct) month=October; nummonth=10;;
|
||||
Nov) month=November; nummonth=11;;
|
||||
Dec) month=December; nummonth=12;;
|
||||
esac
|
||||
|
||||
case $3 in
|
||||
???*) day=$1;;
|
||||
*) day=$3; shift;;
|
||||
esac
|
||||
|
||||
# Here we have to deal with the problem that the ls output gives either
|
||||
# the time of day or the year.
|
||||
case $3 in
|
||||
*:*) set `date`; eval year=\$$#
|
||||
case $2 in
|
||||
Jan) nummonthtod=1;;
|
||||
Feb) nummonthtod=2;;
|
||||
Mar) nummonthtod=3;;
|
||||
Apr) nummonthtod=4;;
|
||||
May) nummonthtod=5;;
|
||||
Jun) nummonthtod=6;;
|
||||
Jul) nummonthtod=7;;
|
||||
Aug) nummonthtod=8;;
|
||||
Sep) nummonthtod=9;;
|
||||
Oct) nummonthtod=10;;
|
||||
Nov) nummonthtod=11;;
|
||||
Dec) nummonthtod=12;;
|
||||
esac
|
||||
# For the first six month of the year the time notation can also
|
||||
# be used for files modified in the last year.
|
||||
if (expr $nummonth \> $nummonthtod) > /dev/null;
|
||||
then
|
||||
year=`expr $year - 1`
|
||||
fi;;
|
||||
*) year=$3;;
|
||||
esac
|
||||
|
||||
# The result.
|
||||
echo $day $month $year
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
4
jni/libgcrypt/doc/stamp-vti
Normal file
4
jni/libgcrypt/doc/stamp-vti
Normal file
@@ -0,0 +1,4 @@
|
||||
@set UPDATED 22 January 2009
|
||||
@set UPDATED-MONTH January 2009
|
||||
@set EDITION 1.4.4
|
||||
@set VERSION 1.4.4
|
||||
7482
jni/libgcrypt/doc/texinfo.tex
Normal file
7482
jni/libgcrypt/doc/texinfo.tex
Normal file
File diff suppressed because it is too large
Load Diff
4
jni/libgcrypt/doc/version.texi
Normal file
4
jni/libgcrypt/doc/version.texi
Normal file
@@ -0,0 +1,4 @@
|
||||
@set UPDATED 22 January 2009
|
||||
@set UPDATED-MONTH January 2009
|
||||
@set EDITION 1.4.4
|
||||
@set VERSION 1.4.4
|
||||
507
jni/libgcrypt/install-sh
Executable file
507
jni/libgcrypt/install-sh
Executable file
@@ -0,0 +1,507 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2006-10-14.15
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
posix_glob=
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
chgrpcmd=
|
||||
stripcmd=
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dstarg=
|
||||
no_target_directory=
|
||||
|
||||
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
-c (ignored)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
shift
|
||||
shift
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd=$stripprog
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t) dstarg=$2
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-T) no_target_directory=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dstarg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dstarg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dstarg=$arg
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src ;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dstarg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dstarg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst ;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dstarg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writeable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix=/ ;;
|
||||
-*) prefix=./ ;;
|
||||
*) prefix= ;;
|
||||
esac
|
||||
|
||||
case $posix_glob in
|
||||
'')
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=true
|
||||
else
|
||||
posix_glob=false
|
||||
fi ;;
|
||||
esac
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob && set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob && set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test -z "$d" && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
||||
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
||||
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
||||
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|
||||
|| {
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
if test -f "$dst"; then
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null \
|
||||
|| { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
|
||||
&& { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|
||||
|| {
|
||||
echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
else
|
||||
:
|
||||
fi
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
} || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
6871
jni/libgcrypt/ltmain.sh
Normal file
6871
jni/libgcrypt/ltmain.sh
Normal file
File diff suppressed because it is too large
Load Diff
35
jni/libgcrypt/m4/ChangeLog
Normal file
35
jni/libgcrypt/m4/ChangeLog
Normal file
@@ -0,0 +1,35 @@
|
||||
2009-01-22 Werner Koch <wk@g10code.com>
|
||||
|
||||
* noexecstack.m4: Replace non portable grep -q. Reported by
|
||||
Albert Chin.
|
||||
|
||||
2007-02-22 Werner Koch <wk@g10code.com>
|
||||
|
||||
* noexecstack.m4: Change default to enable it.
|
||||
|
||||
2007-02-20 Werner Koch <wk@g10code.com>
|
||||
|
||||
* Makefile.am: New.
|
||||
|
||||
* noexecstack.m4: New. Taken from gnupg 1.4
|
||||
|
||||
2006-10-11 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* fallback.m4: Removed again.
|
||||
|
||||
2006-10-10 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* fallback.m4: New file from Pth.
|
||||
|
||||
2006-07-04 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* sys_socket_h.m4, socklen.m4, onceonly.m4: New files from gnulib.
|
||||
|
||||
2004-04-06 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* libtool.m4: Updated from 1.5.4
|
||||
|
||||
2003-12-08 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* libtool.m4: New.
|
||||
|
||||
1
jni/libgcrypt/m4/Makefile.am
Normal file
1
jni/libgcrypt/m4/Makefile.am
Normal file
@@ -0,0 +1 @@
|
||||
EXTRA_DIST = libtool.m4 onceonly.m4 socklen.m4 sys_socket_h.m4 noexecstack.m4
|
||||
359
jni/libgcrypt/m4/Makefile.in
Normal file
359
jni/libgcrypt/m4/Makefile.in
Normal file
@@ -0,0 +1,359 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = m4
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/noexecstack.m4 $(top_srcdir)/m4/onceonly.m4 \
|
||||
$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_FILEVERSION = @BUILD_FILEVERSION@
|
||||
BUILD_REVISION = @BUILD_REVISION@
|
||||
BUILD_TIMESTAMP = @BUILD_TIMESTAMP@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DL_LIBS = @DL_LIBS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FALLBACK_SOCKLEN_T = @FALLBACK_SOCKLEN_T@
|
||||
FFLAGS = @FFLAGS@
|
||||
GCRYPT_CIPHERS = @GCRYPT_CIPHERS@
|
||||
GCRYPT_DIGESTS = @GCRYPT_DIGESTS@
|
||||
GCRYPT_PUBKEY_CIPHERS = @GCRYPT_PUBKEY_CIPHERS@
|
||||
GCRYPT_RANDOM = @GCRYPT_RANDOM@
|
||||
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
|
||||
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
|
||||
GPG_ERROR_LIBS = @GPG_ERROR_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBGCRYPT_CIPHERS = @LIBGCRYPT_CIPHERS@
|
||||
LIBGCRYPT_CONFIG_API_VERSION = @LIBGCRYPT_CONFIG_API_VERSION@
|
||||
LIBGCRYPT_CONFIG_CFLAGS = @LIBGCRYPT_CONFIG_CFLAGS@
|
||||
LIBGCRYPT_CONFIG_LIBS = @LIBGCRYPT_CONFIG_LIBS@
|
||||
LIBGCRYPT_DIGESTS = @LIBGCRYPT_DIGESTS@
|
||||
LIBGCRYPT_LT_AGE = @LIBGCRYPT_LT_AGE@
|
||||
LIBGCRYPT_LT_CURRENT = @LIBGCRYPT_LT_CURRENT@
|
||||
LIBGCRYPT_LT_REVISION = @LIBGCRYPT_LT_REVISION@
|
||||
LIBGCRYPT_PUBKEY_CIPHERS = @LIBGCRYPT_PUBKEY_CIPHERS@
|
||||
LIBGCRYPT_THREAD_MODULES = @LIBGCRYPT_THREAD_MODULES@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MPI_SFLAGS = @MPI_SFLAGS@
|
||||
NOEXECSTACK_FLAGS = @NOEXECSTACK_FLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PTH_CFLAGS = @PTH_CFLAGS@
|
||||
PTH_CONFIG = @PTH_CONFIG@
|
||||
PTH_LIBS = @PTH_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
RC = @RC@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = libtool.m4 onceonly.m4 socklen.m4 sys_socket_h.m4 noexecstack.m4
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu m4/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-dvi install-dvi-am \
|
||||
install-exec install-exec-am install-html install-html-am \
|
||||
install-info install-info-am install-man install-pdf \
|
||||
install-pdf-am install-ps install-ps-am install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
5939
jni/libgcrypt/m4/libtool.m4
vendored
Normal file
5939
jni/libgcrypt/m4/libtool.m4
vendored
Normal file
File diff suppressed because it is too large
Load Diff
55
jni/libgcrypt/m4/noexecstack.m4
Normal file
55
jni/libgcrypt/m4/noexecstack.m4
Normal file
@@ -0,0 +1,55 @@
|
||||
# noexecstack.m4
|
||||
dnl Copyright (C) 1995-2006 Free Software Foundation, Inc.
|
||||
dnl
|
||||
dnl This library is free software; you can redistribute it and/or
|
||||
dnl modify it under the terms of the GNU Lesser General Public
|
||||
dnl License as published by the Free Software Foundation; either
|
||||
dnl version 2.1 of the License, or (at your option) any later version.
|
||||
dnl
|
||||
dnl This library is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl Lesser General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU Lesser General Public
|
||||
dnl License along with this library; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
dnl Checks whether the stack can be marked nonexecutable by passing an
|
||||
dnl option to the C-compiler when acting on .s files. Returns that
|
||||
dnl option in NOEXECSTACK_FLAGS.
|
||||
dnl This macro is adapted from one found in GLIBC-2.3.5.
|
||||
AC_DEFUN([CL_AS_NOEXECSTACK],[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AM_PROG_AS])
|
||||
|
||||
AC_MSG_CHECKING([whether non excutable stack support is requested])
|
||||
AC_ARG_ENABLE(noexecstack,
|
||||
AC_HELP_STRING([--disable-noexecstack],
|
||||
[disable non executable stack support]),
|
||||
noexecstack_support=$enableval, noexecstack_support=yes)
|
||||
AC_MSG_RESULT($noexecstack_support)
|
||||
|
||||
AC_CACHE_CHECK([whether assembler supports --noexecstack option],
|
||||
cl_cv_as_noexecstack, [dnl
|
||||
cat > conftest.c <<EOF
|
||||
void foo() {}
|
||||
EOF
|
||||
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS
|
||||
-S -o conftest.s conftest.c >/dev/null]) \
|
||||
&& grep .note.GNU-stack conftest.s >/dev/null \
|
||||
&& AC_TRY_COMMAND([${CCAS} $CCASFLAGS $CPPFLAGS -Wa,--noexecstack
|
||||
-c -o conftest.o conftest.s >/dev/null])
|
||||
then
|
||||
cl_cv_as_noexecstack=yes
|
||||
else
|
||||
cl_cv_as_noexecstack=no
|
||||
fi
|
||||
rm -f conftest*])
|
||||
if test "$noexecstack_support" = yes -a "$cl_cv_as_noexecstack" = yes; then
|
||||
NOEXECSTACK_FLAGS="-Wa,--noexecstack"
|
||||
else
|
||||
NOEXECSTACK_FLAGS=
|
||||
fi
|
||||
AC_SUBST(NOEXECSTACK_FLAGS)
|
||||
])
|
||||
66
jni/libgcrypt/m4/onceonly.m4
Normal file
66
jni/libgcrypt/m4/onceonly.m4
Normal file
@@ -0,0 +1,66 @@
|
||||
# onceonly.m4 serial 4 (gettext-0.15)
|
||||
dnl Copyright (C) 2002-2003, 2006 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl This file defines some "once only" variants of standard autoconf macros.
|
||||
dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS
|
||||
dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS
|
||||
dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS
|
||||
dnl AC_REQUIRE([AC_HEADER_STDC]) like AC_HEADER_STDC
|
||||
dnl The advantage is that the check for each of the headers/functions/decls
|
||||
dnl will be put only once into the 'configure' file. It keeps the size of
|
||||
dnl the 'configure' file down, and avoids redundant output when 'configure'
|
||||
dnl is run.
|
||||
dnl The drawback is that the checks cannot be conditionalized. If you write
|
||||
dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi
|
||||
dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to
|
||||
dnl empty, and the check will be inserted before the body of the AC_DEFUNed
|
||||
dnl function.
|
||||
|
||||
dnl This file is only needed in autoconf <= 2.59. Newer versions of autoconf
|
||||
dnl have this macro built-in. But about AC_CHECK_DECLS_ONCE: note that in
|
||||
dnl autoconf >= 2.60 the symbol separator is a comma, whereas here it is
|
||||
dnl whitespace.
|
||||
|
||||
dnl Autoconf version 2.57 or newer is recommended.
|
||||
AC_PREREQ(2.54)
|
||||
|
||||
# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of
|
||||
# AC_CHECK_HEADERS(HEADER1 HEADER2 ...).
|
||||
AC_DEFUN([AC_CHECK_HEADERS_ONCE], [
|
||||
:
|
||||
AC_FOREACH([gl_HEADER_NAME], [$1], [
|
||||
AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(m4_defn([gl_HEADER_NAME]),
|
||||
[-./], [___])), [
|
||||
AC_CHECK_HEADERS(gl_HEADER_NAME)
|
||||
])
|
||||
AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME,
|
||||
[-./], [___])))
|
||||
])
|
||||
])
|
||||
|
||||
# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of
|
||||
# AC_CHECK_FUNCS(FUNC1 FUNC2 ...).
|
||||
AC_DEFUN([AC_CHECK_FUNCS_ONCE], [
|
||||
:
|
||||
AC_FOREACH([gl_FUNC_NAME], [$1], [
|
||||
AC_DEFUN([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]), [
|
||||
AC_CHECK_FUNCS(m4_defn([gl_FUNC_NAME]))
|
||||
])
|
||||
AC_REQUIRE([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]))
|
||||
])
|
||||
])
|
||||
|
||||
# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of
|
||||
# AC_CHECK_DECLS(DECL1, DECL2, ...).
|
||||
AC_DEFUN([AC_CHECK_DECLS_ONCE], [
|
||||
:
|
||||
AC_FOREACH([gl_DECL_NAME], [$1], [
|
||||
AC_DEFUN([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]), [
|
||||
AC_CHECK_DECLS(m4_defn([gl_DECL_NAME]))
|
||||
])
|
||||
AC_REQUIRE([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]))
|
||||
])
|
||||
])
|
||||
52
jni/libgcrypt/m4/socklen.m4
Normal file
52
jni/libgcrypt/m4/socklen.m4
Normal file
@@ -0,0 +1,52 @@
|
||||
# socklen.m4 serial 4
|
||||
dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Albert Chin, Windows fixes from Simon Josefsson.
|
||||
|
||||
dnl Check for socklen_t: historically on BSD it is an int, and in
|
||||
dnl POSIX 1g it is a type of its own, but some platforms use different
|
||||
dnl types for the argument to getsockopt, getpeername, etc. So we
|
||||
dnl have to test to find something that will work.
|
||||
|
||||
dnl On mingw32, socklen_t is in ws2tcpip.h ('int'), so we try to find
|
||||
dnl it there first. That file is included by gnulib's socket_.h, which
|
||||
dnl all users of this module should include. Cygwin must not include
|
||||
dnl ws2tcpip.h.
|
||||
AC_DEFUN([gl_TYPE_SOCKLEN_T],
|
||||
[AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl
|
||||
AC_CHECK_TYPE([socklen_t], ,
|
||||
[AC_MSG_CHECKING([for socklen_t equivalent])
|
||||
AC_CACHE_VAL([gl_cv_gl_cv_socklen_t_equiv],
|
||||
[# Systems have either "struct sockaddr *" or
|
||||
# "void *" as the second argument to getpeername
|
||||
gl_cv_socklen_t_equiv=
|
||||
for arg2 in "struct sockaddr" void; do
|
||||
for t in int size_t "unsigned int" "long int" "unsigned long int"; do
|
||||
AC_TRY_COMPILE(
|
||||
[#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
int getpeername (int, $arg2 *, $t *);],
|
||||
[$t len;
|
||||
getpeername (0, 0, &len);],
|
||||
[gl_cv_socklen_t_equiv="$t"])
|
||||
test "$gl_cv_socklen_t_equiv" != "" && break
|
||||
done
|
||||
test "$gl_cv_socklen_t_equiv" != "" && break
|
||||
done
|
||||
])
|
||||
if test "$gl_cv_socklen_t_equiv" = ""; then
|
||||
AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
|
||||
fi
|
||||
AC_MSG_RESULT([$gl_cv_socklen_t_equiv])
|
||||
AC_DEFINE_UNQUOTED([socklen_t], [$gl_cv_socklen_t_equiv],
|
||||
[type to use in place of socklen_t if not defined])],
|
||||
[#include <sys/types.h>
|
||||
#if HAVE_SYS_SOCKET_H
|
||||
# include <sys/socket.h>
|
||||
#elif HAVE_WS2TCPIP_H
|
||||
# include <ws2tcpip.h>
|
||||
#endif])])
|
||||
23
jni/libgcrypt/m4/sys_socket_h.m4
Normal file
23
jni/libgcrypt/m4/sys_socket_h.m4
Normal file
@@ -0,0 +1,23 @@
|
||||
# sys_socket_h.m4 serial 2
|
||||
dnl Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Simon Josefsson.
|
||||
|
||||
AC_DEFUN([gl_HEADER_SYS_SOCKET],
|
||||
[
|
||||
AC_CHECK_HEADERS_ONCE([sys/socket.h])
|
||||
if test $ac_cv_header_sys_socket_h = yes; then
|
||||
SYS_SOCKET_H=''
|
||||
else
|
||||
dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
|
||||
dnl the check for those headers unconditional; yet cygwin reports
|
||||
dnl that the headers are present but cannot be compiled (since on
|
||||
dnl cygwin, all socket information should come from sys/socket.h).
|
||||
AC_CHECK_HEADERS([winsock2.h ws2tcpip.h])
|
||||
SYS_SOCKET_H='sys/socket.h'
|
||||
fi
|
||||
AC_SUBST(SYS_SOCKET_H)
|
||||
])
|
||||
360
jni/libgcrypt/missing
Executable file
360
jni/libgcrypt/missing
Executable file
@@ -0,0 +1,360 @@
|
||||
#! /bin/sh
|
||||
# Common stub for a few missing GNU programs while installing.
|
||||
|
||||
scriptversion=2005-06-08.21
|
||||
|
||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
|
||||
# Free Software Foundation, Inc.
|
||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# 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, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
if test $# -eq 0; then
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
run=:
|
||||
|
||||
# In the cases where this matters, `missing' is being run in the
|
||||
# srcdir already.
|
||||
if test -f configure.ac; then
|
||||
configure_ac=configure.ac
|
||||
else
|
||||
configure_ac=configure.in
|
||||
fi
|
||||
|
||||
msg="missing on your system"
|
||||
|
||||
case "$1" in
|
||||
--run)
|
||||
# Try to run requested program, and just exit if it succeeds.
|
||||
run=
|
||||
shift
|
||||
"$@" && exit 0
|
||||
# Exit code 63 means version mismatch. This often happens
|
||||
# when the user try to use an ancient version of a tool on
|
||||
# a file that requires a minimum version. In this case we
|
||||
# we should proceed has if the program had been absent, or
|
||||
# if --run hadn't been passed.
|
||||
if test $? = 63; then
|
||||
run=:
|
||||
msg="probably too old"
|
||||
fi
|
||||
;;
|
||||
|
||||
-h|--h|--he|--hel|--help)
|
||||
echo "\
|
||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
||||
|
||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
||||
error status if there is no known handling for PROGRAM.
|
||||
|
||||
Options:
|
||||
-h, --help display this help and exit
|
||||
-v, --version output version information and exit
|
||||
--run try to run the given command, and emulate it if it fails
|
||||
|
||||
Supported PROGRAM values:
|
||||
aclocal touch file \`aclocal.m4'
|
||||
autoconf touch file \`configure'
|
||||
autoheader touch file \`config.h.in'
|
||||
automake touch all \`Makefile.in' files
|
||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
flex create \`lex.yy.c', if possible, from existing .c
|
||||
help2man touch the output file
|
||||
lex create \`lex.yy.c', if possible, from existing .c
|
||||
makeinfo touch the output file
|
||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
||||
|
||||
Send bug reports to <bug-automake@gnu.org>."
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
||||
echo "missing $scriptversion (GNU Automake)"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo 1>&2 "$0: Unknown \`$1' option"
|
||||
echo 1>&2 "Try \`$0 --help' for more information"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
# Now exit if we have it, but it failed. Also exit now if we
|
||||
# don't have it and --version was passed (most likely to detect
|
||||
# the program).
|
||||
case "$1" in
|
||||
lex|yacc)
|
||||
# Not GNU programs, they don't have --version.
|
||||
;;
|
||||
|
||||
tar)
|
||||
if test -n "$run"; then
|
||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
||||
exit 1
|
||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
||||
# We have it, but it failed.
|
||||
exit 1
|
||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
||||
# Could not run --version or --help. This is probably someone
|
||||
# running `$TOOL --version' or `$TOOL --help' to check whether
|
||||
# $TOOL exists and not knowing $TOOL uses missing.
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# If it does not exist, or fails to run (possibly an outdated version),
|
||||
# try to emulate it.
|
||||
case "$1" in
|
||||
aclocal*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
||||
any GNU archive site."
|
||||
touch aclocal.m4
|
||||
;;
|
||||
|
||||
autoconf)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`${configure_ac}'. You might want to install the
|
||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
||||
archive site."
|
||||
touch configure
|
||||
;;
|
||||
|
||||
autoheader)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
||||
from any GNU archive site."
|
||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
||||
test -z "$files" && files="config.h"
|
||||
touch_files=
|
||||
for f in $files; do
|
||||
case "$f" in
|
||||
*:*) touch_files="$touch_files "`echo "$f" |
|
||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
||||
*) touch_files="$touch_files $f.in";;
|
||||
esac
|
||||
done
|
||||
touch $touch_files
|
||||
;;
|
||||
|
||||
automake*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
||||
You might want to install the \`Automake' and \`Perl' packages.
|
||||
Grab them from any GNU archive site."
|
||||
find . -type f -name Makefile.am -print |
|
||||
sed 's/\.am$/.in/' |
|
||||
while read f; do touch "$f"; done
|
||||
;;
|
||||
|
||||
autom4te)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, but is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them.
|
||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
||||
archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
|
||||
test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
|
||||
if test -f "$file"; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo "#! /bin/sh"
|
||||
echo "# Created by GNU Automake missing as a replacement of"
|
||||
echo "# $ $@"
|
||||
echo "exit 0"
|
||||
chmod +x $file
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
bison|yacc)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' $msg. You should only need it if
|
||||
you modified a \`.y' file. You may need the \`Bison' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Bison' from any GNU archive site."
|
||||
rm -f y.tab.c y.tab.h
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.y)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.c
|
||||
fi
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" y.tab.h
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f y.tab.h ]; then
|
||||
echo >y.tab.h
|
||||
fi
|
||||
if [ ! -f y.tab.c ]; then
|
||||
echo 'main() { return 0; }' >y.tab.c
|
||||
fi
|
||||
;;
|
||||
|
||||
lex|flex)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.l' file. You may need the \`Flex' package
|
||||
in order for those modifications to take effect. You can get
|
||||
\`Flex' from any GNU archive site."
|
||||
rm -f lex.yy.c
|
||||
if [ $# -ne 1 ]; then
|
||||
eval LASTARG="\${$#}"
|
||||
case "$LASTARG" in
|
||||
*.l)
|
||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
||||
if [ -f "$SRCFILE" ]; then
|
||||
cp "$SRCFILE" lex.yy.c
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if [ ! -f lex.yy.c ]; then
|
||||
echo 'main() { return 0; }' >lex.yy.c
|
||||
fi
|
||||
;;
|
||||
|
||||
help2man)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a dependency of a manual page. You may need the
|
||||
\`Help2man' package in order for those modifications to take
|
||||
effect. You can get \`Help2man' from any GNU archive site."
|
||||
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
|
||||
fi
|
||||
if [ -f "$file" ]; then
|
||||
touch $file
|
||||
else
|
||||
test -z "$file" || exec >$file
|
||||
echo ".ab help2man is required to generate this page"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
makeinfo)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is $msg. You should only need it if
|
||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
||||
indirectly affecting the aspect of the manual. The spurious
|
||||
call might also be the consequence of using a buggy \`make' (AIX,
|
||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
||||
the \`GNU make' package. Grab either from any GNU archive site."
|
||||
# The file to touch is that specified with -o ...
|
||||
file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
|
||||
if test -z "$file"; then
|
||||
# ... or it is the one specified with @setfilename ...
|
||||
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
||||
file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
|
||||
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
||||
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
||||
fi
|
||||
# If the file does not exist, the user really needs makeinfo;
|
||||
# let's fail without touching anything.
|
||||
test -f $file || exit 1
|
||||
touch $file
|
||||
;;
|
||||
|
||||
tar)
|
||||
shift
|
||||
|
||||
# We have already tried tar in the generic part.
|
||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
||||
# messages.
|
||||
if (gnutar --version > /dev/null 2>&1); then
|
||||
gnutar "$@" && exit 0
|
||||
fi
|
||||
if (gtar --version > /dev/null 2>&1); then
|
||||
gtar "$@" && exit 0
|
||||
fi
|
||||
firstarg="$1"
|
||||
if shift; then
|
||||
case "$firstarg" in
|
||||
*o*)
|
||||
firstarg=`echo "$firstarg" | sed s/o//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
case "$firstarg" in
|
||||
*h*)
|
||||
firstarg=`echo "$firstarg" | sed s/h//`
|
||||
tar "$firstarg" "$@" && exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo 1>&2 "\
|
||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
||||
You may want to install GNU tar or Free paxutils, or check the
|
||||
command line arguments."
|
||||
exit 1
|
||||
;;
|
||||
|
||||
*)
|
||||
echo 1>&2 "\
|
||||
WARNING: \`$1' is needed, and is $msg.
|
||||
You might have modified some files without having the
|
||||
proper tools for further handling them. Check the \`README' file,
|
||||
it often tells you about the needed prerequisites for installing
|
||||
this package. You may also peek at any GNU archive site, in case
|
||||
some other package would contain this missing \`$1' program."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
161
jni/libgcrypt/mkinstalldirs
Executable file
161
jni/libgcrypt/mkinstalldirs
Executable file
@@ -0,0 +1,161 @@
|
||||
#! /bin/sh
|
||||
# mkinstalldirs --- make directory hierarchy
|
||||
|
||||
scriptversion=2006-05-11.19
|
||||
|
||||
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||
# Created: 1993-05-16
|
||||
# Public domain.
|
||||
#
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
errstatus=0
|
||||
dirmode=
|
||||
|
||||
usage="\
|
||||
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
|
||||
|
||||
Create each directory DIR (with mode MODE, if specified), including all
|
||||
leading file name components.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>."
|
||||
|
||||
# process command line arguments
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
-h | --help | --h*) # -h for help
|
||||
echo "$usage"
|
||||
exit $?
|
||||
;;
|
||||
-m) # -m PERM arg
|
||||
shift
|
||||
test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
|
||||
dirmode=$1
|
||||
shift
|
||||
;;
|
||||
--version)
|
||||
echo "$0 $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
--) # stop option processing
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*) # unknown option
|
||||
echo "$usage" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*) # first non-opt arg
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
for file
|
||||
do
|
||||
if test -d "$file"; then
|
||||
shift
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
case $# in
|
||||
0) exit 0 ;;
|
||||
esac
|
||||
|
||||
# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
|
||||
# mkdir -p a/c at the same time, both will detect that a is missing,
|
||||
# one will create a, then the other will try to create a and die with
|
||||
# a "File exists" error. This is a problem when calling mkinstalldirs
|
||||
# from a parallel make. We use --version in the probe to restrict
|
||||
# ourselves to GNU mkdir, which is thread-safe.
|
||||
case $dirmode in
|
||||
'')
|
||||
if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
|
||||
echo "mkdir -p -- $*"
|
||||
exec mkdir -p -- "$@"
|
||||
else
|
||||
# On NextStep and OpenStep, the `mkdir' command does not
|
||||
# recognize any option. It will interpret all options as
|
||||
# directories to create, and then abort because `.' already
|
||||
# exists.
|
||||
test -d ./-p && rmdir ./-p
|
||||
test -d ./--version && rmdir ./--version
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
|
||||
test ! -d ./--version; then
|
||||
echo "mkdir -m $dirmode -p -- $*"
|
||||
exec mkdir -m "$dirmode" -p -- "$@"
|
||||
else
|
||||
# Clean up after NextStep and OpenStep mkdir.
|
||||
for d in ./-m ./-p ./--version "./$dirmode";
|
||||
do
|
||||
test -d $d && rmdir $d
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
for file
|
||||
do
|
||||
case $file in
|
||||
/*) pathcomp=/ ;;
|
||||
*) pathcomp= ;;
|
||||
esac
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
set fnord $file
|
||||
shift
|
||||
IFS=$oIFS
|
||||
|
||||
for d
|
||||
do
|
||||
test "x$d" = x && continue
|
||||
|
||||
pathcomp=$pathcomp$d
|
||||
case $pathcomp in
|
||||
-*) pathcomp=./$pathcomp ;;
|
||||
esac
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
echo "mkdir $pathcomp"
|
||||
|
||||
mkdir "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -d "$pathcomp"; then
|
||||
errstatus=$lasterr
|
||||
else
|
||||
if test ! -z "$dirmode"; then
|
||||
echo "chmod $dirmode $pathcomp"
|
||||
lasterr=
|
||||
chmod "$dirmode" "$pathcomp" || lasterr=$?
|
||||
|
||||
if test ! -z "$lasterr"; then
|
||||
errstatus=$lasterr
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
pathcomp=$pathcomp/
|
||||
done
|
||||
done
|
||||
|
||||
exit $errstatus
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
||||
784
jni/libgcrypt/mpi/ChangeLog
Normal file
784
jni/libgcrypt/mpi/ChangeLog
Normal file
@@ -0,0 +1,784 @@
|
||||
2008-12-05 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpicoder.c (mpi_read_from_buffer): Do not bail out if the mpi is
|
||||
larger than the buffer (potential problem). Do not print error
|
||||
messages.
|
||||
(mpi_fromstr): Return an error instead of hitting an assert.
|
||||
(gcry_mpi_scan) <PGP>: Fix potential double free problem.
|
||||
(gcry_mpi_scan) <HEX>: Fix potential memory leak.
|
||||
(do_get_buffer): Return NULL on memory allocation failure.
|
||||
(gcry_mpi_print): Check result of do_get_buffer.
|
||||
(gcry_mpi_aprint): Return error on a memory allocation failure.
|
||||
|
||||
* mpicoder.c: Re-indent.
|
||||
|
||||
2008-12-03 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-pow.c (gcry_mpi_powm): Fix last change. Asserts are really
|
||||
useful!
|
||||
|
||||
2008-12-02 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-pow.c (gcry_mpi_powm): Re-indent.
|
||||
(gcry_mpi_powm): Simplified allocation of the result to fix a
|
||||
double free bug. This is bug#977. Reported by Haakon Ringberg.
|
||||
|
||||
2008-08-20 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-bit.c (gcry_mpi_lshift): Actually implement.
|
||||
|
||||
2008-08-19 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-bit.c (gcry_mpi_lshift): New.
|
||||
|
||||
2007-10-31 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-mod.c (gcry_mpi_mod): Remove
|
||||
* mpi-inv.c (_gcry_mpi_invm): Remove _ prefix.
|
||||
* mpiutil.c (_gcry_mpi_swap): Remove.
|
||||
(_gcry_mpi_new): Remove.
|
||||
(_gcry_mpi_snew): Remove.
|
||||
(gcry_mpi_invm): Remove.
|
||||
(gcry_mpi_copy): Remove and rename _version to this.
|
||||
(gcry_mpi_set, gcry_mpi_set_ui): Merge with _ version.
|
||||
* mpi-inv.c (gcry_mpi_invm): Remove _ prefix and return 1.
|
||||
* mpi-mul.c (gcry_mpi_mul_2exp): Remove and rename _ version to this.
|
||||
|
||||
2007-10-29 Werner Koch <wk@g10code.com>
|
||||
|
||||
* config.links: No Candadian Cross here, thus use $host instead of
|
||||
$target.
|
||||
|
||||
2007-10-26 Werner Koch <wk@g10code.com>
|
||||
|
||||
* config.links (mpi_optional_modules): Special rules for Apple
|
||||
Darwin on ia32 from Gregor Riepl.
|
||||
|
||||
2007-05-09 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* config.links: Rename assembler file links by suffixing "-asm".
|
||||
* Makefile.am (CCASCOMPILE, LTCCASCOMPILE, CLEANFILES,
|
||||
libmpi_la_LIBADD, libmpi_la_DEPENDENCIES, SUFFIXES, .S.o, .S.obj,
|
||||
.S.lo): Removed variables and targets.
|
||||
(mpih_add1, mpih_sub1, mpih_mul1, mpih_mul2, mpih_mul3,
|
||||
mpih_lshift, mpih_rshift, mpih_udiv, mpih_udiv_qrnnd,
|
||||
nodist_libmpi_la_SOURCES): New variables.
|
||||
(DISTCLEANFILES): Rename assembler file links by suffixing "-asm".
|
||||
Add variants for C file links.
|
||||
|
||||
2007-05-04 Werner Koch <wk@g10code.com>
|
||||
|
||||
* config.links (path): Allowthe sue of colons as delimiters.
|
||||
|
||||
2007-05-03 Werner Koch <wk@g10code.com>
|
||||
|
||||
* pentium4/distfiles: Fixed.
|
||||
|
||||
2007-04-30 Werner Koch <wk@g10code.com>
|
||||
|
||||
* config.links: Create a file mod-source-info.h.
|
||||
* Makefile.am (DISTCLEANFILES): Add that file.
|
||||
* mpiutil.c (_gcry_mpi_get_hw_config): New.
|
||||
|
||||
2007-04-28 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* config.links: Add additional assembler search directories.
|
||||
|
||||
2007-03-28 Werner Koch <wk@g10code.com>
|
||||
|
||||
* ec.c: New.
|
||||
|
||||
2007-03-23 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-bit.c (_gcry_mpi_lshift_limbs): Assign AP after the resize.
|
||||
|
||||
* mpi-div.c (gcry_mpi_mod, _gcry_mpi_mod): Moved to ..
|
||||
* mpi-mod.c: .. new file.
|
||||
(_gcry_mpi_barrett_init, _gcry_mpi_barrett_free): New.
|
||||
(_gcry_mpi_mod_barrett): New.
|
||||
(_gcry_mpi_mul_barrett): New.
|
||||
|
||||
2007-03-22 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-div.c (_gcry_mpi_mod): New.
|
||||
* mpiutil.c (_gcry_mpi_new, _gcry_mpi_snew): New.
|
||||
|
||||
2007-03-13 Werner Dittmann <Werner.Dittmann@t-online.de> (wk)
|
||||
|
||||
* amd64/mpih-add1.S, amd64/mpih-add1.S, amd64/mpih-lshift.S
|
||||
* amd64/mpih-mul1.S, amd64/mpih-mul2.S, amd64/mpih-mul3.S
|
||||
* amd64/mpih-rshift.S, amd64/mpih-sub1.S: New.
|
||||
* config.links: Add case for x86_64.
|
||||
|
||||
2007-02-23 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-pow.c (gcry_mpi_powm): Remove unused var ESIGN.
|
||||
|
||||
* mpiutil.c (gcry_mpi_get_flag): Let it return a value to silent
|
||||
MIPSpro cc warning.
|
||||
|
||||
2007-02-21 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpicoder.c (_gcry_mpi_set_buffer): Made BUFFER a void*.
|
||||
|
||||
2006-11-15 Werner Koch <wk@g10code.com>
|
||||
|
||||
* Makefile.am (.S.o): Check for srcdir also in in CPP pass.
|
||||
(INCLUDES): Removed.
|
||||
(AM_CPPFLAGS, AM_CFLAGS): New, modified. Merged with Moritz'
|
||||
changes.
|
||||
|
||||
2006-11-05 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* Makefile.am (AM_CFLAGS): Added -I$(top_builddir)/src so that the
|
||||
new gcrypt.h is used, not the one installed in the system.
|
||||
|
||||
2006-10-23 Werner Koch <wk@g10code.com>
|
||||
|
||||
* config.links (mpi_optional_modules): Make sure that powerpc64 is
|
||||
matched before a generic powerpc. Reported by Andreas Metzler.
|
||||
Should fix Debian bug 284609.
|
||||
|
||||
2006-08-25 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-bit.c (gcry_mpi_rshift): Don't shift if N == 0 but do a
|
||||
plain copy.
|
||||
|
||||
2006-08-04 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-bit.c (gcry_mpi_rshift): Rewritten to remove the limitation
|
||||
on N (which used to be less than BITS_PER_MPI_LIMB).
|
||||
|
||||
2006-08-03 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpi-bit.c (gcry_mpi_set_bit, gcry_mpi_set_highbit): Fixed
|
||||
allocation. Reported by bpgcrypt at itaparica.org.
|
||||
* mpiutil.c (_gcry_mpi_resize): Clear the new part of the resized
|
||||
limb space.
|
||||
|
||||
2006-07-26 Werner Koch <wk@g10code.com>
|
||||
|
||||
* mpiutil.c (gcry_mpi_randomize): Changed P to unsigned char*.
|
||||
|
||||
* mpicoder.c (gcry_mpi_scan): Changed arg BUFFER to void*.
|
||||
(mpi_read_from_buffer): Made BUFFER arg const.
|
||||
(gcry_mpi_scan): Removed now needless cast. Add cast for arg to
|
||||
mpi_fromstr.
|
||||
(gcry_mpi_print): Made TMP unsigned.
|
||||
|
||||
* Makefile.am (AM_CCASFLAGS): New.
|
||||
|
||||
2005-10-09 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpi-cmp.c (gcry_mpi_cmp_ui): Rewritten; correctly handle case of
|
||||
zero limbs in U.
|
||||
|
||||
2005-04-27 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpiutil.c (gcry_mpi_randomize): Store random data in secure
|
||||
memory if the given MPI is secure - not the other way around (argl).
|
||||
|
||||
2005-04-23 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* Makefile.am: Don't assume the compiler will pre-process the .S
|
||||
files. Some compilers, like those from HP and IBM, don't do
|
||||
this. So, we use the same solution gnupg-1.4.0 does. Preprocess
|
||||
first and then compile.
|
||||
|
||||
* hppa1.1/mpih-mul3.S: Add "level 1.1" directive to disable
|
||||
warning about using PA-RISC1.1 opcodes.
|
||||
* hppa1.1/mpih-mul2.S: Likewise.
|
||||
* hppa1.1/mpih-mul1.S: Likewise.
|
||||
* hppa1.1/udiv-qrnnd.S: Likewise.
|
||||
|
||||
2005-02-16 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpiutil.c (_gcry_mpi_alloc_limb_space): Rewritten, fixed memory
|
||||
corruption.
|
||||
|
||||
2005-02-06 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpiutil.c (_gcry_mpi_get_ui, gcry_mpi_get_ui): New functions.
|
||||
|
||||
2005-01-05 Werner Koch <wk@g10code.com>
|
||||
|
||||
* hppa1.1/udiv-qrnnd.S: Reverted change of 2004-03-02 but kept the
|
||||
.align directive.
|
||||
|
||||
2004-12-16 Werner Koch <wk@g10code.com>
|
||||
|
||||
* config.links (mpi_optional_modules): Move entry for powerpc64
|
||||
before generic powerpc. Suggested by Rafael Ávila de Espíndola.
|
||||
|
||||
2004-03-02 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* hppa1.1/udiv-qrnnd.S: Alignment fix from Lamont Jones for
|
||||
Debian. Taken from gnupg-1.3.
|
||||
|
||||
* longlong.h: Added PowerPC 64 bit code from GPM-4.1.2 but didn't
|
||||
enable it yet. Some whitespace changes in HPPA to fix assembler
|
||||
problems on HP-UX. From gnupg 1.3
|
||||
|
||||
* mpiutil.c (_gcry_mpi_alloc_limb_space): Better allocate
|
||||
something even if NLIMBS is passed as 0.
|
||||
|
||||
* config.links: Updated system list to match gnupg 1.3.
|
||||
|
||||
2003-12-19 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpi-internal.h [M_DEBUG]: Removed this unused code.
|
||||
(struct karatsuba_ctx): Added TSPACE_NLIMBS and TP_NLIMBS.
|
||||
* mpiutil.c (_gcry_mpi_free_limb_space): Add arg NLIMBS and wipe
|
||||
out the memory. Changed all callers.
|
||||
* mpih-mul.c (_gcry_mpih_mul_karatsuba_case): Keep track of
|
||||
allocated limbs.
|
||||
* mpi-div.c (_gcry_mpi_tdiv_qr): Keep track of allocated limbs.
|
||||
* mpi-mul.c (gcry_mpi_mul): Ditto.
|
||||
* mpi-pow.c (gcry_mpi_powm): Ditto.
|
||||
|
||||
* Manifest: Empty new file. Also add Manifest files to all CPU
|
||||
specific directories.
|
||||
* Makefile.am: Added.
|
||||
|
||||
* mpiutil.c (gcry_mpi_randomize): Use gcry_create_nonce if WEAK
|
||||
random has been requested.
|
||||
|
||||
2003-10-31 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* i386/mpih-rshift.S, i386/mpih-lshift.S: Use %dl and not %edx for
|
||||
testb; this avoids an assembler warning.
|
||||
|
||||
* mpi-pow.c (gcry_mpi_powm): s/exp/expo/ to avoid shadowing warning.
|
||||
|
||||
2003-08-19 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* Makefile.am (SUFFIXES): New variable.
|
||||
(.S.o, .S.lo, .S.obj): Rewritten.
|
||||
|
||||
2003-07-30 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* longlong.h (__clz_tab): Renamed to _gcry_clz_tab.
|
||||
* mpi-bit.c (__clz_tab): Likewise.
|
||||
|
||||
2003-07-27 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpicoder.c (gcry_mpi_scan): New argument BUFLEN to replace the
|
||||
use of the intial value of NBYTES. Changed BUFFER to unsigned.
|
||||
(gcry_mpi_print): Likewise.
|
||||
(gcry_mpi_dump): New.
|
||||
(_gcry_log_mpidump): Make use of gcry_mpi_dump.
|
||||
(mpi_print): Removed.
|
||||
(gcry_mpi_scan): Allocated mpi in secure memory when required.
|
||||
(gcry_mpi_aprint): Changed BUFFER to unsigned char*.
|
||||
|
||||
2003-07-14 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpicoder.c: Used gcry_err* wrappers for libgpg-error symbols.
|
||||
|
||||
2003-06-16 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpi-add.c: Replace last occurences of old type names with newer
|
||||
names (i.e. replace MPI with gcry_mpi_t).
|
||||
* mpi-bit.c: Likewise.
|
||||
* mpi-cmp.c: Likewise.
|
||||
* mpi-div.c: Likewise.
|
||||
* mpi-gcd.c: Likewise.
|
||||
* mpi-internal.h: Likewise.
|
||||
* mpi-inv.c: Likewise.
|
||||
* mpi-mpow.c: Likewise.
|
||||
* mpi-mul.c: Likewise.
|
||||
* mpi-pow.c: Likewise.
|
||||
* mpi-scan.c: Likewise.
|
||||
* mpicoder.c: Likewise.
|
||||
* mpiutil.c: Likewise.
|
||||
|
||||
2003-06-09 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpicoder.c (gcry_mpi_scan): Adjust for libgpg-error.
|
||||
(gcry_mpi_print): Likewise.
|
||||
(gcry_mpi_aprint): Likewise.
|
||||
|
||||
2003-06-07 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* longlong.h, mpi-add.c, mpi-bit.c, mpi-cmp.c, mpi-div.c,
|
||||
mpi-gcd.c, mpi-inline.c, mpi-inline.h, mpi-internal.h, mpi-inv.c,
|
||||
mpi-mpow.c, mpi-mul.c, mpi-pow.c, mpi-scan.c, mpicoder.c,
|
||||
mpih-div.c, mpih-mul.c, mpiutil.c, generic/mpi-asm-defs.h,
|
||||
generic/mpih-add1.c, generic/mpih-lshift.c, generic/mpih-mul1.c,
|
||||
generic/mpih-mul2.c, generic/mpih-mul3.c, generic/mpih-rshift.c,
|
||||
generic/mpih-sub1.c, generic/udiv-w-sdiv.c, i386/syntax.h,
|
||||
m68k/syntax.h, mips3/mpi-asm-defs.h, powerpc32/syntax.h: Edited
|
||||
all preprocessor instructions to remove whitespace before the '#'.
|
||||
This is not required by C89, but there are some compilers out
|
||||
there that don't like it. Replaced any occurence of the now
|
||||
deprecated type names with the new ones.
|
||||
|
||||
2003-05-21 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpiutil.c (_gcry_mpi_alloc_limb_space): Only try to allocate
|
||||
memory in case the amount of bytes to allocate is non-zero.
|
||||
|
||||
2003-04-27 Moritz Schulte <moritz@g10code.com>
|
||||
|
||||
* mpiutil.c (_gcry_mpi_resize): Allocate secure memory, in case
|
||||
bit zero of `flags' is set.
|
||||
|
||||
* mpi-add.c (gcry_mpi_sub): Simplify function; always use a
|
||||
temporary variable now.
|
||||
|
||||
2003-04-15 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* longlong.h (umul_ppmm): Support SH3 and SH4. Thanks to
|
||||
kazuya.s@jp.yokogawa.com.
|
||||
|
||||
2003-04-02 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpicoder.c (gcry_mpi_print): Fixed testing against possible
|
||||
uninitialized LEN. Valgrinded by Nikos Mavroyanopoulos.
|
||||
|
||||
2003-01-15 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* longlong.h: Removed some spaces between backslashes and newlines.
|
||||
|
||||
2002-09-20 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpi-mul.c (gcry_mpi_mul_2exp): New. This was declared in
|
||||
gcrypt.h but only implemented as internal function. Noted by Timo
|
||||
but a few minutes to late for today's release.
|
||||
|
||||
* Makefile.am (DISTCLEANFILES): Include mpi-asm-defs.h
|
||||
|
||||
2002-09-18 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* Makefile.am (.S.lo): Pass -DPIC. i386, PPC and Sparc code
|
||||
require it. It worked for me because I am using the i586 code.
|
||||
|
||||
2002-08-23 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* Makefile.am (.S.lo): Fixed for libtool build with --disable-shared.
|
||||
|
||||
2002-07-24 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* longlong.h: Replaced all K&R multiline strings by ISO ones for
|
||||
the sake of modern compilers. Suggested by Marco Parrone.
|
||||
|
||||
2002-06-24 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpiutil.c (gcry_mpi_swap): New.
|
||||
|
||||
* mpi-div.c (gcry_mpi_div): New.
|
||||
(gcry_mpi_mod): New.
|
||||
* mpi-inv.c (gcry_mpi_invm): New.
|
||||
|
||||
* mpicoder.c (do_get_buffer): Make sure that we allocate at least
|
||||
one byte.
|
||||
|
||||
2002-06-12 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* hppa1.1/udiv-qrnnd.S: Changes for PIC by Randolph Chung.
|
||||
|
||||
2002-05-15 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* config.links: Chnage the way the mpi modules are determined.
|
||||
* Makefile.am: Revamped to better handle modules
|
||||
|
||||
2002-05-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
Changed license of all files to the LGPL.
|
||||
|
||||
2002-04-18 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpicoder.c (gcry_mpi_scan): Don't use normalize on a NULL MPI.
|
||||
|
||||
2002-03-20 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpicoder.c (mpi_read_from_buffer): Bail out on a zero length
|
||||
buffer because we can't eventually do an malloc of this size.
|
||||
Reported by Timo.
|
||||
|
||||
2002-01-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpi-inv.c (_gcry_mpi_invm): Typo fixes, noted by Carlo Perassi.
|
||||
|
||||
2001-11-01 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpicoder.c (gcry_mpi_scan): Allow to pass a nbytes as NULL or
|
||||
with value 0 for format GCRY_FMT_SSH, so that the length is not
|
||||
used for any checks, only the length stored in the bufer is used.
|
||||
This is a nice format becuase we can just pass a buffer around and
|
||||
don't need to care about its length.
|
||||
|
||||
2001-08-03 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* config.links: Changed the way the list of files to be
|
||||
symlinked is returned.
|
||||
|
||||
2001-05-31 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpih-cmp.c: Removed and moved mpihelp_cmp to ..
|
||||
* mpi-inline.h: .. here.
|
||||
|
||||
Major function renaming. All global functions are now prefixed
|
||||
with _gcry_ or gcry_. Renamed also all mpihelp_ to just mpih_ so
|
||||
that functions names are not getting to long an unreadable and for
|
||||
better matching with the filenames.
|
||||
|
||||
2001-05-28 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpicoder.c (mpi_fromstr): Made static and assume that all input
|
||||
is in hexformat.
|
||||
|
||||
Updated all CPU specific code with the one from GnuPG-1.0.5. This
|
||||
is just a change of text formatting and the use of .label
|
||||
instead of labels for hppa and pa7100.
|
||||
|
||||
* longlong.h: Fixes for ARM by Phil Blundell.
|
||||
|
||||
2001-03-29 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpi-mul.c (mpi_mul): Make sure that secret temporary results are
|
||||
not stored in w. Suggested by Florian Weimer.
|
||||
|
||||
* config.links: Use i386 code for i386. According to tests by
|
||||
Kevin Ryde the i586 code runs slow on i386 CPUs. Ditto for i786.
|
||||
|
||||
2001-01-11 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* Makefile.am: Removed mpi.h.
|
||||
|
||||
2000-12-19 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpi-internal.h: Put limb_t definition in an ifdef.
|
||||
|
||||
Major change:
|
||||
Removed all GnuPG stuff and renamed this piece of software
|
||||
to gcrypt.
|
||||
|
||||
2000-11-14 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* mpi-internal.h, mpi.h: Changed the way they are called and
|
||||
introduced DID_MPI_LIMP_TYPEDEF hack. Very ugly, should all be
|
||||
revamped.
|
||||
|
||||
* Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
|
||||
problems.
|
||||
|
||||
2000-10-11 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* generic/mpi-asm-defs.h: New.
|
||||
* mips3/mpi-asm-defs.h: New.
|
||||
* config.links: Create a link to one of the above files.
|
||||
|
||||
Fri Jul 28 18:19:11 CEST 2000 Werner Koch <wk@openit.de>
|
||||
|
||||
* mpicoder.c (gcry_mpi_scan): Normalize the returned MPI.
|
||||
|
||||
Tue Jul 25 17:44:15 CEST 2000 Werner Koch <wk@openit.de>
|
||||
|
||||
* config.links: Support for powerpc--netbsd by Gabriel Rosenkoetter.
|
||||
|
||||
Mon Jul 17 16:35:47 CEST 2000 Werner Koch <wk@>
|
||||
|
||||
* power/: Add all files from GMP for this CPU. Converted comments to
|
||||
CPP comments because some ASes complain about ' in comments.
|
||||
|
||||
* config.links: Support for BSDI 4.x; by Wayne Chapeskie. Add support
|
||||
for FreeBSD 5 and made the case stmt looking nicer; by Jun Kuriyama.
|
||||
Add support for NetBSD.
|
||||
(sparc8): Made the search path the same as sparc9
|
||||
(sparc64-unknown-linux-gnu): use udiv module; by Adam Mitchell.
|
||||
|
||||
* Makefile.am: c/SFLAGS/ASFLAGS/. This has only been used by the
|
||||
powerpc and actually never passed the -Wa,foo to the cc.
|
||||
|
||||
* mpih-div.c (mpihelp_divrem): The MPN_COPY_DECR copied one element
|
||||
too many. This is a gmp2.0.2p9.txt patch.
|
||||
|
||||
* longlong.h (umul_ppmm): Fixes for ARM-4. By Sean MacLennan.
|
||||
|
||||
* mpi-internal.h (karatsuba_ctx): New.
|
||||
* mpih-mul.c (mpihelp_release_karatsuba_ctx): New.
|
||||
(mpihelp_mul_karatsuba_case): New.
|
||||
(mpihelp_mul): Splitted to make use of the new functions.
|
||||
* mpi-pow.c (mpi_powm): Make use of the new splitted function to avoid
|
||||
multiple allocation of temporary memory during the karatsuba operations.
|
||||
* mpi_mpow.c: Removed the unused Barrett code.
|
||||
|
||||
2000-03-21 16:17:30 Werner Koch (wk@habibti.openit.de)
|
||||
|
||||
* config.links: Add support for FreeBSD 5.
|
||||
|
||||
Mon Jan 24 22:24:38 CET 2000 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* mpicoder.c (gcry_mpi_aprint): Now really returns the length.
|
||||
|
||||
Mon Jan 24 13:04:28 CET 2000 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* mpiutil.c: Removed all memory debugging code.
|
||||
|
||||
* mpicoder.c (gcry_mpi_aprint): New.
|
||||
|
||||
* Replaced all m_ memory functions by g10_ ones.
|
||||
|
||||
Fri Dec 31 14:06:56 CET 1999 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* mpi-bit.c (gcry_mpi_get_nbits): New.
|
||||
|
||||
* mpiutil.c (mpi_set_secure): made static.
|
||||
(gcry_mpi_get_flag): New.
|
||||
(gcry_mpi_set_flag): New.
|
||||
(gcry_mpi_clear_flag): New.
|
||||
(mpi_set_opaque): renamed to gcry_mpi_set_opaque.
|
||||
(mpi_get_opaque): renamed to gcry_mpi_get_opaque.
|
||||
|
||||
Fri Dec 31 12:48:31 CET 1999 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* mpicoder.c (mpi_read_from_buffer): Made static.
|
||||
(gcry_mpi_print): A buffer of NULL is now allowed to get the required
|
||||
length back.
|
||||
(mpi_get_keyid): Removed.
|
||||
(mpi_print): Made static - should be removed.
|
||||
|
||||
Wed Dec 8 21:58:32 CET 1999 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* Makefile.am (INCLUDES): Add ../gcrypt.
|
||||
|
||||
* g10m.c : Removed.
|
||||
|
||||
* mpicoder.c (mpi_write): Removed.
|
||||
(mpi_read): Removed.
|
||||
(gcry_mpi_scan): New. Taken from ../gcrypt/mpiapi.c.
|
||||
(gcry_mpi_print): Ditto.
|
||||
|
||||
* mpi-pow.c (mpi_powm): Renamed to ...
|
||||
(gcry_mpi_powm): ... this.
|
||||
|
||||
* mpiutil.c (gcry_mpi_new): New as a wrapper around the old function.
|
||||
Taken from ../gcrypt/mpiapi.c.
|
||||
(gcry_mpi_snew): Ditto.
|
||||
(gcry_mpi_release): Ditto.
|
||||
(gcry_mpi_copy): Ditto.
|
||||
(gcry_mpi_set): Ditto.
|
||||
(gcry_mpi_set_ui): Ditto.
|
||||
(gcry_mpi_cmp): Ditto.
|
||||
(gcry_mpi_cmp_ui): Ditto.
|
||||
(gcry_mpi_randomize): Ditto.
|
||||
|
||||
* mpicoder.c (mpi_print): Removed the nbit_info kludge.
|
||||
* mpi-bits.c (mpi_get_nbits): Replaced the is_protected stuff by
|
||||
checking whether it is an opaque mpi and then returns it's length
|
||||
in bits.
|
||||
* mpiutil.c (mpi_set_opaque): Changed the interface to take a number
|
||||
of bits for the length. Adjusted all users.
|
||||
(mpi_get_opaque): Ditto.
|
||||
|
||||
Fri Nov 19 17:15:20 CET 1999 Werner Koch <wk@gnupg.de>
|
||||
|
||||
* mpicoder.c (g10_log_mpidump): Add a temporary workaround
|
||||
|
||||
* mpih-mul.c (mpihelp_mul_n): s/m_is_ecure/g10_is_secure/
|
||||
|
||||
* mpiutil.c (mpi_alloc): Remved the debug mode because it has turned
|
||||
out, that this feature was not very useful in the past. Use the
|
||||
new alloc functions.
|
||||
(mpi_alloc_secure): Ditto.
|
||||
(mpi_alloc_limb_space): Ditto.
|
||||
(mpi_free_limb_space): Ditto.
|
||||
(mpi_resize): Ditto.
|
||||
(mpi_free): Ditto.
|
||||
(mpi_set_secure): Removed the debug stuff.
|
||||
(mpi_set_opaque): Ditto.
|
||||
(mpi_copy): Ditto.
|
||||
(mpi_alloc_set_ui): Ditto.
|
||||
(mpi_m_check): Use g10_ wrapper.
|
||||
|
||||
Mon Aug 30 20:38:33 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
|
||||
* config.links: Add case label for DJGPP
|
||||
|
||||
Wed Jul 14 19:42:08 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
|
||||
* Makefile.am: Use .s files as temporaries, disabled other .S rules.
|
||||
|
||||
Wed Jul 7 13:08:40 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
|
||||
* mpicoder.c (g10_log_mpidump): New.
|
||||
|
||||
* Makefile.am: Support for libtool.
|
||||
|
||||
Fri Jul 2 11:45:54 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
|
||||
* mpi-bit.c (mpi_lshift_limbs,mpi_rshift_limbs): New.
|
||||
* mpi-mpow.c (barrett_mulm): New but diabled.
|
||||
|
||||
Tue Jun 1 16:01:46 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* config.links (i[56]86*-*-freebsdelf*): New.
|
||||
|
||||
Sun May 23 14:20:22 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* config.links (sysdep.h): Not any more conditionally created.
|
||||
|
||||
Tue May 4 15:47:53 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mpiutil.c (mpi_alloc_like): New.
|
||||
|
||||
Mon Apr 26 17:48:15 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mpih-add.c, mpih-sub.c: Removed
|
||||
* mpi-inline.c: New.
|
||||
* mpi-inline.h: Make it usable by mpi-inline.c.
|
||||
|
||||
Sun Apr 18 10:11:28 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mpih-mul.c (mpihelp_mul_n): Fixed use of memory region.
|
||||
(mpihelp_mul): Ditto.
|
||||
|
||||
Wed Apr 7 20:51:39 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* Makefile.am: Explicit rules to invoke cpp on *.S
|
||||
|
||||
Mon Mar 8 20:47:17 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* config.links: Take advantage of the with_symbol_underscore macro.
|
||||
Add support for freebsd 4.
|
||||
|
||||
Wed Feb 24 11:07:27 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mips3/mpih-sub1.S: Removed left over junk in last line. (Should I
|
||||
blame me or my editor?).
|
||||
|
||||
Sat Feb 13 12:04:43 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* Makefile.am: Removed the +=. Add MPI_OPT_FLAGS.
|
||||
|
||||
Sat Jan 9 16:02:23 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mpi-cmp.c (mpi_cmp_ui): Normalized the arg.
|
||||
|
||||
Thu Jan 7 18:00:58 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* mpi-bit.c (mpi_normalize): New.
|
||||
(mpi_get_nbits): Normalize the MPI.
|
||||
* mpi-bit.c (mpi_cmp): Normalize the MPI before the compare.
|
||||
|
||||
|
||||
Tue Dec 8 13:15:16 CET 1998 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* config.links: Moved the case for powerpc*linux
|
||||
* powerpcp32/*.S: Removed some underscores.
|
||||
|
||||
Thu Nov 26 07:27:52 1998 Werner Koch <werner.koch@guug.de>
|
||||
|
||||
* config.links: Support for ppc with ELF
|
||||
* powerpc32/syntax.h: New.
|
||||
* powerpc32/*.S: Applied ELF patches (glibc patches)
|
||||
|
||||
Tue Nov 10 19:31:37 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* power*/ : Started with stuff for PPC
|
||||
* config.links: Some stuff for PPC.
|
||||
* generic/udiv-w-sdiv.c: New but disabled.
|
||||
|
||||
Tue Oct 27 12:37:46 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links (freebsd): Fixes for FreeBSD 3.0
|
||||
|
||||
Wed Oct 14 09:59:30 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links (freebsd): ELF patches from Jun Kuriyama.
|
||||
|
||||
Thu Oct 8 13:28:17 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpi-mpow.c (mpi_mulpowm): Fixed mem leak (m_free/mpi_free).
|
||||
|
||||
Thu Sep 17 18:08:50 1998 Werner Koch (wk@(none))
|
||||
|
||||
* hppa1.1/udiv-qrnnd.S: Fix from Steffen Zahn for HPUX 10.20
|
||||
|
||||
Thu Aug 6 16:39:28 1998 Werner Koch,mobil,,, (wk@tobold)
|
||||
|
||||
* mpi-bit.c (mpi_set_bytes): Removed.
|
||||
|
||||
Wed Aug 5 15:11:12 1998 Werner Koch (wk@(none))
|
||||
|
||||
* mpicoder.c (mpi_read_from_buffer): New.
|
||||
|
||||
* mpiutil.c (mpi_set_opaque): New.
|
||||
(mpi_get_opaque): New.
|
||||
(mpi_copy): Changed to support opauqe flag
|
||||
(mpi_free): Ditto.
|
||||
|
||||
Sat Jul 4 10:11:11 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpiutil.c (mpi_clear): Reset flags.
|
||||
(mpi_set): Ditto.
|
||||
(mpi_alloc_secure): Set flag to 1 and not ored the 1 in, tsss..
|
||||
|
||||
Fri Jun 26 11:19:06 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpiutil.c (mpi_alloc): set nbits to 0.
|
||||
(mpi_alloc_secure): Ditto.
|
||||
(mpi_clear): Ditto.
|
||||
|
||||
Thu Jun 25 11:50:01 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mips3/*.S: New
|
||||
|
||||
Mon May 18 13:47:06 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links: split mpih-shift into mpih-[lr]shift and
|
||||
changed all implementations.
|
||||
* mpi/alpha: add some new assembler stuff.
|
||||
|
||||
Wed May 13 11:04:29 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links: Add support for MIPS
|
||||
|
||||
Thu Apr 9 11:31:36 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpicoder.c (mpi_get_secure_buffer): New.
|
||||
|
||||
Wed Apr 8 09:44:33 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links: Applied small fix from Ulf Möller.
|
||||
|
||||
Mon Apr 6 12:38:52 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpicoder.c (mpi_get_buffer): Removed returned leading zeroes
|
||||
and changed all callers.
|
||||
|
||||
Tue Mar 10 13:40:34 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpi-bit.c (mpi_clear_highbit): New.
|
||||
|
||||
Mon Mar 2 19:29:00 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* Makefile.am (DISTCLEANFILES): New
|
||||
|
||||
Thu Feb 26 06:48:54 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links (X86_BROKEN_ALIGN): Added for some systems.
|
||||
|
||||
Mon Feb 23 12:21:40 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* mpi/m68k/mpih-shift.S (Lspecial): Changed duplicate symbol.
|
||||
|
||||
Mon Feb 16 13:00:27 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* config.links : Add detection of m68k cpus
|
||||
|
||||
|
||||
Copyright 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; as a special exception the author gives
|
||||
unlimited permission to copy and/or distribute it, with or without
|
||||
modifications, as long as this notice is preserved.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
|
||||
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
177
jni/libgcrypt/mpi/Makefile.am
Normal file
177
jni/libgcrypt/mpi/Makefile.am
Normal file
@@ -0,0 +1,177 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
# Copyright (C) 1992, 1999, 2000, 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
|
||||
|
||||
# 1.5 leads to a combinatorial explosion due to all the conditionals
|
||||
# I was not able to build it with 64Megs - 1.6 fixes this.
|
||||
# not anymore required: AUTOMAKE_OPTIONS = 1.6
|
||||
|
||||
# Need to include ../src in addition to top_srcdir because gcrypt.h is
|
||||
# a built header.
|
||||
AM_CPPFLAGS = -I../src -I$(top_srcdir)/src
|
||||
AM_CFLAGS = $(GPG_ERROR_CFLAGS)
|
||||
|
||||
AM_ASFLAGS = $(MPI_SFLAGS)
|
||||
AM_CCASFLAGS = $(NOEXECSTACK_FLAGS)
|
||||
|
||||
EXTRA_DIST = Manifest config.links
|
||||
DISTCLEANFILES = mpi-asm-defs.h \
|
||||
mpih-add1-asm.S mpih-mul1-asm.S mpih-mul2-asm.S mpih-mul3-asm.S \
|
||||
mpih-lshift-asm.S mpih-rshift-asm.S mpih-sub1-asm.S asm-syntax.h \
|
||||
mpih-add1.c mpih-mul1.c mpih-mul2.c mpih-mul3.c \
|
||||
mpih-lshift.c mpih-rshift.c mpih-sub1.c \
|
||||
sysdep.h mod-source-info.h
|
||||
|
||||
# Beware: The following list is not a comment but grepped by
|
||||
# config.links to get the list of symlinked modules
|
||||
# Optional modules are marked with an O in the second column.
|
||||
#BEGIN_ASM_LIST
|
||||
# mpih-add1 C
|
||||
# mpih-sub1 C
|
||||
# mpih-mul1 C
|
||||
# mpih-mul2 C
|
||||
# mpih-mul3 C
|
||||
# mpih-lshift C
|
||||
# mpih-rshift C
|
||||
# udiv O
|
||||
# udiv-qrnnd O
|
||||
#END_ASM_LIST
|
||||
|
||||
# Note: This function has not yet been implemented. There is only a dummy in
|
||||
# generic/
|
||||
# udiv-w-sdiv O
|
||||
|
||||
# And we need to have conditionals for all modules because
|
||||
# we don't know whether they are .c or .S. Very ugly; I know.
|
||||
# Remember to define them all in configure.ac
|
||||
if MPI_MOD_ASM_MPIH_ADD1
|
||||
mpih_add1 = mpih-add1-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_ADD1
|
||||
mpih_add1 = mpih-add1.c
|
||||
else
|
||||
mpih_add1 =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_MPIH_SUB1
|
||||
mpih_sub1 = mpih-sub1-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_SUB1
|
||||
mpih_sub1 = mpih-sub1.c
|
||||
else
|
||||
mpih_sub1 =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_MPIH_MUL1
|
||||
mpih_mul1 = mpih-mul1-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_MUL1
|
||||
mpih_mul1 = mpih-mul1.c
|
||||
else
|
||||
mpih_mul1 =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_MPIH_MUL2
|
||||
mpih_mul2 = mpih-mul2-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_MUL2
|
||||
mpih_mul2 = mpih-mul2.c
|
||||
else
|
||||
mpih_mul2 =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_MPIH_MUL3
|
||||
mpih_mul3 = mpih-mul3-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_MUL3
|
||||
mpih_mul3 = mpih-mul3.c
|
||||
else
|
||||
mpih_mul3 =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_MPIH_LSHIFT
|
||||
mpih_lshift = mpih-lshift-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_LSHIFT
|
||||
mpih_lshift = mpih-lshift.c
|
||||
else
|
||||
mpih_lshift =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_MPIH_RSHIFT
|
||||
mpih_rshift = mpih-rshift-asm.S
|
||||
else
|
||||
if MPI_MOD_C_MPIH_RSHIFT
|
||||
mpih_rshift = mpih-rshift.c
|
||||
else
|
||||
mpih_rshift =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_UDIV
|
||||
udiv = udiv-asm.S
|
||||
else
|
||||
if MPI_MOD_C_UDIV
|
||||
udiv = udiv.c
|
||||
else
|
||||
udiv =
|
||||
endif
|
||||
endif
|
||||
|
||||
if MPI_MOD_ASM_UDIV_QRNND
|
||||
udiv_qrnnd = udiv-qrnnd-asm.S
|
||||
else
|
||||
if MPI_MOD_C_UDIV_QRNND
|
||||
udiv_qrnnd = udiv-qrnnd.c
|
||||
else
|
||||
udiv_qrnnd =
|
||||
endif
|
||||
endif
|
||||
|
||||
noinst_LTLIBRARIES = libmpi.la
|
||||
|
||||
libmpi_la_LDFLAGS =
|
||||
nodist_libmpi_la_SOURCES = $(mpih_add1) $(mpih_sub1) $(mpih_mul1) \
|
||||
$(mpih_mul2) $(mpih_mul3) $(mpih_lshift) $(mpih_rshift) \
|
||||
$(udiv) $(udiv_qrnnd)
|
||||
libmpi_la_SOURCES = longlong.h \
|
||||
mpi-add.c \
|
||||
mpi-bit.c \
|
||||
mpi-cmp.c \
|
||||
mpi-div.c \
|
||||
mpi-gcd.c \
|
||||
mpi-internal.h \
|
||||
mpi-inline.h \
|
||||
mpi-inline.c \
|
||||
mpi-inv.c \
|
||||
mpi-mul.c \
|
||||
mpi-mod.c \
|
||||
mpi-pow.c \
|
||||
mpi-mpow.c \
|
||||
mpi-scan.c \
|
||||
mpicoder.c \
|
||||
mpih-div.c \
|
||||
mpih-mul.c \
|
||||
mpiutil.c \
|
||||
ec.c
|
||||
670
jni/libgcrypt/mpi/Makefile.in
Normal file
670
jni/libgcrypt/mpi/Makefile.in
Normal file
@@ -0,0 +1,670 @@
|
||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Copyright (C) 1992, 1999, 2000, 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
|
||||
|
||||
# 1.5 leads to a combinatorial explosion due to all the conditionals
|
||||
# I was not able to build it with 64Megs - 1.6 fixes this.
|
||||
# not anymore required: AUTOMAKE_OPTIONS = 1.6
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = mpi
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ChangeLog
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/noexecstack.m4 $(top_srcdir)/m4/onceonly.m4 \
|
||||
$(top_srcdir)/m4/socklen.m4 $(top_srcdir)/m4/sys_socket_h.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
LTLIBRARIES = $(noinst_LTLIBRARIES)
|
||||
libmpi_la_LIBADD =
|
||||
am_libmpi_la_OBJECTS = mpi-add.lo mpi-bit.lo mpi-cmp.lo mpi-div.lo \
|
||||
mpi-gcd.lo mpi-inline.lo mpi-inv.lo mpi-mul.lo mpi-mod.lo \
|
||||
mpi-pow.lo mpi-mpow.lo mpi-scan.lo mpicoder.lo mpih-div.lo \
|
||||
mpih-mul.lo mpiutil.lo ec.lo
|
||||
@MPI_MOD_ASM_MPIH_ADD1_FALSE@@MPI_MOD_C_MPIH_ADD1_TRUE@am__objects_1 = mpih-add1.lo
|
||||
@MPI_MOD_ASM_MPIH_ADD1_TRUE@am__objects_1 = mpih-add1-asm.lo
|
||||
@MPI_MOD_ASM_MPIH_SUB1_FALSE@@MPI_MOD_C_MPIH_SUB1_TRUE@am__objects_2 = mpih-sub1.lo
|
||||
@MPI_MOD_ASM_MPIH_SUB1_TRUE@am__objects_2 = mpih-sub1-asm.lo
|
||||
@MPI_MOD_ASM_MPIH_MUL1_FALSE@@MPI_MOD_C_MPIH_MUL1_TRUE@am__objects_3 = mpih-mul1.lo
|
||||
@MPI_MOD_ASM_MPIH_MUL1_TRUE@am__objects_3 = mpih-mul1-asm.lo
|
||||
@MPI_MOD_ASM_MPIH_MUL2_FALSE@@MPI_MOD_C_MPIH_MUL2_TRUE@am__objects_4 = mpih-mul2.lo
|
||||
@MPI_MOD_ASM_MPIH_MUL2_TRUE@am__objects_4 = mpih-mul2-asm.lo
|
||||
@MPI_MOD_ASM_MPIH_MUL3_FALSE@@MPI_MOD_C_MPIH_MUL3_TRUE@am__objects_5 = mpih-mul3.lo
|
||||
@MPI_MOD_ASM_MPIH_MUL3_TRUE@am__objects_5 = mpih-mul3-asm.lo
|
||||
@MPI_MOD_ASM_MPIH_LSHIFT_FALSE@@MPI_MOD_C_MPIH_LSHIFT_TRUE@am__objects_6 = mpih-lshift.lo
|
||||
@MPI_MOD_ASM_MPIH_LSHIFT_TRUE@am__objects_6 = mpih-lshift-asm.lo
|
||||
@MPI_MOD_ASM_MPIH_RSHIFT_FALSE@@MPI_MOD_C_MPIH_RSHIFT_TRUE@am__objects_7 = mpih-rshift.lo
|
||||
@MPI_MOD_ASM_MPIH_RSHIFT_TRUE@am__objects_7 = mpih-rshift-asm.lo
|
||||
@MPI_MOD_ASM_UDIV_FALSE@@MPI_MOD_C_UDIV_TRUE@am__objects_8 = udiv.lo
|
||||
@MPI_MOD_ASM_UDIV_TRUE@am__objects_8 = udiv-asm.lo
|
||||
@MPI_MOD_ASM_UDIV_QRNND_FALSE@@MPI_MOD_C_UDIV_QRNND_TRUE@am__objects_9 = udiv-qrnnd.lo
|
||||
@MPI_MOD_ASM_UDIV_QRNND_TRUE@am__objects_9 = udiv-qrnnd-asm.lo
|
||||
nodist_libmpi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
|
||||
$(am__objects_3) $(am__objects_4) $(am__objects_5) \
|
||||
$(am__objects_6) $(am__objects_7) $(am__objects_8) \
|
||||
$(am__objects_9)
|
||||
libmpi_la_OBJECTS = $(am_libmpi_la_OBJECTS) \
|
||||
$(nodist_libmpi_la_OBJECTS)
|
||||
libmpi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libmpi_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
|
||||
LTCPPASCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS)
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(libmpi_la_SOURCES) $(nodist_libmpi_la_SOURCES)
|
||||
DIST_SOURCES = $(libmpi_la_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_FILEVERSION = @BUILD_FILEVERSION@
|
||||
BUILD_REVISION = @BUILD_REVISION@
|
||||
BUILD_TIMESTAMP = @BUILD_TIMESTAMP@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
CCASFLAGS = @CCASFLAGS@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DL_LIBS = @DL_LIBS@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FALLBACK_SOCKLEN_T = @FALLBACK_SOCKLEN_T@
|
||||
FFLAGS = @FFLAGS@
|
||||
GCRYPT_CIPHERS = @GCRYPT_CIPHERS@
|
||||
GCRYPT_DIGESTS = @GCRYPT_DIGESTS@
|
||||
GCRYPT_PUBKEY_CIPHERS = @GCRYPT_PUBKEY_CIPHERS@
|
||||
GCRYPT_RANDOM = @GCRYPT_RANDOM@
|
||||
GPG_ERROR_CFLAGS = @GPG_ERROR_CFLAGS@
|
||||
GPG_ERROR_CONFIG = @GPG_ERROR_CONFIG@
|
||||
GPG_ERROR_LIBS = @GPG_ERROR_LIBS@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBGCRYPT_CIPHERS = @LIBGCRYPT_CIPHERS@
|
||||
LIBGCRYPT_CONFIG_API_VERSION = @LIBGCRYPT_CONFIG_API_VERSION@
|
||||
LIBGCRYPT_CONFIG_CFLAGS = @LIBGCRYPT_CONFIG_CFLAGS@
|
||||
LIBGCRYPT_CONFIG_LIBS = @LIBGCRYPT_CONFIG_LIBS@
|
||||
LIBGCRYPT_DIGESTS = @LIBGCRYPT_DIGESTS@
|
||||
LIBGCRYPT_LT_AGE = @LIBGCRYPT_LT_AGE@
|
||||
LIBGCRYPT_LT_CURRENT = @LIBGCRYPT_LT_CURRENT@
|
||||
LIBGCRYPT_LT_REVISION = @LIBGCRYPT_LT_REVISION@
|
||||
LIBGCRYPT_PUBKEY_CIPHERS = @LIBGCRYPT_PUBKEY_CIPHERS@
|
||||
LIBGCRYPT_THREAD_MODULES = @LIBGCRYPT_THREAD_MODULES@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
MPI_SFLAGS = @MPI_SFLAGS@
|
||||
NOEXECSTACK_FLAGS = @NOEXECSTACK_FLAGS@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PTH_CFLAGS = @PTH_CFLAGS@
|
||||
PTH_CONFIG = @PTH_CONFIG@
|
||||
PTH_LIBS = @PTH_LIBS@
|
||||
RANLIB = @RANLIB@
|
||||
RC = @RC@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
SYS_SOCKET_H = @SYS_SOCKET_H@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
# Need to include ../src in addition to top_srcdir because gcrypt.h is
|
||||
# a built header.
|
||||
AM_CPPFLAGS = -I../src -I$(top_srcdir)/src
|
||||
AM_CFLAGS = $(GPG_ERROR_CFLAGS)
|
||||
AM_ASFLAGS = $(MPI_SFLAGS)
|
||||
AM_CCASFLAGS = $(NOEXECSTACK_FLAGS)
|
||||
EXTRA_DIST = Manifest config.links
|
||||
DISTCLEANFILES = mpi-asm-defs.h \
|
||||
mpih-add1-asm.S mpih-mul1-asm.S mpih-mul2-asm.S mpih-mul3-asm.S \
|
||||
mpih-lshift-asm.S mpih-rshift-asm.S mpih-sub1-asm.S asm-syntax.h \
|
||||
mpih-add1.c mpih-mul1.c mpih-mul2.c mpih-mul3.c \
|
||||
mpih-lshift.c mpih-rshift.c mpih-sub1.c \
|
||||
sysdep.h mod-source-info.h
|
||||
|
||||
@MPI_MOD_ASM_MPIH_ADD1_FALSE@@MPI_MOD_C_MPIH_ADD1_FALSE@mpih_add1 =
|
||||
@MPI_MOD_ASM_MPIH_ADD1_FALSE@@MPI_MOD_C_MPIH_ADD1_TRUE@mpih_add1 = mpih-add1.c
|
||||
|
||||
# Beware: The following list is not a comment but grepped by
|
||||
# config.links to get the list of symlinked modules
|
||||
# Optional modules are marked with an O in the second column.
|
||||
#BEGIN_ASM_LIST
|
||||
# mpih-add1 C
|
||||
# mpih-sub1 C
|
||||
# mpih-mul1 C
|
||||
# mpih-mul2 C
|
||||
# mpih-mul3 C
|
||||
# mpih-lshift C
|
||||
# mpih-rshift C
|
||||
# udiv O
|
||||
# udiv-qrnnd O
|
||||
#END_ASM_LIST
|
||||
|
||||
# Note: This function has not yet been implemented. There is only a dummy in
|
||||
# generic/
|
||||
# udiv-w-sdiv O
|
||||
|
||||
# And we need to have conditionals for all modules because
|
||||
# we don't know whether they are .c or .S. Very ugly; I know.
|
||||
# Remember to define them all in configure.ac
|
||||
@MPI_MOD_ASM_MPIH_ADD1_TRUE@mpih_add1 = mpih-add1-asm.S
|
||||
@MPI_MOD_ASM_MPIH_SUB1_FALSE@@MPI_MOD_C_MPIH_SUB1_FALSE@mpih_sub1 =
|
||||
@MPI_MOD_ASM_MPIH_SUB1_FALSE@@MPI_MOD_C_MPIH_SUB1_TRUE@mpih_sub1 = mpih-sub1.c
|
||||
@MPI_MOD_ASM_MPIH_SUB1_TRUE@mpih_sub1 = mpih-sub1-asm.S
|
||||
@MPI_MOD_ASM_MPIH_MUL1_FALSE@@MPI_MOD_C_MPIH_MUL1_FALSE@mpih_mul1 =
|
||||
@MPI_MOD_ASM_MPIH_MUL1_FALSE@@MPI_MOD_C_MPIH_MUL1_TRUE@mpih_mul1 = mpih-mul1.c
|
||||
@MPI_MOD_ASM_MPIH_MUL1_TRUE@mpih_mul1 = mpih-mul1-asm.S
|
||||
@MPI_MOD_ASM_MPIH_MUL2_FALSE@@MPI_MOD_C_MPIH_MUL2_FALSE@mpih_mul2 =
|
||||
@MPI_MOD_ASM_MPIH_MUL2_FALSE@@MPI_MOD_C_MPIH_MUL2_TRUE@mpih_mul2 = mpih-mul2.c
|
||||
@MPI_MOD_ASM_MPIH_MUL2_TRUE@mpih_mul2 = mpih-mul2-asm.S
|
||||
@MPI_MOD_ASM_MPIH_MUL3_FALSE@@MPI_MOD_C_MPIH_MUL3_FALSE@mpih_mul3 =
|
||||
@MPI_MOD_ASM_MPIH_MUL3_FALSE@@MPI_MOD_C_MPIH_MUL3_TRUE@mpih_mul3 = mpih-mul3.c
|
||||
@MPI_MOD_ASM_MPIH_MUL3_TRUE@mpih_mul3 = mpih-mul3-asm.S
|
||||
@MPI_MOD_ASM_MPIH_LSHIFT_FALSE@@MPI_MOD_C_MPIH_LSHIFT_FALSE@mpih_lshift =
|
||||
@MPI_MOD_ASM_MPIH_LSHIFT_FALSE@@MPI_MOD_C_MPIH_LSHIFT_TRUE@mpih_lshift = mpih-lshift.c
|
||||
@MPI_MOD_ASM_MPIH_LSHIFT_TRUE@mpih_lshift = mpih-lshift-asm.S
|
||||
@MPI_MOD_ASM_MPIH_RSHIFT_FALSE@@MPI_MOD_C_MPIH_RSHIFT_FALSE@mpih_rshift =
|
||||
@MPI_MOD_ASM_MPIH_RSHIFT_FALSE@@MPI_MOD_C_MPIH_RSHIFT_TRUE@mpih_rshift = mpih-rshift.c
|
||||
@MPI_MOD_ASM_MPIH_RSHIFT_TRUE@mpih_rshift = mpih-rshift-asm.S
|
||||
@MPI_MOD_ASM_UDIV_FALSE@@MPI_MOD_C_UDIV_FALSE@udiv =
|
||||
@MPI_MOD_ASM_UDIV_FALSE@@MPI_MOD_C_UDIV_TRUE@udiv = udiv.c
|
||||
@MPI_MOD_ASM_UDIV_TRUE@udiv = udiv-asm.S
|
||||
@MPI_MOD_ASM_UDIV_QRNND_FALSE@@MPI_MOD_C_UDIV_QRNND_FALSE@udiv_qrnnd =
|
||||
@MPI_MOD_ASM_UDIV_QRNND_FALSE@@MPI_MOD_C_UDIV_QRNND_TRUE@udiv_qrnnd = udiv-qrnnd.c
|
||||
@MPI_MOD_ASM_UDIV_QRNND_TRUE@udiv_qrnnd = udiv-qrnnd-asm.S
|
||||
noinst_LTLIBRARIES = libmpi.la
|
||||
libmpi_la_LDFLAGS =
|
||||
nodist_libmpi_la_SOURCES = $(mpih_add1) $(mpih_sub1) $(mpih_mul1) \
|
||||
$(mpih_mul2) $(mpih_mul3) $(mpih_lshift) $(mpih_rshift) \
|
||||
$(udiv) $(udiv_qrnnd)
|
||||
|
||||
libmpi_la_SOURCES = longlong.h \
|
||||
mpi-add.c \
|
||||
mpi-bit.c \
|
||||
mpi-cmp.c \
|
||||
mpi-div.c \
|
||||
mpi-gcd.c \
|
||||
mpi-internal.h \
|
||||
mpi-inline.h \
|
||||
mpi-inline.c \
|
||||
mpi-inv.c \
|
||||
mpi-mul.c \
|
||||
mpi-mod.c \
|
||||
mpi-pow.c \
|
||||
mpi-mpow.c \
|
||||
mpi-scan.c \
|
||||
mpicoder.c \
|
||||
mpih-div.c \
|
||||
mpih-mul.c \
|
||||
mpiutil.c \
|
||||
ec.c
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .lo .o .obj
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu mpi/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu mpi/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
clean-noinstLTLIBRARIES:
|
||||
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
|
||||
@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libmpi.la: $(libmpi_la_OBJECTS) $(libmpi_la_DEPENDENCIES)
|
||||
$(libmpi_la_LINK) $(libmpi_la_OBJECTS) $(libmpi_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ec.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-add.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-bit.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-cmp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-div.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-gcd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-inline.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-inv.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-mod.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-mpow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-mul.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-pow.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi-scan.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpicoder.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-add1-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-add1.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-div.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-lshift-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-lshift.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul1-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul1.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul2-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul2.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul3-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-mul3.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-rshift-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-rshift.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-sub1-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpih-sub1.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpiutil.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udiv-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udiv-qrnnd-asm.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udiv-qrnnd.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udiv.Plo@am__quote@
|
||||
|
||||
.S.o:
|
||||
@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCCAS_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $<
|
||||
|
||||
.S.obj:
|
||||
@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCCAS_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.S.lo:
|
||||
@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCCAS_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $<
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am:
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libtool clean-noinstLTLIBRARIES ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am install-man \
|
||||
install-pdf install-pdf-am install-ps install-ps-am \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
41
jni/libgcrypt/mpi/Manifest
Normal file
41
jni/libgcrypt/mpi/Manifest
Normal file
@@ -0,0 +1,41 @@
|
||||
# Manifest - checksums of the mpi directory
|
||||
# Copyright 2003 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
|
||||
|
||||
Makefile.am
|
||||
config.links
|
||||
longlong.h
|
||||
mpi-add.c
|
||||
mpi-bit.c
|
||||
mpi-cmp.c
|
||||
mpi-div.c
|
||||
mpi-gcd.c
|
||||
mpi-inline.c
|
||||
mpi-inline.h
|
||||
mpi-internal.h
|
||||
mpi-inv.c
|
||||
mpi-mpow.c
|
||||
mpi-mul.c
|
||||
mpi-pow.c
|
||||
mpi-scan.c
|
||||
mpicoder.c
|
||||
mpih-div.c
|
||||
mpih-mul.c
|
||||
mpiutil.c
|
||||
$names$ iQCVAwUAP+LmfDEAnp832S/7AQKZJQQAkR/gQITUM+6Ygy9WAOAO17btyKAlCtGTXp5XSZ+J3X0o/rYneRdSCW89IJvwFRJjAOcFJd52MXs6ZVFF/RQBC8MvJzuQChbEzvihK8o2VgK34YWjU+6XH9sFgRMIgzkHs/51ZZxeQUOPy1XF7TyKB0WE7YBUVisFiRaqB1qGIOs==Z3qB
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user