Module: Familia::Features::EncryptedFields::ClassMethods
- Defined in:
- lib/familia/features/encrypted_fields.rb
Instance Method Summary collapse
-
#encrypted_field(name, aad_fields: [], **kwargs) ⇒ Object
Define an encrypted field that transparently encrypts/decrypts values.
-
#encrypted_field?(field_name) ⇒ Boolean
Check if a field is encrypted.
-
#encrypted_fields ⇒ Array<Symbol>
Returns list of encrypted field names defined on this class.
-
#encryption_info ⇒ Hash
Get encryption algorithm information.
Instance Method Details
#encrypted_field(name, aad_fields: [], **kwargs) ⇒ Object
Define an encrypted field that transparently encrypts/decrypts values
Encrypted fields are stored as JSON objects containing the encrypted ciphertext along with cryptographic metadata. Values are automatically encrypted on assignment and decrypted on access.
290 291 292 293 294 295 296 297 298 |
# File 'lib/familia/features/encrypted_fields.rb', line 290 def encrypted_field(name, aad_fields: [], **kwargs) @encrypted_fields ||= [] @encrypted_fields << name unless @encrypted_fields.include?(name) require_relative 'encrypted_fields/encrypted_field_type' field_type = EncryptedFieldType.new(name, aad_fields: aad_fields, **kwargs) register_field_type(field_type) end |
#encrypted_field?(field_name) ⇒ Boolean
Check if a field is encrypted
313 314 315 |
# File 'lib/familia/features/encrypted_fields.rb', line 313 def encrypted_field?(field_name) encrypted_fields.include?(field_name.to_sym) end |
#encrypted_fields ⇒ Array<Symbol>
Returns list of encrypted field names defined on this class
304 305 306 |
# File 'lib/familia/features/encrypted_fields.rb', line 304 def encrypted_fields @encrypted_fields || [] end |
#encryption_info ⇒ Hash
Get encryption algorithm information
321 322 323 324 325 326 327 328 329 |
# File 'lib/familia/features/encrypted_fields.rb', line 321 def encryption_info provider = Familia::Encryption.current_provider { algorithm: provider.algorithm_name, key_size: provider.key_size, nonce_size: provider.nonce_size, tag_size: provider.tag_size } end |