passw3rd 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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
+