Sha256: 72b5ac90cfa1e1bc704db19f3e54bae6ff03006a8fe6cd28ee86fcbf12439900

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require_relative '../data_conversion'

module Ccrypto
  module Java
    class ScryptEngine 
      include DataConversion
      include TR::CondUtils

      def initialize(conf, &block)

        raise KDFEngineException, "KDF config is expected" if not conf.is_a?(Ccrypto::KDFConfig)
        raise KDFEngineException, "Output bit length (outBitLength) value is not given or not a positive value (#{conf.outBitLength})" if is_empty?(conf.outBitLength) or conf.outBitLength <= 0
        @config = conf

        if is_empty?(@config.salt)
          @config.salt = ::Java::byte[16].new
          java.security.SecureRandom.getInstance("NativePRNG").next_bytes(@config.salt)
        end
      end

      def derive(input, output = :binary)
        res =  org.bouncycastle.crypto.generators.SCrypt.generate(to_java_bytes(input), to_java_bytes(@config.salt),@config.cost, @config.blocksize, @config.parallel, @config.outBitLength/8)
        
        #logger.debug "scrypt output : #{res.inspect}"

        case output
        when :hex
          to_hex(res)
        when :b64
          to_b64(res)
        else
          res
        end
      end

      private
      def logger
        Ccrypto::Java.logger(:scrypt_eng)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ccrypto-java-0.2.0 lib/ccrypto/java/engines/scrypt_engine.rb