Clase: Mongo::Crypt::Context Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Definido en:
lib/mongo/crypt/context.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 contenedor alrededor de mongocrypt_ctx_t, que administra la máquina de estados para el cifrado y la descripción.

Esta clase es una superclase que define métodos compartidos entre contextos que se inicializan para diferentes propósitos (por ejemplo, creación de claves de datos, cifrado, cifrado explícito, etc.)

Subclases conocidas directas

Contexto dedescifrado automático, Contexto de cifrado automático, Contexto de clavede datos, Contexto dedescifrado explícito, Contexto de cifrado explícito, Contexto de clave dedatos múltiples de reencapsulado

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Detalles del constructor

#inicializar(mongocrypt_handle, io) ⇒ Contexto

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

Crear un nuevo objeto de contexto

Parámetros:

  • identificador de mongocrypt (Mongo::Crypt::Handle)

    Un identificador para libmongocrypt utilizado para crear un nuevo objeto de contexto.

  • io (ClientEncryption::IO)

    Una instancia de la clase IO que implementa los métodos de E/S del controlador necesarios para ejecutar la máquina de estados.



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Archivo 'lib/mongo/crypt/context.rb', línea 41

def inicializar(identificador de mongocrypt, io)
  @mongocrypt_handle = identificador de mongocrypt
  # Idealmente, este nivel de la API no estaría pasando punteros
  # referencias entre objetos, por lo que esta firma del método está sujeta a cambios.

  # FFI::AutoPointer utiliza una estrategia de liberación personalizada para liberar automáticamente
  # el puntero una vez que este objeto sale del ámbito
  @ctx_p = FFI::Puntero automático.Nuevo(
    Vinculante.mongocrypt_ctx_nuevo(@mongocrypt_handle.ref),
    Vinculante.Método(:mongocrypt_ctx_destroy)
  )
  @encryption_io = io
  @cached_azure_token = nulo
end

Detalles de los atributos de instancia

#ctx_pObjeto (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.



56
57
58
# Archivo 'lib/mongo/crypt/context.rb', línea 56

def ctx_p
  @ctx_p
end

Detalles del método de instancia

#máquina_de_estado_de_ejecución(titular_de_tiempo_de_espera) ⇒ BSON::Documento

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

Ejecuta la máquina de estados mongocrypt_ctx_t y gestiona toda la E/S en nombre de

Este método no se ha probado unitariamente. Se ha probado su integración en spec/integration/explicit_encryption_spec.rb.

Parámetros:

  • timeout_holder (CsotTimeoutHolder)

    Tiempos de espera del CSOT para la operación del estado.

Devuelve:

  • (BSON::Documento)

    Un documento BSON que representa el resultado de la máquina de estados. El contenido puede variar según cómo se inicializó el contexto.

Aumentos:



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

def máquina de estado de ejecución(timeout_holder)
  mientras true
    tiempo de espera_ms = timeout_holder.¡tiempo de espera restante_ms!
    caso Estado
    Cuando :error
      Vinculante.comprobar_estado_ctx(yo)
    Cuando :listo
      # Finaliza la máquina de estados y devuelve el resultado como BSON::Document
      return Vinculante.ctx_finalizar(yo)
    Cuando :hecho
      return nulo
    Cuando :necesito llaves mongo
      proporcionar_claves(tiempo de espera_ms)
    Cuando :need_mongo_collinfo
      proporcionar_información_de_colección(tiempo de espera_ms)
    Cuando :need_mongo_markings
      proporcionar_marcas(tiempo de espera_ms)
    Cuando :necesito_kms
      feed_kms
    Cuando :necesito credenciales de kms
      Vinculante.ctx_provide_kms_providers(
        yo,
        retrieve_kms_credentials(timeout_holder).al_documento
      )
    else
      propagar Error::CryptError.Nuevo(
        "Elestado #{state} no es compatible con Mongo::Crypt::Context"
      )
    end
  end
end

#estadoSímbolo

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 el estado de mongocrypt_ctx_t

Devuelve:

  • ( Símbolo) -

    El estado del contexto



61
62
63
# Archivo 'lib/mongo/crypt/context.rb', línea 61

def Estado
  Vinculante.mongocrypt_ctx_state(@ctx_p)
end