crxmake 2.1.2 → 2.1.3
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/lib/crxmake.rb +38 -21
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1896b138aaa3d78181c9843cace2c494207ace8d
|
4
|
+
data.tar.gz: 2e1ead40b42f5ec57fd669bd723d9e4e9ce74c7d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a82df144b2d407f48ce845cbc2fd7198093c9ce8d68844795b78e53a2ec071878de74d051b56e628452522bae784f98da0baf15bacdba72f86aba4bc3223047b
|
7
|
+
data.tar.gz: d29ab638a88d0ff6512137ffd60abb90ee1dacbf1dcb18cab20c2ebe2e840f56661f2746119dd4d9d7f63e8a16b89180bb664127798039f1241e10a5ffe8b924
|
data/lib/crxmake.rb
CHANGED
@@ -1,15 +1,24 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
# vim: fileencoding=utf-8
|
3
3
|
require 'rubygems'
|
4
|
-
require 'zip
|
4
|
+
require 'zip'
|
5
5
|
require 'openssl'
|
6
6
|
require 'digest/sha1'
|
7
7
|
require 'fileutils'
|
8
8
|
require 'find'
|
9
9
|
require 'pathname'
|
10
10
|
|
11
|
+
begin
|
12
|
+
require 'openssl_pkcs8'
|
13
|
+
class OpenSSL::PKey::RSA
|
14
|
+
alias_method :to_pem, :to_pem_pkcs8
|
15
|
+
end
|
16
|
+
rescue LoadError
|
17
|
+
$pkcs8_warning=1
|
18
|
+
end
|
19
|
+
|
11
20
|
class CrxMake < Object
|
12
|
-
VERSION = '2.1.
|
21
|
+
VERSION = '2.1.3'
|
13
22
|
# thx masover
|
14
23
|
MAGIC = 'Cr24'
|
15
24
|
|
@@ -31,11 +40,11 @@ class CrxMake < Object
|
|
31
40
|
else
|
32
41
|
generate_key
|
33
42
|
end
|
34
|
-
create_zip
|
35
|
-
sign_zip
|
36
|
-
write_crx
|
43
|
+
zip_buffer = create_zip
|
44
|
+
sign_zip(zip_buffer)
|
45
|
+
write_crx(zip_buffer)
|
37
46
|
ensure
|
38
|
-
remove_zip
|
47
|
+
#remove_zip
|
39
48
|
end
|
40
49
|
|
41
50
|
def zip
|
@@ -44,11 +53,12 @@ class CrxMake < Object
|
|
44
53
|
generate_key
|
45
54
|
@pkey = @pkey_o
|
46
55
|
end
|
47
|
-
remove_zip
|
48
|
-
create_zip do |zip|
|
56
|
+
#remove_zip
|
57
|
+
zip_buffer = create_zip do |zip|
|
49
58
|
puts "include pem key: \"#{@pkey}\"" if @verbose
|
50
59
|
zip.add('key.pem', @pkey)
|
51
60
|
end
|
61
|
+
File.open(@zip,'wb'){|f|f<<zip_buffer}
|
52
62
|
end
|
53
63
|
|
54
64
|
private
|
@@ -141,17 +151,21 @@ ext dir: \"#{@exdir}\"
|
|
141
151
|
end
|
142
152
|
|
143
153
|
def generate_key
|
154
|
+
if defined?($pkcs8_warning)&&@verbose
|
155
|
+
$stderr.puts 'Warn: generated pem must be converted into PKCS8 in order to upload to Chrome WebStore.'
|
156
|
+
$stderr.puts 'To suppress this message, do: gem install openssl_pkcs8'
|
157
|
+
end
|
144
158
|
puts "generate pemkey to \"#{@pkey_o}\"" if @verbose
|
145
159
|
@key = OpenSSL::PKey::RSA.generate(KEY_SIZE)
|
146
160
|
# save key
|
147
161
|
File.open(@pkey_o, 'wb') do |file|
|
148
|
-
file << @key.
|
162
|
+
file << @key.to_pem
|
149
163
|
end
|
150
164
|
end
|
151
165
|
|
152
166
|
def create_zip
|
153
167
|
puts "create zip" if @verbose
|
154
|
-
Zip::
|
168
|
+
buffer = Zip::File.add_buffer do |zip|
|
155
169
|
Find.find(@exdir) do |path|
|
156
170
|
unless path == @exdir
|
157
171
|
if File.directory?(path)
|
@@ -178,22 +192,24 @@ ext dir: \"#{@exdir}\"
|
|
178
192
|
create zip...done
|
179
193
|
zip file at \"#{@zip}\"
|
180
194
|
EOS
|
195
|
+
return buffer.string
|
181
196
|
end
|
182
197
|
|
183
198
|
def get_relative base, target
|
184
199
|
Pathname.new(target.to_s).relative_path_from(Pathname.new(base.to_s)).to_s
|
185
200
|
end
|
186
201
|
|
187
|
-
def sign_zip
|
202
|
+
def sign_zip(zip_buffer)
|
188
203
|
puts "sign zip" if @verbose
|
189
204
|
plain = nil
|
190
|
-
File.open(@zip, 'rb') do |file|
|
191
|
-
|
192
|
-
end
|
205
|
+
#File.open(@zip, 'rb') do |file|
|
206
|
+
# plain = file.read
|
207
|
+
#end
|
208
|
+
plain = zip_buffer
|
193
209
|
@sig = @key.sign(OpenSSL::Digest::SHA1.new, plain)
|
194
210
|
end
|
195
211
|
|
196
|
-
def write_crx
|
212
|
+
def write_crx(zip_buffer)
|
197
213
|
print "write crx..." if @verbose
|
198
214
|
key = @key.public_key.to_der
|
199
215
|
key.index(KEY) != 0 and key = KEY + key
|
@@ -204,9 +220,10 @@ zip file at \"#{@zip}\"
|
|
204
220
|
file << to_sizet(@sig.size)
|
205
221
|
file << key
|
206
222
|
file << @sig
|
207
|
-
File.open(@zip, 'rb') do |zip|
|
208
|
-
|
209
|
-
end
|
223
|
+
#File.open(@zip, 'rb') do |zip|
|
224
|
+
# file << zip.read
|
225
|
+
#end
|
226
|
+
file << zip_buffer
|
210
227
|
end
|
211
228
|
puts "done at \"#{@crx}\"" if @verbose
|
212
229
|
end
|
@@ -215,9 +232,9 @@ zip file at \"#{@zip}\"
|
|
215
232
|
return [num].pack('V')
|
216
233
|
end
|
217
234
|
|
218
|
-
def remove_zip
|
219
|
-
|
220
|
-
end
|
235
|
+
#def remove_zip
|
236
|
+
# FileUtils.rm_rf(@zip) if @zip && File.exist?(@zip)
|
237
|
+
#end
|
221
238
|
|
222
239
|
class << self
|
223
240
|
def make opt
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crxmake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Constellation
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zip
|