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); } }
/** * 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()}"); } }
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); } }
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() }); }
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() }); }
/// <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; }
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; }