Esempio n. 1
0
        public IEnumerable <AesEGBuildRequestRecord> CreateTunnelBuildReplyRecords(
            BuildResponseRecord.RequestResponse response)
        {
            var newrecords = new List <AesEGBuildRequestRecord>(
                Records.Select(r => r.Clone())
                );

            var tmp = new TunnelBuildRequestDecrypt(newrecords, Me, Key);

            tmp.ToMeField.Data.Randomize();
            var responserec = new BuildResponseRecord(tmp.ToMeField.Data)
            {
                Reply = response
            };

            responserec.UpdateHash();

            var cipher = new CbcBlockCipher(new AesEngine());

            cipher.Init(true, Decrypted.ReplyKeyBuf.ToParametersWithIV(Decrypted.ReplyIV));

            foreach (var one in newrecords)
            {
                cipher.Reset();
                one.Process(cipher);
            }

            return(newrecords);
        }
Esempio n. 2
0
        public TunnelBuildReplyMessage(BufRef reader)
        {
            var start = new BufRef(reader);

            ResponseRecords = new BuildResponseRecord[8];

            for (int i = 0; i < 8; ++i)
            {
                ResponseRecords[i] = new BuildResponseRecord(reader);
            }
            SetBuffer(start, reader);
        }