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

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
定義:
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
# ファイル '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 の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。



56
57
58
# ファイル 'lib/mongo/crypt/context.rb' 行 56

デフォルト ctx_p
  @ctx_p
end

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

# run_rate_度マシン(timeout_handler)= BSON::Document

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

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

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

パラメーター:

次の値を返します。

  • BSON::Document

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

次の値が発生します。



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
# ファイル 'lib/mongo/crypt/context.rb' 行 80

デフォルト run_ State_ Machine(timeout_holder)
  一方 true
    timeout_ms = timeout_holder.retention_timeout_ms。
    ケース 状態
    次の場合: :error
      バインディング.checkpoint_ctx_status(自己)
    次の場合: :ready
      # ステートマシンを確定し、その結果を BSON::Document として返す
      return バインディング.cx_ finalize(自己)
    次の場合: :done
      return nil
    次の場合: :need_mongo_keys
      provider_keys(timeout_ms)
    次の場合: :need_mongo_collinfo
      provider_collection_info(timeout_ms)
    次の場合: :need_mongo_markings
      provider_markings(timeout_ms)
    次の場合: :need_ kms
      feature_ kms
    次の場合: :need_ kms_credentials
      バインディング.cx_provide_ kms_providers(
        自己,
        retrieve_kms_credentials(timeout_holder).to_document
      )
    else
      発生 エラー::CryptError.新着情報(
        "状態#{状態}は Mongo::Crypt ::Context ではサポートされていません"
      )
    end
  end
end

#状態記号

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

mongocrypt_ctx_t の状態を返します

次の値を返します。



61
62
63
# ファイル 'lib/mongo/crypt/context.rb' 行 61

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