aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine
Commit message (Collapse)AuthorAgeFilesLines
* Use size_t rather than u32bit in SymmetricAlgorithmlloyd2010-10-132-11/+11
|
* Use size_t for BufferedComputation::add_datalloyd2010-10-121-2/+2
|
* Use size_t in SCAN_Namelloyd2010-10-125-10/+10
|
* Use size_t instead of u32bit in all of pubkeylloyd2010-10-122-48/+48
|
* Use size_t rather than u32bit for the blocks argument of encrypt_nlloyd2010-10-121-5/+6
|
* Make names more consistentlloyd2010-10-013-2/+2
|
* Fix macrolloyd2010-09-301-0/+1
|
* Split SHA-2 into 32 and 64 bit versions; they are totally independentlloyd2010-09-301-2/+7
| | | | of each other anyway.
* Fix OpenSSL engine WRT memory vector changes, append is no morelloyd2010-09-231-1/+3
|
* Update the dynamic engine protocol. The initial version had an enginelloyd2010-09-081-30/+15
| | | | | | | | | | | | | destructor function which would delete the engine; this was to handle the case that the heaps were not shared between the application and the library. However in this case we have bigger problems, because we want to be able to pass std::strings into the engine, and additionally be able to return objects from the library which are later deleted by the algorithm factory. So without a major restructuring we can't support this style of operation anyway; the DLL and application must share the same heap. This can be done on Windows using the /MD linking scheme for both the library and the DLL. The library already uses this model by default on Windows.
* Add also AES-192 using SSSE3lloyd2010-08-121-0/+2
|
* Support AES-256 is the SSSE3 implementationlloyd2010-08-121-0/+2
|
* Add an implementation of AES-128 using SSSE3 instructions. It runs inlloyd2010-08-091-0/+9
| | | | | | | | | | | | | | | constant time and on a Nehalem is significantly faster than the table based version. This implementation technique was invented by Mike Hamburg and described in a paper in CHES 2009 "Accelerating AES with Vector Permute Instructions". This code is basically a translation of his public domain x86-64 assembly code into intrinsics. Todo: Adding support for AES-192 and AES-256; this just requires implementing the key schedules. Currently only tested on an i7 with GCC (32 and 64 bit code); testing/optimization on 32-bit processors with SSSE3 like the Atom, and with Visual C++ and other compilers, are also todos.
* Remove redundant setting for adding libdl link on Linux in dyn_engine;lloyd2010-07-281-4/+0
| | | | | it relies on dyn_load which should be the sole source for this kind of stuff, since dyn_engine itself does not touch the OS level APIs.
* Add a version info function which returns a u32bit. The currentlylloyd2010-07-281-1/+12
| | | | | expected value is 20100728 (ie, today). This will allow for checking for and/or working around changes to interfaces.
* Add a new utility class Dynamically_Loaded_Library which wraps aroundlloyd2010-07-273-0/+185
| | | | | | | | | | the system dynamic linker (if any). Currently it only supports dlopen, and is only enabled on Linux. It will almost certainly work on BSDs and Solaris as well, though, and should be easy to extend to support Win32-style dynamic loading. Also add a new engine, Dynamically_Loaded_Engine, which loads up a new Engine object from a shared library/DLL.
* Rename Default_Engine to Core_Engine which describes its purposeslloyd2010-07-279-33/+31
| | | | (slightly) better.
* merge of '17389a973545d2f8e25813894cdd2da1b01aa534'lloyd2010-07-271-1/+1
|\ | | | | | | and 'ada4c9893d70affd8934ab9664e390087feab3c9'
| * Add support in CPUID for detecting PCMULUDQ and MOVBE instructions.lloyd2010-07-271-1/+1
| | | | | | | | Rename CPUID::has_aes_intel to has_aes_ni.
* | Add support for Camellia in OpenSSL enginelloyd2010-07-221-0/+6
| |
* | Avoid unused argument warninglloyd2010-07-221-1/+3
|/
* Consolidate the two engines that provided assembler implementationslloyd2010-07-136-81/+22
| | | | | | (amd64_eng and ia32_eng) into a new asm_engine. This same engine could also be used in the event that asm code for other CPUs was added later on.
* Avoid unused parameter warninglloyd2010-06-221-1/+1
|
* Doxygenlloyd2010-06-221-0/+7
|
* Compilation fixeslloyd2010-06-161-1/+3
|
* Move the implemention of the functions in the Engine base class into alloyd2010-06-163-33/+101
| | | | | | | source file. Otherwise we ran into a conflict between Doxygen comments, which require us to name the params, and GCC's -Wunused-parameters, which will warn about parameters which aren't being used.
* Doxygen commentslloyd2010-06-161-14/+82
|
* Kill dead/unused functionlloyd2010-06-161-2/+0
|
* Also for Default_Enginelloyd2010-06-161-1/+0
|
* Don't hide funcions in engine subclasses that are public in baselloyd2010-06-165-5/+5
|
* More Doxygen updates/fixeslloyd2010-06-1510-11/+24
|
* Use "/*" instead of "/**" in starting comments at the begining of a file.lloyd2010-06-076-6/+6
| | | | | This caused Doxygen to think this was markup meant for it, which really caused some clutter in the namespace page.
* Remove FORK-256; it's obscure and has been definitively broken.lloyd2010-05-251-9/+0
| | | | | More commentary posted to the list: http://lists.randombit.net/pipermail/botan-devel/2010-May/001123.html
* Add Comb4P hash combiner, as described in Anja Lehmann's thesis.lloyd2010-04-171-0/+15
|
* Remove unneeded includeslloyd2010-03-152-23/+4
|
* Fix GOST, wasn't getting found in enginelloyd2010-03-131-3/+3
|
* Deconstify PK_Ops. It's quite reasonable that some op will want tolloyd2010-03-092-19/+19
| | | | | | | | | | | | | precompute only as needed, or will want to access some other expensive resource or etc. Change how the secret for generating blinding is done in cases where a PRNG isn't available. Use the operations public op to hide the secret, for instance the seed for a DH blinding variable is 2^x mod p. Make use of being able to mutate internal structures in the RW signer, since that does have access to a PRNG, so use it to initialize the blinder on first call to sign().
* On GMP 5.0 and later, use mpz_powm_sec, which is a version of modularlloyd2010-03-051-0/+6
| | | | exponentiation that has countermeasures against side-channel attacks.
* Update OpenSSL engine for new interface. Similiar to GMP engine, droplloyd2010-03-059-503/+356
| | | | support for ElGamal and NR, leaving only RSA, DSA, and DH support.
* Add GMP PK filelloyd2010-03-051-0/+344
|
* Update GMP engine with new PK operations interface.lloyd2010-03-058-481/+11
| | | | | Drop support for ElGamal and NR from GMP engine, leaving just DH, DSA, and RSA
* Remove IF_Corelloyd2010-03-053-31/+0
|
* Add RSA encrypt/decrypt opslloyd2010-03-051-6/+6
|
* Add ops for ElGamal encryption and decryption.lloyd2010-03-053-31/+48
| | | | | Note: blinding is not currently being used for RSA, RW, DH or ElGamal, which used to have them. This should be added back before release.
* Rename PK_Ops::Signature_Operation to PK_Ops::Signaturelloyd2010-03-053-6/+6
| | | | Rename PK_Ops::KA_Operation to PK_Ops::Key_Agreement
* Remove NR and DSA specific hookslloyd2010-03-053-67/+3
|
* Add verification ops for all signature key typeslloyd2010-03-053-0/+44
|
* Add signature generation operation classes. Remove sign() fromlloyd2010-03-053-2/+77
| | | | | | PK_Signing_Key, though for the moment the class remains because there are a few pieces of code that use it to detect if signatures are supported, or for passing to functions in look_pk
* This checkin represents a pretty major change in how PK operations arelloyd2010-03-044-25/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | performed. Up until now, each key object (eg DSA_PublicKey or ECDH_PrivateKey) had two jobs: contain the key material, and know how to perform any operations on that key. However because of a desire to support alternative implementations (GNU MP, hardware, whatever), there was a notion of operations, with the key objects containing an op that they got via engine rather than actually implementing the underlying algorithms directly. Now, represent the operation as an abstract interface (typically mapping a byte string to a byte string), and pass a plain Public_Key& or Private_Key& to the engine. The engine does any checks it wants (eg based on name, typeid, key sizes, etc), and either returns nothing (I'll pass) or a pointer to a new operation that represents signatures or encryption or what-have-you using that key. This means that plain key objects no longer contain operations. This is a major break with the traditional interface. On the other hand, using these 'bare' operations without padding, KDFs, etc is 99% of the time a bad idea anyway (and if you really need them, there are options so you get the bare op but via the pubkey.h interfaces). Currently this change is only implemented for DH and ECDH (ie, key agreement algorithms). Additionally the optional engines (gnump and openssl) have not been updated. I'll probably wait to touch those until after I can change them all in one go for all algos.
* Kill ECKAEG_Oplloyd2010-03-023-34/+0
|