aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Address some issues with PR 492Jack Lloyd2016-08-1314-58/+120
| | | | | | | | | | | | | | | | Adds copyright notices for Juraj Somorovsky and Christian Mainka of Hackmanit for the changes in 7c7fcecbe6a and 6d327f879c Add Policy::check_peer_key_acceptable which lets the app set an arbitrary callback for examining keys - both the end entity signature keys from certificates and the peer PFS public keys. Default impl checks that the algorithm size matches the min keylength. This centralizes this logic and lets the application do interesting things. Adds a policy for ECDSA group size checks. Increases default policy minimums to 2048 RSA and 256 ECC. (Maybe I'm an optimist after all.)
* Merge branch 'master' into Encrypt-then-MAC-with-policyJuraj Somorovsky2016-05-1225-78/+71
|\ | | | | | | Merged recent changes and resolved minor conflicts in tls record classes.
| * Merge GH #484 use explicit casts to avoids MSVC warning C4267Jack Lloyd2016-05-0921-64/+62
| |\
| | * Add explicit static_cast operations to eliminate implicit cast compiler ↵Dan Brown2016-04-2718-36/+34
| | | | | | | | | | | | warnings.
| | * Change calls to 'get_byte' to explicitly cast parameters and eliminate ↵Dan Brown2016-04-277-28/+28
| | | | | | | | | | | | compiler warnings
| * | Turn MSVC warnings to /W4 and enable C4267Jack Lloyd2016-05-063-8/+1
| | | | | | | | | | | | | | | | | | Move disabling C4250 and C4251 to cmd line instead of header pragma. This means these warnings will show up in application code. But disabling warnings inside a library header is probably not good form.
| * | AppVeyor used amalgamation build due to strict build time restrictionsJack Lloyd2016-05-061-1/+1
| | | | | | | | | | | | Now allows up to 60 minute builds, so build normally.
| * | Somewhat more helpful helpJack Lloyd2016-04-281-5/+7
| | |
* | | Encrypt-then-MAC extension (RFC 7366)Juraj Somorovsky2016-05-1120-112/+372
| | | | | | | | | | | | | | | | | | Introduced a countermeasure against the logjam attack Short TLS records (AES-CBC) now return BAD_RECORD_MAC Fixed a compatibility problem with OpenSSL and TLS 1.0 (BEAST countermeasure)
* | | TLS Policy supportChristian Mainka2016-05-037-27/+173
|/ / | | | | | | | | | | | | * --policy works for TLS Server and TLS Client * Example policy BSI_TR-02102-2.txt * Fine granular configuration for TLS 1.0, 1.1, 1.2 and DTLS 1.0 and 1.2 * Minimum ecdh and rsa group size
* | Add missing overrideJack Lloyd2016-04-281-1/+1
| |
* | Check that the version in botan_version.py matches the tagged versionJack Lloyd2016-04-281-23/+44
|/
* Merge GH #469 Generate error on unknown critical extension during path ↵Jack Lloyd2016-04-239-78/+241
|\ | | | | | | | | | | | | validation Previously an unknown extension would be rejected during parsing, which prevents examining such a cert at all
| * Move name constraints validation code to extension classRené Korthaus2016-04-173-101/+111
| |
| * Add Unknown_Critical_Extension typeRené Korthaus2016-04-103-16/+43
| |
| * Generate error on unknown critical extension during path validationRené Korthaus2016-04-069-19/+145
| | | | | | | | | | | | | | | | | | | | | | | | Previously unknown critical extensions were rejected during X509_Certificate constructor, which inhibited inspecting other parts of such a certificate. Refactored the certificate extensions code so that the path validation routine performs this check only. Additionally, added an interface for extensions to inspect the path during path validation. TODOs were added in places where existing path validation code can use the new interface. Fixes GH #449.
* | Fix return type of TLS_Reader::get_u32bitJack Lloyd2016-04-211-2/+2
| | | | | | | | | | | | Only affects decoding of session ticket lifetimes. GH #478
* | Merge GH #475 Remove Transform base classJack Lloyd2016-04-2134-637/+615
|\ \
| * | Remove Transform base classJack Lloyd2016-04-2134-637/+615
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With sufficient squinting, Transform provided an abstract base interface that covered both cipher modes and compression algorithms. However it mapped on neither of them particularly well. In addition this API had the same problem that has made me dislike the Pipe/Filter API: given a Transform&, what does it do when you put bits in? Maybe it encrypts. Maybe it compresses. It's a floor wax and a dessert topping! Currently the Cipher_Mode interface is left mostly unchanged, with the APIs previously on Transform just moved down the type hierarchy. I think there are some definite improvements possible here, wrt handling of in-place encryption, but left for a later commit. The compression API is split into two types, Compression_Algorithm and Decompression_Algorithm. Compression_Algorithm's start() call takes the compression level, allowing varying compressions with a single object. And flushing the compression state is moved to a bool param on `Compression_Algorithm::update`. All the nonsense WRT compression algorithms having zero length nonces, input granularity rules, etc as a result of using the Transform interface goes away.
* | | Merge GH #481 Add NIST SP800-108 & 56c KDFsJack Lloyd2016-04-2111-0/+5991
|\ \ \
| * | | NIST SP800-108 & 56cKai Michaelis2016-04-2011-0/+5991
| |/ /
* | | Enable ECGDSA in default buildRené Korthaus2016-04-201-2/+0
| | |
* | | Add ECGDSARené Korthaus2016-04-1916-14/+617
|/ /
* | Catch the right exception type so errors are reported instead ofJack Lloyd2016-04-151-8/+17
| | | | | | | | | | | | manifesting as broken sockets. Leave the client socket open until the alert has been sent.
* | Don't reject TLS packets with zero plaintext bytesJack Lloyd2016-04-152-13/+19
| | | | | | | | | | | | | | | | OpenSSL sends an empty record before each new data record in TLS v1.0 to randomize the IV, as a countermeasure to the BEAST attack. Most implementations use 1/(n-1) splitting for this instead. Bug introduced with the const time changes in 1.11.23
* | Empty the key/tweak containers which is used to signal the key was setJack Lloyd2016-04-151-3/+3
| | | | | | | | Fix exception message
* | Merge GH #468Jack Lloyd2016-04-134-2/+23
|\ \ | | | | | | | | | | | | | | | Resolves problems with shared lib on OS X caused by incorrect dylib naming Fixes GH #467
| * | Fixed shared library behaviour on Darwin/OS X.Alastair Houghton2016-04-074-2/+23
| |/
* | Add support for ChaCha(12)Jack Lloyd2016-04-094-10/+49
| |
* | Fix a couple MSVC warnings.Jack Lloyd2016-04-093-10/+12
| | | | | | | | | | | | | | | | Cast std::streamsize to size_t since MSVC is worried gcount() might return a negative number. The entropy callbacks took the entropy estimate as a size_t instead of a double, which causes some verbose warnings due to the conversion.
* | Merge GH #464 fix Python3 bcrypt, add testJack Lloyd2016-04-091-3/+12
|\ \ | | | | | | | | | Fixes GH #461
| * | Removed empty lineMouse2016-04-061-1/+0
| | |
| * | Fixed bcrypt() argument problem. Fixed buffer overread in bcrypt().Mouse2016-04-051-3/+13
| |/
* / fix linker error if compiling with `--module-policy bsi` on Windows. Fixes ↵Daniel Neus2016-04-081-1/+1
|/ | | | GH #451
* Update OCB ciphersuites to follow new nonce scheme from -04 draftJack Lloyd2016-04-042-51/+51
|
* Add McEliece timeJack Lloyd2016-04-031-0/+82
|
* Add more tests for ffiRené Korthaus2016-03-253-5/+300
|
* Add IETF standard ChaCha20Poly1305 ciphersuites to TLSJack Lloyd2016-03-234-58/+97
|
* Fix bug in IETF version of ChaCha20Poly1305Jack Lloyd2016-03-233-18/+65
| | | | | If the input lengths are exact multiples of 16 bytes then no padding should be added. Previously 16 bytes of zero padding were added instead.
* Clean up PK decryption encoding.Jack Lloyd2016-03-2017-86/+103
| | | | | | | Previously RSA and ElGamal stripped off leading zeros which were then assumed by the padding decoders. Instead have them produce ciphertexts with leading zeros. Changes EME_Raw to strip leading zeros to match existing behavior.
* Add PK_Decryptor::decrypt_or_randomJack Lloyd2016-03-2017-129/+253
| | | | | Performs content checks on the value (expected length, expected bytes) and in constant time returns either the decrypted value or a random value.
* Remove support for TLS v1.2 MD5 and SHA-224 signatures.Jack Lloyd2016-03-172-53/+3
| | | | | | | | | Remove support for weak ECC curves (anything under P-256) from TLS. This includes secp256k1 since we don't take advantage of the special form for any performance advantage; might as well use P-256. The manual still mentioned that it was possible to use MD5 in Policy::allowed_macs, but all HMAC-MD5 suites are already removed.
* Client must verify that the server sent an ECC curve which policy accepts.Jack Lloyd2016-03-173-0/+13
| | | | | Otherwise a MITM who can in real time break any supported ECC curve can downgrade us.
* Use rejection sampling in BigInt::random_integerJack Lloyd2016-03-163-15/+12
| | | | Avoids the test vector contortions in RSA-KEM
* Merge GH #454 X.509 name constraintsJack Lloyd2016-03-1623-23/+1015
|\
| * Changes from GH #454 reviewJack Lloyd2016-03-163-68/+72
| |
| * X.509 Name ConstraintsKai Michaelis2016-03-1024-23/+1011
| |
* | TLS client featuresJack Lloyd2016-03-162-9/+55
| | | | | | | | | | | | Add flags --policy, --print-certs, --tls1.0, --tls1.1, --tls1.2 Update todo
* | Fix off by one in ressolJack Lloyd2016-03-152-1/+44
| | | | | | | | | | Could attempt to allocate (size_t)-1 words with predicably bad_alloc results.
* | Merge GH #422 Use system_time instead of high_resolution_clockJack Lloyd2016-03-101-1/+1
|\ \