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.
- data/lib/keychain_manager.rb +78 -0
- 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: []
|