Module: CcipherFactory::SymKeyGenerator
- Includes:
- TR::CondUtils
- Defined in:
- lib/ccipher_factory/symkey/symkey_generator.rb
Defined Under Namespace
Classes: SymKeyGeneratorError
Class Method Summary collapse
- .derive(keytype, keysize, *args, &block) ⇒ Object
- .generate(keytype, keysize, *args, &block) ⇒ Object
- .logger ⇒ Object
- .supported_symkey ⇒ Object
Class Method Details
.derive(keytype, keysize, *args, &block) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ccipher_factory/symkey/symkey_generator.rb', line 45 def self.derive(keytype, keysize, *args, &block) raise SymKeyGeneratorError, "Unsupported symmetric key algo '#{keytype}'. Supported symmetric keys are: #{supported_symkey.keys.join(", ")}" if not supported_symkey.keys.include?(keytype) raise SymKeyGeneratorError, "Block is required" if not block kdf = block.call(:kdf) kdf = :scrypt if is_empty?(kdf) pass = block.call(:password) raise SymKeyGeneratorError, "Password is not given to derive the symkey" if is_empty?(pass) dsk = DerivedSymKey.new(keytype, keysize) dsk.derive(pass, kdf, &block) dsk end |
.generate(keytype, keysize, *args, &block) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ccipher_factory/symkey/symkey_generator.rb', line 32 def self.generate(keytype, keysize, *args, &block) raise SymKeyGeneratorError, "Unsupported symmetric key algo '#{keytype}'. Supported symmetric keys are: #{supported_symkey.keys.join(", ")}" if not supported_symkey.keys.include?(keytype) kc = Ccrypto::KeyConfig.new kc.algo = keytype kc.keysize = keysize ke = Ccrypto::AlgoFactory.engine(Ccrypto::KeyConfig) sk = ke.generate(kc) #SoftSymKey.new(keytype, keysize, SecureRandom.random_bytes(keysize/8)) SoftSymKey.new(keytype, keysize, sk) end |
.logger ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/ccipher_factory/symkey/symkey_generator.rb', line 61 def self.logger if @logger.nil? @logger = Tlogger.new @logger.tag = :symkey_gen end @logger end |
.supported_symkey ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/ccipher_factory/symkey/symkey_generator.rb', line 14 def self.supported_symkey #{ # aes: [[128, 256], [:cbc, :cfb, :ctr, :ofb, :gcm]], # chacha20: [[256],[:poly1305]], # blowfish: [[128],[:ecb, :cbc, :cfb, :ofb]], # camellia: [[128,192,256],[:ecb, :cbc, :cfb, :ofb, :ctr]], # aria: [[128,192,256],[:ecb, :cbc, :cfb, :ofb, :ctr, :gcm]] #} { aes: { keysize: [128, 192, 256], mode: [:cbc, :cfb, :ctr, :ofb, :gcm] }, chacha20: { keysize: [256], mode: [:poly1305] }, blowfish: { keysize: [128], mode: [:ecb, :cbc, :cfb, :ofb] }, camellia: { keysize: [128, 192, 256], mode: [:ecb, :cbc, :cfb, :ofb, :ctr] }, aria: { keysize: [128, 192, 256], mode: [:ecb, :cbc, :cfb, :ofb, :ctr, :gcm] } }.freeze end |