Classe: Mongo::Crypt::Handle Private

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
lib/mongo/crypt/handle.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Um identificador para a biblioteca libmongocrypt que envolve um objeto mongocrypt_t , permitindo que os clientes definam opções nesse objeto ou executem operações como criptografia e descriptografia

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(kms_providers, kms_tls_options, options = {}) ⇒ Handle

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.

Cria um novo objeto de manuseio e o inicializa com opções

Parâmetros:

  • kms_providers (Criptografia::KMS::Credenciais)

    Credenciais para provedores de KMS.

  • kms_tls_options (Hash)

    Opções de TLS para se conectar a provedores de KMS. As chaves do hash devem ser nomes de provedor KSM; Os valores devem ser hashes de opções de conexão TLS . As opções são equivalentes às opções de conexão TLS do Mongo::Client.

  • opções (Hash) (padrão para: {})

    Um hash de opções.

Hash de opções (opções):

  • :schema_map (Hash | nulo)

    Um hash representando o JSON schema da collection que armazena documentos criptografados automaticamente. Esta opção é mutuamente exclusiva com :schema_map_path.

  • :schema_map_path (string | nil)

    Um caminho para um arquivo contém o JSON schema da coleção que armazena documentos criptografados automaticamente. Esta opção é mutuamente exclusiva com o :schema_map.

  • :encrypted_fields_map (Hash | nulo)

    mapeia um namespace da collection para um encryptionFields.

    • Observação: se uma coleção estiver presente no encryptionFieldsMap e no schemaMap, um erro será gerado.
  • :bypass_query_analysis (Boolean | nil)

    Quando verdadeiro, desativa a análise automática de comandos de saída.

  • :crypt_shared_lib_path (string | nil)

    Caminho que deve ser usado para carregar a biblioteca compartilhada de criptografia. Desde que esta opção substitua os caminhos de carregamento da biblioteca compartilhada de criptografia padrão para libmongocrypt.

  • :crypt_shared_lib_required (Boolean | nil)

    Se a biblioteca crypt_shared é necessária. Se 'true', um erro será gerado se uma biblioteca crypt_shared não puder ser carregada por libmongocrypt.

  • :explicit_encryption_only (Boolean | nil)

    Se esse identificador será usado somente para criptografia explícita. Se verdadeiro, a libmongocrypt é instruída a não carregar a biblioteca compartilhada do crypt.

  • :disable_crypt_shared_lib_search (Boolean | nil)

    Quando verdadeiro, suprime a pesquisa automática "$SYSTEM" para crypt_shared. Use isso quando um handle anterior no mesmo processo já tiver carregado a biblioteca por meio de uma substituição de caminho e você quiser evitar o erro de carga conflitante que libmongocrypt gera em uma pesquisa "$SYSTEM" subsequente.

  • :logger (Registrador)

    Um objeto Logger para o qual os registros da libmongocrypt serão enviados

Aumenta:



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Arquivo 'lib/mongo/crypt/handle.rb', linha 69

def inicializar(kms_providers, kms_tls_options, opções = {})
  # O FFI::AutoPointer usa uma estratégia de liberação personalizada para liberar automaticamente
  # o ponteiro quando esse objeto sair do escopo
  @mongocrypt = FFI::AutoPointer.Novo(
    Vinculação.mongocrypt_new,
    Vinculação.Método(:mongocrypt_destroy)
  )
  Vinculação.kms_ctx_setopt_retry_kms(auto, true)
  @kms_providers = kms_providers
  @kms_tls_options = kms_tls_options

  talvez_set_schema_map(opções)

  @encrypted_fields_map = opções[:encrypted_fields_map]
  set_encrypted_fields_map se @encrypted_fields_map

  @bypass_query_analysis = opções[:bypass_query_analysis]
  set_bypass_query_analysis se @bypass_query_analysis

  @crypt_shared_lib_path = opções[:crypt_shared_lib_path]
  @explicit_encryption_only = opções[:explicit_encryption_only]
  @disable_crypt_shared_lib_search = opções[:disable_crypt_shared_lib_search]
  se @crypt_shared_lib_path
    Vinculação.setopt_set_crypt_shared_lib_path_override(auto, @crypt_shared_lib_path)
  elsif !@bypass_query_analysis && !@explicit_encryption_only && !@disable_crypt_shared_lib_search
    Vinculação.setopt_append_crypt_shared_lib_search_path(auto, '$SYSTEM')
  end

  @logger = opções[:logger]
  set_logger_callback se @logger

  set_crypto_hooks

  Vinculação.setopt_kms_providers(auto, @kms_providers.to_document)

  se @kms_providers.AWS&.vazio? || @kms_providers.GCP&.vazio? || @kms_providers.Azure&.vazio?
    Vinculação.setopt_use_need_kms_credentials_state(auto)
  end

  initialize_mongocrypt

  @crypt_shared_lib_required = !!opções[:crypt_shared_lib_required]
  Método a menos que @crypt_shared_lib_required && crypt_shared_lib_version == 0

  aumentar mongo::Erro::Criptografia de erro.Novo(
    'A biblioteca compartilhada de criptografia é necessária, mas não pode ser carregada de acordo com libmongocrypt '
  )
end

Detalhes do atributo da instância

#kms_providersCrypt::KMS::Credentials (readonly)

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.

Retorna credenciais para provedores de KMS.

Retorna:



29
30
31
# Arquivo 'lib/mongo/crypt/handle.rb', linha 29

def kms_providers
  @kms_providers
end

Detalhes do método de instância

#crypt_shared_lib_available?Booleano

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.

Retorna:

  • (Booleano)


139
140
141
# Arquivo 'lib/mongo/crypt/handle.rb', linha 139

def crypt_shared_lib_available?
  crypt_shared_lib_version != 0
end

#crypt_shared_lib_version ➤ Objeto

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.



135
136
137
# Arquivo 'lib/mongo/crypt/handle.rb', linha 135

def crypt_shared_lib_version
  Vinculação.crypt_shared_lib_version(auto)
end

#kms_tls_options(provider) ➤ Hash

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.

Retornar opções de TLS para o provedor de KMS. Se não houver opções de TLS definidas, o hash vazio será retornado.

Parâmetros:

  • fornecedor (string)

    Nome do provedor KSM.

Retorna:

  • (Hash)

    Opções de TLS para se conectar ao provedor de KMS.



131
132
133
# Arquivo 'lib/mongo/crypt/handle.rb', linha 131

def kms_tls_options(fornecedor)
  @kms_tls_options.buscar(fornecedor, {})
end

#refFFI::Pointer

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.

Retorne a referência ao objeto @mongocrypt subjacente

Retorna:

  • (FFI::Pointer)


121
122
123
# Arquivo 'lib/mongo/crypt/handle.rb', linha 121

def ref
  @mongocrypt
end