Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Schnorrsig revised #165

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open
Prev Previous commit
Next Next commit
add more bip-340 vectors for sign/verify
afk11 committed Jun 16, 2021

Verified

This commit was signed with the committer’s verified signature.
grncdr Stephen Sugden
commit 2d7444ae27705dcce380588da4f54081f23d17b3
8 changes: 6 additions & 2 deletions secp256k1/tests/secp256k1_schnorrsig_sign_basic.phpt
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig s
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

//https://github.com/bitcoin/bips/blob/master/bip-0340/test-vectors.csv
$privKey = hex2bin("0000000000000000000000000000000000000000000000000000000000000003");
@@ -38,11 +38,15 @@ echo $result . PHP_EOL;

echo strtoupper(unpack("H*", $sig64)[1]) . PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $xonlyPubKey);
echo $result . PHP_EOL;

?>
--EXPECT--
1
1
1
F9308A019258C31049344F85F89D5229B531C845836F99B08601F113BCE036F9
1
E907831F80848D1069A5371B402410364BDF1C5F8307B0084C55F1CE2DCA821525F66A4A85EA8B71E482A74F382D2CE5EBEEE8FDB2172F477DF4900D310536C0
E907831F80848D1069A5371B402410364BDF1C5F8307B0084C55F1CE2DCA821525F66A4A85EA8B71E482A74F382D2CE5EBEEE8FDB2172F477DF4900D310536C0
1
8 changes: 6 additions & 2 deletions secp256k1/tests/secp256k1_schnorrsig_sign_basic2.phpt
Original file line number Diff line number Diff line change
@@ -8,7 +8,7 @@ if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig s
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN);
$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

//https://github.com/bitcoin/bips/blob/master/bip-0340/test-vectors.csv
$privKey = hex2bin("B7E151628AED2A6ABF7158809CF4F3C762E7160F38B4DA56A784D9045190CFEF");
@@ -38,11 +38,15 @@ echo $result . PHP_EOL;

echo strtoupper(unpack("H*", $sig64)[1]) . PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $xonlyPubKey);
echo $result . PHP_EOL;

?>
--EXPECT--
1
1
1
DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659
1
6896BD60EEAE296DB48A229FF71DFE071BDE413E6D43F917DC8DCF8C78DE33418906D11AC976ABCCB20B091292BFF4EA897EFCB639EA871CFA95F6DE339E4B0A
6896BD60EEAE296DB48A229FF71DFE071BDE413E6D43F917DC8DCF8C78DE33418906D11AC976ABCCB20B091292BFF4EA897EFCB639EA871CFA95F6DE339E4B0A
1
52 changes: 52 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_sign_basic3.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
--TEST--
secp256k1_schnorrsig_sign works with bip vector 2
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

//https://github.com/bitcoin/bips/blob/master/bip-0340/test-vectors.csv
$privKey = hex2bin("C90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B14E5C9");
//DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EB8

$keypair = null;
$result = secp256k1_keypair_create($ctx, $keypair, $privKey);
echo $result.PHP_EOL;

$xonlyPubKey = null;
$parity = null;
$result = secp256k1_keypair_xonly_pub($ctx, $xonlyPubKey, $parity, $keypair);
echo $result.PHP_EOL;

$xonlyOutput32 = null;
$result = secp256k1_xonly_pubkey_serialize($ctx, $xonlyOutput32, $xonlyPubKey);
echo $result.PHP_EOL;

echo strtoupper(unpack("H*", $xonlyOutput32)[1]) . PHP_EOL;

$auxRand = hex2bin("C87AA53824B4D7AE2EB035A2B5BBBCCC080E76CDC6D1692C4B0B62D798E6D906");
$sig64 = null;
$msg32 = hex2bin("7E2D58D8B3BCDF1ABADEC7829054F90DDA9805AAB56C77333024B9D0A508B75C");

$result = secp256k1_schnorrsig_sign($ctx, $sig64, $msg32, $keypair, 'secp256k1_nonce_function_bip340', $auxRand);
echo $result . PHP_EOL;

echo strtoupper(unpack("H*", $sig64)[1]) . PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $xonlyPubKey);
echo $result . PHP_EOL;

?>
--EXPECT--
1
1
1
DD308AFEC5777E13121FA72B9CC1B7CC0139715309B086C960E18FD969774EB8
1
5831AAEED7B44BB74E5EAB94BA9D4294C49BCF2A60728D8B4C200F50DD313C1BAB745879A5AD954A72C45A91C3A51D3C7ADEA98D82F8481E0E1E03674A6F3FB7
1
52 changes: 52 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_sign_basic4.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
--TEST--
secp256k1_schnorrsig_sign works with bip vector 3
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

//https://github.com/bitcoin/bips/blob/master/bip-0340/test-vectors.csv
$privKey = hex2bin("0B432B2677937381AEF05BB02A66ECD012773062CF3FA2549E44F58ED2401710");
//25D1DFF95105F5253C4022F628A996AD3A0D95FBF21D468A1B33F8C160D8F517

$keypair = null;
$result = secp256k1_keypair_create($ctx, $keypair, $privKey);
echo $result.PHP_EOL;

$xonlyPubKey = null;
$parity = null;
$result = secp256k1_keypair_xonly_pub($ctx, $xonlyPubKey, $parity, $keypair);
echo $result.PHP_EOL;

$xonlyOutput32 = null;
$result = secp256k1_xonly_pubkey_serialize($ctx, $xonlyOutput32, $xonlyPubKey);
echo $result.PHP_EOL;

echo strtoupper(unpack("H*", $xonlyOutput32)[1]) . PHP_EOL;

$auxRand = hex2bin("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
$sig64 = null;
$msg32 = hex2bin("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");

$result = secp256k1_schnorrsig_sign($ctx, $sig64, $msg32, $keypair, 'secp256k1_nonce_function_bip340', $auxRand);
echo $result . PHP_EOL;

echo strtoupper(unpack("H*", $sig64)[1]) . PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $xonlyPubKey);
echo $result . PHP_EOL;

?>
--EXPECT--
1
1
1
25D1DFF95105F5253C4022F628A996AD3A0D95FBF21D468A1B33F8C160D8F517
1
7EB0509757E246F19449885651611CB965ECC1A187DD51B64FDA1EDC9637D5EC97582B9CB13DB3933705B32BA982AF5AF25FD78881EBB32771FC5922EFC66EA3
1
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector10.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 10 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "00000000000000000000000000000000000000000000000000000000000000017615FBAF5AE28864013C099742DEADB4DBA87F11AC6754F93780D5A1837CF197");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector11.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 11 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "4A298DACAE57395A15D0795DDBFD1DCB564DA82B0F269BC70A74F8220429BA1D69E89B4C5564D00349106B8497785DD7D1D713A8AE82B32FA79D5F7FC407D39B");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector12.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 12 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F69E89B4C5564D00349106B8497785DD7D1D713A8AE82B32FA79D5F7FC407D39B");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector13.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 13 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "6CFF5C3BA86C69EA4B7376F31A9BCB4F74C1976089B2D9963DA2E5543E177769FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
24 changes: 24 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector14.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 14 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "6CFF5C3BA86C69EA4B7376F31A9BCB4F74C1976089B2D9963DA2E5543E17776969E89B4C5564D00349106B8497785DD7D1D713A8AE82B32FA79D5F7FC407D39B");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC30");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

?>
--EXPECT--
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector4.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 4 - returns true
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "00000000000000000000003B78CE563F89A0ED9414F5AA28AD0D96D6795F9C6376AFB1548AF603B3EB45C9F8207DEE1060CB71C04E80F593060B07D28308D7F4");
$msg32 = hex2bin("4DF3C3F68FCC83B27E9D42C90431A72499F17875C81A599B566C9889B9696703");
$pubKeyBin = pack("H*", "D69C3509BB99E412E68B0FE8544E72837DFA30746D8BE2AA65975F29D22DC7B9");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
1
27 changes: 27 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector5.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 5 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "6CFF5C3BA86C69EA4B7376F31A9BCB4F74C1976089B2D9963DA2E5543E17776969E89B4C5564D00349106B8497785DD7D1D713A8AE82B32FA79D5F7FC407D39B");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "EEFDEA4CDB677750A420FEE807EACF21EB9898AE79B9768766E4FAA04A2D4A34");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

//$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
//echo $result.PHP_EOL;

?>
--EXPECT--
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector6.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 6 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "FFF97BD5755EEEA420453A14355235D382F6472F8568A18B2F057A14602975563CC27944640AC607CD107AE10923D9EF7A73C643E166BE5EBEAFA34B1AC553E2");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector7.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 7 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "1FA62E331EDBC21C394792D2AB1100A7B432B013DF3F6FF4F99FCB33E0E1515F28890B3EDB6E7189B630448B515CE4F8622A954CFE545735AAEA5134FCCDB2BD");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector8.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 8 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "1FA62E331EDBC21C394792D2AB1100A7B432B013DF3F6FF4F99FCB33E0E1515F28890B3EDB6E7189B630448B515CE4F8622A954CFE545735AAEA5134FCCDB2BD");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0
28 changes: 28 additions & 0 deletions secp256k1/tests/secp256k1_schnorrsig_verify_bipvector9.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
--TEST--
secp256k1_schnorrsig_verify - bip vector 9 - returns false
--SKIPIF--
<?php
if (!extension_loaded("secp256k1")) print "skip extension not loaded";
if (!function_exists("secp256k1_schnorrsig_verify")) print "skip no schnorrsig support";
?>
--FILE--
<?php

$ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);

$sig64 = pack("H*", "0000000000000000000000000000000000000000000000000000000000000000123DDA8328AF9C23A94C1FEECFD123BA4FB73476F0D594DCB65C6425BD186051");
$msg32 = hex2bin("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89");
$pubKeyBin = pack("H*", "DFF1D77F2A671C5F36183726DB2341BE58FEAE1DA2DECED843240F7B502BA659");
$sig = null;
$pubKey = null;

$result = secp256k1_xonly_pubkey_parse($ctx, $pubKey, $pubKeyBin);
echo $result.PHP_EOL;

$result = secp256k1_schnorrsig_verify($ctx, $sig64, $msg32, $pubKey);
echo $result.PHP_EOL;

?>
--EXPECT--
1
0