security 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- security (0.1.1)
4
+ security (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1,7 +1,9 @@
1
1
  module Security
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
4
4
 
5
+ require 'shellwords'
6
+
5
7
  require 'security/keychain'
6
8
  require 'security/certificate'
7
9
  require 'security/password'
@@ -9,19 +9,19 @@ module Security
9
9
  end
10
10
 
11
11
  def info
12
- system %{security show-keychain-info "#{@filename}"}
12
+ system %{security show-keychain-info #{@filename.shellescape}}
13
13
  end
14
14
 
15
15
  def lock
16
- system %{security lock-keychain "#{@filename}"}
16
+ system %{security lock-keychain #{@filename.shellescape}}
17
17
  end
18
18
 
19
19
  def unlock(password)
20
- system %{security unlock-keychain -p #{password} "#{@filename}"}
20
+ system %{security unlock-keychain -p #{password.shellescape} #{@filename.shellescape}}
21
21
  end
22
22
 
23
23
  def delete
24
- system %{security delete-keychain "#{@filename}"}
24
+ system %{security delete-keychain #{@filename.shellescape}}
25
25
  end
26
26
 
27
27
  class << self
@@ -32,7 +32,7 @@ module Security
32
32
  def list(domain = :user)
33
33
  raise ArgumentError "Invalid domain #{domain}, expected one of: #{DOMAINS}" unless DOMAINS.include?(domain)
34
34
 
35
- keychains_from_command('list-keychains', domain)
35
+ keychains_from_output(`security list-keychains -d #{domain}`)
36
36
  end
37
37
 
38
38
  def lock
@@ -40,21 +40,21 @@ module Security
40
40
  end
41
41
 
42
42
  def unlock(password)
43
- system %{security unlock-keychain -p #{password}}
43
+ system %{security unlock-keychain -p #{password.shellescape}}
44
44
  end
45
45
 
46
46
  def default_keychain
47
- keychains_from_command('default-keychain').first
47
+ keychains_from_output(`security default-keychain`).first
48
48
  end
49
49
 
50
50
  def login_keychain
51
- keychains_from_command('login-keychain').first
51
+ keychains_from_output(`security login-keychain`).first
52
52
  end
53
53
 
54
54
  private
55
55
 
56
- def keychains_from_command(command, *args)
57
- `security #{[command, *args].compact.join(' ')}`.split(/\n/).collect{|line| new(line.strip.gsub(/^\"|\"$/, ""))}
56
+ def keychains_from_output(output)
57
+ output.split(/\n/).collect{|line| new(line.strip.gsub(/^\"|\"$/, ""))}
58
58
  end
59
59
  end
60
60
  end
@@ -40,7 +40,7 @@ module Security
40
40
  flags[:G] ||= options.delete(:value)
41
41
  flags[:j] ||= options.delete(:comment)
42
42
 
43
- flags.delete_if{|k,v| v.nil?}.collect{|k, v| "-#{k} #{v}".strip}.join(" ")
43
+ flags.delete_if{|k,v| v.nil?}.collect{|k, v| "-#{k} #{v.shellescape}".strip}.join(" ")
44
44
  end
45
45
  end
46
46
  end
@@ -56,9 +56,7 @@ module Security
56
56
  end
57
57
 
58
58
  def find(options)
59
- options[:g] = ''
60
-
61
- password_from_output(`security 2>&1 find-generic-password #{flags_for_options(options)}`)
59
+ password_from_output(`security 2>&1 find-generic-password -g #{flags_for_options(options)}`)
62
60
  end
63
61
 
64
62
  def delete(options)
@@ -85,9 +83,7 @@ module Security
85
83
  end
86
84
 
87
85
  def find(options)
88
- options[:g] = ''
89
-
90
- password_from_output(`security 2>&1 find-internet-password #{flags_for_options(options)}`)
86
+ password_from_output(`security 2>&1 find-internet-password -g #{flags_for_options(options)}`)
91
87
  end
92
88
 
93
89
  def delete(options)
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: security
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-07-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70207242870160 !ruby/object:Gem::Requirement
16
+ requirement: &70304035253220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.6.1
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70207242870160
24
+ version_requirements: *70304035253220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70207242867600 !ruby/object:Gem::Requirement
27
+ requirement: &70304035252680 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 0.9.2
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70207242867600
35
+ version_requirements: *70304035252680
36
36
  description: Library for interacting with the Mac OS X Keychain
37
37
  email: m@mattt.me
38
38
  executables: []
@@ -49,6 +49,7 @@ files:
49
49
  - ./Rakefile
50
50
  - ./README.md
51
51
  - ./security-0.1.0.gem
52
+ - ./security-0.1.1.gem
52
53
  - ./security.gemspec
53
54
  homepage: http://mattt.me
54
55
  licenses: []
@@ -64,7 +65,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
65
  version: '0'
65
66
  segments:
66
67
  - 0
67
- hash: 940231964905790783
68
+ hash: -1161416136524147904
68
69
  required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  none: false
70
71
  requirements:
@@ -73,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
74
  version: '0'
74
75
  segments:
75
76
  - 0
76
- hash: 940231964905790783
77
+ hash: -1161416136524147904
77
78
  requirements: []
78
79
  rubyforge_project:
79
80
  rubygems_version: 1.8.15