Module: PqcRails::Session::KeyManager
- Defined in:
- lib/pqc_rails/session/key_manager.rb
Overview
セッション暗号化用のHybridKemキーペアを、環境変数またはRails credentialsから読み込む。 実際のfetch/decode処理はKeySource::EnvCredentialsに一本化されており、ここはセッション用の ENV変数名/credentialsキーを添えて委譲するだけ。
鍵ローテーション時は#previous_keypairsが旧鍵世代を返す。PqcCookieStoreはこれを使って 現行鍵で復号できなかったCookieを旧鍵で試す。セッションはDBと違い自然に失効するため、 ロールバック期間(概ね最長セッション有効期限)を過ぎたら運用側がPREVIOUS_ENV_VARを 空にすれば旧鍵は自動的に無効化される。
Constant Summary collapse
- ENV_VAR =
"PQC_SESSION_KEY"- PREVIOUS_ENV_VAR =
"PQC_SESSION_PREVIOUS_KEYS"- CREDENTIALS_KEY =
:pqc_session_key- PREVIOUS_CREDENTIALS_KEY =
:pqc_session_previous_keys
Class Method Summary collapse
- .decode(encoded) ⇒ Object
- .encode(keypair) ⇒ Object
- .key_source ⇒ Object
- .keypair ⇒ Object
- .previous_keypairs ⇒ Object
Class Method Details
.decode(encoded) ⇒ Object
32 |
# File 'lib/pqc_rails/session/key_manager.rb', line 32 def decode(encoded) = KeySource.decode(encoded) |
.encode(keypair) ⇒ Object
31 |
# File 'lib/pqc_rails/session/key_manager.rb', line 31 def encode(keypair) = KeySource.encode(keypair) |
.key_source ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/pqc_rails/session/key_manager.rb', line 34 def key_source KeySource::EnvCredentials.new( env_var: ENV_VAR, previous_env_var: PREVIOUS_ENV_VAR, credentials_key: CREDENTIALS_KEY, previous_credentials_key: PREVIOUS_CREDENTIALS_KEY, label: "session" ) end |
.keypair ⇒ Object
23 24 25 |
# File 'lib/pqc_rails/session/key_manager.rb', line 23 def keypair key_source.current_keypair end |
.previous_keypairs ⇒ Object
27 28 29 |
# File 'lib/pqc_rails/session/key_manager.rb', line 27 def previous_keypairs key_source.previous_keypairs end |