rgsshd 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rgsshd.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 yoshikizh
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,97 @@
1
+ # Rgsshd
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'rgsshd'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install rgsshd
18
+
19
+ ## Usage
20
+
21
+ RGSSHD加密包
22
+
23
+ 制作思路:
24
+ 1.音乐文件,图片文件 ZLIB 加密 数据库文件 直接打入加密包
25
+
26
+ 2.数据结构:
27
+
28
+ 总文件头:开始地址:0x00
29
+ 00-07(8byte) 描述数据包名称
30
+ 08-0F(8byte) 描述版本号
31
+ 10-13(4byte) Audio文件头地址
32
+ 14-17(4byte) Audio文件头长度
33
+ 18-1B(4byte) Graphics文件头地址
34
+ 1C-1F(4byte) Graphics文件头长度
35
+ 20-23(4byte) Date文件头地址
36
+ 24-27(4byte) Date文件头长度
37
+
38
+
39
+ Audio文件头:
40
+ AUDIO文件块地址 (4byte) --|
41
+ AUDIO文件块长度 (4byte) --|--Total(12byte)
42
+ AUDIO文件数量 (4byte) --|
43
+
44
+ "hash = { 路径\文件名1=>[文件1地址,文件1长度],
45
+ 路径\文件名2=>[文件2地址,文件2长度],
46
+ ..............
47
+ ...........
48
+ 路径\文件名x=>[文件x地址,文件x长度],
49
+ }"
50
+
51
+
52
+ Audio文件块:文件1内容+文件2内容+文件3内容......
53
+
54
+
55
+
56
+
57
+ Graphics文件头:
58
+ Graphics文件块地址 (4byte) --|
59
+ Graphics文件块长度 (4byte) --|--Total(12byte)
60
+ Graphics文件数量 (4byte) --|
61
+
62
+ "hash = { 路径\文件名1=>[文件1地址,文件1长度],
63
+ 路径\文件名2=>[文件2地址,文件2长度],
64
+ ..............
65
+ ...........
66
+ 路径\文件名x=>[文件x地址,文件x长度],
67
+ }"
68
+
69
+
70
+ Graphics文件块:文件1内容+文件2内容+文件3内容......
71
+
72
+
73
+
74
+ Data文件头:
75
+ Data文件块地址 (4byte) --|
76
+ Data文件块长度 (4byte) --|--Total(12byte)
77
+ Data文件数量 (4byte) --|
78
+
79
+ "hash = { 路径\文件名1=>[文件1地址,文件1长度],
80
+ 路径\文件名2=>[文件2地址,文件2长度],
81
+ ..............
82
+ ...........
83
+ 路径\文件名x=>[文件x地址,文件x长度],
84
+ }"
85
+
86
+
87
+ Data文件块:文件1内容+文件2内容+文件3内容......
88
+
89
+ 数据包结尾块信息:预留16个字节
90
+
91
+ ## Contributing
92
+
93
+ 1. Fork it
94
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
95
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
96
+ 4. Push to the branch (`git push origin my-new-feature`)
97
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,434 @@
1
+ require "rgsshd/version"
2
+
3
+ #==============================================================================
4
+ # ■ RGSSHD_Package
5
+ #------------------------------------------------------------------------------
6
+ #  数据包生成的模块。
7
+ #==============================================================================
8
+ module Set_File
9
+ OFFSET = 0x0c
10
+ def self.load
11
+ $rgss = File.open("Game.rgsshide","rb")
12
+ tp = $rgss.read(16)
13
+ if tp[0,8] != "RGSSHIDE"
14
+ raise "不是RGSSHIDE文件!"
15
+ end
16
+ if tp[8,8] != "20080808"
17
+ raise "不支持的版本!"
18
+ end
19
+ @head = []
20
+ @audioH = []
21
+ @graphicsH = []
22
+ @dataH = []
23
+ 6.times{@head.push $rgss.read(4).unpack("L")[0]}
24
+ $rgss.pos = @head[0]
25
+ 3.times{@audioH.push $rgss.read(4).unpack("L")[0]}
26
+ $rgss.pos = @head[2]
27
+ 3.times{@graphicsH.push $rgss.read(4).unpack("L")[0]}
28
+ $rgss.pos = @head[4]
29
+ 3.times{@dataH.push $rgss.read(4).unpack("L")[0]}
30
+
31
+ $rgss.pos = @head[0] + OFFSET
32
+ @audioInf = eval(Zlib::Inflate.inflate($rgss.read(@head[1]- OFFSET)))
33
+ $rgss.pos = @head[2] + OFFSET
34
+ @graphicsInf = eval(Zlib::Inflate.inflate($rgss.read(@head[3]- OFFSET)))
35
+ $rgss.pos = @head[4] + OFFSET
36
+ @dataInf = eval(Zlib::Inflate.inflate($rgss.read(@head[5]- OFFSET)))
37
+ end
38
+
39
+ #--------------------------------------------------------------------------
40
+ # ● 解码代码
41
+ #--------------------------------------------------------------------------
42
+ def self.inflate(filename,kind)
43
+ # Set_File.load if $rgss.closed?
44
+ case kind
45
+ when 0
46
+ inf = @audioInf[filename]
47
+ offset = @audioH[0]
48
+ when 1
49
+ inf = @graphicsInf[filename]
50
+ offset = @graphicsH[0]
51
+ when 2
52
+ inf = @dataInf[filename]
53
+ offset = @dataH[0]
54
+ end
55
+ $rgss.pos = inf[0] + offset
56
+ code = $rgss.read(inf[1])
57
+ if kind != 2
58
+ code = Zlib::Inflate.inflate(code)
59
+ end
60
+ return code
61
+ end
62
+
63
+ end
64
+
65
+
66
+ module RGSSHD_Package
67
+
68
+ Audios = ["wav","mp3","ogg","wma","mid"]
69
+ Graphicses = ["bmp","jpg","png"]
70
+ Databases = ["rxdata"]
71
+
72
+ # 文件头地址
73
+ LpAudioHead = 0x10 #||
74
+ LpAudioLength = 0x14 #||
75
+ LpGraphicsHead = 0x18 #||TOTAL(16byte)
76
+ LpGraphicsLength = 0x1C #||
77
+ LpDataHead = 0x20 #||
78
+ LpDataLength = 0x24 #||
79
+
80
+ module_function
81
+ #--------------------------------------------------------------------------
82
+ # ● 开始制作数据包
83
+ #--------------------------------------------------------------------------
84
+ def start
85
+ @count = 0
86
+ @block = 0
87
+ @sprite = Sprite.new
88
+ @sprite_base = Sprite.new
89
+ @sprite_base2 = Sprite.new
90
+ @bitmap = Bitmap.new(14,16)
91
+ @bitmap.fill_rect(Rect.new(0,0,16,16),color = Color.new(0,255,0,255))
92
+ bitmap2 = Bitmap.new(322,18)
93
+ bitmap2.fill_rect(Rect.new(0,0,322,18),color = Color.new(128,128,128,255))
94
+ bitmap3 = Bitmap.new(324,20)
95
+ bitmap3.fill_rect(Rect.new(0,0,324,20),color = Color.new(255,0,0,255))
96
+
97
+ auth = Sprite.new
98
+ auth.bitmap = Bitmap.new(150,16)
99
+ auth.bitmap.font.size = 14
100
+ auth.bitmap.draw_text(0,0,150,16,"RGSSHD"+" "+"作者:秀秀")
101
+ auth.x,auth.y,auth.z = 250,300,103
102
+
103
+ @sprite_base.bitmap = bitmap2
104
+ @sprite_base.x = (640-322)/2
105
+ @sprite_base.y = 300
106
+ @sprite_base.z = 102
107
+
108
+ @sprite_base2.bitmap = bitmap3
109
+ @sprite_base2.x = (640-322)/2 - 1
110
+ @sprite_base2.y = 300 - 1
111
+ @sprite_base2.z = 101
112
+
113
+ @old_dir = Dir.pwd
114
+ @audio_files = []
115
+ @graphics_files = []
116
+ @database_files = []
117
+ @path = ""
118
+ self.next_file(@path,0)
119
+ self.next_file(@path,1)
120
+ self.next_file(@path,2)
121
+ if (@audio_files + @graphics_files + @database_files).size == 0
122
+ "没有搜索到资源"
123
+ return
124
+ end
125
+
126
+ @all_files = (@audio_files + @graphics_files + @database_files).size
127
+ @rate = (@all_files / 20).to_f
128
+
129
+
130
+ Dir.chdir(@old_dir)
131
+ self.create_file
132
+ self.write_file_header
133
+ self.write_audio_header
134
+ self.write_audio_block
135
+ self.write_graphics_header
136
+ self.write_graphics_block
137
+ self.write_database_header
138
+ self.write_database_block
139
+ self.write_file_end
140
+ p "Game.RGSSHD 制作成功"
141
+ exit
142
+ end
143
+
144
+ def create_file
145
+ @file = File.open("Game.rgsshide","wb")
146
+ end
147
+
148
+ def write_file_header
149
+ @file.write "RGSSHIDE"
150
+ @file.write "20080808"
151
+ end
152
+
153
+ def write_audio_header
154
+ @file.pos = 0x28
155
+ if @audio_files.size == 0
156
+ @@audio_head_adress = 0x28
157
+ @@audio_head_length = 12
158
+ @audio_files_block_adress = 0
159
+ @audio_files_block_length = 0
160
+ @audio_files_amount = 0
161
+ return
162
+ end
163
+ Dir.chdir(@old_dir)
164
+ posop = 0
165
+ fsize = 0
166
+ @tempa = ""
167
+ audio_list = "resource_list = {\n"
168
+ begin
169
+ for name in @audio_files
170
+ begin
171
+ fr = File.open(name,"rb") # 打开目标Audio文件
172
+ code = Zlib::Deflate.deflate(fr.read,9)
173
+ fsize = code.size
174
+ @tempa += code
175
+ audio_list += sprintf("%s=>[%d,%d],\n","\"#{name.split(/\./)[0]}\"",
176
+ posop,fsize)
177
+ posop += fsize # 记录位置
178
+ rescue
179
+ print "\"#{name}\" can't open"
180
+ ensure
181
+ fr.close
182
+ @count += 1
183
+ if @count >= @rate
184
+ @sprite_base.bitmap.blt(@block*16,0,@bitmap,Rect.new(0,0,14,16))
185
+ @block += 1
186
+ @count = 0
187
+ end
188
+ Graphics.update
189
+ end
190
+ end
191
+ ensure
192
+ audio_list.slice!(audio_list.size-2,1)
193
+ audio_list += "}\n"
194
+ audio_list = Zlib::Deflate.deflate(audio_list,9)
195
+
196
+ @audio_head_adress = 0x28
197
+ @audio_head_length = audio_list.size + 12
198
+ @audio_files_block_adress = 0x28 + @audio_head_length
199
+ @audio_files_block_length = @tempa.length
200
+ @audio_files_amount = @audio_files.length
201
+
202
+ @file.pos = LpAudioHead
203
+ @file.write [@audio_head_adress].pack("L")
204
+ @file.pos = LpAudioLength
205
+ @file.write [@audio_head_length].pack("L")
206
+
207
+ @file.pos = 0x28
208
+ @file.write [@audio_files_block_adress].pack("L")
209
+ @file.pos = 0x28+4
210
+ @file.write [@audio_files_block_length].pack("L")
211
+ @file.pos = 0x28+8
212
+ @file.write [@audio_files_amount].pack("L")
213
+ @file.pos = 0x28+12
214
+ @file.write audio_list
215
+ while false
216
+ p @audio_head_adress
217
+ p @audio_head_length
218
+ p "文件块地址" + @audio_files_block_adress.to_s
219
+ p "文件块长度" + @audio_files_block_length.to_s
220
+ p "文件数量" + @audio_files_amount.to_s
221
+ end
222
+ end
223
+
224
+
225
+ end
226
+
227
+ def write_audio_block
228
+ @file.write @tempa
229
+ end
230
+
231
+ def write_graphics_header
232
+ @gr_start_adr = @audio_files_block_adress+@audio_files_block_length
233
+ @file.pos = @gr_start_adr
234
+
235
+ if @graphics_files.size == 0
236
+ @graphics_head_adress = @gr_start_adr
237
+ @graphics_head_length = 12 # 不包含hash信息块
238
+ @graphics_files_block_adress = 0
239
+ @graphics_files_block_length = 0
240
+ @graphics_files_amount = 0
241
+ return
242
+ end
243
+
244
+ Dir.chdir(@old_dir)
245
+ posop = 0
246
+ fsize = 0
247
+ @tempg = ""
248
+ graphics_list = "resource_list = {\n"
249
+ begin
250
+ for name in @graphics_files
251
+ begin
252
+ fr = File.open(name,"rb") # 打开目标Audio文件
253
+ code = Zlib::Deflate.deflate(fr.read,9)
254
+ fsize = code.size
255
+ #压缩后写入到指定位置
256
+ @tempg += code
257
+ graphics_list += sprintf("%s=>[%d,%d],\n","\"#{name.split(/\./)[0]}\"",
258
+ posop,fsize)
259
+ posop += fsize # 记录现在位置
260
+ rescue
261
+ print "\"#{name}\" can't open"
262
+ ensure
263
+ fr.close
264
+ @count += 1
265
+ if @count >= @rate
266
+ @sprite_base.bitmap.blt(@block*16,0,@bitmap,Rect.new(0,0,14,16))
267
+ @block += 1
268
+ @count = 0
269
+ end
270
+ Graphics.update
271
+ end
272
+ end
273
+ ensure
274
+ graphics_list.slice!(graphics_list.size-2,1)
275
+ graphics_list += "}\n"
276
+ graphics_list = Zlib::Deflate.deflate(graphics_list,9)
277
+
278
+ @graphics_head_adress = @gr_start_adr
279
+ @graphics_head_length = graphics_list.size + 12
280
+ @graphics_files_block_adress = @graphics_head_adress + @graphics_head_length
281
+ @graphics_files_block_length = @tempg.length
282
+ @graphics_files_amount = @graphics_files.length
283
+
284
+ @file.pos = LpGraphicsHead
285
+ @file.write [@graphics_head_adress].pack("L")
286
+ @file.pos = LpGraphicsLength
287
+ @file.write [@graphics_head_length].pack("L")
288
+
289
+ @file.pos = @graphics_head_adress
290
+ @file.write [@graphics_files_block_adress].pack("L")
291
+ @file.pos = @graphics_head_adress+4
292
+ @file.write [@graphics_files_block_length].pack("L")
293
+ @file.pos = @graphics_head_adress+8
294
+ @file.write [@graphics_files_amount].pack("L")
295
+ @file.pos = @graphics_head_adress+12
296
+ @file.write graphics_list
297
+ end
298
+ end
299
+
300
+ def write_graphics_block
301
+ @file.write @tempg
302
+ end
303
+
304
+ def write_database_header
305
+ @da_start_adr = @graphics_files_block_adress + @graphics_files_block_length
306
+ @file.pos = @da_start_adr
307
+
308
+ if @database_files.size == 0
309
+ @data_head_adress = @gr_start_adr
310
+ @data_head_length = 12 # 不包含hash信息块
311
+ @data_files_block_adress = 0
312
+ @data_files_block_length = 0
313
+ @data_files_amount = 0
314
+ return
315
+ end
316
+ p @database_files
317
+ Dir.chdir(@old_dir)
318
+ posop = 0
319
+ fsize = 0
320
+ @tempd = ""
321
+ data_list = "resource_list = {\n"
322
+ begin
323
+ for name in @database_files
324
+ begin
325
+ fr = File.open(name,"rb") # 打开目标Audio文件
326
+ code = fr.read # 导出内容
327
+ fsize = code.size
328
+ #压缩后写入到指定位置
329
+ @tempd += code
330
+ data_list += sprintf("%s=>[%d,%d],\n","\"#{name.split(/\./)[0]}\"",
331
+ posop,fsize)
332
+ posop += fsize # 记录现在位置
333
+ rescue
334
+ print "\"#{name}\" can't open"
335
+ ensure
336
+ fr.close
337
+ @count += 1
338
+ if @count >= @rate
339
+ @sprite_base.bitmap.blt(@block*16,0,@bitmap,Rect.new(0,0,14,16))
340
+ @block += 1
341
+ @count = 0
342
+ end
343
+ Graphics.update
344
+ end
345
+ end
346
+ ensure
347
+ data_list.slice!(data_list.size-2,1)
348
+ data_list += "}\n"
349
+ data_list = Zlib::Deflate.deflate(data_list,9)
350
+
351
+ @data_head_adress = @da_start_adr
352
+ @data_head_length = data_list.size + 12
353
+ @data_files_block_adress = @data_head_adress + @data_head_length
354
+ @data_files_block_length = @tempd.length
355
+ @data_files_amount = @database_files.length
356
+
357
+ @file.pos = LpDataHead
358
+ @file.write [@data_head_adress].pack("L")
359
+ @file.pos = LpDataLength
360
+ @file.write [@data_head_length].pack("L")
361
+
362
+ @file.pos = @data_head_adress
363
+ @file.write [@data_files_block_adress].pack("L")
364
+ @file.pos = @data_head_adress+4
365
+ @file.write [@data_files_block_length].pack("L")
366
+ @file.pos = @data_head_adress+8
367
+ @file.write [@data_files_amount].pack("L")
368
+ @file.pos = @data_head_adress+12
369
+ @file.write data_list
370
+ end
371
+
372
+ end
373
+
374
+ def write_database_block
375
+ @file.write @tempd
376
+ end
377
+
378
+ def write_file_end
379
+ @file.write "RGSSHIDE-END"
380
+ @file.close
381
+ end
382
+
383
+ #--------------------------------------------------------------------------
384
+ # ● 搜索全部资源文件
385
+ #--------------------------------------------------------------------------
386
+ def next_file(path,kind)
387
+ Dir.chdir(@old_dir)
388
+ Dir.chdir(path) if path != ""
389
+ case kind
390
+ when 0
391
+ for f in Dir["*"]
392
+ if FileTest.directory?(f)
393
+ @path = @path + f + "/"
394
+ self.next_file(@path,0)
395
+ else
396
+ if Audios.include? f.split(/\./)[1]
397
+ @audio_files.push @path + f
398
+ end
399
+ end
400
+ end
401
+ when 1
402
+ for f in Dir["*"]
403
+ if FileTest.directory?(f)
404
+ @path = @path + f + "/"
405
+ self.next_file(@path,1)
406
+ else
407
+ if Graphicses.include? f.split(/\./)[1]
408
+ @graphics_files.push @path + f
409
+ end
410
+ end
411
+ end
412
+ when 2
413
+ for f in Dir["*"]
414
+ if FileTest.directory?(f)
415
+ @path = @path + f + "/"
416
+ self.next_file(@path,2)
417
+ else
418
+ if Databases.include? f.split(/\./)[1]
419
+ @database_files.push @path + f
420
+ end
421
+ end
422
+ end
423
+ end
424
+
425
+ path_a = path.split(/\//)
426
+ @path = ""
427
+ for i in 0...path_a.size - 1
428
+ @path += path_a[i] + "/"
429
+ end
430
+ Dir.chdir(@old_dir)
431
+ Dir.chdir(@path) if @path != ""
432
+
433
+ end
434
+ end
@@ -0,0 +1,3 @@
1
+ module Rgsshd
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rgsshd/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "rgsshd"
8
+ gem.version = Rgsshd::VERSION
9
+ gem.authors = ["yoshikizh"]
10
+ gem.email = ["177365340@qq.com"]
11
+ gem.description = "rgsshd encrypt"
12
+ gem.summary = "rgsshd encrypt"
13
+ gem.homepage = "https://github.com/yoshikizh/rgsshd"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency "rspec"
21
+ gem.add_development_dependency "bundler", ">= 1.0.0"
22
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rgsshd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - yoshikizh
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.0.0
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ description: rgsshd encrypt
47
+ email:
48
+ - 177365340@qq.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - LICENSE.txt
56
+ - README.md
57
+ - Rakefile
58
+ - lib/rgsshd.rb
59
+ - lib/rgsshd/version.rb
60
+ - rgsshd.gemspec
61
+ homepage: https://github.com/yoshikizh/rgsshd
62
+ licenses: []
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ requirements: []
80
+ rubyforge_project:
81
+ rubygems_version: 1.8.24
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: rgsshd encrypt
85
+ test_files: []
86
+ has_rdoc: