if (ParagonIE_Sodium_Core_Util::
strlen($publicKey) !== self::CRYPTO_BOX_PUBLICKEYBYTES
) { throw new SodiumException('Argument 2 must be CRYPTO_BOX_PUBLICKEYBYTES long.'
);
} if (self::
useNewSodiumAPI()) { return (string) sodium_crypto_box_keypair_from_secretkey_and_publickey($secretKey,
$publicKey);
} if (self::
use_fallback('crypto_box_keypair_from_secretkey_and_publickey'
)) { return (string) call_user_func('\\Sodium\\crypto_box_keypair_from_secretkey_and_publickey',
$secretKey,
$publicKey);
} if (PHP_INT_SIZE === 4
) { return ParagonIE_Sodium_Crypto32::
box_keypair_from_secretkey_and_publickey($secretKey,
$publicKey);
} return ParagonIE_Sodium_Crypto::
box_keypair_from_secretkey_and_publickey($secretKey,
$publicKey);
} /**
* Decrypt a message previously encrypted with crypto_box().
*
* @param string $ciphertext Encrypted message
* @param string $nonce Number to only be used Once; must be 24 bytes
* @param string $keypair Your secret key and the sender's public key
* @return string The original plaintext message
* @throws SodiumException
* @throws TypeError
* @psalm-suppress MixedArgument
* @psalm-suppress MixedInferredReturnType
* @psalm-suppress MixedReturnStatement
*/