xxtea-ruby 1.2.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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 488c7cce3d24c1541ba45624f3d5da139831541c
4
+ data.tar.gz: d36abcdaaa44bd169df2b2cbba895e47882e6853
5
+ SHA512:
6
+ metadata.gz: 3e646c093bf4e44d84bfcc4fbf50b27bfc7ed4e81200d495e1be676eb55b4ba867313e77a5d2cfb7addc2f6535f3266f0f25eff15f6d4d02e69829488dd23dc4
7
+ data.tar.gz: 873474e74ca764d7972b409915633eea03584de3da170f138c2d64195c35276c6fe189acdf9ff1ebc16f7451bc8ef4948bb52fe331ea8fcc853a9d42e35cf1f0
@@ -0,0 +1,8 @@
1
+
2
+ tmp
3
+
4
+ *.lock
5
+
6
+ *.bundle
7
+
8
+ *.gem
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - 2.1
8
+ - 2.2
9
+ script: "bundle exec rake test"
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'rake'
6
+ gem 'rake-compiler'
7
+ gem 'minitest', '~> 4.1'
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2008-2016 Ma Bingyao <mabingyao@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,37 @@
1
+ # XXTEA for Ruby
2
+
3
+ [![Build Status](https://travis-ci.org/xxtea/xxtea-ruby.svg?branch=master)](https://travis-ci.org/xxtea/xxtea-ruby)
4
+ [![Gem](https://img.shields.io/gem/v/xxtea-ruby.svg)](https://rubygems.org/gems/xxtea-ruby)
5
+ [![Gem](https://img.shields.io/gem/dt/xxtea-ruby.svg)](https://rubygems.org/gems/xxtea-ruby)
6
+
7
+ ## Introduction
8
+
9
+ XXTEA is a fast and secure encryption algorithm. This is a XXTEA library for Ruby.
10
+
11
+ It is different from the original XXTEA encryption algorithm. It encrypts and decrypts raw binary data instead of 32bit integer array, and the key is also the raw binary data.
12
+
13
+ ## Installation
14
+
15
+ ```sh
16
+ gem install xxtea-ruby
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```ruby
22
+ # encoding: utf-8
23
+ require "xxtea"
24
+ text = "Hello World! 你好,中国!"
25
+ key = "1234567890"
26
+ encrypt_data = XXTEA.encrypt(text, key)
27
+ decrypt_data = XXTEA.decrypt_utf8(encrypt_data, key)
28
+ puts (text == decrypt_data ? "success!" : "fail!");
29
+ ```
30
+
31
+ ```ruby
32
+ XXTEA.decrypt_utf8(encrypt_data, key) == XXTEA.decrypt(encrypt_data, key).force_encoding(Encoding::UTF_8)
33
+ ```
34
+
35
+ ## Note
36
+
37
+ There is no decrypt_utf8 function in ruby 1.8.x or lower version.
@@ -0,0 +1,36 @@
1
+ # XXTEA 加密算法的 Ruby 实现
2
+
3
+ [![Build Status](https://travis-ci.org/xxtea/xxtea-ruby.svg?branch=master)](https://travis-ci.org/xxtea/xxtea-ruby)
4
+ [![Gem](https://img.shields.io/gem/v/xxtea-ruby.svg)](https://rubygems.org/gems/xxtea-ruby)
5
+
6
+ ## 简介
7
+
8
+ XXTEA 是一个快速安全的加密算法。本项目是 XXTEA 加密算法的 Ruby 实现。
9
+
10
+ 它不同于原始的 XXTEA 加密算法。它是针对原始二进制数据类型进行加密的,而不是针对 32 位 int 数组。同样,密钥也是原始二进制数据类型。
11
+
12
+ ## 安装
13
+
14
+ ```sh
15
+ gem install xxtea-ruby
16
+ ```
17
+
18
+ ## 使用
19
+
20
+ ```ruby
21
+ # encoding: utf-8
22
+ require "xxtea"
23
+ text = "Hello World! 你好,中国!"
24
+ key = "1234567890"
25
+ encrypt_data = XXTEA.encrypt(text, key)
26
+ decrypt_data = XXTEA.decrypt_utf8(encrypt_data, key)
27
+ puts (text == decrypt_data ? "success!" : "fail!");
28
+ ```
29
+
30
+ ```ruby
31
+ XXTEA.decrypt_utf8(encrypt_data, key) == XXTEA.decrypt(encrypt_data, key).force_encoding(Encoding::UTF_8)
32
+ ```
33
+
34
+ ## 注意
35
+
36
+ 在 1.8.x 或更低版本的 Ruby 上,没有 decrypt_utf8 这个函数。
@@ -0,0 +1,19 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/extensiontask'
3
+ require 'rake/testtask'
4
+ require 'rake/clean'
5
+
6
+ Rake::ExtensionTask.new('xxtea') do |ext|
7
+ ext.lib_dir = 'lib'
8
+ end
9
+
10
+ Rake::TestTask.new do |t|
11
+ t.libs << 'test'
12
+ t.pattern = 'test/*_test.rb'
13
+ t.verbose = true
14
+ end
15
+
16
+ desc "Run tests"
17
+ task :default => :test
18
+
19
+ Rake::Task[:test].prerequisites << :compile
@@ -0,0 +1,3 @@
1
+ require 'mkmf'
2
+ $CFLAGS += ' -g -O3 -Wall '
3
+ create_makefile('xxtea')
@@ -0,0 +1,74 @@
1
+ /**********************************************************\
2
+ | |
3
+ | xxtea.c |
4
+ | |
5
+ | XXTEA encryption algorithm library for Lua. |
6
+ | |
7
+ | Encryption Algorithm Authors: |
8
+ | David J. Wheeler |
9
+ | Roger M. Needham |
10
+ | |
11
+ | Code Authors: Chen fei <cf850118@163.com> |
12
+ | Ma Bingyao <mabingyao@gmail.com> |
13
+ | LastModified: Feb 8, 2016 |
14
+ | |
15
+ \**********************************************************/
16
+
17
+ #include <ruby.h>
18
+ #ifdef RSTRING_NOEMBED
19
+ #include <ruby/encoding.h>
20
+ #endif
21
+ #include "xxtea.h"
22
+
23
+ VALUE rb_encrypt(VALUE mod, VALUE data, VALUE key) {
24
+ unsigned char * result;
25
+ VALUE retval;
26
+ size_t data_len, out_len;
27
+
28
+ Check_Type(data, T_STRING);
29
+ Check_Type(key, T_STRING);
30
+
31
+ data_len = RSTRING_LEN(data);
32
+
33
+ result = xxtea_encrypt(RSTRING_PTR(data), data_len, RSTRING_PTR(key), &out_len);
34
+
35
+ retval = rb_str_new((const char *)result, out_len);
36
+
37
+ free(result);
38
+
39
+ return retval;
40
+ }
41
+
42
+ VALUE rb_decrypt(VALUE mod, VALUE data, VALUE key) {
43
+ unsigned char *result;
44
+ VALUE retval;
45
+ size_t data_len, out_len;
46
+
47
+ Check_Type(data, T_STRING);
48
+ Check_Type(key, T_STRING);
49
+
50
+ data_len = RSTRING_LEN(data);
51
+
52
+ result = xxtea_decrypt(RSTRING_PTR(data), data_len, RSTRING_PTR(key), &out_len);
53
+
54
+ retval = rb_str_new((const char *)result, out_len);
55
+
56
+ free(result);
57
+
58
+ return retval;
59
+ }
60
+
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
+ void Init_xxtea() {
68
+ VALUE XXTEA = rb_define_module("XXTEA");
69
+ rb_define_singleton_method(XXTEA, "encrypt", rb_encrypt, 2);
70
+ 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
+ }
@@ -0,0 +1,260 @@
1
+ /**********************************************************\
2
+ | |
3
+ | xxtea.c |
4
+ | |
5
+ | XXTEA encryption algorithm library for C. |
6
+ | |
7
+ | Encryption Algorithm Authors: |
8
+ | David J. Wheeler |
9
+ | Roger M. Needham |
10
+ | |
11
+ | Code Authors: Chen fei <cf850118@163.com> |
12
+ | Ma Bingyao <mabingyao@gmail.com> |
13
+ | LastModified: Feb 7, 2016 |
14
+ | |
15
+ \**********************************************************/
16
+
17
+
18
+ #include "xxtea.h"
19
+
20
+ #include <string.h>
21
+ #if defined(_MSC_VER) && _MSC_VER < 1600
22
+ typedef unsigned __int8 uint8_t;
23
+ typedef unsigned __int32 uint32_t;
24
+ #else
25
+ #if defined(__FreeBSD__) && __FreeBSD__ < 5
26
+ /* FreeBSD 4 doesn't have stdint.h file */
27
+ #include <inttypes.h>
28
+ #else
29
+ #include <stdint.h>
30
+ #endif
31
+ #endif
32
+
33
+ #include <sys/types.h> /* This will likely define BYTE_ORDER */
34
+
35
+ #ifndef BYTE_ORDER
36
+ #if (BSD >= 199103)
37
+ # include <machine/endian.h>
38
+ #else
39
+ #if defined(linux) || defined(__linux__)
40
+ # include <endian.h>
41
+ #else
42
+ #define LITTLE_ENDIAN 1234 /* least-significant byte first (vax, pc) */
43
+ #define BIG_ENDIAN 4321 /* most-significant byte first (IBM, net) */
44
+ #define PDP_ENDIAN 3412 /* LSB first in word, MSW first in long (pdp)*/
45
+
46
+ #if defined(__i386__) || defined(__x86_64__) || defined(__amd64__) || \
47
+ defined(vax) || defined(ns32000) || defined(sun386) || \
48
+ defined(MIPSEL) || defined(_MIPSEL) || defined(BIT_ZERO_ON_RIGHT) || \
49
+ defined(__alpha__) || defined(__alpha)
50
+ #define BYTE_ORDER LITTLE_ENDIAN
51
+ #endif
52
+
53
+ #if defined(sel) || defined(pyr) || defined(mc68000) || defined(sparc) || \
54
+ defined(is68k) || defined(tahoe) || defined(ibm032) || defined(ibm370) || \
55
+ defined(MIPSEB) || defined(_MIPSEB) || defined(_IBMR2) || defined(DGUX) ||\
56
+ defined(apollo) || defined(__convex__) || defined(_CRAY) || \
57
+ defined(__hppa) || defined(__hp9000) || \
58
+ defined(__hp9000s300) || defined(__hp9000s700) || \
59
+ defined (BIT_ZERO_ON_LEFT) || defined(m68k) || defined(__sparc)
60
+ #define BYTE_ORDER BIG_ENDIAN
61
+ #endif
62
+ #endif /* linux */
63
+ #endif /* BSD */
64
+ #endif /* BYTE_ORDER */
65
+
66
+ #ifndef BYTE_ORDER
67
+ #ifdef __BYTE_ORDER
68
+ #if defined(__LITTLE_ENDIAN) && defined(__BIG_ENDIAN)
69
+ #ifndef LITTLE_ENDIAN
70
+ #define LITTLE_ENDIAN __LITTLE_ENDIAN
71
+ #endif
72
+ #ifndef BIG_ENDIAN
73
+ #define BIG_ENDIAN __BIG_ENDIAN
74
+ #endif
75
+ #if (__BYTE_ORDER == __LITTLE_ENDIAN)
76
+ #define BYTE_ORDER LITTLE_ENDIAN
77
+ #else
78
+ #define BYTE_ORDER BIG_ENDIAN
79
+ #endif
80
+ #endif
81
+ #endif
82
+ #endif
83
+
84
+ #define MX (((z >> 5) ^ (y << 2)) + ((y >> 3) ^ (z << 4))) ^ ((sum ^ y) + (key[(p & 3) ^ e] ^ z))
85
+ #define DELTA 0x9e3779b9
86
+
87
+ #define FIXED_KEY \
88
+ size_t i;\
89
+ uint8_t fixed_key[16];\
90
+ memcpy(fixed_key, key, 16);\
91
+ for (i = 0; (i < 16) && (fixed_key[i] != 0); ++i);\
92
+ for (++i; i < 16; ++i) fixed_key[i] = 0;\
93
+
94
+
95
+ static uint32_t * xxtea_to_uint_array(const uint8_t * data, size_t len, int inc_len, size_t * out_len) {
96
+ uint32_t *out;
97
+ #if !(defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN))
98
+ size_t i;
99
+ #endif
100
+ size_t n;
101
+
102
+ n = (((len & 3) == 0) ? (len >> 2) : ((len >> 2) + 1));
103
+
104
+ if (inc_len) {
105
+ out = (uint32_t *)calloc(n + 1, sizeof(uint32_t));
106
+ if (!out) return NULL;
107
+ out[n] = (uint32_t)len;
108
+ *out_len = n + 1;
109
+ }
110
+ else {
111
+ out = (uint32_t *)calloc(n, sizeof(uint32_t));
112
+ if (!out) return NULL;
113
+ *out_len = n;
114
+ }
115
+ #if defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN)
116
+ memcpy(out, data, len);
117
+ #else
118
+ for (i = 0; i < len; ++i) {
119
+ out[i >> 2] |= (uint32_t)data[i] << ((i & 3) << 3);
120
+ }
121
+ #endif
122
+
123
+ return out;
124
+ }
125
+
126
+ static uint8_t * xxtea_to_ubyte_array(const uint32_t * data, size_t len, int inc_len, size_t * out_len) {
127
+ uint8_t *out;
128
+ #if !(defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN))
129
+ size_t i;
130
+ #endif
131
+ size_t m, n;
132
+
133
+ n = len << 2;
134
+
135
+ if (inc_len) {
136
+ m = data[len - 1];
137
+ n -= 4;
138
+ if ((m < n - 3) || (m > n)) return NULL;
139
+ n = m;
140
+ }
141
+
142
+ out = (uint8_t *)malloc(n + 1);
143
+
144
+ #if defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN)
145
+ memcpy(out, data, n);
146
+ #else
147
+ for (i = 0; i < n; ++i) {
148
+ out[i] = (uint8_t)(data[i >> 2] >> ((i & 3) << 3));
149
+ }
150
+ #endif
151
+
152
+ out[n] = '\0';
153
+ *out_len = n;
154
+
155
+ return out;
156
+ }
157
+
158
+ static uint32_t * xxtea_uint_encrypt(uint32_t * data, size_t len, uint32_t * key) {
159
+ uint32_t n = (uint32_t)len - 1;
160
+ uint32_t z = data[n], y, p, q = 6 + 52 / (n + 1), sum = 0, e;
161
+
162
+ if (n < 1) return data;
163
+
164
+ while (0 < q--) {
165
+ sum += DELTA;
166
+ e = sum >> 2 & 3;
167
+
168
+ for (p = 0; p < n; p++) {
169
+ y = data[p + 1];
170
+ z = data[p] += MX;
171
+ }
172
+
173
+ y = data[0];
174
+ z = data[n] += MX;
175
+ }
176
+
177
+ return data;
178
+ }
179
+
180
+ static uint32_t * xxtea_uint_decrypt(uint32_t * data, size_t len, uint32_t * key) {
181
+ uint32_t n = (uint32_t)len - 1;
182
+ uint32_t z, y = data[0], p, q = 6 + 52 / (n + 1), sum = q * DELTA, e;
183
+
184
+ if (n < 1) return data;
185
+
186
+ while (sum != 0) {
187
+ e = sum >> 2 & 3;
188
+
189
+ for (p = n; p > 0; p--) {
190
+ z = data[p - 1];
191
+ y = data[p] -= MX;
192
+ }
193
+
194
+ z = data[n];
195
+ y = data[0] -= MX;
196
+ sum -= DELTA;
197
+ }
198
+
199
+ return data;
200
+ }
201
+
202
+ static uint8_t * xxtea_ubyte_encrypt(const uint8_t * data, size_t len, const uint8_t * key, size_t * out_len) {
203
+ uint8_t *out;
204
+ uint32_t *data_array, *key_array;
205
+ size_t data_len, key_len;
206
+
207
+ if (!len) return NULL;
208
+
209
+ data_array = xxtea_to_uint_array(data, len, 1, &data_len);
210
+ if (!data_array) return NULL;
211
+
212
+ key_array = xxtea_to_uint_array(key, 16, 0, &key_len);
213
+ if (!key_array) {
214
+ free(data_array);
215
+ return NULL;
216
+ }
217
+
218
+ out = xxtea_to_ubyte_array(xxtea_uint_encrypt(data_array, data_len, key_array), data_len, 0, out_len);
219
+
220
+ free(data_array);
221
+ free(key_array);
222
+
223
+ return out;
224
+ }
225
+
226
+ static uint8_t * xxtea_ubyte_decrypt(const uint8_t * data, size_t len, const uint8_t * key, size_t * out_len) {
227
+ uint8_t *out;
228
+ uint32_t *data_array, *key_array;
229
+ size_t data_len, key_len;
230
+
231
+ if (!len) return NULL;
232
+
233
+ data_array = xxtea_to_uint_array(data, len, 0, &data_len);
234
+ if (!data_array) return NULL;
235
+
236
+ key_array = xxtea_to_uint_array(key, 16, 0, &key_len);
237
+ if (!key_array) {
238
+ free(data_array);
239
+ return NULL;
240
+ }
241
+
242
+ out = xxtea_to_ubyte_array(xxtea_uint_decrypt(data_array, data_len, key_array), data_len, 1, out_len);
243
+
244
+ free(data_array);
245
+ free(key_array);
246
+
247
+ return out;
248
+ }
249
+
250
+ // public functions
251
+
252
+ void * xxtea_encrypt(const void * data, size_t len, const void * key, size_t * out_len) {
253
+ FIXED_KEY
254
+ return xxtea_ubyte_encrypt(data, len, fixed_key, out_len);
255
+ }
256
+
257
+ void * xxtea_decrypt(const void * data, size_t len, const void * key, size_t * out_len) {
258
+ FIXED_KEY
259
+ return xxtea_ubyte_decrypt(data, len, fixed_key, out_len);
260
+ }
@@ -0,0 +1,54 @@
1
+ /**********************************************************\
2
+ | |
3
+ | xxtea.h |
4
+ | |
5
+ | XXTEA encryption algorithm library for C. |
6
+ | |
7
+ | Encryption Algorithm Authors: |
8
+ | David J. Wheeler |
9
+ | Roger M. Needham |
10
+ | |
11
+ | Code Authors: Chen fei <cf850118@163.com> |
12
+ | Ma Bingyao <mabingyao@gmail.com> |
13
+ | LastModified: Mar 3, 2015 |
14
+ | |
15
+ \**********************************************************/
16
+
17
+ #ifndef XXTEA_INCLUDED
18
+ #define XXTEA_INCLUDED
19
+
20
+ #include <stdlib.h>
21
+
22
+ #ifdef __cplusplus
23
+ extern "C" {
24
+ #endif
25
+
26
+ /**
27
+ * Function: xxtea_encrypt
28
+ * @data: Data to be encrypted
29
+ * @len: Length of the data to be encrypted
30
+ * @key: Symmetric key
31
+ * @out_len: Pointer to output length variable
32
+ * Returns: Encrypted data or %NULL on failure
33
+ *
34
+ * Caller is responsible for freeing the returned buffer.
35
+ */
36
+ void * xxtea_encrypt(const void * data, size_t len, const void * key, size_t * out_len);
37
+
38
+ /**
39
+ * Function: xxtea_decrypt
40
+ * @data: Data to be decrypted
41
+ * @len: Length of the data to be decrypted
42
+ * @key: Symmetric key
43
+ * @out_len: Pointer to output length variable
44
+ * Returns: Decrypted data or %NULL on failure
45
+ *
46
+ * Caller is responsible for freeing the returned buffer.
47
+ */
48
+ void * xxtea_decrypt(const void * data, size_t len, const void * key, size_t * out_len);
49
+
50
+ #ifdef __cplusplus
51
+ }
52
+ #endif
53
+
54
+ #endif
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ require "minitest/autorun"
3
+ require "xxtea"
4
+
5
+ describe "XXTEA" do
6
+ it "test xxtea encrypt and decrypt" do
7
+ text = "Hello World! 你好,中国!"
8
+ key = "1234567890"
9
+ encrypt_data = XXTEA.encrypt(text, key)
10
+ if RUBY_VERSION >= "1.9.0" then
11
+ decrypt_data = XXTEA.decrypt_utf8(encrypt_data, key)
12
+ decrypt_data2 = XXTEA.decrypt(encrypt_data, key).force_encoding(Encoding::UTF_8)
13
+ assert_equal text, decrypt_data
14
+ assert_equal decrypt_data, decrypt_data2
15
+ else
16
+ decrypt_data = XXTEA.decrypt(encrypt_data, key)
17
+ assert_equal text, decrypt_data
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'xxtea-ruby'
3
+ s.version = '1.2.0'
4
+ s.license = 'MIT'
5
+ s.author = 'Ma Bingyao ( andot )'
6
+ s.email = 'mabingyao@gmail.com'
7
+ s.homepage = 'https://github.com/xxtea/xxtea-ruby'
8
+ s.platform = Gem::Platform::RUBY
9
+ s.description = <<-EOF
10
+ XXTEA is a fast and secure encryption algorithm. This is a XXTEA library for Ruby.
11
+
12
+ It is different from the original XXTEA encryption algorithm. It encrypts and decrypts raw binary data instead of 32bit integer array, and the key is also the raw binary data.
13
+ EOF
14
+
15
+ s.summary = 'XXTEA is a fast and secure encryption algorithm. This is a XXTEA library for Ruby.'
16
+ s.files = `git ls-files`.split($/)
17
+ s.test_files = s.files.grep(%r{^test/})
18
+ s.require_path = 'lib'
19
+ s.extensions = ["ext/xxtea/extconf.rb"]
20
+ end
metadata ADDED
@@ -0,0 +1,62 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xxtea-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Ma Bingyao ( andot )
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-07 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2
14
+ XXTEA is a fast and secure encryption algorithm. This is a XXTEA library for Ruby.
15
+
16
+ It is different from the original XXTEA encryption algorithm. It encrypts and decrypts raw binary data instead of 32bit integer array, and the key is also the raw binary data.
17
+ email: mabingyao@gmail.com
18
+ executables: []
19
+ extensions:
20
+ - ext/xxtea/extconf.rb
21
+ extra_rdoc_files: []
22
+ files:
23
+ - ".gitignore"
24
+ - ".travis.yml"
25
+ - Gemfile
26
+ - LICENSE.md
27
+ - README.md
28
+ - README_zh_CN.md
29
+ - Rakefile
30
+ - ext/xxtea/extconf.rb
31
+ - ext/xxtea/ruby_xxtea.c
32
+ - ext/xxtea/xxtea.c
33
+ - ext/xxtea/xxtea.h
34
+ - test/xxtea_test.rb
35
+ - xxtea-ruby.gemspec
36
+ homepage: https://github.com/xxtea/xxtea-ruby
37
+ licenses:
38
+ - MIT
39
+ metadata: {}
40
+ post_install_message:
41
+ rdoc_options: []
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ requirements: []
55
+ rubyforge_project:
56
+ rubygems_version: 2.5.0
57
+ signing_key:
58
+ specification_version: 4
59
+ summary: XXTEA is a fast and secure encryption algorithm. This is a XXTEA library
60
+ for Ruby.
61
+ test_files:
62
+ - test/xxtea_test.rb