tweetnacl 0.2.0 → 0.3.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.
@@ -0,0 +1,15 @@
1
+ require 'test_helper'
2
+
3
+ class TweetNaClCryptoSecretboxOpenTest < MiniTest::Test
4
+ def test_crypto_box_secretbox_open_require_cipher_to_decrypt
5
+ assert_raises(ArgumentError) { TweetNaCl.crypto_secretbox_open(nil, nil, nil) }
6
+ end
7
+
8
+ def test_crypto_secretbox_open_require_secret_key
9
+ assert_raises(ArgumentError) { TweetNaCl.crypto_secretbox_open("foo", "foo", nil) }
10
+ end
11
+
12
+ def test_crypto_secretbox_open_nonce_not_correct_length
13
+ assert_raises(ArgumentError) { TweetNaCl.crypto_secretbox_open("foo", "bar", "k") }
14
+ end
15
+ end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+
3
+ class TweetNaClCryptoSecretTest < MiniTest::Test
4
+ def test_crypto_secretbox
5
+ input = "hello world"
6
+ nonce = "*" * 24
7
+ expected_cipher = "00000000000000002A9612E32BCC4E836B3D46463B7C1546EA8BC752A1B6AE6DE"
8
+ k = "\x60\xF0\x23\x07\xDF\xB6\x8B\xBB\x15\xE2\x92\x59\x05\x1B\x2D\xF8\xC8\x59\xDB\x5B\xDE\x97\xFA\xE8\x9B\x5F\xE5\x62\x63\x11\xD6\x56"
9
+
10
+ cipher = TweetNaCl.crypto_secretbox(input, nonce, k)
11
+
12
+ output = TweetNaCl.crypto_secretbox_open(cipher, nonce, k)
13
+
14
+ assert_equal input, output
15
+ assert_equal expected_cipher, cipher.hd
16
+ end
17
+
18
+ def test_crypto_secretbox_require_message_to_cipher
19
+ assert_raises(ArgumentError) { TweetNaCl.crypto_secretbox(nil, "bar", "k") }
20
+ end
21
+
22
+ def test_crypto_secretbox_require_secret_key
23
+ assert_raises(ArgumentError) { TweetNaCl.crypto_secretbox("foo", "bar", "k") }
24
+ end
25
+
26
+ def test_crypto_secretbox_nonce_not_correct_length
27
+ assert_raises(ArgumentError) { TweetNaCl.crypto_secretbox("foo", "bar", "k") }
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class TweetNaClCryptoSignKeyPairTest < MiniTest::Test
4
+ def test_generate_a_keypair
5
+ pk, sk = TweetNaCl.crypto_sign_keypair
6
+
7
+ assert_equal 32, pk.length
8
+ assert_equal 64, sk.length
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ require 'test_helper'
2
+
3
+ class TweetNaClCryptoSignOpenTest < MiniTest::Test
4
+ def test_crypto_sign_open_require_message_to_verify
5
+ assert_raises(ArgumentError) { TweetNaCl.crypto_sign_open(nil, nil) }
6
+ end
7
+
8
+ def test_crypto_sign_open_require_public_key
9
+ assert_raises(ArgumentError) { TweetNaCl.crypto_sign_open("foo", nil) }
10
+ assert_raises(ArgumentError) { TweetNaCl.crypto_sign_open("foo", "too_short_public_key") }
11
+ assert_raises(RuntimeError) { TweetNaCl.crypto_sign_open("foo", "an incorrect 32 bit.............") }
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ class TweetNaClCryptoSignTest < MiniTest::Test
4
+ def test_crypto_sign
5
+ input = "hello world"
6
+ expected_cipher = "948CC9261D32D928AA3E5321F54EFE80B19AA8DE985A2FE5F0CDA0669FE253499051F8E54F0F4767646ECA13D75CCF49AD4802536331B3AB8BF427A5D43CA868656C6C6F20776F726C64"
7
+ pk = "\x8B\x1B\xA8\xF3\xCB\xD6\x2C\x4F\x40\xAA\x96\x53\x06\x5B\x2F\x02\x52\x4B\x35\x34\x39\x32\xE2\x02\xC0\xA7\x5F\x9D\x4B\x5B\x07\xCF"
8
+ sk = "\xC3\x51\x77\xB0\x8D\x93\xC3\x09\x37\x06\xCA\x65\x98\x9A\x53\x80\x92\xA4\x9C\x9B\x7A\x57\x19\x6D\xF8\x01\x5C\x0F\x81\x6E\xA3\xEF\x8B\x1B\xA8\xF3\xCB\xD6\x2C\x4F\x40\xAA\x96\x53\x06\x5B\x2F\x02\x52\x4B\x35\x34\x39\x32\xE2\x02\xC0\xA7\x5F\x9D\x4B\x5B\x07\xCF"
9
+
10
+ cipher = TweetNaCl.crypto_sign(input, sk)
11
+
12
+ output = TweetNaCl.crypto_sign_open(cipher, pk)
13
+
14
+ assert_equal input, output
15
+ assert_equal expected_cipher, cipher.hd
16
+ end
17
+
18
+ def test_crypto_sign_require_message_to_sign
19
+ assert_raises(ArgumentError) { TweetNaCl.crypto_sign(nil, nil) }
20
+ end
21
+
22
+ def test_crypto_sign_require_public_key
23
+ assert_raises(ArgumentError) { TweetNaCl.crypto_sign("foo", nil) }
24
+ assert_raises(ArgumentError) { TweetNaCl.crypto_sign("foo", "too_short_public_key") }
25
+ end
26
+ end
@@ -2,7 +2,7 @@
2
2
  $:<< 'lib'
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "tweetnacl"
5
- spec.version = "0.2.0"
5
+ spec.version = "0.3.0"
6
6
  spec.authors = ["Franck Verrot"]
7
7
  spec.email = ["franck@verrot.fr"]
8
8
  spec.homepage = "https://github.com/franckverrot/tweetnacl"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweetnacl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franck Verrot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-01 00:00:00.000000000 Z
11
+ date: 2014-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -87,13 +87,24 @@ files:
87
87
  - ext/tweetnacl/rbext.c
88
88
  - ext/tweetnacl/tweetnacl.c
89
89
  - ext/tweetnacl/tweetnacl.h
90
+ - lib/tweet_na_cl.rb
91
+ - lib/tweetnacl/crypto_box.rb
92
+ - lib/tweetnacl/crypto_sign.rb
93
+ - lib/tweetnacl/key_pair.rb
90
94
  - test/test_helper.rb
91
- - test/tweetnacl_crypto_box_curve25519xsalsa20poly1305_keypair_test.rb
92
- - test/tweetnacl_crypto_box_curve25519xsalsa20poly1305_open_test.rb
93
- - test/tweetnacl_crypto_box_curve25519xsalsa20poly1305_test.rb
95
+ - test/tweetnacl/crypto_box_test.rb
96
+ - test/tweetnacl/crypto_sign_test.rb
97
+ - test/tweetnacl/key_pair_test.rb
98
+ - test/tweetnacl_alias_test.rb
99
+ - test/tweetnacl_constants_test.rb
94
100
  - test/tweetnacl_crypto_box_key_pair_test.rb
95
101
  - test/tweetnacl_crypto_box_open_test.rb
96
102
  - test/tweetnacl_crypto_box_test.rb
103
+ - test/tweetnacl_crypto_secretbox_open_test.rb
104
+ - test/tweetnacl_crypto_secretbox_test.rb
105
+ - test/tweetnacl_crypto_sign_key_pair_test.rb
106
+ - test/tweetnacl_crypto_sign_open_test.rb
107
+ - test/tweetnacl_crypto_sign_test.rb
97
108
  - tweetnacl.gemspec
98
109
  homepage: https://github.com/franckverrot/tweetnacl
99
110
  licenses:
@@ -121,10 +132,17 @@ specification_version: 4
121
132
  summary: TweetNaCl for Ruby
122
133
  test_files:
123
134
  - test/test_helper.rb
124
- - test/tweetnacl_crypto_box_curve25519xsalsa20poly1305_keypair_test.rb
125
- - test/tweetnacl_crypto_box_curve25519xsalsa20poly1305_open_test.rb
126
- - test/tweetnacl_crypto_box_curve25519xsalsa20poly1305_test.rb
135
+ - test/tweetnacl/crypto_box_test.rb
136
+ - test/tweetnacl/crypto_sign_test.rb
137
+ - test/tweetnacl/key_pair_test.rb
138
+ - test/tweetnacl_alias_test.rb
139
+ - test/tweetnacl_constants_test.rb
127
140
  - test/tweetnacl_crypto_box_key_pair_test.rb
128
141
  - test/tweetnacl_crypto_box_open_test.rb
129
142
  - test/tweetnacl_crypto_box_test.rb
143
+ - test/tweetnacl_crypto_secretbox_open_test.rb
144
+ - test/tweetnacl_crypto_secretbox_test.rb
145
+ - test/tweetnacl_crypto_sign_key_pair_test.rb
146
+ - test/tweetnacl_crypto_sign_open_test.rb
147
+ - test/tweetnacl_crypto_sign_test.rb
130
148
  has_rdoc:
@@ -1,16 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TweetNaClCryptoBoxCurve25519XSalsa20Poly1305KeyPairTest < MiniTest::Test
4
- def setup
5
- @t = TweetNaCl.new
6
- end
7
-
8
- def teardown; end
9
-
10
- def test_generate_a_keypair
11
- pk, sk = @t.crypto_box_curve25519xsalsa20poly1305_keypair
12
-
13
- assert_equal 32, pk.length
14
- assert_equal 32, sk.length
15
- end
16
- end
@@ -1,49 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TweetNaClCryptoBoxCurve25519XSalsa20Poly1305OpenTest < MiniTest::Test
4
- def setup
5
- @t = TweetNaCl.new
6
- end
7
-
8
- def teardown; end
9
-
10
- def test_crypto_box_curve25519xsalsa20poly1305_open_require_cipher_to_decrypt
11
- set = false
12
- begin
13
- @t.crypto_box_curve25519xsalsa20poly1305_open(nil, nil, nil, nil)
14
- rescue Exception => e
15
- set = true
16
- end
17
- assert set, "A cipher is required"
18
- end
19
-
20
- def test_crypto_box_curve25519xsalsa20poly1305_open_require_public_key
21
- set = false
22
- begin
23
- @t.crypto_box_curve25519xsalsa20poly1305_open("foo", nil, "foo", nil)
24
- rescue ArgumentError => e
25
- set = true
26
- end
27
- assert set, "A public key is required"
28
- end
29
-
30
- def test_crypto_box_curve25519xsalsa20poly1305_open_require_secret_key
31
- set = false
32
- begin
33
- @t.crypto_box_curve25519xsalsa20poly1305_open("foo", "foo", "foo", nil)
34
- rescue ArgumentError => e
35
- set = true
36
- end
37
- assert set, "A secret key is required"
38
- end
39
-
40
- def test_crypto_box_curve25519xsalsa20poly1305_open_nonce_not_correct_length
41
- set = false
42
- begin
43
- @t.crypto_box_curve25519xsalsa20poly1305_open("foo", "bar", "pk", "sk")
44
- rescue ArgumentError => e
45
- set = true
46
- end
47
- assert set, "Incorrect nonce length should have raised ArgumentError"
48
- end
49
- end
@@ -1,64 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TweetNaClCryptoBoxCurve25519XSalsa20Poly1305Test < MiniTest::Test
4
- def setup
5
- @t = TweetNaCl.new
6
- end
7
-
8
- def teardown; end
9
-
10
- def test_crypto_box_curve25519xsalsa20poly1305
11
- input = "hello world"
12
- nonce = "*" * 24
13
- expected_cipher = "0000000000000000FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
14
- pk = "\x60\xF0\x23\x07\xDF\xB6\x8B\xBB\x15\xE2\x92\x59\x05\x1B\x2D\xF8\xC8\x59\xDB\x5B\xDE\x97\xFA\xE8\x9B\x5F\xE5\x62\x63\x11\xD6\x56"
15
- sk = "\xBE\x38\x7C\x59\xD1\x81\x0B\xCC\x8E\xD8\x90\xDB\x3D\xF9\x80\x63\x9E\xD2\x54\x44\xFB\x4D\xD1\x92\xB6\xC6\x75\x53\xF9\x76\x9F\xCF"
16
-
17
- cipher = @t.crypto_box_curve25519xsalsa20poly1305(input, nonce, pk, sk)
18
-
19
- output = @t.crypto_box_curve25519xsalsa20poly1305_open(cipher, nonce, pk, sk)
20
-
21
- assert_equal input, output
22
- assert_equal expected_cipher, cipher.hd
23
- end
24
-
25
- def test_crypto_box_curve25519xsalsa20poly1305_require_message_to_cipher
26
- set = false
27
- begin
28
- @t.crypto_box_curve25519xsalsa20poly1305(nil, "bar", "pk", "sk")
29
- rescue ArgumentError => e
30
- set = true
31
- end
32
- assert set, "A message is required"
33
- end
34
-
35
- def test_crypto_box_curve25519xsalsa20poly1305_require_public_key
36
- set = false
37
- begin
38
- @t.crypto_box_curve25519xsalsa20poly1305("foo", "bar", nil, "sk")
39
- rescue ArgumentError => e
40
- set = true
41
- end
42
- assert set, "A public key is required"
43
- end
44
-
45
- def test_crypto_box_curve25519xsalsa20poly1305_require_secret_key
46
- set = false
47
- begin
48
- @t.crypto_box_curve25519xsalsa20poly1305("foo", "bar", "pk", nil)
49
- rescue ArgumentError => e
50
- set = true
51
- end
52
- assert set, "A secret key is required"
53
- end
54
-
55
- def test_crypto_box_curve25519xsalsa20poly1305_nonce_not_correct_length
56
- set = false
57
- begin
58
- @t.crypto_box_curve25519xsalsa20poly1305("foo", "bar", "pk", "sk")
59
- rescue ArgumentError => e
60
- set = true
61
- end
62
- assert set, "Incorrect nonce length should have raised ArgumentError"
63
- end
64
- end