aboutsummaryrefslogtreecommitdiffstats
path: root/src/pubkey/ecc_key
Commit message (Collapse)AuthorAgeFilesLines
* Shuffle things around. Add NIST X.509 test to build.lloyd2014-01-013-279/+0
|
* Give everything setting a feature test macro in build.h a version codelloyd2013-11-281-1/+1
| | | | | | so application code can check for the specific API it expects without having to keep track of what versions APIs x,y,z changed. Arbitrarily set all current API versions to 20131128.
* Move assert.h from internal to very public (included in types.h)lloyd2013-03-131-1/+0
| | | | | | This reduces friction to writing an assert, so hopefully there will be more of them as a result. And we can use asserts in public headers now, very useful for templates.
* Add Public_Key::estimated_strength which gives an approximation of howlloyd2012-07-272-0/+8
| | | | | | | hard that key is to break. Use it in cert path validation, rejecting keys with estimated strength less than 80 bits.
* The messages for assertion checks were done both ways, both "assertionlloyd2012-07-091-2/+3
| | | | | | X is true" and "assertion X is false". Convert all of them to the form "assertion X is true" thus making it clear what it is that we are attempting to assert by testing the expression provided.
* Fix for bug 209. Required some reworking of the ASN.1 bytestringlloyd2012-07-091-4/+18
| | | | decoding code but seems an improvement.
* Fairly huge update that replaces the old secmem types with std::vectorlloyd2012-05-182-10/+10
| | | | | | 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.
* Move the curve over GF(p) code back into its own subdirlloyd2011-05-191-0/+1
|
* ECC private keys had two different constructors, one taking a grouplloyd2011-04-083-37/+27
| | | | | | | | | | | | | | | | and a random number generator, and the other taking a group and a preset private key value. The DL private keys instead have on constructor for this; if the x value is zero, then a new random key is created. For consistency, do this with ECC as well. ECDH actually didn't have one of these constructors, forcing you to either load from PKCS #8 or else use a random key. Rename EC_Domain_Params to EC_Group, with a typedef for compatability. More doc updates. Update mtn ignores for Sphinx output
* Remove inclusions of unused headers.lloyd2011-02-101-1/+0
| | | | Avoid using auto_ptr in the CVC headers.
* Convert the BER/DER coders to use size_t instead of u32bit for smalllloyd2011-02-091-2/+2
| | | | integer values. Update callers.
* Use BOTAN_ASSERT in various placeslloyd2010-09-261-4/+5
|
* Require all PK keys implement check_key. Add for ECC keys.lloyd2010-06-162-3/+9
|
* Replace PointGFp::check_invaraints, which would either return silentlylloyd2010-03-191-32/+5
| | | | | | | | | | | or throw an exception, with PointGFp::on_the_curve, which returns a bool. Update callers. This showed several cases where check_invaraints was being called multiple times, for instance when decoding a point with OS2ECP, check_invaraints was called; many callers of OS2ECP would then call check_invaraints again on the same object.
* Add a couple of new helper functions to BER_Decoder:lloyd2010-03-191-11/+3
| | | | | | | | | | 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.
* Set domain_encoding enum in all EC key constructorslloyd2010-03-051-10/+15
|
* Remove the sign() operation from the public key objects, totally replacedlloyd2010-03-052-6/+6
| | | | | | by using the ops. Add real ECDSA test vectors (two found in ANSI X9.62)
* Remove unnecessary virtual destructors from ECC key base typeslloyd2010-03-041-4/+0
| | | | (already have them, via Public_Key's virtual destructor)
* Remove load hooks from ECC classes, unusedlloyd2010-03-042-20/+8
|
* Kill pkcs8_decoderlloyd2010-03-042-49/+0
|
* Add similar decoding constructors to the private keyslloyd2010-03-042-4/+30
|
* Remove X509_Decoder. Fix GOST-34.10 DER constructor (was default to normal ECC)lloyd2010-03-042-43/+10
|
* Add a new constructor to each public key algorithm (only the publiclloyd2010-03-042-0/+20
| | | | | | | keys so far, private keys not changed) that takes an AlgorithmIdentifier and a MemoryRegion<byte>&. This performs the X.509 decoding. It is not possible anymore to create uninitialized PK objects.
* The code in pk_codecs was actually entirely tied to the code inlloyd2010-03-041-1/+0
| | | | | | pubkey; you literally could not compile any pubkey code without it. Move it up to the pubkey dir, it wasn't at all useful to have it in its own dir.
* Kill pkcs8_encoderlloyd2010-03-042-35/+4
|
* Add a pkcs8_private_key similiar to x509_subject_public_keylloyd2010-03-042-7/+14
|
* Add a new function to public key x509_subject_public_key which returnslloyd2010-03-042-29/+7
| | | | | what x509_encoder()->key_bits() used to return. This is much simpler than using the explicit encoder objects. Remove X509_Encoder entirely.
* Add a new function to Public_Key, algorithm_identifier(), which justlloyd2010-03-042-4/+9
| | | | | returns the AlgorithmIdentifier representing this scheme (OID + domain params if any).
* Unused variable warning in catch statementlloyd2010-03-031-1/+1
|
* Small cleanupslloyd2010-03-022-1/+8
|
* Add some simple constructors to the EC_ base key types to simplifylloyd2010-03-022-11/+50
| | | | the various implementations
* Remove auto_ptr from ECC key typeslloyd2010-03-022-126/+41
|
* Remove a fairly useless member of EC_PublicKey that was only used forlloyd2010-03-021-2/+0
| | | | | | | handling ImplicitCA ECDSA keys in the CVC code. Currently dealt with in CVC by simply commenting out the calls - CVC is already pretty broken and I'd much rather have ECC sane and under control and CVC totally broken than ECC remaining in its current state.
* Clean up EC_Domain_Paramslloyd2010-03-012-19/+17
|
* Move contents of gfpmath to numbertheory. Adjust dependencies.lloyd2010-02-251-1/+0
|
* Inline GFpElementlloyd2010-02-251-3/+1
|
* Remove PointGFp::mult_this_securelloyd2010-02-241-7/+3
|
* Remove unused variable in ec_dompar. Add missing include to ecc_keylloyd2010-02-231-0/+1
|
* Add copyright and license notes to pretty much every file that didn't have them,lloyd2009-12-311-2/+2
| | | | | | | | including the examples and self-test code. Most of these files had not copyright/license information at all; since a major point of the examples is to allow users to copy and paste code that already does something they want, an ambigious license is not good.
* Full working amalgamation build, plus internal-only headers concept.lloyd2009-12-161-7/+0
|
* Remove the 'realname' attribute on all modules and cc/cpu/os info files.lloyd2009-10-291-2/+0
| | | | | Pretty much useless and unused, except for listing the module names in build.h and the short versions totally suffice for that.
* Split up util.h into 3 fileslloyd2009-09-171-1/+0
| | | | | | | - rounding.h (round_up, round_down) - workfactor.h (dl_work_factor) - timer.h (system_time) And update all users of the previous util.h
* Fix some unused variable nits pointed out by icc 10.1lloyd2009-07-211-1/+1
|
* Move some files around to break up dependencies between directorieslloyd2009-07-161-0/+1
|
* Add a script that reads the output of print_deps.py and rewriteslloyd2009-07-151-6/+7
| | | | | | the info.txt files with the right module dependencies. Apply it across the codebase.
* Move the contents of pubkey/pubkey (which was kind of a catch-all tolloyd2009-07-151-1/+0
| | | | | | | just toplevel pubkey). This was a convention I realized made sense sometime on when I was first doing the modularization changes. Move pkcs8.* and x509_key.* to pk_codecs
* Thomas Moschny passed along a request from the Fedora packagers which camelloyd2009-03-302-16/+20
| | | | | | | | | | | | | | | 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).
* Reformat for shorter lineslloyd2008-11-071-5/+15
|
* Remove spurious trailing ; after blockslloyd2008-10-131-1/+1
|
* Move ECDSA_Signature into CVC module. It is not used by ECDSA directly now.lloyd2008-10-112-92/+94
| | | | Change several ECC functions to return const references instead of const values.