public void DerivePubkeyTest() { ExtPubkey parent = new ExtPubkey("tpubDBwZbsX7C1m4tfHxHSFBvvuasqMxzMvSNM5yuAWz6kAfCATAgegvrtGdnxkqfr8wwRZi5d9fJHXqE8EFTSogTXd3xVx3GUFy9Xcg8dufREz"); ExtPubkey key = parent.DerivePubkey("0/44"); Assert.Equal("tpubDF7yNiHQHdfns9Mc3XM7PYcS2dqrPqcit3FLkebvHxS4atZxifANou2KTvpQQQP82ANDCkPc5MPQZ28pjYGgmDXGy1iyzaiX6MTBv8i4cua", key.ToString()); Assert.Equal("03f1e767c0555ce0105b2a76d0f8b19b6d33a147f82f75a05c4c09580c39694fd3", key.GetPubkey().ToHexString()); Assert.Equal("839fb0d66f1887db167cdc530ab98e871d8b017ebcb198568874b6c98516364e", key.GetChainCode().ToHexString()); Assert.Equal("043587cf", key.GetVersion().ToHexString()); Assert.Equal("a53a8ff3", key.GetFingerprint().ToHexString()); Assert.Equal((uint)44, key.GetChildNumber()); Assert.Equal((uint)4, key.GetDepth()); Assert.Equal(CfdNetworkType.Testnet, key.GetNetworkType()); Assert.True(key.IsValid()); ExtPubkey key1 = parent.DerivePubkey(0).DerivePubkey(44); ExtPubkey key2 = parent.DerivePubkey(new uint[] { 0, 44 }); Assert.Equal(key.ToString(), key1.ToString()); Assert.Equal(key.ToString(), key2.ToString()); Assert.True(key.Equals(key2)); }
public void GeneratePubkeyTest() { string[] mnemonicEn = { "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "abandon", "about" }; HDWallet hdWallet = new HDWallet(mnemonicEn, "TREZOR"); ExtPubkey pubkey = hdWallet.GeneratePubkey(CfdNetworkType.Mainnet); Assert.Equal("xpub661MyMwAqRbcGB88KaFbLGiYAat55APKhtWg4uYMkXAmfuSTbq2QYsn9sKJCj1YqZPafsboef4h4YbXXhNhPwMbkHTpkf3zLhx7HvFw1NDy", pubkey.ToString()); pubkey = hdWallet.GeneratePubkey(CfdNetworkType.Testnet); Assert.Equal("tpubD6NzVbkrYhZ4XyJymmEgYC3uVhyj4YtPFX6yRTbW6RvfRC7Ag3sVhKSz7MNzFWW5MJ7aVBKXCAX7En296EYdpo43M4a4LaeaHuhhgHToSJF", pubkey.ToString()); ExtPubkey child = hdWallet.GeneratePubkey(CfdNetworkType.Mainnet, "0/44"); Assert.Equal("xpub6AhtoXYBDLLhLk2eqd5jg72MJw53Vet7EYYt3B5MyxU4hMvfhnm9Tf83kwN1aV5j6g9smszDdCg8dt4uguGHivB75PvNxPkdmecoAqqn7Hm", child.ToString()); ExtPubkey child11 = hdWallet.GeneratePubkey(CfdNetworkType.Mainnet, 0); ExtPubkey child12 = child11.DerivePubkey(44); Assert.Equal(child.ToString(), child12.ToString()); ExtPubkey child2 = hdWallet.GeneratePubkey(CfdNetworkType.Mainnet, new uint[] { 0, 44 }); Assert.Equal(child.ToString(), child2.ToString()); child = hdWallet.GeneratePubkey(CfdNetworkType.Mainnet, "0'/44'"); Assert.Equal("xpub6Bc3MkV9ZCh8ipiRMK4pbhBs3JwuFcG4vp4CvJmVQKDVcpsQzizhL2DErc5DHMQuKwBxTg1jLP6PCqriLmLsJzjB2kD9TE9hvqxQ4yLKtcV", child.ToString()); child2 = hdWallet.GeneratePubkey(CfdNetworkType.Mainnet, new[] { 0x80000000, 44 + 0x80000000 }); Assert.Equal(child.ToString(), child2.ToString()); }
public void DerivePubkeyTest() { ExtPrivkey parent = new ExtPrivkey("xprv9zt1onyw8BdEf7SQ6wUVH3bQQdGD9iy9QzXveQQRhX7i5iUN7jZgLbqFEe491LfjozztYa6bJAGZ65GmDCNcbjMdjZcgmdisPJwVjcfcDhV"); ExtPubkey key = parent.DerivePrivkey("0/44'").GetExtPubkey(); uint childNumber = 0x8000002c; Assert.Equal("xpub6JNQxQDHv2vcUQiXjggbaGYZg3nmxX6ojMcJPSs4KfLSLnMBCg8VbJUh5n4to2SwLWXdSXnHBkUQx1fVnJ9oKYjPPYAQehjWRpx6ErQyykX", key.ToString()); Assert.Equal(childNumber, key.GetChildNumber()); Assert.Equal((uint)6, key.GetDepth()); Assert.Equal(CfdNetworkType.Mainnet, key.GetNetworkType()); Assert.True(key.IsValid()); ExtPubkey key1 = parent.DerivePrivkey(0).DerivePrivkey(childNumber).GetExtPubkey(); ExtPubkey key2 = parent.DerivePrivkey(new uint[] { 0, childNumber }).GetExtPubkey(); Assert.Equal(key.ToString(), key1.ToString()); Assert.Equal(key.ToString(), key2.ToString()); Assert.True(key.Equals(key2)); }
public void ExtPubkeyTestnetTest() { ExtPubkey key = new ExtPubkey("tpubDBwZbsX7C1m4tfHxHSFBvvuasqMxzMvSNM5yuAWz6kAfCATAgegvrtGdnxkqfr8wwRZi5d9fJHXqE8EFTSogTXd3xVx3GUFy9Xcg8dufREz"); Assert.Equal("tpubDBwZbsX7C1m4tfHxHSFBvvuasqMxzMvSNM5yuAWz6kAfCATAgegvrtGdnxkqfr8wwRZi5d9fJHXqE8EFTSogTXd3xVx3GUFy9Xcg8dufREz", key.ToString()); Assert.Equal("030061b08c4c80dc04aaa0b44018d2c4bcdb0d9c0992fb4fddf9d2fb096a5164c0", key.GetPubkey().ToHexString()); Assert.Equal("bdc76da475a6fbdc4f3758939ab2096d4ab53b7d66c0eed66fc0f4be242835fc", key.GetChainCode().ToHexString()); Assert.Equal("043587cf", key.GetVersion().ToHexString()); Assert.Equal("f4a831a2", key.GetFingerprint().ToHexString()); Assert.Equal((uint)0, key.GetChildNumber()); Assert.Equal((uint)2, key.GetDepth()); Assert.Equal(CfdNetworkType.Testnet, key.GetNetworkType()); Assert.True(key.IsValid()); }
public void ExtPubkeyParentTest() { ExtPubkey key = new ExtPubkey(CfdNetworkType.Testnet, new Pubkey("02ca30dbb25a2cf96344a04ae2144fb28a17f006c34cfb973b9f21623db27c5cd3"), new Pubkey("03f1e767c0555ce0105b2a76d0f8b19b6d33a147f82f75a05c4c09580c39694fd3"), new ByteData("839fb0d66f1887db167cdc530ab98e871d8b017ebcb198568874b6c98516364e"), 4, 44); Assert.Equal("tpubDF7yNiHQHdfns9Mc3XM7PYcS2dqrPqcit3FLkebvHxS4atZxifANou2KTvpQQQP82ANDCkPc5MPQZ28pjYGgmDXGy1iyzaiX6MTBv8i4cua", key.ToString()); Assert.True(key.IsValid()); key = new ExtPubkey(CfdNetworkType.Testnet, new ByteData("a53a8ff3"), new Pubkey("03f1e767c0555ce0105b2a76d0f8b19b6d33a147f82f75a05c4c09580c39694fd3"), new ByteData("839fb0d66f1887db167cdc530ab98e871d8b017ebcb198568874b6c98516364e"), 4, 44); Assert.Equal("tpubDF7yNiHQHdfns9Mc3XM7PYcS2dqrPqcit3FLkebvHxS4atZxifANou2KTvpQQQP82ANDCkPc5MPQZ28pjYGgmDXGy1iyzaiX6MTBv8i4cua", key.ToString()); Assert.True(key.IsValid()); }
public void ExtPubkeyMainnetTest() { ExtPubkey emptyKey = new ExtPubkey(); Assert.False(emptyKey.IsValid()); ExtPubkey key = new ExtPubkey("xpub661MyMwAqRbcGB88KaFbLGiYAat55APKhtWg4uYMkXAmfuSTbq2QYsn9sKJCj1YqZPafsboef4h4YbXXhNhPwMbkHTpkf3zLhx7HvFw1NDy"); Assert.Equal("xpub661MyMwAqRbcGB88KaFbLGiYAat55APKhtWg4uYMkXAmfuSTbq2QYsn9sKJCj1YqZPafsboef4h4YbXXhNhPwMbkHTpkf3zLhx7HvFw1NDy", key.ToString()); Assert.Equal("02f632717d78bf73e74aa8461e2e782532abae4eed5110241025afb59ebfd3d2fd", key.GetPubkey().ToHexString()); Assert.Equal("a3fa8c983223306de0f0f65e74ebb1e98aba751633bf91d5fb56529aa5c132c1", key.GetChainCode().ToHexString()); Assert.Equal("0488b21e", key.GetVersion().ToHexString()); Assert.Equal("00000000", key.GetFingerprint().ToHexString()); Assert.Equal((uint)0, key.GetChildNumber()); Assert.Equal((uint)0, key.GetDepth()); Assert.Equal(CfdNetworkType.Mainnet, key.GetNetworkType()); Assert.True(key.IsValid()); }