Gregory Maxwell
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
Gregory Maxwell
354ffa33e6
Make secp256k1_ec_pubkey_create reject oversized secrets.
2015-03-08 16:36:29 -07:00
Pieter Wuille
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
Pieter Wuille
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
Pieter Wuille
4bc273bd9c
Merge pull request #222
...
7c3771d
Disable overlength-strings warnings. (evoskuil)
2015-02-24 02:37:58 -08:00
Pieter Wuille
137a8ec45b
Merge pull request #216
...
ae55e85
Use faster byteswapping and avoid alignment-increasing casts. (Pieter Wuille)
2015-02-24 02:22:54 -08:00
evoskuil
7c3771dd0f
Disable overlength-strings warnings.
2015-02-23 14:12:25 -08:00
Pieter Wuille
8956111802
use 128-bit hex seed
2015-02-23 07:32:37 -08:00
Pieter Wuille
02efd06554
Use RFC6979 for test PRNGs
2015-02-23 07:30:08 -08:00
Pieter Wuille
ae55e850c7
Use faster byteswapping and avoid alignment-increasing casts.
2015-02-23 04:58:58 -08:00
Pieter Wuille
443cd4b8ee
Get rid of hex format and some binary conversions
2015-02-23 04:37:21 -08:00
Pieter Wuille
0bada0e2a9
Merge #214 : Improve signing API documentation & specification
...
8030d7c
Improve signing API documentation & specification (Pieter Wuille)
2015-02-16 11:29:15 -08:00
Pieter Wuille
8030d7c0e5
Improve signing API documentation & specification
2015-02-14 15:38:27 -08:00
Pieter Wuille
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
Iang
11690d3bb9
Removed gotos, which are hard to trace and maintain.
2015-02-12 18:18:31 -08:00
Pieter Wuille
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
Pieter Wuille
035406d6db
Merge pull request #206
...
34b898d
Additional comments for the testing PRNG and a seeding fix. (Gregory Maxwell)
6efd6e7
Some comments explaining some of the constants in the code. (Gregory Maxwell)
2015-02-12 16:27:19 -08:00
Pieter Wuille
2d4cd53087
Merge pull request #161
...
ffccfd2
x86_64 assembly optimization for scalar_4x64 (Pieter Wuille)
2015-02-06 18:22:16 -08:00
Gregory Maxwell
34b898dc84
Additional comments for the testing PRNG and a seeding fix.
...
Rw has additional short-cycle inputs because 2^32/0x464fffff >= 2.
2015-02-07 00:22:49 +00:00
Gregory Maxwell
6efd6e7777
Some comments explaining some of the constants in the code.
2015-02-07 00:22:13 +00:00
Pieter Wuille
ffccfd2d00
x86_64 assembly optimization for scalar_4x64
2015-02-06 11:32:46 -08:00
Pieter Wuille
67cbdf0440
Merge pull request #207
...
039723d
Benchmarks for all internal operations (Pieter Wuille)
2015-02-02 20:58:01 -08:00
Pieter Wuille
039723d5da
Benchmarks for all internal operations
2015-02-02 20:02:39 -08:00
Gregory Maxwell
6cc8425c91
Include a comment on secp256k1_ecdsa_sign explaining low-s.
...
This was suggested by DavidEGrayson.
2015-02-02 02:47:24 +00:00
Pieter Wuille
f88343f2eb
Merge pull request #203
...
d61e899
Add group operation counts (Pieter Wuille)
2015-01-29 00:37:39 -04:00
Pieter Wuille
d61e899531
Add group operation counts
2015-01-27 12:32:53 -04:00
Pieter Wuille
2473f17121
Merge pull request #202
...
b5bbce6
Some readme updates, e.g. removal of the GMP field. (Gregory Maxwell)
2015-01-26 01:18:24 -04:00
Gregory Maxwell
b5bbce62e1
Some readme updates, e.g. removal of the GMP field.
2015-01-26 05:07:00 +00:00
Pieter Wuille
f0d851ee6a
Merge pull request #201
...
f735446
Convert the rest of the codebase to C89. (Gregory Maxwell)
2015-01-25 14:23:22 -04:00
Pieter Wuille
a0ea88456f
Merge pull request #200
...
bf2e1ac
Convert tests to C89. (also fixes a use of bare "inline" in field) (Gregory Maxwell)
2015-01-25 13:59:31 -04:00
Gregory Maxwell
f735446c4d
Convert the rest of the codebase to C89.
...
Update build system to enforce -std=c89 -pedantic.
2015-01-25 17:44:10 +00:00
Gregory Maxwell
bf2e1ac7cd
Convert tests to C89. (also fixes a use of bare "inline" in field)
2015-01-25 15:47:04 +00:00
Pieter Wuille
fc8285f18a
Merge pull request #199
...
fcc48c4
Remove the non-storage cmov (Pieter Wuille)
55422b6 Switch ecmult_gen to use storage types (Pieter Wuille)
41f8455
Use group element storage type in EC multiplications (Pieter Wuille)
e68d720
Add group element storage type (Pieter Wuille)
ff889f7
Field storage type (Pieter Wuille)
2015-01-25 09:16:11 -04:00
Pieter Wuille
fff412e10c
Merge pull request #197
...
4be8d6f
Centralize the definition of uint128_t and use it uniformly. (Gregory Maxwell)
d9543c9
Switch scalar code to C89. (Gregory Maxwell)
2015-01-25 01:38:24 -04:00
Gregory Maxwell
4be8d6fc42
Centralize the definition of uint128_t and use it uniformly.
...
This needs to be renamed along with the other _t types, because _t
is reserved. But that will be done later.
2015-01-25 05:10:40 +00:00
Gregory Maxwell
d9543c904f
Switch scalar code to C89.
2015-01-25 05:09:57 +00:00
Pieter Wuille
fcc48c4561
Remove the non-storage cmov
2015-01-25 00:56:22 -04:00
Pieter Wuille
55422b6aaf
Switch ecmult_gen to use storage types
2015-01-25 00:46:31 -04:00
Pieter Wuille
41f8455434
Use group element storage type in EC multiplications
2015-01-25 00:32:22 -04:00
Pieter Wuille
e68d7208ec
Add group element storage type
2015-01-25 00:31:56 -04:00
Pieter Wuille
ff889f7d90
Field storage type
2015-01-25 00:11:20 -04:00
Pieter Wuille
7137be8110
Merge pull request #196
...
0768bd5
Get rid of variable-length hex string conversions (Pieter Wuille)
2015-01-24 22:15:36 -04:00
Pieter Wuille
0768bd55a1
Get rid of variable-length hex string conversions
2015-01-24 21:52:48 -04:00
Pieter Wuille
e84e761915
Merge pull request #195
...
792bcdb
Covert several more files to C89. (Gregory Maxwell)
2015-01-24 21:36:12 -04:00
Gregory Maxwell
792bcdb015
Covert several more files to C89.
2015-01-24 23:34:09 +00:00
Pieter Wuille
45cdf4479d
Merge pull request #193
...
25b35c7
Convert field code to strict C89 (+ long long, +__int128) (Gregory Maxwell)
3627437
C89 nits and dead code removal. (Gregory Maxwell)
2015-01-24 18:51:50 -04:00
Pieter Wuille
17db09e3af
Merge pull request #194
...
402878a
fix ifdef/ifndef (mb300sd)
2015-01-24 15:26:15 -04:00
mb300sd
402878ae11
fix ifdef/ifndef
2015-01-23 17:09:50 -05:00
Gregory Maxwell
25b35c7ecb
Convert field code to strict C89 (+ long long, +__int128)
...
This makes the software more portable to embedded systems
and static analysis tools.
Sadly, it can't result in identical binaries because C99 mixed
declarations seem to make GCC emit superfluous stack-pointer
updates. The compiler is also somewhat dependent on the
declaration order.
2015-01-23 05:48:27 +00:00
Gregory Maxwell
3627437d80
C89 nits and dead code removal.
2015-01-23 04:17:12 +00:00