Commit Graph

662 Commits

Author SHA1 Message Date
426fa52511 Merge pull request #243
bb0ea50 Replace set/add with cmov in secp256k1_gej_add_ge. (Gregory Maxwell)
2015-04-22 02:48:00 -07:00
d505a890cd Merge pull request #244
2d2707a travis: test i686 builds with gmp (Cory Fields)
cf7f702 travis: update to new build infrastructure (Cory Fields)
2015-04-22 02:28:29 -07:00
2d2707a4d8 travis: test i686 builds with gmp
Test with and without endomorphism.
2015-04-22 04:51:32 -04:00
cf7f70229b travis: update to new build infrastructure
See here:
http://blog.travis-ci.com/2014-12-17-faster-builds-with-container-based-infrastructure/

These changes remove our use of sudo so that we can move to the container-based
builds. This yields quicker builds and less reliance on the old infrastructure.
2015-04-22 04:51:23 -04:00
bb0ea50de8 Replace set/add with cmov in secp256k1_gej_add_ge.
Use a conditional move of the same kind we use for the affine points
 in the storage  type instead of multiplying  with the infinity flag
 and adding.  This results in fewer constructions to worry about for
 sidechannel behavior.

It also might be faster: It doesn't appear to benchmark as slower for
 me at least; but I think  the CMOV is faster than the mul_int + add,
 but slower than the set+add;  making it a wash.
2015-04-22 00:43:30 +00:00
f3d3519ce0 Merge pull request #241
5c2a4fa Fix memory leak in context unit test (Andrew Poelstra)
2015-04-19 11:35:44 -07:00
5c2a4fad1c Fix memory leak in context unit test
Before fix, `valgrind ./tests 1` outputs
  ==21959==     in use at exit: 2,228,288 bytes in 8 blocks

after:
  ==23974==     in use at exit: 0 bytes in 0 blocks
2015-04-16 15:56:04 -05:00
14aacdc5e5 Merge pull request #239
93226a5 secp256k1.c: Add missing DEBUG_CHECKs for sufficiently capable contexts (Andrew Poelstra)
2015-04-14 01:04:03 -07:00
93226a54b4 secp256k1.c: Add missing DEBUG_CHECKs for sufficiently capable contexts 2015-04-13 21:56:50 -05:00
6099220e7b Merge pull request #237
6066bb6 Fix typo: avg -> max (Pieter Wuille)
2015-04-12 08:40:00 -07:00
6066bb684c Fix typo: avg -> max 2015-04-12 06:17:35 -07:00
9688030874 Merge pull request #236
d899b5b Expose ability to deep-copy a context (Andrew Poelstra)
2015-04-12 02:05:54 -07:00
d899b5b67c Expose ability to deep-copy a context 2015-04-11 22:16:03 -05:00
3608c7f2f6 Merge pull request #208
a9b6595 [API BREAK] Introduce explicit contexts (Pieter Wuille)
2015-04-11 01:02:19 -07:00
a9b6595ef8 [API BREAK] Introduce explicit contexts 2015-04-11 01:01:10 -07:00
a0d3b89dd6 Merge pull request #233
6534ee1 initialize variable (Cory Fields)
2015-04-10 01:20:35 -07:00
9e8d89bf6d Merge pull request #234
4450e24 Add a comment about the avoidance of secret data in array indexes. (Gregory Maxwell)
2015-04-10 01:08:58 -07:00
65e70e7542 Merge pull request #235
5098f62 Improve documentation formatting consistency (Daniel Cousens)
2015-04-10 01:07:29 -07:00
5098f62571 Improve documentation formatting consistency 2015-04-10 16:33:33 +10:00
4450e24a82 Add a comment about the avoidance of secret data in array indexes.
People elsewhere still seem to be writing crypto code making this
 mistake, so it must not be that well known.
2015-04-06 03:53:32 +00:00
6534ee1259 initialize variable 2015-04-03 17:16:09 -04:00
d5b53aa818 Merge pull request #232
c01df1a Avoid some implicit type conversions to make C++ compilers happy. (Gregory Maxwell)
2015-03-29 14:32:28 -07:00
c01df1adc9 Avoid some implicit type conversions to make C++ compilers happy. 2015-03-28 02:20:36 +00:00
bfe96ba1ee Merge pull request #231
33270bf Add a couple comments pointing to particular sections of RFC6979. (Gregory Maxwell)
2015-03-27 17:47:09 -07:00
33270bff87 Add a couple comments pointing to particular sections of RFC6979. 2015-03-28 00:43:15 +00:00
41603aa727 Merge pull request #230
2632019 Brace all the if/for/while. (Gregory Maxwell)
2015-03-27 16:59:18 -07:00
2632019713 Brace all the if/for/while.
Unbraced statements spanning multiple lines has been shown in many
 projects to contribute to the introduction of bugs and a failure
 to catch them in review, especially for maintenance on infrequently
 modified code.

Most, but not all, of the existing practice in the codebase were not
 cases that I would have expected to eventually result in bugs but
 applying it as a rule makes it easier for other people to safely
 contribute.

I'm not aware of any such evidence for the case with the statement
 on a single line, but some people strongly prefer to never do that
 and the opposite rule of "_always_ use a single line for single
 statement blocks" isn't a reasonable rule for formatting reasons.
 Might as well brace all these too, since that's more universally
 acceptable.

[In any case, I seem to have introduced the vast majority of the
 single-line form (as they're my preference where they fit).]

This also removes a broken test which is no longer needed.
2015-03-27 23:24:32 +00:00
1897b8e90b Merge pull request #229
efc571c Add simple testcases for signing with rfc6979 extra entropy. (Gregory Maxwell)
1573a10 Add ability to pass extra entropy to rfc6979 (Pieter Wuille)
2015-03-27 13:58:48 -07:00
efc571ceea Add simple testcases for signing with rfc6979 extra entropy. 2015-03-27 13:46:02 -07:00
1573a102c0 Add ability to pass extra entropy to rfc6979
Suggested by Greg Maxwell.
2015-03-23 05:39:56 -07:00
3087bc4d75 Merge pull request #228
27bc131 Silence some warnings from pedantic static analysis tools, improve compatibility with C++. (Gregory Maxwell)
2015-03-16 03:30:16 -07:00
d9b9f119e8 Merge pull request #218
0065a8f Eliminate multiple-returns from secp256k1.c. (Gregory Maxwell)
354ffa3 Make secp256k1_ec_pubkey_create reject oversized secrets. (Gregory Maxwell)
2015-03-16 03:27:30 -07:00
0065a8fb9c Eliminate multiple-returns from secp256k1.c.
Goto, multiple returns, continue, and/or multiple breaks in a
 loop are often used to build complex or non-local control
 flow in software.

(They're all basically the same thing, and anyone axiomatically
 opposing goto and not the rest is probably cargo-culting from
 the title of Dijkstra's essay without thinking hard about it.)

Personally, I think the current use of these constructs in the
 code base is fine: no where are we using them to create control-
 flow that couldn't easily be described in plain English, which
 is hard to read or reason about, or which looks like a trap for
 future developers.

Some, however, prefer a more rules based approach to software
 quality.  In particular, MISRA forbids all of these constructs,
 and for good experience based reasons.  Rules also have the
 benefit of being machine checkable and surviving individual
 developers.

(To be fair-- MISRA also has a process for accommodating code that
 breaks the rules for good reason).

I think that in general we should also try to satisfy the rules-
 based measures of software quality, except where there is an
 objective reason not do: a measurable performance difference,
 logic that turns to spaghetti, etc.

Changing out all the multiple returns in secp256k1.c appears to
 be basically neutral:  Some parts become slightly less clear,
 some parts slightly more.
2015-03-08 16:36:29 -07:00
354ffa33e6 Make secp256k1_ec_pubkey_create reject oversized secrets. 2015-03-08 16:36:29 -07:00
27bc1311af Silence some warnings from pedantic static analysis tools, improve compatibility with C++.
C doesn't include the null in an array initilized from a
string literal if it doesn't fit, in C++ this is invalid.

The vararray style prototypes and init+calc also changed in
 this commit are not C89 enough for some tools.
2015-03-08 09:12:03 +00:00
3b7ea633fb Merge pull request #221
443cd4b Get rid of hex format and some binary conversions (Pieter Wuille)
2015-03-02 02:45:32 -08:00
f789c5baf2 Merge pull request #215
8956111 use 128-bit hex seed (Pieter Wuille)
02efd06 Use RFC6979 for test PRNGs (Pieter Wuille)
2015-02-24 02:38:58 -08:00
4bc273bd9c Merge pull request #222
7c3771d Disable overlength-strings warnings. (evoskuil)
2015-02-24 02:37:58 -08:00
137a8ec45b Merge pull request #216
ae55e85 Use faster byteswapping and avoid alignment-increasing casts. (Pieter Wuille)
2015-02-24 02:22:54 -08:00
7c3771dd0f Disable overlength-strings warnings. 2015-02-23 14:12:25 -08:00
8956111802 use 128-bit hex seed 2015-02-23 07:32:37 -08:00
02efd06554 Use RFC6979 for test PRNGs 2015-02-23 07:30:08 -08:00
ae55e850c7 Use faster byteswapping and avoid alignment-increasing casts. 2015-02-23 04:58:58 -08:00
443cd4b8ee Get rid of hex format and some binary conversions 2015-02-23 04:37:21 -08:00
0bada0e2a9 Merge #214: Improve signing API documentation & specification
8030d7c Improve signing API documentation & specification (Pieter Wuille)
2015-02-16 11:29:15 -08:00
8030d7c0e5 Improve signing API documentation & specification 2015-02-14 15:38:27 -08:00
2b4cf416e7 Use pkg-config always when possible, with failover to manual checks for libcrypto 2015-02-13 23:44:07 +00:00
7b2fc1cac6 Merge #213: Removed gotos, which are hard to trace and maintain.
11690d3 Removed gotos, which are hard to trace and maintain. (Iang)
2015-02-13 10:41:14 -08:00
11690d3bb9 Removed gotos, which are hard to trace and maintain. 2015-02-12 18:18:31 -08:00
122a1ecf30 Merge pull request #205
6cc8425 Include a comment on secp256k1_ecdsa_sign explaining low-s. (Gregory Maxwell)
2015-02-12 17:05:32 -08:00