Mudar o provedor de criptografia padrão

Este documento descreve como mudar o provedor de criptografia rustls padrão em Rust. Talvez você queira mudar o provedor de criptografia padrão se o aplicativo tiver requisitos específicos que não são atendidos pelo padrão.

As bibliotecas de cliente Rust usam Rustls para proteger a comunicação entre seu aplicativo e Google Cloud. O Rustls pode usar diferentes provedores para funções criptográficas. Por padrão, as bibliotecas cliente ativam o provedor aws-lc-rs. As bibliotecas de cliente usam isso como padrão porque se baseia no BoringSSL, uma biblioteca de criptografia bem avaliada implementada pelo Google, e é o único provedor de criptografia Rust certificado pelo FIPS.

No entanto, alguns aplicativos podem precisar usar um provedor diferente. Este guia mostra como desativar o provedor padrão e configurar o seu próprio, usando google-cloud-storage para ilustrar como mudar os requisitos do Rust, com ring como um provedor de criptografia alternativo. Esse processo pode ser personalizado para outras bibliotecas de cliente. Consulte a documentação do rustls para outros provedores.

Usar as bibliotecas de cliente com o provedor de criptografia padrão

Para usar o provedor de criptografia padrão, adicione a biblioteca de cliente como uma dependência ao arquivo Cargo.toml:

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

Usar o provedor de criptografia padrão com outros recursos padrão desativados

Alguns aplicativos preferem desativar todos os recursos padrão nas dependências e ativar apenas os recursos que querem usar. Por exemplo, seu Cargo.toml pode dizer:

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

Para ativar apenas o recurso de provedor padrão, use:

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

Usar seu próprio provedor de criptografia

Para selecionar seu próprio provedor:

  1. Adicione o Rust com os recursos padrão desativados e inclua as dependências necessárias para seu provedor. Neste guia, usamos ring:

    Você precisa usar a mesma versão de "rustls" e "google-cloud-storage".
    [dependencies]
    google-cloud-storage = { version = "1", default-features = false }
    rustls               = { version = "0.23", features = ["ring"] }
    
  2. Mude a função main() para instalar este provedor:

    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(())
    }