Method: PKCS11::Session#digest

Defined in:
lib/pkcs11/session.rb

#digest(mechanism, data = nil) {|PKCS11::Session::DigestCipher| ... } ⇒ String

Convenience method for the #C_DigestInit, #C_DigestUpdate, #C_DigestKey, #C_DigestFinal call flow.

Examples:

digest_string = session.digest( :SHA_1 ) do |cipher|
  cipher.update("key prefix")
  cipher.digest_key(some_key)
end

Parameters:

  • mechanism (Hash, Symbol, Integer, PKCS11::CK_MECHANISM)

    used mechanism

  • data (String) (defaults to: nil)

    data to digest

Yields:

Returns:

  • (String)

    final message digest

See Also:



436
437
438
439
440
441
442
443
444
445
446
447
448
449
# File 'lib/pkcs11/session.rb', line 436

def digest(mechanism, data=nil, &block)
  C_DigestInit(mechanism)
  if block_given?
    raise "data not nil, but block given" if data
    yield DigestCipher.new(proc{|data_|
      C_DigestUpdate(data_)
    }, proc{|key_|
      C_DigestKey(key_)
    })
    C_DigestFinal()
  else
    C_Digest(data)
  end
end