Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Avoid including rotate.h in bswap.h | Jack Lloyd | 2018-12-21 | 28 | -2/+30 |
| | | | | | | | It was only needed for one case which is easily hardcoded. Include rotate.h in all the source files that actually use rotr/rotl but implicitly picked it up via loadstor.h -> bswap.h -> rotate.h include chain. | ||||
* | Stop compressing Travis ccache | Jack Lloyd | 2018-12-21 | 1 | -3/+1 |
| | | | | Since CPU is main bottleneck to the build, this is likely not helping. | ||||
* | Address a couple of Coverity false positives | Jack Lloyd | 2018-12-19 | 4 | -7/+62 |
| | | | | Add tests for is_power_of_2 | ||||
* | Avoid using unblinded Montgomery ladder during ECC key generation | Jack Lloyd | 2018-12-18 | 2 | -11/+32 |
| | | | | | | | | | | | As doing so means that information about the high bits of the scalar can leak via timing since the loop bound depends on the length of the scalar. An attacker who has such information can perform a more efficient brute force attack (using Pollard's rho) than would be possible otherwise. Found by Ján Jančár (@J08nY) using ECTester (https://github.com/crocs-muni/ECTester) CVE-2018-20187 | ||||
* | Test how long it takes to precompute base point multiples | Jack Lloyd | 2018-12-16 | 2 | -1/+21 |
| | |||||
* | In PointGFp addition, prevent all_zeros from being shortcircuited | Jack Lloyd | 2018-12-14 | 1 | -4/+7 |
| | | | | | | This doesn't matter much but it causes confusing valgrind output when const-time checking since it distinguishes between the two possible conditional returns. | ||||
* | Unroll const_time_lookup by 2 | Jack Lloyd | 2018-12-14 | 1 | -6/+10 |
| | | | | | We know the lookup table is some power of 2, unrolling a bit allows more IPC | ||||
* | Simplify the const time lookup in ECC scalar mul | Jack Lloyd | 2018-12-14 | 1 | -12/+9 |
| | | | | | Code is easier to understand and it may let the CPU interleave the loads and logical ops better. Slightly faster on my machine. | ||||
* | Use a 3-bit comb for ECC base point multiply | Jack Lloyd | 2018-12-13 | 2 | -19/+36 |
| | | | | Improves ECDSA signing by 15% | ||||
* | Some cleanups in x25519 | Jack Lloyd | 2018-12-10 | 1 | -53/+43 |
| | |||||
* | Fix more MSVC warnings | Jack Lloyd | 2018-12-10 | 4 | -8/+9 |
| | |||||
* | Merge GH #1769 Support TLS signature padding strings in PKCS11 mapping | Jack Lloyd | 2018-12-10 | 1 | -0/+10 |
|\ | |||||
| * | Remove EMSA1 encodings from p11 sign mechanisms map | Hannes Rantzsch | 2018-12-10 | 1 | -5/+0 |
| | | |||||
| * | Extend the SignMechanisms map for Signature_Scheme padding strings | Hannes Rantzsch | 2018-12-04 | 1 | -0/+15 |
| | | | | | | | | | | | | This addresses #730. The tls_sign_message callback was unable to handle emsa strings produced as padding strings for TLS::Signature_Scheme, due to inconsistent naming (mostly between EMSA3 and EMSA_PKCS1). | ||||
* | | Fix some MSVC warnings | Jack Lloyd | 2018-12-10 | 12 | -26/+35 |
| | | |||||
* | | Work around a problem when built with OpenSSL | Jack Lloyd | 2018-12-10 | 3 | -7/+10 |
| | | | | | | | | | | | | | | It appears OpenSSL has a different interpretation from us of how the message representative is formed for P-521 when given a hash to sign that is larger than the group order; signatures generated by us do not verify with OpenSSL and vice versa. | ||||
* | | Support recovering ECDSA public key from message/signature pair | Jack Lloyd | 2018-12-10 | 6 | -2/+232 |
| | | | | | | | | | | | | See http://www.secg.org/sec1-v2.pdf section 4.1.6 Closes #664 | ||||
* | | Fix pylint3 warning [ci skip] | Jack Lloyd | 2018-12-10 | 1 | -1/+1 |
| | | |||||
* | | Make ASan happy | Jack Lloyd | 2018-12-09 | 1 | -1/+1 |
| | | |||||
* | | Add base58 encoding/decoding | Jack Lloyd | 2018-12-09 | 6 | -0/+454 |
| | | |||||
* | | Merge GH #1782 Add an i386 build/test to CI | Jack Lloyd | 2018-12-09 | 3 | -4/+14 |
|\ \ | |||||
| * | | Add an i386 CI target to check on 32-bit asm | Jack Lloyd | 2018-12-09 | 3 | -4/+14 |
| | | | |||||
* | | | Remove Chi-square test on random_integer | Jack Lloyd | 2018-12-09 | 1 | -46/+0 |
|/ / | | | | | | | | | I'm not sure this test is that useful, which is not itself a big problem, but it is also flaky and occasionally fails, which is no good. | ||||
* | | Merge GH #1780 Use constant time algorithm for monty_inverse | Jack Lloyd | 2018-12-09 | 2 | -39/+23 |
|\ \ | |||||
| * | | Use a const time algorithm for monty_inverse | Jack Lloyd | 2018-12-09 | 2 | -39/+23 |
| | | | | | | | | | | | | | | | Previous EEA leaked information about the low word of the prime, which is a problem for RSA. | ||||
* | | | Fix typo | Jack Lloyd | 2018-12-09 | 1 | -1/+1 |
| | | | |||||
* | | | Avoid doing a variable time division during Montgomery setup | Jack Lloyd | 2018-12-09 | 5 | -14/+25 |
|/ / | | | | | | | | | | | Instead require the inputs be reduced already. For RSA-CRT use Barrett which is const time already. For SRP6 inputs were not reduced, use the Barrett hook available in DL_Group. | ||||
* | | Move Miller-Rabin t param inside the block | Jack Lloyd | 2018-12-09 | 1 | -2/+2 |
| | | | | | | | | This var is not used if we use Baile-PSW instead | ||||
* | | Few features added for BSD. | David Carlier | 2018-12-09 | 3 | -1/+6 |
| | | | | | | | | | | explicit_bzero/explicit_memset since quite a time. getentropy exists for FreeBSD, but only from 12.x. | ||||
* | | Avoid repeated size checks when setting words in NIST reduction | Jack Lloyd | 2018-12-08 | 1 | -25/+33 |
| | | | | | | | | This is a tiny thing but it saves over 100K cycles for P-384 ECDSA | ||||
* | | Merge GH #1776 Clean ups in MDx_HashFunction | Jack Lloyd | 2018-12-08 | 2 | -33/+49 |
|\ \ | |||||
| * | | Require MDx_HashFunction block size to be a power of 2 | Jack Lloyd | 2018-12-08 | 2 | -14/+25 |
| | | | | | | | | | | | | | | | | | | Allows replacing div/mod by a variable with a shift/mask. Allows storing just the bit count, which saves a few bytes. | ||||
| * | | Cleanups in MDx_HashFunction | Jack Lloyd | 2018-12-08 | 2 | -32/+37 |
| | | | |||||
* | | | Merge GH #1775 Clean up Streebog and fix unaligned loads | Jack Lloyd | 2018-12-08 | 2 | -94/+114 |
|\ \ \ | |||||
| * | | | Clean up Streebog and fix use of unaligned loads | Jack Lloyd | 2018-12-08 | 2 | -94/+114 |
| |/ / | |||||
* / / | In speed, track number of invalid generated signatures and print once | Jack Lloyd | 2018-12-08 | 1 | -1/+6 |
|/ / | | | | | | | Otherwise this spams the output when something goes wrong. | ||||
* | | Merge GH #1774 Const time BigInt shifts | Jack Lloyd | 2018-12-08 | 6 | -98/+83 |
|\ \ | |||||
| * | | Avoid early exit | Jack Lloyd | 2018-12-07 | 1 | -4/+3 |
| | | | |||||
| * | | Fix bug and avoid allocations in left shift | Jack Lloyd | 2018-12-07 | 5 | -22/+36 |
| | | | |||||
| * | | Const time the behavior of shifts [WIP] | Jack Lloyd | 2018-12-06 | 3 | -87/+59 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | They would previously leak for example if the requested shift was 0. However, that should only happen in two situations: very dumb code explicitly requested a shift of zero (in which case we don't care if performance is poor, your code is dumb) or a variable shift that just happens to be zero, in which case the variable may be a secret, for instance this can be seen in the GCD computation. | ||||
* | | | In calc_sig_words save the size of m_reg before the loop | Jack Lloyd | 2018-12-08 | 1 | -3/+4 |
| | | | |||||
* | | | Merge GH #1773 Add BigInt::ct_reduce_below | Jack Lloyd | 2018-12-07 | 3 | -3/+39 |
|\ \ \ | |||||
| * | | | Add BigInt::ct_reduce_below | Jack Lloyd | 2018-12-06 | 3 | -3/+39 |
| | | | | |||||
* | | | | Merge GH #1772 ECDSA now caches RFC 6979 nonce generator object | Jack Lloyd | 2018-12-06 | 1 | -3/+3 |
|\ \ \ \ | |_|/ / |/| | | | |||||
| * | | | In ECDSA cache the RFC6979 object | Jack Lloyd | 2018-12-06 | 1 | -3/+3 |
| |/ / | | | | | | | | | | | | | This is a very minor savings but does make a difference especially for P-256. | ||||
* | | | Remove hamming_weight function | Jack Lloyd | 2018-12-06 | 2 | -22/+4 |
| | | | | | | | | | | | | | | | Unused outside of the test code and not really useful there either. Header is internal so no API breakage. | ||||
* | | | Better logic in BigInt::bits wrt valgrind const time checks | Jack Lloyd | 2018-12-06 | 1 | -2/+3 |
|/ / | |||||
* | | Merge GH #1771 Add GCC 4.8 build to Travis | Jack Lloyd | 2018-12-05 | 3 | -0/+10 |
|\ \ | |||||
| * | | Add GCC 4.8 travis build | Jack Lloyd | 2018-12-05 | 3 | -0/+10 |
| | | | |||||
* | | | Do swaps in PointGFp instead of copies | Jack Lloyd | 2018-12-05 | 2 | -14/+13 |
| | | | | | | | | | | | | Saves 5% for ECDSA |