public void TestSHA256KnownValue() { StrTest caseval; caseval.input = "skycoin"; caseval.output = "5a42c0643bdb465d90bf673b99c14f5fa02db71513249d904573d2b8b63d353d"; StrTest caseval1; caseval1.input = "hello world"; caseval1.output = "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"; StrTest caseval2; caseval2.input = "hello world asd awd awd awdapodawpokawpod "; caseval2.output = "99d71f95cafe05ea2dddebc35b6083bd5af0e44850c9dc5139b4476c99950be4"; StrTest[] val = { caseval, caseval1, caseval2 }; for (int i = 0; i < val.Length; i++) { var io = val[i]; var b = new GoSlice(); var h = new cipher_SHA256(); var input = new _GoString_(); var output = new _GoString_(); input.p = io.input; b.convertString(input); var err = SKY_cipher_SumSHA256(b, h); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_SHA256_Hex(h, output); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(output.p == io.output, true); } }
public void TestBitcoinWIPRoundTrio() { var p = new cipher_PubKey(); var seckey1 = new cipher_SecKey(); var err = SKY_cipher_GenerateKeyPair(p, seckey1); var wip1 = new _GoString_(); SKY_cipher_BitcoinWalletImportFormatFromSeckey(seckey1, wip1); var seckey2 = new skycoin.cipher_SecKey(); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_SecKeyFromBitcoinWalletImportFormat(wip1.p, seckey2); Assert.AreEqual(err, SKY_OK); var wip2 = new _GoString_(); SKY_cipher_BitcoinWalletImportFormatFromSeckey(seckey2, wip2); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(seckey1.isEqual(seckey2), 1); var seckey1_hex = new _GoString_(); var seckey2_hex = new _GoString_(); err = SKY_cipher_SecKey_Hex(seckey1, seckey1_hex); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_SecKey_Hex(seckey2, seckey2_hex); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(seckey1_hex.p == seckey2_hex.p, true); Assert.AreEqual(wip1.p == wip2.p, true); }
public void TestAddressRoundtrip() { // Tests encode and decode var p = new cipher_PubKey(); var s = new cipher_SecKey(); var err = SKY_cipher_GenerateKeyPair(p, s); Assert.AreEqual(err, SKY_OK); var a = new cipher__Address(); err = SKY_cipher_AddressFromPubKey(p, a); Assert.AreEqual(err, SKY_OK); var b = new GoSlice(); err = SKY_cipher_Address_Bytes(a, b); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_AddressFromBytes(b, a); Assert.AreEqual(err, SKY_OK); var a2 = new cipher__Address(); err = SKY_cipher_AddressFromBytes(b, a2); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(a.isEqual(a2), 1); var str = new _GoString_(); var str2 = new _GoString_(); err = SKY_cipher_Address_String(a, str); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_Address_String(a2, str2); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(str.p == str2.p, true); }
public void TestAddressBulk() { for (int i = 0; i < 1024; i++) { var pub = new cipher_PubKey(); var sec = new cipher_SecKey(); var b = new GoSlice(); var err = SKY_cipher_RandByte(32, b); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_GenerateDeterministicKeyPair(b, pub, sec); Assert.AreEqual(err, SKY_OK); var a = new cipher__Address(); err = SKY_cipher_AddressFromPubKey(pub, a); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_Address_Verify(a, pub); Assert.AreEqual(err, SKY_OK); var s = new _GoString_(); err = SKY_cipher_Address_String(a, s); Assert.AreEqual(err, SKY_OK); var a2 = new cipher__Address(); err = SKY_cipher_DecodeBase58Address(s.p, a2); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(a2.isEqual(a), 1); } }
public void TestDecodeBase58Address() { uint err = 0; var s = new cipher_SecKey(); var p = new cipher_PubKey(); Assert.AreEqual(SKY_cipher_GenerateKeyPair(p, s), SKY_OK, "Failed SKY_cipher_GenerateKeyPair"); err = SKY_cipher_SecKey_Verify(s); Assert.AreEqual(err, SKY_OK, "Failed SKY_cipher_SecKey_Verify "); err = SKY_cipher_PubKey_Verify(p); Assert.AreEqual(err, SKY_OK, "Failed SKY_cipher_PubKey_Verify"); var a = new cipher__Address(); var a1 = new cipher__Address(); var a2 = new cipher__Address(); err = SKY_cipher_AddressFromPubKey(p, a); Assert.AreEqual(err, SKY_OK, "Failed SKY_cipher_AddressFromPubKey"); Assert.AreEqual(err, SKY_OK, "Failed SKY_cipher_AddressFromPubKey"); err = SKY_cipher_Address_Verify(a, p); Assert.AreEqual(err, SKY_OK, " Failed SKY_cipher_Address_Verify"); err = SKY_cipher_DecodeBase58Address("", a1); Assert.AreEqual(err, SKY_ERROR, "Failed SKY_cipher_DecodeBase58Address 1"); err = SKY_cipher_DecodeBase58Address("asa", a1); Assert.AreEqual(err, SKY_ErrAddressInvalidLength, "Failed SKY_cipher_DecodeBase58Address 2"); var addrStr = new _GoString_(); err = SKY_cipher_Address_String(a, addrStr); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_DecodeBase58Address(addrStr.p, a2); Assert.AreEqual(err, SKY_OK, "Failed SKY_cipher_DecodeBase58Address"); Assert.IsTrue(a.isEqual(a2) == 1); var as2 = " " + addrStr.p; err = SKY_cipher_DecodeBase58Address(as2, a1); Assert.AreEqual(err, SKY_ERROR, "Failed SKY_cipher_DecodeBase58Address 31"); as2 = "000" + addrStr.p; err = SKY_cipher_DecodeBase58Address(as2, a1); Assert.AreEqual(err, SKY_ERROR, "Failed SKY_cipher_DecodeBase58Address 3"); as2 = addrStr.p + "000"; err = SKY_cipher_DecodeBase58Address(as2, a1); Assert.AreEqual(err, SKY_ERROR, "Failed SKY_cipher_DecodeBase58Address 30"); }
public void TestPubKeyToAddress() { var p = new cipher_PubKey(); var s = new cipher_SecKey(); var addr = new cipher__Address(); var addr1 = new cipher__Address(); var err = SKY_cipher_GenerateKeyPair(p, s); err = SKY_cipher_AddressFromPubKey(p, addr); err = SKY_cipher_Address_Verify(addr, p); Assert.AreEqual(err, SKY_OK); var addrStr = new _GoString_(); err = SKY_cipher_Address_String(addr, addrStr); Assert.AreEqual(err, SKY_OK); err = SKY_cipher_DecodeBase58Address(addrStr.p, addr1); Assert.AreEqual(err, SKY_OK); }
public void TestScryptChacha20poly1305Encrypt() { for (int i = 1; i < 20; i++) { var name = "N=1<<" + i.ToString() + "(" + (1 << i).ToString() + ")" + ", R=8, p=1, keyLen=32"; var crypto = new encrypt__ScryptChacha20poly1305(); crypto.N = Convert.ToInt64(1 << i); crypto.R = 8; crypto.P = 1; crypto.KeyLen = 32; var encData = new GoSlice(); var plain = new GoSlice(); var passwd = new GoSlice(); var plaintext = new _GoString_(); var passwdText = new _GoString_(); plaintext.p = "plaintext"; plain.convertString(plaintext); passwdText.p = "password"; passwd.convertString(passwdText); var err = SKY_encrypt_ScryptChacha20poly1305_Encrypt(crypto, plain, passwd, encData); Assert.AreEqual(err, SKY_OK, name); Assert.AreEqual(encData.len > 2, true); var str = new _GoString_(); encData.getString(str); Console.WriteLine(name); if (str.n <= 188) { var meta = utils.base64Decode(str.p); var n = new_Gointp(); var r = new_Gointp(); var p = new_Gointp(); var keyLen = new_Gointp(); meta = cutString(meta, "{", "}"); parseJsonMetaData(meta, n, r, p, keyLen); Assert.AreEqual(1 << i, Gointp_value(n), name); Assert.AreEqual(8, Gointp_value(r), name); Assert.AreEqual(1, Gointp_value(p), name); Assert.AreEqual(32, Gointp_value(keyLen), name); } } }
public void TestToString() { FullTestStr1(); for (int i = 0; i < cases.Length; i++) { var tc = cases[i]; var s = new _GoString_(); var err = SKY_droplet_ToString(tc.n, s); if (tc.e == SKY_OK) { Assert.AreEqual(err, SKY_OK); Assert.IsTrue(tc.s == s.p, i.ToString()); } else { Assert.AreEqual(tc.e, err); Assert.IsTrue(null == s.p); } } }
public void TestGenerateDeterministicKeyPairsUsesAllBytes() { // Tests that if a seed >128 bits is used, the generator does not ignore bits >128 var seed = new GoSlice(); var seedText = "property diet little foster provide disagree witness mountain alley weekend kitten general"; var seedStr = new _GoString_(); seedStr.p = seedText; seed.convertString(seedStr); var seckeys = new GoSlice(); var err = SKY_cipher_GenerateDeterministicKeyPairs(seed, 3, seckeys); Assert.AreEqual(err, SKY_OK); var seckeys2 = new GoSlice(); seed.len = 16; err = SKY_cipher_GenerateDeterministicKeyPairs(seed, 3, seckeys2); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(seckeys.isEqual(seckeys2), 0); }
public void TestNewGenesisBlock() { var pubkey = new cipher_PubKey(); var seckey = new cipher_SecKey(); ulong genTime = 1000; ulong genCoins = (ulong)1000e6; var err = SKY_cipher_GenerateKeyPair(pubkey, seckey); Assert.AreEqual(err, SKY_OK); var addr = new cipher__Address(); err = SKY_cipher_AddressFromPubKey(pubkey, addr); Assert.AreEqual(err, SKY_OK); var block = new_Block__HandlePtr(); err = SKY_coin_NewGenesisBlock(addr, genCoins, genTime, block); Assert.AreEqual(err, SKY_OK); var pBlockPP = new_coin__BlockPtr(); err = SKY_coin_GetBlockObject(block, pBlockPP); var pBlock = coin__BlockPtr_value(pBlockPP); Assert.AreEqual(err, SKY_OK); var nullHash = new cipher_SHA256(); var Head = new GoSlice(); err = SKY_coin_BlockHeader_Bytes(pBlock.Head, Head); Assert.AreEqual(err, SKY_OK); var strnullHash = nullHash.getStr(); var strHead = new _GoString_(); Head.getString(strHead); Assert.AreEqual(strnullHash.p, strHead.p); Assert.AreEqual(genTime, pBlock.Head.Time); Assert.AreEqual(0, pBlock.Head.BkSeq); Assert.AreEqual(0, pBlock.Head.Version); Assert.AreEqual(0, pBlock.Head.Fee); }
public void TestSHA256Hex() { var h = new cipher_SHA256(); var b = new GoSlice(); SKY_cipher_RandByte(32, b); var err = SKY_cipher_SHA256_Set(h, b); Assert.AreEqual(err, SKY_OK); var s = new _GoString_(); err = SKY_cipher_SHA256_Hex(h, s); var h2 = new cipher_SHA256(); err = SKY_cipher_SHA256FromHex(s.p, h2); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(h.isEqual(h2), 1); var s1 = new _GoString_(); err = SKY_cipher_SHA256_Hex(h, s1); Assert.AreEqual(err, SKY_OK); Assert.AreEqual(s1.p == s.p, true); }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(_GoString_ obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }
public void TestDistributionAddressArrays() { var addrs = new GoSlice(); var unlocked = new GoSlice(); var locked = new GoSlice(); SKY_params_GetDistributionAddresses(addrs); Assert.AreEqual(addrs.len, 100); SKY_params_GetUnlockedDistributionAddresses(unlocked); Assert.AreEqual(unlocked.len, 25); SKY_params_GetLockedDistributionAddresses(locked); Assert.AreEqual(locked.len, 75); for (int i = 0; i < addrs.len; i++) { var iStr = new _GoString_(); addrs.getAtString(i, iStr); for (int j = 0; j < i + 1; j++) { if (j < addrs.len) { break; } var jStr = new _GoString_(); addrs.getAtString(i + 1, jStr); Assert.AreEqual(iStr.isEqual(jStr), 0); } } for (int i = 0; i < unlocked.len; i++) { var iStr = new _GoString_(); unlocked.getAtString(i, iStr); for (int j = 0; j < i + 1; j++) { if (j < unlocked.len) { break; } var jStr = new _GoString_(); unlocked.getAtString(i + 1, jStr); Assert.AreEqual(iStr.isEqual(jStr), 0); } } for (int i = 0; i < locked.len; i++) { var iStr = new _GoString_(); locked.getAtString(i, iStr); for (int j = 0; j < i + 1; j++) { if (j < locked.len) { break; } var jStr = new _GoString_(); locked.getAtString(i + 1, jStr); Assert.AreEqual(iStr.isEqual(jStr), 0); } } }