Class: Keycardai::OAuth::FilePrivateKeyStorage
- Inherits:
-
Object
- Object
- Keycardai::OAuth::FilePrivateKeyStorage
- Defined in:
- lib/keycardai/oauth/private_key.rb
Overview
Pluggable keypair persistence for WebIdentity. The duck type is load(key_id) returning a PEM string or nil, and store(key_id, pem). This default stores PEM files on disk, checking legacy directories on load so existing keys keep working.
Constant Summary collapse
- DEFAULT_DIR =
"./server_keys"- LEGACY_DIRS =
["./mcp_keys"].freeze
Instance Method Summary collapse
-
#initialize(dir: DEFAULT_DIR) ⇒ FilePrivateKeyStorage
constructor
A new instance of FilePrivateKeyStorage.
-
#load(key_id) ⇒ String?
The stored PEM, or nil when absent.
- #store(key_id, pem) ⇒ void
Constructor Details
#initialize(dir: DEFAULT_DIR) ⇒ FilePrivateKeyStorage
Returns a new instance of FilePrivateKeyStorage.
19 20 21 |
# File 'lib/keycardai/oauth/private_key.rb', line 19 def initialize(dir: DEFAULT_DIR) @dir = dir end |
Instance Method Details
#load(key_id) ⇒ String?
Returns the stored PEM, or nil when absent.
25 26 27 28 29 30 31 |
# File 'lib/keycardai/oauth/private_key.rb', line 25 def load(key_id) [@dir, *LEGACY_DIRS].each do |dir| path = File.join(dir, "#{key_id}.pem") return File.read(path) if File.file?(path) end nil end |
#store(key_id, pem) ⇒ void
This method returns an undefined value.
36 37 38 39 40 41 |
# File 'lib/keycardai/oauth/private_key.rb', line 36 def store(key_id, pem) FileUtils.mkdir_p(@dir) path = File.join(@dir, "#{key_id}.pem") File.write(path, pem) File.chmod(0o600, path) end |