Skip to content
This repository was archived by the owner on Sep 25, 2024. It is now read-only.

Commit b8a6c6e

Browse files
committed
Fixed endianness + expected test outcomes
1 parent deeecff commit b8a6c6e

18 files changed

+120
-53
lines changed

common.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ void bbp_print_hex(const char *label, const uint8_t *v, size_t len) {
1111

1212
printf("%s: ", label);
1313
for (i = 0; i < len; ++i) {
14-
printf("%02x", v[bbp_eoffset(i, len)]);
14+
printf("%02x", v[i]);
1515
}
1616
printf("\n");
1717
}
@@ -26,19 +26,19 @@ uint8_t bbp_hex2byte(const char ch) {
2626
return 0;
2727
}
2828

29-
void bbp_parse_hex(bbp_endian_t e, uint8_t *v, const char *str) {
29+
void bbp_parse_hex(uint8_t *v, const char *str) {
3030
const size_t count = strlen(str) / 2;
3131
size_t i;
3232

3333
for (i = 0; i < count; ++i) {
3434
const char hi = bbp_hex2byte(str[i * 2]);
3535
const char lo = bbp_hex2byte(str[i * 2 + 1]);
3636

37-
v[bbp_eoffset(i, count)] = hi * 16 + lo;
37+
v[i] = hi * 16 + lo;
3838
}
3939
}
4040

41-
uint8_t *bbp_alloc_hex(bbp_endian_t e, const char *str, size_t *len) {
41+
uint8_t *bbp_alloc_hex(const char *str, size_t *len) {
4242
const size_t count = strlen(str) / 2;
4343
size_t i;
4444

@@ -48,7 +48,7 @@ uint8_t *bbp_alloc_hex(bbp_endian_t e, const char *str, size_t *len) {
4848
const char hi = bbp_hex2byte(str[i * 2]);
4949
const char lo = bbp_hex2byte(str[i * 2 + 1]);
5050

51-
v[bbp_eoffset(i, count)] = hi * 16 + lo;
51+
v[i] = hi * 16 + lo;
5252
}
5353

5454
*len = count;

endian.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,4 @@ void bbp_reverse(uint8_t *dst, size_t len) {
7575
}
7676
}
7777

78-
void bbp_ecopy(bbp_endian_t e, uint8_t *dst, uint8_t *src, size_t len) {
79-
memcpy(dst, src, len);
80-
if (bbp_host_endian() != e) {
81-
bbp_reverse(dst, len);
82-
}
83-
}
84-
85-
size_t bbp_eoffset(size_t i, size_t len) {
86-
return ((bbp_host_endian() == BBP_LITTLE) ? i : (len - i - 1));
87-
}
88-
8978
#endif

ex-address.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@ int main() {
1313
uint8_t address_bytes[21];
1414
char *address;
1515

16+
const char address_exp[] = "mqMi3XYqsPvBWtrJTk8euPWDVmFTZ5jHuK";
17+
18+
/* */
19+
1620
bbp_print_hex("pub", pub_bytes, sizeof(pub_bytes));
1721

1822
address_bytes[0] = 0x6f;
1923
bbp_hash160(address_bytes + 1, pub_bytes, 33);
2024
bbp_print_hex("hash160", address_bytes + 1, 20);
2125

2226
address = bbp_base58check(address_bytes, 21);
23-
printf("address: %s\n", address);
27+
printf("address : %s\n", address);
28+
printf("address (exp): %s\n", address_exp);
2429
free(address);
2530

2631
return 0;

ex-base58.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ int main() {
1010
};
1111
char *base58;
1212

13+
const char base58_exp[] = "8niM7FzqQeaPANNtRwEtQGi37YRcFwx1UBZMX8214MVq";
14+
15+
/* */
16+
1317
base58 = bbp_base58(bytes, sizeof(bytes));
1418
bbp_print_hex("hex", bytes, sizeof(bytes));
15-
printf("base58: %s\n", base58);
19+
printf("base58 : %s\n", base58);
20+
printf("base58 (exp): %s\n", base58_exp);
1621
free(base58);
1722

1823
return 0;

ex-ec-keypair.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,20 @@ int main() {
2424
};
2525
int i;
2626

27+
const char priv_exp[] = "16260783e40b16731673622ac8a5b045fc3ea4af70f727f3f9e92bdd3a1ddc42";
28+
const char pub_exp[2][200] = {
29+
"0482006e9398a6986eda61fe91674c3a108c399475bf1e738f19dfc2db11db1d28130c6b3b28aef9a9c7e7143dac6cf12c09b8444db61679abb1d86f85c038a58c",
30+
"0282006e9398a6986eda61fe91674c3a108c399475bf1e738f19dfc2db11db1d28"
31+
};
32+
2733
/* create keypair */
2834

2935
key = bbp_ec_new_keypair(priv_bytes);
3036
if (!key) {
3137
puts("Unable to create keypair");
3238
return -1;
3339
}
34-
bbp_print_hex("priv", priv_bytes, sizeof(priv));
40+
bbp_print_hex("priv #1 ", priv_bytes, sizeof(priv));
3541

3642
/* get private key back from EC_KEY */
3743

@@ -41,7 +47,9 @@ int main() {
4147
return -1;
4248
}
4349
BN_bn2bin(priv_bn, priv);
44-
bbp_print_hex("priv", priv, sizeof(priv));
50+
bbp_print_hex("priv #2 ", priv, sizeof(priv));
51+
52+
printf("priv (exp): %s\n", priv_exp);
4553

4654
/* get encoded public key from EC_KEY in all conversion forms */
4755

@@ -62,7 +70,8 @@ int main() {
6270
}
6371

6472
printf("conversion form: %s\n", conv_forms_desc[i]);
65-
bbp_print_hex("pub", pub, pub_len);
73+
bbp_print_hex("pub ", pub, pub_len);
74+
printf("pub (exp): %s\n", pub_exp[i]);
6675

6776
free(pub);
6877
}

ex-ecdsa-sign.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,20 @@ int main() {
1717
uint8_t *der, *der_copy;
1818
size_t der_len;
1919

20+
const char digest_exp[] = "4554813e91f3d5be790c7c608f80b2b00f3ea77512d49039e9e3dc45f89e2f01";
21+
22+
/* */
23+
2024
key = bbp_ec_new_keypair(priv_bytes);
2125
if (!key) {
2226
puts("Unable to create keypair");
2327
return -1;
2428
}
2529

26-
bbp_sha256(digest, (uint8_t *)message, sizeof(message));
27-
bbp_print_hex("digest", digest, 32);
30+
bbp_sha256(digest, (uint8_t *)message, strlen(message));
31+
bbp_print_hex("digest ", digest, 32);
32+
printf("digest (exp): %s\n", digest_exp);
33+
2834
signature = ECDSA_do_sign(digest, sizeof(digest), key);
2935
printf("r: %s\n", BN_bn2hex(signature->r));
3036
printf("s: %s\n", BN_bn2hex(signature->s));

ex-ecdsa-verify.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ int main() {
2929
uint8_t digest[32];
3030
int verified;
3131

32+
const char *r_exp = "2B2B529BDBDC93E78AF7E00228B179918B032D76902F74EF454426F7D06CD0F9";
33+
const char *s_exp = "62DDC76451CD04CB567CA5C5E047E8AC41D3D4CF7CB92434D55CB486CCCF6AF2";
34+
const char *digest_exp = "4554813e91f3d5be790c7c608f80b2b00f3ea77512d49039e9e3dc45f89e2f01";
35+
36+
/* */
37+
3238
key = bbp_ec_new_pubkey(pub_bytes, sizeof(pub_bytes));
3339
if (!key) {
3440
puts("Unable to create keypair");
@@ -37,11 +43,14 @@ int main() {
3743

3844
der_bytes_copy = der_bytes;
3945
signature = d2i_ECDSA_SIG(NULL, &der_bytes_copy, sizeof(der_bytes));
40-
printf("r: %s\n", BN_bn2hex(signature->r));
41-
printf("s: %s\n", BN_bn2hex(signature->s));
46+
printf("r : %s\n", BN_bn2hex(signature->r));
47+
printf("r (exp): %s\n", r_exp);
48+
printf("s : %s\n", BN_bn2hex(signature->s));
49+
printf("s (exp): %s\n", s_exp);
4250

4351
bbp_sha256(digest, (uint8_t *)message, strlen(message));
44-
bbp_print_hex("digest", digest, 32);
52+
bbp_print_hex("digest ", digest, 32);
53+
printf("digest (exp): %s\n", digest_exp);
4554
verified = ECDSA_do_verify(digest, sizeof(digest), signature, key);
4655

4756
switch (verified) {

ex-fixed-strings.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ int main() {
77
uint16_t n16 = 0xee12;
88
uint8_t ser[16];
99

10+
const char ser_exp[] = "8ba3f768466f6f4261720000000012ee";
11+
12+
/* */
13+
1014
size_t str_real_len = strlen(str);
1115
size_t str_pad_len = str_len - str_real_len;
1216

@@ -20,8 +24,8 @@ int main() {
2024
}
2125
*(uint16_t *)(ser + 4 + str_len) = bbp_eint16(BBP_LITTLE, n16);
2226

23-
/* 8ba3f768466f6f4261720000000012ee */
24-
bbp_print_hex("ser", ser, sizeof(ser));
27+
bbp_print_hex("ser ", ser, sizeof(ser));
28+
printf("ser (exp): %s\n", ser_exp);
2529

2630
return 0;
2731
}

ex-hashes.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,29 @@ int main() {
88
uint8_t digest[32];
99
uint8_t ser[35];
1010

11+
const char sha256_exp[] = "518ad5a375fa52f84b2b3df7933ad685eb62cf69869a96731561f94d10826b5c";
12+
const char hash256_exp[] = "90986ea4e28b847cc7f9beba87ea81b221ca6eaf9828a8b04c290c21d891bcda";
13+
const char ser_exp[] = "7fd1dabc91d8210c294cb0a82898af6eca21b281ea87babef9c77c848be2a46e98908c";
14+
15+
/* */
16+
1117
/* SHA-2 digest is big-endian */
1218

13-
/* 1st round = 518ad5a375fa52f84b2b3df7933ad685eb62cf69869a96731561f94d10826b5c */
1419
bbp_sha256(digest, (uint8_t *)message, strlen(message));
15-
bbp_print_hex("SHA256(message)", digest, 32);
20+
bbp_print_hex("SHA256(message) ", digest, 32);
21+
printf("SHA256(message) (exp): %s\n", sha256_exp);
1622

17-
/* 2nd round = 90986ea4e28b847cc7f9beba87ea81b221ca6eaf9828a8b04c290c21d891bcda */
1823
bbp_sha256(digest, digest, 32);
19-
bbp_print_hex("hash256(message)", digest, 32);
24+
bbp_print_hex("hash256(message) ", digest, 32);
25+
printf("hash256(message) (exp): %s\n", hash256_exp);
2026

2127
*(uint16_t *)(ser) = bbp_eint16(BBP_LITTLE, prefix);
2228
memcpy(ser + 2, digest, 32);
2329
bbp_reverse(ser + 2, 32);
2430
*(ser + 2 + 32) = suffix;
2531

26-
/* 7fd1dabc91d8210c294cb0a82898af6eca21b281ea87babef9c77c848be2a46e98908c */
27-
bbp_print_hex("ser", ser, sizeof(ser));
32+
bbp_print_hex("ser ", ser, sizeof(ser));
33+
printf("ser (exp): %s\n", ser_exp);
2834

2935
return 0;
3036
}

ex-integers.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ int main() {
77
uint64_t n64 = 0xdebc9a78563412ef;
88
uint8_t ser[15];
99

10+
const char ser_exp[] = "0123456789abcdef123456789abcde";
11+
12+
/* */
13+
1014
*ser = n8;
1115
*(uint16_t *)(ser + 1) = bbp_eint16(BBP_LITTLE, n16);
1216
*(uint32_t *)(ser + 3) = bbp_eint32(BBP_LITTLE, n32);
1317
*(uint64_t *)(ser + 7) = bbp_eint64(BBP_LITTLE, n64);
1418

15-
/* 0123456789abcdef123456789abcde */
16-
bbp_print_hex("ser", ser, sizeof(ser));
19+
bbp_print_hex("ser ", ser, sizeof(ser));
20+
printf("ser (exp): %s\n", ser_exp);
1721

1822
return 0;
1923
}

0 commit comments

Comments
 (0)