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. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Un contenedor alrededor de mongocrypt_ctx_t, que gestiona la máquina de estados para el cifrado y el descifrado.

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.)

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

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.

Crea un nuevo objeto Context

Parámetros:

  • mongocrypt_handle (Mongo::Crypt::Handle)

    Un controlador para libmongocrypt que se utiliza para crear un nuevo objeto de contexto.

  • io (ClientEncryption::IO)

    Una instancia de la clase IO que implementa los métodos de entrada/salida del driver requeridos 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(mongocrypt_handle, io)
  @mongocrypt_handle = mongocrypt_handle
  # Idealmente, este nivel de la API no estaría pasando punteros
  # referencias entre objetos, por lo que la firma de este 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 salga del alcance
  @ctx_p = FFI::Apuntador automático.Nuevo(
    Vinculante.mongocrypt_ctx_new(@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:

Devuelve:

  • (BSON::Document)

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

Aumenta:



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 run_state_machine(timeout_holder)
  mientras true
    timeout_ms = timeout_holder.¡tiempo de espera restante_ms!
    caso Estado
    Cuando Error
      Vinculante.check_ctx_status(sí mismo)
    Cuando :ready
      # Finaliza la máquina de estados y devuelve el resultado como un BSON::Document
      return Vinculante.ctx_finalizar(sí mismo)
    Cuando :hecho
      return nulo
    Cuando :necesito llaves mongo
      provide_keys(timeout_ms)
    Cuando :need_mongo_collinfo
      provide_collection_info(timeout_ms)
    Cuando :need_mongo_markings
      proveer_marcaciones(timeout_ms)
    Cuando :need_kms
      feed_kms
    Cuando :need_kms_credentials
      Vinculante.ctx_provide_kms_providers(
        sí mismo,
        retrieve_kms_credentials(timeout_holder).to_document
      )
    else
      propagar Error::CryptError.Nuevo(
        "Estado #{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:



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

def Estado
  Vinculante.mongocrypt_ctx_state(@ctx_p)
end