ruby_rncryptor 3.0.1 → 3.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_rncryptor.rb +11 -11
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 198670f6550021801e7a3d827685ea0aa692e318
4
- data.tar.gz: f4d4c09d8961d704346ccffaa5935e40cbdf4ada
3
+ metadata.gz: 8438c4eba7e15993712ecd52b6671b9f9343fffd
4
+ data.tar.gz: 2a6c76d61042318ca6d3d16188bab17f8fa73e35
5
5
  SHA512:
6
- metadata.gz: f5c9127520297db15f116f6ad907a72d8fb5982e5e09f770d177ec74d364a621226c3b4eb85393c232ebfdfd5077296102c2724fabd84599aa9cfd079c25786d
7
- data.tar.gz: b44a4ee39a11848f96c19fde168508ada4b99091d3c2ff7909cdf10145c8354038b08d7d37e20f787a756e072b9abd9dc18a2b0fa1418484c8a788a2f7aa7a37
6
+ metadata.gz: d253d4bf9d27ac7d89fa04704e110c7bae4943614e741ed00baa7c7edb6d93ba5f5ca73ea0f4b5d663f9326cbfc1b66cf399eb738ac9eac820a7ddd1757d57d0
7
+ data.tar.gz: 93dfa2f51115c5bf61382513fc8ce3bbb3ef30f86f2e57d1df1feaf52dbb61a061063186c2ccdd6d020c0099be3f15de52733fd7ef4988f2cdf1b07535a938f0
@@ -1,6 +1,6 @@
1
1
  # RubyRNCryptor by Erik Wrenholt.
2
- # Based on data format described by Rob Napier
3
- # https://github.com/rnapier/RNCryptor/wiki/Data-Format
2
+ # Based on data format described by Rob Napier
3
+ # https://github.com/RNCryptor/RNCryptor-Spec/blob/master/RNCryptor-Spec-v3.md
4
4
  # MIT License
5
5
 
6
6
  require 'openssl'
@@ -19,9 +19,9 @@ class RubyRNCryptor
19
19
  iv = data[18,16]
20
20
  cipher_text = data[34,data.length-66]
21
21
  hmac = data[data.length-32,32]
22
-
22
+
23
23
  msg = version + options + encryption_salt + hmac_salt + iv + cipher_text
24
-
24
+
25
25
  # Verify password is correct. First try with correct encoding
26
26
  hmac_key = PKCS5.pbkdf2_hmac_sha1(password, hmac_salt, 10000, 32)
27
27
  verified = eql_time_cmp([HMAC.hexdigest('sha256', hmac_key, msg)].pack('H*'), hmac)
@@ -32,11 +32,11 @@ class RubyRNCryptor
32
32
  hmac_key = PKCS5.pbkdf2_hmac_sha1(password, hmac_salt, 10000, 32)
33
33
  verified = eql_time_cmp([HMAC.hexdigest('sha256', hmac_key, msg)].pack('H*'), hmac)
34
34
  end
35
-
35
+
36
36
  raise "Password may be incorrect, or the data has been corrupted. (HMAC could not be verified)" unless verified
37
-
37
+
38
38
  # HMAC was verified, now decrypt it.
39
- cipher = Cipher::Cipher.new('aes-256-cbc')
39
+ cipher = Cipher.new('aes-256-cbc')
40
40
  cipher.decrypt
41
41
  cipher.iv = iv
42
42
  cipher.key = PKCS5.pbkdf2_hmac_sha1(password, encryption_salt, 10000, 32)
@@ -47,7 +47,7 @@ class RubyRNCryptor
47
47
  def self.encrypt(data, password, version = 3)
48
48
 
49
49
  raise "RubyRNCryptor only encrypts version 2 or 3" unless (version == 2 || version == 3)
50
-
50
+
51
51
  version = version.chr.to_s # Currently version 3
52
52
  options = 1.chr.to_s # Uses password
53
53
  encryption_salt = SecureRandom.random_bytes(8)
@@ -56,8 +56,8 @@ class RubyRNCryptor
56
56
  cipher_text = data[34,data.length-66]
57
57
 
58
58
  hmac_key = PKCS5.pbkdf2_hmac_sha1(password, hmac_salt, 10000, 32)
59
-
60
- cipher = Cipher::Cipher.new('aes-256-cbc')
59
+
60
+ cipher = Cipher.new('aes-256-cbc')
61
61
  cipher.encrypt
62
62
  cipher.iv = iv
63
63
  cipher.key = PKCS5.pbkdf2_hmac_sha1(password, encryption_salt, 10000, 32)
@@ -75,7 +75,7 @@ class RubyRNCryptor
75
75
  end
76
76
  str.bytes.to_a[0...str.length].map {|c| c.chr}.join
77
77
  end
78
-
78
+
79
79
  # From http://ruby-doc.org/stdlib-2.0.0/libdoc/openssl/rdoc/OpenSSL/PKCS5.html#module-OpenSSL::PKCS5-label-Important+Note+on+Checking+Passwords
80
80
  def self.eql_time_cmp(a, b)
81
81
  unless a.length == b.length
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_rncryptor
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Wrenholt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-25 00:00:00.000000000 Z
11
+ date: 2017-04-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Encrypt and Decrypt the RNCryptor format.
14
14
  email: erik@timestretch.com
@@ -37,7 +37,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
37
37
  version: '0'
38
38
  requirements: []
39
39
  rubyforge_project:
40
- rubygems_version: 2.0.14
40
+ rubygems_version: 2.0.14.1
41
41
  signing_key:
42
42
  specification_version: 4
43
43
  summary: Encrypt and Decrypt the RNCryptor format