private byte[] _currentIv; // CNG mutates this with the updated IV for the next stage on each Encrypt/Decrypt call. // The base IV holds a copy of the original IV for Reset(), until it is cleared by Dispose(). public CngCipher(SafeAlgorithmHandle algorithm, CipherMode cipherMode, int blockSizeInBytes, byte[] key, byte[] iv, bool encrypting) : base(cipherMode.GetCipherIv(iv), blockSizeInBytes) { Debug.Assert(algorithm != null); _encrypting = encrypting; if (IV != null) { _currentIv = new byte[IV.Length]; } _hKey = algorithm.BCryptImportKey(key); Reset(); }
private byte[] _currentIv; // CNG mutates this with the updated IV for the next stage on each Encrypt/Decrypt call. // The base IV holds a copy of the original IV for Reset(), until it is cleared by Dispose(). public TripleDesCngCipher(CipherMode cipherMode, int blockSizeInBytes, byte[] key, byte[] iv, bool encrypting) : base(cipherMode.GetCipherIv(iv), blockSizeInBytes) { _encrypting = encrypting; if (IV != null) { _currentIv = new byte[IV.Length]; } SafeAlgorithmHandle hAlg = GetCipherAlgorithm(cipherMode); _hKey = hAlg.BCryptImportKey(key); Reset(); }
protected AesCngCryptoTransform(CipherMode cipherMode, PaddingMode paddingMode, byte[] key, byte[] iv, int blockSize) : base(cipherMode, paddingMode, blockSize) { byte[] cipherIv = GetCipherIv(iv); if (cipherIv != null) { _iv = cipherIv.CloneByteArray(); _currentIv = new byte[cipherIv.Length]; } SafeAlgorithmHandle hAlg = GetCipherAlgorithm(cipherMode); _hKey = hAlg.BCryptImportKey(key); Reset(); }
private byte[] _currentIv; // CNG mutates this with the updated IV for the next stage on each Encrypt/Decrypt call. // The base IV holds a copy of the original IV for Reset(), until it is cleared by Dispose(). public BasicSymmetricCipherBCrypt(SafeAlgorithmHandle algorithm, CipherMode cipherMode, int blockSizeInBytes, byte[] key, bool ownsParentHandle, byte[] iv, bool encrypting) : base(cipherMode.GetCipherIv(iv), blockSizeInBytes) { Debug.Assert(algorithm != null); _encrypting = encrypting; if (IV != null) { _currentIv = new byte[IV.Length]; } _hKey = algorithm.BCryptImportKey(key); if (ownsParentHandle) { _hKey.SetParentHandle(algorithm); } Reset(); }
private byte[] _currentIv; // CNG mutates this with the updated IV for the next stage on each Encrypt/Decrypt call. // The base IV holds a copy of the original IV for Reset(), until it is cleared by Dispose(). public BasicSymmetricCipherBCrypt(SafeAlgorithmHandle algorithm, CipherMode cipherMode, int blockSizeInBytes, byte[] key, int effectiveKeyLength, byte[] iv, bool encrypting) : base(cipherMode.GetCipherIv(iv), blockSizeInBytes) { Debug.Assert(algorithm != null); _encrypting = encrypting; if (IV != null) { _currentIv = new byte[IV.Length]; } _hKey = algorithm.BCryptImportKey(key); if (effectiveKeyLength != 0) { Cng.SetEffectiveKeyLength(_hKey, effectiveKeyLength); } Reset(); }
private void ImportKey(ReadOnlySpan <byte> key) { _keyHandle = s_aesCcm.BCryptImportKey(key); }