Skip to content

Commit cf2b038

Browse files
committed
update test vectors
1 parent 7482623 commit cf2b038

File tree

3 files changed

+33
-57
lines changed

3 files changed

+33
-57
lines changed

seedtool/selftest.ino

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,19 +47,19 @@ const char* ref_bip39_mnemonics[BIP39Seq::WORD_COUNT] =
4747
};
4848

4949

50-
// roundtrip compatible test vectors between skr and bip39 (generated with bc-seedtool-cli d91e1332)
50+
// roundtrip compatible test vectors between skr and bip39 (generated with bc-seedtool-cli 7a62535)
5151
const String selftest_seed = F("f13ad5414aee7ca944e79669db8e4cb3");
5252
const uint8_t selftest_seed_arr[] = {0xf1, 0x3a, 0xd5, 0x41, 0x4a, 0xee, 0x7c, 0xa9, 0x44, 0xe7, 0x96, 0x69, 0xdb, 0x8e, 0x4c, 0xb3};
5353
const String selftest_bip39 = F("van stove expect noise treat feed bean version hawk symbol nasty grocery");
5454
const size_t selftest_sskr_thresh = 2;
5555
const size_t selftest_sskr_nshares = 3;
56-
const String selftest_sskr[3] = { F("tuna acid epic gyro pool hang able acid able whiz atom quiz ugly tomb when race slot cats fern purr chef inky jugs view swan time yell liar warm"),
57-
F("tuna acid epic gyro pool hang able acid acid tomb vast foxy heat cost noon love legs brag vast jowl drum cook judo even grim news race half user"),
58-
F("tuna acid epic gyro pool hang able acid also road tent glow saga hope dull stub glow barn note brew kept mint junk hard vows idle exit cash zinc")};
56+
const String selftest_sskr[3] = { F("tuna acid epic gyro gray monk able acid able lava visa flux zero jolt runs miss vial need wand race drum kept yank safe taxi part into body away"),
57+
F("tuna acid epic gyro gray monk able acid acid play jolt grim toys quad eyes figs kiln exam inky fern fair soap atom task cats jowl cola void waxy"),
58+
F("tuna acid epic gyro gray monk able acid also tomb wave huts omit task paid trip song trip wall roof aqua brag away unit help keep vibe skew luau")};
5959
// the same as selftest_sskr but represented with word indexes:
60-
const uint8_t selftest_sskr_indx[3][29] = { {217, 1, 53, 85, 174, 87, 0, 1, 0, 242, 6, 180, 219, 214, 241, 181, 199, 24, 60, 178, 25, 102, 113, 229, 205, 211, 247, 132, 235},
61-
{217, 1, 53, 85, 174, 87, 0, 1, 1, 214, 224, 68, 90, 31, 158, 138, 131, 18, 224, 111, 46, 30, 112, 54, 82, 156, 181, 86, 223},
62-
{217, 1, 53, 85, 174, 87, 0, 1, 2, 186, 209, 79, 194, 95, 47, 203, 79, 12, 159, 19, 119, 150, 115, 88, 232, 100, 56, 23, 252}};
60+
const uint8_t selftest_sskr_indx[3][29] = { {217, 1, 53, 85, 81, 152, 0, 1, 0, 128, 230, 67, 251, 110, 191, 151, 227, 155, 234, 181, 46, 119, 245, 193, 208, 169, 103, 17, 8},
61+
{217, 1, 53, 85, 81, 152, 0, 1, 1, 171, 110, 82, 215, 179, 57, 61, 122, 55, 102, 60, 59, 200, 6, 207, 24, 111, 29, 231, 238},
62+
{217, 1, 53, 85, 81, 152, 0, 1, 2, 214, 237, 97, 163, 207, 168, 216, 202, 216, 233, 188, 4, 18, 8, 221, 91, 117, 228, 198, 139}};
6363

6464
const char* ref_sha_input = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
6565

@@ -234,7 +234,7 @@ bool test_sskr(void) {
234234

235235
// change one shard a bit:
236236
String shard_changed = selftest_sskr[2];
237-
shard_changed.replace("zinc", "tuna");
237+
shard_changed.replace("luau", "tuna");
238238
// must fail due to incorrect bytewords checksum
239239
ret = sskr2.get_share_from_ur(shard_changed, 1);
240240
if (ret == true) {

seedtool/test_bc_ur.ino

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -312,26 +312,26 @@ static void test_ur_encoder() {
312312
parts.push_back(encoder.next_part());
313313
}
314314
StringVector expected_parts = {
315-
"ur:bytes/1-9/ltadascfadaxcywenbpljkhdcahkadaemejtswhhylkepmykhhtsytsnoyoyaxaedsuttydmmhhpktpmsrjtdkgsltgh",
316-
"ur:bytes/2-9/ltaoascfadaxcywenbpljkhdcagwdpfnsboxgwlbaawzuefywkdplrsrjynbvygabwjldapfcsgmghhkhstlrdcxaefz",
317-
"ur:bytes/3-9/ltaxascfadaxcywenbpljkhdcahelbknlkuejnbadmssfhfrdpsbiegecpasvssovlgeykssjykklronvsjksopdzool",
318-
"ur:bytes/4-9/ltaaascfadaxcywenbpljkhdcasotkhemthydawydtaxneurlkosgwcekonertkbrlwmplssjtammdplolsbrdzertas",
319-
"ur:bytes/5-9/ltahascfadaxcywenbpljkhdcatbbdfmssrkzocwnezmlennjpfzbgmuktrhtejscktelgfpdlrkfyfwdajldejokbwf",
320-
"ur:bytes/6-9/ltamascfadaxcywenbpljkhdcackjlhkhybssklbwefectpfnbbectrljectpavyrolkzezepkmwidmwoxkilghdsowp",
321-
"ur:bytes/7-9/ltatascfadaxcywenbpljkhdcavszownjkwtclrtvaynhpahrtoxmwvwatmedibkaegdosftvandiodagdhthtrlnnhy",
322-
"ur:bytes/8-9/ltayascfadaxcywenbpljkhdcadmsponkkbbhgsolnjntegepmttmoonftnbuoiyrehfrtsabzsttorodklubbuyaetk",
323-
"ur:bytes/9-9/ltasascfadaxcywenbpljkhdcajskecpmdckihdyhphfotjojtfmlpwmadspaxrkytbztpbauotbgtgtaeaevtgavtny",
324-
"ur:bytes/10-9/ltbkascfadaxcywenbpljkhdcahkadaemejtswhhylkepmykhhtsytsnoyoyaxaedsuttydmmhhpktpmsrjtwdkiplzs",
325-
"ur:bytes/11-9/ltbdascfadaxcywenbpljkhdcahelbknlkuejnbadmssfhfrdpsbiegecpasvssovlgeykssjykklronvsjkvetiiapk",
326-
"ur:bytes/12-9/ltbnascfadaxcywenbpljkhdcarllaluzodmgstospeyiefmwejlwtpedamktksrvlcygmzmmovovllarodtmtbnptrs",
327-
"ur:bytes/13-9/ltbtascfadaxcywenbpljkhdcamtkgtpknghchchyketwsvwgwfdhpgmgtylctotztpdrpayoschcmhplffziachrfgd",
328-
"ur:bytes/14-9/ltbaascfadaxcywenbpljkhdcapazmwnvonnvdnsbyleynwtnsjkjndeoldydkbkdslgjkbbkortbelomueekgvstegt",
329-
"ur:bytes/15-9/ltbsascfadaxcywenbpljkhdcaynmhpddpzoversbdqdfyrehnqzlugmjzmnmtwmrouohtstgsbsahpawkditkckynwt",
330-
"ur:bytes/16-9/ltbeascfadaxcywenbpljkhdcawygekobamwtlihsnpalpsghenskkiynthdzttsimtojetprsttmukirlrsbtamjtpd",
331-
"ur:bytes/17-9/ltbyascfadaxcywenbpljkhdcamklgftaxykpewyrtqzhydntpnytyisincxmhtbceaykolduortotiaiaiafhiaoyce",
332-
"ur:bytes/18-9/ltbgascfadaxcywenbpljkhdcahkadaemejtswhhylkepmykhhtsytsnoyoyaxaedsuttydmmhhpktpmsrjtntwkbkwy",
333-
"ur:bytes/19-9/ltbwascfadaxcywenbpljkhdcadekicpaajootjzpsdrbalteywllbdsnbinaerkurspbncxgslgftvtsrjtksplcpeo",
334-
"ur:bytes/20-9/ltbbascfadaxcywenbpljkhdcayapmrleeleaxpasfrtrdkncffwjyjzgyetdmlewtkpktgllepfrltatazcksmhkbot"
315+
"ur:bytes/1-9/lpadascfadaxcywenbpljkhdcahkadaemejtswhhylkepmykhhtsytsnoyoyaxaedsuttydmmhhpktpmsrjtdkgslpgh",
316+
"ur:bytes/2-9/lpaoascfadaxcywenbpljkhdcagwdpfnsboxgwlbaawzuefywkdplrsrjynbvygabwjldapfcsgmghhkhstlrdcxaefz",
317+
"ur:bytes/3-9/lpaxascfadaxcywenbpljkhdcahelbknlkuejnbadmssfhfrdpsbiegecpasvssovlgeykssjykklronvsjksopdzmol",
318+
"ur:bytes/4-9/lpaaascfadaxcywenbpljkhdcasotkhemthydawydtaxneurlkosgwcekonertkbrlwmplssjtammdplolsbrdzcrtas",
319+
"ur:bytes/5-9/lpahascfadaxcywenbpljkhdcatbbdfmssrkzmcwnezelennjpfzbgmuktrhtejscktelgfpdlrkfyfwdajldejokbwf",
320+
"ur:bytes/6-9/lpamascfadaxcywenbpljkhdcackjlhkhybssklbwefectpfnbbectrljectpavyrolkzczcpkmwidmwoxkilghdsowp",
321+
"ur:bytes/7-9/lpatascfadaxcywenbpljkhdcavszmwnjkwtclrtvaynhpahrtoxmwvwatmedibkaegdosftvandiodagdhthtrlnnhy",
322+
"ur:bytes/8-9/lpayascfadaxcywenbpljkhdcadmsponkkbbhgsoltjntegepmttmoonftnbuoiyrehfrtsabzsttorodklubbuyaetk",
323+
"ur:bytes/9-9/lpasascfadaxcywenbpljkhdcajskecpmdckihdyhphfotjojtfmlnwmadspaxrkytbztpbauotbgtgtaeaevtgavtny",
324+
"ur:bytes/10-9/lpbkascfadaxcywenbpljkhdcahkadaemejtswhhylkepmykhhtsytsnoyoyaxaedsuttydmmhhpktpmsrjtwdkiplzs",
325+
"ur:bytes/11-9/lpbdascfadaxcywenbpljkhdcahelbknlkuejnbadmssfhfrdpsbiegecpasvssovlgeykssjykklronvsjkvetiiapk",
326+
"ur:bytes/12-9/lpbnascfadaxcywenbpljkhdcarllaluzmdmgstospeyiefmwejlwtpedamktksrvlcygmzemovovllarodtmtbnptrs",
327+
"ur:bytes/13-9/lpbtascfadaxcywenbpljkhdcamtkgtpknghchchyketwsvwgwfdhpgmgtylctotzopdrpayoschcmhplffziachrfgd",
328+
"ur:bytes/14-9/lpbaascfadaxcywenbpljkhdcapazewnvonnvdnsbyleynwtnsjkjndeoldydkbkdslgjkbbkortbelomueekgvstegt",
329+
"ur:bytes/15-9/lpbsascfadaxcywenbpljkhdcaynmhpddpzmversbdqdfyrehnqzlugmjzmnmtwmrouohtstgsbsahpawkditkckynwt",
330+
"ur:bytes/16-9/lpbeascfadaxcywenbpljkhdcawygekobamwtlihsnpalnsghenskkiynthdzotsimtojetprsttmukirlrsbtamjtpd",
331+
"ur:bytes/17-9/lpbyascfadaxcywenbpljkhdcamklgftaxykpewyrtqzhydntpnytyisincxmhtbceaykolduortotiaiaiafhiaoyce",
332+
"ur:bytes/18-9/lpbgascfadaxcywenbpljkhdcahkadaemejtswhhylkepmykhhtsytsnoyoyaxaedsuttydmmhhpktpmsrjtntwkbkwy",
333+
"ur:bytes/19-9/lpbwascfadaxcywenbpljkhdcadekicpaajootjzpsdrbalpeywllbdsnbinaerkurspbncxgslgftvtsrjtksplcpeo",
334+
"ur:bytes/20-9/lpbbascfadaxcywenbpljkhdcayapmrleeleaxpasfrtrdkncffwjyjzgyetdmlewtkpktgllepfrltataztksmhkbot"
335335
};
336336

337337
assert(parts == expected_parts);

seedtool/ur.ino

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -263,43 +263,19 @@ bool ur_encode_output_descriptor(String &ur, uint32_t *derivation, uint32_t deri
263263
return true;
264264
}
265265

266-
/*
267-
bool ur_encode_sskr_share(SSKRShareSeq *sskr_generate, size_t share_wndx, String &ur) {
268-
bool retval;
269-
uint8_t *cbor = NULL;
270-
271-
size_t cbor_size = cbor_encode_sskr_share(sskr_generate, share_wndx, &cbor);
272-
if (cbor_size == 0) {
273-
return false;
274-
}
275-
276-
print_hex(cbor, cbor_size);
277-
278-
retval = ur_encode("crypto-sskr", cbor, cbor_size, ur);
279-
if (retval == false) {
280-
return false;
281-
}
282-
283-
// @FIXME: free also on premature exit
284-
free(cbor);
285-
286-
return true;
287-
}
288-
*/
289-
290266
bool test_ur(void) {
291267

292268
int ret;
293269
{ // scope for every test case
294270
// source: https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-012-bytewords.md#exampletest-vector
295271
uint8_t seeds[] = {0xd9, 0x01, 0x2c, 0xa2, 0x01, 0x50, 0xc7, 0x09, 0x85, 0x80, 0x12, 0x5e, 0x2a, 0xb0, 0x98, 0x12,
296272
0x53, 0x46, 0x8b, 0x2d, 0xbc, 0x52, 0x02, 0xd8, 0x64, 0x19, 0x47, 0xda};
297-
String seed_bytewords_expected = F("taaddwoeadgdstasltlabghydrpfmkbggufgludprfgmaotpiecffltntddwgmrp");
273+
String seed_bytewords_expected = F("taaddwoeadgdstaslplabghydrpfmkbggufgludprfgmaotpiecffltntddwgmrp");
298274

299275
char *seed_bytewords = bytewords_encode(bw_minimal, seeds, sizeof(seeds));
300276

301277
if (strcmp(seed_bytewords_expected.c_str(), seed_bytewords) != 0) {
302-
Serial.println("bytewords failed");
278+
Serial.println("bytewords failed.");
303279
return false;
304280
}
305281

@@ -309,7 +285,7 @@ bool test_ur(void) {
309285
// https://github.com/BlockchainCommons/Research/blob/master/papers/bcr-2020-006-urtypes.md#exampletest-vector-1
310286
uint8_t payload[] = {0xC7, 0x09, 0x85, 0x80, 0x12, 0x5E, 0x2A, 0xB0, 0x98, 0x12, 0x53, 0x46, 0x8B, 0x2D, 0xBC, 0x52};
311287
uint32_t birthday = 18394;
312-
String ur_expected = F("ur:crypto-seed/oeadgdstasltlabghydrpfmkbggufgludprfgmaotpiecffltnltqdenos");
288+
String ur_expected = F("ur:crypto-seed/oeadgdstaslplabghydrpfmkbggufgludprfgmaotpiecffltnlpqdenos");
313289
String seed_ur;
314290

315291
bool rval = ur_encode_crypto_seed(payload, sizeof(payload), seed_ur, &birthday);
@@ -329,8 +305,8 @@ bool test_ur(void) {
329305
String derived_key = F("tpubDHW3GtnVrTatx38EcygoSf9UhUd9Dx1rht7FAL8unrMo8r2NWhJuYNqDFS7cZFVbDaxJkV94MLZAr86XFPsAPYcoHWJ7sWYsrmHDw5sKQ2K");
330306
String cbor_expected = F("a4035821026fe2355745bb2db3630bbc80ef5d58951c963c841f54170ba6e5c12be7fc12a6045820ced155c72456255881793514edc5"
331307
"bd9447e7f74abb88c6d6b6480fd016ee8c8505d90131a1020106d90130a2018a182cf501f501f500f401f4021ae9181cf3");
332-
String ur_expect = F("ur:crypto-hdkey/oxaxhdclaojlvoechgferkdpqdiabdrflawshlhdmdcemtfnlrctghchbdolvwsednvdzcbgolaahdcxtot"
333-
"tgostdkhfdahdlykkecbbweskrymwflvdylgerkloswtbrpfdbsticmwylkltahtaadehoyaoadamtaaddyoeadlecsdwykadyk"
308+
String ur_expect = F("ur:crypto-hdkey/oxaxhdclaojlvoechgferkdpqdiabdrflawshlhdmdcemtfnlrctghchbdolvwsednvdztbgolaahdcxtot"
309+
"tgostdkhfdahdlykkecbbweskrymwflvdylgerkloswtbrpfdbsticmwylklpahtaadehoyaoadamtaaddyoeadlecsdwykadyk"
334310
"adykaewkadwkaocywlcscewfiavorkat");
335311
uint32_t parent_fingerprint = 3910671603;
336312
ext_key xpub;

0 commit comments

Comments
 (0)