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
# 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)
  @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.aws&.¿vacío? || @kms_providers.gcp&.¿vacío? || @kms_providers.Azure&.¿vacío?
    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)


139
140
141
# Archivo 'lib/mongo/crypt/handle.rb', línea 139

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.



135
136
137
# Archivo 'lib/mongo/crypt/handle.rb', línea 135

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 opciones TLS para el proveedor de KMS. Si no se configuran opciones de TLS, se devuelve un hash vacío.

Parámetros:

  • Proveedor (string)

    Nombre del proveedor de KSM.

Devuelve:

  • (encriptada)

    Opciones TLS para conectar a un proveedor KMS.



131
132
133
# Archivo 'lib/mongo/crypt/handle.rb', línea 131

def kms_tls_options(Proveedor)
  @kms_tls_options.obtener(Proveedor, {})
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)


121
122
123
# Archivo 'lib/mongo/crypt/handle.rb', línea 121

def ref
  @mongocrypt
end