public static Gtx Decode(byte[] encodedMessage)
        {
            var gtx            = new Gtx();
            var gtxTransaction = new ASN1.AsnReader(encodedMessage);
            var gtxValue       = GTXValue.Decode(gtxTransaction);
            var gtxPayload     = gtxValue.Array[0];

            gtx.BlockchainID = PostchainUtil.ByteArrayToString(gtxPayload.Array[0].ByteArray);

            foreach (var opArr in gtxPayload.Array[1].Array)
            {
                var op = opArr.ToObjectArray();

                var opName = opArr.Array[0].String;
                var opArgs = opArr.Array[1].ToObjectArray();
                gtx.AddOperationToGtx(opName, opArgs);
            }

            foreach (var signer in gtxPayload.Array[2].Array)
            {
                gtx.AddSignerToGtx(signer.ByteArray);
            }

            foreach (var sig in gtxValue.Array[1].Array)
            {
                gtx.Signatures.Add(sig.ByteArray);
            }

            return(gtx);
        }
        private async void Send()
        {
            var gtxBytes = this.GtxObject.Serialize();

            await this.RestClient.PostTransaction(gtxBytes);

            this.GtxObject = null;
        }
        public byte[] Encode()
        {
            var gtxBody = new List <object>();

            gtxBody.Add(GetGtvTxBody());
            gtxBody.Add(this.Signatures.ToArray());

            return(Gtx.ArgToGTXValue(gtxBody.ToArray()).Encode());
        }
        public Operation(string opName, object[] args) : this()
        {
            this.OpName   = opName;
            this._rawArgs = args;

            foreach (var opArg in args)
            {
                Args.Add(Gtx.ArgToGTXValue(opArg));
            }
        }
        public GTXValue ToGtxValue()
        {
            var gtxValue = new GTXValue();

            gtxValue.Choice = GTXValueChoice.Array;
            gtxValue.Array  = new List <GTXValue>()
            {
                Gtx.ArgToGTXValue(this.OpName)
            };
            gtxValue.Array.AddRange(this.Args);

            return(gtxValue);
        }
Beispiel #6
0
        ///<summary>
        ///Create a new Transaction.
        ///</summary>
        ///<param name = "signers">Array of signers (can be null).</param>
        ///<returns>New Transaction object.</returns>
        public Transaction NewTransaction(byte[][] signers)
        {
            Gtx newGtx = new Gtx(RestApiClient.BlockchainRID);

            foreach (byte[] signer in signers)
            {
                newGtx.AddSignerToGtx(signer);
            }

            Transaction req = new Transaction(newGtx, this.RestApiClient);

            return(req);
        }
 public static Gtx DeserializeGTX(byte[] encodedMessage)
 {
     return(Gtx.Decode(encodedMessage));
 }
Beispiel #8
0
        public byte[] CalculateLeafHash(object value)
        {
            var gtxValue = Gtx.ArgToGTXValue(value);

            return(CalculateHashOfValueInternal(gtxValue));
        }
 internal Transaction(Gtx gtx, RESTClient restClient)
 {
     this.GtxObject  = gtx;
     this.RestClient = restClient;
 }