rbnacl 2.0.0 → 3.0.0
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.
- checksums.yaml +4 -4
- data/.rspec +2 -1
- data/.travis.yml +4 -1
- data/CHANGES.md +7 -0
- data/README.md +1 -36
- data/Rakefile +1 -1
- data/lib/rbnacl.rb +1 -1
- data/lib/rbnacl/auth.rb +1 -1
- data/lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb +1 -2
- data/lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb +0 -1
- data/lib/rbnacl/group_elements/curve25519.rb +1 -1
- data/lib/rbnacl/hash.rb +0 -1
- data/lib/rbnacl/self_test.rb +0 -1
- data/lib/rbnacl/{random_nonce_box.rb → simple_box.rb} +9 -6
- data/lib/rbnacl/util.rb +3 -0
- data/lib/rbnacl/version.rb +1 -1
- data/rbnacl.gemspec +2 -2
- data/spec/rbnacl/simple_box_spec.rb +58 -0
- data/spec/rbnacl/util_spec.rb +10 -0
- data/spec/shared/box.rb +0 -2
- data/tasks/rubocop.rake +3 -0
- metadata +35 -41
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -2
- data/spec/rbnacl/random_nonce_box_spec.rb +0 -49
- metadata.gz.sig +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e38c7e8385a6216940cb6463b7735efb3bd44b8
|
4
|
+
data.tar.gz: f399bf5adae36466df158d6a5384ef87d6ab77d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50b1a9ced0b13cceb527796a276200619448b99dd3156497e97378177537d9f4cb2ad8b08accd169684d2c9277cdf125d23d07dc0a0113acea025a6f3ebe5d37
|
7
|
+
data.tar.gz: 1a1d82499b6b8f0d354fa0d54e018ba98b4dad94ed78a8e8f06efe0f9935296611c83fcaedffbf51cd50a787d80631c48aec3761746ab87d44f443e3ffb9a5a1
|
data/.rspec
CHANGED
data/.travis.yml
CHANGED
@@ -3,15 +3,18 @@ script: "LD_LIBRARY_PATH=lib bundle exec rake ci"
|
|
3
3
|
rvm:
|
4
4
|
- 1.9.3
|
5
5
|
- 2.0.0
|
6
|
+
- 2.1.0
|
6
7
|
- ruby-head
|
7
8
|
- jruby
|
8
9
|
- jruby-head
|
9
|
-
- rbx
|
10
|
+
- rbx
|
11
|
+
- rbx-head
|
10
12
|
|
11
13
|
matrix:
|
12
14
|
allow_failures:
|
13
15
|
- rvm: ruby-head
|
14
16
|
- rvm: jruby-head
|
17
|
+
- rvm: rbx-head
|
15
18
|
|
16
19
|
notifications:
|
17
20
|
irc: "irc.freenode.org#cryptosphere"
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
3.0.0 (2014-04-22)
|
2
|
+
------------------
|
3
|
+
* Rename RandomNonceBox to SimpleBox (backwards compatibility preserved)
|
4
|
+
* Reverse documented order of SimpleBox/RandomNonceBox initialize parameters.
|
5
|
+
Technically backwards compatible, but confusing.
|
6
|
+
* Ensure all strings are ASCII-8BIT/BINARY encoding prior to use
|
7
|
+
|
1
8
|
2.0.0 (2013-11-07)
|
2
9
|
------------------
|
3
10
|
* Add encrypt/decrypt aliases for Crypto::RandomNonceBox
|
data/README.md
CHANGED
@@ -214,41 +214,6 @@ Sure, here you go:
|
|
214
214
|
|
215
215
|

|
216
216
|
|
217
|
-
### Is it full of NSA backdoors?
|
218
|
-
|
219
|
-

|
220
|
-
|
221
|
-
The design of RbNaCl's primitives is completely free from NIST (and by
|
222
|
-
association, NSA) influence, with the following minor exceptions:
|
223
|
-
|
224
|
-
* The Poly1305 MAC, used for authenticating integrity of ciphertexts, uses AES
|
225
|
-
as a replaceable component
|
226
|
-
* The Ed25519 digital signature algorithm uses SHA-512 for both key derivation
|
227
|
-
and computing message digests
|
228
|
-
* APIs are provided to certain NIST hash functions, including SHA-256, SHA-512,
|
229
|
-
and their associated HMAC counterparts
|
230
|
-
|
231
|
-
Otherwise, all of the algorithms in NaCl were designed by Dan Bernstein and his
|
232
|
-
collaborators.
|
233
|
-
|
234
|
-
The design choices in NaCl, particularly in regard to the Curve25519
|
235
|
-
Diffie-Hellman function, emphasize security (whereas [NIST curves emphasize
|
236
|
-
"performance" at the cost of security][nist-security-dangers]), and "magic
|
237
|
-
constants" in NaCl are picked by theorems designed to maximize security.
|
238
|
-
The same cannot be said of NIST curves, where the specific origins of certain
|
239
|
-
constants are not described by the standards and may be subject to malicious
|
240
|
-
influence by the NSA.
|
241
|
-
|
242
|
-
It is the opinion of this library's authors that Dan Bernstein is unlikely to be
|
243
|
-
subject to NSA influence (although we have no way of actually knowing this).
|
244
|
-
|
245
|
-
Dan Bernstein's designs have been well-scrutinized both as part of the [ESTREAM
|
246
|
-
Project](https://en.wikipedia.org/wiki/ESTREAM) and the cryptographic community
|
247
|
-
as a whole. And despite the emphasis on higher security, NaCl's primitives are
|
248
|
-
faster across-the-board than most implementations of the NIST standards.
|
249
|
-
|
250
|
-
[nist-security-dangers]: http://www.hyperelliptic.org/tanja/vortraege/20130531.pdf
|
251
|
-
|
252
217
|
## Contributing
|
253
218
|
|
254
219
|
* Fork this repository on Github
|
@@ -257,5 +222,5 @@ faster across-the-board than most implementations of the NIST standards.
|
|
257
222
|
|
258
223
|
## License
|
259
224
|
|
260
|
-
Copyright (c)
|
225
|
+
Copyright (c) 2012-14 Jonathan Stott, Tony Arcieri.
|
261
226
|
Distributed under the MIT License. See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
data/lib/rbnacl.rb
CHANGED
data/lib/rbnacl/auth.rb
CHANGED
@@ -51,7 +51,7 @@ module RbNaCl
|
|
51
51
|
#
|
52
52
|
# @param [#to_str] message the message to authenticate
|
53
53
|
#
|
54
|
-
# @return [String]
|
54
|
+
# @return [String] the authenticator as raw bytes
|
55
55
|
def auth(message)
|
56
56
|
authenticator = Util.zeros(tag_bytes)
|
57
57
|
message = message.to_str
|
@@ -92,12 +92,11 @@ module RbNaCl
|
|
92
92
|
#
|
93
93
|
# @param public_key [String,RbNaCl::PublicKey] The public key to encrypt to
|
94
94
|
# @param private_key [String,RbNaCl::PrivateKey] The private key to encrypt with
|
95
|
-
# @param encoding [Symbol] Parse keys from the given encoding
|
96
95
|
#
|
97
96
|
# @raise [RbNaCl::LengthError] on invalid keys
|
98
97
|
#
|
99
98
|
# @return [RbNaCl::Box] The new Box, ready to use
|
100
|
-
def initialize(public_key, private_key
|
99
|
+
def initialize(public_key, private_key)
|
101
100
|
@public_key = PublicKey === public_key ? public_key : PublicKey.new(public_key)
|
102
101
|
@private_key = PrivateKey === private_key ? private_key : PrivateKey.new(private_key)
|
103
102
|
raise IncorrectPrimitiveError unless @public_key.primitive == primitive && @private_key.primitive == primitive
|
@@ -54,7 +54,7 @@ module RbNaCl
|
|
54
54
|
# @param [String] integer value to multiply with this Point (32-bytes)
|
55
55
|
#
|
56
56
|
# @return [RbNaCl::Point] result as a Point object
|
57
|
-
def mult(integer
|
57
|
+
def mult(integer)
|
58
58
|
integer = integer.to_str
|
59
59
|
Util.check_length(integer, SCALARBYTES, "integer")
|
60
60
|
|
data/lib/rbnacl/hash.rb
CHANGED
data/lib/rbnacl/self_test.rb
CHANGED
@@ -27,7 +27,7 @@ module RbNaCl
|
|
27
27
|
# * The confidentiality of your messages is assured with this strategy, but
|
28
28
|
# there is no protection against messages being reordered and replayed by an
|
29
29
|
# active adversary.
|
30
|
-
class
|
30
|
+
class SimpleBox
|
31
31
|
extend Forwardable
|
32
32
|
def_delegators :@box, :nonce_bytes, :primitive
|
33
33
|
|
@@ -57,12 +57,12 @@ module RbNaCl
|
|
57
57
|
# This is a convenience method. It takes a pair of keys and instantiates a
|
58
58
|
# Box under the hood, then returns the new RandomNonceBox.
|
59
59
|
#
|
60
|
-
# @param private_key [PrivateKey, String] The RbNaCl private key, as class or string
|
61
60
|
# @param public_key [PublicKey, String] The RbNaCl public key, as class or string
|
61
|
+
# @param private_key [PrivateKey, String] The RbNaCl private key, as class or string
|
62
62
|
#
|
63
63
|
# @return [RandomNonceBox] Ready for use
|
64
|
-
def self.from_keypair(
|
65
|
-
new(Box.new(
|
64
|
+
def self.from_keypair(public_key, private_key)
|
65
|
+
new(Box.new(public_key, private_key))
|
66
66
|
end
|
67
67
|
|
68
68
|
# Encrypts the message with a random nonce
|
@@ -102,8 +102,11 @@ module RbNaCl
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def extract_nonce(bytes)
|
105
|
-
nonce = bytes.slice
|
106
|
-
[nonce, bytes]
|
105
|
+
nonce = bytes.slice(0, nonce_bytes)
|
106
|
+
[nonce, bytes.slice(nonce_bytes..-1)]
|
107
107
|
end
|
108
108
|
end
|
109
|
+
|
110
|
+
# Backwards compatibility with the old RandomNonceBox name
|
111
|
+
RandomNonceBox = SimpleBox
|
109
112
|
end
|
data/lib/rbnacl/util.rb
CHANGED
data/lib/rbnacl/version.rb
CHANGED
data/rbnacl.gemspec
CHANGED
@@ -11,7 +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
|
14
|
+
gem.licenses = ['MIT']
|
15
15
|
|
16
16
|
gem.files = `git ls-files`.split($/)
|
17
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |gem|
|
|
26
26
|
|
27
27
|
gem.add_development_dependency "rake"
|
28
28
|
gem.add_development_dependency "rspec", ">= 2.14"
|
29
|
+
gem.add_development_dependency "rubocop"
|
29
30
|
|
30
|
-
gem.signing_key = "../.sekretz/gem-private_key.pem"
|
31
31
|
gem.cert_chain = ["bascule.cert"]
|
32
32
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: binary
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe RbNaCl::SimpleBox do
|
5
|
+
let(:secret_key) { vector :secret_key }
|
6
|
+
let(:secret_box) { RbNaCl::SecretBox.new(secret_key) }
|
7
|
+
let(:alicepk) { vector :alice_public }
|
8
|
+
let(:alicesk) { vector :alice_private }
|
9
|
+
let(:bobpk) { vector :bob_public }
|
10
|
+
let(:bobsk) { vector :bob_private }
|
11
|
+
|
12
|
+
context "instantiation" do
|
13
|
+
it "can be instantiated from an already existing box" do
|
14
|
+
expect { described_class.new(secret_box) }.not_to raise_error
|
15
|
+
end
|
16
|
+
|
17
|
+
it "can be instantiated from a secret key" do
|
18
|
+
described_class.from_secret_key(secret_key).should be_a described_class
|
19
|
+
end
|
20
|
+
|
21
|
+
it "raises TypeError when given a nil secret key" do
|
22
|
+
expect { described_class.from_secret_key(nil) }.to raise_error(TypeError)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "can be instantiated from a key-pair" do
|
26
|
+
described_class.from_keypair(alicepk, bobsk).should be_a described_class
|
27
|
+
end
|
28
|
+
|
29
|
+
it "raises TypeError when given nil secret keys in the pair" do
|
30
|
+
expect { described_class.from_keypair(nil, bobsk) }.to raise_error(TypeError)
|
31
|
+
expect { described_class.from_keypair(alicepk, nil) }.to raise_error(TypeError)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "cryptography" do
|
36
|
+
let(:nonce) { vector :box_nonce }
|
37
|
+
let(:message) { vector :box_message }
|
38
|
+
let(:ciphertext) { vector :box_ciphertext }
|
39
|
+
let(:alice) { described_class.from_keypair(bobpk, alicesk) }
|
40
|
+
let(:bob) { described_class.from_keypair(alicepk, bobsk) }
|
41
|
+
|
42
|
+
describe "bob" do
|
43
|
+
it "decrypts a message from alice" do
|
44
|
+
alices_ciphertext = alice.encrypt(message)
|
45
|
+
bob.decrypt(alices_ciphertext).should eql message
|
46
|
+
end
|
47
|
+
|
48
|
+
it "decrypts own message" do
|
49
|
+
bobs_ciphertext = bob.encrypt(message)
|
50
|
+
bob.decrypt(bobs_ciphertext).should eql message
|
51
|
+
end
|
52
|
+
|
53
|
+
it "decrypts a message with a 'random' nonce" do
|
54
|
+
bob.decrypt(nonce+ciphertext).should eql message
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/spec/rbnacl/util_spec.rb
CHANGED
@@ -118,6 +118,16 @@ describe RbNaCl::Util do
|
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
+
context "check_string" do
|
122
|
+
it "raises EncodingError when given strings with non-BINARY encoding" do
|
123
|
+
string = "foobar"
|
124
|
+
string.force_encoding('UTF-8')
|
125
|
+
expect do
|
126
|
+
RbNaCl::Util.check_string(string, string.bytesize, "encoding test")
|
127
|
+
end.to raise_error(EncodingError)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
121
131
|
context "hex encoding" do
|
122
132
|
let (:bytes) { [0xDE,0xAD,0xBE,0xEF].pack('c*') }
|
123
133
|
let (:hex) { "deadbeef" }
|
data/spec/shared/box.rb
CHANGED
data/tasks/rubocop.rake
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbnacl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
@@ -9,72 +9,65 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
|
-
-
|
13
|
-
|
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
|
12
|
+
- bascule.cert
|
13
|
+
date: 2014-04-23 00:00:00.000000000 Z
|
35
14
|
dependencies:
|
36
15
|
- !ruby/object:Gem::Dependency
|
37
16
|
name: ffi
|
38
17
|
requirement: !ruby/object:Gem::Requirement
|
39
18
|
requirements:
|
40
|
-
- -
|
19
|
+
- - ">="
|
41
20
|
- !ruby/object:Gem::Version
|
42
21
|
version: '0'
|
43
22
|
type: :runtime
|
44
23
|
prerelease: false
|
45
24
|
version_requirements: !ruby/object:Gem::Requirement
|
46
25
|
requirements:
|
47
|
-
- -
|
26
|
+
- - ">="
|
48
27
|
- !ruby/object:Gem::Version
|
49
28
|
version: '0'
|
50
29
|
- !ruby/object:Gem::Dependency
|
51
30
|
name: rake
|
52
31
|
requirement: !ruby/object:Gem::Requirement
|
53
32
|
requirements:
|
54
|
-
- -
|
33
|
+
- - ">="
|
55
34
|
- !ruby/object:Gem::Version
|
56
35
|
version: '0'
|
57
36
|
type: :development
|
58
37
|
prerelease: false
|
59
38
|
version_requirements: !ruby/object:Gem::Requirement
|
60
39
|
requirements:
|
61
|
-
- -
|
40
|
+
- - ">="
|
62
41
|
- !ruby/object:Gem::Version
|
63
42
|
version: '0'
|
64
43
|
- !ruby/object:Gem::Dependency
|
65
44
|
name: rspec
|
66
45
|
requirement: !ruby/object:Gem::Requirement
|
67
46
|
requirements:
|
68
|
-
- -
|
47
|
+
- - ">="
|
69
48
|
- !ruby/object:Gem::Version
|
70
49
|
version: '2.14'
|
71
50
|
type: :development
|
72
51
|
prerelease: false
|
73
52
|
version_requirements: !ruby/object:Gem::Requirement
|
74
53
|
requirements:
|
75
|
-
- -
|
54
|
+
- - ">="
|
76
55
|
- !ruby/object:Gem::Version
|
77
56
|
version: '2.14'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rubocop
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
78
71
|
description: Ruby binding to the Networking and Cryptography (NaCl) library
|
79
72
|
email:
|
80
73
|
- tony.arcieri@gmail.com
|
@@ -83,11 +76,11 @@ executables: []
|
|
83
76
|
extensions: []
|
84
77
|
extra_rdoc_files: []
|
85
78
|
files:
|
86
|
-
- .coveralls.yml
|
87
|
-
- .gitignore
|
88
|
-
- .rspec
|
89
|
-
- .travis.yml
|
90
|
-
- .yardopts
|
79
|
+
- ".coveralls.yml"
|
80
|
+
- ".gitignore"
|
81
|
+
- ".rspec"
|
82
|
+
- ".travis.yml"
|
83
|
+
- ".yardopts"
|
91
84
|
- CHANGES.md
|
92
85
|
- Gemfile
|
93
86
|
- Guardfile
|
@@ -116,13 +109,13 @@ files:
|
|
116
109
|
- lib/rbnacl/one_time_auths/poly1305.rb
|
117
110
|
- lib/rbnacl/rake_tasks.rb
|
118
111
|
- lib/rbnacl/random.rb
|
119
|
-
- lib/rbnacl/random_nonce_box.rb
|
120
112
|
- lib/rbnacl/secret_boxes/xsalsa20poly1305.rb
|
121
113
|
- lib/rbnacl/self_test.rb
|
122
114
|
- lib/rbnacl/serializable.rb
|
123
115
|
- lib/rbnacl/signatures/ed25519.rb
|
124
116
|
- lib/rbnacl/signatures/ed25519/signing_key.rb
|
125
117
|
- lib/rbnacl/signatures/ed25519/verify_key.rb
|
118
|
+
- lib/rbnacl/simple_box.rb
|
126
119
|
- lib/rbnacl/sodium.rb
|
127
120
|
- lib/rbnacl/sodium/version.rb
|
128
121
|
- lib/rbnacl/test_vectors.rb
|
@@ -139,11 +132,11 @@ files:
|
|
139
132
|
- spec/rbnacl/hash_spec.rb
|
140
133
|
- spec/rbnacl/hmac/sha256_spec.rb
|
141
134
|
- spec/rbnacl/hmac/sha512256_spec.rb
|
142
|
-
- spec/rbnacl/random_nonce_box_spec.rb
|
143
135
|
- spec/rbnacl/random_spec.rb
|
144
136
|
- spec/rbnacl/secret_box_spec.rb
|
145
137
|
- spec/rbnacl/signatures/ed25519/signing_key_spec.rb
|
146
138
|
- spec/rbnacl/signatures/ed25519/verify_key_spec.rb
|
139
|
+
- spec/rbnacl/simple_box_spec.rb
|
147
140
|
- spec/rbnacl/util_spec.rb
|
148
141
|
- spec/shared/authenticator.rb
|
149
142
|
- spec/shared/box.rb
|
@@ -152,6 +145,7 @@ files:
|
|
152
145
|
- spec/spec_helper.rb
|
153
146
|
- tasks/ci.rake
|
154
147
|
- tasks/rspec.rake
|
148
|
+
- tasks/rubocop.rake
|
155
149
|
homepage: https://github.com/cryptosphere/rbnacl
|
156
150
|
licenses:
|
157
151
|
- MIT
|
@@ -162,17 +156,17 @@ require_paths:
|
|
162
156
|
- lib
|
163
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
164
158
|
requirements:
|
165
|
-
- -
|
159
|
+
- - ">="
|
166
160
|
- !ruby/object:Gem::Version
|
167
161
|
version: '0'
|
168
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
163
|
requirements:
|
170
|
-
- -
|
164
|
+
- - ">="
|
171
165
|
- !ruby/object:Gem::Version
|
172
166
|
version: '0'
|
173
167
|
requirements: []
|
174
168
|
rubyforge_project:
|
175
|
-
rubygems_version: 2.0
|
169
|
+
rubygems_version: 2.2.0
|
176
170
|
signing_key:
|
177
171
|
specification_version: 4
|
178
172
|
summary: The Networking and Cryptography (NaCl) library provides a high-level toolkit
|
@@ -187,11 +181,11 @@ test_files:
|
|
187
181
|
- spec/rbnacl/hash_spec.rb
|
188
182
|
- spec/rbnacl/hmac/sha256_spec.rb
|
189
183
|
- spec/rbnacl/hmac/sha512256_spec.rb
|
190
|
-
- spec/rbnacl/random_nonce_box_spec.rb
|
191
184
|
- spec/rbnacl/random_spec.rb
|
192
185
|
- spec/rbnacl/secret_box_spec.rb
|
193
186
|
- spec/rbnacl/signatures/ed25519/signing_key_spec.rb
|
194
187
|
- spec/rbnacl/signatures/ed25519/verify_key_spec.rb
|
188
|
+
- spec/rbnacl/simple_box_spec.rb
|
195
189
|
- spec/rbnacl/util_spec.rb
|
196
190
|
- spec/shared/authenticator.rb
|
197
191
|
- spec/shared/box.rb
|
checksums.yaml.gz.sig
DELETED
Binary file
|
data.tar.gz.sig
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
# encoding: binary
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe RbNaCl::RandomNonceBox do
|
5
|
-
let(:secret_key) { vector :secret_key }
|
6
|
-
let(:secret_box) { RbNaCl::SecretBox.new(secret_key) }
|
7
|
-
let(:alicepk) { vector :alice_public }
|
8
|
-
let(:bobsk) { vector :bob_private }
|
9
|
-
|
10
|
-
context "instantiation" do
|
11
|
-
it "can be instantiated from an already existing box" do
|
12
|
-
expect { RbNaCl::RandomNonceBox.new(secret_box) }.not_to raise_error
|
13
|
-
end
|
14
|
-
|
15
|
-
it "can be instantiated from a secret key" do
|
16
|
-
RbNaCl::RandomNonceBox.from_secret_key(secret_key).should be_a RbNaCl::RandomNonceBox
|
17
|
-
end
|
18
|
-
|
19
|
-
it "raises TypeError when given a nil secret key" do
|
20
|
-
expect { RbNaCl::RandomNonceBox.from_secret_key(nil) }.to raise_error(TypeError)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "can be instantiated from a key-pair" do
|
24
|
-
RbNaCl::RandomNonceBox.from_keypair(alicepk, bobsk).should be_a RbNaCl::RandomNonceBox
|
25
|
-
end
|
26
|
-
|
27
|
-
it "raises TypeError when given nil secret keys in the pair" do
|
28
|
-
expect { RbNaCl::RandomNonceBox.from_keypair(nil, bobsk) }.to raise_error(TypeError)
|
29
|
-
expect { RbNaCl::RandomNonceBox.from_keypair(alicepk, nil) }.to raise_error(TypeError)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "cryptography" do
|
34
|
-
let(:nonce) { vector :box_nonce }
|
35
|
-
let(:message) { vector :box_message }
|
36
|
-
let(:ciphertext) { vector :box_ciphertext }
|
37
|
-
let(:random_box) { RbNaCl::RandomNonceBox.from_keypair(alicepk, bobsk) }
|
38
|
-
let(:enciphered_message) { random_box.box(message) }
|
39
|
-
let(:enciphered_message_hex) { random_box.box(message) }
|
40
|
-
|
41
|
-
it "descrypts a message with a 'random' nonce" do
|
42
|
-
random_box.open(nonce+ciphertext).should eql message
|
43
|
-
end
|
44
|
-
|
45
|
-
it "can successfully round-trip a message" do
|
46
|
-
random_box.open(enciphered_message).should eql message
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
metadata.gz.sig
DELETED