Cómo cambiar el proveedor de criptografía predeterminado

En este documento, se describe cómo cambiar el proveedor de criptografía rustls predeterminado en Rust. Es posible que desees cambiar el proveedor de criptografía predeterminado si tu aplicación tiene requisitos específicos que no cumple el proveedor predeterminado.

Las bibliotecas cliente de Rust usan Rustls para proteger la comunicación entre tu aplicación y Google Cloud. Rustls puede usar diferentes proveedores para las funciones criptográficas. De forma predeterminada, las bibliotecas cliente habilitan el proveedor aws-lc-rs. Las bibliotecas cliente usan este proveedor de forma predeterminada, ya que se basa en BoringSSL, una biblioteca de criptografía muy respetada implementada por Google, y es el único proveedor de criptografía de Rust que cuenta con la certificación FIPS.

Sin embargo, es posible que algunas aplicaciones deban usar un proveedor diferente. En esta guía, se muestra cómo inhabilitar el proveedor predeterminado y configurar el tuyo propio con google-cloud-storage para ilustrar cómo cambiar los requisitos de Rust, con ring como proveedor de criptografía alternativo. Este proceso se puede personalizar para otras bibliotecas cliente. Consulta la documentación de rustls para obtener más proveedores.

Usa las bibliotecas cliente con el proveedor de criptografía predeterminado

Para usar el proveedor de criptografía predeterminado, agrega la biblioteca cliente como una dependencia a tu archivo Cargo.toml:

[dependencies]
google-cloud-storage = { version = "1" }

Usar el proveedor de criptografía predeterminado con otras funciones predeterminadas inhabilitadas

Algunas aplicaciones prefieren inhabilitar todas las funciones predeterminadas en sus dependencias y, luego, habilitar solo las funciones que quieren usar. Por ejemplo, tu Cargo.toml podría decir lo siguiente:

[dependencies]
google-cloud-storage = { version = "1", default-features = false }

Para habilitar solo la función del proveedor predeterminado, usa el siguiente comando:

[dependencies]
google-cloud-storage = { version = "1", default-features = false, features = ["default-rustls-provider"] }

Usa tu propio proveedor de criptomonedas

Para seleccionar tu propio proveedor, haz lo siguiente:

  1. Agrega Rust con las funciones predeterminadas inhabilitadas e incluye las dependencias necesarias para tu proveedor. En esta guía, usamos ring:

    Debes usar la misma versión de "rustls" que "google-cloud-storage".
    [dependencies]
    google-cloud-storage = { version = "1", default-features = false }
    rustls               = { version = "0.23", features = ["ring"] }
    
  2. Cambia la función main() para instalar este proveedor:

    use rustls::crypto::{CryptoProvider, ring::default_provider};
    
    #[tokio::main]
    async fn main() -> anyhow::Result<()> {
        // Install a default crypto provider.
        CryptoProvider::install_default(default_provider())
            .map_err(|_| anyhow::anyhow!("default crypto provider already installed"))?;
        // ... ... ...
        Ok(())
    }