aboutsummaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* Move all BigInt stuff into bigint/. Currently all asm modules are disabled;lloyd2008-09-2812-873/+9
| | | | | | | | | configure.pl doesn't understand how to handle this yet (replace logic only understands stuff in src, not how one module can replace another modules src, or anything about prioritizing). Move some hex and base64 stuff out of charset.cpp and into their codec directories.
* Move almost all of the ASN.1, BER, and DER codec related code into newlloyd2008-09-288-704/+0
| | | | | | | module asn1 Move hex and base64 codecs into new codecs directory. Also move zlib and bzip2 to codecs from compress.
* Add dl_algo and dl_group moduleslloyd2008-09-282-135/+0
|
* Modularize PBEs (password-based encryption schemes)lloyd2008-09-281-70/+0
|
* Modularize IF family PK algorithms (integer factorization; RSA and RW baselloyd2008-09-281-58/+0
| | | | | | class). Add many missing modinfo.txts that I had not checked in. Oops.
* Modularize the public key algorithms, though currently a great deal oflloyd2008-09-286-352/+0
| | | | | | the underlying implementation goop remains in the core library instead of being shunted off, due to various dependencies it has (most of which it shouldn't).
* Modularize MGF1. Make EME1 and EMSA4 depend on itlloyd2008-09-281-33/+0
|
* Make mdx_hash also a module, which most of the hash functions depend on.lloyd2008-09-281-40/+0
| | | | | | Correct the configure program so modules are not autoloaded if their dependences are not available. (Eg, --no-module=mdx_hash will disable MD4, MD5, SHA-1, etc rather than cause a compliation failure)
* Create an x509 module containing all of the X509 certificate and CAlloyd2008-09-2811-954/+0
| | | | code as well as the code for handling PKCS #10 requests.
* Split def_ops into multiple files. Modularize DLIESlloyd2008-09-281-53/+0
|
* Modularize RNG implementationslloyd2008-09-282-89/+0
|
* Modularize CMAC and HMAClloyd2008-09-282-75/+0
|
* Modularize cipher modeslloyd2008-09-287-326/+0
|
* Modularize KDFs, PBKDFs, and PRFslloyd2008-09-283-156/+0
|
* Modularize EME1 and PKCS #1 v1.5 EMElloyd2008-09-281-48/+0
|
* Modularize EMSAlloyd2008-09-281-122/+0
|
* Modularize CBC-MAClloyd2008-09-281-36/+0
|
* Modularize SSLv3 MAC and X9.19 MACs. Fix some feature macro inconsistencies.lloyd2008-09-282-70/+0
|
* Modularize hashes and checksumslloyd2008-09-2814-500/+0
|
* Modularize all cipherslloyd2008-09-2828-1148/+0
|
* Modularize the Adler32 checksum in checksums/adler32lloyd2008-09-281-1/+1
| | | | | | | | | Add a new option --disable-modules which allows for disabling any set of modules that normally would be autoloaded. Rename the Botan feature test macros from BOTAN_EXT_BLAH to BOTAN_HAS_BLAH, which will be much more sensible especially when everything is done in this fashion (eg, BOTAN_HAS_BLOWFISH or BOTAN_HAS_RSA, etc)
* Rename header guards in modules from BOTAN_EXT_ to BOTAN_ for consistencylloyd2008-09-281-33/+0
|
* Add back from Ajisai 0.5.0 the implementations of the SSLv3 MAC and PRFlloyd2008-09-272-5/+63
| | | | | | | | | | | and the TLS v1.0 PRF. These were removed from Botan in v1.4.5. Initially I had felt that since these protocols were specific to SSL/TLS they should be placed in Ajisai (an SSL/TLS library based on Botan). However upon further reflection I have realized it is quite possible that other alternate implementations of SSL/TLS based on Botan would be quite desirable, and so to make that (a very slightly bit) easier I am adding back the SSL/TLS functions to Botan, so other SSL/TLS libs can use them directly.
* Expose CMAC::poly_double as a static function since it looks like I maylloyd2008-09-241-0/+4
| | | | | | | | | want to inline the CMAC computation in EAX mode. Also optimize CMAC::final_result slightly. Only write to state directly, instead of also the write buffer (this should help L1 data caching), and avoid what was basically a no-op where we zeroized part of a buffer and then xored it against another buffer.
* Make DSA param generation interfaces in DL_Group publiclloyd2008-09-181-9/+10
|
* Add an optimization suggested by Yves Jerschow to combine the fourlloyd2008-09-171-4/+4
| | | | | | | | Blowfish Sboxes into one 1024 word array and index into them at offsets. On my x86-64 machine there is no real difference between the two, but on register constrained processor like x86 it may make a large difference, since the x86 has a much easier time indexing off a single address held in a register rather than 4 distinct ones.
* Add a patch sent by Tim Burris <[email protected]> adding private operator= lloyd2008-09-173-1/+28
| | | | | | | | | | | | declarations to class declarations that do not support copying (for instance because of const members). Apparently at /W4 Visual C++ warns unless this is the case, and it seems reasonably good practice to disable copying on most of these objects anyway due to pointer and reference aliasing. Instead of adding an operator= to User_Interface, I made the member preset_passphrase non-const. This seemed like a cleaner solution to me. (It may also be the cleaner solution in the pubkey code)
* Change the constructor for LubyRackoff. Previously it took a string,lloyd2008-09-151-2/+3
| | | | | | | | | | | | | | | | | however now instead it takes a HashFunction pointer, which it deletes in its destructor. Why the change? For one, lookup.h, while seemingly a bunch of standalone functions, actually calls into a large mass of global state (in short, it is icky). I have a plan in mind for removing much of this while still providing a high level interface (actually hopefully better than now), here is just the start. Now, calling clone() on a LubyRackoff object will now return a new object with a clone() of the HashFunction. Previously we called get_hash on the name, which goes through the whole global lookup bit. This is also good since if you construct one with (say) an OpenSSL provided hash, clones of it will now also use that implementation.
* Remove the cache for BigInt::sig_words. I'm baffled how it is it workslloyd2008-09-151-67/+24
| | | | | | | on x86, x86-64, and m68k and not other platforms. Something about the memory model I'm hitting? Valgrind shows nothing. Rather than struggle with it further, for minimal gain, I'm reverting. If someone ever does figure it out, this will be easy to reapply.
* Update BigInt::grow_reg and grow_to to be non-constlloyd2008-09-151-2/+2
|
* Make MemoryRegion members non-mutable, change const declslloyd2008-09-151-8/+8
|
* Slight cleanup in loop iterationlloyd2008-09-151-2/+2
|
* Pass a pointer to a HashFunction to the MGF1 constructor, and have thatlloyd2008-09-141-3/+9
| | | | pointer used over and over again in MGF1::mask.
* The Memory_Exhaustion exception was only thrown from mem_pool.cpp, solloyd2008-09-141-9/+0
| | | | | move in there. Make it a subclass of std::bad_alloc instead of Botan::Exception (this may prove to be a design mistake).
* Add 16x16->32 word Comba multiply and squarelloyd2008-09-091-0/+3
|
* Add implementation of Salsa20 stream cipherlloyd2008-09-091-0/+39
|
* Remove bigint_mul_add_words. It was only used now in two callers,lloyd2008-09-071-2/+7
| | | | | | | bigint_simple_mul and bigint_simple_sqr. Examining these functions made it clear inlining would be beneficial, so these two functions have been moved from an anonymous namespace into mp_mulop.cpp (to allow assembly versions).
* Inline BigInt::Rep::operator[], BigInt::sig_words, and BigInt::Rep::sig_wordslloyd2008-09-071-14/+46
|
* Inline BigInt::operator[]lloyd2008-09-071-2/+2
|
* Typo fixlloyd2008-09-071-1/+1
|
* Inline BigInt::is_zerolloyd2008-09-071-2/+8
|
* Use a nibble-wide lookup table to reduce loop iterationslloyd2008-09-051-3/+5
|
* There is no real reason BigInt::grow_to needs to be private (and onelloyd2008-09-051-2/+1
| | | | | can easily perform the operation manually using get_reg), and InSiTo wants to access it, so go ahead and make it public.
* Change return type of ctz from int to u32bitlloyd2008-09-051-1/+1
|
* Replace __builtin_ctzl with a new ctz function in bit_ops.hlloyd2008-09-051-1/+12
|
* Wrap the BigInt register in a small class that caches the significantlloyd2008-09-051-6/+36
| | | | | words. BigInt::sig_words() was showing up very hot on valgrind runs, this seems to reduce the usage substantially.
* Add new aliases to the DL_Group::Format enum. The previous values werelloyd2008-09-051-3/+13
| | | | | pretty opaque; now use the easier to remember DL_Group::DSA_PARAMETERS and DL_Group::DH_PARAMETERS
* Define the functions from bit_ops.h as inline template functions, insteadlloyd2008-09-051-6/+58
| | | | of always converting to u64bit and passing to a non-inlined function.
* Remove code moved to bswap.h and rotate.h, also split xor_buf intolloyd2008-09-022-71/+65
| | | | | | xor_buf.h. The optimization using reinterpret_cast previously used in the amd64 module is now used directly in the stock header, as long as BOTAN_TARGET_UNALIGNED_LOADSTOR_OK is set.
* Split byte swap code and word rotation code off into bswap.h and rotate.hlloyd2008-09-023-2/+69
|