class Avo::Services::EncryptionService

def decrypt(message:, purpose:)

def decrypt(message:, purpose:)
  new(message: message, purpose: purpose).decrypt
end

def decrypt

def decrypt
  crypt.decrypt_and_verify(message, purpose: purpose)
end

def encrypt(message:, purpose:)

def encrypt(message:, purpose:)
  new(message: message, purpose: purpose).encrypt
end

def encrypt

def encrypt
  crypt.encrypt_and_sign(message, purpose: purpose)
end

def encryption_key

def encryption_key
  secret_key_base[0..31]
rescue
  # This will fail the decryption process.
  # It's here only to keep Avo from crashing
  SecureRandom.random_bytes(32)
end

def initialize(message:, purpose:)

def initialize(message:, purpose:)
  @message = message
  @purpose = purpose
  @crypt = ActiveSupport::MessageEncryptor.new(encryption_key)
end

def secret_key_base

def secret_key_base
  ENV["SECRET_KEY_BASE"] || Rails.application.credentials.secret_key_base || Rails.application.secrets.secret_key_base
end