|
|
|
@ -1,23 +1,25 @@
|
|
|
|
|
#if USE_MONERO
|
|
|
|
|
START_TEST(test_xmr_base58)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_base58) {
|
|
|
|
|
static const struct {
|
|
|
|
|
uint64_t tag;
|
|
|
|
|
char *v1;
|
|
|
|
|
char *v2;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{0x12,
|
|
|
|
|
"3bec484c5d7f0246af520aab550452b5b6013733feabebd681c4a60d457b7fc12d5918e31d3c003da3c778592c07b398ad6f961a67082a75fd49394d51e69bbe",
|
|
|
|
|
"43tpGG9PKbwCpjRvNLn1jwXPpnacw2uVUcszAtgmDiVcZK4VgHwjJT9BJz1WGF9eMxSYASp8yNMkuLjeQfWqJn3CNWdWfzV"
|
|
|
|
|
},
|
|
|
|
|
"3bec484c5d7f0246af520aab550452b5b6013733feabebd681c4a60d457b7fc12d5918e"
|
|
|
|
|
"31d3c003da3c778592c07b398ad6f961a67082a75fd49394d51e69bbe",
|
|
|
|
|
"43tpGG9PKbwCpjRvNLn1jwXPpnacw2uVUcszAtgmDiVcZK4VgHwjJT9BJz1WGF9eMxSYASp"
|
|
|
|
|
"8yNMkuLjeQfWqJn3CNWdWfzV"},
|
|
|
|
|
{0x12,
|
|
|
|
|
"639050436fa36c8288706771412c5972461578d564188cd7fc6f81d6973d064fa461afe66fb23879936d7225051bebbf7f3ae0c801a90bb99fbb346b2fd4d702",
|
|
|
|
|
"45PwgoUKaDHNqLL8o3okzLL7biv7GqPVmd8LTcTrYVrMEKdSYwFcyJfMLSRpfU3nh8Z2m81FJD4sUY3nXCdGe61k1HAp8T1"
|
|
|
|
|
},
|
|
|
|
|
"639050436fa36c8288706771412c5972461578d564188cd7fc6f81d6973d064fa461afe"
|
|
|
|
|
"66fb23879936d7225051bebbf7f3ae0c801a90bb99fbb346b2fd4d702",
|
|
|
|
|
"45PwgoUKaDHNqLL8o3okzLL7biv7GqPVmd8LTcTrYVrMEKdSYwFcyJfMLSRpfU3nh8Z2m81"
|
|
|
|
|
"FJD4sUY3nXCdGe61k1HAp8T1"},
|
|
|
|
|
{53,
|
|
|
|
|
"5a10cca900ee47a7f412cd661b29f5ab356d6a1951884593bb170b5ec8b6f2e83b1da411527d062c9fedeb2dad669f2f5585a00a88462b8c95c809a630e5734c",
|
|
|
|
|
"9vacMKaj8JJV6MnwDzh2oNVdwTLJfTDyNRiB6NzV9TT7fqvzLivH2dB8Tv7VYR3ncn8vCb3KdNMJzQWrPAF1otYJ9cPKpkr"
|
|
|
|
|
},
|
|
|
|
|
"5a10cca900ee47a7f412cd661b29f5ab356d6a1951884593bb170b5ec8b6f2e83b1da41"
|
|
|
|
|
"1527d062c9fedeb2dad669f2f5585a00a88462b8c95c809a630e5734c",
|
|
|
|
|
"9vacMKaj8JJV6MnwDzh2oNVdwTLJfTDyNRiB6NzV9TT7fqvzLivH2dB8Tv7VYR3ncn8vCb3"
|
|
|
|
|
"KdNMJzQWrPAF1otYJ9cPKpkr"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
uint8_t rawn[512];
|
|
|
|
@ -32,7 +34,8 @@ START_TEST(test_xmr_base58)
|
|
|
|
|
|
|
|
|
|
memcpy(rawn, fromhex(raw), len);
|
|
|
|
|
|
|
|
|
|
r = xmr_base58_addr_encode_check(tests[i].tag, rawn, len, strn, sizeof(strn));
|
|
|
|
|
r = xmr_base58_addr_encode_check(tests[i].tag, rawn, len, strn,
|
|
|
|
|
sizeof(strn));
|
|
|
|
|
ck_assert_int_eq((size_t)r, strlen(str));
|
|
|
|
|
ck_assert_mem_eq(strn, str, r);
|
|
|
|
|
|
|
|
|
@ -43,9 +46,7 @@ START_TEST(test_xmr_base58)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_getset256_modm)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_getset256_modm) {
|
|
|
|
|
static const struct {
|
|
|
|
|
uint64_t val;
|
|
|
|
|
int r;
|
|
|
|
@ -87,9 +88,7 @@ START_TEST(test_xmr_getset256_modm)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_cmp256_modm)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_cmp256_modm) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
char *b;
|
|
|
|
@ -97,46 +96,30 @@ START_TEST(test_xmr_cmp256_modm)
|
|
|
|
|
int res_cmp;
|
|
|
|
|
int res_is_zero_a;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
1, 0, 1
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
0, -1, 1
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
1, 0, 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"863346d8863c461cde2ec7c2759352c2b952228f33a86ca06bb79574bbe5c30d",
|
|
|
|
|
"3ddbd65a6d3ba5e2ab120603685a353a27ce3fd21dfdbea7952d2dd26f1ca00a",
|
|
|
|
|
0, 1, 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"f7667f392edbea6e224b1aa9fbf2a3b238b4f977fb4a8f39130cc45f49b5c40a",
|
|
|
|
|
"b41b9b1e7e80be71cf290ed4bded58924086b8ac6bdfa1faa0c80c255f074d07",
|
|
|
|
|
0, 1, 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27501",
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
0, -1, 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
1, 0, 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
"0e4005c7826de8f9978749903f41efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
0, -1, 0
|
|
|
|
|
},
|
|
|
|
|
{"0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000", 1, 0,
|
|
|
|
|
1},
|
|
|
|
|
{"0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000", 0,
|
|
|
|
|
-1, 1},
|
|
|
|
|
{"dec0adde00000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000", 1, 0,
|
|
|
|
|
0},
|
|
|
|
|
{"863346d8863c461cde2ec7c2759352c2b952228f33a86ca06bb79574bbe5c30d",
|
|
|
|
|
"3ddbd65a6d3ba5e2ab120603685a353a27ce3fd21dfdbea7952d2dd26f1ca00a", 0, 1,
|
|
|
|
|
0},
|
|
|
|
|
{"f7667f392edbea6e224b1aa9fbf2a3b238b4f977fb4a8f39130cc45f49b5c40a",
|
|
|
|
|
"b41b9b1e7e80be71cf290ed4bded58924086b8ac6bdfa1faa0c80c255f074d07", 0, 1,
|
|
|
|
|
0},
|
|
|
|
|
{"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27501",
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504", 0,
|
|
|
|
|
-1, 0},
|
|
|
|
|
{"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504", 1, 0,
|
|
|
|
|
0},
|
|
|
|
|
{"0e4005c7826de8f9978749903f40efd140e4ae6d3bed09e558fcce8367b27504",
|
|
|
|
|
"0e4005c7826de8f9978749903f41efd140e4ae6d3bed09e558fcce8367b27504", 0,
|
|
|
|
|
-1, 0},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
bignum256modm a1 = {0}, a2 = {0};
|
|
|
|
@ -152,23 +135,16 @@ START_TEST(test_xmr_cmp256_modm)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_copy_check_modm)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_copy_check_modm) {
|
|
|
|
|
static const struct {
|
|
|
|
|
int check;
|
|
|
|
|
char *a;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{0,
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{1,
|
|
|
|
|
"ffffff7f00000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{1,
|
|
|
|
|
"ffffffffffffff7f000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{1,
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{0,
|
|
|
|
|
"dec0adde000000000000000000000fffffffffffffffffffffffffffffffffff"},
|
|
|
|
|
{0, "0000000000000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{1, "ffffff7f00000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{1, "ffffffffffffff7f000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{1, "dec0adde00000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{0, "dec0adde000000000000000000000fffffffffffffffffffffffffffffffffff"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
bignum256modm a1 = {0}, a2 = {0};
|
|
|
|
@ -179,13 +155,10 @@ START_TEST(test_xmr_copy_check_modm)
|
|
|
|
|
ck_assert_int_eq(eq256_modm(a1, a2), 1);
|
|
|
|
|
ck_assert_int_eq(check256_modm(a1), tests[i].check);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_mulsub256_modm)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_mulsub256_modm) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
char *b;
|
|
|
|
@ -225,9 +198,7 @@ START_TEST(test_xmr_mulsub256_modm)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_muladd256_modm)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_muladd256_modm) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
char *b;
|
|
|
|
@ -264,21 +235,16 @@ START_TEST(test_xmr_muladd256_modm)
|
|
|
|
|
muladd256_modm(r2, a, b, c);
|
|
|
|
|
ck_assert_int_eq(eq256_modm(r, r2), 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_curve25519_set)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_curve25519_set) {
|
|
|
|
|
static const struct {
|
|
|
|
|
uint32_t val;
|
|
|
|
|
char *a;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{0x0,
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{0x1,
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{0x0, "0000000000000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{0x1, "0100000000000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{0xdeadc0deUL,
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
};
|
|
|
|
@ -294,12 +260,11 @@ START_TEST(test_xmr_curve25519_set)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_curve25519_consts)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_curve25519_consts) {
|
|
|
|
|
char *d = "a3785913ca4deb75abd841414d0a700098e879777940c78c73fe6f2bee6c0352";
|
|
|
|
|
char *d2 = "59f1b226949bd6eb56b183829a14e00030d1f3eef2808e19e7fcdf56dcd90624";
|
|
|
|
|
char *sqrtneg1 = "b0a00e4a271beec478e42fad0618432fa7d7fb3d99004d2b0bdfc14f8024832b";
|
|
|
|
|
char *sqrtneg1 =
|
|
|
|
|
"b0a00e4a271beec478e42fad0618432fa7d7fb3d99004d2b0bdfc14f8024832b";
|
|
|
|
|
|
|
|
|
|
unsigned char buff[32];
|
|
|
|
|
bignum25519 a = {0};
|
|
|
|
@ -318,9 +283,7 @@ START_TEST(test_xmr_curve25519_consts)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_curve25519_tests)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_curve25519_tests) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
int res_neg;
|
|
|
|
@ -328,23 +291,28 @@ START_TEST(test_xmr_curve25519_tests)
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
0, 0,
|
|
|
|
|
0,
|
|
|
|
|
0,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
1, 1,
|
|
|
|
|
1,
|
|
|
|
|
1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"05737aa6100ee54283dc0d483b8e39e61846f6b3736908243d0c824d250b3139",
|
|
|
|
|
1, 1,
|
|
|
|
|
1,
|
|
|
|
|
1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc15",
|
|
|
|
|
1, 1,
|
|
|
|
|
1,
|
|
|
|
|
1,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"02587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc15",
|
|
|
|
|
0, 1,
|
|
|
|
|
0,
|
|
|
|
|
1,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -358,29 +326,19 @@ START_TEST(test_xmr_curve25519_tests)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_curve25519_expand_reduce)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_curve25519_expand_reduce) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
char *b;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc15",
|
|
|
|
|
"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc15"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bcff",
|
|
|
|
|
"a8587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc7f"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"95587a5ef6900fa8e32d6affbd8090b1e33e694284323fffff02d69865f2bcff",
|
|
|
|
|
"a8587a5ef6900fa8e32d6affbd8090b1e33e694284323fffff02d69865f2bc7f"
|
|
|
|
|
},
|
|
|
|
|
{"dec0adde00000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"dec0adde00000000000000000000000000000000000000000000000000000000"},
|
|
|
|
|
{"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc15",
|
|
|
|
|
"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc15"},
|
|
|
|
|
{"95587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bcff",
|
|
|
|
|
"a8587a5ef6900fa8e32d6a41bd8090b1e33e694284323d1d1f02d69865f2bc7f"},
|
|
|
|
|
{"95587a5ef6900fa8e32d6affbd8090b1e33e694284323fffff02d69865f2bcff",
|
|
|
|
|
"a8587a5ef6900fa8e32d6affbd8090b1e33e694284323fffff02d69865f2bc7f"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
unsigned char buff[32];
|
|
|
|
@ -391,15 +349,13 @@ START_TEST(test_xmr_curve25519_expand_reduce)
|
|
|
|
|
curve25519_contract(buff, a);
|
|
|
|
|
ck_assert_mem_eq(buff, fromhex(tests[i].b), 32);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_ge25519_base)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_ge25519_base) {
|
|
|
|
|
unsigned char buff[32];
|
|
|
|
|
char *base = "5866666666666666666666666666666666666666666666666666666666666666";
|
|
|
|
|
char *base =
|
|
|
|
|
"5866666666666666666666666666666666666666666666666666666666666666";
|
|
|
|
|
ge25519 b;
|
|
|
|
|
ge25519_set_base(&b);
|
|
|
|
|
ge25519_pack(buff, &b);
|
|
|
|
@ -407,9 +363,7 @@ START_TEST(test_xmr_ge25519_base)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_ge25519_check)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_ge25519_check) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *x;
|
|
|
|
|
char *y;
|
|
|
|
@ -417,36 +371,26 @@ START_TEST(test_xmr_ge25519_check)
|
|
|
|
|
char *t;
|
|
|
|
|
int r;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"4ff97748221f954414f836d84e8e7e207786bcd20eb67044756dca307e792c60",
|
|
|
|
|
{"4ff97748221f954414f836d84e8e7e207786bcd20eb67044756dca307e792c60",
|
|
|
|
|
"2c7be86ab07488ba43e8e03d85a67625cfbf98c8544de4c877241b7aaafc7f63",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"3ec65b03954ce7432525b9b3f4a9f5747f57b40903d1bf8892527366325fe036", 1
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"358fd25e4b84397d207e23cf3a75819bd6b2254cabc990b31ad63873cc38fc7c",
|
|
|
|
|
"3ec65b03954ce7432525b9b3f4a9f5747f57b40903d1bf8892527366325fe036", 1},
|
|
|
|
|
{"358fd25e4b84397d207e23cf3a75819bd6b2254cabc990b31ad63873cc38fc7c",
|
|
|
|
|
"ca48045f790145a1eec3946dfd73747fde0fdb4238607e0a203f8ef5bef90e0e",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"6c5e5cbae4b05e149d0aca50bf7b4112acbbe6233ace9c8bd5bcedf34df9ce0b", 1
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"4ff97748221f954414f836d84e8e7e207786bcd20eb6704475ffca307e792c60",
|
|
|
|
|
"6c5e5cbae4b05e149d0aca50bf7b4112acbbe6233ace9c8bd5bcedf34df9ce0b", 1},
|
|
|
|
|
{"4ff97748221f954414f836d84e8e7e207786bcd20eb6704475ffca307e792c60",
|
|
|
|
|
"2c7be86ab07488ba43e8e03d85a67625cfbf98c8544de4c877241b7aaafc7f63",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"3ec65b03954ce7432525b9b3f4a9f5747f57b40903d1bf8892527366325fe036", 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"358fd25e4b84397d207e23cf3a75819bd6b2254cabc990b31ad63873cc38fc7c",
|
|
|
|
|
"3ec65b03954ce7432525b9b3f4a9f5747f57b40903d1bf8892527366325fe036", 0},
|
|
|
|
|
{"358fd25e4b84397d207e23cf3a75819bd6b2254cabc990b31ad63873cc38fc7c",
|
|
|
|
|
"ca48045f790145a1eec3946dfd73747fdfffdb4238607e0a203f8ef5bef90e0e",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"6c5e5cbae4b05e149d0aca50bf7b4112acbbe6233ace9c8bd5bcedf34df9ce0b", 0
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"358fd25e4b84397d207e23cf3a75819bd6b2254cabc990b31ad63873cc38fc7c",
|
|
|
|
|
"6c5e5cbae4b05e149d0aca50bf7b4112acbbe6233ace9c8bd5bcedf34df9ce0b", 0},
|
|
|
|
|
{"358fd25e4b84397d207e23cf3a75819bd6b2254cabc990b31ad63873cc38fc7c",
|
|
|
|
|
"ca48045f790145a1eec3946dfd73747fdfffdb4238607e0a203f8ef5bef90e0e",
|
|
|
|
|
"0100000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
|
"6c5e5ffae4b05e149d0aca50bf7b4112acbbe6233ace9c8bd5bcedf34df9ce0b", 0
|
|
|
|
|
},
|
|
|
|
|
"6c5e5ffae4b05e149d0aca50bf7b4112acbbe6233ace9c8bd5bcedf34df9ce0b", 0},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct ge25519_t p;
|
|
|
|
@ -461,9 +405,7 @@ START_TEST(test_xmr_ge25519_check)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_ge25519_scalarmult_base_wrapper)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_ge25519_scalarmult_base_wrapper) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *sc;
|
|
|
|
|
char *pt;
|
|
|
|
@ -510,9 +452,7 @@ START_TEST(test_xmr_ge25519_scalarmult_base_wrapper)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_ge25519_scalarmult)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_ge25519_scalarmult) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *sc;
|
|
|
|
|
char *pt;
|
|
|
|
@ -568,9 +508,7 @@ START_TEST(test_xmr_ge25519_scalarmult)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_ge25519_ops)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_ge25519_ops) {
|
|
|
|
|
int tests[] = {1, 2, 7, 8, 637, 9912, 12345};
|
|
|
|
|
for (size_t i = 0; i < (sizeof(tests) / sizeof(*tests)); i++) {
|
|
|
|
|
struct ge25519_t a, b, c, d;
|
|
|
|
@ -609,22 +547,29 @@ START_TEST(test_xmr_ge25519_ops)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_check_point)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_check_point) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *p;
|
|
|
|
|
bool on;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{"001000a93e0e6937b4feaf079e418a028ca85459aa39ac3871b94076f88ca608", true},
|
|
|
|
|
{"54863a0464c008acc99cffb179bc6cf34eb1bbdf6c29f7a070a7c6376ae30ab5", true},
|
|
|
|
|
{"bebe3c84092c0f7a92704cafb16562cc45c47f45e84baec8d4bba3559d1c1808", true},
|
|
|
|
|
{"00000000000000c60073ec000000000000ff0000000000000000000000000080", false},
|
|
|
|
|
{"00000000000000004e0000000000000000000000000000000000000000000000", false},
|
|
|
|
|
{"0000008b0000000000000000b200000000000000000000000000000000000080", false},
|
|
|
|
|
{"a0953eebe2f676256c37af4f6f84f32d397aaf3b73606e96c5ddfcecbb1ceec8", false},
|
|
|
|
|
{"a82cd837efee505ec8425769ea925bee869ec3c78a57708c64c2ef2bd6ad3b88", false},
|
|
|
|
|
{"031c56cfc99758f6f025630e77c6dea0b853c3ab0bf6cf8c8dab03d1a4618178", false},
|
|
|
|
|
{"001000a93e0e6937b4feaf079e418a028ca85459aa39ac3871b94076f88ca608",
|
|
|
|
|
true},
|
|
|
|
|
{"54863a0464c008acc99cffb179bc6cf34eb1bbdf6c29f7a070a7c6376ae30ab5",
|
|
|
|
|
true},
|
|
|
|
|
{"bebe3c84092c0f7a92704cafb16562cc45c47f45e84baec8d4bba3559d1c1808",
|
|
|
|
|
true},
|
|
|
|
|
{"00000000000000c60073ec000000000000ff0000000000000000000000000080",
|
|
|
|
|
false},
|
|
|
|
|
{"00000000000000004e0000000000000000000000000000000000000000000000",
|
|
|
|
|
false},
|
|
|
|
|
{"0000008b0000000000000000b200000000000000000000000000000000000080",
|
|
|
|
|
false},
|
|
|
|
|
{"a0953eebe2f676256c37af4f6f84f32d397aaf3b73606e96c5ddfcecbb1ceec8",
|
|
|
|
|
false},
|
|
|
|
|
{"a82cd837efee505ec8425769ea925bee869ec3c78a57708c64c2ef2bd6ad3b88",
|
|
|
|
|
false},
|
|
|
|
|
{"031c56cfc99758f6f025630e77c6dea0b853c3ab0bf6cf8c8dab03d1a4618178",
|
|
|
|
|
false},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ge25519 tmp;
|
|
|
|
@ -636,9 +581,7 @@ START_TEST(test_xmr_check_point)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_h)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_h) {
|
|
|
|
|
char *H = "8b655970153799af2aeadc9ff1add0ea6c7251d54154cfa92c173a0dd39c1f94";
|
|
|
|
|
ge25519 H2, Z;
|
|
|
|
|
ge25519_p1p1 P_11;
|
|
|
|
@ -667,19 +610,24 @@ START_TEST(test_xmr_h)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_fast_hash)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_fast_hash) {
|
|
|
|
|
uint8_t hash[32];
|
|
|
|
|
char tests[][2][65] = {
|
|
|
|
|
{"", "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"},
|
|
|
|
|
{"00", "bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"},
|
|
|
|
|
{"000102", "f84a97f1f0a956e738abd85c2e0a5026f8874e3ec09c8f012159dfeeaab2b156"},
|
|
|
|
|
{"000102030405", "51e8babe8b42352100dffa7f7b3843c95245d3d545c6cbf5052e80258ae80627"},
|
|
|
|
|
{"000102030406", "74e7a0111ee2390dc68269a549a76dcfb553ca1260035eae982d669ff6494f32"},
|
|
|
|
|
{"000102030407", "3a81c5d02a87786343f88414aae150a09f6933b1d3bb660d0a9ac54e12e5cd86"},
|
|
|
|
|
{"259ef2aba8feb473cf39058a0fe30b9ff6d245b42b6826687ebd6b63128aff64", "7fb4d1c8e32f7414fe8c7b2774ec05bff6845e4278565d17f95559513a244da2"},
|
|
|
|
|
{"44caa1c26187afe8dacc5d91cb8a51282334d9308a818fe4d3607275e2a61f05", "2998fe52f8b9883149babd9c546912c3edfbd3cd98896a0e57b1b5929fa5ff7b"},
|
|
|
|
|
{"00",
|
|
|
|
|
"bc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a"},
|
|
|
|
|
{"000102",
|
|
|
|
|
"f84a97f1f0a956e738abd85c2e0a5026f8874e3ec09c8f012159dfeeaab2b156"},
|
|
|
|
|
{"000102030405",
|
|
|
|
|
"51e8babe8b42352100dffa7f7b3843c95245d3d545c6cbf5052e80258ae80627"},
|
|
|
|
|
{"000102030406",
|
|
|
|
|
"74e7a0111ee2390dc68269a549a76dcfb553ca1260035eae982d669ff6494f32"},
|
|
|
|
|
{"000102030407",
|
|
|
|
|
"3a81c5d02a87786343f88414aae150a09f6933b1d3bb660d0a9ac54e12e5cd86"},
|
|
|
|
|
{"259ef2aba8feb473cf39058a0fe30b9ff6d245b42b6826687ebd6b63128aff64",
|
|
|
|
|
"7fb4d1c8e32f7414fe8c7b2774ec05bff6845e4278565d17f95559513a244da2"},
|
|
|
|
|
{"44caa1c26187afe8dacc5d91cb8a51282334d9308a818fe4d3607275e2a61f05",
|
|
|
|
|
"2998fe52f8b9883149babd9c546912c3edfbd3cd98896a0e57b1b5929fa5ff7b"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < (sizeof(tests) / sizeof(*tests)); i++) {
|
|
|
|
@ -689,9 +637,7 @@ START_TEST(test_xmr_fast_hash)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_hasher)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_hasher) {
|
|
|
|
|
Hasher hasher;
|
|
|
|
|
uint8_t hash[32];
|
|
|
|
|
|
|
|
|
@ -703,14 +649,16 @@ START_TEST(test_xmr_hasher)
|
|
|
|
|
"f84a97f1f0a956e738abd85c2e0a5026f8874e3ec09c8f012159dfeeaab2b156"},
|
|
|
|
|
{{"001122334455667788", "00", ""},
|
|
|
|
|
"72a228ee8d0d01c815f112ce315cfc215a0594abcec24162304ae0ffda139d9e"},
|
|
|
|
|
{ {"001000a93e0e6937b4feaf079e418a028ca85459aa39ac3871b94076f88ca608", "", "00112233445566"},
|
|
|
|
|
{{"001000a93e0e6937b4feaf079e418a028ca85459aa39ac3871b94076f88ca608", "",
|
|
|
|
|
"00112233445566"},
|
|
|
|
|
"c3deafd96ff10cc190c6024548c344f6401cfe5151ab2fcd40df7cc501147e01"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < (sizeof(tests) / sizeof(*tests)); i++) {
|
|
|
|
|
xmr_hasher_init(&hasher);
|
|
|
|
|
for (int j = 0; j < 3; j++) {
|
|
|
|
|
xmr_hasher_update(&hasher, fromhex(tests[i].chunk[j]), strlen(tests[i].chunk[j]) / 2);
|
|
|
|
|
xmr_hasher_update(&hasher, fromhex(tests[i].chunk[j]),
|
|
|
|
|
strlen(tests[i].chunk[j]) / 2);
|
|
|
|
|
}
|
|
|
|
|
xmr_hasher_final(&hasher, hash);
|
|
|
|
|
ck_assert_mem_eq(hash, fromhex(tests[i].hash), 32);
|
|
|
|
@ -718,20 +666,25 @@ START_TEST(test_xmr_hasher)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_hash_to_scalar)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_hash_to_scalar) {
|
|
|
|
|
bignum256modm a1;
|
|
|
|
|
unsigned char out[32];
|
|
|
|
|
char tests[][2][65] = {
|
|
|
|
|
{"", "4a078e76cd41a3d3b534b83dc6f2ea2de500b653ca82273b7bfad8045d85a400"},
|
|
|
|
|
{"00", "5497c9b6a7059553835f85118dc089d66512f7b477d66591ff96a9e064bcc90a"},
|
|
|
|
|
{"000102", "5727ca206dbafa2e099b022ed528f5bdf7874e3ec09c8f012159dfeeaab2b106"},
|
|
|
|
|
{"000102030405", "7740cf04577c107153a50b3abe44859f5245d3d545c6cbf5052e80258ae80607"},
|
|
|
|
|
{"000102030406", "ad6bbffaceb8020543ac82bcadb9d090b553ca1260035eae982d669ff6494f02"},
|
|
|
|
|
{"000102030407", "d2e116e9576ee5a29011c8fcb41259f99e6933b1d3bb660d0a9ac54e12e5cd06"},
|
|
|
|
|
{"259ef2aba8feb473cf39058a0fe30b9ff6d245b42b6826687ebd6b63128aff64", "3d6d3727dc50bca39e6ccfc9c12950eef5845e4278565d17f95559513a244d02"},
|
|
|
|
|
{"44caa1c26187afe8dacc5d91cb8a51282334d9308a818fe4d3607275e2a61f05", "aecc45c83f0408c96c70f8273e94f930edfbd3cd98896a0e57b1b5929fa5ff0b"},
|
|
|
|
|
{"00",
|
|
|
|
|
"5497c9b6a7059553835f85118dc089d66512f7b477d66591ff96a9e064bcc90a"},
|
|
|
|
|
{"000102",
|
|
|
|
|
"5727ca206dbafa2e099b022ed528f5bdf7874e3ec09c8f012159dfeeaab2b106"},
|
|
|
|
|
{"000102030405",
|
|
|
|
|
"7740cf04577c107153a50b3abe44859f5245d3d545c6cbf5052e80258ae80607"},
|
|
|
|
|
{"000102030406",
|
|
|
|
|
"ad6bbffaceb8020543ac82bcadb9d090b553ca1260035eae982d669ff6494f02"},
|
|
|
|
|
{"000102030407",
|
|
|
|
|
"d2e116e9576ee5a29011c8fcb41259f99e6933b1d3bb660d0a9ac54e12e5cd06"},
|
|
|
|
|
{"259ef2aba8feb473cf39058a0fe30b9ff6d245b42b6826687ebd6b63128aff64",
|
|
|
|
|
"3d6d3727dc50bca39e6ccfc9c12950eef5845e4278565d17f95559513a244d02"},
|
|
|
|
|
{"44caa1c26187afe8dacc5d91cb8a51282334d9308a818fe4d3607275e2a61f05",
|
|
|
|
|
"aecc45c83f0408c96c70f8273e94f930edfbd3cd98896a0e57b1b5929fa5ff0b"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < (sizeof(tests) / sizeof(*tests)); i++) {
|
|
|
|
@ -742,20 +695,25 @@ START_TEST(test_xmr_hash_to_scalar)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_hash_to_ec)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_hash_to_ec) {
|
|
|
|
|
ge25519 p1;
|
|
|
|
|
unsigned char out[32];
|
|
|
|
|
char tests[][2][65] = {
|
|
|
|
|
{"", "d6d7d783ab18e1be65586adb7902a4175b737ef0b902875e1d1d5c5cf0478c0b"},
|
|
|
|
|
{"00", "8e2fecb36320bc4e192e10ef54afc7c83fbeb0c38b7debd4fea51301f0bd4f3d"},
|
|
|
|
|
{"000102", "73b233e2e75d81b9657a857e38e7ab2bc3600e5c56622b9fe4b976ff312220fa"},
|
|
|
|
|
{"000102030405", "bebe3c84092c0f7a92704cafb16562cc45c47f45e84baec8d4bba3559d1c1808"},
|
|
|
|
|
{"000102030406", "525567a6a40a94f2d916bc1efea234bbd3b9162403ec2faba871a90f8d0d487e"},
|
|
|
|
|
{"000102030407", "99b1be2a92cbd22b24b48fb7a9daadd4d13a56915c4f6ed696f271ad5bdbc149"},
|
|
|
|
|
{"42f6835bf83114a1f5f6076fe79bdfa0bd67c74b88f127d54572d3910dd09201", "54863a0464c008acc99cffb179bc6cf34eb1bbdf6c29f7a070a7c6376ae30ab5"},
|
|
|
|
|
{"44caa1c26187afe8dacc5d91cb8a51282334d9308a818fe4d3607275e2a61f05", "001000a93e0e6937b4feaf079e418a028ca85459aa39ac3871b94076f88ca608"},
|
|
|
|
|
{"00",
|
|
|
|
|
"8e2fecb36320bc4e192e10ef54afc7c83fbeb0c38b7debd4fea51301f0bd4f3d"},
|
|
|
|
|
{"000102",
|
|
|
|
|
"73b233e2e75d81b9657a857e38e7ab2bc3600e5c56622b9fe4b976ff312220fa"},
|
|
|
|
|
{"000102030405",
|
|
|
|
|
"bebe3c84092c0f7a92704cafb16562cc45c47f45e84baec8d4bba3559d1c1808"},
|
|
|
|
|
{"000102030406",
|
|
|
|
|
"525567a6a40a94f2d916bc1efea234bbd3b9162403ec2faba871a90f8d0d487e"},
|
|
|
|
|
{"000102030407",
|
|
|
|
|
"99b1be2a92cbd22b24b48fb7a9daadd4d13a56915c4f6ed696f271ad5bdbc149"},
|
|
|
|
|
{"42f6835bf83114a1f5f6076fe79bdfa0bd67c74b88f127d54572d3910dd09201",
|
|
|
|
|
"54863a0464c008acc99cffb179bc6cf34eb1bbdf6c29f7a070a7c6376ae30ab5"},
|
|
|
|
|
{"44caa1c26187afe8dacc5d91cb8a51282334d9308a818fe4d3607275e2a61f05",
|
|
|
|
|
"001000a93e0e6937b4feaf079e418a028ca85459aa39ac3871b94076f88ca608"},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < (sizeof(tests) / sizeof(*tests)); i++) {
|
|
|
|
@ -766,28 +724,30 @@ START_TEST(test_xmr_hash_to_ec)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_derivation_to_scalar)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_derivation_to_scalar) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *pt;
|
|
|
|
|
uint32_t idx;
|
|
|
|
|
char *sc;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"c655b2d9d2670a1c9f26f7586b6d6b1ec5173b8b33bca64c3d305a42d66738b1", 0,
|
|
|
|
|
"c655b2d9d2670a1c9f26f7586b6d6b1ec5173b8b33bca64c3d305a42d66738b1",
|
|
|
|
|
0,
|
|
|
|
|
"ca7ce31b273dd1ac00dc3553e654fb66036804800e27c826bd2b78649243900b",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"2b1dbd7a007dcc4d729fa8359705595599737fcef60afb36b379fe033095dca7", 1,
|
|
|
|
|
"2b1dbd7a007dcc4d729fa8359705595599737fcef60afb36b379fe033095dca7",
|
|
|
|
|
1,
|
|
|
|
|
"60afd5a63b14845d3b92d16eac386713e4ff617fdc5c1a07c3212098c1f5610c",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"a48ed3797225dab4b4316b5e40107b6bd63e5f4dc517ba602774d703576ec771", 24,
|
|
|
|
|
"a48ed3797225dab4b4316b5e40107b6bd63e5f4dc517ba602774d703576ec771",
|
|
|
|
|
24,
|
|
|
|
|
"fe81804091e50a5c2233faa6277360fbe1948ea15dddbae62c1d40bbd1918606",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"fa27b5b39741f5341b4e89269e3a05ff7e76ec7739843872468fc4bec8475410", 65537,
|
|
|
|
|
"fa27b5b39741f5341b4e89269e3a05ff7e76ec7739843872468fc4bec8475410",
|
|
|
|
|
65537,
|
|
|
|
|
"1ba36841f57aa8b799c4dd02b39d53e5fb7780d3f09f91a57a86dcb418d8d506",
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
@ -808,9 +768,7 @@ START_TEST(test_xmr_derivation_to_scalar)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_generate_key_derivation)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_generate_key_derivation) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *pt;
|
|
|
|
|
char *sc;
|
|
|
|
@ -847,9 +805,7 @@ START_TEST(test_xmr_generate_key_derivation)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_derive_private_key)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_derive_private_key) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *pt;
|
|
|
|
|
uint32_t idx;
|
|
|
|
@ -857,17 +813,20 @@ START_TEST(test_xmr_derive_private_key)
|
|
|
|
|
char *r;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"0541d8f069e5e80a892e39bbf1944ef578008cf9ecf1d100760a05858c1b709e", 0,
|
|
|
|
|
"0541d8f069e5e80a892e39bbf1944ef578008cf9ecf1d100760a05858c1b709e",
|
|
|
|
|
0,
|
|
|
|
|
"76967eeb0a3d181bb0b384be71c680a4287599f27b2ddbd07f8e06ab6f2c880e",
|
|
|
|
|
"45728c5cb658e470790f124a01699d2126832b7e5c6b7760b6f11119b96ad603",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"fc6e0bd785a84e62c9ac8a97e0e604a79494bc2cf7b3b38ef8af7791c87b5bb8", 1,
|
|
|
|
|
"fc6e0bd785a84e62c9ac8a97e0e604a79494bc2cf7b3b38ef8af7791c87b5bb8",
|
|
|
|
|
1,
|
|
|
|
|
"32fbe149562b7ccb34bc4105b87b2a834024799336c8eea5e94df77f1ae9a807",
|
|
|
|
|
"64508e83bbadf63f8ecfae4d9dcdd39a4ba23508a545e1a37026f0fa2539d601",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"f6bd7a72dc9444dc7e09a0eb4d312d36fe173693d6405b132a5b090297a04ea9", 65537,
|
|
|
|
|
"f6bd7a72dc9444dc7e09a0eb4d312d36fe173693d6405b132a5b090297a04ea9",
|
|
|
|
|
65537,
|
|
|
|
|
"333a8fcce6726457e4222a87b9b475c1fcf985f756c2029fcb39184c0a5c4804",
|
|
|
|
|
"37c16a22da4c0082ebf4bf807403b169f75142a9bd8560ed45f3f9347218260e",
|
|
|
|
|
},
|
|
|
|
@ -888,9 +847,7 @@ START_TEST(test_xmr_derive_private_key)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_derive_public_key)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_derive_public_key) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *pt;
|
|
|
|
|
uint32_t idx;
|
|
|
|
@ -898,17 +855,20 @@ START_TEST(test_xmr_derive_public_key)
|
|
|
|
|
char *r;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"653f03e7766d472826aa49793bc0cfde698e6745ae5e4217980ba307739f2ed9", 0,
|
|
|
|
|
"653f03e7766d472826aa49793bc0cfde698e6745ae5e4217980ba307739f2ed9",
|
|
|
|
|
0,
|
|
|
|
|
"2a393f0858732970ac8dea003b17e1ce9371f0a045bd9b7af0d998262739f4cc",
|
|
|
|
|
"f7a3db27c45f265f6a68a30137ca44289a6cf1a6db2cf482c59ebfb0142ad419",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"338e93f61e6470a5cc71c07b8caedd1a9a28da037aab65c1ca5538501b012c81", 1,
|
|
|
|
|
"338e93f61e6470a5cc71c07b8caedd1a9a28da037aab65c1ca5538501b012c81",
|
|
|
|
|
1,
|
|
|
|
|
"af3a1d39397d778731c4510110fd117dc02f756e390713d58f94a06203ce39eb",
|
|
|
|
|
"779e2a043c881f06aba1952741fd753098615c4fafa8f62748467ab9bac43241",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"7735e9476440927b89b18d7a1e0645b218a1a6d28c642aebb16c1dba0926d5e4", 65537,
|
|
|
|
|
"7735e9476440927b89b18d7a1e0645b218a1a6d28c642aebb16c1dba0926d5e4",
|
|
|
|
|
65537,
|
|
|
|
|
"62c3eed062bd602f7f2164c69ad0b5a8eb3ea560c930f6b41abfc1c4839ea432",
|
|
|
|
|
"6da4ebd29498d16c4e813abb3e328c83f9b01a7ba1da6e818071f8ec563626c8",
|
|
|
|
|
},
|
|
|
|
@ -929,9 +889,7 @@ START_TEST(test_xmr_derive_public_key)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_add_keys2)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_add_keys2) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
char *b;
|
|
|
|
@ -978,9 +936,7 @@ START_TEST(test_xmr_add_keys2)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_add_keys3)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_add_keys3) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
char *A;
|
|
|
|
@ -1032,26 +988,27 @@ START_TEST(test_xmr_add_keys3)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_get_subaddress_secret_key)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_get_subaddress_secret_key) {
|
|
|
|
|
static const struct {
|
|
|
|
|
uint32_t major, minor;
|
|
|
|
|
char *m;
|
|
|
|
|
char *r;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
0, 0,
|
|
|
|
|
0,
|
|
|
|
|
0,
|
|
|
|
|
"36fad9f7bff465c15a755f1482fb2ecc3a4e434303df906882234e42b5813207",
|
|
|
|
|
"8a510a9fe1824b49abbae05958084f9c9098775f29e15427309177882471cf01",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
0, 1,
|
|
|
|
|
0,
|
|
|
|
|
1,
|
|
|
|
|
"36fad9f7bff465c15a755f1482fb2ecc3a4e434303df906882234e42b5813207",
|
|
|
|
|
"2bbc9366c04abb0523e2b2d6e709670ffe6645bacedfee968d9c6bc8eefe9c0f",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
100, 100,
|
|
|
|
|
100,
|
|
|
|
|
100,
|
|
|
|
|
"36fad9f7bff465c15a755f1482fb2ecc3a4e434303df906882234e42b5813207",
|
|
|
|
|
"c3837d41fedeaed126cf4fc1a5ea47b8b7f38f6a64aa534e3dd45a3c93f37600",
|
|
|
|
|
},
|
|
|
|
@ -1070,28 +1027,30 @@ START_TEST(test_xmr_get_subaddress_secret_key)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_gen_c)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_gen_c) {
|
|
|
|
|
static const struct {
|
|
|
|
|
char *a;
|
|
|
|
|
uint64_t amount;
|
|
|
|
|
char *r;
|
|
|
|
|
} tests[] = {
|
|
|
|
|
{
|
|
|
|
|
"e3e6558c291bbb98aa691d068b67d59dc520afb23fdd51bf65283626fc2ad903", 0,
|
|
|
|
|
"e3e6558c291bbb98aa691d068b67d59dc520afb23fdd51bf65283626fc2ad903",
|
|
|
|
|
0,
|
|
|
|
|
"ef19d73bdf3749240b80ee7695f53ad7c2fc2cf868a93209799f41212d099750",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"6788c9579c377f3228680bd0e6d01b1ee0c763b35ed39d36fa2146cc2ee16e0e", 1,
|
|
|
|
|
"6788c9579c377f3228680bd0e6d01b1ee0c763b35ed39d36fa2146cc2ee16e0e",
|
|
|
|
|
1,
|
|
|
|
|
"4913b9af4f2725d87a4404c22cf366597d1c1e6a1f510ae14081d8b7c5a9de77",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"ad9e89d67012935540427c241756d6a9d260c5e134603c41d31e24f8651bef08", 65537,
|
|
|
|
|
"ad9e89d67012935540427c241756d6a9d260c5e134603c41d31e24f8651bef08",
|
|
|
|
|
65537,
|
|
|
|
|
"f005721da08f24e68314abed3ddfd94165e4be3813398fb126e3f366820b9c90",
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"fdbb70ff07be24d98de3bffa0a33756646497224318fb7fe136f0e7789d12607", 0xffffffffffffffffULL,
|
|
|
|
|
"fdbb70ff07be24d98de3bffa0a33756646497224318fb7fe136f0e7789d12607",
|
|
|
|
|
0xffffffffffffffffULL,
|
|
|
|
|
"a9c38927f299c5f14c98a1a9c9981e59c606ff597274b9b709e1356f12e1498c",
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
@ -1109,9 +1068,7 @@ START_TEST(test_xmr_gen_c)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_varint)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_varint) {
|
|
|
|
|
static const struct {
|
|
|
|
|
uint64_t x;
|
|
|
|
|
char *r;
|
|
|
|
@ -1170,9 +1127,7 @@ START_TEST(test_xmr_varint)
|
|
|
|
|
}
|
|
|
|
|
END_TEST
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
START_TEST(test_xmr_gen_range_sig)
|
|
|
|
|
{
|
|
|
|
|
START_TEST(test_xmr_gen_range_sig) {
|
|
|
|
|
uint64_t tests[] = {
|
|
|
|
|
0, 1, 65535, 65537, 0xffffffffffffffffULL, 0xdeadc0deULL,
|
|
|
|
|
};
|
|
|
|
|