simple_crypt 1.1.2 → 1.2.0

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
  SHA256:
3
- metadata.gz: 19887745fe51e79e906c60336ccc4803b418fce128ce5c61229cb441e2b581fa
4
- data.tar.gz: f55e18a8ff56b74f734cebebf370d39c8f1a61a04cd34400599515299b3d617b
3
+ metadata.gz: 4ef4c33991428c84237551c5d7eecf83dc17f21579f5f85027f35f5eb89b2979
4
+ data.tar.gz: 3e4b223d1ecd2cd71c6df841c14a5a84f9d447353fe6c779774f891d6abc8148
5
5
  SHA512:
6
- metadata.gz: 572602b36627f94c9912dbdbb77a2958c1b7fdccb1ee7ddfc80dc929a8db485334895816493f2990cac6f586ce903c635e0e23103dd4b13f12801dfd98034383
7
- data.tar.gz: dde02a4ec2170d0153c829d0ec6d16e30040c240242661836b2f6a69d260d2d7a218bc813ac8bd1342348b7211668cda8905738d10c2696c3f91828d4072751b
6
+ metadata.gz: 7418353c839a55671ed4dd865c20f0dc675cd27f236f216b9ef1b6349a9a408c7aa705aee60c4d3b996bca550ea12b77bca5fcbdb4ffaa84ab097a7c3eff658f
7
+ data.tar.gz: d297d9643c97b3a1d1237a38fe65b6dc746dd797e0b3a8ec373f42a7dc9db68e82227a6e3332a43f96d0913d8c9b455b89a46c58a7b19744d56e76a130181c07
@@ -1,19 +1,22 @@
1
1
  require 'base64'
2
2
  require 'openssl'
3
3
  require 'securerandom'
4
- require 'simple_crypt/secret'
4
+ require_relative 'simple_crypt/secret'
5
5
 
6
6
  # encrypts and stores and decrypts secrets
7
7
  module SimpleCrypt
8
8
  def self.encrypt(data, pwd)
9
- cipher = OpenSSL::Cipher.new('aes-256-gcm')
10
- cipher.encrypt
11
- iv = cipher.random_iv
12
- salt = OpenSSL::Random.random_bytes 16
9
+ iv = OpenSSL::Random.random_bytes(12)
10
+ salt = OpenSSL::Random.random_bytes(16)
13
11
  auth_data = SecureRandom.urlsafe_base64(16)
14
12
  key = gen_key(pwd, salt)
13
+
14
+ cipher = OpenSSL::Cipher.new('aes-256-gcm')
15
+ cipher.encrypt
16
+ cipher.iv = iv
15
17
  cipher.key = key
16
18
  cipher.auth_data = auth_data
19
+
17
20
  sec = SimpleCrypt::Secret.new
18
21
  sec.secret_data = Base64.strict_encode64(cipher.update(data) + cipher.final)
19
22
  sec.iv = Base64.strict_encode64(iv)
@@ -26,13 +29,14 @@ module SimpleCrypt
26
29
  def self.decrypt(secret, pwd)
27
30
  salt = Base64.strict_decode64(secret.salt)
28
31
  secret_data = Base64.strict_decode64(secret.secret_data)
32
+
29
33
  decipher = OpenSSL::Cipher.new('aes-256-gcm')
30
34
  decipher.decrypt
31
35
  decipher.iv = Base64.strict_decode64(secret.iv)
32
- key = gen_key(pwd, salt)
33
- decipher.key = key
36
+ decipher.key = gen_key(pwd, salt)
34
37
  decipher.auth_tag = Base64.strict_decode64(secret.auth_tag)
35
38
  decipher.auth_data = secret.auth_data
39
+
36
40
  begin
37
41
  decrypted = decipher.update(secret_data) + decipher.final
38
42
  return decrypted
@@ -1,5 +1,3 @@
1
- require 'json'
2
-
3
1
  # stores secret info as a class
4
2
  module SimpleCrypt
5
3
  class Secret
@@ -12,21 +10,5 @@ module SimpleCrypt
12
10
  @auth_tag = auth_tag
13
11
  @auth_data = auth_data
14
12
  end
15
-
16
- def to_json
17
- JSON.generate(Hash[instance_variables.map { |name| [name, instance_variable_get(name)] }])
18
- end
19
-
20
- def self.load(json)
21
- data = JSON.parse(json)
22
- s = new(
23
- data['@secret_data'],
24
- data['@iv'],
25
- data['@salt'],
26
- data['@auth_tag'],
27
- data['@auth_data']
28
- )
29
- s
30
- end
31
13
  end
32
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_crypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Silverman
@@ -18,10 +18,11 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/simple_crypt.rb
20
20
  - lib/simple_crypt/secret.rb
21
- homepage:
21
+ homepage: https://github.com/nckslvrmn/simple_crypt
22
22
  licenses:
23
23
  - GPL-3.0
24
- metadata: {}
24
+ metadata:
25
+ source_code_uri: https://github.com/nckslvrmn/simple_crypt
25
26
  post_install_message:
26
27
  rdoc_options: []
27
28
  require_paths: