keychain_manager 0.0.1

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 (2) hide show
  1. data/lib/keychain_manager.rb +78 -0
  2. metadata +45 -0
@@ -0,0 +1,78 @@
1
+ #Mac OS X Keychain Manager Gem.
2
+ #Copyright (c) 2011, JP Richardson
3
+ #email: jprichardson@gmail.com
4
+
5
+ class KeychainManager
6
+ attr_reader :name
7
+
8
+ CMD_KC = 'security'
9
+ CMD_SSL = 'openssl'
10
+ @file = nil
11
+
12
+ def initialize(name)
13
+ @name = name
14
+ end
15
+
16
+ def create
17
+ `#{CMD_KC} create-keychain -p "" #{@name}`
18
+ end
19
+
20
+ def delete
21
+ `#{CMD_KC} delete-keychain #{self.file}`
22
+ end
23
+
24
+ def exist?
25
+ exists?
26
+ end
27
+
28
+ def exists?
29
+ `#{CMD_KC} list-keychains`.include?(@name)
30
+ end
31
+
32
+ def export_identities(p12_file)
33
+ `#{CMD_KC} export -k #{self.file} -t identities -f pkcs12 -P '' -o #{p12_file}`
34
+ end
35
+
36
+ def file
37
+ return @file unless @file.nil?
38
+ KeychainManager.keychain_files.each do |f|
39
+ if f.include?(@name)
40
+ @file = f
41
+ break
42
+ end
43
+ end
44
+ @file
45
+ end
46
+
47
+ def import_apple_cert(apple_cert_file)
48
+ `#{CMD_KC} import #{apple_cert_file} -k #{self.file}`
49
+ end
50
+
51
+ def import_rsa_key(rsa_file)
52
+ `#{CMD_KC} import #{rsa_file} -P "" -k #{self.file}`
53
+ end
54
+
55
+ ########### CLASS Methods
56
+
57
+ def self.convert_p12_to_pem(p12_file, pem_file)
58
+ #`expect -c "spawn #{CMD_SSL} pkcs12 -nodes -in #{p12_file} -out #{pem_file}; expect -re \\\"Enter Import Password:\\\"; send \\\"\\n\\\"; expect eof"`
59
+ `#{CMD_SSL} pkcs12 -passin pass: -nodes -in #{p12_file} -out #{pem_file}`
60
+ end
61
+
62
+ def self.generate_cert_request(email, country, rsa_file, cert_file)
63
+ `#{CMD_SSL} req -new -key #{rsa_file} -out #{cert_file} -subj "/#{email}, CN=CERT_NAME, C=#{country}"`
64
+ end
65
+
66
+ def self.generate_rsa_key(rsa_file, keysize=2048)
67
+ `#{CMD_SSL} genrsa -out #{rsa_file} #{keysize}`
68
+ end
69
+
70
+ def self.keychain_files
71
+ files = []
72
+ `#{CMD_KC} list-keychains`.split("\n").each do |file|
73
+ files << file.strip.gsub('"', '')
74
+ end
75
+ files
76
+ end
77
+
78
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: keychain_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - JP Richardson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-07 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: A gem to access the Mac OS X Keychain Access app.
15
+ email: jprichardson@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/keychain_manager.rb
21
+ homepage: https://github.com/jprichardson/keychain_manager
22
+ licenses: []
23
+ post_install_message:
24
+ rdoc_options: []
25
+ require_paths:
26
+ - lib
27
+ required_ruby_version: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 1.8.8
42
+ signing_key:
43
+ specification_version: 3
44
+ summary: Keychain Access
45
+ test_files: []