クラス: Mongo::Crypt::ExpriteEncrypter Private

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
定義:
build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

Explorer は、明示的な暗号化操作を実行し、関連するすべてのオプションとインスタンス変数を取り扱うオブジェクトです。

インスタンス メソッドの概要を折りたたむ

コンストラクターの詳細

#initialize(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options) ⇒ ExplicitEncrypter

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

新しい Explorer オブジェクトを作成します。

パラメーター:

  • key_vault_client Mongo::Client

    キーヴォールトコレクションに接続するための Mongo::Client のインスタンス。

  • key_vault_namespace ( string )

    db_name.collection_name 形式の、キーヴォールト コレクションの名前空間。

  • kms_providers Crypt::KMS::Credentials

    KMS構成情報のハッシュ。

  • kms_tls_options ハッシュ

    KMS プロバイダーに接続するための TLS オプション。 ハッシュのキーは、K SM プロバイダー名である必要があります。値は、TLS 接続オプションのハッシュである必要があります。 オプションは、Mongo::Client の TLS 接続オプションと同じです。



38
39
40
41
42
43
44
45
46
47
48
49
50
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行38

デフォルト 初期化(key_vault_client, key_vault_namespace, kms_providers, kms_tls_options)
  暗号化.validate_ffi!
  @crypt_handle = ハンドル.新着情報(
    kms_providers,
    kms_tls_options,
    明示的_暗号化_専用: true
  )
  @encryption_io = EncryptionIO.新着情報(
    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 を追加します。

パラメーター:

  • id BSON ::Binary

    新しいキー代替名を追加するキーの ID。

  • key_alt_name ( string )

    追加する新しいキー代替名。

次の値を返します。

  • (BSON::Document | nil)

    キーの代替名を追加する前に、識別されたキーを説明するドキュメント。または、そのようなキーがない場合は nil 。



197
198
199
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行197

デフォルト add_key_alt_name(id, key_alt_name)
  @encryption_io.add_key_alt_name(id, key_alt_name)
end

# create_and_insert_data_key (マスター_キー_ドキュメント、key_alt_names、 key_rate

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

暗号化および復号化に使用されるデータキーを生成し、そのキーを KMS コレクションに保存します。 生成されたキーは KMS マスター キーで暗号化されます。

パラメーター:

  • マスター_キー_ドキュメント Mongo::Crypt::KMS:: MasterKeyDocument

    マスター暗号化キー パラメータを含む マスター キー ドキュメント 。

  • key_alt_names 配列<String> | nil

    新しいデータキーの代替名を指定する文字列の任意の配列。

  • key_rate string | nil (デフォルトはnil

    作成されるデータキーのカスタムキーマテリアルとして使用する任意の96バイト。 key_model オプションが指定されている場合、カスタム キーマテリアル はデータの暗号化と復号化に使用されます。

次の値を返します。

  • BSON ::Binary

    :uuid 型の BSON::Binary オブジェクトとしての新しいデータキーの16バイト UUID 。



67
68
69
70
71
72
73
74
75
76
77
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行67

デフォルト create_and_insert_data_key(マスター_キー_ドキュメント, key_alt_names, key_rate = nil)
  data_key_document = 暗号化::DataKeyContext.新着情報(
    @crypt_handle,
    @encryption_io,
    マスター_キー_ドキュメント,
    key_alt_names,
    key_rate
  ).run_ State_ Machine

  @encryption_io.insert_data_key(data_key_document).insert_id
end

#decryption (値)=オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

すでに暗号化されている値を復号化します

パラメーター:

  • 価値 BSON ::Binary

    復号化されるサブタイプ6 (暗号テキスト)の BSON バイナリ オブジェクト

次の値を返します。

  • オブジェクト

    復号化された値



182
183
184
185
186
187
188
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行182

デフォルト 解読(価値)
  暗号化::ExplicitDecryptionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    { v: 価値 }
  ).run_ State_ Machine['v']
end

#暗号化(値、オプション) = BSON::Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

:key_id オプションと :key_alt_name オプションは相互に排他的です。 明示的な暗号化を実行するには 1 つのみが必要です。

指定された暗号化キーとアルゴリズムを使って値を暗号化します

暗号化アルゴリズムが [ Indexed(インデックス付き) ] に設定されている場合。 クエリタイプは、

only if encryption algorithm is set to "Indexed". The only allowed
value is "equality".

パラメーター:

  • 価値 オブジェクト

    暗号化する値

  • options ハッシュ

オプション ハッシュ( options ):

  • :key_id BSON::Binary

    キーヴォールトコレクションに保存されている暗号化のキーの UUID を表す :uuid の BSON::Binary オブジェクト。

  • :key_alt_name string

    暗号化キーの代替名。

  • : アルゴリズム string

    値を暗号化するために使用されるアルゴリズム。 有効なアルゴリズムは、AEAD_AES_ 256 _CBC_HMAC_SHA_ 512 -決定的)、AEAD_AES_ 256 _CBC_HMAC_SHA_ 512 -ランダム 、インデックス付き 、インデックスなし 。

  • :contention_factor (Integer | nil)

    暗号化アルゴリズムが インデックス付き に設定されている場合に適用される競合係数。 指定しない場合、デフォルトは0の値になります。 競合係数は、暗号化アルゴリズムが [ Indexed(インデックス付き) ] に設定されている場合にのみ設定する必要があります。

  • query_type string | nil

    適用するクエリの種類

次の値を返します。

  • BSON ::Binary

    暗号化された値を表すサブタイプ6 (暗号テキスト)の BSON バイナリ オブジェクト

次の値が発生します。

  • (ArgumentError)

    は、content_factor または query_type のいずれかが設定され、 かつ アルゴリズムが インデックス付きでない 場合に適用されます。



108
109
110
111
112
113
114
115
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行108

デフォルト 暗号化(価値, options)
  暗号化::ExplainEncryptionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    { v: 価値 },
    options
  ).run_ State_ Machine['v']
end

#暗号化_式(式、オプション) =BSON::Binary

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

注:

RangePreview アルゴリズムは実験的なもののみです。 ではありません

注:

:key_id オプションと :key_alt_name オプションは相互に排他的です。 明示的な暗号化を実行するには 1 つのみが必要です。

範囲インデックスをクエリするには、 マッチ式 または 集計式 を暗号化します。

queryType が rangePreview で、アルゴリズムが RangePreview の場合にのみサポートされます。 @note: Range アルゴリズムは実験的なもののみです。 意図したものではありません

for public use. It is subject to breaking changes.

# @ param [ ハッシュ ] オプションは一般での使用を目的としています。

例:

マッチ式を暗号化する。

encryption.encrypt_expression(
  {'$and' =>  [{'field' => {'$gt' => 10}}, {'field' =>  {'$lt' => 20 }}]}
)

集計式を暗号化する。

encryption.encrypt_expression(
  {'$and' =>  [{'$gt' => ['$field', 10]}, {'$lt' => ['$field', 20]}}
)
{$and: [{$gt: [<fieldpath>, <value1>]}, {$lt: [<fieldpath>, <value2>]}]

パラメーター:

  • ハッシュ

    暗号化する 式 。

  • options ハッシュ

    カスタマイズ可能なオプションのセット

オプション ハッシュ( options ):

  • :key_id BSON::Binary

    キーヴォールトコレクションに保存されている暗号化のキーの UUID を表す :uuid の BSON::Binary オブジェクト。

  • :key_alt_name string

    暗号化キーの代替名。

  • : アルゴリズム string

    式を暗号化するために使用されるアルゴリズム。 許可される値は範囲プレビューのみです

  • :contention_factor (Integer | nil)

    適用される競合係数。指定されない場合、デフォルトは0の値になります。

  • query_type string | nil

    適用されるクエリのタイプ。 許可される値は rangePreview のみです。

  • :range_opts ハッシュ | nil

    rangePreview クエリをサポートする Queryable Encryption フィールドのインデックス オプションを指定します。 許可されるオプションは次のとおりです。

    • :min

    • :max

    • :sparsity

    • : 精度

    min、max、スパース、および範囲は、宛先コレクションの encryptedField に設定されている値と一致する必要があります。 doubleと decimal128 の場合は、最小値/最大値/精度はすべて設定されるか、すべてが設定されていない必要があります。

次の値を返します。

  • BSON ::Binary

    暗号化された式を表すサブタイプ6 (暗号テキスト)の BSON バイナリ オブジェクト。

次の値が発生します。

  • (ArgumentError)

    オプションで許可されていない値が設定されている場合。



167
168
169
170
171
172
173
174
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行167

デフォルト encryption_式(, options)
  暗号化::ExplainEncryptionExpressionContext.新着情報(
    @crypt_handle,
    @encryption_io,
    { v:  },
    options
  ).run_ State_ Machine['v']
end

# brewp_many_data_key (フィルター、opts = {}) = Crypt::RewriteManyDataKeyResult

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

複数のデータキーを復号化し、新しいマスター_キーでそれらを(再)暗号化します、

or with their current master_key if a new one is not given.

パラメーター:

  • フィルター ハッシュ

    更新するキーを検索するために使用されるフィルター。

  • options ハッシュ

次の値を返します。



250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/explit_encrypter.rb', 行250

デフォルト rewrap_many_data_key(フィルター, ops = {})
  validate_rewrap_options!(ops)

  マスター_キー_ドキュメント = database_key_for_provider(ops)

  replica_result = 暗号化::RewriteManyDataKeyContext.新着情報(
    @crypt_handle,
    @encryption_io,
    フィルター,
    マスター_キー_ドキュメント
  ).run_ State_ Machine

  return RewriteManyDataKeyResult.新着情報(nil) 場合 replica_result.nil?

  updates = updates_from_data_key_documents(replica_result.fetch('v'))
  RewriteManyDataKeyResult.新着情報(@encryption_io.update_data_keys(updates))
end