Class: Smaak::Crypto

Inherits:
Object
  • Object
show all
Defined in:
lib/smaak/crypto.rb

Class Method Summary collapse

Class Method Details

.decode64(data) ⇒ Object



17
18
19
# File 'lib/smaak/crypto.rb', line 17

def self.decode64(data)
  Base64.strict_decode64(data)
end

.decrypt(data, private_key) ⇒ Object



35
36
37
# File 'lib/smaak/crypto.rb', line 35

def self.decrypt(data, private_key)
  private_key.private_decrypt(Base64.strict_decode64(data))
end

.encode64(data) ⇒ Object



13
14
15
# File 'lib/smaak/crypto.rb', line 13

def self.encode64(data)
  Base64.strict_encode64(data)
end

.encrypt(data, public_key) ⇒ Object



31
32
33
# File 'lib/smaak/crypto.rb', line 31

def self.encrypt(data, public_key)
  Base64.strict_encode64(public_key.public_encrypt(data))
end

.generate_nonceObject



9
10
11
# File 'lib/smaak/crypto.rb', line 9

def self.generate_nonce
  SecureRandom.random_number(10000000000)
end

.obfuscate_psk(psk) ⇒ Object



5
6
7
# File 'lib/smaak/crypto.rb', line 5

def self.obfuscate_psk(psk)
  Digest::MD5.hexdigest(psk.reverse)
end

.sign_data(data, private_key) ⇒ Object



21
22
23
24
# File 'lib/smaak/crypto.rb', line 21

def self.sign_data(data, private_key)
  digest = OpenSSL::Digest::SHA256.new
  private_key.sign(digest, Smaak::Crypto.encode64(data))
end

.sink(stream) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/smaak/crypto.rb', line 39

def self.sink(stream)
 data = ""
 while t = stream.gets do
   data = data + t
 end
 data
end

.verify_signature(signature, data, public_key) ⇒ Object



26
27
28
29
# File 'lib/smaak/crypto.rb', line 26

def self.verify_signature(signature, data, public_key)
  digest = OpenSSL::Digest::SHA256.new
  public_key.verify(digest, signature, data)
end