Classe: Mongo::Crypt::Handle Private

Herda:
Objeto
  • Objeto
mostrar tudo
Definido em:
build/ruby-driver-v2.19/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.

  • :logger (Registrador)

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



67
68
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
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/handle.rb', linha 67

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

  @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]
  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
    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]
  se @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
end

Detalhes do atributo da instância

#kms_providers ➤ Objeto (somente leitura)

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.



32
33
34
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/handle.rb', linha 32

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)


136
137
138
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/handle.rb', linha 136

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.



132
133
134
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/handle.rb', linha 132

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.



128
129
130
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/handle.rb', linha 128

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)


118
119
120
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/handle.rb', linha 118

def ref
  @mongocrypt
end