private IBlockCipherBuilder <TParamWithIV> DoCreateBlockCipherBuilder(bool forEncryption, TParamWithIV parameters)
        {
            if (CryptoServicesRegistrar.IsInApprovedOnlyMode())
            {
                throw new CryptoUnapprovedOperationError("attempt to create unapproved block cipher builder in approved only mode");
            }

            IBufferedCipher cipher = ProviderUtils.CreateBufferedCipher(name, parameters.Algorithm.Mode, parameters, forEncryption, engineProvider);

            cipher.Init(forEncryption, ParametersWithIV.ApplyOptionalIV(null, parameters.GetIV()));
            return(new BlockCipherBuilderImpl <TParamWithIV>(forEncryption, parameters, cipher));
        }