]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - modules/puppetmaster/lib/puppet/parser/functions/hmac.rb
Add HMAC function
[dsa-puppet.git] / modules / puppetmaster / lib / puppet / parser / functions / hmac.rb
diff --git a/modules/puppetmaster/lib/puppet/parser/functions/hmac.rb b/modules/puppetmaster/lib/puppet/parser/functions/hmac.rb
new file mode 100644 (file)
index 0000000..c1335cb
--- /dev/null
@@ -0,0 +1,19 @@
+module Puppet::Parser::Functions
+  newfunction(:hmac, :type => :rvalue) do |args|
+    secretfile = args.shift()
+    data = args.shift()
+
+    require 'openssl'
+    secret = ""
+    begin
+      secret = File.new(secretfile, "r").read
+    rescue => e
+      raise Puppet::ParseError, "Error loading secret from #{seccretfile}: #{e.message}\n#{e.backtrace}"
+    end
+
+    return OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha256'), secret, data)
+  end
+end
+# vim:set ts=2:
+# vim:set et:
+# vim:set shiftwidth=2: