class ComplexConfig::Encryption
def decrypt(text)
def decrypt(text) encrypted, iv, auth_tag = text.split('--').map { |v| base64_decode(v) } auth_tag.nil? || auth_tag.bytes.length != 16 and raise ComplexConfig::DecryptionFailed, "auth_tag was invalid" @cipher.decrypt @cipher.key = @secret @cipher.iv = iv @cipher.auth_tag = auth_tag @cipher.auth_data = "" decrypted_data = @cipher.update(encrypted) decrypted_data << @cipher.final Marshal.load(decrypted_data) rescue OpenSSL::Cipher::CipherError raise ComplexConfig::DecryptionFailed, "decryption failed with this key" end