クラス: Mongo::Crypt::Context Private

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

Overview

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

暗号化と復号化のステート マシンを管理する mongocrypt_ctx_t を囲むラッパー。

このクラスは、さまざまな目的で初期化されるコンテキスト間での共有メソッドを定義するスーパークラス(例: データキーの作成、暗号化、明示的な暗号化など)

既知のサブクラスを直接確認

AutoDecryptionContextAutoEncryptionContextDataKeyContext明示的DecryptionContext 、明示暗号化コンテキスト 、 RewriteManyDataKeyContext

インスタンス属性の概要を折りたたむ

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

コンストラクターの詳細

# initialize (mongocrypt_handle, io) =コンテキスト

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

新しいコンテキスト オブジェクトの作成

パラメーター:

  • mongocrypt_handle Mongo::Crypt::Handle

    新しいコンテキスト オブジェクトの作成に使用される libmongocrypt のハンドル。

  • io ClientEncryption::IO

    ステート マシンの実行に必要なドライバー I/O メソッドを実装する IO クラスのインスタンス。



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/context.rb', 行41

デフォルト 初期化(mongocrypt_handle, io)
  @mongocrypt_handle = mongocrypt_handle
  理想的には、このレベルの API はポインターを渡しません
  はオブジェクト間の # 参照であるため、このメソッド署名は変更される可能性があります。

  #FFI::AutoPointer はカスタム リリース戦略を使用して自動的に解放
  このオブジェクトがスコープを超えるとポインターは 表示されます
  @ctx_p = FFI::AutoPointer.新着情報(
    バインディング.mongocrypt_ctx_new(@mongocrypt_handle.参照),
    バインディング.メソッド(:mongocrypt_ctx_detry)
  )

  @encryption_io = io
  @cached_azure_token = nil
end

インスタンス属性の詳細

#ctx_p =オブジェクト(読み取り専用)

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



57
58
59
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/context.rb', 行57

デフォルト ctx_p
  @ctx_p
end

インスタンス メソッドの詳細

# run_ State_ Machine = BSON::Document

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

mongocrypt_ctx_t ステート マシンを実行し、libmongocrypt に代わってすべての I/O を処理します

このメソッドは現在ユニットテストされていません。 仕様/統合/明示的_encryption_spec.rb で統合がテストされています

次の値を返します。

  • BSON::Document

    ステート マシンの結果を表す BSON ドキュメント。 内容は、コンテキストがどのように初期化されたかによって異なる場合があります。

次の値が発生します。



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
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/context.rb', 行78

デフォルト run_ State_ Machine
  一方 true
    ケース 状態
    次の場合: :error
      バインディング.checkpoint_ctx_status(自己)
    次の場合: :ready
      # ステートマシンを確定し、その結果を BSON::Document として返す
      return バインディング.cx_ finalize(自己)
    次の場合: :done
      return nil
    次の場合: :need_mongo_keys
      フィルター = バインディング.cx_mongo_op(自己)

      @encryption_io.find_keys(フィルター). 行う |キー|
        mongocrypt_feed(キー) 場合 キー
      end

      mongocrypt_done
    次の場合: :need_mongo_collinfo
      フィルター = バインディング.cx_mongo_op(自己)

      結果 = @encryption_io.collection_info(@db_name, フィルター)
      mongocrypt_feed(結果) 場合 結果

      mongocrypt_done
    次の場合: :need_mongo_markings
      cmd = バインディング.cx_mongo_op(自己)

      結果 = @encryption_io.map_command(cmd)
      mongocrypt_feed(結果)

      mongocrypt_done
    次の場合: :need_ kms
      一方 kms_context = バインディング.ctx_next_kms_ctx(自己) 行う
        プロバイダー = バインディング.kms_ctx_get_ kms_provider(kms_context)
        tls_options = @mongocrypt_handle.kms_tls_options(プロバイダー)
        @encryption_io.feature_ kms(kms_context, tls_options)
      end

      バインディング.ctx_kms_done(自己)
    次の場合: :need_ kms_credentials
      バインディング.cx_provide_ kms_providers(
        自己,
        retrieve_kms_credentials.to_document
      )
    else
      発生 エラー::CryptError.新着情報(
        "状態#{状態}は Mongo::Crypt ::Context ではサポートされていません"
      )
    end
  end
end

#状態記号

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

mongocrypt_ctx_t の状態を返します

次の値を返します。



62
63
64
# ファイル 'Build/ruby-Driver-v 2.19 /lib/mongo/crypt/context.rb', 行62

デフォルト 状態
  バインディング.mongocrypt_ctx_ State(@ctx_p)
end