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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 063bae8ea6b7d56fe6e153bc3abc19fbe1a13811
4
- data.tar.gz: af280d9d8f661ed7ac879fa0d66eda52e10e72cb
3
+ metadata.gz: 68c7f1866798498947bca0c80a4be4d5a60eb651
4
+ data.tar.gz: 4de274d8ae2bd083d7c37f14fca93ef7649e7d28
5
5
  SHA512:
6
- metadata.gz: 3d74640cd7433fbda3a7749af35c41c5a35a065892c1fa4b0368770d5160bd02f93fa1ba2e401dc0d139e8fc5ac4c84c5a23c225f718b61ffc1a02677202f30f
7
- data.tar.gz: fa9f2880869bc268e355efafe532c9d531e08b81f3a5dd502462b3f9076bbde26192dc1ef650d6ccdb459d4daa4c66392a823d69378bddbebe55926e7b828f2b
6
+ metadata.gz: 6d09200de2540d094f6cba28a44408bed5a1feb84ada882c8cb01bc78f0c7b4bf098d74e057b26898c0d19fd70901fd527806b3290596312338edfd19fb3b7f1
7
+ data.tar.gz: 5d59ba6f2c24846ef97758cb72207e95abc6594888d0999dcae70d5e864d96ca2962dba70638fa0fc891adb0fe9b741436e040a6a80a53f10c91739e8b2b0ba6
data/README.md CHANGED
@@ -32,7 +32,7 @@ gem 'ossl_cryptor'
32
32
  cryptor = OsslCryptor::Cryptor.new(OsslCryptor::AES)
33
33
 
34
34
  # encrypt
35
- enc_value = cryptor.encrypt(aes_encrypt_value)
35
+ enc_value = cryptor.encrypt("AES encrypt target value.")
36
36
  p enc_value
37
37
 
38
38
  # decrypt
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, @default_key_iv, @pass, @salt, @key_iv_hash)
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, @default_key_iv, @pass, @salt, @key_iv_hash)
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
- # setup cipher instance.
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, key_iv=nil, pass=nil, salt=nil, hash=nil)
112
-
113
- cipher_key_iv = nil
114
-
115
- # if key_iv = nil, generate key and iv.
116
- if key_iv.nil?
117
- salt = salt.nil? ? get_default_salt(mode) : salt
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
@@ -1,3 +1,3 @@
1
1
  module OsslCryptor
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ossl_cryptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - h.shigemoto