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 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 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 SessionRequest(BufRef reader, I2PCertificate cert) { Certificate = cert; X = reader.ReadBufLen(Certificate.PublicKeyLength); var ipsize = reader.Read8(); Address = reader.ReadBufLen(ipsize); }
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 I2PSessionKey(BufRef buf) { if (buf is null) { throw new ArgumentException("SessionKey must be 32 bytes"); } Key = buf.ReadBufLen(32); if (Key.Length != 32) { throw new ArgumentException("SessionKey must be 32 bytes"); } }
public SessionCreated(BufRef reader, I2PCertificate cert) { Certificate = cert; Y = reader.ReadBufLen(Certificate.PublicKeyLength); var ipsize = reader.Read8(); Address = reader.ReadBufLen(ipsize); Port = reader.ReadBufLen(2); RelayTag = reader.ReadBufLen(4); SignOnTime = reader.ReadBufLen(4); var paddedsignlen = cert.SignatureLength + BufUtils.Get16BytePadding(cert.SignatureLength); SignatureEncrBuf = reader.ReadBufLen(paddedsignlen); Signature = new BufLen(SignatureEncrBuf, 0, cert.SignatureLength); }
public SSUDataMessage(BufRef reader, DataDefragmenter fragments) { var dataflags = (DataMessageFlags)reader.Read8(); #if LOG_ALL_TRANSPORT Logging.LogTransport("SSU DataMessage rececived flag: " + dataflags.ToString()); #endif var explicitacks = (dataflags & DataMessageFlags.ExplicitAcks) != 0; var acksbitfields = (dataflags & DataMessageFlags.BitfieldAcks) != 0; ECN = (dataflags & DataMessageFlags.ECN) != 0; var extdata = (dataflags & DataMessageFlags.ExtendedDataIncluded) != 0; if (explicitacks) { ExplicitAcks = new List <uint>(); var acks = reader.Read8(); for (int i = 0; i < acks; ++i) { ExplicitAcks.Add(reader.Read32()); } } if (acksbitfields) { var bitfields = reader.Read8(); AckBitfields = new List <KeyValuePair <uint, List <byte> > >(bitfields); for (int i = 0; i < bitfields; ++i) { var msgid = reader.Read32(); var bfs = new List <byte>(10); byte bf; while (true) { bf = reader.Read8(); bfs.Add((byte)(bf & 0x7f)); if ((bf & 0x80) == 0) { break; } } AckBitfields.Add(new KeyValuePair <uint, List <byte> >(msgid, bfs)); } } if (extdata) { var datasize = reader.Read8(); ExtData = reader.ReadBufLen(datasize); } var fragcount = reader.Read8(); for (int i = 0; i < fragcount; ++i) { var frag = new DataFragment(reader); var newmessage = fragments.Add(frag); if (newmessage != null) { if (NewMessages == null) { NewMessages = new List <RebuildI2NPMessage>(); } NewMessages.Add(newmessage); } } }
public I2PIdentHash(BufRef buf) : this(buf.ReadBufLen(32)) { }
public I2PSignature(BufRef buf, I2PCertificate cert) { Certificate = cert; Sig = buf.ReadBufLen(cert.SignatureLength); }
public BuildResponseRecord(BufRef buf) { Data = buf.ReadBufLen(Length); }
// Parse received public DataFragment(BufRef reader) { Buf = reader.ReadBufLen(reader.PeekFlip16(5) + 7); Data = new BufLen(Buf, 7); }
public I2PSessionTag(BufRef buf) { Value = buf.ReadBufLen(TagLength); }
public EGGarlic(BufRef reader) { Data = reader.ReadBufLen((int)reader.PeekFlip32(0) + 4); }
protected I2NPHeader(BufRef reader, I2PTunnelId tunnel) { Buf = reader.ReadBufLen(Length); FromTunnel = tunnel; }
protected I2NPHeader(BufRef reader) { Buf = reader.ReadBufLen(Length); }
public I2PSigningPublicKey(BufRef buf, I2PCertificate cert) : base(cert) { Key = buf.ReadBufLen(KeySizeBytes); }
public I2PCertificate(BufRef buf) { Data = new BufLen(buf, 0, 3); Data = buf.ReadBufLen(CertLength); }
public BuildRequestRecord(BufRef buf) { Data = buf.ReadBufLen(Length); ReducedHash = CreateReducedHash(); }
public I2PKeyType(BufRef buf, I2PCertificate cert) { Certificate = cert; Key = buf.ReadBufLen(KeySizeBytes); }
public I2PKeysAndCert(BufRef reader) { var cert = new I2PCertificate(new BufRef(reader, 256 + 128)); Data = reader.ReadBufLen(RecordSize(cert)); }
public I2PIdentHash(BufRef buf) { Hash = buf.ReadBufLen(32); CachedHash = Hash.GetHashCode(); }
public BuildRequestRecord(BufRef buf) { Data = buf.ReadBufLen(Length); }
public I2PSessionKey(BufRef buf) { Key = buf.ReadBufLen(32); }