Sha256: 0a1645ce86c94b2618d5b15b9460c963e94a3c85f96e9e896871b4ece1ef0b33

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

require_relative 'error'
require_relative 'io_utils'
require_relative 'provider'
require_relative 'global'
#require_relative 'secretkey'


module GcryptoJce
  module Digest
    
    def generate(opts = { })
      
      digest = opts[:digest] || :sha256
      digest = digest.to_s.upcase if not (digest.nil? or digest.empty?)
      is = IoUtils.load_input(opts)
      prov = GcryptoJce::Provider.handle_options(opts)
      if prov.nil?
        md = java.security.MessageDigest.getInstance(digest)
      else
        md = java.security.MessageDigest.getInstance(digest,prov)
      end 

      begin
        bufConf = opts[:int_buf] || { }
        total = 0
        IoUtils.read_chunk(is, bufConf) do |buf, from, len|
          md.update(buf, from, len)
          total += len
          GcryptoJce::GConf.instance.glog.debug "Processed #{NumberHelper.number_to_human_size(total)}"
        end

        val = md.digest
        String.from_java_bytes(org.bouncycastle.util.encoders.Hex.encode(val))
        
      rescue Exception
      ensure
        begin
          is.close
        rescue Exception
        end
      end
      
    end
    # end method generate()
    #
  
  end
  # end module Digest
  #

  class DigestEngine
    extend Digest
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gcrypto_jce-0.2 lib/gcrypto_jce/digest.rb
gcrypto_jce-0.1 lib/gcrypto_jce/digest.rb