public void TestCases() { foreach (var tv in tvs) { var entropy = tv.entropy.HexToBytes(); var mnemonic = new KzMnemonic(tv.words, KzMnemonic.Languages.English); Assert.NotNull(mnemonic); // If checksum doesn't match returns null. var seed = new KzUInt512(tv.seed, firstByteFirst: true); var seedBip39 = KzExtPrivKey.Bip39Seed(tv.words, "TREZOR"); Assert.Equal(seed, seedBip39); var privkeyFromWords = KzExtPrivKey.MasterBip39(tv.words, "TREZOR"); var privkeyFromB58 = new KzB58ExtPrivKey(tv.b58priv).GetKey(); Assert.Equal(privkeyFromB58, privkeyFromWords); } }
public void TestCases() { foreach (var tv in tvs) { var seed = tv.m.HexToBytes(); var m = KzExtPrivKey.Master(seed); foreach (var d in tv.tds) { var path = new KzKeyPath(d.p); var priv = m.Derive(path); var pub = priv.GetExtPubKey(); var spriv = priv.ToString(); var spub = pub.ToString(); Assert.Equal(d.prv, spriv); Assert.Equal(d.pub, spub); var data = new byte[74]; priv.Encode(data); pub.Encode(data); // Test private key var b58key = new KzB58ExtPrivKey(); b58key.SetKey(priv); Assert.Equal(d.prv, b58key.ToString()); var b58keyDecodeCheck = new KzB58ExtPrivKey(d.prv); var checkKey = b58keyDecodeCheck.GetKey(); var eq = checkKey == priv; // ensure a base58 decoded pubkey also matches Assert.Equal(checkKey, priv); if (priv.Hardened == false && path.Parent != null) { // Compare with public derivation var pubkeyNew2 = m.Derive(path.Parent).GetExtPubKey().Derive((int)path.Indices.Last()); Assert.True(pubkeyNew2 != null); Assert.Equal(pub, pubkeyNew2); } } } }