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); }
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); }