Module: Syde::Vault::Crypto
- Defined in:
- lib/syde/crypto.rb
Class Method Summary collapse
- .aes(mode, key, iv, text) ⇒ Object
- .decrypt(key, iv, ciphertext) ⇒ Object
- .digest(input) ⇒ Object
- .encrypt(key, iv, plaintext) ⇒ Object
- .new_iv ⇒ Object
- .random_bytes(length) ⇒ Object
Class Method Details
.aes(mode, key, iv, text) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/syde/crypto.rb', line 12 def self.aes(mode, key, iv, text) c = cipher.send(mode) c.key = digest(key) c.iv = iv c.update(text) << c.final end |
.decrypt(key, iv, ciphertext) ⇒ Object
23 24 25 |
# File 'lib/syde/crypto.rb', line 23 def self.decrypt(key, iv, ciphertext) aes(:decrypt, key, iv, ciphertext) end |
.digest(input) ⇒ Object
27 28 29 |
# File 'lib/syde/crypto.rb', line 27 def self.digest(input) OpenSSL::Digest::SHA256.digest(input) end |
.encrypt(key, iv, plaintext) ⇒ Object
19 20 21 |
# File 'lib/syde/crypto.rb', line 19 def self.encrypt(key, iv, plaintext) aes(:encrypt, key, iv, plaintext) end |
.new_iv ⇒ Object
8 9 10 |
# File 'lib/syde/crypto.rb', line 8 def self.new_iv cipher.random_iv end |
.random_bytes(length) ⇒ Object
4 5 6 |
# File 'lib/syde/crypto.rb', line 4 def self.random_bytes(length) File.open("/dev/urandom") { |f| f.read(length) } end |