aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/modes
Commit message (Collapse)AuthorAgeFilesLines
* For CBC, ECB, and XTS the output length of a zero length input is wellJack Lloyd2015-08-043-7/+9
| | | | | | defined, so don't fail. Fix XTS, as XTS always uses ciphertext stealing the value of output_length had been incorrect in rounding up to the block size.
* modes: Add missing overridesDaniel Seither2015-07-305-20/+21
|
* Remove semicolons at the end of macrosDaniel Seither2015-07-151-3/+3
|
* Fix round_upSimon Warta2015-07-153-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. src/lib/codec/base64/base64.cpp: : (round_up<size_t>(input_length, 3) / 3) * 4; 2. src/lib/codec/base64/base64.cpp: : (round_up<size_t>(input_length, 4) * 3) / 4; 3. src/lib/filters/transform_filter.cpp: return round_up(target_size, update_granularity); 4. src/lib/math/bigint/bigint.cpp: m_reg.resize(round_up<size_t>(size, 8)); 5. src/lib/math/bigint/bigint.cpp: m_reg.resize(round_up<size_t>((length / WORD_BYTES) + 1, 8)); 6. src/lib/math/numbertheory/mp_numth.cpp: BigInt z(BigInt::Positive, round_up<size_t>(2*x_sw, 16)); 7. src/lib/modes/cbc/cbc.cpp: return round_up(input_length, cipher().block_size()); 8. src/lib/modes/ecb/ecb.cpp: return round_up(input_length, cipher().block_size()); 9. src/lib/modes/xts/xts.cpp: return round_up(input_length, cipher().block_size()); 10. src/lib/pbkdf/pbkdf2/pbkdf2.cpp: const size_t blocks_needed = round_up(out_len, prf_sz) / prf_sz; 11. src/lib/tls/tls_record.cpp: const size_t buf_size = round_up( 12. src/lib/utils/rounding.h:inline T round_up(T n, T align_to) 1. Reason for change 2. Reason for change 3. first argument cannot be 0 (`target_size = 1024`) 4. Is a bug in the current implementation iff `size = 0` 5. first argument cannot be 0 6. round_up should return 0 if `x_sw = 0` 7. ? 8. ? 9. ? 10. first argument cannot be 0 (`if(out_len == 0) return 0;`) 11. first argument is unlikely to be 0 (`iv_size + msg_length + mac_size + (block_size ? 1 : 0)`) 12. Implementation
* Fix module combi: adler32,sivSimon Warta2015-07-081-0/+5
|
* Make Botan compile when only some modules are enabledSimon Warta2015-07-032-1/+2
| | | | Fixes #146.
* More changes for use with debug STLSimon Warta2015-06-301-2/+8
|
* lib/modes: Convert &vec[0] to vec.data()Simon Warta2015-06-2414-115/+115
|
* Fix code that triggers a strange MSVC 'performance warning'git2015-04-081-2/+2
| | | | Github pull 74 from Chris Desjardins
* Consider AES-NI as implying SSSE3 which lets us merge two of thelloyd2015-03-151-1/+1
| | | | | | amalgamation objects (aes_ni and clmul). The real advantage is for the static link, as GCM will pull in clmul via its reference, which is sufficient to also pull the AES impl into the link.
* Fix clmul which was broken by amalgamation ISA split.lloyd2015-03-122-2/+2
| | | | | Change GCM update granularity to BS (16) which is sufficient for GCM and more convenient to callers
* Add BOTAN_DLL back to LibraryInitializer and move some of the implementation tolloyd2015-03-111-2/+2
| | | | | | | a source file. Without BOTAN_DLL the LibraryInitializer was removed entirely from the list of symbols which is not desired. Add some casts to avoid scary sounding but (upon review) harmless warnings from MSVC
* Hide Algorithm_Factory and use the functions in lookup.h internally.lloyd2015-03-045-14/+17
| | | | | | Fix two memory leaks (in TLS and modes) caused by calling get_foo and then cloning the result before saving it (leaking the original object), a holdover from the conversion between construction techniques in 1.11.14
* Get algos via lookup in case of SIMD or other optimized versionslloyd2015-02-181-4/+2
|
* Add version_cstr (returns const char*) and move tag_size from AEAD tolloyd2015-02-112-5/+5
| | | | Cipher_Mode. Add missing includes in entropy sources, noticed by clang.
* Move Cipher_Mode enum out of types.h, move stream cipher mode to new headerlloyd2015-02-054-46/+70
|
* Clean up root dir, remove some unneeded dependencieslloyd2015-02-055-9/+0
|
* Remove algo factory, engines, global RNG, global state, etc.lloyd2015-02-044-18/+81
| | | | | | | | | | | | | | | Convert all uses of Algorithm_Factory and the engines to using Algo_Registry The shared pool of entropy sources remains but is moved to EntropySource. With that and few remaining initializations (default OIDs and aliases) moved elsewhere, the global state is empty and init and shutdown are no-ops. Remove almost all of the headers and code for handling the global state, except LibraryInitializer which remains as a compatability stub. Update seeding for blinding so only one hacky almost-global RNG instance needs to be setup instead of across all pubkey uses (it uses either the system RNG or an AutoSeeded_RNG if the system RNG is not available).
* Use registry for streams and MACs. Start updating callers.lloyd2015-01-313-18/+9
|
* Add a runtime map of string->func() which when called returnlloyd2015-01-2817-143/+239
| | | | | | | | | | | | | | | | | Transforms and BlockCiphers. Registration for all types is done at startup but is very cheap as just a std::function and a std::map entry are created, no actual objects are created until needed. This is a huge improvement over Algorithm_Factory which used T::clone() as the function and thus kept a prototype object of each type in memory. Replace existing lookup mechanisms for ciphers, AEADs, and compression to use the transform lookup. The existing Engine framework remains in place for BlockCipher, but the engines now just call to the registry instead of having hardcoded lookups. s/Transformation/Transform/ with typedefs for compatability. Remove lib/selftest code (for runtime selftesting): not the right approach.
* Avoid needless buffering when handling padding byteslloyd2015-01-231-4/+4
|
* Ensure all files have copyright and license info.lloyd2015-01-1027-27/+27
| | | | | Update license header line to specify the terms and refer to the file, neither of which it included before.
* Add helper and update commentlloyd2014-12-311-2/+8
|
* Support the older ChaCha20Poly1305 AEAD from draft-agl-tls-chacha20poly1305-04lloyd2014-12-312-10/+34
| | | | | which we distinguish by the nonce size (always 64 bits in this format, always 96 bits in the CFRG document).
* Add AEAD based on ChaCha20 and Poly1305 defined in ↵lloyd2014-12-294-0/+246
| | | | draft-irtf-cfrg-chacha20-poly1305-03
* OCB cleanup and additional testslloyd2014-11-072-51/+46
|
* Replace Transformatio::nstart with start_raw so we can do a full setlloyd2014-11-0518-38/+32
| | | | of overloads in the base class with the same name.
* Fix various warnings from VC++ 2014 and add missing includelloyd2014-10-311-3/+3
|
* Erroring on strict-overflow is a little too strict, GCC 4.9 is smartlloyd2014-05-261-11/+8
|
* Correct CCM for L != 2. Bugzilla 270lloyd2014-05-161-1/+1
|
* Clang fixeslloyd2014-02-091-0/+1
|
* More fixes for minified buildslloyd2014-02-091-0/+1
|
* Add header guard and fix amalgamation. Github issue 10.lloyd2014-01-311-0/+5
|
* Avoid strict overflow warnings in GCC 4.8lloyd2014-01-242-4/+16
|
* Avoid memory overread in last block of CFB encryption.lloyd2014-01-181-1/+1
|
* Guess I won't be needing theselloyd2014-01-189-9/+0
|
* Use unique_ptr instead of bare pointers and explicit delete in block, mac, hash.lloyd2014-01-182-4/+4
| | | | m_ namespaced everything while I'm in there. Changed CMAC poly_double signature.
* Split off the keyed interfaces of transform to Keyed_Transformlloyd2014-01-1810-18/+18
| | | | | Remove the unhelpful 'Algorithm' base class which had previously acted more or less as a global base.
* Move lib into srclloyd2014-01-1038-0/+3833