コード例 #1
0
        /// <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.");
            }
        }