aboutsummaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* The BER decoder assumed that all constructed types would be tagged aslloyd2008-05-081-2/+2
| | | | | | | | | | | | universal: this prevented it from decoding application, context-specific, or private-class constructions. Add a new parameter to BER_Decoder::start_cons which specifies the expected class type (default universal). The decoder still verifies that the constructed bit is set in the class tag. This provides parity with the interface to the DER encoder. Problem was found and reported by Falko Strenzke
* Remove unused headerslloyd2008-05-041-6/+5
|
* Remove Config::option_as_time, instead call timespec_to_u32bit inlloyd2008-05-022-3/+2
| | | | each caller.
* Add a new function timespec_to_u32bit that handles a very simplisticlloyd2008-05-011-0/+2
| | | | | | time format and converts it to a duration in seconds represented as a u32bit. This is from Config::option_as_time, which is now implemented simply as: return timespec_to_u32bit(option(key))
* The ability to load ini-style files was removed almost 6 monthslloyd2008-04-301-2/+0
| | | | | ago, but the Config class still contained the declaration for load_inifile() - remove it.
* Remove unused include of <vector>lloyd2008-04-291-2/+1
|
* Instead of reading from the Config object every time to get the slack welloyd2008-04-291-0/+1
| | | | | | should allow when checking timestamps, just call it once and store the value in the X509_Store object, passing it to validity_check with a new argument for the allowed time slack.
* Move validity_check() into an anonymous namespace inside x509stor.cpp,lloyd2008-04-291-2/+0
| | | | as that was the only place it was called from.
* Move Signature_Format enum to pubkey.hlloyd2008-04-299-8/+8
| | | | | | | | Including enums.h in needed places since asn1_int.h doesn't pull it in anymore. Remove Config::choose_sig_format, and move its logic into its only caller, the (global!) choose_sig_format in x509_ca.cpp
* propagate from branch 'net.randombit.botan.remove-libstate' (head ↵lloyd2008-04-2913-191/+45
|\ | | | | | | | | | | d4d75cf4f682ec63e316b853617e7cf9ba093272) to branch 'net.randombit.botan' (head 2fac918f1a1cb77d155cf434177e443d41e9e517)
| * Move ASN1_Tag from enums.h to asn1_int.h. The enums.h header is a totallloyd2008-04-242-38/+37
| | | | | | | | | | | | grab back of stuff, most of which are not used outside of very specific contexts, and some only internally. I am thinking to remove it and put each individual enum in an appropriate header.
| * Remove stray character introduced during mergelloyd2008-04-241-1/+1
| |
| * Remove unused Pulse_Type enumlloyd2008-04-241-15/+0
| |
| * Add BOTAN_DLL to Timer class declarationlloyd2008-04-211-1/+1
| |
| * propagate from branch 'net.randombit.botan' (head ↵lloyd2008-04-2111-139/+9
| |\ | | | | | | | | | | | | | | | 51f9ee5180a5cacdfff31504266e883b7bb0eb00) to branch 'net.randombit.botan.remove-libstate' (head 636b767b9686261418b1cb45a6271edeef87501b)
| | * propagate from branch 'net.randombit.botan' (head ↵lloyd2008-04-1211-138/+8
| | |\ | | | | | | | | | | | | | | | | | | | | bcae6a19d8d96ebde33c832c76a130ea02bc923a) to branch 'net.randombit.botan.remove-libstate' (head f640991b6e433a264f5d22a08338cfc9c24c82da)
| | | * propagate from branch 'net.randombit.botan' (head ↵lloyd2008-04-1011-138/+8
| | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | 6afe2db1f710f75bc27e189bb8bdb23613ce1ca3) to branch 'net.randombit.botan.remove-libstate' (head e40f0dbdfd847024c30fa0092c2acefc19a550b8)
| | | | * Remove the Global_RNG namespace, along with rng.h and rng.cpp. This waslloyd2008-04-073-33/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | essentially a facade for the RNG object living in the global library state. Rewrite all callers to directly invoke the global state object: this makes it more clear what functions are actually accessing mutable state outside of the normal reference graph (and thus, which functions will have to be altered in order to remove this dependency). Other facades remain in place for the configuration object and the memory allocator factory.
| | | | * Remove X509_GlobalState in favor of static function Extensions::get_extensionlloyd2008-04-073-40/+2
| | | | |
| | | | * propagate from branch 'net.randombit.botan' (head ↵lloyd2008-04-071-4/+2
| | | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | db3791f6bba4b57dd8aed17893565dc5bcd68f02) to branch 'net.randombit.botan.remove-libstate' (head 627d12447b2bb32aa08ff5daa499ac9580a77a05)
| | | | * | Remove Charset_Transcoder; hardwire UTF-8/Latin-1 conversions into charset.cpplloyd2008-04-074-43/+0
| | | | | |
| | | | * | In Botan, the Timer base class provides access to a high-resolutionlloyd2008-04-075-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | timer with an unspecified update rate and epoch. It is only used inside the entropy sources to provide some timing-dependent randomness. However, it is easier and basically 'as good' to treat the timers as entropy sources in their own right and feed their output directly into an entropy pool. This commit removes Library_State::system_clock and all calls to that function.
| | | | * | Library_State::set_timer is never called from within Botan, low hanginglloyd2008-04-071-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | fruit for removal.
| | | | * | The intent of this branch is to remove the global library state objectlloyd2008-04-071-11/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (Library_State, in libstate.{h,cpp}). It causes numerous 'interesting' problems with threads, etc, and the best solution here is to move to more or less an object-capability model, where the only objects that a piece of code can access are those which can be referenced through its arguments. First things first, remove the UI 'pulse' code. It is neither necessary nor sufficient for writing proper GUI/event driven code using Botan, has likely never been used in real code, and, given that, causes a distressing amount of overhead in terms of function calls made.
* | | | | | The PRIMES[] array (an array of small prime numbers) must be declaredlloyd2008-04-251-1/+1
|/ / / / / | | | | | | | | | | | | | | | | | | | | with BOTAN_DLL, since it is a public value (used by the factor example, perhaps others)
* | | | | Add BOTAN_DLL macro in all needed spots for working DLL export. Basedlloyd2008-04-21152-486/+562
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | on a patch from Joel Low for MSVC, modified and tested with GCC using -fvisibility=hidden and the visibility attribute. Getting this working completely requires making the shared object and static lib builds completely distinct (which is also a win since it allows avoiding -fPIC usage, etc in the static lib). Currently too many things are being exported, though it is an improvement as internal-only code like the bigint_* functions are hidden.
* | | | | Make RandomNumberGenerator::is_seeded pure virtuallloyd2008-04-211-1/+1
|/ / / /
* | | | Modify areas that still assumed Pipe::message_id was exactly a u32bit.lloyd2008-04-123-15/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was done by replacing Pipe::message_id with a completely opaque type and adding only the necessary operations. In this revision Pipe::message_id does remain a u32bit. However it may become an opaque type in the future. Move the Invalid_Message_Number exception to Pipe since that is the only piece of code which throws it.
* | | | Remove Config::option_as_u32bit - the only advantage it had over callinglloyd2008-04-122-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to_u32but on the return value from Config::option was that it passed it through parse_expr, which did some simple evaluation tricks so you could say 64*1024. That does not seem worth the cost in code, especially because most of the values so controlled are probably never changed. By making them compile time constants, additional optimizations are possible in the source as well as by the compiler. Remove the pkcs8_tries config option. Hardcode that value to 3 instead. I want to rewrite that code in the relatively near future and all that will (hopefully) go away.
* | | | Make the memory allocator's chunk size a compile time constant, via alloyd2008-04-122-3/+2
| | | | | | | | | | | | | | | | new build.h macro BOTAN_MEM_POOL_CHUNK_SIZE
* | | | Rename fips140.h to selftest.h, since it doesn't really have much to dolloyd2008-04-101-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with FIPS-140 aside from being a startup self test. Remove the test of X9.19 MAC at startup because it's not that important, and loading it in the startup means a prototypical object will be created and exist in memory for the entire process runtime. This actually raises an interesting idea, that periodically the cache of objects could be cleared and, if one is needed again, it can be created again as if it was the first time.
* | | | Remove unused Config::option_as_listlloyd2008-04-101-1/+0
|/ / /
* | | Remove the pem/ config arguments. Replace with arguments to the individuallloyd2008-04-101-3/+3
| | | | | | | | | | | | functions in pem.h. All have defaults with reasonable values.
* | | Add a second argument to X509_Cert_Options, which replaceslloyd2008-04-101-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | the configuration value default_expire Remove signing_offset as well - it is only used for setting the default time of a X509_Cert_Options: not worth the cost of a global variable.
* | | Remove the unused function Config::option_as_boollloyd2008-04-101-1/+0
| | |
* | | Change the interface of X509_CA::sign_request as follows:lloyd2008-04-101-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - The allow_ca policy value is no longer checked. Callers should check if the request is for a CA cert and treat it accordingly; this makes it simpler to to case-by-case decisions (expecially among multiple threads) - Instead of a single time value, a u32bit representing the number of seconds from now the certificate should expire, the start and end times are passed explicitly as two X509_Time values.
* | | Change the copyrights in all files in the Botan tree to directly reflectlloyd2008-04-10165-165/+169
| |/ |/| | | | | | | | | the actual copyright holders. For rationale, see my post to botan-devel on April 9, subject 'Changing license to directly reflect contributors' (http://www.randombit.net/pipermail/botan-devel/2008-April/000527.html)
* | Remove Extensions::copy_this(). Define the Extensions copy constructor inlloyd2008-04-071-4/+2
|/ | | | terms of Extensions::operator=
* Timer::combine_timers should be protected, not private, since subclasses needlloyd2008-04-071-1/+1
| | | | to access it.
* Move combine_timers from a free-standing function in util.h to a privatelloyd2008-04-072-1/+2
| | | | | static function of the Timer base class - since that is the only code which actually needs to access it.
* Remove the Named_Mutex_Holder and associated code. Convert all uses tolloyd2008-04-023-15/+12
| | | | | | | | | | | | | | instead allocate a reference to a mutex locally and use the more typical Mutex_Holder RAII object. Named_Mutex_Holder (and in particular the string->mutex mappings contained in the global state) have been found to be pretty expensive in at least some situations (see post by Jack Cummings to monotone-devel 2008-03-12), and doesn't really buy us that much in terms of ease of use. Also, it relies on the global state object, which has shown itself to be a rich source of race conditions and locking bugs. The intent is to incrementally remove all of the shared / global state and require applications to maintain that state where necessary.
* Wrap lineslloyd2008-03-141-1/+2
|
* Use a special typedef, Pipe::message_id, rather than a bare u32bit,lloyd2008-03-141-12/+14
| | | | to represent the message number in a Pipe
* Add a new constructor for DataSource_Stream taking in a std::istream.lloyd2008-03-111-1/+4
| | | | | Previously the only method allowed was with a pathname, which is pretty inflexible since it prevents you from using devices like std::cin, etc
* In DataSink_Stream, allow explicitly setting a pathname (forlloyd2008-03-111-3/+5
| | | | | | identification purposes) when passing in a std::ostream, since there is no portable way to go from a std::ostream to the file or other device that it names
* Mostly revert 2f4fd18182d5a75c40cd831e7ee3c314be5c57d6, only keep thelloyd2008-03-10159-159/+159
| | | | | updated dates on files that have actually changed this year. This makes the diff across versions readable again.
* Increase the size of the buffers in ARC4 and WiderWake4+1 from 1K tolloyd2008-03-092-2/+6
| | | | DEFAULT_BUFFERSIZE (normally 4K); measurably faster on a Core2
* If the macro BOTAN_TARGET_UNALIGNED_LOADSTOR_OK (from build.h) is on,lloyd2008-03-091-0/+86
| | | | | | | | | | | | | the word read/write functions will be faster through the use of (slightly unsafe) pointer manipulations. On some CPUs (like SPARC), these antics can cause crashes (usually visible by SIGBUS) if what you are attempting to read or write as an integer is not aligned on a word boundary. However they are safe on x86 and x86-64. Performance increases across the board on a Core2. In most algorithms the improvement seems to be about 3%, except a few standouts like RC6 (15%), MD4 (20%), RIPEMD-128 (8%). Will be better with faster xor_buf and byte swapping.
* Alas, my definition of the new improved reverse_bytes for 64-bit values waslloyd2008-03-091-2/+5
| | | | wrong, and didn't work at all. New corrected (and tested) version.
* Alter bigint_madd2 and bigint_madd3 to take only 3 (4, resp) arguments,lloyd2008-03-092-35/+38
| | | | | | | with the last one being both one of the input values and the output carry register, since almost always they were in fact the same variable. Also update the x86 and x86-64 modules.