Sha256: 86cdecd59781b44794a63c1c35f80bd48b83a47716762268dba748f347f00cee

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents


module Ccrypto
  module Java
    class SecretKeyEngine

      include TeLogger::TeLogHelper
      teLogger_tag :j_secretkey
     
      def self.generate(*args, &block)
        config = args.first

        raise SecretKeyEngineException, "KeyConfig is expected" if not config.is_a?(Ccrypto::KeyConfig) 

        if block
          kgProv = block.call(:keygen_jceProvider)
          ranProv = block.call(:random_jceProvider)
        end

        if kgProv.nil?
          teLogger.debug "KeyGen using algo #{config.algo.to_s} with null provider"
          keyGen = javax.crypto.KeyGenerator.getInstance(config.algo.to_s)
        else
          teLogger.debug "KeyGen using algo #{config.algo.to_s} with provider #{kgProv.is_a?(String) ? kgProv : kgProv.name}"
          keyGen = javax.crypto.KeyGenerator.getInstance(config.algo.to_s, kgProv)
        end

        if ranProv.nil?
          teLogger.debug "Init KeyGen with keysize #{config.keysize.to_i}"
          keyGen.init(config.keysize.to_i)
        else
          teLogger.debug "Init KeyGen with keysize #{config.keysize.to_i} with provider #{ranProv.is_a?(String) ? ranProv : ranProv.name}"
          keyGen.init(config.keysize.to_i, ranProv)
        end

        key = keyGen.generateKey
        teLogger.debug "Secret key #{config} generated"
        Ccrypto::SecretKey.new(config.algo, key)

      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ccrypto-java-0.1.0 lib/ccrypto/java/engines/secret_key_engine.rb