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. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Un identificador para la biblioteca libmongocrypt que envuelve un objeto mongocrypt_t, lo que permite a los clientes establecer opciones en ese objeto o realizar operaciones como cifrado y descifrado

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles del constructor

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

Este método forma parte de una API privada. Debe evitarlo 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:

  • proveedores de kms (Crypt::KMS::Credenciales)

    Credenciales para proveedores de KMS.

  • opciones_kms_tls (Hash)

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

  • opciones (Hash) (predeterminado: {})

    Un montón de opciones.

Opciones Hash(opciones):

  • :mapa_de_esquema (Hash | nulo)

    Un hash que representa el esquema JSON de la colección que almacena los documentos cifrados automáticamente. Esta opción es mutuamente excluyente con :schema_map_path.

  • :ruta_del_mapa_del_esquema (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 | nulo)

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

    • Nota: Si hay una colección presente tanto en encryptedFieldsMap como en schemaMap, se generará un error.

  • :análisis de consulta de bypass (Boolean | nil)

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

  • :ruta_de_biblioteca_compartida_crypt (String | nil)

    Ruta que debe usarse para cargar la biblioteca compartida de Crypt. Al usar esta opción, se anulan las rutas de carga predeterminadas de la biblioteca compartida de Crypt para libmongocrypt.

  • :crypt_shared_lib_required (Boolean | nil)

    Si se requiere la librería crypt_shared. Si es "true", se generará un error si libmongocrypt no puede cargar crypt_shared.

  • :solo cifrado explícito (Boolean | nil)

    Indica si este identificador se usará solo para cifrado explícito. Si es verdadero, se indica a libmongocrypt que no cargue la biblioteca compartida de cifrado.

  • :logger (Registrador)

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



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

def inicializar(proveedores de kms, opciones_kms_tls, opciones={})
  # FFI::AutoPointer utiliza una estrategia de liberación personalizada para liberar automáticamente
  # el puntero una vez que este objeto sale del ámbito
  @mongocrypt = FFI::Puntero automático.Nuevo(
    Vinculante.mongocrypt_new,
    Vinculante.Método(:mongocrypt_destroy)
  )
  Vinculante.kms_ctx_setopt_retry_kms(yo, true)
  @kms_providers = proveedores de kms
  @kms_tls_options =  opciones_kms_tls

  tal vez_establecer_mapa_de_esquema(opciones)

  @mapa_de_campos_encriptados = opciones[:mapa de campos cifrados]
  establecer_mapa_de_campos_encriptados Si @mapa_de_campos_encriptados

  @bypass_query_analysis = opciones[:análisis de consulta de bypass]
  análisis de consulta de omisión de conjunto Si @bypass_query_analysis

  @crypt_shared_lib_path = opciones[:ruta_de_biblioteca_compartida_crypt]
  @solo cifrado explícito = opciones[:solo cifrado explícito]
  Si @crypt_shared_lib_path
    Vinculante.setopt_set_crypt_shared_lib_path_override(yo, @crypt_shared_lib_path)
  elsif !@bypass_query_analysis && !@solo cifrado explícito
    Vinculante.ruta de búsqueda de biblioteca compartida setopt_append_crypt(yo, "$SYSTEM")
  end

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

  establecer_ganchos_criptográficos

  Vinculante.setopt_kms_providers(yo, @kms_providers.al_documento)

  Si @kms_providers.AWS&.¿vacío? || @kms_providers.gcp&.¿vacío? || @kms_providers.azur&.¿vacío?
    Vinculante.setopt_use_necesidad_de_estado_de_credenciales_kms(yo)
  end

  inicializar_mongocrypt

  @crypt_shared_lib_required = !!opciones[:crypt_shared_lib_required]
  Si @crypt_shared_lib_required && versión de biblioteca compartida de crypt == 0
    propagar Mongo::Error::CryptError.Nuevo(
      "Serequiere la biblioteca compartida Crypt, pero no se puede cargar según libmongocrypt"
    )
  end
end

Detalles de los atributos de instancia

#kms_providersObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



32
33
34
# Archivo 'lib/mongo/crypt/handle.rb', línea 32

def proveedores de kms
  @kms_providers
end

Detalles del método de instancia

#¿crypt_shared_lib_available?Booleano

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve:

  • (Booleano)


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

def ¿Crypt_shared_lib_available?
  versión de biblioteca compartida de crypt != 0
end

#crypt_shared_lib_versionObjeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.



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

def versión de biblioteca compartida de crypt
  Vinculante.versión de biblioteca compartida de crypt(yo)
end

#kms_tls_options(proveedor) ⇒ Hash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve las opciones TLS del proveedor KMS. Si no hay opciones TLS definidas, se devuelve un hash vacío.

Parámetros:

  • proveedor (Cadena) -

    Nombre del proveedor de KSM.

Devuelve:

  • (Hash)

    Opciones de TLS para conectarse al proveedor KMS.



128
129
130
# Archivo 'lib/mongo/crypt/handle.rb', línea 128

def opciones_kms_tls(proveedor)
  @kms_tls_options.Fetch(proveedor, {})
end

#refFFI::Puntero

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la referencia al objeto @mongocrypt subyacente

Devuelve:

  • (FFI::Puntero)


118
119
120
# Archivo 'lib/mongo/crypt/handle.rb', línea 118

def ref
  @mongocrypt
end