202 lines
6.3 KiB
Plaintext
202 lines
6.3 KiB
Plaintext
/*! \mainpage BeeCrypt API Documentation.
|
|
|
|
BeeCrypt started its life when the need for a portable and fast cryptography
|
|
library arose at Virtual Unlimited in 1997. I'm still trying to make it
|
|
faster, easier to use and more portable, in addition to providing better
|
|
documentation. The library is currently in full swing again, thanks to the
|
|
Beeyond Software Holding BV.
|
|
|
|
BeeCrypt is released under the following license:
|
|
|
|
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
|
|
|
|
Legal disclaimer: note that depending on where you are, the use of
|
|
cryptography may be limited or forbidden by law. Before using this library,
|
|
make sure you are legally entitled to do so.
|
|
|
|
Included in the library are:
|
|
<ul>
|
|
<li>entropy sources for initializing pseudo-random generators
|
|
<li>pseudo-random generators
|
|
<ul>
|
|
<li>FIPS-186
|
|
</ul>
|
|
<li>block ciphers
|
|
<ul>
|
|
<li>AES
|
|
<li>Blowfish
|
|
</ul>
|
|
<li>hash functions
|
|
<ul>
|
|
<li>MD5
|
|
<li>SHA-1
|
|
<li>SHA-256
|
|
</ul>
|
|
<li>keyed hash functions (a.k.a. message authentication codes)
|
|
<ul>
|
|
<li>HMAC-MD5
|
|
<li>HMAC-SHA-1
|
|
<li>HMAC-SHA-256
|
|
</ul>
|
|
<li>multi-precision integer library, with assembler-optimized routines
|
|
for a range of processors; optimized to perform well on both 32-bit
|
|
and 64-bit machines; uses Barrett modular reduction instead of the
|
|
more common usual Montgomery algorithm; also implements sliding
|
|
windows.
|
|
<li>probabilistic primality testing, with optimized small prime trial
|
|
division
|
|
<li>discrete logarithm parameter generation over a prime field
|
|
<li>Diffie-Hellman key agreement
|
|
<li>DHAES encryption scheme
|
|
<li>DSA signature scheme
|
|
<li>ElGamal signature scheme (two variants)
|
|
<li>RSA keypair generation with chinese remainder theorem variables
|
|
<li>RSA public & private key operations
|
|
</ul>
|
|
|
|
A new feature in version 4.x is the C++ API, built to resemble Java's security
|
|
and cryptography API. At this moment the number of classes provided is just
|
|
enough to build CSPs. If there is enough interest, we may expand this library.
|
|
|
|
Planned for the future are:
|
|
<ul>
|
|
<li>compliance with and compliance statements for IEEE P1363
|
|
<li>more blockciphers (Twofish, ... )
|
|
<li>more blockcipher modes (CTR, OFB, ... )
|
|
<li>more hash functions (RIPEMD-160, SHA-384, SHA-512, HAVAL, Tiger)
|
|
<li>RSA signatures as specified by RFC-2440.
|
|
<li>Elliptic Curves (ECDSA, ... )
|
|
</ul>
|
|
|
|
The library has been tested on the following platforms:
|
|
<ul>
|
|
<li>Darwin
|
|
<li>Linux glibc 2.x alpha
|
|
<li>Linux glibc 2.x arm
|
|
<li>Linux glibc 2.x ia64
|
|
<li>Linux glibc 2.x m68k
|
|
<li>Linux glibc 2.x ppc
|
|
<li>Linux glibc 2.x s390x
|
|
<li>Linux glibc 2.x sparc
|
|
<li>Linux glibc 2.x x86
|
|
<li>Linux glibc 2.x x86_64
|
|
<li>Solaris 2.[6789] sparc (with Forte or GNU compilers)
|
|
<li>Solaris 2.[78] x86 (with Forte or GNU compilers)
|
|
<li>Tru64 Unix alpha
|
|
<li>Win32 (Windows 95, 98, NT 4.0, 2000, XP)
|
|
</ul>
|
|
|
|
The library is currently in the process of being ported to:
|
|
<ul>
|
|
<li>AIX (shared libraries don't seem to work in 64-bit mode)
|
|
<li>Cygwin (the DLL builds now, but needs to be tested)
|
|
</ul>
|
|
|
|
The structures in the library are geared towards exchange with Java
|
|
and its security and cryptography classes. This library can also be
|
|
accessed from Java by installing BeeCrypt for Java, a JCE 1.2 crypto
|
|
provider and the counterpart of this library.
|
|
|
|
*/
|
|
|
|
/*!\defgroup ES_m Entropy sources
|
|
*/
|
|
/*!\defgroup ES_audio_m Entropy sources: /dev/audio
|
|
*/
|
|
/*!\defgroup ES_dsp_m Entropy sources: /dev/dsp
|
|
*/
|
|
/*!\defgroup ES_random_m Entropy sources: /dev/random
|
|
*/
|
|
/*!\defgroup ES_urandom_m Entropy sources: /dev/urandom
|
|
*/
|
|
/*!\defgroup ES_tty_m Entropy sources: /dev/tty
|
|
*/
|
|
/*!\defgroup PRNG_m Pseudo-Random Number Generators
|
|
*/
|
|
/*!\defgroup PRNG_fips186_m Pseudo-Random Number Generators: FIPS-186
|
|
*/
|
|
/*!\defgroup PRNG_mt_m Pseudo-Random Number Generators: Mersenne Twister
|
|
*/
|
|
/*!\defgroup HASH_m Hash Functions
|
|
*/
|
|
/*!\defgroup HASH_md5_m Hash Functions: MD5
|
|
*/
|
|
/*!\defgroup HASH_sha1_m Hash Functions: SHA-1
|
|
*/
|
|
/*!\defgroup HASH_sha256_m Hash Functions: SHA-256
|
|
*/
|
|
/*!\defgroup HMAC_m Keyed Hash Functions, a.k.a. Message Authentication Codes
|
|
*/
|
|
/*!\defgroup HMAC_md5_m Keyed Hash Functions: HMAC-MD5
|
|
*/
|
|
/*!\defgroup HMAC_sha1_m Keyed Hash Functions: HMAC-SHA-1
|
|
*/
|
|
/*!\defgroup HMAC_sha256_m Keyed Hash Functions: HMAC-SHA-256
|
|
*/
|
|
/*!\defgroup BC_m Block ciphers
|
|
*/
|
|
/*!\defgroup BC_aes_m Block ciphers: AES
|
|
*/
|
|
/*!\defgroup BC_blowfish_m Block ciphers: Blowfish
|
|
*/
|
|
/*!\defgroup MP_m Multiple Precision Integer Arithmetic
|
|
*/
|
|
/*!\defgroup DL_m Discrete Logarithm Primitives
|
|
*/
|
|
/*!\defgroup DL_dh_m Discrete Logarithm Primitives: Diffie-Hellman
|
|
*/
|
|
/*!\defgroup DL_dsa_m Discrete Logarithm Primitives: DSA
|
|
*/
|
|
/*!\defgroup DL_elgamal_m Discrete Logarithm Primitives: ElGamal
|
|
*/
|
|
/*!\defgroup IF_m Integer Factorization Primitives
|
|
*/
|
|
/*!\defgroup IF_rsa_m Integer Factorization Primitives: RSA
|
|
*/
|
|
/*!\defgroup PKCS1_m PKCS#1
|
|
*/
|
|
/*!\defgroup PKCS12_m PKCS#12
|
|
*/
|
|
/*!\defgroup CXX_m C++ API
|
|
*/
|
|
/*!\defgroup CXX_CRYPTO_m C++ classes mimicking javax.crypto
|
|
*/
|
|
/*!\defgroup CXX_CRYPTO_INTERFACES_m C++ classes mimicking javax.crypto.interfaces
|
|
*/
|
|
/*!\defgroup CXX_CRYPTO_SPEC_m C++ classes mimicking javax.crypto.spec
|
|
*/
|
|
/*!\defgroup CXX_IO_m C++ classes mimicking java.io
|
|
*/
|
|
/*!\defgroup CXX_LANG_m C++ classes mimicking java.lang
|
|
*/
|
|
/*!\defgroup CXX_PROV_m C++ Base Cryptographic Service Provider
|
|
*/
|
|
/*!\defgroup CXX_SECURITY_m C++ classes mimicking java.security
|
|
*/
|
|
/*!\defgroup CXX_SECURITY_CERT_m C++ classes mimicking java.security.cert
|
|
*/
|
|
/*!\defgroup CXX_SECURITY_INTERFACES_m C++ classes mimicking java.security.interfaces
|
|
*/
|
|
/*!\defgroup CXX_SECURITY_SPEC_m C++ classes mimicking java.security.spec
|
|
*/
|
|
/*!\defgroup CXX_UTIL_m C++ classes mimicking java.util
|
|
*/
|
|
/*!\defgroup JAVA_m Java API
|
|
*/
|
|
/*!\defgroup UNIT_m Unit tests
|
|
*/
|
|
/*!\defgroup BENCH_m Benchmark tests
|
|
*/
|