Example #1
0
        public void Write(List <byte> dest)
        {
            Destination.Write(dest);
            Info.PublicKey.Write(dest);
            Info.PublicSigningKey.Write(dest);

            var cnt = (byte)Leases.Count;

            if (cnt > 16)
            {
                throw new OverflowException("Max 16 leases per I2PLeaseSet");
            }

            var signfields = new List <BufLen>();

            signfields.Add(new BufLen(Destination.ToByteArray()));
            signfields.Add(Info.PublicKey.Key);
            signfields.Add(Info.PublicSigningKey.Key);
            signfields.Add((BufLen)cnt);

            lock ( Leases )
            {
                dest.Add((byte)Leases.Count);

                foreach (var lease in Leases)
                {
                    var buf = lease.ToByteArray();
                    dest.AddRange(buf);
                    signfields.Add(new BufLen(buf));
                }
            }

            dest.AddRange(I2PSignature.DoSign(Info.PrivateSigningKey, signfields.ToArray()));
        }
Example #2
0
        public I2PRouterInfo(
            I2PRouterIdentity identity,
            I2PDate publisheddate,
            I2PRouterAddress[] adresses,
            I2PMapping options,
            I2PSigningPrivateKey privskey)
        {
            Identity      = identity;
            PublishedDate = publisheddate;
            Adresses      = adresses;
            Options       = options;

            var dest = new List <byte>();

            Identity.Write(dest);
            PublishedDate.Write(dest);
            dest.Add((byte)Adresses.Length);
            foreach (var addr in Adresses)
            {
                addr.Write(dest);
            }
            dest.Add(0);   // Always zero
            Options.Write(dest);
            Data = new BufLen(dest.ToArray());

            Signature = new I2PSignature(new BufRefLen(I2PSignature.DoSign(privskey, Data)), privskey.Certificate);
        }
Example #3
0
        public void Write(BufRefStream dest)
        {
            var dest2 = new BufRefStream();

            Destination.Write(dest2);
            Map.Write(dest2);
            Date.Write(dest2);
            var dest2data = dest2.ToArray();

            var sig = new I2PSignature(new BufRefLen(I2PSignature.DoSign(PrivateSigningKey, new BufLen(dest2data))), PrivateSigningKey.Certificate);

            dest.Write(dest2data);
            sig.Write(dest);
        }