Classe: Mongo::Crypt::Context Private

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Definido em:
lib/mongo/crypt/context.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Um wrapper para mongocrypt_ctx_t, que gerencia a máquina de estados para criptografia e descriptografia.

Esta classe é uma superclasse que define métodos compartilhados entre contextos que são inicializados para diferentes fins (por exemplo criação de chave de dados, criptografia, criptografia criptografia explícita, etc.)

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(mongocrypt_handle, io) ➤ Contexto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Criar um novo objeto de contexto

Parâmetros:

  • mongocrypt_handle (Mongo::Crypt::Handle)

    Um identificador para libmongocrypt usado para criar um novo objeto de contexto.

  • io (ClientEncryption::IO)

    Uma instância da classe IO que implementa os métodos de E/S do driver necessários para executar a máquina de estado.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Arquivo 'lib/mongo/crypt/context.rb', linha 39

def inicializar(mongocrypt_handle, io)
  @mongocrypt_handle = mongocrypt_handle
  # Idealmente, este nível da API não seria passar o ponteiro
  # referências entre objetos, portanto, esta assinatura de método está sujeita a alterações.

  # O FFI::AutoPointer usa uma estratégia de liberação personalizada para liberar automaticamente
  # o ponteiro quando esse objeto sair do escopo
  @ctx_p = FFI::AutoPointer.Novo(
    Vinculação.mongocrypt_ctx_new(@mongocrypt_handle.ref),
    Vinculação.Método(:mongocrypt_ctx_destroy)
  )
  @encryption_io = io
  @cached_azure_token = nada
end

Detalhes do atributo da instância

#ctx_p ➤ Object (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.



54
55
56
# Arquivo 'lib/mongo/crypt/context.rb', linha 54

def ctx_p
  @ctx_p
end

Detalhes do método de instância

#bson_modeSymbol?

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Qual modo BSON usar ao criar documentos a partir do resultado da máquina de estados. O padrão é :bson, que cria BSON::Document com tipos de BSON. As subclasses podem substituir este método para alterar esse comportamento.

Retorna:

  • (Symbol, nil)

    O modo BSON .



116
117
118
# Arquivo 'lib/mongo/crypt/context.rb', linha 116

def bson_mode
  :bson
end

#run_state_machine(timeout_holder) ➤ BSON::Document

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Executa a máquina de estado mongocrypt_ctx_t e lida com toda a E/S em nome de

Este método não está atualmente testado na unidade. É uma integração testada em spec/integration/explicit_encryption_spec.rb

Parâmetros:

  • timeout_holder (CsotTimeoutHolder)

    Tempo limite de CSOT para a operação do estado.

Retorna:

  • (BSON::Document)

    Um documento BSON representando o resultado da máquina de estados. O conteúdo pode ser diferente dependendo de como o contexto foi inicializado.

Aumenta:



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
# Arquivo 'lib/mongo/crypt/context.rb', linha 78

def run_state_machine(timeout_holder)
  enquanto true
    timeout_ms = timeout_holder.remaining_timeout_ms!
    caso state
    quando :error
      Vinculação.check_ctx_status(auto)
    quando :ready
      # Finalize a máquina de estados e retorne o resultado como BSON::Document
      Método Vinculação.ctx_finalize(auto)
    quando :done
      Método nada
    quando :need_mongo_keys
      Provide_keys(timeout_ms)
    quando :need_mongo_collinfo
      Provide_collection_info(timeout_ms)
    quando :need_mongo_markings
      provider_markings(timeout_ms)
    quando :need_kms
      feed_kms
    quando :need_kms_credentials
      Vinculação.ctx_provide_kms_providers(
        auto,
        retrieve_kms_credentials(timeout_holder).to_document
      )
    mais
      aumentar Erro::Criptografia de erro.Novo(
        "O estado #{state} não é suportado pelo Mongo::Crypt::Context"
      )
    end
  end
end

#estadoSímbolo

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o estado do mongocrypt_ctx_t

Retorna:



59
60
61
# Arquivo 'lib/mongo/crypt/context.rb', linha 59

def state
  Vinculação.mongocrypt_ctx_state(@ctx_p)
end