Exemplo n.º 1
0
 public static byte[] GetHashData(this ISignable signable)
 {
     using (MemoryStream ms = new MemoryStream())
         using (BinaryWriter writer = new BinaryWriter(ms))
         {
             signable.SerializeUnsigned(writer);
             writer.Flush();
             return(ms.ToArray());
         }
 }
Exemplo n.º 2
0
 /// <summary>
 /// 获取需要签名的散列值
 /// </summary>
 /// <param name="signable">要签名的数据</param>
 /// <returns>返回需要签名的散列值</returns>
 public static byte[] GetHashForSigning(this ISignable signable)
 {
     using (MemoryStream ms = new MemoryStream())
         using (BinaryWriter writer = new BinaryWriter(ms, Encoding.UTF8))
         {
             signable.SerializeUnsigned(writer);
             writer.Flush();
             return(ms.ToArray().Sha256());
         }
 }
Exemplo n.º 3
0
        /// <summary>
        /// 把签名上下文转为json对象
        /// </summary>
        /// <returns>返回json对象</returns>
        public JObject ToJson()
        {
            JObject json = new JObject();

            json["type"] = Signable.GetType().FullName;
            using (MemoryStream ms = new MemoryStream())
                using (BinaryWriter writer = new BinaryWriter(ms, Encoding.UTF8))
                {
                    Signable.SerializeUnsigned(writer);
                    writer.Flush();
                    json["hex"] = ms.ToArray().ToHexString();
                }
            JArray scripts = new JArray();

            for (int i = 0; i < signatures.Length; i++)
            {
                if (signatures[i] == null)
                {
                    scripts.Add(null);
                }
                else
                {
                    scripts.Add(new JObject());
                    scripts[i]["redeem_script"] = redeemScripts[i].ToHexString();
                    JArray sigs = new JArray();
                    foreach (var pair in signatures[i])
                    {
                        JObject signature = new JObject();
                        signature["pubkey"]    = pair.Key.EncodePoint(true).ToHexString();
                        signature["signature"] = pair.Value.ToHexString();
                        sigs.Add(signature);
                    }
                    scripts[i]["signatures"] = sigs;
                    scripts[i]["completed"]  = completed[i];
                }
            }
            json["scripts"] = scripts;
            return(json);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 把签名上下文转为json对象
        /// </summary>
        /// <returns>返回json对象</returns>
        public JObject ToJson()
        {
            JObject json = new JObject();

            json["type"] = Signable.GetType().FullName;
            using (MemoryStream ms = new MemoryStream())
                using (BinaryWriter writer = new BinaryWriter(ms, Encoding.UTF8))
                {
                    Signable.SerializeUnsigned(writer);
                    writer.Flush();
                    json["hex"] = ms.ToArray().ToHexString();
                }
            JArray scripts = new JArray();

            for (int i = 0; i < redeemScripts.Length; i++)
            {
                if (redeemScripts[i] == null)
                {
                    scripts.Add(null);
                }
                else
                {
                    scripts.Add(new JObject());
                    scripts[i]["redeem_script"] = redeemScripts[i].ToHexString();
                    JArray ps = new JArray();
                    foreach (byte[] parameter in parameters[i])
                    {
                        ps.Add(parameter?.ToHexString());
                    }
                    scripts[i]["parameters"] = ps;
                    scripts[i]["temp"]       = temp[i];
                }
            }
            json["scripts"] = scripts;
            return(json);
        }