Skip to content

Commit fa67060

Browse files
author
Thomas Kerin
committed
forgot tests directory..
1 parent f2859f9 commit fa67060

141 files changed

Lines changed: 3718 additions & 3 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.travis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ install:
3838
--enable-experimental --enable-module-{ecdh,recovery} \
3939
&& make -j$(nproc) && sudo make install && cd ..
4040
- phpize && ./configure && make
41-
- ls modules/
42-
- ls .libs/
41+
- ls /home/travis/build/Bit-Wasp/secp256k1-php/.libs/secp256k1.so
42+
- ls /home/travis/build/Bit-Wasp/secp256k1-php/modules/secp256k1.so
4343
- composer update
4444

4545
before_script:
@@ -51,9 +51,9 @@ before_script:
5151
5252
script:
5353
- travis/verify_stubs.sh
54+
- travis/validate_examples.sh || exit 1
5455
- REPORT_EXIT_STATUS=1 make test || (find tests/*.log -type f -exec cat {} + ; exit 1)
5556
- travis/run_coverage_test.sh || exit 1
56-
- travis/validate_examples.sh || exit 1
5757

5858
after_script:
5959
- bash <(curl -s https://codecov.io/bash)

tests/bug1.phpt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
--TEST--
2+
Case where referenced zvals are being modified. Only the provided copy should be modified.
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
10+
$context = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
11+
$mainKey = "0123abcd0123abcd0123abcd0123abcd";
12+
$secKeyOne = str_repeat("\x00", 31) . "\x01";
13+
14+
class Something {
15+
private $key;
16+
public function __construct($key) {
17+
$this->key = $key;
18+
}
19+
public function getKey() {
20+
return $this->key;
21+
}
22+
}
23+
24+
echo $mainKey . PHP_EOL;
25+
$something = new Something($mainKey);
26+
$copyKey = $something->getKey();
27+
28+
$result = secp256k1_ec_privkey_tweak_add($context, $copyKey, $secKeyOne);
29+
echo $result . PHP_EOL;
30+
echo $copyKey . PHP_EOL;
31+
echo $mainKey . PHP_EOL;
32+
33+
?>
34+
--EXPECT--
35+
0123abcd0123abcd0123abcd0123abcd
36+
1
37+
0123abcd0123abcd0123abcd0123abce
38+
0123abcd0123abcd0123abcd0123abcd

tests/bug2.phpt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
--TEST--
2+
secp256k1_ec_privkey_tweak_mul case where referenced zvals are being modified. Only the provided copy should be modified.
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
10+
$context = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
11+
12+
$mainKey = str_repeat("\x00", 31) . "\x08";
13+
$secKey8 = str_repeat("\x00", 31) . "\x02";
14+
15+
class Something {
16+
private $key;
17+
public function __construct($key) {
18+
$this->key = $key;
19+
}
20+
public function getKey() {
21+
return $this->key;
22+
}
23+
}
24+
25+
echo unpack("H*", $mainKey)[1] . PHP_EOL;
26+
$something = new Something($mainKey);
27+
$copyKey = $something->getKey();
28+
29+
$result = secp256k1_ec_privkey_tweak_mul($context, $copyKey, $secKey8);
30+
echo $result . PHP_EOL;
31+
echo unpack("H*", $copyKey)[1] . PHP_EOL;
32+
echo unpack("H*", $mainKey)[1] . PHP_EOL;
33+
34+
?>
35+
--EXPECT--
36+
0000000000000000000000000000000000000000000000000000000000000008
37+
1
38+
0000000000000000000000000000000000000000000000000000000000000010
39+
0000000000000000000000000000000000000000000000000000000000000008
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
--TEST--
2+
ecdsa_signature_parse_der_lax works like secp256k1_ecdsa_signature_parse_der
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
declare(strict_types=1);
10+
$ctx = secp256k1_context_create(SECP256K1_CONTEXT_VERIFY | SECP256K1_CONTEXT_SIGN);
11+
$sig = hex2bin("304402207a8e3bdc7c64f31b119a849e8bb39ddbdc0a64abd4cadcc5cfc15d3ec06354ed02204719389aedb16b2dd13552eed546b24350d6e636ac454ea72afc1ffd0cf421b7");
12+
13+
// Parse signature using lax DER encoding - not sure if fixture violates any rules
14+
/** @var resource $laxSig */
15+
$laxSig = null;
16+
$result = ecdsa_signature_parse_der_lax($ctx, $laxSig, $sig);
17+
echo $result . PHP_EOL;
18+
19+
?>
20+
--EXPECT--
21+
1
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
--TEST--
2+
ecdsa_signature_parse_der_lax returns null if context is wrong resource type
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
10+
declare(strict_types=1);
11+
12+
set_error_handler(function($code, $str) { echo $str . PHP_EOL; });
13+
14+
$ctx = tmpfile();
15+
$sig = hex2bin("304402207a8e3bdc7c64f31b119a849e8bb39ddbdc0a64abd4cadcc5cfc15d3ec06354ed02204719389aedb16b2dd13552eed546b24350d6e636ac454ea72afc1ffd0cf421b7");
16+
17+
// Parse signature using lax DER encoding
18+
/** @var resource $laxSig */
19+
$laxSig = null;
20+
$result = ecdsa_signature_parse_der_lax($ctx, $laxSig, $sig);
21+
echo $result . PHP_EOL;
22+
23+
?>
24+
--EXPECT--
25+
ecdsa_signature_parse_der_lax(): supplied resource is not a valid secp256k1_context resource
26+
0
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--TEST--
2+
ecdsa_signature_parse_der_lax errors signature is garbage
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
10+
$ctx = \secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
11+
$sig = \hex2bin("3001024242");
12+
13+
// Parse signature using lax DER encoding
14+
$result = ecdsa_signature_parse_der_lax($ctx, $laxSig, $sig);
15+
echo $result . PHP_EOL;
16+
17+
?>
18+
--EXPECT--
19+
0
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--TEST--
2+
ecdsa_signature_parse_der_lax returns false if parameter parsing fails
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
10+
set_error_handler(function($code, $str) { echo $str . PHP_EOL; });
11+
12+
$result = ecdsa_signature_parse_der_lax();
13+
echo $result . PHP_EOL;
14+
15+
?>
16+
--EXPECT--
17+
ecdsa_signature_parse_der_lax() expects exactly 3 parameters, 0 given
18+
0
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
Code coverage for PHP_MINFO_FUNCTION(secp256k1)
3+
--SKIPIF--
4+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
5+
--FILE--
6+
<?php
7+
ob_start();
8+
phpinfo(INFO_MODULES);
9+
$v = ob_get_clean();
10+
$r = preg_match('/secp256k1 support .* enabled/', $v);
11+
if ($r !== 1)
12+
var_dump($r);
13+
echo "Done\n";
14+
?>
15+
--EXPECTF--
16+
Done
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
secp256k1_context_clone works
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
10+
echo get_resource_type($ctx) . "\n";
11+
12+
$clone = secp256k1_context_clone($ctx);
13+
echo get_resource_type($clone) . "\n";
14+
?>
15+
--EXPECT--
16+
secp256k1_context
17+
secp256k1_context
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--TEST--
2+
secp256k1_context_clone returns false if provided the wrong type
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
6+
?>
7+
--FILE--
8+
<?php
9+
10+
set_error_handler(function($code, $str) { echo $str . PHP_EOL; });
11+
12+
$handle = tmpfile();
13+
$result = secp256k1_context_clone($handle);
14+
echo gettype($result) . PHP_EOL;
15+
16+
?>
17+
--EXPECT--
18+
secp256k1_context_clone(): supplied resource is not a valid secp256k1_context resource
19+
NULL

0 commit comments

Comments
 (0)