aboutsummaryrefslogtreecommitdiffstats
path: root/src/asn1/ber_dec.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Allow arbitrary ciphers and hashes with PKCS #5 v2.0. The onlylloyd2012-05-311-3/+0
| | | | | | | | | | | | | | | | | | requirement is that OIDS for "<cipher>/CBC" and "HMAC(<hash>)" are defined. This does assume the normal parameter set of just the IV, so doesn't work right for (IIRC) RC5, but we don't have an OID set for RC5/CBC anyway. Continue to default to SHA-1 plus AES-256 as prior versions of the library can't handle any hashes other than SHA-1 or any ciphers other than AES or DES. OpenSSL 1.0.0j seems to understand SHA-256 + AES-256, though. BER_Decoder::decode_optional was assuming optional values were explicitly tagged. Now, only take that behavior if the input class tag was for a context specific tagging. Remove abort call for debugging from BER_Decoder Add a new version of DER_Encoder::encode_if for single objects.
* Add an X509_Certificate::allowed_usage for extended constraints.lloyd2012-05-271-0/+7
| | | | | | Check that whatever certificate we got is allowed to sign OCSP responses. Add another helper function BER_Decoder to try to handle the ASN.1 mess.
* Have BER_Deocder::decode_list actually start the SEQUENCE. All callerslloyd2012-05-271-1/+8
| | | | | | | | | | | | did it and it would be silly for it not to. Update the two existing callers, who were both doing start_cons().decode_list().end_cons() to just call decode_list(). Add BER_Decoder::get_next so we can get arbitrarily weird types without having to break message chains. Add dummy tag arguments to the ASN1_Object decoder so it can be used from decode_optional.
* Replace 0 and NULL pointer constants with nullptr. Also fix an oldlloyd2012-05-181-5/+5
| | | | style cast in secmem.h
* Fairly huge update that replaces the old secmem types with std::vectorlloyd2012-05-181-7/+78
| | | | | | using a custom allocator. Currently our allocator just does new/delete with a memset before deletion, and the mmap and mlock allocators have been removed.
* propagate from branch 'net.randombit.botan.tls-state-machine' (head ↵lloyd2012-03-301-1/+2
|\ | | | | | | | | | | 63b88a65b699c95ef839bc18336bceccfbfabd2e) to branch 'net.randombit.botan.cxx11' (head 1adcc46808b403b8f6bf1669f022e65f9c30e8ea)
| * Off by one in decode_constrained_integer, broke Session DER decodinglloyd2012-03-221-1/+2
| |
* | Merge fixups. Add locking to default session manager. Use chrono liblloyd2012-02-201-4/+4
|/ | | | and unique_ptr.
* This should always have reported what it saw and expectedlloyd2012-01-241-1/+5
|
* BER decoder extras needed by previous commitlloyd2011-12-271-0/+22
|
* Convert the BER/DER coders to use size_t instead of u32bit for smalllloyd2011-02-091-2/+2
| | | | integer values. Update callers.
* s/u32bit/size_t/ in asn1lloyd2010-10-131-21/+21
|
* Use size_t in all of math, remove to_u32bitlloyd2010-10-121-1/+8
|
* Update all uses of MemoryRegion::append to use either push_back or operator+=lloyd2010-09-151-2/+3
|
* First set of changes for avoiding use implicit vector->pointer conversionslloyd2010-09-131-5/+5
|
* Rename MemoryRegion::destroy to MemoryRegion::clear to match STLlloyd2010-09-081-3/+3
|
* Big, invasive but mostly automated change, with a further attempt atlloyd2010-09-071-2/+4
| | | | | | | | | | | | | | harmonising MemoryRegion with std::vector: The MemoryRegion::clear() function would zeroise the buffer, but keep the memory allocated and the size unchanged. This is very different from STL's clear(), which is basically the equivalent to what is called destroy() in MemoryRegion. So to be able to replace MemoryRegion with a std::vector, we have to rename destroy() to clear() and we have to expose the current functionality of clear() in some other way, since vector doesn't support this operation. Do so by adding a global function named zeroise() which takes a MemoryRegion which is zeroed. Remove clear() to ensure all callers are updated.
* Add a couple of new helper functions to BER_Decoder:lloyd2010-03-191-0/+8
| | | | | | | | | | decode_and_check takes an expected value; if the decoded value does not match, a Decoding_Error with a specified string is thrown. Useful for checking embedded version codes. decode_octet_string_bigint is for decoding INTEGER values that are stored as OCTET STRINGs. Totally obnoxious and useless, but common especially in the ECC standards.
* Move the get_byte template to its own header, because many fileslloyd2010-02-021-1/+1
| | | | including loadstor.h actually just needed get_byte and nothing else.
* Un-internal loadstor.h (and its header deps, rotate.h andlloyd2009-12-211-1/+1
| | | | | | | | | | | | | | bswap.h); too many external apps rely on loadstor.h existing. Define 64-bit generic bswap in terms of 32-bit bswap, since it's not much slower if 32-bit is also generic, and much faster if it's not. This may be quite helpful on 32-bit x86 in particular. Change formulation of generic 32-bit bswap. It may be faster or slower depending on the CPU, especially the latency and throuput of rotate instructions, but should be faster on an ideally superscalar processor with rotate instructions (ie, what I expect future CPUs to look more like).
* Make many more headers internal-only.lloyd2009-12-161-1/+1
| | | | | | | | | | | | | Fixes for the amalgamation generator for internal headers. Remove BOTAN_DLL exporting macros from all internal-only headers; the classes/functions there don't need to be exported, and avoiding the PIC/GOT indirection can be a big win. Add missing BOTAN_DLLs where necessary, mostly gfpmath and cvc For GCC, use -fvisibility=hidden and set BOTAN_DLL to the visibility __attribute__ to export those classes/functions.
* Rename/remove some secmem member variables for better matching with STLlloyd2009-11-171-2/+2
| | | | | | | | containers (specifically vector). Rename is_empty to empty Remove has_items Rename create to resize
* Thomas Moschny passed along a request from the Fedora packagers which camelloyd2009-03-301-94/+96
| | | | | | | | | | | | | | | up during the Fedora submission review, that each source file include some text about the license. One handy Perl script later and each file now has the line Distributed under the terms of the Botan license after the copyright notices. While I was in there modifying every file anyway, I also stripped out the remainder of the block comments (lots of astericks before and after the text); this is stylistic thing I picked up when I was first learning C++ but in retrospect it is not a good style as the structure makes it harder to modify comments (with the result that comments become fewer, shorter and are less likely to be updated, which are not good things).
* Move almost all of the ASN.1, BER, and DER codec related code into newlloyd2008-09-281-0/+469
module asn1 Move hex and base64 codecs into new codecs directory. Also move zlib and bzip2 to codecs from compress.