ossl_rsa 0.3.0 → 0.3.1
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/ossl_rsa.rb +1 -0
- data/lib/ossl_rsa/generator.rb +66 -0
- data/lib/ossl_rsa/rsa.rb +12 -40
- data/lib/ossl_rsa/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4722726425bfb5c98d8bf2864b7387201dfd3eb4
|
4
|
+
data.tar.gz: 665d4724c96ede018fccce48dc3d18cef598b405
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d9cc67d80da2e7833fc659035fdd3b7908930982f70d6342efb8937dd1f883a1a008ff4f395c14e1aba747b8e8107b1000133b4f59c98f9d55b3ecf85a83fed
|
7
|
+
data.tar.gz: 89374e7e94ad577f1104f1a4d2a597d86c3190ed3a97fc45fa6e6e730967ebe9e808c4f9c0840cbd12cde81f080c59de1e6c9ce968e23cbfc649087722f7a32c
|
data/lib/ossl_rsa.rb
CHANGED
@@ -0,0 +1,66 @@
|
|
1
|
+
require "openssl"
|
2
|
+
|
3
|
+
# openssl rsa module.
|
4
|
+
module OsslRsa
|
5
|
+
|
6
|
+
# generator class
|
7
|
+
class Generator
|
8
|
+
|
9
|
+
# generate OpenSSL::PKey::RSA instance.
|
10
|
+
# generate rsa instance by options.
|
11
|
+
# options[:size] : key size
|
12
|
+
# options[:obj] : pem or der
|
13
|
+
# options[:pass] : password
|
14
|
+
# @param [Hash] options generate options.
|
15
|
+
# @return [OpenSSL::PKey::RSA] rsa instance.
|
16
|
+
def self.generate(options)
|
17
|
+
|
18
|
+
rsa = nil
|
19
|
+
# if size and private exist, raise error.
|
20
|
+
if (!options[:size].nil? && !options[:obj].nil?)
|
21
|
+
raise OpenSSL::PKey::RSAError.new("size and obj is nil.")
|
22
|
+
end
|
23
|
+
|
24
|
+
# if exist size, generate use size, cipher.
|
25
|
+
unless options[:size].nil?
|
26
|
+
rsa = generate_rsa_by_size(options[:size])
|
27
|
+
end
|
28
|
+
|
29
|
+
# if exist obj, generate use obj, pass.
|
30
|
+
unless options[:obj].nil?
|
31
|
+
rsa = generate_rsa_by_key(options[:obj], options[:pass])
|
32
|
+
end
|
33
|
+
|
34
|
+
# raise Error
|
35
|
+
if rsa.nil?
|
36
|
+
raise OpenSSL::PKey::RSAError.new("fail create rsa instance.")
|
37
|
+
end
|
38
|
+
|
39
|
+
rsa
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# generate rsa.
|
45
|
+
# @param [integer] size key size.
|
46
|
+
# @return [OpenSSL::PKey::RSA] rsa instance.
|
47
|
+
def self.generate_rsa_by_size(size)
|
48
|
+
|
49
|
+
# add seed.
|
50
|
+
OpenSSL::Random.seed(SecureRandom.hex(8))
|
51
|
+
# generate rsa instance.
|
52
|
+
rsa = OpenSSL::PKey::RSA.new(size)
|
53
|
+
rsa
|
54
|
+
end
|
55
|
+
|
56
|
+
# generate rsa.
|
57
|
+
# @param [String] pem / der.
|
58
|
+
# @param [String] pass password
|
59
|
+
# @return [OpenSSL::PKey::RSA] rsa instance.
|
60
|
+
def self.generate_rsa_by_key(obj, pass=nil)
|
61
|
+
|
62
|
+
rsa = OpenSSL::PKey::RSA.new(obj, pass)
|
63
|
+
rsa
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/ossl_rsa/rsa.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "ossl_rsa/generator"
|
1
2
|
require "openssl"
|
2
3
|
require "base64"
|
3
4
|
require "securerandom"
|
@@ -16,25 +17,8 @@ module OsslRsa
|
|
16
17
|
# @param [Hash] options generate options.
|
17
18
|
def initialize(options={})
|
18
19
|
|
19
|
-
#
|
20
|
-
|
21
|
-
raise OpenSSL::PKey::RSAError "size and obj is nil."
|
22
|
-
end
|
23
|
-
|
24
|
-
# if exist size, generate use size, cipher.
|
25
|
-
unless options[:size].nil?
|
26
|
-
@rsa = generate_rsa_by_size(options[:size])
|
27
|
-
end
|
28
|
-
|
29
|
-
# if exist obj, generate use obj, pass.
|
30
|
-
unless options[:obj].nil?
|
31
|
-
@rsa = generate_rsa_by_key(options[:obj], options[:pass])
|
32
|
-
end
|
33
|
-
|
34
|
-
# raise Error
|
35
|
-
if @rsa.nil?
|
36
|
-
raise OpenSSL::PKey::RSAError "fail create rsa instance."
|
37
|
-
end
|
20
|
+
# generate rsa instance.
|
21
|
+
@rsa = OsslRsa::Generator.generate(options)
|
38
22
|
end
|
39
23
|
|
40
24
|
# encrypt RSA. use public_key.
|
@@ -126,8 +110,8 @@ module OsslRsa
|
|
126
110
|
save_path_pair = OsslRsa::FileOp.save(dir_path, save_key_pair, mode, add_now)
|
127
111
|
save_path_pair
|
128
112
|
end
|
113
|
+
|
129
114
|
# save file key.
|
130
|
-
# filename is [private.xxx(pem or der)], [public.xxx(pem or der)]
|
131
115
|
# @param [Hash] file_path_pair save file path pair. xxx[:private] = private file path, xxx[:public] = public file path.
|
132
116
|
# @param [integer] mode pem or der.
|
133
117
|
# @param [OpenSSL::Cipher] cipher cipher instance.
|
@@ -136,7 +120,7 @@ module OsslRsa
|
|
136
120
|
def to_specify_file(file_path_pair, mode, cipher=nil, pass=nil)
|
137
121
|
|
138
122
|
save_key_pair = key_pair(mode, cipher, pass)
|
139
|
-
|
123
|
+
|
140
124
|
# save file.
|
141
125
|
save_path_pair = OsslRsa::FileOp.save_file(save_key_pair, file_path_pair, mode)
|
142
126
|
save_path_pair
|
@@ -168,29 +152,17 @@ module OsslRsa
|
|
168
152
|
{ private: private_key, public: public_key }
|
169
153
|
end
|
170
154
|
|
171
|
-
private
|
155
|
+
# get private and public key text.
|
156
|
+
# @return [Hash] key pair hash. xx[:private] = private_key, xx[:public] = public_key
|
157
|
+
def text_pair
|
172
158
|
|
173
|
-
|
174
|
-
|
175
|
-
# @return [OpenSSL::PKey::RSA] rsa instance.
|
176
|
-
def generate_rsa_by_size(size)
|
159
|
+
private_key = @rsa.to_text if @rsa.private?
|
160
|
+
public_key = @rsa.public_key.to_text if @rsa.public?
|
177
161
|
|
178
|
-
|
179
|
-
OpenSSL::Random.seed(SecureRandom.hex(8))
|
180
|
-
# generate rsa instance.
|
181
|
-
rsa = OpenSSL::PKey::RSA.new(size)
|
182
|
-
rsa
|
162
|
+
{ private: private_key, public: public_key }
|
183
163
|
end
|
184
164
|
|
185
|
-
|
186
|
-
# @param [String] pem / der.
|
187
|
-
# @param [String] pass password
|
188
|
-
# @return [OpenSSL::PKey::RSA] rsa instance.
|
189
|
-
def generate_rsa_by_key(obj, pass=nil)
|
190
|
-
|
191
|
-
rsa = OpenSSL::PKey::RSA.new(obj, pass)
|
192
|
-
rsa
|
193
|
-
end
|
165
|
+
private
|
194
166
|
|
195
167
|
# get private key.
|
196
168
|
# @param [integer] mode pem or der.
|
data/lib/ossl_rsa/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ossl_rsa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- h.shigemoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- bin/setup
|
72
72
|
- lib/ossl_rsa.rb
|
73
73
|
- lib/ossl_rsa/file_op.rb
|
74
|
+
- lib/ossl_rsa/generator.rb
|
74
75
|
- lib/ossl_rsa/rsa.rb
|
75
76
|
- lib/ossl_rsa/version.rb
|
76
77
|
- ossl_rsa.gemspec
|