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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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);
        }
Пример #7
0
        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);
                }
            }
        }
Пример #8
0
 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);
        }
Пример #10
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);
        }
Пример #12
0
 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);
                }
            }
        }