Commit Graph

906 Commits

Author SHA1 Message Date
Jon Griffiths a40c701c83 JNI: Only call ecdsa_verify if its inputs parsed correctly
Return 0 otherwise instead of calling it with bad parameters.
2016-05-02 23:21:43 +12:00
MarcoFalke faa2a11ce5 Update bitcoin-core GitHub links 2016-04-29 23:14:45 +02:00
Jon Griffiths 47b9e78e07 Cast pointers through uintptr_t under JNI
Fixes warnings of the form "warning: cast to pointer from integer of
different size" when building on 32 bit platforms. This is the same
approach used for pointer conversions in the openjdk sources.
2016-04-28 20:41:00 +12:00
Andrew Poelstra f36f9c64bb bench_ecdh: fix call to secp256k1_context_create 2016-04-27 10:16:18 +00:00
Andrew Poelstra bcc4881d3a Add some missing `VERIFY_CHECK(ctx != NULL)` for functions that use `ARG_CHECK`
The `ARG_CHECK` macro requires that a variable called `ctx` exist and be
non-NULL. However, in several functions that do not use the context variable,
we simply ignore it with `(void)ctx`. Replace these with explicit checks for
non-NULLness to avoid invalid memory accesses.
2016-04-26 15:49:02 +00:00
GreenAddress 6ceea2c527 align shared files copyright/comments to bitcoinj's 2016-03-27 16:21:34 +02:00
upgradeadvice 70141a85d0 Update .gitignore
Don't ignore everything under build-aux
2016-02-16 16:59:00 -06:00
Pieter Wuille 7b549b1abc
Merge #373: build: fix x86_64 asm detection for some compilers
3f8fdfb build: fix x86_64 asm detection for some compilers (Cory Fields)
2016-02-16 20:44:41 +01:00
Pieter Wuille bc7c93c6cd
Merge #374: Add note about y=0 being possible on one of the sextic twists
e72e93a Add note about y=0 being possible on one of the sextic twists (Andrew Poelstra)
2016-02-16 20:43:16 +01:00
Pieter Wuille e4570184ff
Merge #364: JNI rebased
86e2d07 JNI library: cleanup, removed unimplemented code (GreenAddress)
3093576 JNI library (GreenAddress)
2016-02-16 20:34:27 +01:00
GreenAddress 86e2d07e4c JNI library: cleanup, removed unimplemented code 2016-02-01 14:07:29 +01:00
GreenAddress 3093576aa4 JNI library
Squashed and rebased. Thanks to @theuni and @faizkhan00 for doing
the majority of work here! Also thanks to @btchip for help with debugging
and review.
2016-02-01 14:07:18 +01:00
Pieter Wuille bd2895fdd9
Merge pull request #371
e5a9047 [Trivial] Remove double semicolons (paveljanik)
2016-01-27 20:59:02 +01:00
Andrew Poelstra e72e93ad9c Add note about y=0 being possible on one of the sextic twists 2016-01-10 08:35:59 +00:00
Cory Fields 3f8fdfbec1 build: fix x86_64 asm detection for some compilers
I Noticed this on OSX with clang, though it likely happens elsewhere as well.
The result is disabled x86_64 asm.

Due to missing escaping, this $0 was interpreted as the function name
SECP_64BIT_ASM_CHECK, causing the compile-check to be broken on some compilers.

The actual check looked like this:

int main()
{
  uint64_t a = 11, tmp;
  __asm__ __volatile__("movq SECP_64BIT_ASM_CHECKx100000000,%1; mulq %%rsi" : "+a"(a) : "S"(tmp) : "cc", "%rdx");
  return 0;
}

It seems even more odd that it compiled anywhere.
2016-01-04 11:40:00 -05:00
paveljanik e5a904788e [Trivial] Remove double semicolons 2015-12-30 08:42:42 +01:00
Pieter Wuille c18b869e58
Merge pull request #360
83221ec Add experimental features to configure (Pieter Wuille)
2015-12-12 21:42:10 +01:00
Pieter Wuille 3026daa095
Merge pull request #302
03d4611 Add sage verification script for the group laws (Pieter Wuille)
2015-12-01 21:02:23 +01:00
Pieter Wuille 03d4611c81 Add sage verification script for the group laws 2015-11-29 16:03:07 +01:00
Pieter Wuille a965937290
Merge pull request #361
5d4c5a3 Prevent damage_array in the signature test from going out of bounds. (Gregory Maxwell)
2015-11-27 00:56:03 +01:00
Pieter Wuille 83221ecb00 Add experimental features to configure 2015-11-27 00:20:28 +01:00
Gregory Maxwell 5d4c5a31b9 Prevent damage_array in the signature test from going out of bounds. 2015-11-26 21:02:27 +00:00
Pieter Wuille 419bf7fd9d
Merge pull request #356
03d84a4 Benchmark against OpenSSL verification (Pieter Wuille)
2015-11-24 21:55:33 +01:00
Pieter Wuille 6c527eceee
Merge pull request #357
445f7f1 Fix for Windows compile issue (ptschip)
2015-11-17 01:47:32 +01:00
ptschip 445f7f104c Fix for Windows compile issue
Change CPPFLAGS_FOR_BUILD path  (by paveljanik)
2015-11-16 16:40:12 -08:00
Pieter Wuille 03d84a427f Benchmark against OpenSSL verification 2015-11-15 15:47:49 +01:00
Pieter Wuille 2bfb82b10e
Merge pull request #351
06aeea5 Turn secp256k1_ec_pubkey_serialize outlen to in/out (Pieter Wuille)
2015-11-05 20:49:42 +01:00
Pieter Wuille 06aeea555e Turn secp256k1_ec_pubkey_serialize outlen to in/out 2015-11-05 06:01:56 +01:00
Pieter Wuille 970164dace
Merge pull request #348
6466625 Improvements for coordinate decompression (Pieter Wuille)
2015-11-05 01:32:55 +01:00
Pieter Wuille 646662517f Improvements for coordinate decompression 2015-11-05 00:04:39 +01:00
Pieter Wuille e2100ad5b3
Merge pull request #347
8e48787 Change secp256k1_ec_pubkey_combine's count argument to size_t. (Gregory Maxwell)
c69dea0 Clear output in more cases for pubkey_combine, adds tests. (Gregory Maxwell)
269d422 Comment copyediting. (Gregory Maxwell)
2015-11-01 23:02:24 +01:00
Gregory Maxwell 8e48787d97 Change secp256k1_ec_pubkey_combine's count argument to size_t. 2015-10-31 19:04:34 +00:00
Gregory Maxwell c69dea025a Clear output in more cases for pubkey_combine, adds tests.
Also corrects an outdated comment and adds an additional
 secp256k1_ecdsa_signature_parse_compact test.
2015-10-31 09:52:30 +00:00
Gregory Maxwell 269d422703 Comment copyediting. 2015-10-31 08:31:15 +00:00
Pieter Wuille b4d17da903
Merge pull request #344
26abce7 Adds 32 static test vectors for scalar mul, sqr, inv. (Gregory Maxwell)
2015-10-31 02:21:35 +01:00
Pieter Wuille 47092650f9
Merge pull request #345
5b71a3f Better error case handling for pubkey_create & pubkey_serialize, more tests. (Gregory Maxwell)
2015-10-31 00:41:21 +01:00
Gregory Maxwell 26abce75ea Adds 32 static test vectors for scalar mul, sqr, inv.
These were generated by testing more than 10^12 random test vectors
 for coverage on instrumented (comparison operator outcomes) 32-bit
 and 64-bit code, plus additional edge condition requirements (e.g.
 inputs of 0, 1, -1) and then solving a minimum set cover problem.

The required responses were generated with Sage.

This significantly improves the lcov branch coverage report and
 makes the tests much more sensitive to mutation testing of the
 scalar code.

The challenges and responses are in the form of pairs of scalars:
  C1 * C2 == R1
  (C1 * C2) * (1 / C2) == C1
  C2 * (1 / C2) == 1
  C1 * C1 == R2
  C1^2    == R2
2015-10-30 21:17:19 +00:00
Gregory Maxwell 5b71a3f460 Better error case handling for pubkey_create & pubkey_serialize, more tests.
Makes secp256k1_ec_pubkey_serialize set the length to zero on failure,
 also makes secp256k1_ec_pubkey_create set the pubkey to zeros when
 the key argument is NULL.

Also adds many additional ARGCHECK tests.
2015-10-30 09:16:40 +00:00
Pieter Wuille 3b7bc695ef
Merge pull request #343
eed87af Change contrib/laxder from headers-only to files compilable as standalone C (Andrew Poelstra)
2015-10-30 03:35:30 +01:00
Andrew Poelstra eed87af10a Change contrib/laxder from headers-only to files compilable as standalone C
Verified that both programs compile with

    gcc -I. -I../include -lsecp256k1 -c -W -Wextra -Wall -Werror -ansi -pedantic lax_der_privatekey_parsing.c
    gcc -I. -I../include -lsecp256k1 -c -W -Wextra -Wall -Werror -ansi -pedantic lax_der_parsing.c
2015-10-29 18:55:49 -05:00
Pieter Wuille d7eb1ae96d
Merge pull request #342
7914a6e Make lax_der_privatekey_parsing.h not depend on internal code (Pieter Wuille)
2015-10-26 19:47:40 +01:00
Pieter Wuille 7914a6ebae Make lax_der_privatekey_parsing.h not depend on internal code 2015-10-26 02:53:06 +01:00
Pieter Wuille 73f64ff8f3
Merge pull request #339
9234391 Overhaul flags handling (Pieter Wuille)
1a36898 Make flags more explicit, add runtime checks. (Rusty Russell)
2015-10-25 20:10:41 +01:00
Pieter Wuille 9234391ed4 Overhaul flags handling 2015-10-24 19:47:13 +02:00
Rusty Russell 1a368980c8 Make flags more explicit, add runtime checks.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2015-10-24 19:39:44 +02:00
Pieter Wuille 1a3e03a348
Merge pull request #340
96be204 Add additional tests for eckey and arg-checks. (Gregory Maxwell)
bb5aa4d Make the tweak function zeroize-output-on-fail behavior consistent. (Gregory Maxwell)
4a243da Move secp256k1_ec_privkey_import/export to contrib. (Gregory Maxwell)
1b3efc1 Move secp256k1_ecdsa_sig_recover into the recovery module. (Gregory Maxwell)
e3cd679 Eliminate all side-effects from VERIFY_CHECK() usage. (Gregory Maxwell)
b30fc85 Avoid nonce_function_rfc6979 algo16 argument emulation. (Gregory Maxwell)
70d4640 Make secp256k1_ec_pubkey_create skip processing invalid secret keys. (Gregory Maxwell)
6c476a8 Minor comment improvements. (Gregory Maxwell)
2015-10-24 19:32:31 +02:00
Gregory Maxwell 96be20463f Add additional tests for eckey and arg-checks.
This gets branch coverage up over 90% for me.
2015-10-22 22:57:33 +00:00
Gregory Maxwell bb5aa4df55 Make the tweak function zeroize-output-on-fail behavior consistent.
Previously the private key tweak operations left the input unchanged
 on failure but the pubkey versions zeroized on failure.
2015-10-22 22:57:33 +00:00
Gregory Maxwell 4a243da47c Move secp256k1_ec_privkey_import/export to contrib.
These functions are intended for compatibility with legacy software,
 and are not normally needed in new secp256k1 applications.

They also do not obeying any particular standard (and likely cannot
 without without undermining their compatibility), and so are a
 better fit for contrib.
2015-10-22 22:57:33 +00:00
Gregory Maxwell 1b3efc1147 Move secp256k1_ecdsa_sig_recover into the recovery module. 2015-10-22 22:57:33 +00:00