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 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::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 (Hash) (por defecto: {})

    Un montón 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)

    asigna 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, deshabilita 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 se requiere la librería crypt_shared. Si es "true", se generará un error si libmongocrypt no puede cargar 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.

  • :logger (Logger)

    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, 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 = proveedores de kms
  @kms_tls_options =  kms_tls_options

  tal_vez_establecer_mapa_de_esquema(opciones)

  @encrypted_fields_map = opciones[mapa_de_campos_cifrados]
  establecer_mapa_de_campos_encriptados 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]
  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
    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.azur&.¿vacío?
    Vinculante.setopt_use_need_kms_credentials_state(sí mismo)
  end

  inicializar_mongocrypt

  @crypt_shared_lib_required = !!opciones[:crypt_shared_lib_requiere]
  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(sí mismo)
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 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.



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

def kms_tls_options(Proveedor)
  @kms_tls_options.obtener(Proveedor, {})
end

#refFFI::Pointer

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