Skip to content

Commit 28687b0

Browse files
schnorrsig: Add BIP340 varlen test vectors
1 parent 97a98be commit 28687b0

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed

src/modules/schnorrsig/tests_impl.h

+141
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,147 @@ static void test_schnorrsig_bip_vectors(void) {
664664
/* No need to check the signature of the test vector as parsing the pubkey already fails */
665665
CHECK(!secp256k1_xonly_pubkey_parse(CTX, &pk_parsed, pk));
666666
}
667+
{
668+
/* Test vector 15 */
669+
const unsigned char sk[32] = {
670+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
671+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
672+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
673+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
674+
};
675+
const unsigned char pk[32] = {
676+
0x77, 0x8C, 0xAA, 0x53, 0xB4, 0x39, 0x3A, 0xC4,
677+
0x67, 0x77, 0x4D, 0x09, 0x49, 0x7A, 0x87, 0x22,
678+
0x4B, 0xF9, 0xFA, 0xB6, 0xF6, 0xE6, 0x8B, 0x23,
679+
0x08, 0x64, 0x97, 0x32, 0x4D, 0x6F, 0xD1, 0x17,
680+
};
681+
const unsigned char aux_rand[32] = {
682+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
683+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
684+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
685+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
686+
};
687+
/* const unsigned char msg[0] = {}; */
688+
const unsigned char sig[64] = {
689+
0x71, 0x53, 0x5D, 0xB1, 0x65, 0xEC, 0xD9, 0xFB,
690+
0xBC, 0x04, 0x6E, 0x5F, 0xFA, 0xEA, 0x61, 0x18,
691+
0x6B, 0xB6, 0xAD, 0x43, 0x67, 0x32, 0xFC, 0xCC,
692+
0x25, 0x29, 0x1A, 0x55, 0x89, 0x54, 0x64, 0xCF,
693+
0x60, 0x69, 0xCE, 0x26, 0xBF, 0x03, 0x46, 0x62,
694+
0x28, 0xF1, 0x9A, 0x3A, 0x62, 0xDB, 0x8A, 0x64,
695+
0x9F, 0x2D, 0x56, 0x0F, 0xAC, 0x65, 0x28, 0x27,
696+
0xD1, 0xAF, 0x05, 0x74, 0xE4, 0x27, 0xAB, 0x63,
697+
};
698+
test_schnorrsig_bip_vectors_check_signing(sk, pk, aux_rand, NULL, 0, sig);
699+
test_schnorrsig_bip_vectors_check_verify(pk, NULL, 0, sig, 1);
700+
}
701+
{
702+
/* Test vector 16 */
703+
const unsigned char sk[32] = {
704+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
705+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
706+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
707+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
708+
};
709+
const unsigned char pk[32] = {
710+
0x77, 0x8C, 0xAA, 0x53, 0xB4, 0x39, 0x3A, 0xC4,
711+
0x67, 0x77, 0x4D, 0x09, 0x49, 0x7A, 0x87, 0x22,
712+
0x4B, 0xF9, 0xFA, 0xB6, 0xF6, 0xE6, 0x8B, 0x23,
713+
0x08, 0x64, 0x97, 0x32, 0x4D, 0x6F, 0xD1, 0x17,
714+
};
715+
const unsigned char aux_rand[32] = {
716+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
717+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
718+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
719+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
720+
};
721+
const unsigned char msg[] = { 0x11 };
722+
const unsigned char sig[64] = {
723+
0x08, 0xA2, 0x0A, 0x0A, 0xFE, 0xF6, 0x41, 0x24,
724+
0x64, 0x92, 0x32, 0xE0, 0x69, 0x3C, 0x58, 0x3A,
725+
0xB1, 0xB9, 0x93, 0x4A, 0xE6, 0x3B, 0x4C, 0x35,
726+
0x11, 0xF3, 0xAE, 0x11, 0x34, 0xC6, 0xA3, 0x03,
727+
0xEA, 0x31, 0x73, 0xBF, 0xEA, 0x66, 0x83, 0xBD,
728+
0x10, 0x1F, 0xA5, 0xAA, 0x5D, 0xBC, 0x19, 0x96,
729+
0xFE, 0x7C, 0xAC, 0xFC, 0x5A, 0x57, 0x7D, 0x33,
730+
0xEC, 0x14, 0x56, 0x4C, 0xEC, 0x2B, 0xAC, 0xBF,
731+
};
732+
test_schnorrsig_bip_vectors_check_signing(sk, pk, aux_rand, msg, sizeof(msg), sig);
733+
test_schnorrsig_bip_vectors_check_verify(pk, msg, sizeof(msg), sig, 1);
734+
}
735+
{
736+
/* Test vector 17 */
737+
const unsigned char sk[32] = {
738+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
739+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
740+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
741+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
742+
};
743+
const unsigned char pk[32] = {
744+
0x77, 0x8C, 0xAA, 0x53, 0xB4, 0x39, 0x3A, 0xC4,
745+
0x67, 0x77, 0x4D, 0x09, 0x49, 0x7A, 0x87, 0x22,
746+
0x4B, 0xF9, 0xFA, 0xB6, 0xF6, 0xE6, 0x8B, 0x23,
747+
0x08, 0x64, 0x97, 0x32, 0x4D, 0x6F, 0xD1, 0x17,
748+
};
749+
const unsigned char aux_rand[32] = {
750+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
751+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
752+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
753+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
754+
};
755+
const unsigned char msg[] = {
756+
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
757+
0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,
758+
0x11,
759+
};
760+
const unsigned char sig[64] = {
761+
0x51, 0x30, 0xF3, 0x9A, 0x40, 0x59, 0xB4, 0x3B,
762+
0xC7, 0xCA, 0xC0, 0x9A, 0x19, 0xEC, 0xE5, 0x2B,
763+
0x5D, 0x86, 0x99, 0xD1, 0xA7, 0x1E, 0x3C, 0x52,
764+
0xDA, 0x9A, 0xFD, 0xB6, 0xB5, 0x0A, 0xC3, 0x70,
765+
0xC4, 0xA4, 0x82, 0xB7, 0x7B, 0xF9, 0x60, 0xF8,
766+
0x68, 0x15, 0x40, 0xE2, 0x5B, 0x67, 0x71, 0xEC,
767+
0xE1, 0xE5, 0xA3, 0x7F, 0xD8, 0x0E, 0x5A, 0x51,
768+
0x89, 0x7C, 0x55, 0x66, 0xA9, 0x7E, 0xA5, 0xA5,
769+
};
770+
test_schnorrsig_bip_vectors_check_signing(sk, pk, aux_rand, msg, sizeof(msg), sig);
771+
test_schnorrsig_bip_vectors_check_verify(pk, msg, sizeof(msg), sig, 1);
772+
}
773+
{
774+
/* Test vector 18 */
775+
const unsigned char sk[32] = {
776+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
777+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
778+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
779+
0x03, 0x40, 0x03, 0x40, 0x03, 0x40, 0x03, 0x40,
780+
};
781+
const unsigned char pk[32] = {
782+
0x77, 0x8C, 0xAA, 0x53, 0xB4, 0x39, 0x3A, 0xC4,
783+
0x67, 0x77, 0x4D, 0x09, 0x49, 0x7A, 0x87, 0x22,
784+
0x4B, 0xF9, 0xFA, 0xB6, 0xF6, 0xE6, 0x8B, 0x23,
785+
0x08, 0x64, 0x97, 0x32, 0x4D, 0x6F, 0xD1, 0x17,
786+
};
787+
const unsigned char aux_rand[32] = {
788+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
789+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
790+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
791+
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
792+
};
793+
const unsigned char sig[64] = {
794+
0x40, 0x3B, 0x12, 0xB0, 0xD8, 0x55, 0x5A, 0x34,
795+
0x41, 0x75, 0xEA, 0x7E, 0xC7, 0x46, 0x56, 0x63,
796+
0x03, 0x32, 0x1E, 0x5D, 0xBF, 0xA8, 0xBE, 0x6F,
797+
0x09, 0x16, 0x35, 0x16, 0x3E, 0xCA, 0x79, 0xA8,
798+
0x58, 0x5E, 0xD3, 0xE3, 0x17, 0x08, 0x07, 0xE7,
799+
0xC0, 0x3B, 0x72, 0x0F, 0xC5, 0x4C, 0x7B, 0x23,
800+
0x89, 0x7F, 0xCB, 0xA0, 0xE9, 0xD0, 0xB4, 0xA0,
801+
0x68, 0x94, 0xCF, 0xD2, 0x49, 0xF2, 0x23, 0x67,
802+
};
803+
unsigned char msg[100];
804+
memset(msg, 0x99, sizeof(msg));
805+
test_schnorrsig_bip_vectors_check_signing(sk, pk, aux_rand, msg, sizeof(msg), sig);
806+
test_schnorrsig_bip_vectors_check_verify(pk, msg, sizeof(msg), sig, 1);
807+
}
667808
}
668809

669810
/* Nonce function that returns constant 0 */

0 commit comments

Comments
 (0)