krypt-core 0.0.1 → 0.0.2.rc1

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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +14 -0
  3. data/Rakefile +88 -0
  4. data/ext/krypt/core/krypt-core.c +1 -2
  5. data/ext/krypt/core/krypt-core.h +0 -12
  6. data/ext/krypt/core/krypt_asn1_parser.c +2 -2
  7. data/ext/krypt/core/krypt_missing.c +75 -0
  8. data/ext/krypt/core/krypt_missing.h +5 -0
  9. data/ext/krypt/core/krypt_pem.c +1 -1
  10. data/lib/{krypt-core.rb → krypt/core.rb} +8 -1
  11. metadata +40 -80
  12. data/ext/krypt/core/Makefile +0 -221
  13. data/ext/krypt/core/extconf.h +0 -8
  14. data/ext/krypt/core/krypt-core.o +0 -0
  15. data/ext/krypt/core/krypt-provider.h +0 -86
  16. data/ext/krypt/core/krypt_asn1-internal.o +0 -0
  17. data/ext/krypt/core/krypt_asn1.o +0 -0
  18. data/ext/krypt/core/krypt_asn1_codec.o +0 -0
  19. data/ext/krypt/core/krypt_asn1_in_adapter.o +0 -0
  20. data/ext/krypt/core/krypt_asn1_in_chunked.o +0 -0
  21. data/ext/krypt/core/krypt_asn1_in_definite.o +0 -0
  22. data/ext/krypt/core/krypt_asn1_parser.o +0 -0
  23. data/ext/krypt/core/krypt_asn1_template.o +0 -0
  24. data/ext/krypt/core/krypt_asn1_template_encoder.o +0 -0
  25. data/ext/krypt/core/krypt_asn1_template_parser.o +0 -0
  26. data/ext/krypt/core/krypt_b64.o +0 -0
  27. data/ext/krypt/core/krypt_digest.c +0 -391
  28. data/ext/krypt/core/krypt_digest.h +0 -51
  29. data/ext/krypt/core/krypt_digest.o +0 -0
  30. data/ext/krypt/core/krypt_error.o +0 -0
  31. data/ext/krypt/core/krypt_hex.o +0 -0
  32. data/ext/krypt/core/krypt_io.o +0 -0
  33. data/ext/krypt/core/krypt_io_in_pem.o +0 -0
  34. data/ext/krypt/core/krypt_missing.o +0 -0
  35. data/ext/krypt/core/krypt_pem.o +0 -0
  36. data/ext/krypt/core/krypt_provider-internal.h +0 -40
  37. data/ext/krypt/core/krypt_provider.c +0 -136
  38. data/ext/krypt/core/krypt_provider.o +0 -0
  39. data/ext/krypt/core/kryptcore.so +0 -0
  40. data/ext/krypt/core/mkmf.log +0 -130
  41. data/lib/krypt-core/version.rb +0 -3
  42. data/lib/kryptcore.so +0 -0
  43. data/spec/README +0 -2
  44. data/test/README +0 -2
  45. data/test/res/certificate.cer +0 -0
  46. data/test/resources.rb +0 -48
  47. data/test/scratch.rb +0 -17
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d544e2c899e9a8eb9b8b526d21086e7c90b5cca8
4
+ data.tar.gz: 5b4f288dbca756ba15e47631221c8133985b671f
5
+ SHA512:
6
+ metadata.gz: e4ec5681d1746859827612c4d7b412e2dbb0b193a3f852822d566a1ecc449c621f92769c313a094736ce2517b5f4f415e383bc36a7e202276ff95a140b839ed4
7
+ data.tar.gz: 4a1a55537650dfa7c460ab2e95e87bc1de30566b907009caabab6da8d106eda06659a53a64098fd890c940e27915c9d18450dba112ce5083accacf46612e7723
data/README.rdoc ADDED
@@ -0,0 +1,14 @@
1
+ == krypt-core-c
2
+
3
+ The C implementation of the krypt-core API.
4
+
5
+ == krypt
6
+
7
+ For more information about krypt, please have a
8
+ look at the project and its wiki at
9
+
10
+ https://github.com/krypt/krypt
11
+
12
+ Copyright (c) 2011-2013
13
+ Hiroshi Nakamura <nahi@ruby-lang.org>
14
+ Martin Bosslet <Martin.Bosslet@gmail.com>
data/Rakefile ADDED
@@ -0,0 +1,88 @@
1
+ require 'rake'
2
+ require 'rake/extensiontask'
3
+ require 'rspec/core/rake_task'
4
+ require 'rdoc/task'
5
+
6
+ KRYPT_HOME = '../krypt'
7
+
8
+ $config_options = []
9
+
10
+ task :default => :compile
11
+
12
+ task :clean do
13
+ rm_f FileList['*.gcov']
14
+ end
15
+
16
+ Rake::ExtensionTask.new('kryptcore') do |ext|
17
+ ext.ext_dir = "ext/krypt/core"
18
+ ext.lib_dir = "lib"
19
+ ext.config_options = $config_options
20
+ ext.cross_compile = true
21
+ ext.cross_platform = 'i386-mswin32'
22
+ end
23
+
24
+ RSpec::Core::RakeTask.new('spec-run') do |spec|
25
+ spec.pattern = File.join(KRYPT_HOME, 'spec/**/*_spec.rb')
26
+ spec.fail_on_error = false
27
+ end
28
+
29
+ task 'enable-coverage' do
30
+ # ugly, but we cannot define 2 ExtensionTasks for the same ext.name.
31
+ $config_options << '-g'
32
+ end
33
+
34
+ task 'enable-profiler' do
35
+ #to enable profiling run
36
+ #rake build:profiler -- --with-profiler-dir=<path_to>/gperftools/'
37
+ $config_options << '-p'
38
+ end
39
+
40
+ desc 'requires gcov and lcov in $PATH'
41
+ task 'report-coverage' do
42
+ outdir = File.dirname(Dir['tmp/**/Makefile'].first)
43
+ curdir = Dir.pwd
44
+ Dir.chdir(outdir) do
45
+ sh "lcov -c -i -d . -o kryptcore_base.info"
46
+ Dir.entries("#{curdir}/ext/krypt/core").each do |f|
47
+ next if File.directory? f || f !~ /\.[hc]$/
48
+ # See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=535755
49
+ sh "gcov -o . #{f}"
50
+ end
51
+ sh "lcov -c -d . -o kryptcore.info"
52
+ sh "lcov -a kryptcore.info -a kryptcore_base.info -o kryptcore_total.info"
53
+ sh "lcov -r kryptcore_total.info ruby.h --output-file kryptcore_total.info"
54
+ sh "lcov -r kryptcore_total.info '*include*' --output-file kryptcore_total.info"
55
+ sh "genhtml -o coverage kryptcore_total.info"
56
+ end
57
+ end
58
+
59
+ desc 'Build ext for coverage and generate a coverage report of spec.'
60
+ task 'coverage' => ['clean', 'enable-coverage', 'compile', 'spec-run', 'report-coverage']
61
+
62
+ desc 'Build and run RSpec code examples'
63
+ task 'spec' => ['compile', 'spec-run']
64
+
65
+ task 'build' => 'compile'
66
+
67
+ task 'build-debug' => ['enable-coverage', 'build']
68
+ task 'build-profiler' => ['enable-profiler', 'build']
69
+
70
+ Rake::RDocTask.new("doc") do |rdoc|
71
+ rdoc.rdoc_dir = 'doc'
72
+ rdoc.title = "Krypt-Core API"
73
+ rdoc.rdoc_files.include('README.rdoc')
74
+ rdoc.rdoc_files.include('ext/**/*')
75
+ end
76
+
77
+ desc 'Ensure that bundle is installed for spec run'
78
+ task 'bundler-install' do
79
+ sh 'bundle install'
80
+ end
81
+
82
+ desc 'Run the specs for valgrind analysis'
83
+ task 'valgrind-spec-run' do
84
+ sh 'valgrind --suppressions=.ruby.supp --leak-check=full --num-callers=50 --partial-loads-ok=yes --undef-value-errors=no --trace-children=yes bundle exec rake spec'
85
+ end
86
+
87
+ desc 'Build from scratch with debug symbols and run valgrind on a spec run (requires valgrind on PATH)'
88
+ task 'valgrind' => ['clean', 'build-debug', 'bundler-install', 'valgrind-spec-run']
@@ -103,8 +103,7 @@ Init_kryptcore(void)
103
103
  sKrypt_ID_SORT = rb_intern("sort");
104
104
 
105
105
  /* Init components */
106
+ Init_krypt_helper();
106
107
  Init_krypt_io();
107
108
  Init_krypt_asn1();
108
- Init_krypt_native_provider();
109
- Init_krypt_digest();
110
109
  }
@@ -29,8 +29,6 @@
29
29
  #if !defined(_KRYPT_CORE_H_)
30
30
  #define _KRYPT_CORE_H_
31
31
 
32
- #include RUBY_EXTCONF_H
33
-
34
32
  #if defined(__cplusplus)
35
33
  extern "C" {
36
34
  #endif
@@ -38,11 +36,6 @@ extern "C" {
38
36
  #define RSTRING_NOT_MODIFIED 1
39
37
  #define RUBY_READONLY_STRING 1
40
38
 
41
- #include <ruby.h>
42
-
43
- #if defined(HAVE_RUBY_IO_H)
44
- #include <ruby/io.h>
45
- #endif
46
39
 
47
40
  /* This is just a precaution to take remind us of thread safety
48
41
  * issues in case there would be no GVL */
@@ -60,17 +53,12 @@ extern ID sKrypt_ID_EQUALS;
60
53
  extern ID sKrypt_ID_SORT_BANG;
61
54
  extern ID sKrypt_ID_SORT;
62
55
 
63
- /** krypt-provider interface */
64
- #include "krypt-provider.h"
65
- #include "krypt_provider-internal.h"
66
-
67
56
  /** krypt-core headers **/
68
57
  #include "krypt_error.h"
69
58
  #include "krypt_missing.h"
70
59
  #include "krypt_io.h"
71
60
  #include "krypt_asn1.h"
72
61
  #include "krypt_asn1_template.h"
73
- #include "krypt_digest.h"
74
62
 
75
63
  VALUE krypt_to_der_if_possible(VALUE obj);
76
64
  VALUE krypt_to_der(VALUE obj);
@@ -105,8 +105,8 @@ int_asn1_header_new(binyo_instream *in, krypt_asn1_header *header)
105
105
  parsed_header->tag_class = ID2SYM(tag_class);
106
106
  parsed_header->constructed = header->is_constructed ? Qtrue : Qfalse;
107
107
  parsed_header->infinite = header->is_infinite ? Qtrue : Qfalse;
108
- parsed_header->length = LONG2NUM(header->length);
109
- parsed_header->header_length = LONG2NUM(header->tag_len + header->length_len);
108
+ parsed_header->length = SIZET2NUM(header->length);
109
+ parsed_header->header_length = SIZET2NUM(header->tag_len + header->length_len);
110
110
  parsed_header->in = in;
111
111
  parsed_header->header = header;
112
112
  parsed_header->value = Qnil;
@@ -28,6 +28,9 @@
28
28
 
29
29
  #include "krypt-core.h"
30
30
 
31
+ VALUE mKryptHelper;
32
+ VALUE mKryptHelperString;
33
+
31
34
  #ifndef HAVE_RB_STR_ENCODE
32
35
  VALUE
33
36
  rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts)
@@ -236,3 +239,75 @@ int krypt_asn1_decode_bignum(uint8_t *bytes, size_t len, VALUE *out)
236
239
  }
237
240
  #endif
238
241
 
242
+ static VALUE
243
+ krypt_helper_string_buffer(VALUE self, VALUE size)
244
+ {
245
+ return rb_str_buf_new(NUM2LONG(size));
246
+ }
247
+
248
+ static inline long
249
+ int_check_and_get_len(VALUE s1, VALUE s2)
250
+ {
251
+ long len = RSTRING_LEN(s1);
252
+ if (RSTRING_LEN(s2) != len) {
253
+ rb_raise(eKryptError, "String sizes don't match");
254
+ }
255
+ return len;
256
+ }
257
+
258
+ static inline void
259
+ int_xor(char *source1, char *source2, char *target, long len)
260
+ {
261
+ int i;
262
+ for (i = 0; i < len; i++) {
263
+ target[i] = source1[i] ^ source2[i];
264
+ }
265
+ }
266
+
267
+
268
+ static VALUE
269
+ krypt_helper_string_xor(VALUE self, VALUE s1, VALUE s2)
270
+ {
271
+ long len = int_check_and_get_len(s1, s2);
272
+ char *result = ALLOCA_N(char, len);
273
+
274
+ int_xor(RSTRING_PTR(s1), RSTRING_PTR(s2), result, len);
275
+ return rb_str_new(result, len);
276
+ }
277
+
278
+ static VALUE
279
+ krypt_helper_string_xor_bang(VALUE self, VALUE s1, VALUE s2)
280
+ {
281
+ long len = int_check_and_get_len(s1, s2);
282
+ #ifndef HAVE_RB_STR_PTR_READONLY
283
+ char *result = RSTRING_PTR(s1);
284
+ #else
285
+ /* Rubinius: We use RUBY_READ_ONLY_STRING, so we can't write to the
286
+ RSTRING_PTR directly */
287
+ char *result = rb_str_ptr(s1);
288
+ #endif
289
+ int_xor(result, RSTRING_PTR(s2), result, len);
290
+ return s1;
291
+ }
292
+
293
+ void Init_krypt_helper(void)
294
+ {
295
+ #if 0
296
+ mKrypt = rb_define_module("Krypt"); /* Let RDoc know */
297
+ #endif
298
+
299
+ mKryptHelper = rb_path2class("Krypt::Helper");
300
+
301
+ /*
302
+ * Document-module: Krypt::Helper::String
303
+ *
304
+ * Provides features not available in the String class itself to deal
305
+ * efficiently with binary data.
306
+ */
307
+ mKryptHelperString = rb_define_module_under(mKryptHelper, "String");
308
+
309
+ rb_define_module_function(mKryptHelperString, "buffer", krypt_helper_string_buffer, 1);
310
+ rb_define_module_function(mKryptHelperString, "xor", krypt_helper_string_xor, 2);
311
+ rb_define_module_function(mKryptHelperString, "xor!", krypt_helper_string_xor_bang, 2);
312
+ }
313
+
@@ -55,6 +55,11 @@ struct tm *krypt_gmtime_r(const time_t *tp, struct tm *result);
55
55
  #define gmtime_r(t, tm) krypt_gmtime_r((t), (tm))
56
56
  #endif
57
57
 
58
+ extern VALUE mKryptHelper;
59
+ extern VALUE mKryptHelperString;
60
+
61
+ void Init_krypt_helper(void);
62
+
58
63
  int krypt_asn1_encode_bignum(VALUE bignum, uint8_t **out, size_t *len);
59
64
  int krypt_asn1_decode_bignum(uint8_t *bytes, size_t len, VALUE *out);
60
65
 
@@ -118,7 +118,7 @@ krypt_pem_decode(VALUE self, VALUE pem)
118
118
  if (krypt_pem_get_last_name(in, &name, &len) == BINYO_ERR) goto error;
119
119
  vname = rb_str_new((const char *) name, len);
120
120
  xfree(name);
121
- rb_yield_values(3, der, vname, LONG2NUM(i++));
121
+ rb_yield_values(3, der, vname, SIZET2NUM(i++));
122
122
  }
123
123
  krypt_pem_continue_stream(in);
124
124
  }
@@ -30,6 +30,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30
30
 
31
31
  =end
32
32
 
33
+ # The order is important - kryptcore.so depends on binyo
33
34
  require 'binyo'
34
35
  require 'kryptcore.so'
35
- require 'krypt-provider-openssl'
36
+ require 'krypt/provider/openssl'
37
+
38
+ begin
39
+ ossl = Krypt::Provider::OpenSSL.new
40
+ Krypt::Provider.register(ossl)
41
+ end
42
+
metadata CHANGED
@@ -1,48 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: krypt-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
5
- prerelease:
4
+ version: 0.0.2.rc1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Hiroshi Nakamura, Martin Bosslet
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-27 00:00:00.000000000 Z
11
+ date: 2014-02-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: binyo
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - '='
20
18
  - !ruby/object:Gem::Version
21
- version: 0.0.1
19
+ version: 0.0.2.rc1
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - '='
28
25
  - !ruby/object:Gem::Version
29
- version: 0.0.1
26
+ version: 0.0.2.rc1
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: krypt-provider-openssl
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - '='
36
32
  - !ruby/object:Gem::Version
37
- version: 0.0.1
33
+ version: 0.0.2.rc1
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - '='
44
39
  - !ruby/object:Gem::Version
45
- version: 0.0.1
40
+ version: 0.0.2.rc1
46
41
  description: krypt-core API for C(++)-based Rubies
47
42
  email: Martin.Bosslet@gmail.com
48
43
  executables: []
@@ -51,100 +46,65 @@ extensions:
51
46
  extra_rdoc_files: []
52
47
  files:
53
48
  - LICENSE
54
- - ext/krypt/core/krypt_asn1_template.o
55
- - ext/krypt/core/krypt_io.h
56
- - ext/krypt/core/krypt_asn1_in_adapter.c
57
- - ext/krypt/core/krypt_missing.h
58
- - ext/krypt/core/krypt_asn1_in_definite.c
59
- - ext/krypt/core/krypt-core.h
60
- - ext/krypt/core/Makefile
61
- - ext/krypt/core/binyo-io-buffer.h
62
- - ext/krypt/core/krypt_asn1.h
63
- - ext/krypt/core/krypt_io_in_pem.c
64
- - ext/krypt/core/krypt_io_in_pem.o
65
- - ext/krypt/core/krypt_hex.c
66
- - ext/krypt/core/krypt_asn1_in_definite.o
67
- - ext/krypt/core/krypt_asn1_template-internal.h
68
- - ext/krypt/core/krypt_provider.c
69
- - ext/krypt/core/krypt_b64.o
49
+ - README.rdoc
50
+ - Rakefile
70
51
  - ext/krypt/core/binyo-error.h
71
- - ext/krypt/core/krypt_error.o
72
- - ext/krypt/core/extconf.rb
73
- - ext/krypt/core/krypt_asn1-internal.c
74
- - ext/krypt/core/krypt_pem.o
75
- - ext/krypt/core/krypt_hex.h
76
- - ext/krypt/core/krypt_digest.h
52
+ - ext/krypt/core/binyo-io-buffer.h
77
53
  - ext/krypt/core/binyo-io.h
78
- - ext/krypt/core/krypt_io.o
79
- - ext/krypt/core/krypt_error.c
80
- - ext/krypt/core/krypt_asn1_template_encoder.c
81
- - ext/krypt/core/krypt_asn1_parser.c
82
- - ext/krypt/core/krypt_b64.h
83
- - ext/krypt/core/krypt_provider.o
54
+ - ext/krypt/core/extconf.rb
84
55
  - ext/krypt/core/krypt-core.c
85
- - ext/krypt/core/krypt_asn1_template_parser.o
86
- - ext/krypt/core/krypt_asn1-internal.o
56
+ - ext/krypt/core/krypt-core.h
57
+ - ext/krypt/core/krypt_asn1-internal.c
87
58
  - ext/krypt/core/krypt_asn1-internal.h
88
- - ext/krypt/core/krypt_asn1_template_encoder.o
89
- - ext/krypt/core/krypt_asn1_in_adapter.o
90
- - ext/krypt/core/krypt_digest.o
91
- - ext/krypt/core/krypt_asn1.o
92
- - ext/krypt/core/krypt_asn1_codec.o
93
- - ext/krypt/core/krypt_io.c
94
- - ext/krypt/core/krypt-core.o
95
- - ext/krypt/core/krypt_digest.c
96
- - ext/krypt/core/krypt_missing.c
97
- - ext/krypt/core/krypt_asn1_template_parser.c
59
+ - ext/krypt/core/krypt_asn1.c
60
+ - ext/krypt/core/krypt_asn1.h
61
+ - ext/krypt/core/krypt_asn1_codec.c
62
+ - ext/krypt/core/krypt_asn1_in_adapter.c
63
+ - ext/krypt/core/krypt_asn1_in_chunked.c
64
+ - ext/krypt/core/krypt_asn1_in_definite.c
65
+ - ext/krypt/core/krypt_asn1_parser.c
66
+ - ext/krypt/core/krypt_asn1_template-internal.h
98
67
  - ext/krypt/core/krypt_asn1_template.c
99
- - ext/krypt/core/mkmf.log
68
+ - ext/krypt/core/krypt_asn1_template.h
69
+ - ext/krypt/core/krypt_asn1_template_encoder.c
70
+ - ext/krypt/core/krypt_asn1_template_parser.c
100
71
  - ext/krypt/core/krypt_b64-internal.h
101
- - ext/krypt/core/kryptcore.so
102
- - ext/krypt/core/krypt_hex.o
103
- - ext/krypt/core/krypt_asn1_parser.o
104
- - ext/krypt/core/krypt_pem.c
105
- - ext/krypt/core/extconf.h
106
- - ext/krypt/core/krypt_asn1_in_chunked.o
107
- - ext/krypt/core/krypt_asn1_codec.c
108
- - ext/krypt/core/krypt_missing.o
109
72
  - ext/krypt/core/krypt_b64.c
73
+ - ext/krypt/core/krypt_b64.h
74
+ - ext/krypt/core/krypt_error.c
110
75
  - ext/krypt/core/krypt_error.h
111
- - ext/krypt/core/krypt_asn1_in_chunked.c
112
76
  - ext/krypt/core/krypt_hex-internal.h
113
- - ext/krypt/core/krypt-provider.h
114
- - ext/krypt/core/krypt_provider-internal.h
115
- - ext/krypt/core/krypt_asn1_template.h
116
- - ext/krypt/core/krypt_asn1.c
117
- - lib/krypt-core.rb
118
- - lib/krypt-core/version.rb
119
- - lib/kryptcore.so
120
- - spec/README
121
- - test/scratch.rb
122
- - test/README
123
- - test/resources.rb
124
- - test/res/certificate.cer
77
+ - ext/krypt/core/krypt_hex.c
78
+ - ext/krypt/core/krypt_hex.h
79
+ - ext/krypt/core/krypt_io.c
80
+ - ext/krypt/core/krypt_io.h
81
+ - ext/krypt/core/krypt_io_in_pem.c
82
+ - ext/krypt/core/krypt_missing.c
83
+ - ext/krypt/core/krypt_missing.h
84
+ - ext/krypt/core/krypt_pem.c
85
+ - lib/krypt/core.rb
125
86
  homepage: https://github.com/krypt/krypt-core-c
126
87
  licenses:
127
88
  - MIT
89
+ metadata: {}
128
90
  post_install_message:
129
91
  rdoc_options: []
130
92
  require_paths:
131
93
  - lib
132
94
  required_ruby_version: !ruby/object:Gem::Requirement
133
- none: false
134
95
  requirements:
135
- - - ! '>='
96
+ - - ">="
136
97
  - !ruby/object:Gem::Version
137
98
  version: 1.9.3
138
99
  required_rubygems_version: !ruby/object:Gem::Requirement
139
- none: false
140
100
  requirements:
141
- - - ! '>='
101
+ - - ">"
142
102
  - !ruby/object:Gem::Version
143
- version: '0'
103
+ version: 1.3.1
144
104
  requirements: []
145
105
  rubyforge_project:
146
- rubygems_version: 1.8.23
106
+ rubygems_version: 2.2.0
147
107
  signing_key:
148
- specification_version: 3
108
+ specification_version: 4
149
109
  summary: C implementation of the krypt-core API
150
110
  test_files: []