Module: Cerebus
- Defined in:
- lib/cerebus.rb
Constant Summary collapse
- VERSION =
"0.0.3"
Class Method Summary collapse
- .decrypt(incoming, key_filename, passphrase) ⇒ Object
- .decrypt_blowfish(data, key) ⇒ Object
- .decrypt_rsa(data, key_filename, passphrase) ⇒ Object
- .encrypt(data, key_filename) ⇒ Object
- .encrypt_blowfish(data, key) ⇒ Object
- .encrypt_rsa(data, key_filename) ⇒ Object
- .make_key ⇒ Object
Class Method Details
.decrypt(incoming, key_filename, passphrase) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/cerebus.rb', line 35 def Cerebus.decrypt(incoming, key_filename, passphrase) data = StringIO.new(incoming) encrypted_key = [data.read(512)].pack("H*") encrypted_data = [data.read].pack("H*") decrypted_key = Cerebus.decrypt_rsa(encrypted_key, key_filename, passphrase) decrypted_data = Cerebus.decrypt_blowfish(encrypted_data, decrypted_key) end |
.decrypt_blowfish(data, key) ⇒ Object
11 12 13 14 15 |
# File 'lib/cerebus.rb', line 11 def Cerebus.decrypt_blowfish(data, key) cipher = OpenSSL::Cipher::Cipher.new('bf-cbc').decrypt cipher.key = Digest::MD5.digest key.to_s cipher.update(data) << cipher.final end |
.decrypt_rsa(data, key_filename, passphrase) ⇒ Object
16 17 18 19 |
# File 'lib/cerebus.rb', line 16 def Cerebus.decrypt_rsa(data, key_filename, passphrase) opri = OpenSSL::PKey::RSA.new( File.read(key_filename), passphrase ) opri.private_decrypt data end |
.encrypt(data, key_filename) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/cerebus.rb', line 29 def Cerebus.encrypt(data, key_filename) key = Cerebus.make_key encrypted_key = Cerebus.encrypt_rsa(key, key_filename).unpack("H*")[0] encrypted_data = Cerebus.encrypt_blowfish(data, key).unpack("H*")[0] (encrypted_key.to_s + encrypted_data.to_s) end |
.encrypt_blowfish(data, key) ⇒ Object
20 21 22 23 24 |
# File 'lib/cerebus.rb', line 20 def Cerebus.encrypt_blowfish(data, key) cipher = OpenSSL::Cipher::Cipher.new('bf-cbc').encrypt cipher.key = Digest::MD5.digest key cipher.update(data) << cipher.final end |
.encrypt_rsa(data, key_filename) ⇒ Object
25 26 27 28 |
# File 'lib/cerebus.rb', line 25 def Cerebus.encrypt_rsa(data, key_filename) opri = OpenSSL::PKey::RSA.new File.read key_filename opri.public_encrypt data end |
.make_key ⇒ Object
8 9 10 |
# File 'lib/cerebus.rb', line 8 def Cerebus.make_key OpenSSL::Random.random_bytes(56) end |