keyring 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+ # keyring: System keyring abstraction library
3
+ # License: MIT (http://www.opensource.org/licenses/mit-license.php)
4
+
5
+ printf "security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.\n" >&2
6
+ exit 44
@@ -0,0 +1,51 @@
1
+ #!/bin/sh
2
+ # keyring: System keyring abstraction library
3
+ # License: MIT (http://www.opensource.org/licenses/mit-license.php)
4
+
5
+ # The help output really is indented with spaces like this
6
+ cat <<-EOF
7
+ help Show all commands, or show usage for a command.
8
+ list-keychains Display or manipulate the keychain search list.
9
+ default-keychain Display or set the default keychain.
10
+ login-keychain Display or set the login keychain.
11
+ create-keychain Create keychains and add them to the search list.
12
+ delete-keychain Delete keychains and remove them from the search list.
13
+ lock-keychain Lock the specified keychain.
14
+ unlock-keychain Unlock the specified keychain.
15
+ set-keychain-settings Set settings for a keychain.
16
+ set-keychain-password Set password for a keychain.
17
+ show-keychain-info Show the settings for keychain.
18
+ dump-keychain Dump the contents of one or more keychains.
19
+ create-keypair Create an asymmetric key pair.
20
+ add-generic-password Add a generic password item.
21
+ add-internet-password Add an internet password item.
22
+ add-certificates Add certificates to a keychain.
23
+ find-generic-password Find a generic password item.
24
+ delete-generic-password Delete a generic password item.
25
+ find-internet-password Find an internet password item.
26
+ delete-internet-password Delete an internet password item.
27
+ find-certificate Find a certificate item.
28
+ find-identity Find an identity (certificate + private key).
29
+ delete-certificate Delete a certificate from a keychain.
30
+ set-identity-preference Set the preferred identity to use for a service.
31
+ get-identity-preference Get the preferred identity to use for a service.
32
+ create-db Create a db using the DL.
33
+ export Export items from a keychain.
34
+ import Import items into a keychain.
35
+ cms Encode or decode CMS messages.
36
+ install-mds Install (or re-install) the MDS database.
37
+ add-trusted-cert Add trusted certificate(s).
38
+ remove-trusted-cert Remove trusted certificate(s).
39
+ dump-trust-settings Display contents of trust settings.
40
+ user-trust-settings-enable Display or manipulate user-level trust settings.
41
+ trust-settings-export Export trust settings.
42
+ trust-settings-import Import trust settings.
43
+ verify-cert Verify certificate(s).
44
+ authorize Perform authorization operations.
45
+ authorizationdb Make changes to the authorization policy database.
46
+
47
+ execute-with-privileges Execute tool with privileges.
48
+ leaks Run /usr/bin/leaks on this process.
49
+ error Display a descriptive message for the given error code(s).
50
+ create-filevaultmaster-keychain Create a keychain containing a key pair for FileVault recovery use.
51
+ EOF
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+ # keyring: System keyring abstraction library
3
+ # License: MIT (http://www.opensource.org/licenses/mit-license.php)
4
+
5
+ cat <<-EOF
6
+ This is help output for a different command
7
+ EOF
metadata CHANGED
@@ -1,77 +1,147 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: keyring
3
- version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
6
5
  platform: ruby
7
- authors:
8
- - Frank Fischer
6
+ authors:
7
+ - Jason Heiss
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
-
13
- date: 2011-05-28 00:00:00 +02:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: bones
11
+ date: 2014-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
18
35
  prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mocha
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
22
45
  - - ">="
23
- - !ruby/object:Gem::Version
24
- version: 3.6.5
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
25
48
  type: :development
26
- version_requirements: *id001
27
- description: |-
28
- A simple framework for storing passwords in certain keyring systems.
29
- This gem is heavily inspired by python-keyring.
30
- email: frank.fischer@mathematik.tu-chemnitz.de
31
- executables: []
32
-
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: slop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: This library provides a easy way to access the system keyring service
70
+ from ruby
71
+ email:
72
+ - jheiss@aput.net
73
+ executables:
74
+ - keyring
33
75
  extensions: []
34
-
35
- extra_rdoc_files:
36
- - History.txt
37
- files:
38
- - History.txt
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - Gemfile
80
+ - LICENSE
39
81
  - README.md
40
82
  - Rakefile
83
+ - bin/keyring
84
+ - keyring.gemspec
41
85
  - lib/keyring.rb
42
- - lib/keyring/Keyring.rb
43
- - lib/keyring/SimpleKeyring.rb
44
- - spec/keyring_spec.rb
45
- - spec/spec_helper.rb
46
- - version.txt
47
- has_rdoc: true
48
- homepage: http://darcsden.com/lyro/keyring
49
- licenses: []
50
-
86
+ - lib/keyring/backend.rb
87
+ - lib/keyring/backends/macosx_keychain.rb
88
+ - lib/keyring/backends/memory.rb
89
+ - lib/keyring/cli.rb
90
+ - lib/keyring/version.rb
91
+ - test/keyring_tests.rb
92
+ - test/test_backend.rb
93
+ - test/test_backend_macosx_keychain.rb
94
+ - test/test_backend_memory.rb
95
+ - test/test_cli.rb
96
+ - test/test_keyring.rb
97
+ - test/testcmds/macosx/binary
98
+ - test/testcmds/macosx/emptything
99
+ - test/testcmds/macosx/random
100
+ - test/testcmds/macosx/security-delete
101
+ - test/testcmds/macosx/security-find
102
+ - test/testcmds/macosx/security-findempty
103
+ - test/testcmds/macosx/security-findhex
104
+ - test/testcmds/macosx/security-notfound
105
+ - test/testcmds/macosx/security-righthelp
106
+ - test/testcmds/macosx/security-wronghelp
107
+ homepage: https://github.com/jheiss/keyring
108
+ licenses:
109
+ - MIT
110
+ metadata: {}
51
111
  post_install_message:
52
- rdoc_options:
53
- - --main
54
- - README.md
55
- require_paths:
112
+ rdoc_options: []
113
+ require_paths:
56
114
  - lib
57
- required_ruby_version: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
60
117
  - - ">="
61
- - !ruby/object:Gem::Version
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
66
122
  - - ">="
67
- - !ruby/object:Gem::Version
68
- version: "0"
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
69
125
  requirements: []
70
-
71
- rubyforge_project: keyring
72
- rubygems_version: 1.6.2
126
+ rubyforge_project:
127
+ rubygems_version: 2.2.0.rc.1
73
128
  signing_key:
74
- specification_version: 3
75
- summary: A simple framework for storing passwords in certain keyring systems.
76
- test_files: []
77
-
129
+ specification_version: 4
130
+ summary: Store and access your passwords safely
131
+ test_files:
132
+ - test/keyring_tests.rb
133
+ - test/test_backend.rb
134
+ - test/test_backend_macosx_keychain.rb
135
+ - test/test_backend_memory.rb
136
+ - test/test_cli.rb
137
+ - test/test_keyring.rb
138
+ - test/testcmds/macosx/binary
139
+ - test/testcmds/macosx/emptything
140
+ - test/testcmds/macosx/random
141
+ - test/testcmds/macosx/security-delete
142
+ - test/testcmds/macosx/security-find
143
+ - test/testcmds/macosx/security-findempty
144
+ - test/testcmds/macosx/security-findhex
145
+ - test/testcmds/macosx/security-notfound
146
+ - test/testcmds/macosx/security-righthelp
147
+ - test/testcmds/macosx/security-wronghelp
@@ -1,4 +0,0 @@
1
- == 0.1.0 / 2011-05-28
2
-
3
- * 1 major enhancement
4
- * Birthday!
@@ -1,95 +0,0 @@
1
- require 'yaml'
2
-
3
- module Keyring
4
-
5
- @keyring = nil
6
- @backends = {}
7
-
8
- # Registers a backend
9
- def self.add_backend( name, backend )
10
- @backends[name] = backend
11
- end
12
-
13
- # Changes the global default key-ring
14
- def self.set_keyring( keyring )
15
- raise ArgumentError, "Expected keyring" unless keyring.kind_of? Keyring
16
- @keyring = keyring
17
- end
18
-
19
- # Returns the global default keyring
20
- def self.keyring
21
- unless @keyring
22
- @backends.each_value do |backend|
23
- keyring = backend.new
24
- if keyring.supported?
25
- @keyring = keyring
26
- break if keyring.recommended?
27
- end
28
- end
29
- end
30
- @keyring
31
- end
32
-
33
- def self.method_missing(name, *args, &block)
34
- keyring.send(name, *args, &block)
35
- end
36
-
37
- # Base class for all Keyrings.
38
- # All keyring backends should inherit from this class.
39
- class Keyring
40
- # Determines if this keyring is supported by the current platform.
41
- # @return [true, false] whether the keyring is supported by the current platform
42
- def supported?
43
- false
44
- end
45
-
46
- # Determines if this keyring is recommended by the current platform.
47
- # @return [true, false] whether the keyring is recommended by the current platform
48
- def recommended?
49
- false
50
- end
51
-
52
- # Sets the user password for a certain service.
53
- # @param [String] service the name of the service
54
- # @param [String] username the name of the user
55
- # @param [String, nil] password the new password to be stored
56
- def set_password( service, username, password )
57
- raise NotImplementedError, "Setting a password is not supported"
58
- end
59
-
60
- # Removes a user password for a certain service from the keyring.
61
- # This is the same as setting the password to nil.
62
- # @param [String] service the name of the service
63
- # @param [String] username the name of the user
64
- def delete_password( service, username )
65
- set_password( service, username, nil )
66
- end
67
-
68
- # Returns the current user password for a certain service.
69
- # @param [String] service the name of the service
70
- # @param [String] username the name of the user
71
- # @return [String, nil] the current password if available
72
- def get_password( service, username )
73
- raise NotImplementedError, "Retrieving a password is not supported"
74
- end
75
- end
76
-
77
-
78
- # load keyring
79
- [".rbkeyringrc", "#{File.join(ENV['HOME'], '.rbkeyringrc')}"].each do |fname|
80
- begin
81
- File.open(fname, "r") do |f|
82
- puts "load #{fname}"
83
- config = YAML::load(f.read)
84
- if config
85
- kr_module = config["module"]
86
- require kr_module
87
- set_keyring(@backends[kr_module].new config["parameters"])
88
- break
89
- end
90
- end
91
- rescue IOError, Errno::ENOENT
92
- end
93
- end
94
-
95
- end
@@ -1,38 +0,0 @@
1
- module Keyring
2
-
3
- # Simple keyring holding all keys in memory.
4
- class SimpleKeyring < Keyring
5
- def initialize
6
- @services = {}
7
- end
8
-
9
- def supported?
10
- true
11
- end
12
-
13
- def recommended?
14
- false
15
- end
16
-
17
- def get_password( service, username )
18
- passwords = @services[service]
19
- if passwords
20
- passwords[username]
21
- else
22
- nil
23
- end
24
- end
25
-
26
- def set_password( service, username, password )
27
- passwords = @services[service]
28
- unless passwords
29
- passwords = {}
30
- @services[service] = passwords
31
- end
32
- passwords[username] = password
33
- end
34
- end
35
-
36
- add_backend("simple", SimpleKeyring)
37
-
38
- end
@@ -1,129 +0,0 @@
1
-
2
- require File.join(File.dirname(__FILE__), %w[spec_helper])
3
-
4
- describe Keyring::Keyring, "after creation" do
5
- before do
6
- @keyring = Keyring::Keyring.new
7
- end
8
-
9
- it "should not be supported" do
10
- @keyring.supported?.should == false
11
- end
12
-
13
- it "should not be recommended" do
14
- @keyring.recommended?.should == false
15
- end
16
-
17
- it "should raise an error when getting a password" do
18
- lambda{@keyring.get_password("service", "user")}.should raise_error
19
- end
20
-
21
- it "should raise an error when setting a password" do
22
- lambda{@keyring.set_password("service", "user", "pass")}.should raise_error
23
- end
24
-
25
- it "should raise an error when deleting a password" do
26
- lambda{@keyring.delete_password("service", "user", "pass")}.should raise_error
27
- end
28
- end
29
-
30
-
31
- describe Keyring::SimpleKeyring, "after creation" do
32
- before do
33
- @keyring = Keyring::SimpleKeyring.new
34
- end
35
-
36
- it "should be supported" do
37
- @keyring.supported?.should == true
38
- end
39
-
40
- it "should not be recommended" do
41
- @keyring.recommended?.should == false
42
- end
43
-
44
- it "should return nil when getting a password" do
45
- @keyring.get_password("service", "user").should == nil
46
- end
47
-
48
- it "should not raise an error when setting a password" do
49
- lambda{@keyring.set_password("service", "user", "pass")}.should_not raise_error
50
- end
51
-
52
- it "should not raise an error when deleting a password" do
53
- lambda{@keyring.delete_password("service", "user")}.should_not raise_error
54
- end
55
- end
56
-
57
-
58
- describe Keyring::SimpleKeyring, "with a single password" do
59
- before do
60
- @keyring = Keyring::SimpleKeyring.new
61
- @keyring.set_password "service", "user", "pass"
62
- end
63
-
64
- it "should contain the password" do
65
- @keyring.get_password("service", "user").should == "pass"
66
- end
67
-
68
- it "should not contain a password for another user" do
69
- @keyring.get_password("service", "user2").should == nil
70
- end
71
-
72
- it "should not contain a password for another service" do
73
- @keyring.get_password("service2", "user").should == nil
74
- end
75
-
76
- it "should not contain a password after deletion" do
77
- @keyring.delete_password("service", "user")
78
- @keyring.get_password("service", "user").should == nil
79
- end
80
-
81
- it "should contain the password after deletion of another user" do
82
- @keyring.delete_password("service", "user2")
83
- @keyring.get_password("service", "user").should == "pass"
84
- end
85
-
86
- it "should contain the password after deletion of another service" do
87
- @keyring.delete_password("service2", "user")
88
- @keyring.get_password("service", "user").should == "pass"
89
- end
90
- end
91
-
92
-
93
- describe Keyring::SimpleKeyring, "with a serveral passwords" do
94
- before do
95
- @keyring = Keyring::SimpleKeyring.new
96
- @keyring.set_password "service", "user", "pass"
97
- @keyring.set_password "service", "user2", "pass2"
98
- @keyring.set_password "service2", "user", "pass21"
99
- @keyring.set_password "service2", "user3", "pass23"
100
- end
101
-
102
- it "should contain all passwords" do
103
- @keyring.get_password("service", "user").should == "pass"
104
- @keyring.get_password("service", "user2").should == "pass2"
105
- @keyring.get_password("service2", "user").should == "pass21"
106
- @keyring.get_password("service2", "user3").should == "pass23"
107
- end
108
-
109
- it "should not contain a password for another user" do
110
- @keyring.get_password("service", "user3").should == nil
111
- @keyring.get_password("service2", "user2").should == nil
112
- end
113
-
114
- it "should not contain a password after deletion" do
115
- @keyring.delete_password("service", "user")
116
- @keyring.get_password("service", "user").should == nil
117
- end
118
-
119
- it "should contain the password after deletion of another user" do
120
- @keyring.delete_password("service", "user2")
121
- @keyring.get_password("service", "user").should == "pass"
122
- end
123
-
124
- it "should contain the password after deletion of another service" do
125
- @keyring.delete_password("service2", "user")
126
- @keyring.get_password("service", "user").should == "pass"
127
- end
128
- end
129
-