ossl_cryptor 0.2.0 → 0.2.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/README.md +1 -1
- data/lib/ossl_cryptor.rb +13 -20
- data/lib/ossl_cryptor/cipher_generator.rb +9 -0
- data/lib/ossl_cryptor/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68c7f1866798498947bca0c80a4be4d5a60eb651
|
4
|
+
data.tar.gz: 4de274d8ae2bd083d7c37f14fca93ef7649e7d28
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d09200de2540d094f6cba28a44408bed5a1feb84ada882c8cb01bc78f0c7b4bf098d74e057b26898c0d19fd70901fd527806b3290596312338edfd19fb3b7f1
|
7
|
+
data.tar.gz: 5d59ba6f2c24846ef97758cb72207e95abc6594888d0999dcae70d5e864d96ca2962dba70638fa0fc891adb0fe9b741436e040a6a80a53f10c91739e8b2b0ba6
|
data/README.md
CHANGED
data/lib/ossl_cryptor.rb
CHANGED
@@ -31,21 +31,21 @@ module OsslCryptor
|
|
31
31
|
@cipher = CipherGenerator.generate_cipher(mode)
|
32
32
|
# set initialize parameter and generate key, iv
|
33
33
|
@mode = mode
|
34
|
-
@default_key_iv = key_iv
|
35
34
|
@pass = pass.nil? ? CipherGenerator::DEFAULT_PASS : pass
|
36
35
|
@salt = salt
|
37
36
|
@key_iv_hash = key_iv_hash.nil? ? CipherGenerator::DEFAULT_KEY_IV_HASH : key_iv_hash
|
38
|
-
@key_iv = generate_key_iv(@mode, @
|
37
|
+
@key_iv = key_iv.nil? ? generate_key_iv(@mode, @pass, @salt, @key_iv_hash) : key_iv
|
39
38
|
end
|
40
39
|
|
41
40
|
# reset cipher instance.
|
42
41
|
def reset
|
43
42
|
@cipher = CipherGenerator.generate_cipher(@mode)
|
44
|
-
@key_iv = generate_key_iv(@mode, @
|
43
|
+
@key_iv = generate_key_iv(@mode, @pass, @salt, @key_iv_hash) if @key_iv.nil?
|
45
44
|
end
|
46
45
|
|
47
46
|
# encrypt value.
|
48
47
|
# @param [String] value encrypt value.
|
48
|
+
# @param [boolean] encode_base64 encode base64 flag.
|
49
49
|
# @return [String] encrypt result value.
|
50
50
|
def encrypt(value, encode_base64=true)
|
51
51
|
|
@@ -57,7 +57,7 @@ module OsslCryptor
|
|
57
57
|
encrypt_value = ""
|
58
58
|
encrypt_value << @cipher.update(value)
|
59
59
|
encrypt_value << @cipher.final
|
60
|
-
|
60
|
+
|
61
61
|
# encode base64.
|
62
62
|
if encode_base64
|
63
63
|
encrypt_value = Base64.encode64(encrypt_value)
|
@@ -68,6 +68,7 @@ module OsslCryptor
|
|
68
68
|
|
69
69
|
# decrypt value.
|
70
70
|
# @param [String] value decrypt value.
|
71
|
+
# @param [boolean] decode_base64 decode base64 flag.
|
71
72
|
# @return [String] decrypt result value.
|
72
73
|
def decrypt(value, decode_base64=true)
|
73
74
|
|
@@ -101,27 +102,19 @@ module OsslCryptor
|
|
101
102
|
|
102
103
|
private
|
103
104
|
|
104
|
-
#
|
105
|
+
# generate cipher key and iv.
|
105
106
|
# @param [String] mode crypt mode.
|
106
|
-
# @param [Hash] key_iv key and iv. key_iv[:key] = key, key_iv[:iv] = iv
|
107
107
|
# @param [String] pass password, if pass = nil, use CipherGenerator::DEFAULT_PASS
|
108
108
|
# @param [String] salt salt data. if salt = nil, use random salt.
|
109
109
|
# @param [String] hash use hash algorithm when key and iv generate. if key_iv_hash = nil, use CipherGenerator::DEFAULT_KEY_IV_HASH
|
110
110
|
# @return [Hash] key and iv hash.
|
111
|
-
def generate_key_iv(mode,
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
key_iv_str = OpenSSL::PKCS5.pbkdf2_hmac(pass, salt, 2000, (@cipher.key_len + @cipher.iv_len), hash)
|
119
|
-
key = key_iv_str[0, @cipher.key_len]
|
120
|
-
iv = key_iv_str[@cipher.key_len, @cipher.iv_len]
|
121
|
-
cipher_key_iv = { key: key, iv: iv }
|
122
|
-
else
|
123
|
-
cipher_key_iv = key_iv
|
124
|
-
end
|
111
|
+
def generate_key_iv(mode, pass=nil, salt=nil, hash=nil)
|
112
|
+
|
113
|
+
salt = salt.nil? ? get_default_salt(mode) : salt
|
114
|
+
key_iv_str = OpenSSL::PKCS5.pbkdf2_hmac(pass, salt, 2000, (@cipher.key_len + @cipher.iv_len), hash)
|
115
|
+
key = key_iv_str[0, @cipher.key_len]
|
116
|
+
iv = key_iv_str[@cipher.key_len, @cipher.iv_len]
|
117
|
+
cipher_key_iv = { key: key, iv: iv }
|
125
118
|
|
126
119
|
cipher_key_iv
|
127
120
|
end
|
@@ -10,9 +10,18 @@ module CipherGenerator
|
|
10
10
|
DEFAULT_KEY_IV_HASH = "sha256"
|
11
11
|
|
12
12
|
# generate cipher instance.
|
13
|
+
# @param [String] mode crypt mode.
|
13
14
|
# @return [Cipher] cipher instance.
|
14
15
|
def self.generate_cipher(mode)
|
15
16
|
cipher = OpenSSL::Cipher.new(mode)
|
16
17
|
cipher
|
17
18
|
end
|
19
|
+
|
20
|
+
# generate random key and iv.
|
21
|
+
# @param [String] mode crypt mode.
|
22
|
+
# @return [Hash] key and iv hash. xx[:key] = key, xx[:iv] = iv
|
23
|
+
def self.generate_random_key_iv(mode)
|
24
|
+
cipher = OpenSSL::Cipher.new(mode)
|
25
|
+
key_iv = { key: cipher.random_key, iv: cipher.random_iv }
|
26
|
+
end
|
18
27
|
end
|
data/lib/ossl_cryptor/version.rb
CHANGED