Class: Familia::Encryption::Registry
- Inherits:
-
Object
- Object
- Familia::Encryption::Registry
- Defined in:
- lib/familia/encryption/registry.rb
Overview
Registry pattern for managing encryption providers
Class Method Summary collapse
-
.available_algorithms ⇒ Object
-
.default_provider ⇒ Object
-
.get(algorithm) ⇒ Object
-
.providers ⇒ Object
-
.register(provider_class) ⇒ Object
-
.reset_default_provider! ⇒ Object
-
.setup! ⇒ Object
Auto-register known providers.
Class Method Details
.available_algorithms ⇒ Object
37 38 39 |
# File 'lib/familia/encryption/registry.rb', line 37 def available_algorithms providers.keys end |
.default_provider ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/familia/encryption/registry.rb', line 25 def default_provider # Select provider with highest priority @default_provider ||= begin available = providers.values.select(&:available?) available.max_by(&:priority)&.new end end |
.get(algorithm) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/familia/encryption/registry.rb', line 18 def get(algorithm) provider_class = providers[algorithm] raise EncryptionError, "Unsupported algorithm: #{algorithm}" unless provider_class provider_class.new end |
.providers ⇒ Object
8 9 10 |
# File 'lib/familia/encryption/registry.rb', line 8 def providers @providers ||= {} end |
.register(provider_class) ⇒ Object
12 13 14 15 16 |
# File 'lib/familia/encryption/registry.rb', line 12 def register(provider_class) return unless provider_class.available? providers[provider_class::ALGORITHM] = provider_class end |
.reset_default_provider! ⇒ Object
33 34 35 |
# File 'lib/familia/encryption/registry.rb', line 33 def reset_default_provider! @default_provider = nil end |
.setup! ⇒ Object
Auto-register known providers
42 43 44 45 46 |
# File 'lib/familia/encryption/registry.rb', line 42 def setup! register(Providers::XChaCha20Poly1305Provider) register(Providers::AESGCMProvider) # Future: register(Providers::ChaCha20Poly1305Provider) end |