Módulo: Mongo::Crypt::Hoooks Private

Definido em:
build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb

Visão geral

Este módulo faz parte de uma API privada. Você deve evitar usar este módulo, se possível, pois ele pode ser removido ou alterado no futuro.

Um módulo assistente que implementa métodos de criptografia necessários para ganchos de criptografia Ruby nativos. Esses métodos são passados para o FFI como retornos de chamada C e chamados da biblioteca libmongocrypt.

Recolhimento do Resumo do método de classe

Detalhes do método de classe

.aes(chave, iv, entrada, descriptografar: falso, modo: :CBC) ➤ string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Um método de criptografia ou descriptografia AES.

Parâmetros:

  • chave (string)

    A chave de criptografia AES de 32bytes

  • 4 (string)

    O AES quatro bytes de 16

  • Entrada (string)

    Os dados a serem criptografados/descriptografados

  • Descriptografar (verdadeiro | falso) (padrão para: false)

    Se este método está descriptografando. O padrão é falso, o que significa que o método criará uma cifra de criptografia por padrão

  • Modo (Símbolo) (padrão para: :CBC)

    modo de operação AES

Retorna:

  • (string)

    Saída

Aumenta:

  • (Exceção)

    As exceções geradas durante a criptografia são propagadas para o chamador.



43
44
45
46
47
48
49
50
51
52
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', linha 43

def aes(chave, 4, Entrada, descriptografar: false, modo: :CBC)
  cifra = OpenSSL::Cifra::AES.Novo(256, Modo)

  Descriptografar ? cifra.Descriptografar : cifra.criptografar
  cifra.chave = chave
  cifra.4 = 4
  cifra.Preenchimento = 0

  criptografado = cifra.update(Entrada)
end

.hash_sha256(entrada) ➤ string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Uma função de hash de criptografia (SHA-256)

Parâmetros:

  • Entrada (string)

    Os dados a serem hash

Retorna:

  • (string)

Aumenta:

  • (Exceção)

    As exceções geradas durante a criptografia são propagadas para o chamador.



88
89
90
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', linha 88

def hash_sha256(Entrada)
  Digest::SHA2.Novo(256).digerir(Entrada)
end

.hmac_sha(digest_name, chave, entrada) ➤ string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Uma função HMAC SHA-512 ou SHA-256

Parâmetros:

  • digest_name (string)

    O nome do resumo, “SHA256” ou “SHA512”

  • chave (string)

    A chave de criptografia AES de 32bytes

  • Entrada (string)

    Os dados a serem marcados

Retorna:

  • (string)

Aumenta:

  • (Exceção)

    As exceções geradas durante a criptografia são propagadas para o chamador.



76
77
78
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', linha 76

def hmac_sha(digest_name, chave, Entrada)
  OpenSSL::HMAC.digerir(digest_name, chave, Entrada)
end

.random(num_bytes) ➤ string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Função aleatória segura de criptografia

Parâmetros:

  • num_bytes (Inteiro)

    O número de bytes aleatórios solicitados

Retorna:

  • (string)

Aumenta:

  • (Exceção)

    As exceções geradas durante a criptografia são propagadas para o chamador.



62
63
64
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', linha 62

def Aleatório(num_bytes)
  SecureRandom.random_bytes(num_bytes)
end

.rsaes_pkcs_signature(chave, entrada) ➤ string

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Um RASSA-PKCS1-v1_5 com SHA-256 função de assinatura.

Parâmetros:

  • chave (string)

    A chave privada PKCS#8 no formato DER, base64 codificada.

  • Entrada (string)

    Os dados a serem assinados.

Retorna:

  • (string)

    A assinatura.



99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/hooks.rb', linha 99

def rsaes_pkcs_signature(chave, Entrada)
  PRIVATE_KEY = se BSON::ambiente.jRuby?
    # O JRuby não pode ler o formato DER, precisamos converter a chave em PEM primeiro.
    key_pem = [
      "-----BEGIN PRIVATE KEY-----",
      Base64.strict_encode64(Base64.decodificar64(chave)).digitalizar(/.{1,64}/),
      "-----END KEY -----",
    ].juntar("\n")
    OpenSSL::PKey::RSA.Novo(key_pem)
  mais
    OpenSSL::PKey.ler(Base64.decodificar64(chave))
  end
  PRIVATE_KEY.assinar(OpenSSL::Digest::SHA256.Novo, Entrada)
end