summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorcrayfishx <craig@craigdunn.org>2012-09-25 09:39:25 -0700
committercrayfishx <craig@craigdunn.org>2012-09-25 09:39:25 -0700
commit7602f765546cd5d99ce8cf483cc3bedbe4fd0317 (patch)
tree0abe2fc7569707975ed63da2cd47aa605d2c815c /lib
first commit
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/provider/gpgkey/gpgme.rb35
-rw-r--r--lib/puppet/type/gpgkey.rb45
2 files changed, 80 insertions, 0 deletions
diff --git a/lib/puppet/provider/gpgkey/gpgme.rb b/lib/puppet/provider/gpgkey/gpgme.rb
new file mode 100644
index 0000000..7a37f45
--- /dev/null
+++ b/lib/puppet/provider/gpgkey/gpgme.rb
@@ -0,0 +1,35 @@
+Puppet::Type.type(:gpgkey).provide(:gpgme) do
+ require 'gpgme'
+ def exists?
+ ! GPGME::Key.find(:secret, keyname()).empty?
+ end
+
+ def create
+ ctx = GPGME::Ctx.new
+ keydata = "<GnupgKeyParms format=\"internal\">\n"
+ keydata += "Key-Type: " +@resource.value(:keytype)+"\n"
+ keydata += "Key-Length: " +@resource.value(:keylength)+"\n"
+ keydata += "Subkey-Type: " +@resource.value(:subkeytype)+"\n"
+ keydata += "Subkey-Length: " +@resource.value(:subkeylength)+"\n"
+ keydata += "Name-Real: " +@resource.value(:name)+"\n"
+ keydata += "Name-Comment: " +keyname()+"\n"
+ keydata += "Name-Email: " +@resource.value(:email)+"\n"
+ keydata += "Expire-Date: " +@resource.value(:expire)+"\n"
+ keydata += "</GnupgKeyParms>\n"
+
+ ctx.genkey(keydata, nil, nil)
+ end
+
+ def destroy
+ GPGME::Key.find(:secret, keyname()).each do |key|
+ key.delete!(true)
+ end
+ end
+
+ private
+ def keyname
+ keyname = 'puppet#' + @resource.value(:name) + '#'
+ return keyname
+ end
+
+end
diff --git a/lib/puppet/type/gpgkey.rb b/lib/puppet/type/gpgkey.rb
new file mode 100644
index 0000000..83bbd6f
--- /dev/null
+++ b/lib/puppet/type/gpgkey.rb
@@ -0,0 +1,45 @@
+Puppet::Type.newtype(:gpgkey) do
+ ensurable
+ @doc = "Creates and managed GPG keys through GPGME"
+
+ newparam(:name, :namevar => true) do
+ desc 'The name of the GPG key, this will use the Real Name attribute of the key'
+ end
+
+ newparam(:keytype) do
+ defaultto 'DSA'
+ desc 'GPG Key Type'
+ end
+
+ newparam(:keylength) do
+ defaultto '1024'
+ desc 'Key Length (default 1024)'
+ end
+
+ newparam(:subkeytype) do
+ defaultto 'RSA'
+ desc 'GPG Sub Key Type'
+ end
+
+ newparam(:subkeylength) do
+ defaultto '1024'
+ desc 'Sub Key Length (default 1024)'
+ end
+
+ newparam(:email) do
+ defaultto 'puppet@localhost'
+ end
+
+ newparam(:expire) do
+ defaultto '0'
+ end
+
+ newparam(:password) do
+ defaultto ''
+ end
+
+ newparam(:armour) do
+ defaultto true
+ end
+
+end