nuntius 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,25 +1,30 @@
1
1
  module Nuntius
2
2
  class Key
3
+ attr_accessor :signature_key
4
+ attr_accessor :encryption_key
5
+
3
6
  def initialize(key_data)
4
- @key = OpenSSL::PKey::RSA.new(key_data)
7
+ case key_data
8
+ when Hash
9
+ self.signature_key = OpenSSL::PKey::RSA.new( key_data[:signature] )
10
+ self.encryption_key = OpenSSL::PKey::RSA.new( key_data[:encryption] )
11
+ when Nuntius::Key
12
+ self.signature_key = key_data.signature_key
13
+ self.encryption_key = key_data.encryption_key
14
+ else
15
+ self.signature_key = self.encryption_key = OpenSSL::PKey::RSA.new(key_data)
16
+ end
5
17
  end
6
18
 
7
19
  def private?
8
- @key.private?
9
- end
10
-
11
- def to_str
12
- @key.to_pem
13
- end
14
-
15
- def hash
16
- @key.hash
20
+ signature_key.private? && encryption_key.private?
17
21
  end
18
22
 
19
23
  def ==(key)
20
24
  case key
21
25
  when Nuntius::Key
22
- key.hash == self.hash
26
+ signature_key == key.signature_key &&
27
+ encryption_key == key.encryption_key
23
28
  else
24
29
  false
25
30
  end
@@ -28,20 +33,20 @@ module Nuntius
28
33
  def sign(string)
29
34
  digest = OpenSSL::Digest::SHA512.new.digest(string)
30
35
 
31
- @key.private_encrypt(digest)
36
+ signature_key.private_encrypt(digest)
32
37
  end
33
38
 
34
39
  def validate(message,signature)
35
40
  digest = OpenSSL::Digest::SHA512.new.digest(message)
36
- digest == @key.public_decrypt(signature)
41
+ digest == signature_key.public_decrypt(signature)
37
42
  end
38
43
 
39
44
  def encrypt(string)
40
- @key.public_encrypt(string)
45
+ encryption_key.public_encrypt(string)
41
46
  end
42
47
 
43
48
  def decrypt(string)
44
- @key.private_decrypt(string)
49
+ encryption_key.private_decrypt(string)
45
50
  end
46
51
  end
47
52
  end
@@ -1,3 +1,3 @@
1
1
  module Nuntius
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -3,10 +3,20 @@ require 'spec_helper'
3
3
 
4
4
  describe Nuntius::Key do
5
5
  it "should be created using another key" do
6
- @key1 = get_key('alice.pub')
6
+ @key1 = Nuntius::Key.new( get_key_data('alice.pub') )
7
7
  @key2 = Nuntius::Key.new(@key1)
8
8
 
9
- @key2.to_str.should == @key1.to_str
9
+ @key2.should == @key1
10
+ end
11
+
12
+ it "should handle different signing/encryption keys" do
13
+ @signature = get_key_data('bob.pub')
14
+ @encryption = get_key_data('alice.pub')
15
+
16
+ @key = Nuntius::Key.new({
17
+ :signature => @signature,
18
+ :encryption => @encryption
19
+ })
10
20
  end
11
21
 
12
22
  end
@@ -1,3 +1,6 @@
1
+ def get_key_data(key_name)
2
+ File.read( File.expand_path("../../keys/"+key_name, __FILE__) )
3
+ end
1
4
  def get_key(key_name)
2
- Nuntius::Key.new File.read( File.expand_path("../../keys/"+key_name, __FILE__) )
5
+ Nuntius::Key.new( get_key_data(key_name) )
3
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nuntius
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-19 00:00:00.000000000 Z
12
+ date: 2011-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70219398937400 !ruby/object:Gem::Requirement
16
+ requirement: &70165842054480 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70219398937400
24
+ version_requirements: *70165842054480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70219398935880 !ruby/object:Gem::Requirement
27
+ requirement: &70165842053500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 2.7.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70219398935880
35
+ version_requirements: *70165842053500
36
36
  description: Nuntius is a simple scheme to send and receive messages in a cryptographicaly
37
37
  secure and compatible way.
38
38
  email: me@sagmor.com
@@ -76,7 +76,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
76
76
  version: '0'
77
77
  segments:
78
78
  - 0
79
- hash: 4207748026087643604
79
+ hash: 1925440983098606796
80
80
  required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
@@ -85,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  version: '0'
86
86
  segments:
87
87
  - 0
88
- hash: 4207748026087643604
88
+ hash: 1925440983098606796
89
89
  requirements: []
90
90
  rubyforge_project: nuntius
91
91
  rubygems_version: 1.8.10