Example #1
0
 internal Ed25519KeyPair(byte[] privateKey)
 {
     this.privateKey = new Org.BouncyCastle.Crypto.Parameters.Ed25519PrivateKeyParameters(privateKey, 0);
     this.publicKey  = new Ed25519PublicKey(this.privateKey.GeneratePublicKey());
     signer          = new Org.BouncyCastle.Crypto.Signers.Ed25519Signer();
     signer.Init(true, this.privateKey);
 }
        public void testTealSign()
        {
            byte[]    data = Convert.FromBase64String("Ux8jntyBJQarjKGF8A==");
            byte[]    seed = Convert.FromBase64String("5Pf7eGMA52qfMT4R4/vYCt7con/7U3yejkdXkrcb26Q=");
            byte[]    prog = Convert.FromBase64String("ASABASI=");
            Address   addr = new Address("6Z3C3LDVWGMX23BMSYMANACQOSINPFIRF77H7N3AWJZYV6OH6GWTJKVMXY");
            Account   acc  = new Account(seed);
            Signature sig1 = acc.TealSign(data, addr);
            Signature sig2 = acc.TealSignFromProgram(data, prog);

            Assert.AreEqual(sig1, sig2);

            byte[]      prefix  = System.Text.Encoding.UTF8.GetBytes("ProgData");
            byte[]      rawAddr = addr.Bytes;
            List <byte> buf     = new List <byte>();

            buf.AddRange(prefix);
            buf.AddRange(rawAddr);
            buf.AddRange(data);
            //ByteBuffer buf = ByteBuffer.wrap(message);
            //buf.put(prefix).put(rawAddr).put(data);
            var  pk = new Ed25519PublicKeyParameters(acc.Address.Bytes, 0);
            bool verified;

            try
            {
                var signer = new Org.BouncyCastle.Crypto.Signers.Ed25519Signer();
                signer.Init(false, pk); //false´ú±íÓÃÓÚVerifySignature
                signer.BlockUpdate(buf.ToArray(), 0, buf.ToArray().Length);
                verified = signer.VerifySignature(sig1.Bytes);
            }
            catch (Exception)
            {
                verified = false;
            }
            Assert.IsTrue(verified);
        }
Example #3
0
 internal Ed25519PublicKey(Org.BouncyCastle.Crypto.Parameters.Ed25519PublicKeyParameters publicKey)
 {
     this.publicKey = publicKey;
     this.signer    = new Org.BouncyCastle.Crypto.Signers.Ed25519Signer();
     this.signer.Init(false, this.publicKey);
 }