类:Mongo::Crypt::ExplicitEncrypter Private
- 继承:
-
对象
- 对象
- Mongo::Crypt::ExplicitEncrypter
- 扩展方式:
- 可转发
- 定义于:
- build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb
Overview
此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。
ExplicitEncrypter 是执行显式加密操作并处理所有关联选项和实例变量的对象。
实例方法摘要折叠
-
# add_key_alt_name ( ID , key_alt_name) ⇒ BSON::Document | nil
private
在具有给定 ID 的密钥保管库集合中为密钥添加 key_alt_name。
-
# create_and_insert_data_key (master_key_document, key_alt_names, key_material = nil) ⇒ BSON::Binary
private
生成用于加密/解密的数据密钥,并将该密钥存储在 KMS 集合中。
-
#解密(值) ⇒ 对象
private
对已加密的值进行解密。
-
# encrypt (value, options) ⇒ BSON::Binary
private
使用指定的加密密钥和算法加密值。
-
# encrypt_expression (expression, options) ⇒ BSON::Binary
private
加密匹配表达式或聚合表达式以查询范围索引。
-
#initialize (key_vault_client, key_vault_namespace, kms_providers, kms_tls_options) ⇒ ExplicitEncrypter
构造函数
private
创建一个新的 ExplicitEncrypter 对象。
-
# rewrap_many_data_key (filter, opts = {}) ⇒ Crypt::RewrapManyDataKeyResult
private
解密多个数据密钥,并使用新的 master_key(重新)加密它们;如果未给出新密钥,则使用当前的 master_key。
构造函数详情
#initialize (key_vault_client, key_vault_namespace, kms_providers, kms_tls_options) ⇒ ExplicitEncrypter
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
创建一个新的 ExplicitEncrypter 对象。
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第38行 def 初始化(key_vault_client, key_vault_namespace, kms_providers, ) Crypt.validate_ffi! @crypt_handle = 句柄.new( kms_providers, , explicit_encryption_only: true ) @encryption_io = EncryptionIO.new( key_vault_client: key_vault_client, metadata_client: nil, key_vault_namespace: key_vault_namespace ) end |
实例方法详细信息
# add_key_alt_name ( ID , key_alt_name) ⇒ BSON::Document | nil
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
在具有给定 ID 的密钥保管库集合中为密钥添加 key_alt_name。
197 198 199 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第197行 def add_key_alt_name(id, key_alt_name) @encryption_io.add_key_alt_name(id, key_alt_name) end |
# create_and_insert_data_key (master_key_document, key_alt_names, key_material = nil) ⇒ BSON::Binary
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
生成用于加密/解密的数据密钥,并将该密钥存储在 KMS 集合中。 生成的密钥使用 KMS 主密钥进行加密。
67 68 69 70 71 72 73 74 75 76 77 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第67行 def create_and_insert_data_key(master_key_document, key_alt_names, key_material = nil) data_key_document = Crypt::DataKeyContext.new( @crypt_handle, @encryption_io, master_key_document, key_alt_names, key_material ).run_state_machine @encryption_io.insert_data_key(data_key_document).Inserted_id end |
#解密(值) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
对已加密的值进行解密
182 183 184 185 186 187 188 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第182行 def 解密(值) Crypt::ExplicitDecryptionContext.new( @crypt_handle, @encryption_io, { v: 值 } ).run_state_machine[' v '] end |
# encrypt (value, options) ⇒ BSON::Binary
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
:key_id 和 :key_alt_name 选项是互斥的。 只需一次即可执行显式加密。
使用指定的加密密钥和算法加密值
如果加密算法设立为“Indexed”。 应设立查询类型
only if encryption algorithm is set to "Indexed". The only allowed
value is "equality".
108 109 110 111 112 113 114 115 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第108行 def 加密(值, ) Crypt::ExplicitEncryptionContext.new( @crypt_handle, @encryption_io, { v: 值 }, ).run_state_machine[' v '] end |
# encrypt_expression (表达式, options) ⇒ BSON::Binary
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
RangePreview算法仅处于实验阶段。 它不是
:key_id 和 :key_alt_name 选项是互斥的。 只需一次即可执行显式加密。
加密匹配表达式或聚合表达式以查询范围索引。
仅当 queryType 为“rangePreview”且算法为“RangePreview”时才支持。 @note:Range算法仅处于实验阶段。 这不是为了
for public use. It is subject to breaking changes.
# @param [ Hash ] 供公众使用的选项。
167 168 169 170 171 172 173 174 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第167行 def encrypt_expression(表达式(expression), ) Crypt::ExplicitEncryptionExpressionContext.new( @crypt_handle, @encryption_io, { v: 表达式(expression) }, ).run_state_machine[' v '] end |
# rewrap_many_data_key (过滤, opts = {}) ⇒ Crypt::RewrapManyDataKeyResult
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
解密多个数据密钥并使用新的 master_key(重新)加密它们,
or with their current master_key if a new one is not given.
250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 |
# File 'build/Ruby-driver-v 2.19 /lib/mongo/crypt/explicit_encrypter.rb', 第250行 def rewrap_many_data_key(筛选器, opts = {}) (opts) master_key_document = master_key_for_provider(opts) rewrap_result = Crypt::RewrapManyDataKeyContext.new( @crypt_handle, @encryption_io, 筛选器, master_key_document ).run_state_machine return RewrapManyDataKeyResult.new(nil) if rewrap_result.nil? 更新 = update_from_data_key_documents(rewrap_result.获取(' v ')) RewrapManyDataKeyResult.new(@encryption_io.update_data_keys(更新)) end |