<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: digital signature code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 17 May 2008 10:48:02 GMT</pubDate>
    <description>DZone Snippets: digital signature code</description>
    <item>
      <title>Ruby HMAC verifier</title>
      <link>http://snippets.dzone.com/posts/show/2971</link>
      <description>// Ruby script to verify the HMAC of a file or string.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;#&lt;br /&gt;#  Created by Jon (exabrial+hmacruby@gmail.com) on 2006-11-04.&lt;br /&gt;#  Copyright (c) 2006. All rights reserved.&lt;br /&gt;#  Released under MIT License&lt;br /&gt;&lt;br /&gt;require 'openssl'&lt;br /&gt;require "getopt/std"&lt;br /&gt;include OpenSSL&lt;br /&gt;include Digest&lt;br /&gt;&lt;br /&gt;def printhelp&lt;br /&gt;  help=&lt;&lt;end&lt;br /&gt;Purpose: Provides HMAC-SHA1 of a file or string. Text passwords are SHA1 hashed.&lt;br /&gt;Usage: hmac.rb ["string to digest"] [-f (pathtofile)] [-k (pathtokeyfile)]&lt;br /&gt;Options:&lt;br /&gt;  -f (pathtofile) digests a file instead of a string&lt;br /&gt;  -k (pathtokeyfile) does not prompt for key and uses the specified file as a key instead.&lt;br /&gt;end&lt;br /&gt;  puts help&lt;br /&gt;  exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;if ARGV.size &lt; 1&lt;br /&gt;  printhelp&lt;br /&gt;elsif ARGV.size==1&lt;br /&gt;  @plaintext=ARGV.shift&lt;br /&gt;else&lt;br /&gt;  begin&lt;br /&gt;    opt = Getopt::Std.getopts("f:k:")&lt;br /&gt;  rescue Getopt::StdError&lt;br /&gt;    printhelp&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  if opt["f"]&lt;br /&gt;    @plaintext=File.read(opt["f"])&lt;br /&gt;  end&lt;br /&gt;  if opt["k"]&lt;br /&gt;    @key=File.read(opt["k"])&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  printhelp if (!@plaintext&amp;&amp;!@key)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def getkey&lt;br /&gt;  return @key if @key&lt;br /&gt;  print "Please type your key then push enter:"&lt;br /&gt;  return SHA1.new(gets()).to_s&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def main&lt;br /&gt;  hmacd=HMAC.new(getkey(), SHA1.new)&lt;br /&gt;  hmacd.update(@plaintext)&lt;br /&gt;  puts hmacd.to_s&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;main&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 05 Nov 2006 01:54:20 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2971</guid>
      <author>exabrial (Jon)</author>
    </item>
  </channel>
</rss>
