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 lidar 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

  • :key_expiration_ms (Inteiro | nulo) —

    A duração do cache da chave de criptografia de dados, em milissegundos. Um valor de 0 significa que o cache nunca expira. Quando nil, o padrão de libmongocrypt de 60000 é usado.

Aumenta:



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
117
118
119
120
121
122
123
124
125
# Arquivo 'lib/mongo/crypt/handle.rb', linha 73

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)
  Vinculação.setopt_enable_multiple_collinfo(auto)
  Vinculação.setopt_use_need_mongo_collinfo_with_db_state(auto)
  @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

  @key_expiration_ms = opções[:key_expiration_ms]
  set_key_expiration a menos que @key_expiration_ms.nada?

  @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.any_on_demand?
    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_providers ⇒ Crypt::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)


158
159
160
# Arquivo 'lib/mongo/crypt/handle.rb', linha 158

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.



154
155
156
# Arquivo 'lib/mongo/crypt/handle.rb', linha 154

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. Provedores nomeados (por exemplo, "kmip:name1") retornam às opções de tipo base (por exemplo, :kmip) quando nenhuma correspondência exata é encontrada.

Parâmetros:

  • fornecedor (string) —

    Nome do provedor KMS ou identificador nomeado.

Retorna:

  • (Hash) —

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



141
142
143
144
145
146
147
148
149
150
151
152
# Arquivo 'lib/mongo/crypt/handle.rb', linha 141

def kms_tls_options(fornecedor)
  provider_str = fornecedor.to_s
  base_type = KMS.provider_base_type(provider_str)

  @kms_tls_options.buscar(provider_str) fazer
    @kms_tls_options.buscar(provider_str.to_sym) fazer
      @kms_tls_options.buscar(base_type) fazer
        @kms_tls_options.buscar(base_type.to_sym, {})
      end
    end
  end
end

#ref ➤ FFI::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)


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

def ref
  @mongocrypt
end