Classe: Mongo::Crypt::Context Private
- Herda:
-
Objeto
- Objeto
- Mongo::Crypt::Context
- Estendido por:
- Encaminhável
- Definido em:
- build/ruby-driver-v2.19/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 em torno do 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.)
Subclasses conhecidas diretas
AutoDecryptionContext, AutoEncryptionContext, DataKeyContext, ExplicitDecryptionContext, ExplicitEncryptionContext, RewrapManyDataKeyContext
Recolhimento do Resumo do atributo de instância
- #ctx_p 3 Objeto Somente leitura privado
Recolhimento do Resumo do método de instância
-
#initialize(mongocrypt_handle, io) ➤ Contexto
construtor
privado
Crie um novo objeto Contexto.
-
#run_state_machine ➤ BSON::Document
privado
Executa a máquina de estado mongocrypt_ctx_t e lida com toda a E/S em nome da libmongocrypt.
-
#estado ➤ Símbolo
privado
Retorna o estado do mongocrypt_ctx_t.
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
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', linha 41 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.
57 58 59 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', linha 57 def ctx_p @ctx_p end |
Detalhes do método de instância
#run_state_machine ➤ 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 da libmongocrypt
Este método não está atualmente testado na unidade. É uma integração testada em spec/integration/explicit_encryption_spec.rb
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', linha 78 def run_state_machine enquanto true 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 filtro, filtro = Vinculação.ctx_mongo_op(auto) @encryption_io.find_keys(filtro, filtro).cada fazer |chave| mongocrypt_feed(chave) se chave end mongocrypt_done quando :need_mongo_collinfo filtro, filtro = Vinculação.ctx_mongo_op(auto) Resultado = @encryption_io.collection_info(@db_name, filtro, filtro) mongocrypt_feed(Resultado) se Resultado mongocrypt_done quando :need_mongo_markings cmd = Vinculação.ctx_mongo_op(auto) Resultado = @encryption_io.marque_command(cmd) mongocrypt_feed(Resultado) mongocrypt_done quando :need_kms enquanto kms_context = Vinculação.ctx_next_kms_ctx(auto) fazer fornecedor = Vinculação.kms_ctx_get_kms_provider(kms_context) = @mongocrypt_handle.(fornecedor) @encryption_io.feed_kms(kms_context, ) end Vinculação.ctx_kms_done(auto) quando :need_kms_credentials Vinculação.ctx_provide_kms_providers( auto, retrieve_kms_credentials.to_document ) mais aumentar Erro::Criptografia de erro.Novo( "O estado #{state} não é suportado pelo Mongo::Crypt::Context" ) end end end |
#estado ➤ Sí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
62 63 64 |
# File 'build/ruby-driver-v2.19/lib/mongo/crypt/context.rb', linha 62 def state Vinculação.mongocrypt_ctx_state(@ctx_p) end |