Commit Graph
1430 Commits
Author SHA1 Message Date
Gregory Maxwell f0709ac57e Avoid forward static decl of undefined functions, also fix a paren warning in the tests. 2014-11-13 01:45:49 -08:00
Gregory Maxwell 3276e7d4e2 Signed/unsigned comparisons in tests. 2014-11-12 15:47:12 -08:00
Gregory Maxwell 850562e3f1 Avoid unsigned comparison in scalar arith. 2014-11-12 15:47:12 -08:00
Gregory Maxwell 65a14abb48 Fix varrious signed/unsigned comparisons. 2014-11-12 15:47:12 -08:00
Gregory Maxwell e9e0e21a6f Avoid a shadowed variable. 2014-11-12 15:47:12 -08:00
Gregory Maxwell e28a8b86c7 Remove a VERIFY_CHECK for >=0ness on an unsigned type. 2014-11-12 15:47:12 -08:00
Gregory Maxwell 2cad067a36 Correct function prototypes and avoid unused parameter warnings. 2014-11-12 15:47:06 -08:00
Gregory Maxwell a4a43d7543 Reorder static to comply with C99 and switch to the inline macro. 2014-11-12 13:07:55 -08:00
Gregory Maxwell 8563713a4f Add non-null and unused-result warnings for the external API.
GCC (and clang) supports extensions to annotate functions so that their
 results must be used and so that their arguments can't be statically
 provable to be null. If a caller violates these requirements they
 get a warning, so this helps them write correct code.

I deployed this in libopus a couple years ago with good success, and
 the implementation here is basically copied straight from that.

One consideration is that the non-null annotation teaches the optimizer
 and will actually compile out runtime non-nullness checks as dead-code.
 Since this is usually not whats wanted, the non-null annotations are
 disabled when compiling the library itself.

The commit also removes some dead inclusions of assert.h and introduces
 compatibility macros for restrict and inline in preparation for some
 portability improvements.
2014-11-12 12:23:09 -08:00
Peter Dettman fb1bb0b445 Rearrange _gej_add_ge to save an _fe_negate 2014-11-12 02:16:36 -08:00
Pieter Wuille 9338dbf791 Branch-free point addition 2014-11-11 14:28:22 -08:00
Pieter Wuille ef6f677679 Merge pull request #95
79ad6d4 Remove some dead variables in the tests. (Gregory Maxwell)
9974d86 Misc. Warning and cosmetic error cleanups. (Gregory Maxwell)
2014-11-04 23:29:08 -08:00
Gregory Maxwell 79ad6d44ea Remove some dead variables in the tests. 2014-11-04 13:47:23 -08:00
Gregory Maxwell 9974d8693e Misc. Warning and cosmetic error cleanups.
This fixes a cosmetic precedence bug in the tests along with some
 type warnings.

It also adds a dummy cast to the CHECK macro to avoid hundreds
 of statement with no effect warnings on compilers that warn about
 such things.
2014-11-04 13:17:45 -08:00
Pieter Wuille 1d52a8b155 Implementations for scalar without data-dependent branches. 2014-11-04 03:01:55 -08:00
Pieter Wuille da55986fdf Label variable-time functions correctly and don't use those in sign 2014-11-04 02:50:06 -08:00
Pieter Wuille 784e62f3b2 Fix typo 2014-11-04 02:28:34 -08:00
Peter Dettman 137e77afb4 Address 'constant-time' TODOs in field impls 2014-11-04 14:57:04 +07:00
Pieter Wuille cc20075ef7 Merge pull request #85
7a8e385 Fix interaction between magnitudes and negation (Pieter Wuille)
2014-11-03 01:44:27 -08:00
Pieter Wuille 501d58f098 Get rid of {num,scalar,ecdsa_sig}_{init,free} 2014-11-03 01:31:04 -08:00
Pieter Wuille 7a8e385d74 Fix interaction between magnitudes and negation
Magnitude m means values are allowed to be up to 2 * 0xFFF...FFF * m,
while the argument passed to secp256k1_fe_negate didn't take the 2 into
account. Fix this.
2014-11-02 01:25:07 -08:00
Pieter Wuille b0295868f4 Merge pull request #82
8f9a307 Better .gitignore for bench binaries (Pieter Wuille)
fa5c13f Add bench_sign tool (Pieter Wuille)
2014-11-02 01:16:58 -07:00
Peter Dettman 7d681ac636 Add verification to 32bit field
- implement _fe_verify for 10x26
- fe is normalized after _fe_clear
- a few corresponding changes in 64bit field
2014-11-01 16:58:42 +07:00
Pieter Wuille fa5c13ff4c Add bench_sign tool 2014-10-31 08:23:34 -07:00
Pieter Wuille 504c63d72a Rename bench to bench_verify 2014-10-31 03:34:36 -07:00
Pieter Wuille 01097ddf19 Make bench deterministic 2014-10-31 03:34:36 -07:00
Pieter Wuille 81dc171604 Merge pull request #79
ae2679b Add bench_inv tool (Pieter Wuille)
2014-10-31 02:19:18 -07:00
Pieter Wuille 520ba3c921 Remove OpenSSL bignum implementation 2014-10-31 02:10:13 -07:00
Pieter Wuille ae2679b6e4 Add bench_inv tool 2014-10-30 06:26:05 -07:00
Pieter Wuille 79359302fb Add unit tests for scalars.
Also add a secp256k1_scalar_is_one function.
2014-10-29 02:11:07 -07:00
Pieter Wuille eca6cdb123 Switch scalar to use get/set 32-byte arrays 2014-10-29 00:40:56 -07:00
Pieter Wuille a9f5c8b875 Introduce secp256k1_scalar_t for future constant-time mod order operations 2014-10-28 04:33:23 -07:00
Pieter Wuille eb74c36bd2 Abstract out tweak logic to secp256k1_eckey_* functions 2014-10-27 03:27:55 -07:00
Pieter Wuille ffffc87855 Use internal secp256k1_eckey_ prefix for functions in eckey 2014-10-27 03:01:51 -07:00
Pieter Wuille e2f71f1efe Move non-ECDSA operations from ecdsa to eckey 2014-10-27 02:58:09 -07:00
Pieter Wuille ae6bc76e32 [API CHANGE] Use secp256k1_ec_ prefix for non-ECDSA key operations 2014-10-27 02:51:58 -07:00
Pieter Wuille dc407ed48c Avoid valgrind complaints in OpenSSL initialization check 2014-10-27 02:27:58 -07:00
Pieter Wuille 79f599d37f Tests take too long by default 2014-10-27 02:25:56 -07:00
Pieter Wuille 03bfc07b9e Avoid uninitialized access in secp256k1_gej_double 2014-10-26 06:51:38 -07:00
Pieter Wuille bff11e9112 Verify num=openssl initialization and check repeatability 2014-10-26 05:39:13 -07:00
Pieter Wuille 949c1ebb5e Split up ecmult and ecmult_gen entirely 2014-10-26 03:42:24 -07:00
Pieter Wuille 3fd6253e13 Better randomization for tests 2014-10-17 16:04:00 -07:00
Pieter Wuille bae6a42be4 Make bench use external interface 2014-09-29 08:21:59 +02:00
Pieter Wuille c259a7cbc0 Set precomputation table late and unset early.
Set the global pointer to the precomputation table only after initializing
it completely, and unset it before doing any uninitialization.

This causes fail-fast behavior in case of race conditions between
initialization and operations using it.
2014-09-13 17:19:30 +02:00
Pieter Wuille 04e34d18c3 Split up signing and verification initialization 2014-09-13 17:14:17 +02:00
Pieter Wuille da556eb772 Merge pull request #62
1136bed Make secp256k1_ge_set_gej work with the point at infinity (Pieter Wuille)
2014-09-13 16:26:27 +02:00
Pieter Wuille 1136bedbc2 Make secp256k1_ge_set_gej work with the point at infinity 2014-09-13 00:46:32 +02:00
Pieter Wuille 62c3f55a9d Nothing-up-my-sleeving blinding for a*G 2014-09-01 14:56:12 +02:00
Pieter Wuille fa492f059d Fix a signedness mistake in secp256k1_num_set_hex
We were using a potentially signed char as index in an array.
2014-08-27 01:21:57 +02:00
Pieter Wuille e2beb0bd2d Merge pull request #51
364fde6 fix unsigned warning in num_gmp_impl.h (caktux)
2014-08-27 01:20:19 +02:00