Class: CcipherBox::MemVault

Inherits:
Object
  • Object
show all
Includes:
TR::CondUtils
Defined in:
lib/ccipher_box/mem_vault.rb

Overview

Collection of crypto keys in a vault to be used by application. Application can register a key that tie with a name here and later use the name to encrypt a data This only store keys that will be kept in memory Not meant to be persistance

Defined Under Namespace

Classes: MemVaultException

Instance Method Summary collapse

Constructor Details

#initialize(ringName) ⇒ MemVault

Returns a new instance of MemVault.



18
19
20
# File 'lib/ccipher_box/mem_vault.rb', line 18

def initialize(ringName)
  @ringName = ringName
end

Instance Method Details

#decrypt(cipher) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/ccipher_box/mem_vault.rb', line 42

def decrypt(cipher)
  keyID = BinStruct.instance.struct_fields_from_bin(cipher, 2)[0]  
  keyID = MemKey.to_KeyID(keyID)

  foundKey = nil
  vault.values.each do |k|
    if k.keyID == keyID
      foundKey = k
      break
    end
  end

  if not_empty?(foundKey)
    logger.debug "Found decryption key with label #{vault.invert[foundKey]}"
    foundKey.decrypt(cipher)
  else
    raise KeyNotRegistered, "Encryption key for this cipher not registered (KeyID : #{keyID})"
  end

end

#deregister(name) ⇒ Object



28
29
30
31
# File 'lib/ccipher_box/mem_vault.rb', line 28

def deregister(name)
  vault.delete(name)
  self
end

#derive(name) ⇒ Object



63
64
65
# File 'lib/ccipher_box/mem_vault.rb', line 63

def derive(name)
  vault[name].derive
end

#encrypt(name, data, &block) ⇒ Object



37
38
39
40
# File 'lib/ccipher_box/mem_vault.rb', line 37

def encrypt(name, data, &block)
  key = vault[name]  
  key.encrypt(data, &block)
end

#get_key(name) ⇒ Object



67
68
69
# File 'lib/ccipher_box/mem_vault.rb', line 67

def get_key(name)
  vault[name]
end

#is_registered?(name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/ccipher_box/mem_vault.rb', line 33

def is_registered?(name)
  vault.keys.include?(name)
end

#register(name, key) ⇒ Object



22
23
24
25
26
# File 'lib/ccipher_box/mem_vault.rb', line 22

def register(name, key)
  @dataConv = Ccrypto::UtilFactory.instance(:data_conversion)
  vault[name] = MemKey.new(@ringName, key, name)
  self
end