'true'], default: 'bool')] function sodium_crypto_generichash_update(string &$state, string $message): bool {} /** * Get the final hash * BLAKE2b * @link https://www.php.net/manual/en/function.sodium-crypto-generichash-final.php * @param string &$state * @param int $length * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_generichash_final( string &$state, int $length = 32 ): string {} /** * Secure password-based key derivation function * Argon2i * @link https://www.php.net/manual/en/function.sodium-crypto-pwhash.php * @param int $length * @param string $password * @param string $salt * @param int $opslimit * @param int $memlimit * @param int $algo [optional] * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_pwhash(int $length, string $password, string $salt, int $opslimit, int $memlimit, int $algo = SODIUM_CRYPTO_PWHASH_ALG_DEFAULT): string {} /** * Get a formatted password hash (for storage) * Argon2i * @link https://www.php.net/manual/en/function.sodium-crypto-pwhash-str.php * @param string $password * @param int $opslimit * @param int $memlimit * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_pwhash_str(string $password, int $opslimit, int $memlimit): string {} /** * Verify a password against a hash * Argon2i * @link https://www.php.net/manual/en/function.sodium-crypto-pwhash-str-verify.php * @param string $hash * @param string $password * @return bool * @throws SodiumException * @since 7.2 */ function sodium_crypto_pwhash_str_verify(string $hash, string $password): bool {} /** * Secure password-based key derivation function * Scrypt * @link https://www.php.net/manual/en/function.sodium-crypto-pwhash-scryptsalsa208sha256.php * @param int $length * @param string $password * @param string $salt * @param int $opslimit * @param int $memlimit * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_pwhash_scryptsalsa208sha256( int $length, string $password, string $salt, int $opslimit, int $memlimit, #[PhpStormStubsElementAvailable(from: '7.2', to: '7.4')] $alg = null ): string {} /** * Get a formatted password hash (for storage) * Scrypt * @link https://www.php.net/manual/en/function.sodium-crypto-pwhash-scryptsalsa208sha256-str.php * @param string $password * @param int $opslimit * @param int $memlimit * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_pwhash_scryptsalsa208sha256_str(string $password, int $opslimit, int $memlimit): string {} /** * Verify a password against a hash * Scrypt * @link https://www.php.net/manual/en/function.sodium-crypto-pwhash-scryptsalsa208sha256-str-verify * @param string $hash * @param string $password * @return bool * @since 7.2 */ function sodium_crypto_pwhash_scryptsalsa208sha256_str_verify(string $hash, string $password): bool {} /** * Elliptic Curve Diffie Hellman over Curve25519 * X25519 * @link https://www.php.net/manual/en/function.sodium-crypto-scalarmult.php * @param string $n * @param string $p * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_scalarmult(string $n, string $p): string {} /** * Authenticated secret-key encryption (encrypt) * Xsals20 + Poly1305 * @link https://www.php.net/manual/en/function.sodium-crypto-secretbox.php * @param string $message * @param string $nonce * @param string $key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_secretbox(string $message, string $nonce, string $key): string {} /** * Authenticated secret-key encryption (decrypt) * Xsals20 + Poly1305 * @link https://www.php.net/manual/en/function.sodium-crypto-secretbox-open.php * @param string $ciphertext * @param string $nonce * @param string $key * @return string|false * @throws SodiumException * @since 7.2 */ function sodium_crypto_secretbox_open(string $ciphertext, string $nonce, string $key): string|false {} /** * A short keyed hash suitable for data structures * SipHash-2-4 * @link https://www.php.net/manual/en/function.sodium-crypto-shorthash.php * @param string $message * @param string $key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_shorthash(string $message, string $key): string {} /** * Digital Signature * Ed25519 * @link https://www.php.net/manual/en/function.sodium-crypto-sign.php * @param string $message * @param string $secret_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign(string $message, string $secret_key): string {} /** * Digital Signature (detached) * Ed25519 * @link https://www.php.net/manual/en/function.sodium-crypto-sign-detached.php * @param string $message * @param string $secret_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_detached(string $message, string $secret_key): string {} /** * Convert an Ed25519 public key to an X25519 public key * @link https://www.php.net/manual/en/function.sodium-crypto-sign-ed25519-pk-to-curve25519.php * @param string $public_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_ed25519_pk_to_curve25519(string $public_key): string {} /** * Convert an Ed25519 secret key to an X25519 secret key * @link https://www.php.net/manual/en/function.sodium-crypto-sign-ed25519-sk-to-curve25519.php * @param string $secret_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_ed25519_sk_to_curve25519(string $secret_key): string {} /** * Generate an Ed25519 keypair for use with the crypto_sign API * @link https://www.php.net/manual/en/function.sodium-crypto-sign-keypair.php * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_keypair(): string {} /** * Create an Ed25519 keypair from an Ed25519 secret key + Ed25519 public key * @link https://www.php.net/manual/en/function.sodium-crypto-sign-keypair-from-secretkey-and-publickey.php * @param string $secret_key * @param string $public_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_keypair_from_secretkey_and_publickey( string $secret_key, string $public_key ): string {} /** * Verify a signed message and return the plaintext * @link https://www.php.net/manual/en/function.sodium-crypto-sign-open.php * @param string $signed_message * @param string $public_key * @return string|false * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_open(string $signed_message, string $public_key): string|false {} /** * Get the public key from an Ed25519 keypair * @link https://www.php.net/manual/en/function.sodium-crypto-sign-publickey.php * @param string $key_pair * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_publickey(string $key_pair): string {} /** * Get the secret key from an Ed25519 keypair * @link https://www.php.net/manual/en/function.sodium-crypto-sign-secretkey.php * @param string $key_pair * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_secretkey(string $key_pair): string {} /** * Derive an Ed25519 public key from an Ed25519 secret key * @link https://www.php.net/manual/en/function.sodium-crypto-sign-publickey-from-secretkey.php * @param string $secret_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_publickey_from_secretkey(string $secret_key): string {} /** * Derive an Ed25519 keypair for use with the crypto_sign API from a seed * @link https://www.php.net/manual/en/function.sodium-crypto-sign-seed-keypair.php * @param string $seed * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_seed_keypair(string $seed): string {} /** * Verify a detached signature * @link https://www.php.net/manual/en/function.sodium-crypto-sign-verify-detached.php * @param string $signature * @param string $message * @param string $public_key * @return bool * @throws SodiumException * @since 7.2 */ function sodium_crypto_sign_verify_detached(string $signature, string $message, string $public_key): bool {} /** * Create a keystream from a key and nonce * Xsalsa20 * @link https://www.php.net/manual/en/function.sodium-crypto-stream.php * @param int $length * @param string $nonce * @param string $key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_stream( int $length, string $nonce, string $key ): string {} /** * Encrypt a message using a stream cipher * Xsalsa20 * @link https://www.php.net/manual/en/function.sodium-crypto-stream-xor.php * @param string $message * @param string $nonce * @param string $key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_stream_xor( string $message, string $nonce, string $key ): string {} /** * Generate a string of random bytes * /dev/urandom * * @param int $length * @return string|false * @since 7.2 */ function sodium_randombytes_buf(int $length): string {} /** * Generate a 16-bit integer * /dev/urandom * * @return int * @since 7.2 */ function sodium_randombytes_random16(): int {} /** * Generate an unbiased random integer between 0 and a specified value * /dev/urandom * * @param int $upperBoundNonInclusive * @return int * @since 7.2 */ function sodium_randombytes_uniform(int $upperBoundNonInclusive): int {} /** * Convert to hex without side-chanels * @link https://www.php.net/manual/en/function.sodium-bin2hex.php * @param string $string * @return string * @throws SodiumException * @since 7.2 */ function sodium_bin2hex(string $string): string {} /** * Compare two strings in constant time * @link https://www.php.net/manual/en/function.sodium-compare.php * @param string $string1 * @param string $string2 * @return int * @throws SodiumException * @since 7.2 */ function sodium_compare(string $string1, string $string2): int {} /** * Convert from hex without side-chanels * @link https://www.php.net/manual/en/function.sodium-hex2bin.php * @param string $string * @param string $ignore * @return string * @throws SodiumException * @since 7.2 */ function sodium_hex2bin(string $string, string $ignore = ''): string {} /** * Increment a string in little-endian * @link https://www.php.net/manual/en/function.sodium-increment.php * @param string &$string * @return void * @throws SodiumException * @since 7.2 */ function sodium_increment(string &$string): void {} /** * Add the right operand to the left * @link https://www.php.net/manual/en/function.sodium-add.php * @param string &$string1 * @param string $string2 * @throws SodiumException * @since 7.2 */ function sodium_add(string &$string1, string $string2): void {} /** * Get the true major version of libsodium * @return int * @since 7.2 */ function sodium_library_version_major(): int {} /** * Get the true minor version of libsodium * @return int * @since 7.2 */ function sodium_library_version_minor(): int {} /** * Compare two strings in constant time * @link https://www.php.net/manual/en/function.sodium-memcmp.php * @param string $string1 * @param string $string2 * @return int * @throws SodiumException * @since 7.2 */ function sodium_memcmp(string $string1, string $string2): int {} /** * Wipe a buffer * @link https://www.php.net/manual/en/function.sodium-memzero.php * @param string &$string * @throws SodiumException * @since 7.2 */ function sodium_memzero(string &$string): void {} /** * Get the version string * * @return string * @since 7.2 */ function sodium_version_string(): string {} /** * Scalar multiplication of the base point and your key * @link https://www.php.net/manual/en/function.sodium-crypto-scalarmult-base * @param string $secret_key * @return string * @throws SodiumException * @since 7.2 */ function sodium_crypto_scalarmult_base( string $secret_key, #[PhpStormStubsElementAvailable(from: '7.2', to: '7.4')] $string_2 ): string {} /** * Creates a random key * * It is equivalent to calling random_bytes() but improves code clarity and can * prevent misuse by ensuring that the provided key length is always be correct. * * @since 7.2 * @see https://secure.php.net/manual/en/function.sodium-crypto-secretbox-keygen.php */ function sodium_crypto_secretbox_keygen(): string {} /** * Creates a random key * * It is equivalent to calling random_bytes() but improves code clarity and can * prevent misuse by ensuring that the provided key length is always be correct. * * @since 7.2 * @see https://secure.php.net/manual/en/function.sodium-crypto-aead-aes256gcm-keygen.php */ function sodium_crypto_aead_aes256gcm_keygen(): string {} /** * Creates a random key * It is equivalent to calling random_bytes() but improves code clarity and can * prevent misuse by ensuring that the provided key length is always be correct. * * @since 7.2 * @see https://secure.php.net/manual/en/function.sodium-crypto-aead-chacha20poly1305-keygen.php */ function sodium_crypto_aead_chacha20poly1305_keygen(): string {} /** * Creates a random key * * It is equivalent to calling random_bytes() but improves code clarity and can * prevent misuse by ensuring that the provided key length is always be correct. * * @since 7.2 * @see https://secure.php.net/manual/en/function.sodium-crypto-aead-chacha20poly1305-ietf-keygen.php */ function sodium_crypto_aead_chacha20poly1305_ietf_keygen(): string {} /** * @param string $ciphertext * @param string $additional_data * @param string $nonce * @param string $key * @return string|false * @throws SodiumException * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-aead-xchacha20poly1305-ietf-decrypt.php */ function sodium_crypto_aead_xchacha20poly1305_ietf_decrypt(string $ciphertext, string $additional_data, string $nonce, string $key): string|false {} /** * @param string $message * @param string $additional_data * @param string $nonce * @param string $key * @return string * @throws SodiumException * @since 7.2 * https://www.php.net/manual/en/function.sodium-crypto-aead-xchacha20poly1305-ietf-encrypt.php */ function sodium_crypto_aead_xchacha20poly1305_ietf_encrypt(string $message, string $additional_data, string $nonce, string $key): string {} /** * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-aead-xchacha20poly1305-ietf-keygen.php */ function sodium_crypto_aead_xchacha20poly1305_ietf_keygen(): string {} /** * @param string $password * @param int $opslimit * @param int $memlimit * @return bool * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-pwhash-str-needs-rehash.php */ function sodium_crypto_pwhash_str_needs_rehash(string $password, int $opslimit, int $memlimit): bool {} /** * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-secretstream-xchacha20poly1305-keygen.php */ function sodium_crypto_secretstream_xchacha20poly1305_keygen(): string {} /** * @param string $key * @return array * @throws SodiumException * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-secretstream-xchacha20poly1305-init-push.php */ function sodium_crypto_secretstream_xchacha20poly1305_init_push(string $key): array {} #[PhpStormStubsElementAvailable('7.2')] function sodium_crypto_secretstream_xchacha20poly1305_push(string &$state, #[\SensitiveParameter] string $message, string $additional_data = "", int $tag = SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE): string {} /** * @param string $header * @param string $key * @return string * @throws SodiumException * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-secretstream-xchacha20poly1305-init-pull.php */ function sodium_crypto_secretstream_xchacha20poly1305_init_pull(string $header, string $key): string {} #[PhpStormStubsElementAvailable('7.2')] function sodium_crypto_secretstream_xchacha20poly1305_pull(string &$state, string $ciphertext, string $additional_data = ""): array|false {} /** * @param string &$state * @throws SodiumException * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-crypto-secretstream-xchacha20poly1305-rekey.php */ function sodium_crypto_secretstream_xchacha20poly1305_rekey(string &$state): void {} /** * @param string $string * @param int $id * @return string * @throws SodiumException * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-bin2base64.php */ function sodium_bin2base64(string $string, int $id): string {} /** * @param string $string * @param int $id * @param string $ignore * @throws SodiumException * @since 7.2 * @see https://www.php.net/manual/en/function.sodium-base642bin.php * @return string */ function sodium_base642bin(string $string, int $id, string $ignore = ''): string {} class SodiumException extends Exception {}