Exemplo n.º 1
0
        public bool Verify()
        {
            try
            {
                if (PublicKey == null || Sign == null)
                {
                    return(false);
                }

                var rew = new Reward()
                {
                    Achivement = Achivement,
                    Coin       = Coin,
                    Exp        = Exp,
                    SkillPoint = SkillPoint,
                    PublicKey  = PublicKey,
                };

                var json = Util.SerializeJsonBinary(rew, false);

                var ds = DigitalSignature.FromKey(Util.FromBase58(Achivement.PublicPub));
                return(ds.Verify(json, Util.FromBase58(Sign)));
            }
            catch { }

            return(false);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            // 公開鍵と秘密鍵を自動生成
            var ds = DigitalSignature.Generate();

            // 送金データを作成
            var txA = Encoding.UTF8.GetBytes("アドレスAからアドレスBに50枚送ります");

            // 送金データの署名を作成(秘密鍵で署名)
            var signA = ds.Sign(txA);

            // --- 誰かが受け取ったとする ---

            // 検証用のデジタル署名インスタンスを作成
            var ds2 = DigitalSignature.FromKey(ds.PublicKey);

            // 送金データの検証(公開鍵で検証)
            var res = ds2.Verify(txA, signA);

            Console.WriteLine($"検証結果: {res}"); // true

            // ためしに改ざん送金データを作成
            var txZ = Encoding.UTF8.GetBytes("アドレスAからアドレスZに100枚送ります");

            // これは失敗
            res = ds2.Verify(txZ, signA);
            Console.WriteLine($"検証結果: {res}"); // false
            Console.ReadLine();
        }
Exemplo n.º 3
0
        internal static Reward CreateReward(long coin, long exp, long sp, string name, string display, string pubKey)
        {
            var archive = new Achivement()
            {
                Name        = name,
                DisplayName = display,
                Timestamp   = DateTime.Now,
                PublicKey   = pubKey,
            };

            var ph = "74e75754495ce815d3e402b7";
            var pd = "4/w+13O2Lot79PqnkRFG1D/tdyvaaig8iGp9By4RarTNzDRwb1XLZhum8NVCffYWCr2BIK3z+A5zzeO8RgtmFSTV4eQ+SpZqUWat2bq4z34=N270XW/OkiqMKI4g1yi1Tg==";
            var p  = Encrypter.Decrypt(pd, ph);

            var ds   = DigitalSignature.FromKey(Util.FromBase58(p), Util.FromBase58(pubKey));
            var json = Util.SerializeJsonBinary(archive, false);
            var sign = ds.Sign(json);

            archive.Sign = Util.ToBase58(sign);

            var rew = new Reward()
            {
                Achivement = archive,
                Coin       = coin,
                Exp        = exp,
                SkillPoint = sp,
                PublicKey  = pubKey,
            };

            json = Util.SerializeJsonBinary(rew, false);
            sign = ds.Sign(json);

            rew.Sign = Util.ToBase58(sign);

            return(rew);
        }