if (ParagonIE_Sodium_Core_Util::
strlen($nonce) !== self::CRYPTO_STREAM_XCHACHA20_NONCEBYTES
) { throw new SodiumException('Argument 2 must be CRYPTO_SECRETBOX_XCHACHA20_NONCEBYTES long.'
);
} if (ParagonIE_Sodium_Core_Util::
strlen($key) !== self::CRYPTO_STREAM_XCHACHA20_KEYBYTES
) { throw new SodiumException('Argument 3 must be CRYPTO_SECRETBOX_XCHACHA20_KEYBYTES long.'
);
} if (self::
useNewSodiumAPI() && !
$dontFallback) { return sodium_crypto_stream_xchacha20_xor($message,
$nonce,
$key);
} if (PHP_INT_SIZE === 4
) { return ParagonIE_Sodium_Core32_XChaCha20::
streamXorIc($message,
$nonce,
$key);
} return ParagonIE_Sodium_Core_XChaCha20::
streamXorIc($message,
$nonce,
$key);
} /**
* DANGER! UNAUTHENTICATED ENCRYPTION!
*
* Unless you are following expert advice, do not use this feature.
*
* Algorithm: XChaCha20
*
* This DOES NOT provide ciphertext integrity.
*
* @param string $message Plaintext message
* @param string $nonce Number to be used Once; must be 24 bytes
* @param int $counter
* @param string $key Encryption key
* @return string Encrypted text which is vulnerable to chosen-
* ciphertext attacks unless you implement some
* other mitigation to the ciphertext (i.e.
* Encrypt then MAC)
* @param bool $dontFallback
* @throws SodiumException
* @throws TypeError
* @psalm-suppress MixedArgument
*/