nuntius 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/nuntius/key.rb +20 -15
- data/lib/nuntius/version.rb +1 -1
- data/spec/nuntius/key_spec.rb +12 -2
- data/spec/support/keys.rb +4 -1
- metadata +8 -8
data/lib/nuntius/key.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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 ==
|
41
|
+
digest == signature_key.public_decrypt(signature)
|
37
42
|
end
|
38
43
|
|
39
44
|
def encrypt(string)
|
40
|
-
|
45
|
+
encryption_key.public_encrypt(string)
|
41
46
|
end
|
42
47
|
|
43
48
|
def decrypt(string)
|
44
|
-
|
49
|
+
encryption_key.private_decrypt(string)
|
45
50
|
end
|
46
51
|
end
|
47
52
|
end
|
data/lib/nuntius/version.rb
CHANGED
data/spec/nuntius/key_spec.rb
CHANGED
@@ -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 =
|
6
|
+
@key1 = Nuntius::Key.new( get_key_data('alice.pub') )
|
7
7
|
@key2 = Nuntius::Key.new(@key1)
|
8
8
|
|
9
|
-
@key2.
|
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
|
data/spec/support/keys.rb
CHANGED
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.
|
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-
|
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: &
|
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: *
|
24
|
+
version_requirements: *70165842054480
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rspec
|
27
|
-
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: *
|
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:
|
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:
|
88
|
+
hash: 1925440983098606796
|
89
89
|
requirements: []
|
90
90
|
rubyforge_project: nuntius
|
91
91
|
rubygems_version: 1.8.10
|