Class: Toolx::Core::SimpleCrypt

Inherits:
Object
  • Object
show all
Defined in:
lib/toolx/core/simple_crypt.rb

Constant Summary collapse

MissingSecretError =
Class.new(StandardError)
EncryptionError =
Class.new(StandardError)
DecryptionError =
Class.new(StandardError)

Class Method Summary collapse

Class Method Details

.crypt(secret = nil) ⇒ Object



12
13
14
15
# File 'lib/toolx/core/simple_crypt.rb', line 12

def self.crypt(secret = nil)
  key = secret.presence || default_secret
  ActiveSupport::MessageEncryptor.new(key[0..31].bytes.pack('c*'))
end

.decrypt(value, secret: nil) ⇒ Object



23
24
25
26
27
# File 'lib/toolx/core/simple_crypt.rb', line 23

def self.decrypt(value, secret: nil)
  crypt(secret).decrypt_and_verify(value)
rescue => e
  raise DecryptionError, "Decryption failed: #{e.message}"
end

.default_secretObject



8
9
10
# File 'lib/toolx/core/simple_crypt.rb', line 8

def self.default_secret
  ENV['CRYPT_SECRET'].presence || Rails.application.credentials.secret_key_base.presence || raise(MissingSecretError, 'Encryption secret not configured')
end

.encrypt(value, secret: nil) ⇒ Object



17
18
19
20
21
# File 'lib/toolx/core/simple_crypt.rb', line 17

def self.encrypt(value, secret: nil)
  crypt(secret).encrypt_and_sign(value)
rescue => e
  raise EncryptionError, "Encryption failed: #{e.message}"
end