passw3rd 0.0.7 → 0.0.8

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.
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 0.8.0 / 2011-10-02
2
+
3
+ Custom key directories
4
+
1
5
  === 0.6.0 / 2011-10-02
2
6
 
3
7
  Added custom password directories, more tests. Some code cleanup. Java version maven site generation.
@@ -1,18 +1,23 @@
1
1
  module Passw3rd
2
2
  class PasswordService
3
3
  @@password_file_dir = ENV["HOME"]
4
+ @@key_file_dir = ENV["HOME"]
4
5
 
5
6
  def self.password_file_dir= dir
6
7
  @@password_file_dir = dir
7
8
  end
8
9
 
10
+ def self.key_file_dir= dir
11
+ @@key_file_dir = dir
12
+ end
13
+
9
14
  def self.get_password (password_file, key_path=nil)
10
15
  encoded_password = Base64.decode64(IO.readlines(File.join(@@password_file_dir, password_file)).join)
11
- PasswordService.decrypt(encoded_password, key_path)
16
+ PasswordService.decrypt(encoded_password, key_path || @@key_file_dir)
12
17
  end
13
18
 
14
19
  def self.write_password_file(password, output_path, key_path = nil)
15
- enc_password = PasswordService.encrypt(password, key_path)
20
+ enc_password = PasswordService.encrypt(password, key_path || @@key_file_dir)
16
21
  base64pw = Base64.encode64(enc_password)
17
22
  path = File.join(@@password_file_dir, output_path)
18
23
  File.open(path, 'w') { |f| f.write base64pw }
@@ -22,7 +27,7 @@ module Passw3rd
22
27
  def self.encrypt(password, key_path = nil)
23
28
  raise "password cannot be blank" if password.empty?
24
29
 
25
- pair = KeyLoader.load(key_path)
30
+ pair = KeyLoader.load(key_path || @@key_file_dir)
26
31
  cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc')
27
32
  cipher.encrypt
28
33
  cipher.key = pair.key
@@ -37,7 +42,7 @@ module Passw3rd
37
42
  end
38
43
 
39
44
  def self.decrypt(cipher_text, key_path = nil)
40
- pair = KeyLoader.load(key_path)
45
+ pair = KeyLoader.load(key_path || @@key_file_dir)
41
46
  cipher = OpenSSL::Cipher::Cipher.new('aes-128-cbc')
42
47
  cipher.decrypt
43
48
  cipher.key = pair.key
@@ -1,3 +1,3 @@
1
1
  module Passw3rd
2
- Version = VERSION = '0.0.7'
2
+ Version = VERSION = '0.0.8'
3
3
  end
@@ -8,6 +8,9 @@ class PasswordServiceTest < Test::Unit::TestCase
8
8
  def setup
9
9
  random_num = SecureRandom.random_number(5000)
10
10
  @random_string = SecureRandom.random_bytes(5000 + random_num)
11
+
12
+ ::Passw3rd::KeyLoader.create_key_iv_file(Dir.tmpdir)
13
+ ::Passw3rd::PasswordService.key_file_dir = Dir.tmpdir
11
14
  end
12
15
 
13
16
  def test_enc_dec
@@ -18,25 +21,22 @@ class PasswordServiceTest < Test::Unit::TestCase
18
21
  end
19
22
 
20
23
  def test_set_and_get_password
21
- ::Passw3rd::KeyLoader.create_key_iv_file(Dir.tmpdir)
22
- password_file = ::Passw3rd::PasswordService.write_password_file(@random_string, "test", Dir.tmpdir)
23
- decrypted = Passw3rd::PasswordService.get_password("test", Dir.tmpdir)
24
+ password_file = ::Passw3rd::PasswordService.write_password_file(@random_string, "test")
25
+ decrypted = Passw3rd::PasswordService.get_password("test")
24
26
  assert_equal(@random_string, decrypted)
25
27
  end
26
28
 
27
29
  def test_set_and_get_password_custom_dir
28
30
  ::Passw3rd::PasswordService.password_file_dir = Dir.tmpdir
29
- ::Passw3rd::KeyLoader.create_key_iv_file(Dir.tmpdir)
31
+
30
32
  password_file = ::Passw3rd::PasswordService.write_password_file(@random_string, "test2")
31
33
  decrypted = Passw3rd::PasswordService.get_password("test2")
32
34
  assert_equal(@random_string, decrypted)
33
35
  end
34
36
 
35
37
  def test_gen_key
36
- ::Passw3rd::KeyLoader.create_key_iv_file(Dir.tmpdir)
37
-
38
- enc = ::Passw3rd::PasswordService.encrypt(@random_string, Dir.tmpdir)
39
- dec = ::Passw3rd::PasswordService.decrypt(enc, Dir.tmpdir)
38
+ enc = ::Passw3rd::PasswordService.encrypt(@random_string)
39
+ dec = ::Passw3rd::PasswordService.decrypt(enc)
40
40
 
41
41
  assert_equal(@random_string, dec)
42
42
  end
metadata CHANGED
@@ -1,25 +1,33 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: passw3rd
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.7
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 8
10
+ version: 0.0.8
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Neil Matatall
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-10-02 00:00:00.000000000Z
17
+
18
+ date: 2011-10-02 00:00:00 Z
13
19
  dependencies: []
14
- description: Generate a key/iv file, generate passwords, and store encrypted files
15
- in source control, keep the key/iv safe!
16
- email:
20
+
21
+ description: Generate a key/iv file, generate passwords, and store encrypted files in source control, keep the key/iv safe!
22
+ email:
17
23
  - neil.matatall@gmail.com
18
- executables:
24
+ executables:
19
25
  - passw3rd
20
26
  extensions: []
27
+
21
28
  extra_rdoc_files: []
22
- files:
29
+
30
+ files:
23
31
  - README.md
24
32
  - LICENSE
25
33
  - EXAMPLES
@@ -33,26 +41,36 @@ files:
33
41
  - test/password_service_test.rb
34
42
  homepage: https://github.com/oreoshake/passw3rd
35
43
  licenses: []
44
+
36
45
  post_install_message:
37
46
  rdoc_options: []
38
- require_paths:
47
+
48
+ require_paths:
39
49
  - lib
40
- required_ruby_version: !ruby/object:Gem::Requirement
50
+ required_ruby_version: !ruby/object:Gem::Requirement
41
51
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
60
  none: false
48
- requirements:
49
- - - ! '>='
50
- - !ruby/object:Gem::Version
51
- version: '0'
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
52
68
  requirements: []
69
+
53
70
  rubyforge_project:
54
71
  rubygems_version: 1.8.10
55
72
  signing_key:
56
73
  specification_version: 3
57
74
  summary: A simple "keep the passwords out of source code and config files".
58
75
  test_files: []
76
+