require 'mscorlib'


module OpenSSL

  module Digest 

    class Digest

      attr :algorithm

      def initialize(algorithm_name)
        @algorithm = System::Security::Cryptography::HMAC.Create('HMAC' + algorithm_name)
        unless @algorithm
          raise RuntimeError, "Unsupported digest algorithm (#{algorithm_name})."
        end
      end

    end

  end

  class HMAC
      
    def HMAC.hexdigest(digest, key, data)
      digest.algorithm.Key = key.ToByteArray
      System::BitConverter.ToString(digest.algorithm.ComputeHash(data.ToByteArray)).Replace("-","").ToLower.to_str
    end
  
  end

end
