xxtea-ruby 1.2.0 → 1.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +1 -0
- data/README.md +8 -1
- data/README_zh_CN.md +9 -1
- data/Rakefile +8 -4
- data/ext/xxtea/extconf.rb +38 -3
- data/ext/xxtea/ruby_xxtea.c +17 -17
- data/lib/xxtea.rb +38 -0
- data/lib/xxtea/xxtea_ffi.rb +63 -0
- data/lib/xxtea/xxtea_ruby.rb +104 -0
- data/test/xxtea_test.rb +2 -2
- data/xxtea-ruby.gemspec +5 -2
- metadata +28 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efc56a30ea088303af96c80f4f36b5a809aa1bb0
|
4
|
+
data.tar.gz: d46a9ccdadb94859bbe668d477abcd0f9c92fccf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 09c1d9fab2db59aa73713a8aabad63b9de3e992fa267a5be3659833a2fa4d0df7cc02f046ed54b0f4fe03e1c123f360a9f0e493655c5a97775ecfcb65f882d70
|
7
|
+
data.tar.gz: b7d99f7446473f63820ac0d667969e760070a445622c25b1c6f0bb4a8e556b1a63cb575399c67bf4bdebe4c5c5e0a2a567351226fff0847219970321c76cb4ea
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
# XXTEA for Ruby
|
2
2
|
|
3
|
+
<a href="https://github.com/xxtea/">
|
4
|
+
<img src="https://avatars1.githubusercontent.com/u/6683159?v=3&s=86" alt="XXTEA logo" title="XXTEA" align="right" />
|
5
|
+
</a>
|
6
|
+
|
3
7
|
[](https://travis-ci.org/xxtea/xxtea-ruby)
|
4
8
|
[](https://rubygems.org/gems/xxtea-ruby)
|
5
9
|
[](https://rubygems.org/gems/xxtea-ruby)
|
10
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
11
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
12
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
6
13
|
|
7
14
|
## Introduction
|
8
15
|
|
@@ -34,4 +41,4 @@ XXTEA.decrypt_utf8(encrypt_data, key) == XXTEA.decrypt(encrypt_data, key).force_
|
|
34
41
|
|
35
42
|
## Note
|
36
43
|
|
37
|
-
|
44
|
+
decrypt_utf8 is an alias of decrypt in ruby 1.8.x or lower version.
|
data/README_zh_CN.md
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
# XXTEA 加密算法的 Ruby 实现
|
2
2
|
|
3
|
+
<a href="https://github.com/xxtea/">
|
4
|
+
<img src="https://avatars1.githubusercontent.com/u/6683159?v=3&s=86" alt="XXTEA logo" title="XXTEA" align="right" />
|
5
|
+
</a>
|
6
|
+
|
3
7
|
[](https://travis-ci.org/xxtea/xxtea-ruby)
|
4
8
|
[](https://rubygems.org/gems/xxtea-ruby)
|
9
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
10
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
11
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
12
|
+
[](https://rubygems.org/gems/xxtea-ruby)
|
5
13
|
|
6
14
|
## 简介
|
7
15
|
|
@@ -33,4 +41,4 @@ XXTEA.decrypt_utf8(encrypt_data, key) == XXTEA.decrypt(encrypt_data, key).force_
|
|
33
41
|
|
34
42
|
## 注意
|
35
43
|
|
36
|
-
在 1.8.x 或更低版本的 Ruby
|
44
|
+
在 1.8.x 或更低版本的 Ruby 上,decrypt_utf8 只是 decrypt 的一个别名。
|
data/Rakefile
CHANGED
@@ -3,9 +3,11 @@ require 'rake/extensiontask'
|
|
3
3
|
require 'rake/testtask'
|
4
4
|
require 'rake/clean'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
#if !defined?(JRUBY_VERSION) then
|
7
|
+
Rake::ExtensionTask.new('xxtea') do |ext|
|
8
|
+
ext.lib_dir = 'lib/xxtea'
|
9
|
+
end
|
10
|
+
#end
|
9
11
|
|
10
12
|
Rake::TestTask.new do |t|
|
11
13
|
t.libs << 'test'
|
@@ -16,4 +18,6 @@ end
|
|
16
18
|
desc "Run tests"
|
17
19
|
task :default => :test
|
18
20
|
|
19
|
-
|
21
|
+
#if !defined?(JRUBY_VERSION) then
|
22
|
+
Rake::Task[:test].prerequisites << :compile
|
23
|
+
#end
|
data/ext/xxtea/extconf.rb
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
############################################################
|
2
|
+
# #
|
3
|
+
# xxtea/extconf.rb #
|
4
|
+
# #
|
5
|
+
# XXTEA encryption algorithm library for Ruby. #
|
6
|
+
# #
|
7
|
+
# Encryption Algorithm Authors: #
|
8
|
+
# David J. Wheeler #
|
9
|
+
# Roger M. Needham #
|
10
|
+
# #
|
11
|
+
# Code Author: Ma Bingyao <mabingyao@gmail.com> #
|
12
|
+
# LastModified: Feb 12, 2016 #
|
13
|
+
# #
|
14
|
+
############################################################
|
15
|
+
|
16
|
+
if !defined?(JRUBY_VERSION) then
|
17
|
+
require 'mkmf'
|
18
|
+
create_makefile('xxtea/xxtea')
|
19
|
+
else
|
20
|
+
file = File.open('CMakeLists.txt', 'w') do |file|
|
21
|
+
file.puts 'project(xxtea)'
|
22
|
+
file.puts 'cmake_minimum_required(VERSION 2.6)'
|
23
|
+
file.puts 'set(CMAKE_MACOSX_RPATH 1)' if RUBY_PLATFORM=~/darwin/
|
24
|
+
file.puts 'set(LIBXXTEA_SRC ' + File.expand_path(File.dirname(__FILE__) + '/xxtea.c') +')'
|
25
|
+
file.puts 'add_library(xxtea SHARED ${LIBXXTEA_SRC})'
|
26
|
+
file.puts 'set_target_properties(xxtea PROPERTIES PREFIX "")'
|
27
|
+
file.puts 'set_target_properties(xxtea PROPERTIES SUFFIX "")'
|
28
|
+
if RUBY_PLATFORM=~/darwin/ then
|
29
|
+
file.puts 'set_target_properties(xxtea PROPERTIES OUTPUT_NAME "xxtea.bundle")'
|
30
|
+
elsif RUBY_PLATFORM=~/win32|w32/ then
|
31
|
+
file.puts 'set_target_properties(xxtea PROPERTIES OUTPUT_NAME "xxtea.dll")'
|
32
|
+
else
|
33
|
+
file.puts 'set_target_properties(xxtea PROPERTIES OUTPUT_NAME "xxtea.so")'
|
34
|
+
end
|
35
|
+
file.puts 'install(TARGETS xxtea DESTINATION ' + File.expand_path(File.dirname(__FILE__) + '/../../lib/xxtea') + ')'
|
36
|
+
end
|
37
|
+
system('cmake -G "Unix Makefiles" .')
|
38
|
+
end
|
data/ext/xxtea/ruby_xxtea.c
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
/**********************************************************\
|
2
2
|
| |
|
3
|
-
|
|
3
|
+
| ruby_xxtea.c |
|
4
4
|
| |
|
5
|
-
| XXTEA encryption algorithm library for
|
5
|
+
| XXTEA encryption algorithm library for Ruby. |
|
6
6
|
| |
|
7
7
|
| Encryption Algorithm Authors: |
|
8
8
|
| David J. Wheeler |
|
@@ -10,28 +10,31 @@
|
|
10
10
|
| |
|
11
11
|
| Code Authors: Chen fei <cf850118@163.com> |
|
12
12
|
| Ma Bingyao <mabingyao@gmail.com> |
|
13
|
-
| LastModified: Feb
|
13
|
+
| LastModified: Feb 11, 2016 |
|
14
14
|
| |
|
15
15
|
\**********************************************************/
|
16
16
|
|
17
17
|
#include <ruby.h>
|
18
|
-
#ifdef RSTRING_NOEMBED
|
19
|
-
#include <ruby/encoding.h>
|
20
|
-
#endif
|
21
18
|
#include "xxtea.h"
|
22
19
|
|
23
20
|
VALUE rb_encrypt(VALUE mod, VALUE data, VALUE key) {
|
24
|
-
|
21
|
+
void * result;
|
25
22
|
VALUE retval;
|
26
23
|
size_t data_len, out_len;
|
27
24
|
|
25
|
+
if (data == Qnil) return rb_str_new(0,0);
|
26
|
+
|
28
27
|
Check_Type(data, T_STRING);
|
29
28
|
Check_Type(key, T_STRING);
|
30
29
|
|
31
30
|
data_len = RSTRING_LEN(data);
|
32
31
|
|
32
|
+
if (data_len == 0) return data;
|
33
|
+
|
33
34
|
result = xxtea_encrypt(RSTRING_PTR(data), data_len, RSTRING_PTR(key), &out_len);
|
34
35
|
|
36
|
+
if (result == NULL) return rb_str_new(0,0);
|
37
|
+
|
35
38
|
retval = rb_str_new((const char *)result, out_len);
|
36
39
|
|
37
40
|
free(result);
|
@@ -40,17 +43,23 @@ VALUE rb_encrypt(VALUE mod, VALUE data, VALUE key) {
|
|
40
43
|
}
|
41
44
|
|
42
45
|
VALUE rb_decrypt(VALUE mod, VALUE data, VALUE key) {
|
43
|
-
|
46
|
+
void * result;
|
44
47
|
VALUE retval;
|
45
48
|
size_t data_len, out_len;
|
46
49
|
|
50
|
+
if (data == Qnil) return rb_str_new(0,0);
|
51
|
+
|
47
52
|
Check_Type(data, T_STRING);
|
48
53
|
Check_Type(key, T_STRING);
|
49
54
|
|
50
55
|
data_len = RSTRING_LEN(data);
|
51
56
|
|
57
|
+
if (data_len == 0) return data;
|
58
|
+
|
52
59
|
result = xxtea_decrypt(RSTRING_PTR(data), data_len, RSTRING_PTR(key), &out_len);
|
53
60
|
|
61
|
+
if (result == NULL) return rb_str_new(0,0);
|
62
|
+
|
54
63
|
retval = rb_str_new((const char *)result, out_len);
|
55
64
|
|
56
65
|
free(result);
|
@@ -58,17 +67,8 @@ VALUE rb_decrypt(VALUE mod, VALUE data, VALUE key) {
|
|
58
67
|
return retval;
|
59
68
|
}
|
60
69
|
|
61
|
-
#ifdef RSTRING_NOEMBED
|
62
|
-
VALUE rb_decrypt_utf8(VALUE mod, VALUE data, VALUE key) {
|
63
|
-
return rb_enc_associate(rb_decrypt(mod, data, key), rb_utf8_encoding());
|
64
|
-
}
|
65
|
-
#endif
|
66
|
-
|
67
70
|
void Init_xxtea() {
|
68
71
|
VALUE XXTEA = rb_define_module("XXTEA");
|
69
72
|
rb_define_singleton_method(XXTEA, "encrypt", rb_encrypt, 2);
|
70
73
|
rb_define_singleton_method(XXTEA, "decrypt", rb_decrypt, 2);
|
71
|
-
#ifdef RSTRING_NOEMBED
|
72
|
-
rb_define_singleton_method(XXTEA, "decrypt_utf8", rb_decrypt_utf8, 2);
|
73
|
-
#endif
|
74
74
|
}
|
data/lib/xxtea.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
############################################################
|
2
|
+
# #
|
3
|
+
# xxtea.rb #
|
4
|
+
# #
|
5
|
+
# XXTEA encryption algorithm library for Ruby. #
|
6
|
+
# #
|
7
|
+
# Encryption Algorithm Authors: #
|
8
|
+
# David J. Wheeler #
|
9
|
+
# Roger M. Needham #
|
10
|
+
# #
|
11
|
+
# Code Author: Ma Bingyao <mabingyao@gmail.com> #
|
12
|
+
# LastModified: Feb 12, 2016 #
|
13
|
+
# #
|
14
|
+
############################################################
|
15
|
+
|
16
|
+
if File.exists?(File.dirname(__FILE__) + '/xxtea.' + (RUBY_PLATFORM=~/darwin/ ? 'dylib' : RUBY_PLATFORM=~/win32|w32/ ? 'dll' : 'so')) then
|
17
|
+
if !defined?(JRUBY_VERSION) then
|
18
|
+
require "xxtea/xxtea"
|
19
|
+
else
|
20
|
+
require "xxtea/xxtea_ffi"
|
21
|
+
end
|
22
|
+
else
|
23
|
+
require "xxtea/xxtea_ruby"
|
24
|
+
end
|
25
|
+
|
26
|
+
module XXTEA
|
27
|
+
extend self
|
28
|
+
VERSION = "1.3.0"
|
29
|
+
if RUBY_VERSION >= "1.9.0" then
|
30
|
+
def decrypt_utf8(data, key)
|
31
|
+
decrypt(data, key).force_encoding(Encoding::UTF_8)
|
32
|
+
end
|
33
|
+
else
|
34
|
+
def decrypt_utf8(data, key)
|
35
|
+
decrypt(data, key)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
############################################################
|
2
|
+
# #
|
3
|
+
# xxtea_ffi.rb #
|
4
|
+
# #
|
5
|
+
# XXTEA encryption algorithm library for Ruby. #
|
6
|
+
# #
|
7
|
+
# Encryption Algorithm Authors: #
|
8
|
+
# David J. Wheeler #
|
9
|
+
# Roger M. Needham #
|
10
|
+
# #
|
11
|
+
# Code Author: Ma Bingyao <mabingyao@gmail.com> #
|
12
|
+
# LastModified: Feb 12, 2016 #
|
13
|
+
# #
|
14
|
+
############################################################
|
15
|
+
|
16
|
+
require "ffi"
|
17
|
+
|
18
|
+
module FFI
|
19
|
+
class Pointer
|
20
|
+
type = FFI.find_type(:size_t)
|
21
|
+
type, _ = FFI::TypeDefs.find do |(name, t)|
|
22
|
+
method_defined? "read_#{name}" if t == type
|
23
|
+
end
|
24
|
+
alias_method :read_size_t, "read_#{type}" if type
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
module XXTEA
|
29
|
+
private
|
30
|
+
module LIB
|
31
|
+
extend FFI::Library
|
32
|
+
ffi_lib File.dirname(__FILE__) + '/xxtea.' + (RUBY_PLATFORM=~/darwin/ ? 'dylib' : RUBY_PLATFORM=~/win32|w32/ ? 'dll' : 'so')
|
33
|
+
attach_function :xxtea_encrypt, [:pointer, :size_t, :pointer, :pointer], :pointer
|
34
|
+
attach_function :xxtea_decrypt, [:pointer, :size_t, :pointer, :pointer], :pointer
|
35
|
+
attach_function :free, [:pointer], :void
|
36
|
+
end
|
37
|
+
public
|
38
|
+
extend self
|
39
|
+
def encrypt(data, key)
|
40
|
+
return nil if data.nil?
|
41
|
+
data_len = data.bytesize
|
42
|
+
data = FFI::MemoryPointer.from_string(data)
|
43
|
+
key = FFI::MemoryPointer.from_string(key)
|
44
|
+
out_len = FFI::MemoryPointer.new(:size_t, 1)
|
45
|
+
result = LIB.xxtea_encrypt(data, data_len, key, out_len)
|
46
|
+
return nil if result.null?
|
47
|
+
retval = result.read_bytes(out_len.read_size_t)
|
48
|
+
LIB.free(result)
|
49
|
+
return retval
|
50
|
+
end
|
51
|
+
def decrypt(data, key)
|
52
|
+
return nil if data.nil?
|
53
|
+
data_len = data.bytesize
|
54
|
+
data = FFI::MemoryPointer.from_string(data)
|
55
|
+
key = FFI::MemoryPointer.from_string(key)
|
56
|
+
out_len = FFI::MemoryPointer.new(:size_t, 1)
|
57
|
+
result = LIB.xxtea_decrypt(data, data_len, key, out_len)
|
58
|
+
return nil if result.null?
|
59
|
+
retval = result.read_bytes(out_len.read_size_t)
|
60
|
+
LIB.free(result)
|
61
|
+
return retval
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
############################################################
|
2
|
+
# #
|
3
|
+
# xxtea_ruby.rb #
|
4
|
+
# #
|
5
|
+
# XXTEA encryption algorithm library for Ruby. #
|
6
|
+
# #
|
7
|
+
# Encryption Algorithm Authors: #
|
8
|
+
# David J. Wheeler #
|
9
|
+
# Roger M. Needham #
|
10
|
+
# #
|
11
|
+
# Code Author: Ma Bingyao <mabingyao@gmail.com> #
|
12
|
+
# LastModified: Feb 11, 2016 #
|
13
|
+
# #
|
14
|
+
############################################################
|
15
|
+
module XXTEA
|
16
|
+
|
17
|
+
private
|
18
|
+
DELTA = 0x9e3779b9
|
19
|
+
|
20
|
+
extend self
|
21
|
+
|
22
|
+
def uint32_array_to_bytes(v, w)
|
23
|
+
n = (v.size - 1) << 2
|
24
|
+
if w then
|
25
|
+
m = v.last
|
26
|
+
return '' if (m < n - 3) or (m > n)
|
27
|
+
n = m
|
28
|
+
end
|
29
|
+
s = v.pack("V*")
|
30
|
+
w ? s[0, n] : s
|
31
|
+
end
|
32
|
+
|
33
|
+
def bytes_to_uint32_array(s, w)
|
34
|
+
n = s.bytesize
|
35
|
+
v = s.ljust((4 - (n & 3) & 3) + n, "\0").unpack("V*")
|
36
|
+
v[v.size] = n if w
|
37
|
+
v
|
38
|
+
end
|
39
|
+
|
40
|
+
if RUBY_VERSION >= "1.9.0" then
|
41
|
+
def str_to_uint32_array(s, w)
|
42
|
+
s = String.new(s).force_encoding(Encoding::BINARY) if (s.encoding != Encoding::BINARY)
|
43
|
+
bytes_to_uint32_array(s, w)
|
44
|
+
end
|
45
|
+
else
|
46
|
+
alias :str_to_uint32_array :bytes_to_uint32_array
|
47
|
+
end
|
48
|
+
|
49
|
+
def mx(sum, y, z, p, e, k)
|
50
|
+
((z >> 5 ^ y << 2) + (y >> 3 ^ z << 4)) ^ ((sum ^ y) + (k[p & 3 ^ e] ^ z))
|
51
|
+
end
|
52
|
+
|
53
|
+
def encrypt_uint32_array(v, k)
|
54
|
+
n = v.size - 1
|
55
|
+
z = v[n]
|
56
|
+
y = 0
|
57
|
+
sum = 0
|
58
|
+
(6 + 52 / (n + 1)).downto(1) {
|
59
|
+
sum = (sum + DELTA) & 0xffffffff
|
60
|
+
e = (sum >> 2) & 3
|
61
|
+
for p in (0...n)
|
62
|
+
y = v[p + 1]
|
63
|
+
z = v[p] = (v[p] + mx(sum, y, z, p, e, k)) & 0xffffffff
|
64
|
+
end
|
65
|
+
y = v[0]
|
66
|
+
z = v[n] = (v[n] + mx(sum, y, z, n, e, k)) & 0xffffffff
|
67
|
+
}
|
68
|
+
return v
|
69
|
+
end
|
70
|
+
|
71
|
+
def decrypt_uint32_array(v, k)
|
72
|
+
n = v.size - 1
|
73
|
+
z = 0
|
74
|
+
y = v[0]
|
75
|
+
sum = ((6 + 52 / (n + 1)) * DELTA) & 0xffffffff
|
76
|
+
while (sum != 0)
|
77
|
+
e = sum >> 2 & 3
|
78
|
+
n.downto(1) { |p|
|
79
|
+
z = v[p - 1]
|
80
|
+
y = v[p] = (v[p] - mx(sum, y, z, p, e, k)) & 0xffffffff
|
81
|
+
}
|
82
|
+
z = v[n]
|
83
|
+
y = v[0] = (v[0] - mx(sum, y, z, 0, e, k)) & 0xffffffff
|
84
|
+
sum = (sum - DELTA) & 0xffffffff
|
85
|
+
end
|
86
|
+
return v
|
87
|
+
end
|
88
|
+
|
89
|
+
public
|
90
|
+
|
91
|
+
def encrypt(data, key)
|
92
|
+
return '' if data.nil? or data.empty?
|
93
|
+
v = str_to_uint32_array(data, true)
|
94
|
+
k = str_to_uint32_array(key.ljust(16, "\0"), false)
|
95
|
+
uint32_array_to_bytes(encrypt_uint32_array(v, k), false)
|
96
|
+
end
|
97
|
+
|
98
|
+
def decrypt(data, key)
|
99
|
+
return '' if data.nil? or data.empty?
|
100
|
+
v = str_to_uint32_array(data, false)
|
101
|
+
k = str_to_uint32_array(key.ljust(16, "\0"), false)
|
102
|
+
uint32_array_to_bytes(decrypt_uint32_array(v, k), true)
|
103
|
+
end
|
104
|
+
end
|
data/test/xxtea_test.rb
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
require "minitest/autorun"
|
3
3
|
require "xxtea"
|
4
4
|
|
5
|
-
describe "
|
5
|
+
describe "xxtea" do
|
6
6
|
it "test xxtea encrypt and decrypt" do
|
7
|
-
text = "Hello World! 你好,中国!"
|
7
|
+
text = "Hello World! \0你好,中国!"
|
8
8
|
key = "1234567890"
|
9
9
|
encrypt_data = XXTEA.encrypt(text, key)
|
10
10
|
if RUBY_VERSION >= "1.9.0" then
|
data/xxtea-ruby.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'xxtea-ruby'
|
3
|
-
s.version = '1.
|
3
|
+
s.version = '1.3.0'
|
4
4
|
s.license = 'MIT'
|
5
5
|
s.author = 'Ma Bingyao ( andot )'
|
6
6
|
s.email = 'mabingyao@gmail.com'
|
@@ -17,4 +17,7 @@ EOF
|
|
17
17
|
s.test_files = s.files.grep(%r{^test/})
|
18
18
|
s.require_path = 'lib'
|
19
19
|
s.extensions = ["ext/xxtea/extconf.rb"]
|
20
|
-
|
20
|
+
|
21
|
+
s.add_runtime_dependency 'ffi', '~> 1.9', '>= 1.9.10'
|
22
|
+
s.requirements << 'cmake'
|
23
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xxtea-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ma Bingyao ( andot )
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
12
|
-
dependencies:
|
11
|
+
date: 2016-02-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.9'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.9.10
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.9'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.9.10
|
13
33
|
description: |2
|
14
34
|
XXTEA is a fast and secure encryption algorithm. This is a XXTEA library for Ruby.
|
15
35
|
|
@@ -31,6 +51,9 @@ files:
|
|
31
51
|
- ext/xxtea/ruby_xxtea.c
|
32
52
|
- ext/xxtea/xxtea.c
|
33
53
|
- ext/xxtea/xxtea.h
|
54
|
+
- lib/xxtea.rb
|
55
|
+
- lib/xxtea/xxtea_ffi.rb
|
56
|
+
- lib/xxtea/xxtea_ruby.rb
|
34
57
|
- test/xxtea_test.rb
|
35
58
|
- xxtea-ruby.gemspec
|
36
59
|
homepage: https://github.com/xxtea/xxtea-ruby
|
@@ -51,7 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
51
74
|
- - ">="
|
52
75
|
- !ruby/object:Gem::Version
|
53
76
|
version: '0'
|
54
|
-
requirements:
|
77
|
+
requirements:
|
78
|
+
- cmake
|
55
79
|
rubyforge_project:
|
56
80
|
rubygems_version: 2.5.0
|
57
81
|
signing_key:
|