Method: SymmetricEncryption.select_cipher
- Defined in:
- lib/symmetric_encryption/symmetric_encryption.rb
.select_cipher(&block) ⇒ Object
When no header is present in the encrypted data, this custom Block/Proc is used to determine which cipher to use to decrypt the data.
The Block must return a valid cipher
Parameters
encoded_str
The original encoded string
decoded_str
The string after being decoded using the global encoding
NOTE: Do not attempt to use a secondary cipher if the previous fails
to decrypt due to an OpenSSL::Cipher::CipherError exception.
This is because in a very small, yet significant number of cases it is
possible to decrypt data using the incorrect key.
Clearly the data returned is garbage, but it still successfully
returns a string of data
Example:
SymmetricEncryption.select_cipher do |encoded_str, decoded_str|
# Use cipher version 0 if the encoded string ends with "\n" otherwise
# use the current default cipher
encoded_str.end_with?("\n") ? SymmetricEncryption.cipher(0) : SymmetricEncryption.cipher
end
281 282 283 |
# File 'lib/symmetric_encryption/symmetric_encryption.rb', line 281 def self.select_cipher(&block) @select_cipher = block || nil end |