public ChaincodeStub(string channelId, string txId, Handler handler, List <ByteString> args, SignedProposal signedProposal)
 {
     ChannelId      = channelId;
     TxId           = txId;
     this.handler   = handler;
     this.args      = args.ToList();
     SignedProposal = signedProposal;
     if (SignedProposal == null || SignedProposal.ProposalBytes.IsEmpty)
     {
         creator      = null;
         TxTimestamp  = null;
         transientMap = new Dictionary <string, ByteString>();
         Binding      = null;
     }
     else
     {
         Proposal      proposal      = Proposal.Parser.ParseFrom(signedProposal.ProposalBytes);
         Header        header        = Header.Parser.ParseFrom(proposal.Header);
         ChannelHeader channelHeader = ChannelHeader.Parser.ParseFrom(header.ChannelHeader);
         ValidateProposalType(channelHeader);
         SignatureHeader          signatureHeader          = SignatureHeader.Parser.ParseFrom(header.SignatureHeader);
         ChaincodeProposalPayload chaincodeProposalPayload = ChaincodeProposalPayload.Parser.ParseFrom(proposal.Payload);
         TxTimestamp  = channelHeader.Timestamp.ToDateTimeOffset();
         creator      = signatureHeader.Creator;
         transientMap = chaincodeProposalPayload.TransientMap.ToDictionary(a => a.Key, a => a.Value);
         Binding      = ComputeBinding(channelHeader, signatureHeader);
     }
 }
        private IEnumerable <ChannelHeader> ParseChannelHeaders()
        {
            int startIndex = Array.IndexOf(_headerLines, Constants.HeaderDelimiters.ChannelHeaderStart);
            int endIndex   = Array.IndexOf(_headerLines, Constants.HeaderDelimiters.ChannelHeaderEnd);

            int startSearchIndex = startIndex;

            while (endIndex > startSearchIndex && startIndex > 0 && endIndex > 0)
            {
                startSearchIndex = endIndex;

                ChannelHeader header = new ChannelHeader();
                for (int i = startIndex; i < endIndex; i++)
                {
                    header.ParseLine <ChannelHeader, ChannelHeaderIdentifications>(_headerLines[i]);
                }

                yield return(header);

                startIndex = Array.IndexOf(_headerLines, Constants.HeaderDelimiters.ChannelHeaderStart, startSearchIndex);
                if (startIndex < 0)
                {
                    break; //no more values found
                }
                endIndex = Array.IndexOf(_headerLines, Constants.HeaderDelimiters.ChannelHeaderEnd, startIndex);
            }
        }
Example #3
0
        /**
         * Private constructor to prevent instantiation.
         */


        // static ICryptoSuite suite = null;

        /*
         * createChannelHeader create chainHeader
         *
         * @param type                     header type. See {@link ChannelHeader.Builder#setType}.
         * @param txID                     transaction ID. See {@link ChannelHeader.Builder#setTxId}.
         * @param channelID                channel ID. See {@link ChannelHeader.Builder#setChannelId}.
         * @param epoch                    the epoch in which this header was generated. See {@link ChannelHeader.Builder#setEpoch}.
         * @param timeStamp                local time when the message was created. See {@link ChannelHeader.Builder#setTimestamp}.
         * @param chaincodeHeaderExtension extension to attach dependent on the header type. See {@link ChannelHeader.Builder#setExtension}.
         * @param tlsCertHash
         * @return a new chain header.
         */
        public static ChannelHeader CreateChannelHeader(HeaderType type, string txID, string channelID, long epoch,
                                                        Timestamp timeStamp, ChaincodeHeaderExtension chaincodeHeaderExtension,
                                                        byte[] tlsCertHash)
        {
            if (isDebugLevel)
            {
                string tlschs = string.Empty;
                if (tlsCertHash != null)
                {
                    tlschs = tlsCertHash.ToHexString();
                }
                logger.Debug($"ChannelHeader: type: {type}, version: 1, Txid: {txID}, channelId: {channelID}, epoch {epoch}, clientTLSCertificate digest: {tlschs}");
            }

            ChannelHeader ret = new ChannelHeader {
                Type = (int)type, Version = 1, TxId = txID, ChannelId = channelID, Timestamp = timeStamp, Epoch = (ulong)epoch
            };

            if (null != chaincodeHeaderExtension)
            {
                ret.Extension = chaincodeHeaderExtension.ToByteString();
            }
            if (tlsCertHash != null)
            {
                ret.TlsCertHash = ByteString.CopyFrom(tlsCertHash);
            }
            return(ret);
        }
        private static void CheckOneChannelData <T>(DATReader parser, ChannelHeader channel, int startIndex, int length)
            where T : IConvertible
        {
            var values            = parser.GetChannelData <T>(channel).ToList();
            var partialReadValues = parser.GetChannelData <T>(channel, (uint)startIndex, (uint)length).ToList();

            Assert.Equal(values, partialReadValues);
            Assert.Equal(channel.MaximumValue, values.Max().ToDouble(NumberFormatInfo.InvariantInfo));
            Assert.Equal(channel.MinimumValue, values.Min().ToDouble(NumberFormatInfo.InvariantInfo));
            Shared.CheckOneChannelDataCommon(channel, values);
        }
        private void ValidateProposalType(ChannelHeader channelHeader)
        {
            switch ((HeaderType)channelHeader.Type)
            {
            case HeaderType.EndorserTransaction:
            case HeaderType.Config:
                return;

            default:
                throw new Exception($"Unexpected transaction type: {((HeaderType) channelHeader.Type).ToString()}");
            }
        }
Example #6
0
        private void callService()
        {
            string ModuleName = "testClient";
            string MethodName = "callService";

            try
            {
                ChannelProxyServiceClient client = new ChannelProxyServiceClient("BasicHttpBinding_IChannelProxyService");
                //ChannelProxyService. search = new CustomerAdvanceSearchRequest();

                //search.cifName = "Hashim";
                //search.cifNo = "9090909";

                //ChannelProxyService.Header header = new Header();
                //header.ChannelID = "0909090";

                //wsCustomerDTO[] _wsCustomerDTO;
                //client.CustomerAdvanceSearch(ref header, out _wsCustomerDTO, search);

                Logger.logDebug(ModuleName, MethodName, "Total [" + iTot.ToString() + "], Success [" + iSucc.ToString() + "], Failed [" + iFailed.ToString() + "]", Logger.LOGLEVEL.INFO);

                string cif           = "";
                string cifStatus     = "";
                string AtmStatus     = "";
                string tpinstatus    = "";
                string accountstatus = "";
                string ATMCard       = "";

                ChannelHeader _header = new ChannelHeader();
                _header.ChannelID  = "1";
                _header.CustomerID = "199138";
                _header.SessionId  = System.Guid.NewGuid().ToString();
                _header.IP         = System.Configuration.ConfigurationManager.AppSettings["IP"];

                Logger.logDebug(ModuleName, MethodName, "calling with session id: " + _header.SessionId, Logger.LOGLEVEL.INFO);

                iTot         += 1;
                lblTotal.Text = iTot.ToString();

                client.ValidateAccountNumber(ref _header, out cif, out cifStatus, out tpinstatus, out AtmStatus, out ATMCard, out accountstatus, System.Configuration.ConfigurationManager.AppSettings["AccountNo"]);
                //MessageBox.Show(_wsCustomerDTO[0].cifTypeBriefDescArab.ToString());

                iSucc          += 1;
                lblSuccess.Text = iSucc.ToString();
                client.Close();
            }
            catch (Exception ex)
            {
                iFailed       += 1;
                lblFailed.Text = iFailed.ToString();
                Logger.logDebug(ModuleName, MethodName, "Exception: " + ex.Message.ToString(), Logger.LOGLEVEL.INFO);
            }
        }
        public IEnumerable <T> GetChannelData <T>(ChannelHeader channel, uint startValueCount, uint valueCount)
            where T :  IConvertible
        {
            if (string.IsNullOrEmpty(_fileInfo.Directory.FullName) || string.IsNullOrEmpty(channel.FilePath))
            {
                yield break;
            }

            using (var fileReader = new FileStream(Path.Combine(_fileInfo.Directory.FullName, channel.FilePath), FileMode.Open, FileAccess.Read))
                using (var binReader = new BinaryReader(fileReader)) {
                    foreach (T value in ReadChannelData <T>(binReader, channel.DataType, channel.DataType.GetBitSize(), (long)channel.PointerFirstValue + startValueCount, valueCount))
                    {
                        yield return(value);
                    }
                }
        }
 private byte[] ComputeBinding(ChannelHeader channelHeader, SignatureHeader signatureHeader)
 {
     using (SHA256Managed digest = new SHA256Managed())
     {
         digest.Initialize();
         digest.TransformBlock(signatureHeader.Nonce.ToByteArray(), 0, signatureHeader.Nonce.Length, null, 0);
         digest.TransformBlock(creator.ToByteArray(), 0, creator.Length, null, 0);
         byte[] epoch = BitConverter.GetBytes(channelHeader.Epoch);
         if (!BitConverter.IsLittleEndian)
         {
             epoch = epoch.Reverse().ToArray();
         }
         digest.TransformFinalBlock(epoch, 0, epoch.Length);
         return(digest.Hash);
     }
 }
Example #9
0
        public static Envelope CreateSeekInfoEnvelope(TransactionContext transactionContext, SeekInfo seekInfo, byte[] tlsCertHash)
        {
            ChannelHeader seekInfoHeader = CreateChannelHeader(HeaderType.DeliverSeekInfo,
                                                               transactionContext.TxID, transactionContext.ChannelID, transactionContext.Epoch,
                                                               transactionContext.FabricTimestamp, null, tlsCertHash);

            SignatureHeader signatureHeader = new SignatureHeader {
                Creator = transactionContext.Identity.ToByteString(), Nonce = transactionContext.Nonce
            };
            Header seekHeader = new Header {
                SignatureHeader = signatureHeader.ToByteString(), ChannelHeader = seekInfoHeader.ToByteString()
            };
            Payload seekPayload = new Payload {
                Header = seekHeader, Data = seekInfo.ToByteString()
            };

            return(new Envelope {
                Signature = transactionContext.SignByteStrings(seekPayload.ToByteString()), Payload = seekPayload.ToByteString()
            });
        }
Example #10
0
        private Proposal CreateFabricProposal(string chID, Protos.Peer.ChaincodeID ccodeID)
        {
            if (null == transientMap)
            {
                transientMap = new Dictionary <string, byte[]>();
            }

            if (IS_DEBUG_LEVEL)
            {
                foreach (KeyValuePair <string, byte[]> tme in transientMap)
                {
                    logger.Debug($"transientMap('{tme.Key.LogString()}', '{Encoding.UTF8.GetString(tme.Value).LogString()}'))");
                }
            }

            ChaincodeHeaderExtension chaincodeHeaderExtension = new ChaincodeHeaderExtension {
                ChaincodeId = ccodeID
            };

            ChannelHeader chainHeader = ProtoUtils.CreateChannelHeader(HeaderType.EndorserTransaction, context.TxID, chID, context.Epoch, context.FabricTimestamp, chaincodeHeaderExtension, null);

            ChaincodeInvocationSpec chaincodeInvocationSpec = CreateChaincodeInvocationSpec(ccodeID, ccType);

            ChaincodeProposalPayload payload = new ChaincodeProposalPayload {
                Input = chaincodeInvocationSpec.ToByteString()
            };

            foreach (KeyValuePair <string, byte[]> pair in transientMap)
            {
                payload.TransientMap.Add(pair.Key, ByteString.CopyFrom(pair.Value));
            }
            Header header = new Header {
                SignatureHeader = ProtoUtils.GetSignatureHeaderAsByteString(context), ChannelHeader = chainHeader.ToByteString()
            };

            return(new Proposal {
                Header = header.ToByteString(), Payload = payload.ToByteString()
            });
        }
Example #11
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        public sealed override void CreateContent()
        {
            CreateDialogContainer();
            CreateChannelContainer();
            CreateMessageContainer();
            CreateTextboxContainer();
            CreateChannelHeaderContainer();
            CreateCurrentTopicContainer();
            CreateNoChannelMessageContainer();
            CreateOnlineUsersHeaderContainer();
            CreateOnlineUsersContainer();

            ChannelHeader     = new ChannelHeader(this);
            ChatTextbox       = new ChatTextbox(this);
            ChatChannelList   = new ChatChannelList(this);
            CurrentTopic      = new CurrentTopic(this);
            OnlineUsersHeader = new OnlineUsersHeader(this);
            OnlineUserFilters = new OnlineUserFilters(this);
            OnlineUserList    = new OnlineUserList(this);

            CreateDividerLines();

            DialogContainer.X = -DialogContainer.Width;
        }
Example #12
0
        public static void SetUpBeforeClass(TestContext context)
        {
            eventHub = new EventHub("test", "grpc://lh:99", null);

            // build a block with 3 transactions, set transaction 1,3 as valid, transaction 2 as invalid

            BlockData     blockDataBuilder     = new BlockData();
            Payload       payloadBuilder       = new Payload();
            ChannelHeader channelHeaderBuilder = new ChannelHeader();

            channelHeaderBuilder.Type = (int)HeaderType.EndorserTransaction;
            Header   headerBuilder   = new Header();
            Envelope envelopeBuilder = new Envelope();

            channelHeaderBuilder.ChannelId = "TESTCHANNEL";

            // transaction 1
            channelHeaderBuilder.TxId   = "TRANSACTION1";
            headerBuilder.ChannelHeader = channelHeaderBuilder.ToByteString();
            payloadBuilder.Header       = new Header(headerBuilder);
            payloadBuilder.Data         = ByteString.CopyFrom("test data".ToBytes());
            envelopeBuilder.Payload     = payloadBuilder.ToByteString();
            blockDataBuilder.Data.Add(envelopeBuilder.ToByteString());

            // transaction 2
            channelHeaderBuilder.TxId   = "TRANSACTION2";
            headerBuilder.ChannelHeader = channelHeaderBuilder.ToByteString();
            payloadBuilder.Header       = new Header(headerBuilder);
            payloadBuilder.Data         = ByteString.CopyFrom("test data".ToBytes());
            envelopeBuilder.Payload     = payloadBuilder.ToByteString();
            blockDataBuilder.Data.Add(envelopeBuilder.ToByteString());

            // transaction 3
            channelHeaderBuilder.TxId   = "TRANSACTION3";
            headerBuilder.ChannelHeader = channelHeaderBuilder.ToByteString();
            payloadBuilder.Header       = new Header(headerBuilder);
            payloadBuilder.Data         = ByteString.CopyFrom("test data".ToBytes());
            envelopeBuilder.Payload     = payloadBuilder.ToByteString();

            blockDataBuilder.Data.Add(envelopeBuilder.ToByteString());
            // blockData with 3 envelopes
            blockData = new BlockData(blockDataBuilder);

            // block header
            BlockHeader blockHeaderBuilder = new BlockHeader();

            blockHeaderBuilder.Number       = 1;
            blockHeaderBuilder.PreviousHash = ByteString.CopyFrom("previous_hash".ToBytes());
            blockHeaderBuilder.DataHash     = ByteString.CopyFrom("data_hash".ToBytes());
            blockHeader = new BlockHeader(blockHeaderBuilder);

            // block metadata
            BlockMetadata blockMetadataBuilder = new BlockMetadata();

            blockMetadataBuilder.Metadata.Add(ByteString.CopyFrom("signatures".ToBytes()));  //BlockMetadataIndex.SIGNATURES_VALUE
            blockMetadataBuilder.Metadata.Add(ByteString.CopyFrom("last_config".ToBytes())); //BlockMetadataIndex.LAST_CONFIG_VALUE,
            // mark 2nd transaction in block as invalid
            byte[] txResultsMap = new byte[] { (byte)TxValidationCode.Valid, (byte)TxValidationCode.InvalidOtherReason, (byte)TxValidationCode.Valid };
            blockMetadataBuilder.Metadata.Add(ByteString.CopyFrom(txResultsMap));        //BlockMetadataIndex.TRANSACTIONS_FILTER_VALUE
            blockMetadataBuilder.Metadata.Add(ByteString.CopyFrom("orderer".ToBytes())); //BlockMetadataIndex.ORDERER_VALUE
            blockMetadata = new BlockMetadata(blockMetadataBuilder);

            Block blockBuilder = new Block();

            blockBuilder.Data     = new BlockData(blockData);
            blockBuilder.Header   = new BlockHeader(blockHeader);
            blockBuilder.Metadata = new BlockMetadata(blockMetadata);
            block = new Block(blockBuilder);

            goodEventBlock = new Event {
                Block = new Block(blockBuilder)
            };

            // block with bad header
            headerBuilder.ChannelHeader = ByteString.CopyFrom("bad channel header".ToBytes());
            payloadBuilder.Header       = new Header(headerBuilder);
            payloadBuilder.Data         = ByteString.CopyFrom("test data".ToBytes());
            envelopeBuilder.Payload     = payloadBuilder.ToByteString();
            blockDataBuilder.Data.Clear();
            blockDataBuilder.Data.Add(envelopeBuilder.ToByteString());
            blockBuilder.Data = new BlockData(blockDataBuilder);
            badBlock          = new Block(blockBuilder);
            badEventBlock     = new Event {
                Block = new Block(badBlock)
            };
        }
 public Message(string _messageFunction, ChannelHeader _header)
 {
     this.MessageFunction = _messageFunction;
     this.header          = new ChannelHeader();
     header = _header;
 }