public override void Serialize(BEWriter writer) { var messageWriter = new BEWriter(); base.Serialize(messageWriter); var message = messageWriter.ToArray(); var initVectorSource = message.Take(16).ToArray(); var initVector = Crypto.CreateDerivedInitVector(initVectorSource); var fragmentWriter = new BEWriter(); fragmentWriter.WriteWithPaddingAlignment( Fragment, payloadSizeAlignment); var encryptedFragment = Crypto.EncryptWithoutPadding(fragmentWriter.ToArray(), initVector); Header.Serialize(writer); writer.Write(encryptedFragment); var signature = Crypto.CalculateMessageSignature(writer.ToArray()); writer.Write(signature); }
public byte[] Encrypt(byte[] data) { var writer = new BEWriter(); writer.WriteWithPaddingAlignment(data, 16); var padded = writer.ToArray(); var output = new byte[padded.Length]; for (var i = 0; i < padded.Length; i += 16) { _clientCipher.ProcessBlock(padded, i, output, i); } return(output); }