Clase: Mongo::Crypt::Handle Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Definido en:
lib/mongo/crypt/handle.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Un identificador para la biblioteca libmongocrypt que encapsula un objeto mongocrypt_t, permitiendo a los clientes configurar las opciones de ese objeto o realizar operaciones como cifrado y descifrado

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Detalles del Constructor

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

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Crea un nuevo objeto Handle y lo inicializa con opciones

Parámetros:

  • kms_providers (Crypt::KMS::Credentials)

    Credenciales para proveedores KMS.

  • kms_tls_options (encriptada)

    Opciones de TLS para conectarse a los proveedores de KMS. Las claves del hash deben ser nombres de los proveedores de KSM; los valores deben ser hashes de opciones de conexión TLS. Las opciones son equivalentes a las opciones de conexión TLS de Mongo::Client.

  • opciones (encriptada) (por defecto: {})

    Un hash de opciones.

Opciones Hash (options):

  • Mapa de esquema (Hash | nil)

    Un hash que representa el JSON schema de la colección que almacena documentos autoencriptados. Esta opción es mutuamente exclusiva con :schema_map_path.

  • :schema_map_path (String | nil)

    Ruta a un archivo que contiene el esquema JSON de la colección que almacena documentos cifrados automáticamente. Esta opción es mutuamente excluyente con :mapa_de_esquema.

  • mapa_de_campos_cifrados (Hash | nil)

    mapea un espacio de nombres de colección a un encryptedFields.

    • Nota: si una colección está presente tanto en encryptedFieldsMap como en schemaMap, se producirá un error.
  • :omitir_análisis_de_consultas (Boolean | nil)

    Cuando es verdadero, desactiva el análisis automático de los comandos salientes.

  • crypt_shared_lib_path (String | nil)

    Ruta que debe utilizarse para cargar la librería compartida crypt. Proporcionar esta opción anula las rutas de carga por defecto de la librería compartida para libmongocrypt.

  • :crypt_shared_lib_requiere (Boolean | nil)

    Si crypt_shared librería es necesario. Si es 'true', se producirá un error si libmongocrypt no puede cargar una librería crypt_shared.

  • :explicit_encryption_only (Boolean | nil)

    Si este identificador solo se utilizará para cifrado explícito. Si está activado, se indica a libmongocrypt que no cargue la librería compartida CRYPT.

  • :disable_crypt_shared_lib_search (Boolean | nil)

    Cuando es verdadero, suprime la búsqueda automática "$SYSTEM" de crypt_shared. Use esto cuando un Handler anterior en el mismo proceso ya cargó la librería a través de una anulación de ruta y deseas evitar el error de carga conflictiva que libmongocrypt genera en una búsqueda posterior de "$SYSTEM".

  • :logger (Logger)

    Un objeto Logger al que se enviarán los registros de libmongocrypt

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
117
118
# Archivo 'lib/mongo/crypt/handle.rb', línea 69

def inicializar(kms_providers, kms_tls_options, opciones = {})
  # FFI::AutoPointer utiliza una estrategia de liberación personalizada para liberar automáticamente
  # el puntero una vez que este objeto salga del alcance
  @mongocrypt = FFI::Apuntador automático.Nuevo(
    Vinculante.mongocrypt_new,
    Vinculante.Método(: mongocrypt_destroy)
  )
  Vinculante.kms_ctx_setopt_retry_kms(sí mismo, true)
  Vinculante.setopt_enable_multiple_collinfo(sí mismo)
  Vinculante.setopt_use_need_mongo_collinfo_with_db_state(sí mismo)
  @kms_providers = kms_providers
  @kms_tls_options = kms_tls_options

  tal_vez_establecer_mapa_de_esquema(opciones)

  @encrypted_fields_map = opciones[mapa_de_campos_cifrados]
  set_encrypted_fields_map si @encrypted_fields_map

  @bypass_query_analysis = opciones[:omitir_análisis_de_consultas]
  set_bypass_query_analysis si @bypass_query_analysis

  @crypt_shared_lib_path = opciones[crypt_shared_lib_path]
  @explicit_encryption_only = opciones[:explicit_encryption_only]
  @disable_crypt_shared_lib_search = opciones[:disable_crypt_shared_lib_search]
  si @crypt_shared_lib_path
    Vinculante.setopt_set_crypt_shared_lib_path_override(sí mismo, @crypt_shared_lib_path)
  elsif !@bypass_query_analysis && !@explicit_encryption_only && !@disable_crypt_shared_lib_search
    Vinculante.setopt_append_crypt_shared_lib_search_path(sí mismo, '$SYSTEM')
  end

  @logger = opciones[:logger]
  set_logger_callback si @logger

  set_crypto_hooks

  Vinculante.setopt_kms_providers(sí mismo, @kms_providers.to_document)

  si @kms_providers.any_on_demand?
    Vinculante.setopt_use_need_kms_credentials_state(sí mismo)
  end

  initialize_mongocrypt

  @crypt_shared_lib_required = !!opciones[:crypt_shared_lib_requiere]
  return a menos que @crypt_shared_lib_required && crypt_shared_lib_version == 0

  propagar mongo::Error::CryptError.Nuevo(
    'Se requiere la librería compartida Crypt, pero no se puede cargar  según libmongocrypt'
  )
end

Detalles de atributo de instancias

#kms_providersCrypt::KMS::Credentials (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve credenciales para proveedores de KMS.

Devuelve:



29
30
31
# Archivo 'lib/mongo/crypt/handle.rb', línea 29

def kms_providers
  @kms_providers
end

Detalles del método de instancia

#crypt_shared_lib_available?Booleano

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve:

  • (booleano)


151
152
153
# Archivo 'lib/mongo/crypt/handle.rb', línea 151

def crypt_shared_lib_available?
  crypt_shared_lib_version != 0
end

#crypt_shared_lib_versionObjeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.



147
148
149
# Archivo 'lib/mongo/crypt/handle.rb', línea 147

def crypt_shared_lib_version
  Vinculante.crypt_shared_lib_version(sí mismo)
end

#kms_tls_options(proveedor) ⇒ Hash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve las opciones TLS para el proveedor KMS. Si no se configuran opciones de TLS, se devuelve un hash vacío. Los proveedores con nombre (por ejemplo, "kmip:name1") recurren a las opciones de tipo base (por ejemplo, :kmip) cuando no se encuentra una coincidencia exacta.

Parámetros:

  • Proveedor (string)

    Nombre del proveedor de KMS o identificador con nombre.

Devuelve:

  • (encriptada)

    Opciones TLS para conectar a un proveedor KMS.



134
135
136
137
138
139
140
141
142
143
144
145
# Archivo 'lib/mongo/crypt/handle.rb', línea 134

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

  @kms_tls_options.obtener(provider_str) hacer
    @kms_tls_options.obtener(provider_str.to_sym) hacer
      @kms_tls_options.obtener(base_type) hacer
        @kms_tls_options.obtener(base_type.to_sym, {})
      end
    end
  end
end

#refFFI::Pointer

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la referencia al objeto @mongocrypt subyacente

Devuelve:

  • (FFI::Pointer)


123
124
125
# Archivo 'lib/mongo/crypt/handle.rb', línea 123

def ref
  @mongocrypt
end