Class: Crypto::Key

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, digest_string) ⇒ Key

Returns a new instance of Key.



17
18
19
20
21
22
# File 'lib/ampk/crypto.rb', line 17

def initialize(data, digest_string)
	@public = (data =~ /^-----BEGIN (RSA|DSA) PRIVATE KEY-----$/).nil?
	@prefix = @public ? "public" : "private"
	@key = OpenSSL::PKey::RSA.new(data)
	@digest_string = digest_string
end

Instance Attribute Details

#digest_stringObject

Returns the value of attribute digest_string.



16
17
18
# File 'lib/ampk/crypto.rb', line 16

def digest_string
  @digest_string
end

Class Method Details

.from_file(filename, digest_string) ⇒ Object



24
25
26
# File 'lib/ampk/crypto.rb', line 24

def self.from_file(filename, digest_string)
	self.new(File.read(filename), digest_string)
end

Instance Method Details

#decrypt(text) ⇒ Object



32
33
34
# File 'lib/ampk/crypto.rb', line 32

def decrypt(text)
	@key.send("#{@prefix}_decrypt", Base64.decode64(text))
end

#digestObject



48
49
50
# File 'lib/ampk/crypto.rb', line 48

def digest
	OpenSSL::Digest::MD5.new(@digest_string)
end

#encrypt(text) ⇒ Object



28
29
30
# File 'lib/ampk/crypto.rb', line 28

def encrypt(text)
	Base64.encode64(@key.send("#{@prefix}_encrypt", text))
end

#public?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/ampk/crypto.rb', line 44

def public?
	@public
end

#sign(data) ⇒ Object



36
37
38
# File 'lib/ampk/crypto.rb', line 36

def sign(data)
	Base64.encode64(@key.sign(digest, data))
end

#verify(signature, data) ⇒ Object



40
41
42
# File 'lib/ampk/crypto.rb', line 40

def verify(signature, data)
	@key.verify(digest, Base64.decode64(signature), data)
end