tweetnacl 0.3.0 → 1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3c1932fa8b635f8c885f09dc44235ddf4b8a0c82
4
- data.tar.gz: 0b1a0d43b9f60f1885b20bde5b5916246601d872
2
+ SHA256:
3
+ metadata.gz: df32ba55a66d1f9acd3f40099ffc4e866c56abdb704a7191b2b4c0ffad4089b6
4
+ data.tar.gz: 90fa17459095c80c00910b0900a02ac11fe35a142dac323ae4427f3cd0aad7e7
5
5
  SHA512:
6
- metadata.gz: 3d29a42561260b81947f4988443a41233561f38b7169772d9d488ce7376b8f7d93e92601d3903b00df13cb35b65b2e887a4e1b939e893fa55a1af728705b0bb8
7
- data.tar.gz: e3bfb32b5a80d8e3cbe83e9522fb2f37320683ce5b7e30c1c43c38e325465e0debd27323c3c2c03b5e7ce790e76001361543cb3bf5093eef0dd7e704aed6f802
6
+ metadata.gz: 986de1548f6a609b464ca5905bf007af6136e0dc33463ccce70598ce92d4317ea713d248bae833936e8f661462287da0b9779583515ec3a37f5edf32da8bf8ff
7
+ data.tar.gz: 7b9fb5c8285e391a161feb8774efaf038c3c08adc45cec032b9f9d92d36d335cb6952ee6ca62f3f4bdc1ebf87f9cbe88ab9c8be1b27a6554778f9750ec736ec7
@@ -0,0 +1,4 @@
1
+ �)!nR�����Ay%�r���R���K�2W��9�x`��4^#�A�+[C2T��vt?����ogZQ?�Mz���e�K����jT�ݯ��3�n�����A�{5��� n6�>B`�ց��m����%����q���'�
2
+ 4anV"F17Mv�4�%W�ǭw�$�Ȅ���P[ȫN堃Tk���T�6���X�փH��5�z�Ѽ�j�P���/ړ��-��L�c�8�\��в�e�3���<h��\��
3
+ ������:���H���@I[1Ś/�&��7@ywO1$��E�3�����������<Q��9&�ߞ<����>���ۅgL�؛� ��K"X/G{5]�MB��;3��5I�A8y��Ϝ�,X�
4
+
Binary file
@@ -0,0 +1,50 @@
1
+ version: 2
2
+
3
+ shared: &shared
4
+ working_directory: ~/repo
5
+ steps:
6
+ - checkout
7
+
8
+ # Download and cache dependencies
9
+ - restore_cache:
10
+ keys:
11
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
12
+ # fallback to using the latest cache if no exact match is found
13
+ - v1-dependencies-
14
+
15
+ - run:
16
+ name: install dependencies
17
+ command: |
18
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
19
+
20
+ - save_cache:
21
+ paths:
22
+ - ./vendor/bundle
23
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
24
+
25
+ # run tests!
26
+ - run:
27
+ name: run tests
28
+ command: bundle exec rake
29
+
30
+ jobs:
31
+ "ruby-2.4":
32
+ <<: *shared
33
+ docker:
34
+ - image: circleci/ruby:2.4
35
+ "ruby-2.5":
36
+ <<: *shared
37
+ docker:
38
+ - image: circleci/ruby:2.5
39
+ "ruby-2.6":
40
+ <<: *shared
41
+ docker:
42
+ - image: circleci/ruby:2.6
43
+
44
+ workflows:
45
+ version: 2
46
+ build:
47
+ jobs:
48
+ - "ruby-2.4"
49
+ - "ruby-2.5"
50
+ - "ruby-2.6"
@@ -1,6 +1,27 @@
1
1
  # Releases
2
2
 
3
- ## UNRELEASED (0.4.0)
3
+ ## UNRELEASED
4
+
5
+ ## 1.0.0 – Apr 30th 2019
6
+
7
+ ### BREAKING CHANGES
8
+
9
+ * Drop leading 0s from encrypted boxes!
10
+
11
+ A breaking change has been introduced to `crypto_box` and `crypto_secretbox`
12
+ that makes ciphers differ. The first 64 bits are always empty and have been
13
+ dropped from the cipher output.
14
+
15
+ This causes differences like:
16
+
17
+ ```
18
+ - expected_cipher = "0000000000000000FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
19
+ + expected_cipher = "FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
20
+ ```
21
+
22
+ You might need to go through all persisted ciphers and change these values.
23
+
24
+ If you have more questions, please file a ticket! Thanks!
4
25
 
5
26
  ## 0.3.0 - Aug 19th 2014
6
27
 
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  TweetNaCl is a C-extension for Ruby built on top of the official TweetNacl
6
6
  distribution. It exposes the basic functions using Ruby objects.
7
7
 
8
- For a detailed explanation of TweetNaCl, [here's the research paper associated with it][paper]
8
+ For a detailed explanation of TweetNaCl, [here's the research paper associated with it][paper].
9
9
 
10
10
  ## INSTALL
11
11
 
@@ -159,4 +159,4 @@ No. Until proven otherwise.
159
159
  Franck Verrot, Copyright 2014. See LICENSE.txt.
160
160
 
161
161
 
162
- [paper] : http://tweetnacl.cr.yp.to/tweetnacl-20131229.pdf
162
+ [paper]: http://tweetnacl.cr.yp.to/tweetnacl-20131229.pdf
data/Rakefile CHANGED
@@ -1,4 +1,10 @@
1
+ require 'rubygems'
2
+ require 'rubygems/specification'
3
+
4
+ require 'bundler'
1
5
  require 'rake/extensiontask'
6
+ Bundler::GemHelper.install_tasks
7
+
2
8
  spec = Gem::Specification.load('tweetnacl.gemspec')
3
9
  Rake::ExtensionTask.new('tweetnacl', spec) do |ext|
4
10
  ext.source_pattern = "*.{c,h}"
@@ -16,3 +22,47 @@ task :default => :full
16
22
 
17
23
  desc "Run the full spec suite"
18
24
  task :full => ["clean", "compile", "test"]
25
+
26
+ def gemspec
27
+ @gemspec ||= begin
28
+ file = File.expand_path('../tweetnacl.gemspec', __FILE__)
29
+ eval(File.read(file), binding, file)
30
+ end
31
+ end
32
+
33
+ desc "Clean the current directory"
34
+ task :clean do
35
+ rm_rf 'tmp'
36
+ rm_rf 'pkg'
37
+ end
38
+
39
+ desc "Run the full spec suite"
40
+ task :full => ["clean", "test"]
41
+
42
+ desc "install the gem locally"
43
+ task :install => :package do
44
+ sh %{gem install pkg/#{gemspec.name}-#{gemspec.version}}
45
+ end
46
+
47
+ desc "validate the gemspec"
48
+ task :gemspec do
49
+ gemspec.validate
50
+ end
51
+
52
+ desc "Build the gem"
53
+ task :gem => [:gemspec, :build] do
54
+ mkdir_p "pkg"
55
+ sh "gem build tweetnacl.gemspec"
56
+ mv "#{gemspec.full_name}.gem", "pkg"
57
+
58
+ require 'digest/sha2'
59
+ built_gem_path = "pkg/#{gemspec.full_name}.gem"
60
+ checksum = Digest::SHA512.new.hexdigest(File.read(built_gem_path))
61
+ checksum_path = "checksums/#{gemspec.version}.sha512"
62
+ File.open(checksum_path, 'w' ) {|f| f.write(checksum) }
63
+ end
64
+
65
+ desc "Install TweetNaCl"
66
+ task :install => :gem do
67
+ sh "gem install pkg/#{gemspec.full_name}.gem"
68
+ end
@@ -0,0 +1,25 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEMDCCApigAwIBAgIBATANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDDBZmcmFu
3
+ Y2svREM9dmVycm90L0RDPWZyMB4XDTE4MTIyMTAxMzgwNVoXDTE5MTIyMTAxMzgw
4
+ NVowITEfMB0GA1UEAwwWZnJhbmNrL0RDPXZlcnJvdC9EQz1mcjCCAaIwDQYJKoZI
5
+ hvcNAQEBBQADggGPADCCAYoCggGBANjZ/7L2ECEQAVOYvMl0JOwyVXKRCsLnVrmP
6
+ mcwpCMFL0ennkpLJcqiDNsm0b/RkJHSLu3FMoYrIU5KoaP7iMIsLGv846aw2wSNI
7
+ G5XWGnRY9dWVu7Gz2OZbsDi18WT94Y/s2yf+orPLAiaJb451decYEpHqLTiaJhhJ
8
+ xHckJixfDVwZGJpow7rrJAJMbU9ZCJFUFAfNpgkOqhbBU4Ehi1umbC/ZBsVDiRVa
9
+ ZjfNhe7kgx6jo3EfPY4izPW2IKkpk7nJKNfZnM2r0cnpPJbhyH1m5fsikBD5tRNe
10
+ YxJpxDPf8UBTTXqoeSSQygiHWWZVbH3zj2jWzi5T0do5PbZcCeoIKR4TyOgbOgBW
11
+ Ra7bm9uVXo6MQWpp0aeC/X+F2Y/dFjXAP/TPL89ownd3XZUaNDdZfS6aKBMG3a5C
12
+ gcRLMt1hOJchslGNtvkq5W4Wq8hw+zNHzTMpRkIsYTbvlJCDxXRKR3jwPDTRvNAl
13
+ aemBW1g3yerHeDQr6GtxKEvhmHdw/wIDAQABo3MwcTAJBgNVHRMEAjAAMAsGA1Ud
14
+ DwQEAwIEsDAdBgNVHQ4EFgQUgG77cLAMzowManymHX63DbvfR5IwGwYDVR0RBBQw
15
+ EoEQZnJhbmNrQHZlcnJvdC5mcjAbBgNVHRIEFDASgRBmcmFuY2tAdmVycm90LmZy
16
+ MA0GCSqGSIb3DQEBCwUAA4IBgQAofcg/2kPT9VMBGEuO17F3yH6fiJboQeLL1nlM
17
+ ULZv5LyyqV6Yq0cQ+TZMGHd/hbvBFTN9/55WmiN66tYLaunyfr4aUflCQcM/qu2g
18
+ Ieoz8QLxfIi24DCDezpODHaud6Qt0VmMpalSOxbCuMeNnXLpnxbP/7fJBJoum5GS
19
+ CqGuH81fXy7KAAlgMBcsYb3+vZJhuAeM/zSrE5Hmf1zApTEVZc4Y0dO6eRC6WbXW
20
+ pJfyNXyITkkr7pTRYO/wj3lFoeDqfGXb48HvpJ54lqfeIvr9Hek7grcyQGfZ1rFY
21
+ Dx3RTjxParzCWk/HCFHQiZmU5lnOl7GShwAZrG6l0UHST3/YNCA52KDrmC/T0A2N
22
+ d2MQGgSZerYTx+HRKlradglBDPCs4nxQj5pnoDvGbngeZUua+ZZGFM9SXBT3zAIQ
23
+ akLQjJWKHQCzyqDChJHRGhlxyVFKP2JwqFgzE3p1l64JArsb7BEqhpoBPXMwlChE
24
+ HgzCBTsCU0syQBb1s6lBz2HrWA4=
25
+ -----END CERTIFICATE-----
@@ -12,6 +12,18 @@ void hexdump(char * data, int len)
12
12
  printf("\n");
13
13
  }
14
14
 
15
+ extern int salsa_rounds;
16
+
17
+ VALUE m_crypto_box_salsa_rounds_set(VALUE self, VALUE _n) {
18
+ if(_n == Qnil) { rb_raise(rb_eArgError, "`TweetNaCl#salsa_round=` called with nil argument"); }
19
+ salsa_rounds = NUM2INT(_n);
20
+ return _n;
21
+ }
22
+
23
+ VALUE m_crypto_box_salsa_rounds_get(VALUE self) {
24
+ return INT2NUM(salsa_rounds);
25
+ }
26
+
15
27
  VALUE m_crypto_box_keypair(VALUE self) {
16
28
  VALUE ary = rb_ary_new2(2);
17
29
  unsigned char *pk = calloc(crypto_box_PUBLICKEYBYTES, sizeof(unsigned char));
@@ -39,14 +51,14 @@ VALUE m_crypto_box(VALUE self, VALUE _m, VALUE _n, VALUE _pk, VALUE _sk) {
39
51
  char * nonce = RSTRING_PTR(_n);
40
52
  char * pk = RSTRING_PTR(_pk);
41
53
  char * sk = RSTRING_PTR(_sk);
42
- int len = strlen(message);
54
+ int len = RSTRING_LEN(_m);
43
55
  char * padded_message = (char*)calloc(sizeof(char), len + PADDING_LEN);
44
- memcpy(padded_message + PADDING_LEN, message, strlen(message));
45
- char * c = malloc(strlen(message) + PADDING_LEN);
56
+ memcpy(padded_message + PADDING_LEN, message, len);
57
+ char * c = malloc(len + PADDING_LEN);
46
58
  int res = crypto_box(c, padded_message, len + PADDING_LEN, nonce, pk, sk);
47
59
  // TODO: use an exception instead of exit()
48
60
  if (0 != res) { fprintf(stderr, "Something went wrong\n"); exit(res); }
49
- VALUE ret = rb_str_new(c, len + PADDING_LEN);
61
+ VALUE ret = rb_str_new(c + 16, len + 16);
50
62
  return ret;
51
63
  }
52
64
 
@@ -63,15 +75,16 @@ VALUE m_crypto_box_open(VALUE self, VALUE _c, VALUE _n, VALUE _pk, VALUE _sk) {
63
75
  char * nonce = RSTRING_PTR(_n);
64
76
  char * pk = RSTRING_PTR(_pk);
65
77
  char * sk = RSTRING_PTR(_sk);
66
- int padded_mlen = rb_str_strlen(_c);
67
- unsigned char * message = (unsigned char*)calloc(padded_mlen, sizeof(unsigned char));
78
+ int len = RSTRING_LEN(_c);
79
+ unsigned char * ciphertext = (unsigned char*)calloc(sizeof(unsigned char), len + 16);
80
+ memcpy(ciphertext + 16, c, len);
68
81
 
69
- int res = crypto_box_open(message, c, padded_mlen, nonce, pk, sk);
70
- if (0 != res) { rb_raise(rb_eRuntimeError, "crypto_box_open did not work. error %d", res); }
82
+ unsigned char * message = (unsigned char*)calloc(len + PADDING_LEN, sizeof(unsigned char));
71
83
 
72
- message[padded_mlen + 1] = 0;
84
+ int res = crypto_box_open(message, ciphertext, len + 16, nonce, pk, sk);
85
+ if (0 != res) { rb_raise(rb_eRuntimeError, "crypto_box_open did not work. error %d", res); }
73
86
 
74
- VALUE ret = rb_str_new2(message + PADDING_LEN);
87
+ VALUE ret = rb_str_new(message + PADDING_LEN, len - 16);
75
88
  return ret;
76
89
  }
77
90
 
@@ -79,19 +92,19 @@ VALUE m_crypto_secretbox(VALUE self, VALUE _m, VALUE _n, VALUE _k) {
79
92
  if(_m == Qnil) { rb_raise(rb_eArgError, "A message should have been given"); }
80
93
  if(_k == Qnil) { rb_raise(rb_eArgError, "Secret key should have been given"); }
81
94
  if (RSTRING_LEN(_n) != 24) { rb_raise(rb_eArgError, "nonce should be 24-byte long"); }
82
- if (RSTRING_LEN(_k) != 32) { rb_raise(rb_eArgError, "Secret key should be 24-byte long"); }
95
+ if (RSTRING_LEN(_k) != 32) { rb_raise(rb_eArgError, "Secret key should be 32-byte long"); }
83
96
 
84
97
  char * message = RSTRING_PTR(_m);
85
98
  char * nonce = RSTRING_PTR(_n);
86
99
  char * k = RSTRING_PTR(_k);
87
- int len = strlen(message);
100
+ int len = RSTRING_LEN(_m);
88
101
  char * padded_message = (char*)calloc(sizeof(char), len + PADDING_LEN);
89
- memcpy(padded_message + PADDING_LEN, message, strlen(message));
90
- char * c = malloc(strlen(message) + PADDING_LEN);
102
+ memcpy(padded_message + PADDING_LEN, message, len);
103
+ char * c = malloc(len + PADDING_LEN);
91
104
  int res = crypto_secretbox(c, padded_message, len + PADDING_LEN, nonce, k);
92
105
  // TODO: use an exception instead of exit()
93
106
  if (0 != res) { fprintf(stderr, "Something went wrong\n"); exit(res); }
94
- VALUE ret = rb_str_new(c, len + PADDING_LEN);
107
+ VALUE ret = rb_str_new(c + 16, len + 16);
95
108
  return ret;
96
109
  }
97
110
 
@@ -104,13 +117,17 @@ VALUE m_crypto_secretbox_open(VALUE self, VALUE _c, VALUE _n, VALUE _k) {
104
117
  unsigned char * c = RSTRING_PTR(_c);
105
118
  char * nonce = RSTRING_PTR(_n);
106
119
  char * k = RSTRING_PTR(_k);
107
- int padded_mlen = rb_str_strlen(_c);
108
- char * message = calloc(padded_mlen, sizeof(char));
120
+ int len = RSTRING_LEN(_c);
121
+
122
+ unsigned char * ciphertext = (unsigned char*)calloc(sizeof(unsigned char), len + 16);
123
+ memcpy(ciphertext + 16, c, len);
109
124
 
110
- int res = crypto_secretbox_open(message, c, padded_mlen, nonce, k);
125
+ char * message = calloc(len + PADDING_LEN, sizeof(char));
126
+
127
+ int res = crypto_secretbox_open(message, ciphertext, len + 16, nonce, k);
111
128
  if (0 != res) { rb_raise(rb_eRuntimeError, "crypto_secretbox_open did not work"); }
112
129
 
113
- return rb_str_new2(message + PADDING_LEN);
130
+ return rb_str_new(message + PADDING_LEN, len - 16);
114
131
  }
115
132
 
116
133
  VALUE m_crypto_sign_keypair(VALUE self) {
@@ -165,6 +182,9 @@ VALUE m_crypto_sign_open(VALUE self, VALUE _c, VALUE _k) {
165
182
  void Init_tweetnacl() {
166
183
  VALUE c = rb_define_module("TweetNaCl");
167
184
 
185
+ rb_define_module_function(c , "salsa_rounds=" , RUBY_METHOD_FUNC(m_crypto_box_salsa_rounds_set), 1);
186
+ rb_define_module_function(c , "salsa_rounds" , RUBY_METHOD_FUNC(m_crypto_box_salsa_rounds_get), 0);
187
+
168
188
  rb_define_module_function(c , "crypto_box_keypair" , RUBY_METHOD_FUNC(m_crypto_box_keypair) , 0);
169
189
 
170
190
  rb_define_module_function(c , "crypto_box" , RUBY_METHOD_FUNC(m_crypto_box) , 4);
@@ -9,6 +9,8 @@ typedef long long i64;
9
9
  typedef i64 gf[16];
10
10
  extern void randombytes(u8 *,u64);
11
11
 
12
+ int salsa_rounds = 20;
13
+
12
14
  static const u8
13
15
  _0[16],
14
16
  _9[32] = {9};
@@ -82,7 +84,7 @@ sv core(u8 *out,const u8 *in,const u8 *k,const u8 *c,int h)
82
84
 
83
85
  FOR(i,16) y[i] = x[i];
84
86
 
85
- FOR(i,20) {
87
+ FOR(i,salsa_rounds) {
86
88
  FOR(j,4) {
87
89
  FOR(m,4) t[m] = x[(5*j+4*m)%16];
88
90
  t[1] ^= L32(t[0]+t[3], 7);
@@ -1,2 +1,3 @@
1
1
  module TweetNaCl
2
+ DEFAULT_SALSA_ROUNDS = 20
2
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'tweetnacl'
2
+ require 'tweet_na_cl'
2
3
  require 'tweetnacl/crypto_sign'
3
4
  require 'tweetnacl/crypto_box'
4
5
  require 'tweetnacl/key_pair'
@@ -6,167 +6,167 @@ class TweetNaClConstantsTest < MiniTest::Test
6
6
  end
7
7
 
8
8
  def test_constants
9
- assert_instance_of String, _const("CRYPTO_AUTH_PRIMITIVE")
10
- assert_instance_of Fixnum, _const("CRYPTO_AUTH_BYTES")
11
- assert_instance_of Fixnum, _const("CRYPTO_AUTH_KEYBYTES")
12
- assert_instance_of String, _const("CRYPTO_AUTH_IMPLEMENTATION")
13
- assert_instance_of String, _const("CRYPTO_AUTH_VERSION")
14
- assert_instance_of Fixnum, _const("CRYPTO_AUTH_HMACSHA512256_TWEET_BYTES")
15
- assert_instance_of Fixnum, _const("CRYPTO_AUTH_HMACSHA512256_TWEET_KEYBYTES")
16
- assert_instance_of String, _const("CRYPTO_AUTH_HMACSHA512256_TWEET_VERSION")
17
- assert_instance_of Fixnum, _const("CRYPTO_AUTH_HMACSHA512256_BYTES")
18
- assert_instance_of Fixnum, _const("CRYPTO_AUTH_HMACSHA512256_KEYBYTES")
19
- assert_instance_of String, _const("CRYPTO_AUTH_HMACSHA512256_VERSION")
20
- assert_instance_of String, _const("CRYPTO_AUTH_HMACSHA512256_IMPLEMENTATION")
21
- assert_instance_of String, _const("CRYPTO_BOX_PRIMITIVE")
22
- assert_instance_of Fixnum, _const("CRYPTO_BOX_PUBLICKEYBYTES")
23
- assert_instance_of Fixnum, _const("CRYPTO_BOX_SECRETKEYBYTES")
24
- assert_instance_of Fixnum, _const("CRYPTO_BOX_BEFORENMBYTES")
25
- assert_instance_of Fixnum, _const("CRYPTO_BOX_NONCEBYTES")
26
- assert_instance_of Fixnum, _const("CRYPTO_BOX_ZEROBYTES")
27
- assert_instance_of Fixnum, _const("CRYPTO_BOX_BOXZEROBYTES")
28
- assert_instance_of String, _const("CRYPTO_BOX_IMPLEMENTATION")
29
- assert_instance_of String, _const("CRYPTO_BOX_VERSION")
30
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_PUBLICKEYBYTES")
31
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_SECRETKEYBYTES")
32
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_BEFORENMBYTES")
33
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_NONCEBYTES")
34
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_ZEROBYTES")
35
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_BOXZEROBYTES")
36
- assert_instance_of String, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_VERSION")
37
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_PUBLICKEYBYTES")
38
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_SECRETKEYBYTES")
39
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_BEFORENMBYTES")
40
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_NONCEBYTES")
41
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_ZEROBYTES")
42
- assert_instance_of Fixnum, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_BOXZEROBYTES")
43
- assert_instance_of String, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_VERSION")
44
- assert_instance_of String, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_IMPLEMENTATION")
45
- assert_instance_of String, _const("CRYPTO_CORE_PRIMITIVE")
46
- assert_instance_of Fixnum, _const("CRYPTO_CORE_OUTPUTBYTES")
47
- assert_instance_of Fixnum, _const("CRYPTO_CORE_INPUTBYTES")
48
- assert_instance_of Fixnum, _const("CRYPTO_CORE_KEYBYTES")
49
- assert_instance_of Fixnum, _const("CRYPTO_CORE_CONSTBYTES")
50
- assert_instance_of String, _const("CRYPTO_CORE_IMPLEMENTATION")
51
- assert_instance_of String, _const("CRYPTO_CORE_VERSION")
52
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_TWEET_OUTPUTBYTES")
53
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_TWEET_INPUTBYTES")
54
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_TWEET_KEYBYTES")
55
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_TWEET_CONSTBYTES")
56
- assert_instance_of String, _const("CRYPTO_CORE_SALSA20_TWEET_VERSION")
57
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_OUTPUTBYTES")
58
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_INPUTBYTES")
59
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_KEYBYTES")
60
- assert_instance_of Fixnum, _const("CRYPTO_CORE_SALSA20_CONSTBYTES")
61
- assert_instance_of String, _const("CRYPTO_CORE_SALSA20_VERSION")
62
- assert_instance_of String, _const("CRYPTO_CORE_SALSA20_IMPLEMENTATION")
63
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_TWEET_OUTPUTBYTES")
64
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_TWEET_INPUTBYTES")
65
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_TWEET_KEYBYTES")
66
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_TWEET_CONSTBYTES")
67
- assert_instance_of String, _const("CRYPTO_CORE_HSALSA20_TWEET_VERSION")
68
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_OUTPUTBYTES")
69
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_INPUTBYTES")
70
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_KEYBYTES")
71
- assert_instance_of Fixnum, _const("CRYPTO_CORE_HSALSA20_CONSTBYTES")
72
- assert_instance_of String, _const("CRYPTO_CORE_HSALSA20_VERSION")
73
- assert_instance_of String, _const("CRYPTO_CORE_HSALSA20_IMPLEMENTATION")
74
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_PRIMITIVE")
75
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_STATEBYTES")
76
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_BLOCKBYTES")
77
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_IMPLEMENTATION")
78
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_VERSION")
79
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA512_TWEET_STATEBYTES")
80
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA512_TWEET_BLOCKBYTES")
81
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA512_TWEET_VERSION")
82
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA512_STATEBYTES")
83
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA512_BLOCKBYTES")
84
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA512_VERSION")
85
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA512_IMPLEMENTATION")
86
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA256_TWEET_STATEBYTES")
87
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA256_TWEET_BLOCKBYTES")
88
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA256_TWEET_VERSION")
89
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA256_STATEBYTES")
90
- assert_instance_of Fixnum, _const("CRYPTO_HASHBLOCKS_SHA256_BLOCKBYTES")
91
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA256_VERSION")
92
- assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA256_IMPLEMENTATION")
93
- assert_instance_of String, _const("CRYPTO_HASH_PRIMITIVE")
94
- assert_instance_of Fixnum, _const("CRYPTO_HASH_BYTES")
95
- assert_instance_of String, _const("CRYPTO_HASH_IMPLEMENTATION")
96
- assert_instance_of String, _const("CRYPTO_HASH_VERSION")
97
- assert_instance_of Fixnum, _const("CRYPTO_HASH_SHA512_TWEET_BYTES")
98
- assert_instance_of String, _const("CRYPTO_HASH_SHA512_TWEET_VERSION")
99
- assert_instance_of Fixnum, _const("CRYPTO_HASH_SHA512_BYTES")
100
- assert_instance_of String, _const("CRYPTO_HASH_SHA512_VERSION")
101
- assert_instance_of String, _const("CRYPTO_HASH_SHA512_IMPLEMENTATION")
102
- assert_instance_of Fixnum, _const("CRYPTO_HASH_SHA256_TWEET_BYTES")
103
- assert_instance_of String, _const("CRYPTO_HASH_SHA256_TWEET_VERSION")
104
- assert_instance_of Fixnum, _const("CRYPTO_HASH_SHA256_BYTES")
105
- assert_instance_of String, _const("CRYPTO_HASH_SHA256_VERSION")
106
- assert_instance_of String, _const("CRYPTO_HASH_SHA256_IMPLEMENTATION")
107
- assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_PRIMITIVE")
108
- assert_instance_of Fixnum, _const("CRYPTO_ONETIMEAUTH_BYTES")
109
- assert_instance_of Fixnum, _const("CRYPTO_ONETIMEAUTH_KEYBYTES")
110
- assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_IMPLEMENTATION")
111
- assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_VERSION")
112
- assert_instance_of Fixnum, _const("CRYPTO_ONETIMEAUTH_POLY1305_TWEET_BYTES")
113
- assert_instance_of Fixnum, _const("CRYPTO_ONETIMEAUTH_POLY1305_TWEET_KEYBYTES")
114
- assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_POLY1305_TWEET_VERSION")
115
- assert_instance_of Fixnum, _const("CRYPTO_ONETIMEAUTH_POLY1305_BYTES")
116
- assert_instance_of Fixnum, _const("CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES")
117
- assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_POLY1305_VERSION")
118
- assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_POLY1305_IMPLEMENTATION")
119
- assert_instance_of String, _const("CRYPTO_SCALARMULT_PRIMITIVE")
120
- assert_instance_of Fixnum, _const("CRYPTO_SCALARMULT_BYTES")
121
- assert_instance_of Fixnum, _const("CRYPTO_SCALARMULT_SCALARBYTES")
122
- assert_instance_of String, _const("CRYPTO_SCALARMULT_IMPLEMENTATION")
123
- assert_instance_of String, _const("CRYPTO_SCALARMULT_VERSION")
124
- assert_instance_of Fixnum, _const("CRYPTO_SCALARMULT_CURVE25519_TWEET_BYTES")
125
- assert_instance_of Fixnum, _const("CRYPTO_SCALARMULT_CURVE25519_TWEET_SCALARBYTES")
126
- assert_instance_of String, _const("CRYPTO_SCALARMULT_CURVE25519_TWEET_VERSION")
127
- assert_instance_of Fixnum, _const("CRYPTO_SCALARMULT_CURVE25519_BYTES")
128
- assert_instance_of Fixnum, _const("CRYPTO_SCALARMULT_CURVE25519_SCALARBYTES")
129
- assert_instance_of String, _const("CRYPTO_SCALARMULT_CURVE25519_VERSION")
130
- assert_instance_of String, _const("CRYPTO_SCALARMULT_CURVE25519_IMPLEMENTATION")
131
- assert_instance_of String, _const("CRYPTO_SECRETBOX_PRIMITIVE")
132
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_KEYBYTES")
133
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_NONCEBYTES")
134
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_ZEROBYTES")
135
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_BOXZEROBYTES")
136
- assert_instance_of String, _const("CRYPTO_SECRETBOX_IMPLEMENTATION")
137
- assert_instance_of String, _const("CRYPTO_SECRETBOX_VERSION")
138
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_KEYBYTES")
139
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_NONCEBYTES")
140
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_ZEROBYTES")
141
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_BOXZEROBYTES")
142
- assert_instance_of String, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_VERSION")
143
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_KEYBYTES")
144
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_NONCEBYTES")
145
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_ZEROBYTES")
146
- assert_instance_of Fixnum, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_BOXZEROBYTES")
147
- assert_instance_of String, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_VERSION")
148
- assert_instance_of String, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_IMPLEMENTATION")
149
- assert_instance_of String, _const("CRYPTO_SIGN_PRIMITIVE")
150
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_BYTES")
151
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_PUBLICKEYBYTES")
152
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_SECRETKEYBYTES")
153
- assert_instance_of String, _const("CRYPTO_SIGN_IMPLEMENTATION")
154
- assert_instance_of String, _const("CRYPTO_SIGN_VERSION")
155
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_ED25519_TWEET_BYTES")
156
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_ED25519_TWEET_PUBLICKEYBYTES")
157
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_ED25519_TWEET_SECRETKEYBYTES")
158
- assert_instance_of String, _const("CRYPTO_SIGN_ED25519_TWEET_VERSION")
159
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_ED25519_BYTES")
160
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_ED25519_PUBLICKEYBYTES")
161
- assert_instance_of Fixnum, _const("CRYPTO_SIGN_ED25519_SECRETKEYBYTES")
162
- assert_instance_of String, _const("CRYPTO_SIGN_ED25519_VERSION")
163
- assert_instance_of String, _const("CRYPTO_SIGN_ED25519_IMPLEMENTATION")
164
- assert_instance_of String, _const("CRYPTO_STREAM_PRIMITIVE")
165
- assert_instance_of Fixnum, _const("CRYPTO_STREAM_KEYBYTES")
166
- assert_instance_of Fixnum, _const("CRYPTO_STREAM_NONCEBYTES")
167
- assert_instance_of String, _const("CRYPTO_STREAM_IMPLEMENTATION")
168
- assert_instance_of String, _const("CRYPTO_STREAM_VERSION")
169
- assert_instance_of Fixnum, _const("CRYPTO_STREAM_XSALSA20_TWEET_KEYBYTES")
170
- assert_instance_of Fixnum, _const("CRYPTO_STREAM_XSALSA20_TWEET_NONCEBYTES")
9
+ assert_instance_of String, _const("CRYPTO_AUTH_PRIMITIVE")
10
+ assert_instance_of Integer, _const("CRYPTO_AUTH_BYTES")
11
+ assert_instance_of Integer, _const("CRYPTO_AUTH_KEYBYTES")
12
+ assert_instance_of String, _const("CRYPTO_AUTH_IMPLEMENTATION")
13
+ assert_instance_of String, _const("CRYPTO_AUTH_VERSION")
14
+ assert_instance_of Integer, _const("CRYPTO_AUTH_HMACSHA512256_TWEET_BYTES")
15
+ assert_instance_of Integer, _const("CRYPTO_AUTH_HMACSHA512256_TWEET_KEYBYTES")
16
+ assert_instance_of String, _const("CRYPTO_AUTH_HMACSHA512256_TWEET_VERSION")
17
+ assert_instance_of Integer, _const("CRYPTO_AUTH_HMACSHA512256_BYTES")
18
+ assert_instance_of Integer, _const("CRYPTO_AUTH_HMACSHA512256_KEYBYTES")
19
+ assert_instance_of String, _const("CRYPTO_AUTH_HMACSHA512256_VERSION")
20
+ assert_instance_of String, _const("CRYPTO_AUTH_HMACSHA512256_IMPLEMENTATION")
21
+ assert_instance_of String, _const("CRYPTO_BOX_PRIMITIVE")
22
+ assert_instance_of Integer, _const("CRYPTO_BOX_PUBLICKEYBYTES")
23
+ assert_instance_of Integer, _const("CRYPTO_BOX_SECRETKEYBYTES")
24
+ assert_instance_of Integer, _const("CRYPTO_BOX_BEFORENMBYTES")
25
+ assert_instance_of Integer, _const("CRYPTO_BOX_NONCEBYTES")
26
+ assert_instance_of Integer, _const("CRYPTO_BOX_ZEROBYTES")
27
+ assert_instance_of Integer, _const("CRYPTO_BOX_BOXZEROBYTES")
28
+ assert_instance_of String, _const("CRYPTO_BOX_IMPLEMENTATION")
29
+ assert_instance_of String, _const("CRYPTO_BOX_VERSION")
30
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_PUBLICKEYBYTES")
31
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_SECRETKEYBYTES")
32
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_BEFORENMBYTES")
33
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_NONCEBYTES")
34
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_ZEROBYTES")
35
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_BOXZEROBYTES")
36
+ assert_instance_of String, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_TWEET_VERSION")
37
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_PUBLICKEYBYTES")
38
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_SECRETKEYBYTES")
39
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_BEFORENMBYTES")
40
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_NONCEBYTES")
41
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_ZEROBYTES")
42
+ assert_instance_of Integer, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_BOXZEROBYTES")
43
+ assert_instance_of String, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_VERSION")
44
+ assert_instance_of String, _const("CRYPTO_BOX_CURVE25519XSALSA20POLY1305_IMPLEMENTATION")
45
+ assert_instance_of String, _const("CRYPTO_CORE_PRIMITIVE")
46
+ assert_instance_of Integer, _const("CRYPTO_CORE_OUTPUTBYTES")
47
+ assert_instance_of Integer, _const("CRYPTO_CORE_INPUTBYTES")
48
+ assert_instance_of Integer, _const("CRYPTO_CORE_KEYBYTES")
49
+ assert_instance_of Integer, _const("CRYPTO_CORE_CONSTBYTES")
50
+ assert_instance_of String, _const("CRYPTO_CORE_IMPLEMENTATION")
51
+ assert_instance_of String, _const("CRYPTO_CORE_VERSION")
52
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_TWEET_OUTPUTBYTES")
53
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_TWEET_INPUTBYTES")
54
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_TWEET_KEYBYTES")
55
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_TWEET_CONSTBYTES")
56
+ assert_instance_of String, _const("CRYPTO_CORE_SALSA20_TWEET_VERSION")
57
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_OUTPUTBYTES")
58
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_INPUTBYTES")
59
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_KEYBYTES")
60
+ assert_instance_of Integer, _const("CRYPTO_CORE_SALSA20_CONSTBYTES")
61
+ assert_instance_of String, _const("CRYPTO_CORE_SALSA20_VERSION")
62
+ assert_instance_of String, _const("CRYPTO_CORE_SALSA20_IMPLEMENTATION")
63
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_TWEET_OUTPUTBYTES")
64
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_TWEET_INPUTBYTES")
65
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_TWEET_KEYBYTES")
66
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_TWEET_CONSTBYTES")
67
+ assert_instance_of String, _const("CRYPTO_CORE_HSALSA20_TWEET_VERSION")
68
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_OUTPUTBYTES")
69
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_INPUTBYTES")
70
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_KEYBYTES")
71
+ assert_instance_of Integer, _const("CRYPTO_CORE_HSALSA20_CONSTBYTES")
72
+ assert_instance_of String, _const("CRYPTO_CORE_HSALSA20_VERSION")
73
+ assert_instance_of String, _const("CRYPTO_CORE_HSALSA20_IMPLEMENTATION")
74
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_PRIMITIVE")
75
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_STATEBYTES")
76
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_BLOCKBYTES")
77
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_IMPLEMENTATION")
78
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_VERSION")
79
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA512_TWEET_STATEBYTES")
80
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA512_TWEET_BLOCKBYTES")
81
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA512_TWEET_VERSION")
82
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA512_STATEBYTES")
83
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA512_BLOCKBYTES")
84
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA512_VERSION")
85
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA512_IMPLEMENTATION")
86
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA256_TWEET_STATEBYTES")
87
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA256_TWEET_BLOCKBYTES")
88
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA256_TWEET_VERSION")
89
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA256_STATEBYTES")
90
+ assert_instance_of Integer, _const("CRYPTO_HASHBLOCKS_SHA256_BLOCKBYTES")
91
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA256_VERSION")
92
+ assert_instance_of String, _const("CRYPTO_HASHBLOCKS_SHA256_IMPLEMENTATION")
93
+ assert_instance_of String, _const("CRYPTO_HASH_PRIMITIVE")
94
+ assert_instance_of Integer, _const("CRYPTO_HASH_BYTES")
95
+ assert_instance_of String, _const("CRYPTO_HASH_IMPLEMENTATION")
96
+ assert_instance_of String, _const("CRYPTO_HASH_VERSION")
97
+ assert_instance_of Integer, _const("CRYPTO_HASH_SHA512_TWEET_BYTES")
98
+ assert_instance_of String, _const("CRYPTO_HASH_SHA512_TWEET_VERSION")
99
+ assert_instance_of Integer, _const("CRYPTO_HASH_SHA512_BYTES")
100
+ assert_instance_of String, _const("CRYPTO_HASH_SHA512_VERSION")
101
+ assert_instance_of String, _const("CRYPTO_HASH_SHA512_IMPLEMENTATION")
102
+ assert_instance_of Integer, _const("CRYPTO_HASH_SHA256_TWEET_BYTES")
103
+ assert_instance_of String, _const("CRYPTO_HASH_SHA256_TWEET_VERSION")
104
+ assert_instance_of Integer, _const("CRYPTO_HASH_SHA256_BYTES")
105
+ assert_instance_of String, _const("CRYPTO_HASH_SHA256_VERSION")
106
+ assert_instance_of String, _const("CRYPTO_HASH_SHA256_IMPLEMENTATION")
107
+ assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_PRIMITIVE")
108
+ assert_instance_of Integer, _const("CRYPTO_ONETIMEAUTH_BYTES")
109
+ assert_instance_of Integer, _const("CRYPTO_ONETIMEAUTH_KEYBYTES")
110
+ assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_IMPLEMENTATION")
111
+ assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_VERSION")
112
+ assert_instance_of Integer, _const("CRYPTO_ONETIMEAUTH_POLY1305_TWEET_BYTES")
113
+ assert_instance_of Integer, _const("CRYPTO_ONETIMEAUTH_POLY1305_TWEET_KEYBYTES")
114
+ assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_POLY1305_TWEET_VERSION")
115
+ assert_instance_of Integer, _const("CRYPTO_ONETIMEAUTH_POLY1305_BYTES")
116
+ assert_instance_of Integer, _const("CRYPTO_ONETIMEAUTH_POLY1305_KEYBYTES")
117
+ assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_POLY1305_VERSION")
118
+ assert_instance_of String, _const("CRYPTO_ONETIMEAUTH_POLY1305_IMPLEMENTATION")
119
+ assert_instance_of String, _const("CRYPTO_SCALARMULT_PRIMITIVE")
120
+ assert_instance_of Integer, _const("CRYPTO_SCALARMULT_BYTES")
121
+ assert_instance_of Integer, _const("CRYPTO_SCALARMULT_SCALARBYTES")
122
+ assert_instance_of String, _const("CRYPTO_SCALARMULT_IMPLEMENTATION")
123
+ assert_instance_of String, _const("CRYPTO_SCALARMULT_VERSION")
124
+ assert_instance_of Integer, _const("CRYPTO_SCALARMULT_CURVE25519_TWEET_BYTES")
125
+ assert_instance_of Integer, _const("CRYPTO_SCALARMULT_CURVE25519_TWEET_SCALARBYTES")
126
+ assert_instance_of String, _const("CRYPTO_SCALARMULT_CURVE25519_TWEET_VERSION")
127
+ assert_instance_of Integer, _const("CRYPTO_SCALARMULT_CURVE25519_BYTES")
128
+ assert_instance_of Integer, _const("CRYPTO_SCALARMULT_CURVE25519_SCALARBYTES")
129
+ assert_instance_of String, _const("CRYPTO_SCALARMULT_CURVE25519_VERSION")
130
+ assert_instance_of String, _const("CRYPTO_SCALARMULT_CURVE25519_IMPLEMENTATION")
131
+ assert_instance_of String, _const("CRYPTO_SECRETBOX_PRIMITIVE")
132
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_KEYBYTES")
133
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_NONCEBYTES")
134
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_ZEROBYTES")
135
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_BOXZEROBYTES")
136
+ assert_instance_of String, _const("CRYPTO_SECRETBOX_IMPLEMENTATION")
137
+ assert_instance_of String, _const("CRYPTO_SECRETBOX_VERSION")
138
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_KEYBYTES")
139
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_NONCEBYTES")
140
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_ZEROBYTES")
141
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_BOXZEROBYTES")
142
+ assert_instance_of String, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_TWEET_VERSION")
143
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_KEYBYTES")
144
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_NONCEBYTES")
145
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_ZEROBYTES")
146
+ assert_instance_of Integer, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_BOXZEROBYTES")
147
+ assert_instance_of String, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_VERSION")
148
+ assert_instance_of String, _const("CRYPTO_SECRETBOX_XSALSA20POLY1305_IMPLEMENTATION")
149
+ assert_instance_of String, _const("CRYPTO_SIGN_PRIMITIVE")
150
+ assert_instance_of Integer, _const("CRYPTO_SIGN_BYTES")
151
+ assert_instance_of Integer, _const("CRYPTO_SIGN_PUBLICKEYBYTES")
152
+ assert_instance_of Integer, _const("CRYPTO_SIGN_SECRETKEYBYTES")
153
+ assert_instance_of String, _const("CRYPTO_SIGN_IMPLEMENTATION")
154
+ assert_instance_of String, _const("CRYPTO_SIGN_VERSION")
155
+ assert_instance_of Integer, _const("CRYPTO_SIGN_ED25519_TWEET_BYTES")
156
+ assert_instance_of Integer, _const("CRYPTO_SIGN_ED25519_TWEET_PUBLICKEYBYTES")
157
+ assert_instance_of Integer, _const("CRYPTO_SIGN_ED25519_TWEET_SECRETKEYBYTES")
158
+ assert_instance_of String, _const("CRYPTO_SIGN_ED25519_TWEET_VERSION")
159
+ assert_instance_of Integer, _const("CRYPTO_SIGN_ED25519_BYTES")
160
+ assert_instance_of Integer, _const("CRYPTO_SIGN_ED25519_PUBLICKEYBYTES")
161
+ assert_instance_of Integer, _const("CRYPTO_SIGN_ED25519_SECRETKEYBYTES")
162
+ assert_instance_of String, _const("CRYPTO_SIGN_ED25519_VERSION")
163
+ assert_instance_of String, _const("CRYPTO_SIGN_ED25519_IMPLEMENTATION")
164
+ assert_instance_of String, _const("CRYPTO_STREAM_PRIMITIVE")
165
+ assert_instance_of Integer, _const("CRYPTO_STREAM_KEYBYTES")
166
+ assert_instance_of Integer, _const("CRYPTO_STREAM_NONCEBYTES")
167
+ assert_instance_of String, _const("CRYPTO_STREAM_IMPLEMENTATION")
168
+ assert_instance_of String, _const("CRYPTO_STREAM_VERSION")
169
+ assert_instance_of Integer, _const("CRYPTO_STREAM_XSALSA20_TWEET_KEYBYTES")
170
+ assert_instance_of Integer, _const("CRYPTO_STREAM_XSALSA20_TWEET_NONCEBYTES")
171
171
  end
172
172
  end
@@ -4,7 +4,7 @@ class TweetNaClCryptoBoxTest < MiniTest::Test
4
4
  def test_crypto_box
5
5
  input = "hello world"
6
6
  nonce = "*" * 24
7
- expected_cipher = "0000000000000000FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
7
+ expected_cipher = "FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
8
8
  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"
9
9
  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"
10
10
 
@@ -31,4 +31,19 @@ class TweetNaClCryptoBoxTest < MiniTest::Test
31
31
  def test_crypto_box_nonce_not_correct_length
32
32
  assert_raises(ArgumentError) { TweetNaCl.crypto_box("foo", "bar", "pk", "sk") }
33
33
  end
34
+
35
+ def test_crypto_box_salsa_rounds_set_with_nil_argument
36
+ assert_raises(ArgumentError) { TweetNaCl.salsa_rounds = nil }
37
+ end
38
+
39
+ def test_crypto_box_salsa_rounds_get_set
40
+ assert_equal(TweetNaCl.salsa_rounds, TweetNaCl::DEFAULT_SALSA_ROUNDS)
41
+ TweetNaCl.salsa_rounds = 42
42
+ assert_equal(TweetNaCl.salsa_rounds, 42)
43
+ ensure
44
+ TweetNaCl.salsa_rounds = TweetNaCl::DEFAULT_SALSA_ROUNDS
45
+ end
46
+
47
+ def test_crypto_box_salsa_rounds_get
48
+ end
34
49
  end
@@ -4,7 +4,7 @@ class TweetNaClCryptoSecretTest < MiniTest::Test
4
4
  def test_crypto_secretbox
5
5
  input = "hello world"
6
6
  nonce = "*" * 24
7
- expected_cipher = "00000000000000002A9612E32BCC4E836B3D46463B7C1546EA8BC752A1B6AE6DE"
7
+ expected_cipher = "2A9612E32BCC4E836B3D46463B7C1546EA8BC752A1B6AE6DE"
8
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
9
 
10
10
  cipher = TweetNaCl.crypto_secretbox(input, nonce, k)
@@ -2,7 +2,7 @@
2
2
  $:<< 'lib'
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "tweetnacl"
5
- spec.version = "0.3.0"
5
+ spec.version = "1.0.0"
6
6
  spec.authors = ["Franck Verrot"]
7
7
  spec.email = ["franck@verrot.fr"]
8
8
  spec.homepage = "https://github.com/franckverrot/tweetnacl"
@@ -21,4 +21,24 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "minitest"
24
+
25
+ spec.post_install_message = <<END_OF_MESSAGE
26
+ [TweetNaCl] Breaking change in v1.0.0!
27
+
28
+ A breaking change has been introduced to `crypto_box` and `crypto_secretbox`
29
+ that makes ciphers differ. The first 64 bits are always empty and have been
30
+ dropped from the cipher output.
31
+
32
+ This causes differences like:
33
+
34
+ - expected_cipher = "0000000000000000FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
35
+ + expected_cipher = "FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
36
+
37
+ You might need to go through all persisted ciphers and change these values.
38
+
39
+ If you have more questions, please file a ticket! Thanks!
40
+ END_OF_MESSAGE
41
+
42
+ spec.cert_chain = ['certs/franckverrot.pem']
43
+ spec.signing_key = File.expand_path(ENV['RUBYGEMS_CERT_PATH']) if $0 =~ /gem\z/
24
44
  end
metadata CHANGED
@@ -1,14 +1,40 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tweetnacl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franck Verrot
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2014-08-19 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEMDCCApigAwIBAgIBATANBgkqhkiG9w0BAQsFADAhMR8wHQYDVQQDDBZmcmFu
14
+ Y2svREM9dmVycm90L0RDPWZyMB4XDTE4MTIyMTAxMzgwNVoXDTE5MTIyMTAxMzgw
15
+ NVowITEfMB0GA1UEAwwWZnJhbmNrL0RDPXZlcnJvdC9EQz1mcjCCAaIwDQYJKoZI
16
+ hvcNAQEBBQADggGPADCCAYoCggGBANjZ/7L2ECEQAVOYvMl0JOwyVXKRCsLnVrmP
17
+ mcwpCMFL0ennkpLJcqiDNsm0b/RkJHSLu3FMoYrIU5KoaP7iMIsLGv846aw2wSNI
18
+ G5XWGnRY9dWVu7Gz2OZbsDi18WT94Y/s2yf+orPLAiaJb451decYEpHqLTiaJhhJ
19
+ xHckJixfDVwZGJpow7rrJAJMbU9ZCJFUFAfNpgkOqhbBU4Ehi1umbC/ZBsVDiRVa
20
+ ZjfNhe7kgx6jo3EfPY4izPW2IKkpk7nJKNfZnM2r0cnpPJbhyH1m5fsikBD5tRNe
21
+ YxJpxDPf8UBTTXqoeSSQygiHWWZVbH3zj2jWzi5T0do5PbZcCeoIKR4TyOgbOgBW
22
+ Ra7bm9uVXo6MQWpp0aeC/X+F2Y/dFjXAP/TPL89ownd3XZUaNDdZfS6aKBMG3a5C
23
+ gcRLMt1hOJchslGNtvkq5W4Wq8hw+zNHzTMpRkIsYTbvlJCDxXRKR3jwPDTRvNAl
24
+ aemBW1g3yerHeDQr6GtxKEvhmHdw/wIDAQABo3MwcTAJBgNVHRMEAjAAMAsGA1Ud
25
+ DwQEAwIEsDAdBgNVHQ4EFgQUgG77cLAMzowManymHX63DbvfR5IwGwYDVR0RBBQw
26
+ EoEQZnJhbmNrQHZlcnJvdC5mcjAbBgNVHRIEFDASgRBmcmFuY2tAdmVycm90LmZy
27
+ MA0GCSqGSIb3DQEBCwUAA4IBgQAofcg/2kPT9VMBGEuO17F3yH6fiJboQeLL1nlM
28
+ ULZv5LyyqV6Yq0cQ+TZMGHd/hbvBFTN9/55WmiN66tYLaunyfr4aUflCQcM/qu2g
29
+ Ieoz8QLxfIi24DCDezpODHaud6Qt0VmMpalSOxbCuMeNnXLpnxbP/7fJBJoum5GS
30
+ CqGuH81fXy7KAAlgMBcsYb3+vZJhuAeM/zSrE5Hmf1zApTEVZc4Y0dO6eRC6WbXW
31
+ pJfyNXyITkkr7pTRYO/wj3lFoeDqfGXb48HvpJ54lqfeIvr9Hek7grcyQGfZ1rFY
32
+ Dx3RTjxParzCWk/HCFHQiZmU5lnOl7GShwAZrG6l0UHST3/YNCA52KDrmC/T0A2N
33
+ d2MQGgSZerYTx+HRKlradglBDPCs4nxQj5pnoDvGbngeZUua+ZZGFM9SXBT3zAIQ
34
+ akLQjJWKHQCzyqDChJHRGhlxyVFKP2JwqFgzE3p1l64JArsb7BEqhpoBPXMwlChE
35
+ HgzCBTsCU0syQBb1s6lBz2HrWA4=
36
+ -----END CERTIFICATE-----
37
+ date: 2019-05-01 00:00:00.000000000 Z
12
38
  dependencies:
13
39
  - !ruby/object:Gem::Dependency
14
40
  name: rake-compiler
@@ -74,13 +100,14 @@ extensions:
74
100
  - ext/tweetnacl/extconf.rb
75
101
  extra_rdoc_files: []
76
102
  files:
103
+ - ".circleci/config.yml"
77
104
  - ".gitignore"
78
- - ".travis.yml"
79
105
  - CHANGELOG.md
80
106
  - Gemfile
81
107
  - LICENSE.txt
82
108
  - README.md
83
109
  - Rakefile
110
+ - certs/franckverrot.pem
84
111
  - ext/tweetnacl/extconf.rb
85
112
  - ext/tweetnacl/randombytes.c
86
113
  - ext/tweetnacl/randombytes.h
@@ -110,7 +137,21 @@ homepage: https://github.com/franckverrot/tweetnacl
110
137
  licenses:
111
138
  - GPLv3
112
139
  metadata: {}
113
- post_install_message:
140
+ post_install_message: |
141
+ [TweetNaCl] Breaking change in v1.0.0!
142
+
143
+ A breaking change has been introduced to `crypto_box` and `crypto_secretbox`
144
+ that makes ciphers differ. The first 64 bits are always empty and have been
145
+ dropped from the cipher output.
146
+
147
+ This causes differences like:
148
+
149
+ - expected_cipher = "0000000000000000FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
150
+ + expected_cipher = "FBC937C3F136E09FA8A45C58C15E801394F5BB74CE8D538FE3D726"
151
+
152
+ You might need to go through all persisted ciphers and change these values.
153
+
154
+ If you have more questions, please file a ticket! Thanks!
114
155
  rdoc_options: []
115
156
  require_paths:
116
157
  - lib
@@ -125,8 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
166
  - !ruby/object:Gem::Version
126
167
  version: '0'
127
168
  requirements: []
128
- rubyforge_project:
129
- rubygems_version: 2.2.0
169
+ rubygems_version: 3.0.2
130
170
  signing_key:
131
171
  specification_version: 4
132
172
  summary: TweetNaCl for Ruby
@@ -145,4 +185,3 @@ test_files:
145
185
  - test/tweetnacl_crypto_sign_key_pair_test.rb
146
186
  - test/tweetnacl_crypto_sign_open_test.rb
147
187
  - test/tweetnacl_crypto_sign_test.rb
148
- has_rdoc:
Binary file
@@ -1,4 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.0
4
- script: rake