]> Git Repo - secp256k1.git/log
secp256k1.git
5 years agoMerge #578: Avoid implementation-defined and undefined behavior when dealing with...
Gregory Maxwell [Wed, 29 May 2019 10:35:10 +0000 (10:35 +0000)]
Merge #578: Avoid implementation-defined and undefined behavior when dealing with sizes

14c7dbd Simplify control flow in DER parsing (Tim Ruffing)
ec8f20b Avoid out-of-bound pointers and integer overflows in size comparisons (Tim Ruffing)
01ee1b3 Parse DER-enconded length into a size_t instead of an int (Tim Ruffing)
3cb057f Fix possible integer overflow in DER parsing (Tim Ruffing)

Pull request description:

  This is a result of auditing the code for overflow issues at random places. None of this is critical but I think all of it should be fixed.

  I know this touches "red" code. I double-checked and triple-checked this but I can understand if some of the changes are not desirable because they change well-tested code.

  Best reviewed in individual commits.

ACKs for commit 14c7db:

Tree-SHA512: 312dd3f961739752e1a861e75bd755920f634f87ee9668793e102c224434e8d21367452e114de729322c71a89f4fa82126aa5d32742f2bbbc091777c99515e10

5 years agoMerge #595: Allow to use external default callbacks
Gregory Maxwell [Mon, 27 May 2019 07:30:33 +0000 (07:30 +0000)]
Merge #595: Allow to use external default callbacks

e49f799 Add missing #(un)defines to base-config.h (Tim Ruffing)
77defd2 Add secp256k1_ prefix to default callback functions (Tim Ruffing)
908bdce Include stdio.h and stdlib.h explicitly in secp256k1.c (Tim Ruffing)
5db782e Allow usage of external default callbacks (Tim Ruffing)
6095a86 Replace CHECKs for no_precomp ctx by ARG_CHECKs without a return (Tim Ruffing)

Pull request description:

  This is intended for environments without implementations for `abort()`, `fprintf()`, and `stderr`. e.g., embedded systems. Those can provide their own implementations of `default_illegal_callback_fn` and `default_error_callback_fn` at compile time.

  If you want to use your own default callback, things will be somewhat inconsistent unfortunately: We cannot make the callback data `extern` too, because then the initialization lists for `default_illegal_callback` won't contain only constants. (`const` variables are not compile-time constants). So you cannot take callback data in your own default callback function.

  As a more drastic/breaking alternative I suggest to remove the callback data entirely. I don't think it's a big loss and I would be surprised if anyone uses it. Additionally, we could even remove the possibility to set the callback function at runtime after this PR. This will simplify things a lot, and again I don't think it's a big loss.

  Note that `abort()`, `fprintf()`, and `stderr` are also used in `CHECK`, which is still used in production code if we rely on gmp for scalar and field inversions (e.g.,  https://github.com/bitcoin-core/secp256k1/blob/master/src/scalar_impl.h#L240). This is not an issue for embedded system which probably don't want to use gmp anyway, but it is probably an issue for the reasons explained in https://github.com/bitcoin-core/secp256k1/pull/566#issuecomment-469111901.

  (related downstream: https://github.com/rust-bitcoin/rust-secp256k1/pull/100 @elichai)

ACKs for commit e49f79:

Tree-SHA512: 4dec0821eef4156cbe162bd8cdf0531c1fae8c98cd9db8438170ff1aa0e59b199739eeab293695bb582246812bea5309959f02f1fb74bb57872da54ebc52313f

5 years agoAdd missing #(un)defines to base-config.h
Tim Ruffing [Mon, 18 Mar 2019 15:20:07 +0000 (16:20 +0100)]
Add missing #(un)defines to base-config.h

5 years agoAdd secp256k1_ prefix to default callback functions
Tim Ruffing [Sat, 9 Mar 2019 10:41:21 +0000 (11:41 +0100)]
Add secp256k1_ prefix to default callback functions

5 years agoInclude stdio.h and stdlib.h explicitly in secp256k1.c
Tim Ruffing [Mon, 4 Mar 2019 15:11:35 +0000 (16:11 +0100)]
Include stdio.h and stdlib.h explicitly in secp256k1.c

5 years agoAllow usage of external default callbacks
Tim Ruffing [Mon, 4 Mar 2019 14:36:35 +0000 (15:36 +0100)]
Allow usage of external default callbacks

5 years agoReplace CHECKs for no_precomp ctx by ARG_CHECKs without a return
Tim Ruffing [Mon, 4 Mar 2019 12:09:45 +0000 (13:09 +0100)]
Replace CHECKs for no_precomp ctx by ARG_CHECKs without a return

5 years agoMerge #600: scratch space: use single allocation
Gregory Maxwell [Sun, 26 May 2019 07:37:54 +0000 (07:37 +0000)]
Merge #600: scratch space: use single allocation

98836b1 scratch: replace frames with "checkpoint" system (Andrew Poelstra)
7623cf2 scratch: save a couple bytes of unnecessarily-allocated memory (Andrew Poelstra)
a7a164f scratch: rename `max_size` to `size`, document that extra will actually be allocated (Andrew Poelstra)
5a4bc0b scratch: unify allocations (Andrew Poelstra)
c2b028a scratch space: thread `error_callback` into all scratch space functions (Andrew Poelstra)
0be1a4a scratch: add magic bytes to beginning of structure (Andrew Poelstra)
92a48a7 scratch space: use single allocation (Andrew Poelstra)

Pull request description:

ACKs for commit 98836b:

Tree-SHA512: 6e251f704644a5f61b24aa05c6f7a31ad8c58d147195079d52fe45daacd28a9fd2f4aaf71273183b99b3795a01a88f8389170d4280489b2a28a14a56e03153d7

5 years agoscratch: replace frames with "checkpoint" system
Andrew Poelstra [Sat, 25 May 2019 14:15:38 +0000 (14:15 +0000)]
scratch: replace frames with "checkpoint" system

5 years agoscratch: save a couple bytes of unnecessarily-allocated memory
Andrew Poelstra [Fri, 15 Mar 2019 15:41:09 +0000 (15:41 +0000)]
scratch: save a couple bytes of unnecessarily-allocated memory

5 years agoscratch: rename `max_size` to `size`, document that extra will actually be allocated
Andrew Poelstra [Thu, 14 Mar 2019 14:41:03 +0000 (14:41 +0000)]
scratch: rename `max_size` to `size`, document that extra will actually be allocated

5 years agoscratch: unify allocations
Andrew Poelstra [Thu, 14 Mar 2019 14:37:53 +0000 (14:37 +0000)]
scratch: unify allocations

5 years agoscratch space: thread `error_callback` into all scratch space functions
Andrew Poelstra [Wed, 13 Mar 2019 23:30:51 +0000 (23:30 +0000)]
scratch space: thread `error_callback` into all scratch space functions

Use it when checking magic bytes

5 years agoscratch: add magic bytes to beginning of structure
Andrew Poelstra [Wed, 13 Mar 2019 22:35:08 +0000 (22:35 +0000)]
scratch: add magic bytes to beginning of structure

5 years agoscratch space: use single allocation
Andrew Poelstra [Wed, 13 Mar 2019 22:19:41 +0000 (22:19 +0000)]
scratch space: use single allocation

5 years agoMerge #592: Use trivial algorithm in ecmult_multi if scratch space is small
Gregory Maxwell [Sat, 25 May 2019 22:34:47 +0000 (22:34 +0000)]
Merge #592: Use trivial algorithm in ecmult_multi if scratch space is small

9ab96f7 Use trivial algorithm in ecmult_multi if scratch space is small (Jonas Nick)

Pull request description:

  `ecmult_multi` already selects the trivial algorithm if the scratch space is NULL. With this PR the trivial algorithm is also selected if the scratch space is too small to use pippenger or strauss instead of returning 0. That makes it more easier to avoid consensus relevant inconsistencies just because scratch space construction was messed up.

ACKs for commit 9ab96f:
  real-or-random:
    utACK 9ab96f7

Tree-SHA512: aa451adf8880af15cf167a59cb07fc411edc43f26c8eb0873bdae2774382ba182e2a1c54487912f8f2999cb0402d554b9d293e2fb9483234471348a1f43c6653

5 years agoMerge #566: Enable context creation in preallocated memory
Gregory Maxwell [Sat, 25 May 2019 21:16:07 +0000 (21:16 +0000)]
Merge #566: Enable context creation in preallocated memory

0522caa Explain caller's obligations for preallocated memory (Tim Ruffing)
238305f Move _preallocated functions to separate header (Tim Ruffing)
695feb6 Export _preallocated functions (Tim Ruffing)
814cc78 Add tests for contexts in preallocated memory (Tim Ruffing)
ba12dd0 Check arguments of _preallocated functions (Tim Ruffing)
5feadde Support cloning a context into preallocated memory (Tim Ruffing)
c4fd5da Switch to a single malloc call (Tim Ruffing)
ef020de Add size constants for preallocated memory (Tim Ruffing)
1bf7c05 Prepare for manual memory management in preallocated memory (Tim Ruffing)

Pull request description:

  @apoelstra

  This builds on #557.

  Manually managing memory is always a pain in the ass in some way. I tried to keep the pain manageable. I'm open to suggestions to make this less ugly or error-prone.

  to do:
   * tests
   * export functions

ACKs for commit 0522ca:

Tree-SHA512: 8ddb5b70219b6f095e780a9812d2387ab2a7f399803ce4101e27da504b479a61ebe08b6380568c7ba6f1e73d7d0b1f58a3c0a66fa0fdec7a64cd0740e156ce38

5 years agoExplain caller's obligations for preallocated memory
Tim Ruffing [Fri, 29 Mar 2019 21:27:01 +0000 (22:27 +0100)]
Explain caller's obligations for preallocated memory

5 years agoMove _preallocated functions to separate header
Tim Ruffing [Tue, 27 Nov 2018 15:48:57 +0000 (16:48 +0100)]
Move _preallocated functions to separate header

5 years agoExport _preallocated functions
Tim Ruffing [Tue, 27 Nov 2018 15:47:46 +0000 (16:47 +0100)]
Export _preallocated functions

5 years agoAdd tests for contexts in preallocated memory
Tim Ruffing [Thu, 25 Oct 2018 18:32:38 +0000 (20:32 +0200)]
Add tests for contexts in preallocated memory

5 years agoCheck arguments of _preallocated functions
Tim Ruffing [Thu, 25 Oct 2018 16:08:14 +0000 (18:08 +0200)]
Check arguments of _preallocated functions

5 years agoSupport cloning a context into preallocated memory
Tim Ruffing [Thu, 25 Oct 2018 15:14:10 +0000 (17:14 +0200)]
Support cloning a context into preallocated memory

5 years agoSwitch to a single malloc call
Tim Ruffing [Mon, 22 Oct 2018 14:25:26 +0000 (16:25 +0200)]
Switch to a single malloc call

5 years agoAdd size constants for preallocated memory
Tim Ruffing [Mon, 22 Oct 2018 14:23:09 +0000 (16:23 +0200)]
Add size constants for preallocated memory

5 years agoPrepare for manual memory management in preallocated memory
Tim Ruffing [Thu, 18 Oct 2018 17:09:51 +0000 (19:09 +0200)]
Prepare for manual memory management in preallocated memory

 * Determine ALIGNMENT more cleverly and move it to util.h
 * Implement manual_malloc() helper function

5 years agoMerge #596: Make WINDOW_G configurable
Gregory Maxwell [Sat, 25 May 2019 10:15:59 +0000 (10:15 +0000)]
Merge #596: Make WINDOW_G configurable

a61a93f Clean up ./configure help strings (Tim Ruffing)
2842dc5 Make WINDOW_G configurable (Tim Ruffing)

Pull request description:

  This makes WINDOW_G a configurable value in the range of [2..24].
  The upper limit of 24 is a defensive choice. The code is probably
  correct for values up to 33 but those larger values yield in huge
  tables (>= 256MiB), which are i) unlikely to be really beneficial
  in practice and ii) increasingly difficult to test.

  The main point of this is not to make the window size configurable (using ./configure) but rather to use an external #define for the window size, which makes it configurable for embedded system that rely on their own build system (like in #595).

ACKs for commit a61a93:

Tree-SHA512: 0d58fdf4763340ddab992e95f6302a33d891476a7ac1748202ee99808e72b20754bb6935cbeaf0bb36077abaaff7d65f4848b1af64f1a0a5258239ba0d27020c

5 years agoClean up ./configure help strings
Tim Ruffing [Wed, 6 Mar 2019 13:10:38 +0000 (14:10 +0100)]
Clean up ./configure help strings

5 years agoMake WINDOW_G configurable
Tim Ruffing [Wed, 6 Mar 2019 12:12:33 +0000 (13:12 +0100)]
Make WINDOW_G configurable

This makes WINDOW_G a configurable value in the range of [2..24].
The upper limit of 24 is a defensive choice. The code is probably
correct for values up to 27 but those larger values yield in huge
tables (>= 256MiB), which are i) unlikely to be really beneficial
in practice and ii) increasingly difficult to test.

5 years agoMerge #626: Revert "Merge #620: Install headers automatically"
Gregory Maxwell [Fri, 24 May 2019 01:00:58 +0000 (01:00 +0000)]
Merge #626: Revert "Merge #620: Install headers automatically"

662918c Revert "Merge #620: Install headers automatically" (ian)

Pull request description:

  This reverts commit 91fae3ace0291b144b27fd8bbda509042f5400f1, reversing
  changes made to 5df77a0eda6e902a1aa9c6249cdeaec197b1e0cd.

  See discussion in https://github.com/bitcoin-core/secp256k1/pull/625

  After the change, if we enable any module, `make install` fails because of the
  duplicated files in the command line arguments.

  Closes https://github.com/bitcoin-core/secp256k1/issues/624

Tree-SHA512: 7769ede527ac307bff094603e5974c56b19e41bc2ef55113173d3dbc8e545d6add7ae044753fa0361595e5e7a746d6c8d641f98caa3381b683aa2b61a1742097

5 years agoRevert "Merge #620: Install headers automatically"
ian [Fri, 24 May 2019 00:34:54 +0000 (08:34 +0800)]
Revert "Merge #620: Install headers automatically"

This reverts commit 91fae3ace0291b144b27fd8bbda509042f5400f1, reversing
changes made to 5df77a0eda6e902a1aa9c6249cdeaec197b1e0cd.

See discussion in https://github.com/bitcoin-core/secp256k1/pull/625

After the change, if we enable any module, `make install` fails because of the
duplicated files in the command line arguments.

5 years agoSimplify control flow in DER parsing
Tim Ruffing [Wed, 7 Nov 2018 15:13:27 +0000 (16:13 +0100)]
Simplify control flow in DER parsing

5 years agoAvoid out-of-bound pointers and integer overflows in size comparisons
Tim Ruffing [Wed, 7 Nov 2018 15:17:57 +0000 (16:17 +0100)]
Avoid out-of-bound pointers and integer overflows in size comparisons

This changes pointer calculations in size comparions to a form that
ensures that no out-of-bound pointers are computed, because even their
computation yields undefined behavior.
Also, this changes size comparions to a form that ensures that neither
the left-hand side nor the right-hand side can overflow.

5 years agoParse DER-enconded length into a size_t instead of an int
Tim Ruffing [Wed, 7 Nov 2018 15:07:33 +0000 (16:07 +0100)]
Parse DER-enconded length into a size_t instead of an int

This avoids a possibly implementation-defined signed (int) to unsigned
(size_t) conversion portably.

5 years agoMerge #561: Respect LDFLAGS and #undef STATIC_PRECOMPUTATION if using basic config
Gregory Maxwell [Thu, 23 May 2019 00:36:27 +0000 (00:36 +0000)]
Merge #561: Respect LDFLAGS and #undef STATIC_PRECOMPUTATION if using basic config

dbed75d Undefine `STATIC_PRECOMPUTATION` if using the basic config (DesWurstes)
310111e Keep LDFLAGS if `--coverage` (DesWurstes)

Pull request description:

  Update: **This is a trimmed pull request with strong rationale.**

  - Adding `--coverage` shouldn't reset `LDFLAGS`, this is definitely a typo
  - The basic configuration should undefine `STATIC_PRECOMPUTATION`, as generating it is not supported and it complicates #549

Tree-SHA512: 29f0dd4c870ec60d535346446b453da459ca843ed1265c2bc966bf0fcbdf3c5c79f9e48a419662e81d790a7003f8877a16e2a5a74aa5c0b79645e15ad56a0f66

5 years agoMerge #620: Install headers automatically
Gregory Maxwell [Thu, 23 May 2019 00:00:49 +0000 (00:00 +0000)]
Merge #620: Install headers automatically

16e8615 Install headers automatically (Víctor Mayoral Vilches)

Pull request description:

  This fix install all the headers under include/ into
  /usr/local/include. The fix solves problems that arise
  when building libraries that depend on secp256k1 such
  as libbitcoin-system which require all the headers

Tree-SHA512: 8a5dc664b278e47340bf7478ad278306c44c4c8ad17a023b198c6a927c67c7a7a50100357388342129078afdf7606d2ed06579ce1fc14195fa974510b933021b

5 years agoMerge #533: Make sure we're not using an uninitialized variable in secp256k1_wnaf_con...
Gregory Maxwell [Wed, 22 May 2019 04:43:53 +0000 (04:43 +0000)]
Merge #533: Make sure we're not using an uninitialized variable in secp256k1_wnaf_const(...)

248f046 Make sure we're not using an uninitialized variable in secp256k1_wnaf_const(...) (practicalswift)

Pull request description:

  Make sure we're not using an uninitialized variable in `secp256k1_wnaf_const(...)`:

  ```
  In file included from src/secp256k1.c:15:0,
                   from src/tests.c:17:
  src/ecmult_const_impl.h: In function ‘secp256k1_wnaf_const’:
  src/ecmult_const_impl.h:117:20: warning: ‘u’ may be used uninitialized in this function [-Wmaybe-uninitialized]
       wnaf[word] = u * global_sign;
                      ^
  ```

  **Note to reviewers:** Perhaps an `assert(…);` is a bit drastic. What would be a more graceful way to handle this? :-)

Tree-SHA512: 536cd7cc5b87a84fbaac578cecbba81b8d82e4672a30a2db9a674b82856132e79b0158a6a88609bc24942ebdbf1fcd2c4399a4c31ab0654b88ace9c0e6f1eaf3

5 years agoMerge #617: Pass scalar by reference in secp256k1_wnaf_const()
Gregory Maxwell [Wed, 22 May 2019 04:38:27 +0000 (04:38 +0000)]
Merge #617: Pass scalar by reference in secp256k1_wnaf_const()

8979ec0 Pass scalar by reference in secp256k1_wnaf_const() (Tim Ruffing)

Pull request description:

  After this change, no struct or union is passed by value in the
  entire codebase. This makes it easier to compile the library with
  CompCert.

Tree-SHA512: 6b23e2b39701c3eeb6ae8c8d660cabe8872ac8f13141504c1ec55c47f2009e206129b34b31796e618114b60350598187df6df4c2be0e5c1b138a6126ad6a7484

5 years agoMerge #619: Clear a copied secret key after negation
Gregory Maxwell [Thu, 16 May 2019 08:37:20 +0000 (08:37 +0000)]
Merge #619: Clear a copied secret key after negation

069870d Clear a copied secret key after negation (Seonpyo Kim)

Pull request description:

  It closes #618

Tree-SHA512: 05299597c886c5d1a913fd0ce8c698d2e513eb80fbd33d571a02fc6910cfd337324c6f0f27175eaf125eb3478d38187763680e859ece9a469a034c9b8a8d6920

5 years agoInstall headers automatically
Víctor Mayoral Vilches [Wed, 15 May 2019 07:54:35 +0000 (09:54 +0200)]
Install headers automatically

This fix install all the headers under include/ into
/usr/local/include. The fix solves problems that arise
when building libraries that depend on secp256k1 such
as bitcoin-system which require all the headers

5 years agoClear a copied secret key after negation
Seonpyo Kim [Wed, 15 May 2019 06:55:01 +0000 (15:55 +0900)]
Clear a copied secret key after negation

5 years agoPass scalar by reference in secp256k1_wnaf_const()
Tim Ruffing [Tue, 14 May 2019 09:43:54 +0000 (11:43 +0200)]
Pass scalar by reference in secp256k1_wnaf_const()

After this change, no struct or union is passed by value in the
entire codebase. This makes it easier to compile the library with
CompCert.

5 years agoMerge #612: Allow field_10x26_arm.s to compile for ARMv7 architecture
Gregory Maxwell [Thu, 9 May 2019 22:23:41 +0000 (22:23 +0000)]
Merge #612: Allow field_10x26_arm.s to compile for ARMv7 architecture

d4d270a Allow field_10x26_arm.s to compile for ARMv7 architecture (Roman Zeyde)

Pull request description:

  It would allow using optimized field operations on the TREZOR device, which is using ARMv7 Cortex-M4.
  Following https://github.com/trezor/trezor-core/pull/500 and part of https://github.com/trezor/trezor-firmware/issues/66.

Tree-SHA512: 73c0f03503feff01c6f4efd884e916ae1f43f55d525e8c3ea9372cf777aef6901585b74774c316dd7937abfff5e86be5b1acb569f9eeee9b73ae088f0f6b589d

5 years agoAllow field_10x26_arm.s to compile for ARMv7 architecture
Roman Zeyde [Sun, 21 Apr 2019 17:11:58 +0000 (20:11 +0300)]
Allow field_10x26_arm.s to compile for ARMv7 architecture

5 years agoMerge #607: Use size_t shifts when computing a size_t
Gregory Maxwell [Sun, 31 Mar 2019 09:36:08 +0000 (09:36 +0000)]
Merge #607: Use size_t shifts when computing a size_t

e6d01e9 Use size_t shifts when computing a size_t (Pieter Wuille)

Pull request description:

  This was detected by compiling with MSVC; it triggers warning C4334.

  I don't think this is necessary, as we know the maximum shift is a very small integer, but this makes the code more obviously correct.

Tree-SHA512: 3c0cf412c75b4361d01e78bf13fe81c3f28b82abd40b0706285cc691124381cb1ff1f1c3512420250180b7612a471ce48357b282b1e34a08f5359e58af25e198

5 years agoMerge #606: travis: Remove unused sudo:false
Gregory Maxwell [Sun, 31 Mar 2019 00:41:44 +0000 (00:41 +0000)]
Merge #606: travis: Remove unused sudo:false

7667532 travis: Remove unused sudo:false (MarcoFalke)

Pull request description:

  Builds in sudo-disabled docker containers are no longer available as of last year and all builds happen on sudo enabled vms.

  Source: https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration#timeline---its-happening-fast

Tree-SHA512: 882585ba4e1596ad34ddf163acecd043da63443fa95653fba63b03dacf3a669128f1ed142527484cc8dab98de341b425425f418b8151cf7303b0e906ae259a9a

5 years agoUse size_t shifts when computing a size_t
Pieter Wuille [Sat, 30 Mar 2019 19:54:44 +0000 (12:54 -0700)]
Use size_t shifts when computing a size_t

5 years agotravis: Remove unused sudo:false
MarcoFalke [Sat, 30 Mar 2019 16:35:32 +0000 (12:35 -0400)]
travis: Remove unused sudo:false

5 years agoMake sure we're not using an uninitialized variable in secp256k1_wnaf_const(...)
practicalswift [Sun, 6 May 2018 07:28:54 +0000 (09:28 +0200)]
Make sure we're not using an uninitialized variable in secp256k1_wnaf_const(...)

5 years agoUse trivial algorithm in ecmult_multi if scratch space is small
Jonas Nick [Wed, 27 Feb 2019 10:46:42 +0000 (10:46 +0000)]
Use trivial algorithm in ecmult_multi if scratch space is small

5 years agoMerge #599: Switch x86_64 asm to use "i" instead of "n" for immediate values.
Gregory Maxwell [Mon, 11 Mar 2019 18:30:34 +0000 (18:30 +0000)]
Merge #599: Switch x86_64 asm to use "i" instead of "n" for immediate values.

d58bc93 Switch x86_64 asm to use "i" instead of "n" for immediate values. (Gregory Maxwell)

Pull request description:

  The constraint "n" is a more obscure setting which is needed for
   special cases that don't apply to our use.

  Use of "n" exposed some bugs in pre-release versions of clang.
  This fixes #594

Tree-SHA512: 1ffba02aa6bfcd0b6f731196e5d007f4ddb0f03f53b30a2633f0e376578cf7f828570579502f2de721dcda8034fd8e7bea822542bf36032d98ef802b4cf27725

5 years agoSwitch x86_64 asm to use "i" instead of "n" for immediate values.
Gregory Maxwell [Sun, 10 Mar 2019 22:52:12 +0000 (22:52 +0000)]
Switch x86_64 asm to use "i" instead of "n" for immediate values.

The constraint "n" is a more obscure setting which is needed for
 special cases that don't apply to our use.

Use of "n" exposed some bugs in pre-release versions of clang.
This fixes #594

5 years agoMerge #597: Add $(COMMON_LIB) to exhaustive tests to fix ARM asm build
Gregory Maxwell [Sun, 10 Mar 2019 22:44:37 +0000 (22:44 +0000)]
Merge #597: Add $(COMMON_LIB) to exhaustive tests to fix ARM asm build

8348386 Add $(COMMON_LIB) to exhaustive tests to fix ARM asm build (Gregory Maxwell)

Pull request description:

Tree-SHA512: ef091b86189a2235710866689024f2b190ebcc5741667be0921e6b4a50d53ddf9a63f4c90b1509f25e46631d75338913143a2a1335a74c842f84b98739a9d306

5 years agoAdd $(COMMON_LIB) to exhaustive tests to fix ARM asm build
Gregory Maxwell [Sat, 9 Mar 2019 06:17:27 +0000 (06:17 +0000)]
Add $(COMMON_LIB) to exhaustive tests to fix ARM asm build

5 years agoMerge #568: Fix integer overflow in ecmult_multi_var when n is large
Gregory Maxwell [Mon, 25 Feb 2019 21:00:08 +0000 (21:00 +0000)]
Merge #568: Fix integer overflow in ecmult_multi_var when n is large

2277af5 Fix integer overflow in ecmult_multi_var when n is large (Jonas Nick)

Pull request description:

  Without this PR ecmult_multi could return wrong results. If the number of points `n` is large enough then some or all multiplications could be skipped or the function could end up in an infinite loop. This PR adds two checks to prevent `n` from wrapping around.

Tree-SHA512: 342944369b24776fa3ec0694eee159259ff67e94d2d8176c1d3159875f387d943d5bfdff7cde59f058e13f07fd09bde1cbc609426e63c8a5b8040e382dd865d8

5 years agoFix integer overflow in ecmult_multi_var when n is large
Jonas Nick [Wed, 24 Oct 2018 17:58:24 +0000 (17:58 +0000)]
Fix integer overflow in ecmult_multi_var when n is large

5 years agoUndefine `STATIC_PRECOMPUTATION` if using the basic config
DesWurstes [Mon, 25 Feb 2019 08:36:39 +0000 (11:36 +0300)]
Undefine `STATIC_PRECOMPUTATION` if using the basic config

5 years agoKeep LDFLAGS if `--coverage`
DesWurstes [Mon, 25 Feb 2019 08:34:52 +0000 (11:34 +0300)]
Keep LDFLAGS if `--coverage`

5 years agoMerge #591: Make bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing.
Gregory Maxwell [Sun, 24 Feb 2019 18:34:15 +0000 (18:34 +0000)]
Merge #591: Make bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing.

b76e45d Make bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing. (Gregory Maxwell)

Pull request description:

  Bench_internal was previously incorrect but wasn't detected by -DVERIFY until PR #551.

Tree-SHA512: 5ecb9e3ba63ddf28cde4012154dbb1dda9b7178016d970dba58a4af20c31aa1ec3458ba2623541233fb16fceff7b3053054d6eee0229d0bfb6281d1a10554e9f

5 years agoMerge #580: Add trivial ecmult_multi algorithm which does not require a scratch space
Gregory Maxwell [Sun, 24 Feb 2019 03:01:31 +0000 (03:01 +0000)]
Merge #580: Add trivial ecmult_multi algorithm which does not require a scratch space

a697d82 Add trivial ecmult_multi to the benchmark tool (Jonas Nick)
bade617 Add trivial ecmult_multi algorithm. It is selected when no scratch space is given and just multiplies and adds the points. (Jonas Nick)

Pull request description:

  This commit adds a new ecmult_multi algorithm that is automatically selected when `ecmult_multi_var` is called with scratch space set to `NULL`. This is a trivial algorithm that simply multiplies the points with the corresponding scalars and adds them up.

  The use case is to allow creating exposed function that uses `ecmult_multi` but without requiring a scratch space argument. For example, in MuSig when computing the combined public key we need to compute a weighted sum of points but we most likely don't care about the performance. And if we do we can still provide a scratch space. Having the option of not providing a scratch space is useful because creating a scratch space is not entirely trivial. One needs to decide on a size and it needs to be destroyed.

Tree-SHA512: 2de20feeff00902ca0936ec1f8d81cf7a95d0917f80e76e9eacbd739c8c2e248fbdaeb468a0aeaf715ec251c2c79b5e271ff4d77456218d02332e26e003d796e

5 years agoAdd trivial ecmult_multi to the benchmark tool
Jonas Nick [Sat, 23 Feb 2019 20:22:30 +0000 (20:22 +0000)]
Add trivial ecmult_multi to the benchmark tool

5 years agoAdd trivial ecmult_multi algorithm. It is selected when no scratch space is given...
Jonas Nick [Thu, 20 Dec 2018 20:48:19 +0000 (20:48 +0000)]
Add trivial ecmult_multi algorithm. It is selected when no scratch space is given and just multiplies and adds the points.

5 years agoMerge #584: configure: Use CFLAGS_FOR_BUILD when checking native compiler
Gregory Maxwell [Fri, 22 Feb 2019 01:28:04 +0000 (01:28 +0000)]
Merge #584: configure: Use CFLAGS_FOR_BUILD when checking native compiler

a34bcaa Actually pass CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD to linker (Tim Ruffing)
2d5f4ce configure: Use CFLAGS_FOR_BUILD when checking native compiler (Tim Ruffing)

Pull request description:

  This fixes a bug where configure would fail or disable static
  ecmult tables because it wrongly checks the native compiler using
  the target CFLAGS (instead of the native CFLAGS_FOR_BUILD).

  Moreover, this commit adds tests to figure out whether the native
  compiler supports the warning flags passed during the build, and it
  contains a few minor improvements to the code that checks the native
  compiler.

Tree-SHA512: 31a92a5516cf2f9801c918edfba0059aa4f8549b0c1de94fc166b5e92ad1868a480c48cdc5ff62679ba20e26f4a0e2948c71fd2b3e80766673d2bf7512da3875

5 years agoMerge #516: improvements to random seed in src/tests.c
Gregory Maxwell [Thu, 21 Feb 2019 11:42:08 +0000 (11:42 +0000)]
Merge #516: improvements to random seed in src/tests.c

be40c4d Fixup for C90 mixed declarations. (Gregory Maxwell)
8b3841c fix bug in fread() failure check (Don Viszneki)
cddef0c tests: add warning message when /dev/urandom fails (Don Viszneki)

Pull request description:

  I've made two small changes to `src/tests.c` circa random seed generation.

  Added a warning when `/dev/urandom` fails, mostly to defend against the case that someone should use the code verbatim, but also to enhance its illustrative power.

  Also I fixed a bug with how the return value of `fread()` was being evaluated. In fact, `/dev/urandom` was never being applied before as the check on the return value of `fread()` always failed!

Tree-SHA512: 239dbe8316220c2f0e5b370bf9a18f78196e96cc4a7edea58cf2521b2c9cbc8da065be96aa859f90324d57e388d30f7670ce6bc1cca52e5162e5ca66b1a55b34

5 years agoMake bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing.
Gregory Maxwell [Thu, 21 Feb 2019 05:58:33 +0000 (05:58 +0000)]
Make bench_internal obey secp256k1_fe_sqrt's contract wrt aliasing.

Bench_internal was previously incorrect but wasn't detected by
 -DVERIFY until PR #551.

5 years agoMerge #562: Make use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse
Gregory Maxwell [Thu, 21 Feb 2019 05:32:47 +0000 (05:32 +0000)]
Merge #562: Make use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse

d3cb1f9 Make use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse (Ben Woosley)

Pull request description:

  This results in more self-documenting code.

  Constants defined here:
  https://github.com/bitcoin-core/secp256k1/blob/1e6f1f5ad5e7f1e3ef79313ec02023902bf8175c/include/secp256k1.h#L175-L180

Tree-SHA512: 2026103c487a5ebdea9a2f5ec2be96d74e38d5b2269b4df11e354bb54aba2925b47c3185f530205019840b00fc3501121acfa5234faf1d095d71777826414f69

5 years agoFixup for C90 mixed declarations.
Gregory Maxwell [Thu, 21 Feb 2019 05:00:29 +0000 (05:00 +0000)]
Fixup for C90 mixed declarations.

Reported-by: Jonas Nick <[email protected]>
5 years agoMerge #509: Fix algorithm selection in bench_ecmult
Gregory Maxwell [Thu, 21 Feb 2019 04:45:39 +0000 (04:45 +0000)]
Merge #509: Fix algorithm selection in bench_ecmult

0f05173 Fix algorithm selection in bench_ecmult (Jonas Nick)

Pull request description:

  Without this commit using an unknown argument results in a segmentation fault.

Tree-SHA512: 85b8f977e62fa360ff6dc923bd86f08725c30e178d58f43d33cbd8eb69e54fa4ec76e4407624611a80554cf9961689bce6b216da735ac95b256d0d2f60fe3328

5 years agoMerge #518: Summarize build options after running configure
Gregory Maxwell [Thu, 21 Feb 2019 04:42:43 +0000 (04:42 +0000)]
Merge #518: Summarize build options after running configure

3965027 Summarize build options in configure script (Evan Klitzke)

Pull request description:

  This is a trivial build system change to summarize the build options after running configure.

  Example output:
  ```
  $ ./configure
  ....
  <many lines omitted>
  ...
  config.status: src/libsecp256k1-config.h is unchanged
  config.status: executing depfiles commands
  config.status: executing libtool commands

  Build Options:
    with endomorphism   = no
    with ecmult precomp = yes
    with jni            = no
    module ecdh         = no
    module recovery     = no

    asm                 = x86_64
    bignum              = gmp
    field               = 64bit
    scalar              = 64bit

    CC                  = gcc
    CFLAGS              = -g -O2 -W -std=c89 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-unused-function -Wno-long-long -Wno-overlength-strings -fvisibility=hidden -O3
    CPPFLAGS            =
    LDFLAGS             =
  ```

  I tried to just include the configure options that looked interesting; let me know if there are any I didn't include that I should have.

Tree-SHA512: 428381654d772f76bc81210d39ba5c3f07a94dc6a6378a02ccc6f23ebce7f501896268bcd2e94e2b0d8aea54c9c70c44a9238a0f0960600f463b1e2847c7ed1f

5 years agoMerge #567: Correct order of libs returned on pkg-config --libs --static libsecp2…
Gregory Maxwell [Thu, 21 Feb 2019 04:35:57 +0000 (04:35 +0000)]
Merge #567: Correct order of libs returned on pkg-config --libs --static libsecp2…

89a20a8 Correct order of libs returned on pkg-config --libs --static libsecp256k1 call. (Phillip Mienk)

Pull request description:

  …56k1 call.

Tree-SHA512: 095f5e71837e63a2bb6e9cf04cabe7f1ec55cf0fc32b44c80a89c232efb7d74bf0f148a8cd29f9fa2999f02bbc638d9a086ffd50888aab6f9fd5db74e37ae4d4

5 years agoMerge #587: Make randomization of a non-signing context a noop
Gregory Maxwell [Thu, 21 Feb 2019 04:31:26 +0000 (04:31 +0000)]
Merge #587: Make randomization of a non-signing context a noop

6198375 Make randomization of a non-signing context a noop (Tim Ruffing)

Pull request description:

  Before this commit secp256k1_context_randomize called illegal_callback
  when called on a context not initialized for signing. This is not
  documented. Moreover, it is not desirable because non-signing contexts
  may use randomization in the future.

  This commit makes secp256k1_context_randomize a noop in this case. This
  is safe because the context cannot be used for signing anyway.

  This fixes #573 and it fixes rust-bitcoin/rust-secp256k1#82.

Tree-SHA512: 34ddfeb004d9da8f4a77c739fa2110544c28939378e779226da52f410a0e36b3aacb3ebd2e3f3918832a9027684c161789cfdc27a133f2f0e0f1c47e8363029c

5 years agoMerge #511: Portability fix for the configure scripts generated
Gregory Maxwell [Thu, 21 Feb 2019 04:27:36 +0000 (04:27 +0000)]
Merge #511: Portability fix for the configure scripts generated

270f6c8 Portability fix for the configure scripts generated (Pierre Pronchery)

Pull request description:

  Found thanks to the developer checks from the pkgsrc software
  distribution (for NetBSD, SmartOS, Minix, MacOS X, Linux, and more).

Tree-SHA512: 2589545aa4d0620db66e79df1dc148a487384b5169ba7323937490d802973388859d30d45b35ee3e614be6d49cb694f37f585a16caa87ad1e500a0b7368dcc0a

5 years agoMerge #552: Make constants static:
Gregory Maxwell [Thu, 21 Feb 2019 04:24:37 +0000 (04:24 +0000)]
Merge #552: Make constants static:

496c5b4 Make constants static: static const secp256k1_ge secp256k1_ge_const_g; static const int CURVE_B; (Russell O'Connor)

Pull request description:

  static const secp256k1_ge secp256k1_ge_const_g;
  static const int CURVE_B;

Tree-SHA512: df8d34777d3b1b90eef875d50c2870e2480f08685b399a22eaf584ce294766e0de3a41523757a23e311e633886c89400313421282beca791326a06695f348940

5 years agoMerge #551: secp256k1_fe_sqrt: Verify that the arguments don't alias.
Gregory Maxwell [Thu, 21 Feb 2019 04:21:54 +0000 (04:21 +0000)]
Merge #551: secp256k1_fe_sqrt: Verify that the arguments don't alias.

bf8b86c secp256k1_fe_sqrt: Verify that the arguments don't alias. (Russell O'Connor)

Pull request description:

Tree-SHA512: 4e9128625817be83a1259e7dbdb82c4be8ee0174af7d5e76eeac3245d23d6bf01378d9697dcb870eb61577afd7c0556cb3c6633e3b27504add14c10b18f7c607

5 years agoMerge #539: Assorted minor corrections
Gregory Maxwell [Thu, 21 Feb 2019 04:17:54 +0000 (04:17 +0000)]
Merge #539: Assorted minor corrections

52ab96f clean dependendies in field_*_impl.h (Russell O'Connor)
deff5ed Correct math typos in field_*.h (Russell O'Connor)
4efb3f8 Add check that restrict pointers don't alias with all parameters. (Russell O'Connor)

Pull request description:

  * add more checks for restrict pointers.
  * correct math typos.
  * refine dependencies on "num.h"

Tree-SHA512: c368f577927db2ace3e7f46850cb2fdf9d7d169b698a9697767e1f82e9e7091f2b2fea0f7cf173048eb4c1bb56824c884fa849c04c595ee97766c01f346a54ec

5 years agoMerge #550: Optimize secp256k1_fe_normalize_weak calls.
Gregory Maxwell [Thu, 21 Feb 2019 04:11:07 +0000 (04:11 +0000)]
Merge #550: Optimize secp256k1_fe_normalize_weak calls.

9bd89c8 Optimize secp256k1_fe_normalize_weak calls. Move secp256k1_fe_normalize_weak calls out of ECMULT_TABLE_GET_GE and ECMULT_TABLE_GET_GE_STORAGE and into secp256k1_ge_globalz_set_table_gej instead. (Russell O'Connor)

Pull request description:

  Move secp256k1_fe_normalize_weak calls out of ECMULT_TABLE_GET_GE and ECMULT_TABLE_GET_GE_STORAGE and into secp256k1_ge_globalz_set_table_gej instead.

Tree-SHA512: 7bbb1aca8e37a268a26d7061bd1f390db129e697792f1d5ddd10ea34927616edc26ef118b500c3e5e14d1d463196033ef64e4d34b765380325c24835458b7a9b

5 years agoActually pass CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD to linker
Tim Ruffing [Sun, 10 Feb 2019 10:58:52 +0000 (11:58 +0100)]
Actually pass CFLAGS_FOR_BUILD and LDFLAGS_FOR_BUILD to linker

5 years agoconfigure: Use CFLAGS_FOR_BUILD when checking native compiler
Tim Ruffing [Wed, 16 Jan 2019 16:12:38 +0000 (17:12 +0100)]
configure: Use CFLAGS_FOR_BUILD when checking native compiler

This fixes a bug where configure would fail or disable static
ecmult tables because it wrongly checks the native compiler using
the target CFLAGS (instead of the native CFLAGS_FOR_BUILD), and
similar for CPPFLAGS and LDFLAGS.

Moreover, this commit adds tests to figure out whether the native
compiler supports the warning flags passed during the build, and it
contains a few minor improvements to the code that checks the native
compiler.

5 years agoMerge #579: Use __GNUC_PREREQ for detecting __builtin_expect
Pieter Wuille [Mon, 4 Feb 2019 22:30:56 +0000 (14:30 -0800)]
Merge #579: Use __GNUC_PREREQ for detecting __builtin_expect

c663397 Use __GNUC_PREREQ for detecting __builtin_expect (Tim Ruffing)

Pull request description:

Tree-SHA512: 659a721da835eb15966a2a5386d6ae4c3defbb6ad473905f14161a3cf36d1556d44d887602019c89ebeffdfd82ed469ff27914dc2aaee6648d1e0c8a22151c27

5 years agoMake randomization of a non-signing context a noop
Tim Ruffing [Sun, 27 Jan 2019 12:17:37 +0000 (13:17 +0100)]
Make randomization of a non-signing context a noop

Before this commit secp256k1_context_randomize called illegal_callback
when called on a context not initialized for signing. This is not
documented. Moreover, it is not desirable because non-signing contexts
may use randomization in the future.

This commit makes secp256k1_context_randomize a noop in this case. This
is safe because the context cannot be used for signing anyway.

This fixes #573 and it fixes rust-bitcoin/rust-secp256k1#82.

6 years agoUse __GNUC_PREREQ for detecting __builtin_expect
Tim Ruffing [Mon, 17 Dec 2018 10:46:54 +0000 (11:46 +0100)]
Use __GNUC_PREREQ for detecting __builtin_expect

6 years agoFix possible integer overflow in DER parsing
Tim Ruffing [Thu, 1 Nov 2018 11:15:28 +0000 (12:15 +0100)]
Fix possible integer overflow in DER parsing

If we’re in the last loop iteration, then `lenleft == 1` and it could
be the case that `ret == MAX_SIZE`, and so `ret +  lenleft` will
overflow to 0 and the sanity check will not catch it. Then we will
return `(int) MAX_SIZE`, which should be avoided because this value is
implementation-defined. (However, this is harmless because
`(int) MAX_SIZE == -1` on all supported platforms.)

6 years agoMerge #557: Eliminate scratch memory used when generating contexts
Pieter Wuille [Mon, 26 Nov 2018 17:12:55 +0000 (09:12 -0800)]
Merge #557: Eliminate scratch memory used when generating contexts

b3bf5f9 ecmult_impl: expand comment to explain how effective affine interacts with everything (Andrew Poelstra)
efa783f Store z-ratios in the 'x' coord they'll recover (Peter Dettman)
ffd3b34 add `secp256k1_ge_set_all_gej_var` test which deals with many infinite points (Andrew Poelstra)
84740ac ecmult_impl: save one fe_inv_var (Andrew Poelstra)
4704527 ecmult_impl: eliminate scratch memory used when generating context (Andrew Poelstra)
7f7a2ed ecmult_gen_impl: eliminate scratch memory used when generating context (Andrew Poelstra)

Pull request description:

  Builds on #553

Tree-SHA512: 6031a601a4a476c1d21fc8db219383e7930434d2f199543c61aca0118412322dd814a0109c385ff1f83d16897170dd0c25051697b0f88f15234b0059b661af41

6 years agoecmult_impl: expand comment to explain how effective affine interacts with everything
Andrew Poelstra [Sat, 10 Nov 2018 13:42:55 +0000 (13:42 +0000)]
ecmult_impl: expand comment to explain how effective affine interacts with everything

6 years agoStore z-ratios in the 'x' coord they'll recover
Peter Dettman [Fri, 9 Nov 2018 07:50:17 +0000 (14:50 +0700)]
Store z-ratios in the 'x' coord they'll recover

6 years agoadd `secp256k1_ge_set_all_gej_var` test which deals with many infinite points
Andrew Poelstra [Wed, 17 Oct 2018 19:50:37 +0000 (19:50 +0000)]
add `secp256k1_ge_set_all_gej_var` test which deals with many infinite points

6 years agoecmult_impl: save one fe_inv_var
Andrew Poelstra [Mon, 1 Oct 2018 21:00:41 +0000 (21:00 +0000)]
ecmult_impl: save one fe_inv_var

6 years agoecmult_impl: eliminate scratch memory used when generating context
Andrew Poelstra [Thu, 20 Sep 2018 23:34:02 +0000 (23:34 +0000)]
ecmult_impl: eliminate scratch memory used when generating context

6 years agoecmult_gen_impl: eliminate scratch memory used when generating context
Andrew Poelstra [Thu, 20 Sep 2018 22:24:57 +0000 (22:24 +0000)]
ecmult_gen_impl: eliminate scratch memory used when generating context

6 years agoMerge #553: add static context object which has no capabilities
Pieter Wuille [Tue, 6 Nov 2018 02:23:52 +0000 (18:23 -0800)]
Merge #553: add static context object which has no capabilities

40fde61 prevent attempts to modify `secp256k1_context_no_precomp` (Andrew Poelstra)
ed7c084 add static context object which has no capabilities (Andrew Poelstra)

Pull request description:

Tree-SHA512: a843ed7ba00a00a46eec3146ce428d4b49eb440af766f44d731b1f51553d08de8cc9a0af5ed114d0dfdca6f4bf4a2ede4dbd6a37d6bd818b81630089424a0ba5

6 years agoCorrect order of libs returned on pkg-config --libs --static libsecp256k1 call.
Phillip Mienk [Tue, 23 Oct 2018 00:24:45 +0000 (17:24 -0700)]
Correct order of libs returned on pkg-config --libs --static libsecp256k1 call.

6 years agoMerge #354: [ECDH API change] Support custom hash function
Pieter Wuille [Wed, 17 Oct 2018 19:12:31 +0000 (12:12 -0700)]
Merge #354: [ECDH API change] Support custom hash function

c8fbc3c [ECDH API change] Allow pass arbitrary data to hash function (Kirill Fomichev)
b00be65 [ECDH API change] Support custom hash function (Kirill Fomichev)

Pull request description:

  Solve #352

Tree-SHA512: f5985874d03e976cdb3d59036af7720636ad1488da40fd3bd7881b1fb71b05036a952013d519baa84c4ce4b558bdef25c4ce76b384b297e4d0aece9e37e78a01

6 years agoMake use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse
Ben Woosley [Tue, 9 Oct 2018 06:40:37 +0000 (15:40 +0900)]
Make use of TAG_PUBKEY constants in secp256k1_eckey_pubkey_parse

This results in more self-documenting code.

6 years agoprevent attempts to modify `secp256k1_context_no_precomp`
Andrew Poelstra [Thu, 20 Sep 2018 17:50:43 +0000 (17:50 +0000)]
prevent attempts to modify `secp256k1_context_no_precomp`

6 years agoadd static context object which has no capabilities
Andrew Poelstra [Wed, 15 Aug 2018 21:27:25 +0000 (21:27 +0000)]
add static context object which has no capabilities

6 years agoMake constants static:
Russell O'Connor [Wed, 15 Aug 2018 19:42:06 +0000 (15:42 -0400)]
Make constants static:
static const secp256k1_ge secp256k1_ge_const_g;
static const int CURVE_B;

6 years agosecp256k1_fe_sqrt: Verify that the arguments don't alias.
Russell O'Connor [Tue, 14 Aug 2018 20:47:14 +0000 (16:47 -0400)]
secp256k1_fe_sqrt: Verify that the arguments don't alias.

6 years agoOptimize secp256k1_fe_normalize_weak calls.
Russell O'Connor [Mon, 13 Aug 2018 03:47:38 +0000 (23:47 -0400)]
Optimize secp256k1_fe_normalize_weak calls.
Move secp256k1_fe_normalize_weak calls out of ECMULT_TABLE_GET_GE and ECMULT_TABLE_GET_GE_STORAGE and into secp256k1_ge_globalz_set_table_gej instead.

6 years agoclean dependendies in field_*_impl.h
Russell O'Connor [Fri, 6 Jul 2018 11:38:03 +0000 (07:38 -0400)]
clean dependendies in field_*_impl.h

6 years agoCorrect math typos in field_*.h
Russell O'Connor [Fri, 6 Jul 2018 11:53:32 +0000 (07:53 -0400)]
Correct math typos in field_*.h

This page took 0.075717 seconds and 4 git commands to generate.