public V1DocumentHeaders(Passphrase passphrase, long keyWrapIterations)
            : this(passphrase)
        {
            _headers.HeaderBlocks.Add(new PreambleHeaderBlock());
            _headers.HeaderBlocks.Add(new VersionHeaderBlock(_version));
            _headers.HeaderBlocks.Add(new V1KeyWrap1HeaderBlock(_keyEncryptingKey.DerivedKey, keyWrapIterations));

            ICrypto headerCrypto = Resolve.CryptoFactory.Legacy.CreateCrypto(HeadersSubkey.Key, null, 0);
            _headers.HeaderBlocks.Add(new V1EncryptionInfoEncryptedHeaderBlock(headerCrypto));
            _headers.HeaderBlocks.Add(new V1CompressionEncryptedHeaderBlock(headerCrypto));
            _headers.HeaderBlocks.Add(new FileInfoEncryptedHeaderBlock(headerCrypto));
            _headers.HeaderBlocks.Add(new V1UnicodeFileNameInfoEncryptedHeaderBlock(headerCrypto));
            _headers.HeaderBlocks.Add(new V1FileNameInfoEncryptedHeaderBlock(headerCrypto));
            _headers.HeaderBlocks.Add(new DataHeaderBlock());

            SetMasterKeyForEncryptedHeaderBlocks(_headers.HeaderBlocks);

            V1EncryptionInfoEncryptedHeaderBlock encryptionInfoHeaderBlock = _headers.FindHeaderBlock <V1EncryptionInfoEncryptedHeaderBlock>();
            encryptionInfoHeaderBlock.IV = new SymmetricIV(128);
            encryptionInfoHeaderBlock.PlaintextLength = 0;

            FileName = String.Empty;
        }
        public override object Clone()
        {
            V1EncryptionInfoEncryptedHeaderBlock block = new V1EncryptionInfoEncryptedHeaderBlock((byte[])GetDataBlockBytesReference().Clone());

            return(CopyTo(block));
        }