Solución de errores criptográficos en WordPress mediante la extensión Sodium

WordPress y muchos de sus plugins modernos hacen uso de funciones criptográficas para verificar firmas, proteger datos sensibles y garantizar la integridad de las comunicaciones. Cuando la extensión Sodium no está activa en PHP, estas operaciones pueden fallar con errores que aparentemente no tienen sentido, dejando tu sitio inaccesible o con funcionalidades rotas.

El síntoma más común es un error fatal que aparece en los logs de PHP similar a este:

PHP Fatal error: Uncaught TypeError: Argument 2 must be a string, integer given. 
in /home/usuario/public_html/wp-includes/sodium_compat/src/Core/Util.php:242

Este error suele aparecer acompañado de un stack trace que involucra funciones como sodium_crypto_sign_verify_detached() y archivos dentro de wp-includes/sodium_compat/. El sitio puede mostrar una pantalla blanca, devolver errores 500, o ciertas funcionalidades dejan de responder, especialmente aquellas relacionadas con APIs, webhooks o servicios externos que requieren verificación de firmas criptográficas.

Plugins populares como LiteSpeed Cache, sistemas de caché avanzados, integraciones con CDNs y servicios externos que implementan verificación de integridad de datos pueden desencadenar este error cuando intentan realizar operaciones criptográficas y la configuración de PHP no es la óptima.

Qué es Sodium y por qué es importante

Sodium (también conocido como libsodium) es una biblioteca criptográfica moderna que proporciona funciones para cifrado, descifrado, generación de claves, firmas digitales y otras operaciones de seguridad. PHP incluye soporte nativo para Sodium mediante una extensión que se compila con la biblioteca libsodium, ofreciendo un rendimiento excelente y una API consistente.

Cuando la extensión Sodium no está disponible, WordPress recurre automáticamente a una implementación alternativa llamada sodium_compat, que es una versión escrita completamente en PHP puro. Esta versión de compatibilidad funciona como fallback, pero tiene limitaciones importantes. Al estar escrita en PHP y no en C como la extensión nativa, es significativamente más lenta y, más importante aún, tiene un manejo de tipos de datos más estricto que puede causar errores cuando el código que la invoca no formatea los parámetros exactamente como espera.

El error que aparece en el mensaje original es precisamente esto: la implementación sodium_compat recibe un integer cuando esperaba un string, y falla con un TypeError. La extensión nativa de Sodium, por otro lado, es más flexible en el manejo de tipos y convierte automáticamente los valores según sea necesario, evitando este tipo de errores.

La solución: activar la extensión Sodium

La solución es activar la extensión Sodium nativa en tu configuración de PHP. Esto reemplaza completamente la implementación sodium_compat y garantiza que todas las operaciones criptográficas se ejecuten de forma rápida, eficiente y sin problemas de tipos de datos.

Para activar Sodium accede a cPanel, sección Seleccionar versión de PHP" y localiza en el listado sodium, haz click en la casilla de verificación y listo.

Una vez activada, WordPress detectará automáticamente que la extensión nativa está disponible y dejará de usar sodium_compat. El error desaparecerá y las operaciones criptográficas funcionarán correctamente.