public void WriteEndWithHmac(V2HmacCalculator hmacCalculator, Stream hmacStream, long plaintextLength, long compressedPlaintextLength)
        {
            if (hmacCalculator == null)
            {
                throw new ArgumentNullException("hmacCalculator");
            }
            if (hmacStream == null)
            {
                throw new ArgumentNullException("hmacStream");
            }

            WriteGeneralHeaders(hmacStream);

            V2PlaintextLengthsEncryptedHeaderBlock lengths = new V2PlaintextLengthsEncryptedHeaderBlock(CreateKeyStreamCrypto(LENGTHSINFO_KEYSTREAM_INDEX));

            lengths.PlaintextLength           = plaintextLength;
            lengths.CompressedPlaintextLength = compressedPlaintextLength;
            lengths.Write(hmacStream);
            hmacStream.Flush();

            V2HmacHeaderBlock hmac = new V2HmacHeaderBlock();

            hmac.Hmac = hmacCalculator.Hmac;
            hmac.Write(hmacStream);
        }
        public override object Clone()
        {
            V2HmacHeaderBlock block = new V2HmacHeaderBlock((byte[])GetDataBlockBytesReference().Clone());

            return(block);
        }