Classe: Mongo::Crypt::ExplicitEncrypter Private
- Herda:
-
Objeto
- Objeto
- Mongo::Crypt::ExplicitEncrypter
- Estendido por:
- Encaminhável
- Definido em:
- lib/mongo/crypt/explicit_encrypter.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 ExplicitEncrypter é um objeto que executa operações de criptografia explícitas e lida com todas as opções associadas e variáveis de instância.
Recolhimento do Resumo do método de instância
-
#add_key_alt_name(ID, key_alt_name) ➤ BSON::Document | nada
privado
Adiciona um key_alt_name para a chave na key vault collection com o ID fornecido.
-
#create_and_insert_data_key(master_key_document, key_alt_names, key_material = nil) ➤ BSON::Binary
privado
Gera uma chave de dados usada para criptografia/descriptografia e armazena essa chave na coleção KMS.
-
#descriptografar(valor) ➤ Objeto
privado
Descriptografa um valor que já foi criptografado.
-
#delete_key(ID) ➤ Operação::Result
privado
Remove a chave com o ID fornecido da coleção de cofre de chave.
-
#encrypt(value, options) ➤ BSON::Binary
privado
Criptografa um valor usando a chave de encriptação e o algoritmo especificados.
-
#encrypt_expression(expressão, opções) ➤ BSON::Binary
privado
Criptografa uma expressão de correspondência ou expressão de agregação para consultar um índice de faixa.
-
#get_key(id) ⇒ BSON::Document | nil
privado
Encontra uma única chave com o ID fornecido.
-
#get_key_by_alt_name(key_alt_name) ⇒ BSON::Document | nil
privado
Retorna uma chave na key vault collection com o key_alt_name fornecido.
-
#get_keys ➤ Collection::View
privado
Retorna todas as chaves na key vault collection.
-
#initialize(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options, timeout_ms = nil) ➤ ExplicitEncrypter
construtor
privado
Crie um novo objeto ExplicitEncrypter.
-
#remove_key_alt_name(id, key_alt_name) ⇒ BSON::Document | nil
privado
Remove um key_alt_name de uma chave na key vault collection com o ID fornecido.
-
#rewrap_many_data_key(filter, opts = {}) ➤ Crypt::RewrapManyDataKeyResult
privado
Descriptografa várias chaves de dados e (re)criptografa-as com uma nova master_key ou com sua master_key atual se uma nova não for fornecida.
Detalhes do construtor
#initialize(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options, timeout_ms = nil) ➤ ExplicitEncrypter
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.
Crie um novo objeto ExplicitEncrypter.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 40 def inicializar(key_vault_client, key_vault_namespace, kms_providers, , timeout_ms = nada) Criptografar.validate_ffi! @crypt_handle = Lidar.Novo( kms_providers, , explicitamente_encryption_only: true ) @encryption_io = EncryptionIO.Novo( key_vault_client: key_vault_client, metadata_client: nada, key_vault_namespace: key_vault_namespace ) @timeout_ms = timeout_ms end |
Detalhes do método de instância
#add_key_alt_name(ID, key_alt_name) ➤ BSON::Document | nada
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.
Adiciona um key_alt_name para a chave na key vault collection com o ID fornecido.
203 204 205 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 203 def add_key_alt_name(id, key_alt_name) @encryption_io.add_key_alt_name(id, key_alt_name, timeout_ms: @timeout_ms) end |
#create_and_insert_data_key(master_key_document, key_alt_names, key_material = nil) ➤ BSON::Binary
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.
Gera uma chave de dados usada para criptografia/descriptografia e armazena essa chave na coleção KMS. A chave gerada é criptografada com a chave mestre KMS.
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 70 def create_and_insert_data_key(master_key_document, key_alt_names, key_material = nada) data_key_document = Criptografar::DataKeyContext.Novo( @crypt_handle, @encryption_io, master_key_document, key_alt_names, key_material ).run_state_machine(timeout_holder) @encryption_io.insert_data_key( data_key_document, timeout_ms: timeout_holder.remaining_timeout_ms! ).insert_id end |
#descriptografar(valor) ➤ Objeto
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.
Descriptografa um valor que já foi criptografado
188 189 190 191 192 193 194 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 188 def Descriptografar(valor) Criptografar::ExplicitDecryptionContext.Novo( @crypt_handle, @encryption_io, { v: valor } ).run_state_machine(timeout_holder)['v'] end |
#delete_key(ID) ➤ Operação::Result
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.
Remove a chave com o ID fornecido da coleção de cofre de chave.
213 214 215 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 213 def delete_key(id) @encryption_io.delete_key(id, timeout_ms: @timeout_ms) end |
#encrypt(value, options) ➤ BSON::Binary
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.
As opções :key_id e :key_alt_name são mutuamente exclusivas. Apenas um é necessário para executar a criptografia explícita.
Criptografa um valor usando a chave de encriptação e o algoritmo especificados
se o algoritmo de criptografia estiver definido como "Indexado". O tipo de query deve ser definido
only if encryption algorithm is set to "Indexed". The only allowed
value is "equality".
113 114 115 116 117 118 119 120 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 113 def criptografar(valor, ) Criptografar::ExplicitEncryptionContext.Novo( @crypt_handle, @encryption_io, { v: valor }, ).run_state_machine(timeout_holder)['v'] end |
#encrypt_expression(expressão, opções) ➤ BSON::Binary
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.
O algoritmo Range é apenas experimental. Não é
As opções :key_id e :key_alt_name são mutuamente exclusivas. Apenas um é necessário para executar a criptografia explícita.
Criptografa uma expressão de correspondência ou expressão de agregação para consultar um índice de faixa.
Somente suportado quando queryType for "range" e algoritmo for "Range". @note: o algoritmo Range é apenas experimental. Não é destinado
for public use. It is subject to breaking changes.
# Opções de [Hash] destinadas ao uso público.
173 174 175 176 177 178 179 180 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 173 def encryption_expression(expressão, ) Criptografar::ExplicitEncryptionExpressionContext.Novo( @crypt_handle, @encryption_io, { v: expressão }, ).run_state_machine(timeout_holder)['v'] end |
#get_key(id) ⇒ BSON::Document | nil
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.
Encontra uma única chave com o ID fornecido.
223 224 225 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 223 def get_key(id) @encryption_io.get_key(id, timeout_ms: @timeout_ms) end |
#get_key_by_alt_name(key_alt_name) ➤ BSON::Document | nada
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 uma chave na key vault collection com o key_alt_name fornecido.
233 234 235 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 233 def get_key_by_alt_name(key_alt_name) @encryption_io.get_key_by_alt_name(key_alt_name, timeout_ms: @timeout_ms) end |
#get_keys ➤ Collection::View
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 todas as chaves na key vault collection.
rubocop:disable Naming/AccessorMethodName O nome deste método é definido na especificação FLE
242 243 244 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 242 def get_keys @encryption_io.get_keys(timeout_ms: @timeout_ms) end |
#remove_key_alt_name(ID, key_alt_name) ➤ BSON::Document | nada
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.
Remove um key_alt_name de uma chave na key vault collection com o ID fornecido.
254 255 256 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 254 def remove_key_alt_name(id, key_alt_name) @encryption_io.remove_key_alt_name(id, key_alt_name, timeout_ms: @timeout_ms) end |
#rewrap_many_data_key(filter, opts = {}) ➤ Crypt::RewrapManyDataKeyResult
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.
Descriptografa várias chaves de dados e (re)criptografa com uma nova master_key,
or with their current master_key if a new one is not given.
269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 |
# Arquivo 'lib/mongo/crypt/explicit_encrypter.rb', linha 269 def rewrap_many_data_key(filtro, filtro, opciona = {}) (opciona) master_key_document = master_key_for_provider(opciona) rewrap_result = Criptografar::RewrapManyDataKeyContext.Novo( @crypt_handle, @encryption_io, filtro, filtro, master_key_document ).run_state_machine(timeout_holder) Método RewrapManyDataKeyResult.Novo(nada) se rewrap_result.nada? Atualizações = Updates_from_data_key_documents(rewrap_result.buscar('v')) RewrapManyDataKeyResult.Novo( @encryption_io.update_data_keys(Atualizações, timeout_ms: @timeout_ms) ) end |