/// <summary> /// Encrypts the provided bytes(plain-text). /// </summary> /// <param name="data">Bytes to encrypt.</param> public override void Encrypt(ref byte[] data) { if (data == null) { return; } switch (_cryptoState) { case CryptoState.InitialKey: case CryptoState.BlakeNonce: data = PublicKeyBox.Box(data, _sharedKey, _keyPair.PrivateKey, _blake2bNonce); break; case CryptoState.SecoundKey: IncrementNonce(_encryptNonce); data = SecretBox.Box(data, _sharedKey, _encryptNonce); break; default: throw new InvalidOperationException("Cannot encrypt in current state."); } }