10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/ccrypto/java/engines/secret_key_engine.rb', line 10
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
|