glibmm: Glib::Checksum Class Reference

Computes the checksum for data. More...

#include <glibmm/checksum.h>

List of all members.

Public Types

enum  ChecksumType {

  CHECKSUM_MD5,

  CHECKSUM_SHA1,

  CHECKSUM_SHA256

}

Public Member Functions

 Checksum ()
 Checksum (GChecksum* castitem, bool make_a_copy=false)
 Checksum (const Checksum& src)
Checksumoperator= (const Checksum& src)
 ~Checksum ()
GChecksum* gobj ()
const GChecksum* gobj () const
GChecksum* gobj_copy () const
 Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.

 Checksum (ChecksumType checksum_type)
 Creates a new Checksum, using the checksum algorithm checksum_type.

 operator bool () const
 Returns true if the Checksum object is valid.

void reset ()
 Resets the state of the checksum back to its initial state.

void update (const guchar* data, gsize length)
 Feeds data into an existing Checksum.

void update (const std::string& data)
 Feeds data into an existing Checksum.

void get_digest (guint8* buffer, gsize* digest_len) const
 Gets the digest from checksum as a raw binary vector and places it into buffer.

std::string get_string () const
 Gets the digest as an hexadecimal string.

Static Public Member Functions

static std::string compute_checksum (ChecksumType type, const guchar* data, gsize length)
 Computes the checksum for a binary data of length.

static std::string compute_checksum (ChecksumType type, const std::string& str)
 Computes the checksum of a string.

static gssize get_length (ChecksumType checksum_type)
 Gets the length in bytes of digests of type checksum_type.

Protected Attributes

GChecksum* gobject_

Related Functions

(Note that these are not member functions.)

Glib::Checksum wrap (GChecksum* object, bool take_copy=false)
 A Glib::wrap() method for this object.


Detailed Description

Computes the checksum for data.

This is a generic API for computing checksums (or "digests") for a sequence of arbitrary bytes, using various hashing algorithms like MD5, SHA-1 and SHA-256. Checksums are commonly used in various environments and specifications.

glibmm supports incremental checksums by calling update() as long as there's data available and then using get_string() or get_digest() to compute the checksum and return it either as a string in hexadecimal form, or as a raw sequence of bytes. To compute the checksum for binary blobs and NULL-terminated strings in one go, use the static compute_checksum() convenience functions().

Since glibmm 2.16:

Member Enumeration Documentation

Enumerator:
CHECKSUM_MD5 
CHECKSUM_SHA1 
CHECKSUM_SHA256 

Constructor & Destructor Documentation

Glib::Checksum::Checksum ( )
Glib::Checksum::Checksum ( GChecksum *  castitem,
bool  make_a_copy = false 
) [explicit]
Glib::Checksum::Checksum ( const Checksum src)
Glib::Checksum::~Checksum ( )
Glib::Checksum::Checksum ( ChecksumType  checksum_type) [explicit]

Creates a new Checksum, using the checksum algorithm checksum_type.

If the checksum_type is not known, then operator bool() will return false.

Parameters:
typechecksum type, one of defined above.

Member Function Documentation

static std::string Glib::Checksum::compute_checksum ( ChecksumType  type,
const guchar *  data,
gsize  length 
) [static]

Computes the checksum for a binary data of length.

This is a convenience wrapper for g_checksum_new(), g_checksum_get_string() and g_checksum_free().

The hexadecimal string returned will be in lower case.

Since glibmm 2.16:
Parameters:
checksum_typeA ChecksumType.
dataBinary blob to compute the digest of.
lengthLength of data.
Returns:
The digest of the binary data as a string in hexadecimal. The returned string should be freed with g_free() when done using it.
static std::string Glib::Checksum::compute_checksum ( ChecksumType  type,
const std::string str 
) [static]

Computes the checksum of a string.

Parameters:
checksum_typeA ChecksumType
strThe string to compute the checksum of.
Returns:
The checksum as a hexadecimal string.
void Glib::Checksum::get_digest ( guint8 *  buffer,
gsize *  digest_len 
) const

Gets the digest from checksum as a raw binary vector and places it into buffer.

The size of the digest depends on the type of checksum.

Once this function has been called, the Checksum is closed and can no longer be updated with g_checksum_update().

Since glibmm 2.16:
Parameters:
bufferOutput buffer.
digest_lenAn inout parameter. The caller initializes it to the size of buffer. After the call it contains the length of the digest.
static gssize Glib::Checksum::get_length ( ChecksumType  checksum_type) [static]

Gets the length in bytes of digests of type checksum_type.

Parameters:
checksum_typeA ChecksumType.
Returns:
The checksum length, or -1 if checksum_type is not supported.
std::string Glib::Checksum::get_string ( ) const

Gets the digest as an hexadecimal string.

Once this function has been called the Checksum can no longer be updated with g_checksum_update().

The hexadecimal characters will be lower case.

Since glibmm 2.16:
Returns:
The hexadecimal representation of the checksum. The returned string is owned by the checksum and should not be modified or freed.
GChecksum* Glib::Checksum::gobj ( ) [inline]
const GChecksum* Glib::Checksum::gobj ( ) const [inline]
GChecksum* Glib::Checksum::gobj_copy ( ) const

Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.

Glib::Checksum::operator bool ( ) const

Returns true if the Checksum object is valid.

This will return false, for instance, if an unsupported checksum type was provided to the constructor.

Checksum& Glib::Checksum::operator= ( const Checksum src)
void Glib::Checksum::reset ( )

Resets the state of the checksum back to its initial state.

Since glibmm 2.18:
void Glib::Checksum::update ( const std::string data)

Feeds data into an existing Checksum.

The checksum must still be open, that is get_string() or get_digest() must not have been called on the checksum.

Parameters:
dataBuffer used to compute the checksum
void Glib::Checksum::update ( const guchar *  data,
gsize  length 
)

Feeds data into an existing Checksum.

The checksum must still be open, that is g_checksum_get_string() or g_checksum_get_digest() must not have been called on checksum.

Since glibmm 2.16:
Parameters:
dataBuffer used to compute the checksum.
lengthSize of the buffer, or -1 if it is a null-terminated string.

Friends And Related Function Documentation

Glib::Checksum wrap ( GChecksum *  object,
bool  take_copy = false 
) [related]

A Glib::wrap() method for this object.

Parameters:
objectThe C instance.
take_copyFalse if the result should take ownership of the C instance. True if it should take a new copy or ref.
Returns:
A C++ instance that wraps this C instance.

Member Data Documentation

GChecksum* Glib::Checksum::gobject_ [protected]