rbnacl 2.0.0.pre → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +2 -0
- data/CHANGES.md +15 -3
- data/lib/rbnacl.rb +5 -6
- data/lib/rbnacl/auth.rb +9 -2
- data/lib/rbnacl/hash/blake2b.rb +10 -3
- data/lib/rbnacl/random.rb +5 -1
- data/lib/rbnacl/self_test.rb +15 -10
- data/lib/rbnacl/signatures/ed25519/verify_key.rb +6 -19
- data/lib/rbnacl/sodium/version.rb +23 -0
- data/lib/rbnacl/util.rb +0 -2
- data/lib/rbnacl/version.rb +1 -1
- data/rbnacl.gemspec +4 -0
- data/spec/rbnacl/hash/blake2b_spec.rb +7 -3
- data/spec/rbnacl/signatures/ed25519/verify_key_spec.rb +4 -4
- data/spec/shared/authenticator.rb +6 -7
- data/spec/spec_helper.rb +1 -0
- metadata +31 -7
- metadata.gz.sig +2 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4868c75138fed2d13cc2c2e101961e5149a2f950
|
4
|
+
data.tar.gz: 9b2bc9e35ff45cf67715ae49a86f3667dff2609a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6667126547e0562e40b3d653b998058a4cc2f4dab18063d636285ca957d5b3c500eac93966946bcf9989bcad24c312208edbb856b34d53391d6ce7d2eec97932
|
7
|
+
data.tar.gz: 4e2d2f6ac34fa25972361afa81e8d0ae1c08f6b344e3fba43cdba92790daf1b00c824b564f4c5a3a64070fb2b7a6f9698e546ede8ec9088295a43355528958cd
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
data/CHANGES.md
CHANGED
@@ -1,10 +1,22 @@
|
|
1
|
-
2.0.0
|
2
|
-
|
3
|
-
* ZOMG LOTS OF STUFF! We should make we get it all added to this file!
|
1
|
+
2.0.0 (2013-11-07)
|
2
|
+
------------------
|
4
3
|
* Add encrypt/decrypt aliases for Crypto::RandomNonceBox
|
5
4
|
* Rename Crypto module to RbNaCl module
|
6
5
|
* RbNaCl::VerifyKey#verify operand order was reversed. New operand order is
|
7
6
|
signature, message instead of message, signature
|
7
|
+
* RbNaCL::SecretBox#open, RbNaCl::Box#open, Auth#verify and VerifyKey#verify
|
8
|
+
all now raise a (descendent of) CryptoError if the check fails. This ensures
|
9
|
+
failures are handled by the program.
|
10
|
+
* RbNaCl::SecretBox, Box, etc. are all now aliases for the real implementations,
|
11
|
+
which are named after the primitives they provide
|
12
|
+
* Encoders have now gone.
|
13
|
+
* Add support for the Blake2b cryptographic hash algorithm.
|
14
|
+
* Add checks that we have a sufficiently recent version of libsodium (0.4.3+)
|
15
|
+
* Dropped ruby-1.8 support
|
16
|
+
* Call the `sodium_init()` function, to select the best algorithms.
|
17
|
+
* Fix some typos in the documentation
|
18
|
+
* Changes in the low level binding for libsodium and removal of the NaCl module
|
19
|
+
* Add a mutex around calls to randombytes in libsodium
|
8
20
|
|
9
21
|
1.1.0 (2013-04-19)
|
10
22
|
------------------
|
data/lib/rbnacl.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: binary
|
2
2
|
require "rbnacl/version"
|
3
3
|
require "rbnacl/sodium"
|
4
|
+
require "rbnacl/sodium/version"
|
4
5
|
require "rbnacl/serializable"
|
5
6
|
require "rbnacl/key_comparator"
|
6
7
|
require "rbnacl/auth"
|
@@ -11,12 +12,6 @@ require "rbnacl/test_vectors"
|
|
11
12
|
require "rbnacl/init"
|
12
13
|
|
13
14
|
module RbNaCl
|
14
|
-
REQUIRED_LIBSODIUM_VERSION = "0.4.5"
|
15
|
-
|
16
|
-
if Util.sodium_version_string < REQUIRED_LIBSODIUM_VERSION
|
17
|
-
raise "Sorry, you need to install libsodium #{REQUIRED_LIBSODIUM_VERSION}+. You have #{Util.sodium_version_string} installed"
|
18
|
-
end
|
19
|
-
|
20
15
|
# Oh no, something went wrong!
|
21
16
|
#
|
22
17
|
# This indicates a failure in the operation of a cryptographic primitive such
|
@@ -39,6 +34,10 @@ module RbNaCl
|
|
39
34
|
# The signature was forged or otherwise corrupt
|
40
35
|
class BadSignatureError < CryptoError; end
|
41
36
|
|
37
|
+
# The authenticator was forged or otherwise corrupt
|
38
|
+
class BadAuthenticatorError < CryptoError; end
|
39
|
+
|
40
|
+
|
42
41
|
# Public Key Encryption (Box): Curve25519XSalsa20Poly1305
|
43
42
|
require "rbnacl/boxes/curve25519xsalsa20poly1305"
|
44
43
|
require "rbnacl/boxes/curve25519xsalsa20poly1305/private_key"
|
data/lib/rbnacl/auth.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: binary
|
2
2
|
module RbNaCl
|
3
|
+
|
3
4
|
# Secret Key Authenticators
|
4
5
|
#
|
5
6
|
# These provide a means of verifying the integrity of a message, but only
|
@@ -38,6 +39,9 @@ module RbNaCl
|
|
38
39
|
# @param [#to_str] authenticator to be checked
|
39
40
|
# @param [#to_str] message the message to be authenticated
|
40
41
|
#
|
42
|
+
# @raise [BadAuthenticatorError] if the tag isn't valid
|
43
|
+
# @raise [LengthError] if the tag is of the wrong length
|
44
|
+
#
|
41
45
|
# @return [Boolean] Was it valid?
|
42
46
|
def self.verify(key, authenticator, message)
|
43
47
|
new(key).verify(authenticator, message)
|
@@ -60,11 +64,14 @@ module RbNaCl
|
|
60
64
|
# @param [#to_str] authenticator to be checked
|
61
65
|
# @param [#to_str] message the message to be authenticated
|
62
66
|
#
|
67
|
+
# @raise [BadAuthenticatorError] if the tag isn't valid
|
68
|
+
# @raise [LengthError] if the tag is of the wrong length
|
69
|
+
#
|
63
70
|
# @return [Boolean] Was it valid?
|
64
71
|
def verify(authenticator, message)
|
65
72
|
auth = authenticator.to_s
|
66
|
-
|
67
|
-
verify_message(auth, message)
|
73
|
+
Util.check_length(auth, tag_bytes, "Provided authenticator")
|
74
|
+
verify_message(auth, message) || raise(BadAuthenticatorError, "Invalid authenticator provided, message is corrupt")
|
68
75
|
end
|
69
76
|
|
70
77
|
# The crypto primitive for this authenticator instance
|
data/lib/rbnacl/hash/blake2b.rb
CHANGED
@@ -35,11 +35,18 @@ module RbNaCl
|
|
35
35
|
# @return [RbNaCl::Hash::Blake2b] A Blake2b hasher object
|
36
36
|
def initialize(opts = {})
|
37
37
|
@key = opts.fetch(:key, nil)
|
38
|
-
|
39
|
-
|
38
|
+
|
39
|
+
if @key
|
40
|
+
@key_size = @key.bytesize
|
41
|
+
raise LengthError, "key too short" if @key_size < KEYBYTES_MIN
|
42
|
+
raise LengthError, "key too long" if @key_size > KEYBYTES_MAX
|
43
|
+
else
|
44
|
+
@key_size = 0
|
45
|
+
end
|
40
46
|
|
41
47
|
@digest_size = opts.fetch(:digest_size, BYTES_MAX)
|
42
|
-
raise LengthError, "
|
48
|
+
raise LengthError, "digest size too short" if @digest_size < BYTES_MIN
|
49
|
+
raise LengthError, "digest size too long" if @digest_size > BYTES_MAX
|
43
50
|
end
|
44
51
|
|
45
52
|
# Calculate a Blake2b digest
|
data/lib/rbnacl/random.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'thread'
|
2
|
+
|
1
3
|
# encoding: binary
|
2
4
|
module RbNaCl
|
3
5
|
# Functions for random number generation
|
@@ -7,6 +9,8 @@ module RbNaCl
|
|
7
9
|
module Random
|
8
10
|
extend Sodium
|
9
11
|
|
12
|
+
@mutex = Mutex.new
|
13
|
+
|
10
14
|
sodium_function :c_random_bytes,
|
11
15
|
:randombytes_buf,
|
12
16
|
[:pointer, :ulong_long]
|
@@ -17,7 +21,7 @@ module RbNaCl
|
|
17
21
|
# @return [String] random bytes.
|
18
22
|
def self.random_bytes(n=32)
|
19
23
|
buf = RbNaCl::Util.zeros(n)
|
20
|
-
c_random_bytes(buf, n)
|
24
|
+
@mutex.synchronize { c_random_bytes(buf, n) }
|
21
25
|
buf
|
22
26
|
end
|
23
27
|
end
|
data/lib/rbnacl/self_test.rb
CHANGED
@@ -80,12 +80,14 @@ module RbNaCl
|
|
80
80
|
#:nocov:
|
81
81
|
end
|
82
82
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
83
|
+
begin
|
84
|
+
passed = false
|
85
|
+
bad_signature = signature[0,63] + '0'
|
86
|
+
verify_key.verify(bad_signature, message)
|
87
|
+
rescue CryptoError
|
88
|
+
passed = true
|
89
|
+
ensure
|
90
|
+
passed or raise SelfTestFailure, "failed to detect corrupt ciphertext"
|
89
91
|
end
|
90
92
|
end
|
91
93
|
|
@@ -117,10 +119,13 @@ module RbNaCl
|
|
117
119
|
#:nocov:
|
118
120
|
end
|
119
121
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
122
|
+
begin
|
123
|
+
passed = false
|
124
|
+
authenticator.verify(vector(tag), message + ' ')
|
125
|
+
rescue CryptoError
|
126
|
+
passed = true
|
127
|
+
ensure
|
128
|
+
passed or raise SelfTestFailure, "failed to detect corrupt ciphertext"
|
124
129
|
end
|
125
130
|
end
|
126
131
|
end
|
@@ -33,9 +33,14 @@ module RbNaCl
|
|
33
33
|
|
34
34
|
# Verify a signature for a given message
|
35
35
|
#
|
36
|
+
# Raises if the signature is invalid.
|
37
|
+
#
|
36
38
|
# @param signature [String] Alleged signature to be checked
|
37
39
|
# @param message [String] Message to be authenticated
|
38
40
|
#
|
41
|
+
# @raise [BadSignatureError] if the signature check fails
|
42
|
+
# @raise [LengthError] if the signature is of the wrong length
|
43
|
+
#
|
39
44
|
# @return [Boolean] was the signature authentic?
|
40
45
|
def verify(signature, message)
|
41
46
|
signature = signature.to_str
|
@@ -45,25 +50,7 @@ module RbNaCl
|
|
45
50
|
buffer = Util.zeros(sig_and_msg.bytesize)
|
46
51
|
buffer_len = Util.zeros(FFI::Type::LONG_LONG.size)
|
47
52
|
|
48
|
-
self.class.sign_ed25519_open(buffer, buffer_len, sig_and_msg, sig_and_msg.bytesize, @key)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Verify a signature for a given message or raise exception
|
52
|
-
#
|
53
|
-
# "Dangerous" (but really safer) verify that raises an exception if a
|
54
|
-
# signature check fails. This is probably less likely to go unnoticed than
|
55
|
-
# an improperly checked verify, as you are forced to deal with the
|
56
|
-
# exception explicitly (and failing signature checks are certainly an
|
57
|
-
# exceptional condition!)
|
58
|
-
#
|
59
|
-
# The arguments are otherwise the same as the verify method.
|
60
|
-
#
|
61
|
-
# @param message [String] Message to be authenticated
|
62
|
-
# @param signature [String] Alleged signature to be checked
|
63
|
-
#
|
64
|
-
# @return [true] Will raise BadSignatureError if signature check fails
|
65
|
-
def verify!(message, signature)
|
66
|
-
verify(message, signature) or raise BadSignatureError, "signature was forged/corrupt"
|
53
|
+
self.class.sign_ed25519_open(buffer, buffer_len, sig_and_msg, sig_and_msg.bytesize, @key) || raise(BadSignatureError, "signature was forged/corrupt")
|
67
54
|
end
|
68
55
|
|
69
56
|
# Return the raw key in byte format
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rbnacl/sodium'
|
2
|
+
|
3
|
+
module RbNaCl
|
4
|
+
module Sodium
|
5
|
+
module Version
|
6
|
+
MINIMUM_LIBSODIUM_VERSION = "0.4.3"
|
7
|
+
|
8
|
+
extend Sodium
|
9
|
+
attach_function :sodium_version_string, [], :string
|
10
|
+
|
11
|
+
STRING = sodium_version_string
|
12
|
+
MAJOR, MINOR, PATCH = STRING.split(".").map(&:to_i)
|
13
|
+
|
14
|
+
installed_version = [MAJOR, MINOR, PATCH]
|
15
|
+
minimum_version = MINIMUM_LIBSODIUM_VERSION.split(".").map(&:to_i)
|
16
|
+
|
17
|
+
case installed_version <=> minimum_version
|
18
|
+
when -1
|
19
|
+
raise "Sorry, you need to install libsodium #{MINIMUM_LIBSODIUM_VERSION}+. You have #{Version::STRING} installed"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/rbnacl/util.rb
CHANGED
data/lib/rbnacl/version.rb
CHANGED
data/rbnacl.gemspec
CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.description = "Ruby binding to the Networking and Cryptography (NaCl) library"
|
12
12
|
gem.summary = "The Networking and Cryptography (NaCl) library provides a high-level toolkit for building cryptographic systems and protocols"
|
13
13
|
gem.homepage = "https://github.com/cryptosphere/rbnacl"
|
14
|
+
gem.licenses = ["MIT"]
|
14
15
|
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -25,4 +26,7 @@ Gem::Specification.new do |gem|
|
|
25
26
|
|
26
27
|
gem.add_development_dependency "rake"
|
27
28
|
gem.add_development_dependency "rspec", ">= 2.14"
|
29
|
+
|
30
|
+
gem.signing_key = "../.sekretz/gem-private_key.pem"
|
31
|
+
gem.cert_chain = ["bascule.cert"]
|
28
32
|
end
|
@@ -7,11 +7,11 @@ describe RbNaCl::Hash::Blake2b do
|
|
7
7
|
let(:empty_string_hash) { vector :blake2b_empty }
|
8
8
|
|
9
9
|
it "calculates the correct hash for a reference string" do
|
10
|
-
RbNaCl::Hash.blake2b(reference_string).
|
10
|
+
expect(RbNaCl::Hash.blake2b(reference_string)).to eq reference_string_hash
|
11
11
|
end
|
12
12
|
|
13
13
|
it "calculates the correct hash for an empty string" do
|
14
|
-
RbNaCl::Hash.blake2b("").
|
14
|
+
expect(RbNaCl::Hash.blake2b("")).to eq empty_string_hash
|
15
15
|
end
|
16
16
|
|
17
17
|
context "keyed" do
|
@@ -20,7 +20,11 @@ describe RbNaCl::Hash::Blake2b do
|
|
20
20
|
let(:reference_string_hash) { vector :blake2b_keyed_digest }
|
21
21
|
|
22
22
|
it "calculates keyed hashes correctly" do
|
23
|
-
RbNaCl::Hash.blake2b(reference_string, :
|
23
|
+
expect(RbNaCl::Hash.blake2b(reference_string, key: reference_key)).to eq reference_string_hash
|
24
|
+
end
|
25
|
+
|
26
|
+
it "doesn't accept empty strings as a key" do
|
27
|
+
expect { RbNaCl::Hash.blake2b(reference_string, key: "") }.to raise_exception
|
24
28
|
end
|
25
29
|
end
|
26
30
|
end
|
@@ -13,12 +13,12 @@ describe RbNaCl::VerifyKey do
|
|
13
13
|
subject.verify(signature, message).should be_true
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
17
|
-
subject.verify(bad_signature, message).
|
16
|
+
it "raises when asked to verify a bad signature" do
|
17
|
+
expect { subject.verify(bad_signature, message) }.to raise_exception RbNaCl::BadSignatureError
|
18
18
|
end
|
19
19
|
|
20
|
-
it "raises when asked to verify
|
21
|
-
expect { subject.verify
|
20
|
+
it "raises when asked to verify a short signature" do
|
21
|
+
expect { subject.verify(bad_signature[0,63], message) }.to raise_exception RbNaCl::LengthError
|
22
22
|
end
|
23
23
|
|
24
24
|
it "serializes to bytes" do
|
@@ -53,19 +53,18 @@ shared_examples "authenticator" do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
it "fails to validate an invalid authenticator" do
|
56
|
-
described_class.verify(key, tag, message+"\0").
|
56
|
+
expect { described_class.verify(key, tag, message+"\0") }.to raise_error(RbNaCl::BadAuthenticatorError)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "fails to validate a short authenticator" do
|
60
|
-
described_class.verify(key, tag[0,tag.bytesize - 2], message).
|
60
|
+
expect { described_class.verify(key, tag[0,tag.bytesize - 2], message) }.to raise_error(RbNaCl::LengthError)
|
61
61
|
end
|
62
62
|
|
63
63
|
it "fails to validate a long authenticator" do
|
64
|
-
described_class.verify(key, tag+"\0", message).
|
64
|
+
expect { described_class.verify(key, tag+"\0", message) }.to raise_error(RbNaCl::LengthError)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
68
|
-
|
69
68
|
context "Instance methods" do
|
70
69
|
let(:authenticator) { described_class.new(key) }
|
71
70
|
|
@@ -81,15 +80,15 @@ shared_examples "authenticator" do
|
|
81
80
|
end
|
82
81
|
|
83
82
|
it "fails to validate an invalid authenticator" do
|
84
|
-
authenticator.verify(tag, message+"\0").
|
83
|
+
expect { authenticator.verify(tag, message+"\0") }.to raise_error(RbNaCl::BadAuthenticatorError)
|
85
84
|
end
|
86
85
|
|
87
86
|
it "fails to validate a short authenticator" do
|
88
|
-
authenticator.verify(tag[0,tag.bytesize - 2], message).
|
87
|
+
expect { authenticator.verify(tag[0,tag.bytesize - 2], message) }.to raise_error(RbNaCl::LengthError)
|
89
88
|
end
|
90
89
|
|
91
90
|
it "fails to validate a long authenticator" do
|
92
|
-
authenticator.verify(tag+"\0", message).
|
91
|
+
expect { authenticator.verify(tag+"\0", message) }.to raise_error(RbNaCl::LengthError)
|
93
92
|
end
|
94
93
|
end
|
95
94
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,37 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbnacl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
8
8
|
- Jonathan Stott
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
|
11
|
+
cert_chain:
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDbDCCAlSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MRAwDgYDVQQDDAdiYXNj
|
15
|
+
dWxlMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNjb20w
|
16
|
+
HhcNMTMwMzA4MDYwNzA1WhcNMTQwMzA4MDYwNzA1WjA+MRAwDgYDVQQDDAdiYXNj
|
17
|
+
dWxlMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNjb20w
|
18
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC8S9Y1eahE5w/b0P1jVbO4
|
19
|
+
nZbGwJGnGUTPPujZZfCXdkJu1pa8MvsU+pzgm051/yy9bWUp5eMTIjP9Qg+v92gK
|
20
|
+
bfjiUoVwAqISW7zD98gbXwdOgcbCjPFfdP7XmAlxbmq0/T+kYXVngfYo737SukWz
|
21
|
+
/3LLzfmtzBAZipJhTL3EAvlD2O2n2m/JARtxUwHjohd5199BBrSgbjKBXrbZ159F
|
22
|
+
rJzDZef9SLCeXbVL218C4Z4Yf3QvOAvlkBQbYZmD0jnivAvXaoylZnCgIpGUnEiA
|
23
|
+
C3raBW2/zMeKZC7dxygqezxwKiA/u4rxeCK3XDwYlRkF35UtAyIbIJYGODJL4MR9
|
24
|
+
AgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRP3DGA
|
25
|
+
NBCsdSMAHGzKpylnYy90ejAcBgNVHREEFTATgRFiYXNjdWxlQGdtYWlsLmNvbTAc
|
26
|
+
BgNVHRIEFTATgRFiYXNjdWxlQGdtYWlsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEA
|
27
|
+
NhP3rks+x49coXHS0vPPxXb7V0HDnuYP5R+pN1+T2Z7D4qwJKjEF4EC8mQYtwcNe
|
28
|
+
Qquz1t9Uxtr7i3QqjnwhNKlIVig1nikNF+FnApjYs4mwAtMHn77WOwx8wkn7ykej
|
29
|
+
7sF7dRE+BLgpJ88/ycnA6zsEiSQVcIMDVpiYUqUBx+MDNnq5jw5dI0Kct8vBirNA
|
30
|
+
QiZB6YQD1raVKUTpRubo4i0SnGpbMSxMy+YreqwNQiWG9iWCbp0JJWaOPSYTeQHe
|
31
|
+
3L/NVZQttSvxjd+WF6mA9yeCjpomboQMP36GRIZ30SoOVPMGvZ/+QpW52QU7mJW5
|
32
|
+
GzWyf92p0uscgUZVTYixjg==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2013-11-07 00:00:00.000000000 Z
|
13
35
|
dependencies:
|
14
36
|
- !ruby/object:Gem::Dependency
|
15
37
|
name: ffi
|
@@ -102,6 +124,7 @@ files:
|
|
102
124
|
- lib/rbnacl/signatures/ed25519/signing_key.rb
|
103
125
|
- lib/rbnacl/signatures/ed25519/verify_key.rb
|
104
126
|
- lib/rbnacl/sodium.rb
|
127
|
+
- lib/rbnacl/sodium/version.rb
|
105
128
|
- lib/rbnacl/test_vectors.rb
|
106
129
|
- lib/rbnacl/util.rb
|
107
130
|
- lib/rbnacl/version.rb
|
@@ -130,7 +153,8 @@ files:
|
|
130
153
|
- tasks/ci.rake
|
131
154
|
- tasks/rspec.rake
|
132
155
|
homepage: https://github.com/cryptosphere/rbnacl
|
133
|
-
licenses:
|
156
|
+
licenses:
|
157
|
+
- MIT
|
134
158
|
metadata: {}
|
135
159
|
post_install_message:
|
136
160
|
rdoc_options: []
|
@@ -143,12 +167,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
143
167
|
version: '0'
|
144
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
169
|
requirements:
|
146
|
-
- - '
|
170
|
+
- - '>='
|
147
171
|
- !ruby/object:Gem::Version
|
148
|
-
version:
|
172
|
+
version: '0'
|
149
173
|
requirements: []
|
150
174
|
rubyforge_project:
|
151
|
-
rubygems_version: 2.0.
|
175
|
+
rubygems_version: 2.0.2
|
152
176
|
signing_key:
|
153
177
|
specification_version: 4
|
154
178
|
summary: The Networking and Cryptography (NaCl) library provides a high-level toolkit
|
metadata.gz.sig
ADDED