Module: CcipherFactory::SymKeySigner::SymKeyVerify

Includes:
TR::CondUtils
Defined in:
lib/ccipher_factory/symkey_cipher/symkey_verify.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#verification_keyObject

Returns the value of attribute verification_key.



10
11
12
# File 'lib/ccipher_factory/symkey_cipher/symkey_verify.rb', line 10

def verification_key
  @verification_key
end

Instance Method Details

#loggerObject



65
66
67
68
69
70
71
# File 'lib/ccipher_factory/symkey_cipher/symkey_verify.rb', line 65

def logger
  if @logger.nil?
    @logger = Tlogger.new
    @logger.tag = :symkey_ver
  end
  @logger
end

#verify_finalObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/ccipher_factory/symkey_cipher/symkey_verify.rb', line 48

def verify_final

  sign = @hmac.hmac_final

  comp = Ccrypto::UtilFactory.instance(:comparator)
  res = comp.is_equal?(sign, @sign)
  #res = (sign == @sign)

  if not res
    logger.tdebug :symkey_ver, "Generated : #{sign}"
    logger.tdebug :symkey_ver, "Enveloped : #{@sign}"
  end

  res

end

#verify_init(opts = { }, &block) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/ccipher_factory/symkey_cipher/symkey_verify.rb', line 11

def verify_init(opts = {  }, &block)

  if block
    instance_eval(&block)
    verify_final
  else
    self
  end

end

#verify_update_data(val) ⇒ Object



44
45
46
# File 'lib/ccipher_factory/symkey_cipher/symkey_verify.rb', line 44

def verify_update_data(val)
  @hmac.hmac_update(val) 
end

#verify_update_meta(meta) ⇒ Object

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/ccipher_factory/symkey_cipher/symkey_verify.rb', line 22

def verify_update_meta(meta)

  ts = BinStruct.instance.struct_from_bin(meta)
  digestAlgo = BTag.value_constant(ts.digest_algo)
  @sign = ts.signature

  raise SymKeySignerError, "Verification key must be given" if is_empty?(@verification_key)

  raise SymKeySignerError, "Symmetric key type is expected" if not @verification_key.is_a?(SymKey)

  raise SymKeySignerError, "Given digest algo '#{digestAlgo}' is not supported" if not Digest::SupportedDigest.instance.is_supported?(digestAlgo)

  hconf = Ccrypto::HMACConfig.new
  hconf.key = Ccrypto::SecretKey.new(@verification_key.keytype, @verification_key.key)
  hconf.digest = digestAlgo

  @hmac = Ccrypto::AlgoFactory.engine(hconf)

  #@hmac = OpenSSL::HMAC.new(@verification_key.key, OpenSSL::Digest.new(Digest.to_digest_string(digestAlgo)))

end