Sha256: a4a29e9da4e2724cddc14f162f0eeb1a7dd273371e491c718d6e2605c7ba6649

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents



module CcipherFactory
  module SymKeySigner

    module SymKeyVerify
      include TR::CondUtils

      attr_accessor :verification_key
      def verify_init(opts = {  }, &block)

        if block
          instance_eval(&block)
          verify_final
        else
          self
        end

      end

      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

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

      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

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

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ccipher_factory-0.1.2 lib/ccipher_factory/symkey_cipher/symkey_verify.rb
ccipher_factory-0.1.1 lib/ccipher_factory/symkey_cipher/symkey_verify.rb
ccipher_factory-0.1.0 lib/ccipher_factory/symkey_cipher/symkey_verify.rb