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);
            }
        }
Ejemplo n.º 2
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);
                }
            }
        }
        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);
        }