public void RewrapMasterKey(IDerivedKey keyEncryptingKey, long keyWrapIterations)
        {
            if (keyEncryptingKey == null)
            {
                throw new ArgumentNullException("keyEncryptingKey");
            }

            V1KeyWrap1HeaderBlock keyHeaderBlock = _headers.FindHeaderBlock <V1KeyWrap1HeaderBlock>();

            keyHeaderBlock.RewrapMasterKey(GetMasterKey(), keyEncryptingKey.DerivedKey, keyWrapIterations);
            _keyEncryptingKey = keyEncryptingKey;
        }
        private SymmetricKey GetMasterKey()
        {
            V1KeyWrap1HeaderBlock keyHeaderBlock     = _headers.FindHeaderBlock <V1KeyWrap1HeaderBlock>();
            VersionHeaderBlock    versionHeaderBlock = _headers.FindHeaderBlock <VersionHeaderBlock>();

            byte[] unwrappedKeyData = keyHeaderBlock.UnwrapMasterKey(_keyEncryptingKey.DerivedKey, versionHeaderBlock.FileVersionMajor);
            if (unwrappedKeyData.Length == 0)
            {
                return(null);
            }
            return(new SymmetricKey(unwrappedKeyData));
        }
        public override object Clone()
        {
            V1KeyWrap1HeaderBlock block = new V1KeyWrap1HeaderBlock((byte[])GetDataBlockBytesReference().Clone());

            return(block);
        }