aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Kill realnames on new modules not in mailinelloyd2009-10-293-5/+0
|
* propagate from branch 'net.randombit.botan' (head ↵lloyd2009-10-2922-621/+1322
|\ | | | | | | | | | | 54d2cc7b00ecd5f41295e147d23ab6d294309f61) to branch 'net.randombit.botan.general-simd' (head 9cb1b5f00bfefd05cd9555489db34e6d86867aca)
| * propagate from branch 'net.randombit.botan' (head ↵lloyd2009-10-2922-621/+1322
| |\ | | | | | | | | | | | | | | | 8fb69dd1c599ada1008c4cab2a6d502cbcc468e0) to branch 'net.randombit.botan.general-simd' (head c05c9a6d398659891fb8cca170ed514ea7e6476d)
| | * Rename SSE2 stuff to be generally SIMD since it supports at least SSE2lloyd2009-10-2916-135/+126
| | | | | | | | | | | | and Altivec (though Altivec is seemingly slower ATM...)
| | * Add copyright + license on the new SIMD fileslloyd2009-10-284-2/+14
| | |
| | * propagate from branch 'net.randombit.botan' (head ↵lloyd2009-10-2812-404/+1101
| | |\ | | | | | | | | | | | | | | | | | | | | bf629b13dd132b263e76a72b7eca0f7e4ab19aac) to branch 'net.randombit.botan.general-simd' (head f731cff08ff0d04c062742c0c6cfcc18856400ea)
| | | * Add an AltiVec SIMD_32 implementation. Tested and works for Serpent and XTEAlloyd2009-10-281-0/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | on a PowerPC 970 running Gentoo with GCC 4.3.4 Uses a GCC syntax for creating literal values instead of the Motorola syntax [{1,2,3,4} instead of (1,2,3,4)]. In tests so far, this is much, much slower than either the standard scalar code, or using the SIMD-in-scalar-registers code. It looks like for whatever reason GCC is refusing to inline the function: SIMD_Altivec(__vector unsigned int input) { reg = input; } and calls it with a branch hundreds of times in each function. I don't know if this is the entire reason it's slower, but it definitely can't be helping. The code handles unaligned loads OK but assumes stores are to an aligned address. This will fail drastically some day, and needs to be fixed to either use scalar stores, which (most?) PPCs will handle (if slowly), or batch the loads and stores so we can work across the loads. Considering the code so far loads 4 vectors of data in one go this would probably be a big win (and also for loads, since instead of doing 8 loads for 4 registers only 5 are needed).
| | | * Define SSE rotate_right in terms of rotate left, and load_be in termslloyd2009-10-281-3/+2
| | | | | | | | | | | | | | | | of load_le + bswap
| | | * Add XTEA decryptionlloyd2009-10-261-11/+47
| | | |
| | | * Add subtraction operators to SIMD_32 classes, needed for XTEA decryptlloyd2009-10-262-0/+26
| | | |
| | | * Add a wrapper for a set of SSE2 operations with convenient syntax for 4x32lloyd2009-10-2611-404/+862
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | operations. Also add a pure scalar code version. Convert Serpent to use this new interface, and add an implementation of XTEA in SIMD. The wrappers plus the scalar version allow SIMD-ish code to work on all platforms. This is often a win due to better ILP being visible to the processor (as with the recent XTEA optimizations). Only real danger is register starvation, mostly an issue on x86 these days. So it may (or may not) be a win to consolidate the standard C++ versions and the SIMD versions together. Future work: - Add AltiVec/VMX version - Maybe also for ARM's NEON extension? Less pressing, I would think. - Convert SHA-1 code to use SIMD_32 - Add XTEA SIMD decryption (currently only encrypt) - Change SSE2 engine to SIMD_engine - Modify configure.py to set BOTAN_TARGET_CPU_HAS_[SSE2|ALTIVEC|NEON|XXX] macros
* | | | Kill straggling realnameslloyd2009-10-292-4/+0
|/ / /
* | | Hurd file was missing txt extension, must have missed it before?lloyd2009-10-291-0/+0
| | |
* | | Remove the 'realname' attribute on all modules and cc/cpu/os info files.lloyd2009-10-29233-469/+0
| | | | | | | | | | | | | | | Pretty much useless and unused, except for listing the module names in build.h and the short versions totally suffice for that.
* | | propagate from branch 'net.randombit.botan.1_8' (head ↵lloyd2009-10-28334-2878/+8169
|\| | | | | | | | | | | | | | | | | 3158f8272a3582dd44dfb771665eb71f7d005339) to branch 'net.randombit.botan' (head bf629b13dd132b263e76a72b7eca0f7e4ab19aac)
| * | Indent fixlloyd2009-10-261-1/+1
| |/
| * Add ; after call to VC++'s __cpuid, not a macrolloyd2009-10-251-1/+1
| |
| * Cast the u32bit output array to an int* when calling the VC++ intrinsic,lloyd2009-10-251-3/+6
| | | | | | | | | | | | | | since it passes signed ints for whatever reason. Ensure CALL_CPUID is always defined (previously, it would not be if on an x86 but compiled with something other than GCC, ICC, VC++).
| * Kill stdio includelloyd2009-10-231-2/+0
| |
| * Use new load/store ops in xtea x4 codelloyd2009-10-231-12/+6
| |
| * Add new store_[l|b]e variants taking 8 values.lloyd2009-10-231-16/+108
| | | | | | | | | | | | Add new load options that are passed a number of variables by reference, setting them all at once. Will allow for batching operations (eg using SIMD operations to do 128-bit wide bswaps) for future optimizations.
| * Simply unrolling the loop in XTEA and processing 4 blocks worth of data atlloyd2009-10-231-0/+70
| | | | | | | | | | | | | | | | a time more than doubles performance (from 38 MB/s to 90 MB/s on Core2 Q6600). Could do even better with SIMD, I'm sure, but this is fast and easy, and works everywhere. Probably will hurt on 32-bit x86 from the register pressure.
| * Increase the internal buffer size of the Hex coder/decoder, and put it intolloyd2009-10-231-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | a named constant instead of being magic. Move from 64 bytes to 256. This was necessary to allow Pipe(new Hex_Decoder, filter, ...) to give filter a sufficiently large input block. It would be nicer if the filter itself (in this case, ECB_Decryption, but others apply as well) was smart enough to buffer on its own. It might also be useful if code could query what parallelism a block cipher provided and modify their actions accordingly.
| * Remove all exception specifications. The way these are designed in C++ islloyd2009-10-22121-140/+140
| | | | | | | | | | | | just too fragile and not that useful. Something like Java's checked exceptions might be nice, but simply killing the process entirely if an unexpected exception is thrown is not exactly useful for something trying to be robust.
| * Enable CPUID on x86 (checking wrong macro name)lloyd2009-10-211-1/+1
| |
| * Format, add names to params in headerlloyd2009-10-191-3/+7
| |
| * Add theoreticaly support for Clang/LLVM. Current Gentoo clang ebuild doesn'tlloyd2009-10-191-0/+46
| | | | | | | | seem to work with C++ at all so untested.
| * Also enable x86 asm word_addlloyd2009-10-151-8/+0
| |
| * Enable x86-64 asm word_addlloyd2009-10-151-8/+0
| |
| * merge of '5cfca720d4ca8d1e8f6946c7d9b4a8a6943094d0'lloyd2009-10-1527-428/+445
| |\ | | | | | | | | | and '8cc9c08544c0f1f1dba7c7a8da51d1657b1c7df8'
| | * Similiar treatment for OFB which is also just a plain stream cipherlloyd2009-10-147-100/+148
| | |
| | * Convert CTR_BE from a Filter to a StreamCipher. Must wrap in a ↵lloyd2009-10-1410-217/+224
| | | | | | | | | | | | | | | | | | StreamCipher_Filter to pass it directly to a Pipe now.
| | * Cleanups/random changes in the stream cipher code:lloyd2009-10-1414-111/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove encrypt, decrypt - replace by cipher() and cipher1() Remove seek() - not well supported/tested, I want to redo with a new interface once CTR and OFB modes become stream ciphers. Rename resync to set_iv() Remove StreamCipher::IV_LENGTH and add StreamCipher::valid_iv_length() to allow multiple IV lengths (as for instance Turing allows, as would Salsa20 if XSalsa20 were supported).
| * | Avoid using word_add() in gfp_element.cpp, actually more complex than necessary,lloyd2009-10-151-1/+3
| |/ | | | | | | and was tickling a bug in the asm versions because of the constant 0.
| * Check for cipher_mode() being set; if it is, not an algo_factory algolloyd2009-10-131-0/+4
| |
| * propagate from branch 'net.randombit.botan.1_8' (head ↵lloyd2009-10-13247-2406/+7481
| |\ | | | | | | | | | | | | | | | c5ae189464f6ef16e3ce73ea7c563412460d76a3) to branch 'net.randombit.botan' (head e2b95b6ad31c7539cf9ac0ebddb1d80bf63b5b21)
| | * Remove redundant functionlloyd2009-10-091-10/+3
| | |
| | * Add PBKDF2 wrapperlloyd2009-10-091-0/+17
| | |
| | * Reasonably functional RSA support; keygen, import/export, encrypt/decrypt, ↵lloyd2009-10-095-156/+231
| | | | | | | | | | | | sign/verify
| | * Fix python install target. Add CryptoBox wrapper plus an examplelloyd2009-10-092-1/+25
| | |
| | * Use -Wno-write-strings in XS wrapper to avoid many warningslloyd2009-10-091-1/+1
| | |
| | * Drop the SWIG wrappers; never worked. Move the XS wrappers to src/wrap/perl-xslloyd2009-10-0915-0/+1869
| | |
| | * Add more or less functional integration with Boost.Python. Uselloyd2009-10-099-2/+732
| | | | | | | | | | | | | | | --use-boost-python to enable creating a second makefile, Makefile.python, which has targets for building and installing the Python module.
| | * Fix --enable-debuglloyd2009-10-091-2/+3
| | | | | | | | | | | | With GCC, only use -finline-functions if not a debug build
| | * Add support for GNU/Hurdlloyd2009-10-073-0/+18
| | |
| | * Remove a dead functionlloyd2009-10-071-9/+0
| | |
| | * Remove includes of stdio.hlloyd2009-10-073-6/+0
| | |
| | * Oops, removed assert.h from gfp_element.cpp which uses assert :(lloyd2009-10-071-0/+1
| | |
| | * New parsing system for SCAN nameslloyd2009-10-072-39/+92
| | |
| | * Run self tests at startuplloyd2009-10-071-0/+4
| | |