public GarlicMessage(I2NPHeader header, BufRef reader) { var start = new BufRef(reader); UpdateCachedFields(reader); SetBuffer(start, reader); }
public DeliveryStatusMessage(BufRef reader) { var start = new BufRef(reader); reader.Seek(12); SetBuffer(start, reader); }
public I2PLease(BufRef reader) { TunnelGw = new I2PIdentHash(reader); TunnelId = new I2PTunnelId(reader); EndDate = new I2PDate(reader); }
public DatabaseLookupMessage(I2NPHeader header, BufRef reader) { var start = new BufRef(reader); UpdateCachedFields(reader); SetBuffer(start, reader); }
public TunnelGatewayMessage(BufRef reader) { var start = new BufRef(reader); reader.Seek(6 + reader.PeekFlip16(4)); SetBuffer(start, reader); }
public TunnelDataMessage(BufRef reader) { var start = new BufRef(reader); reader.Seek(4 + DataLength); SetBuffer(start, reader); }
public I2PRouterAddress(BufRef buf) { Cost = buf.Read8(); Expiration = new I2PDate(buf); TransportStyle = new I2PString(buf); Options = new I2PMapping(buf); }
public I2PRouterInfo(BufRef reader, bool verifysig) { var startview = new BufRef(reader); Identity = new I2PRouterIdentity(reader); PublishedDate = new I2PDate(reader); int addrcount = reader.Read8(); var addresses = new List <I2PRouterAddress>(); for (int i = 0; i < addrcount; ++i) { addresses.Add(new I2PRouterAddress(reader)); } Adresses = addresses.ToArray(); reader.Seek(reader.Read8() * 32); // peer_size. Unused. Options = new I2PMapping(reader); var payloadend = new BufRef(reader); Data = new BufLen(startview, 0, reader - startview); Signature = new I2PSignature(reader, Identity.Certificate); if (verifysig) { var versig = VerifySignature(); if (!versig) { throw new InvalidOperationException("I2PRouterInfo signature check failed"); } } }
public DataMessage(BufRef reader) { var start = new BufRef(reader); reader.Seek((int)reader.ReadFlip32()); SetBuffer(start, reader); }
public void Read(BufRef reader) { // magic number and zero byte 6 var magic = reader.ReadBufLen(6); _ = reader.Read8(); var magicstr = magic.ToEncoding(Encoding.UTF8); if (magicstr != SU3_MAGIC_NUMBER) { throw new ArgumentException("Not SU3 data."); } // su3 file format version FileVersion = reader.Read8(); SignatureType = reader.ReadFlip16(); SignatureLength = reader.ReadFlip16(); _ = reader.Read8(); VersionLength = reader.Read8(); _ = reader.Read8(); SignerIdLength = reader.Read8(); ContentLength = reader.ReadFlip64(); _ = reader.Read8(); FileType = (SU3FileTypes)reader.Read8(); _ = reader.Read8(); ContentType = (SU3ContentTypes)reader.Read8(); reader.Seek(12); Version = reader.ReadBufLen(VersionLength); SignerID = reader.ReadBufLen(SignerIdLength) .ToEncoding(Encoding.UTF8); }
public I2PSigningPrivateKey(BufRef reader, I2PCertificate cert) : base(reader, cert) { if (cert.SignatureType == SigningKeyTypes.EdDSA_SHA512_Ed25519) { ExpandedPrivateKey = Chaos.NaCl.Ed25519.ExpandedPrivateKeyFromSeed(ToByteArray()); } }
public I2PString(BufRef buf) { var len = buf.Read8(); Str = System.Text.Encoding.UTF8.GetString(buf.BaseArray, buf.BaseArrayOffset, len); buf.Seek(len); }
public DatabaseStoreMessage(BufRef reader) { var start = new BufRef(reader); UpdateCachedFields(reader); SetBuffer(start, reader); }
public override void Append(BufRef writer) { writer.Write8((byte)(0x80 | (FragmentNumber << 1) | (LastFragment ? 0x01 : 0x00))); writer.Write32(SourceMessage.Header.MessageId); writer.WriteFlip16((ushort)SourceMessageData.Length); writer.Write(SourceMessageData); }
void UpdateCachedFields(BufRef reader) { CachedKey = new I2PIdentHash(reader); CachedFrom = new I2PIdentHash(reader); CachedLookupType = (LookupTypes)reader.Read8(); if (((byte)CachedLookupType & 0x01) != 0) { CachedTunnelId = new I2PTunnelId(reader); } var excludecount = reader.ReadFlip16(); for (int i = 0; i < excludecount; ++i) { CachedExcludeList.Add(new DatabaseSearchReplyMessage(reader)); } if (((byte)CachedLookupType & 0x02) != 0) { CachedReplyKey = new I2PSessionKey(reader); var tagcount = reader.Read8(); CachedTags.Add(new I2PSessionTag(reader)); } }
public I2PDestinationInfo(BufRef reader) { Certificate = new I2PCertificate(reader); PrivateKey = new I2PPrivateKey(reader, Certificate); PublicKey = new I2PPublicKey(reader, Certificate); PrivateSigningKey = new I2PSigningPrivateKey(reader, Certificate); PublicSigningKey = new I2PSigningPublicKey(reader, Certificate); }
public I2NPHeader5(BufRef reader) : base(reader) { MessageRef = I2NPUtil.GetMessage(this, reader); #if DEBUG DebugCheckMessageCreation(MessageRef); #endif }
public I2NPHeader16(BufRef reader, I2PTunnelId fromtunnel) : base(reader, fromtunnel) { MessageRef = I2NPUtil.GetMessage(this, reader); #if DEBUG DebugCheckMessageCreation(MessageRef); #endif }
public GarlicMessage(BufRef reader) { var start = new BufRef(reader); var len = (int)reader.PeekFlip32(0); reader.Seek(len + 4); SetBuffer(start, reader); }
public GarlicClove(BufRef reader) { Delivery = GarlicCloveDelivery.CreateGarlicCloveDelivery(reader); Message = I2NPMessage.ReadHeader16(reader).Message; CloveId = reader.Read32(); Expiration = new I2PDate(reader); reader.Seek(3); // Cert }
public I2PLease(BufRef reader) { TunnelGw = new I2PIdentHash(reader); TunnelId = new I2PTunnelId(reader); EndDate = new I2PDate(reader); //DebugUtils.Log( "EndDate: " + EndDate.ToString() ); }
public PeerTest(BufRef reader) { TestNonce = reader.ReadBufLen(4); AliceIPAddrSize = reader.ReadBufLen(1); AliceIPAddr = reader.ReadBufLen(AliceIPAddrSize[0]); AlicePort = reader.ReadBufLen(2); IntroKey = reader.ReadBufLen(32); }
public void WriteTo(BufRef writer) { writer.Write(TestNonce); writer.Write(AliceIPAddrSize); writer.Write(AliceIPAddr); writer.Write(AlicePort); writer.Write(IntroKey); }
public RelayIntro(BufRef reader) { AliceIpSize = reader.ReadBufLen(1); AliceIpNumber = reader.ReadBufLen(AliceIpSize.Peek8(0)); AlicePort = reader.ReadBufLen(2); ChallengeSize = reader.ReadBufLen(1); Challenge = reader.ReadBufLen(ChallengeSize.Peek8(0)); }
public SessionRequest(BufRef reader, I2PCertificate cert) { Certificate = cert; X = reader.ReadBufLen(Certificate.PublicKeyLength); var ipsize = reader.Read8(); Address = reader.ReadBufLen(ipsize); }
public TunnelDataMessage(I2NPHeader header, BufRef reader) { var start = new BufRef(reader); reader.Seek(4 + DataLength); SetBuffer(start, reader); // The message is encrypted at this stage //UpdateFirstDeliveryInstructionPosition(); }
public SSUHeader(BufRef writer, MessageTypes msgtype) { MAC = writer.ReadBufLen(16); IV = writer.ReadBufLen(16); IV.Randomize(); FlagBuf = writer.ReadBufLen(1); MessageType = msgtype; TimeStampBuf = writer.ReadBufLen(4); TimeStamp = SSUHost.SSUTime(DateTime.UtcNow); }
public RelayResponse(BufRef reader) { CharlieIpSize = reader.ReadBufLen(1); CharlieIpNumber = reader.ReadBufLen(CharlieIpSize.Peek8(0)); CharliePort = reader.ReadBufLen(2); AliceIpSize = reader.ReadBufLen(1); AliceIpNumber = reader.ReadBufLen(AliceIpSize.Peek8(0)); AlicePort = reader.ReadBufLen(2); Nonce = reader.ReadBufLen(4); }
public RequestVariableLeaseSetMessage(BufRef reader) : base(ProtocolMessageType.RequestVarLS) { var leases = reader.ReadFlip16(); for (int i = 0; i < leases; ++i) { Leases.Add(new I2PLease(reader)); } }
public RequestLeaseSetMessage( BufRef reader ) : base(ProtocolMessageType.RequestLS) { SessionId = reader.ReadFlip16(); var leases = reader.Read8(); for ( int i = 0; i < leases; ++i ) { Leases.Add( new I2PLease( reader ) ); } }