# svn_checksum.h File Reference

Subversion checksum routines. More...

`#include <apr.h>`
`#include <apr_pools.h>`
`#include "svn_types.h"`

Go to the source code of this file.

## Data Structures
struct | svn_checksum_t
| A generic checksum representation. More...
## Typedefs
typedef enum svn_checksum_kind_t | svn_checksum_kind_t
| Various types of checksums.
typedef struct svn_checksum_t | svn_checksum_t
| A generic checksum representation.
typedef struct svn_checksum_ctx_t | svn_checksum_ctx_t
| Opaque type for creating checksums of data.
## Enumerations
enum | svn_checksum_kind_t { svn_checksum_md5, svn_checksum_sha1 }
| Various types of checksums. More...
## Functions
svn_checksum_t * | svn_checksum_create (svn_checksum_kind_t kind, apr_pool_t *pool)
| Return a new checksum structure of type kind, initialized to the all- zeros value, allocated in pool.
svn_error_t * | svn_checksum_clear (svn_checksum_t *checksum)
| Set checksum->digest to all zeros, which, by convention, matches all other checksums.
svn_boolean_t | svn_checksum_match (const svn_checksum_t *checksum1, const svn_checksum_t *checksum2)
| Compare checksums checksum1 and checksum2.
svn_checksum_t * | svn_checksum_dup (const svn_checksum_t *checksum, apr_pool_t *pool)
| Return a deep copy of checksum, allocated in pool.
const char * | svn_checksum_to_cstring_display (const svn_checksum_t *checksum, apr_pool_t *pool)
| Return the hex representation of checksum, allocating the string in pool.
const char * | svn_checksum_to_cstring (const svn_checksum_t *checksum, apr_pool_t *pool)
| Return the hex representation of checksum, allocating the string in pool.
const char * | svn_checksum_serialize (const svn_checksum_t *checksum, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return a serialized representation of checksum, allocated in result_pool.
svn_error_t * | svn_checksum_deserialize (const svn_checksum_t **checksum, const char *data, apr_pool_t *result_pool, apr_pool_t *scratch_pool)
| Return checksum from the serialized format at data.
svn_error_t * | svn_checksum_parse_hex (svn_checksum_t **checksum, svn_checksum_kind_t kind, const char *hex, apr_pool_t *pool)
| Parse the hex representation hex of a checksum of kind kind and set *checksum to the result, allocating in pool.
svn_error_t * | svn_checksum (svn_checksum_t **checksum, svn_checksum_kind_t kind, const void *data, apr_size_t len, apr_pool_t *pool)
| Return in *checksum the checksum of type kind for the bytes beginning at data, and going for len.
svn_checksum_t * | svn_checksum_empty_checksum (svn_checksum_kind_t kind, apr_pool_t *pool)
| Return in pool a newly allocated checksum populated with the checksum of type kind for the empty string.
svn_checksum_ctx_t * | svn_checksum_ctx_create (svn_checksum_kind_t kind, apr_pool_t *pool)
| Create a new `svn_checksum_ctx_t` structure, allocated from pool for calculating checksums of type kind.
svn_error_t * | svn_checksum_update (svn_checksum_ctx_t *ctx, const void *data, apr_size_t len)
| Update the checksum represented by ctx, with len bytes starting at data.
svn_error_t * | svn_checksum_final (svn_checksum_t **checksum, const svn_checksum_ctx_t *ctx, apr_pool_t *pool)
| Finalize the checksum used when creating ctx, and put the resultant checksum in *checksum, allocated in pool.
apr_size_t | svn_checksum_size (const svn_checksum_t *checksum)
| Return the digest size of checksum.
svn_error_t * | svn_checksum_mismatch_err (const svn_checksum_t *expected, const svn_checksum_t *actual, apr_pool_t *scratch_pool, const char *fmt,...)
| Return an error of type SVN_ERR_CHECKSUM_MISMATCH for actual and expected checksums which do not match.
svn_checksum_t * | svn_checksum__from_digest (const unsigned char *digest, svn_checksum_kind_t kind, apr_pool_t *result_pool)
| Internal function for creating a checksum from a binary digest.

## Detailed Description

Subversion checksum routines.

Definition in file svn_checksum.h.

## Typedef Documentation

typedef enum svn_checksum_kind_t svn_checksum_kind_t

Various types of checksums.

Since:
  New in 1.6.

typedef struct svn_checksum_t svn_checksum_t

A generic checksum representation.

Since:
  New in 1.6.

## Enumeration Type Documentation

enum svn_checksum_kind_t

Various types of checksums.

Since:
  New in 1.6.

Enumerator:

  svn_checksum_md5 | The checksum is (or should be set to) an MD5 checksum.
  svn_checksum_sha1 | The checksum is (or should be set to) a SHA1 checksum.

Definition at line 45 of file svn_checksum.h.

## Function Documentation

svn_error_t* svn_checksum | ( | svn_checksum_t ** | checksum,
|  | svn_checksum_kind_t | kind,
|  | const void * | data,
|  | apr_size_t | len,
|  | apr_pool_t * | pool |
| ) |  |  |

Return in *checksum the checksum of type kind for the bytes beginning at data, and going for len.

*checksum is allocated in pool.

Since:
  New in 1.6.

svn_checksum_t* svn_checksum__from_digest | ( | const unsigned char * | digest,
|  | svn_checksum_kind_t | kind,
|  | apr_pool_t * | result_pool |
| ) |  |  |

Internal function for creating a checksum from a binary digest.

Since:
  New in 1.6

svn_error_t* svn_checksum_clear | ( | svn_checksum_t * | checksum | ) |

Set checksum->digest to all zeros, which, by convention, matches all other checksums.

Since:
  New in 1.6.

svn_checksum_t* svn_checksum_create | ( | svn_checksum_kind_t | kind,
|  | apr_pool_t * | pool |
| ) |  |  |

Return a new checksum structure of type kind, initialized to the all- zeros value, allocated in pool.

Since:
  New in 1.6.

svn_checksum_ctx_t* svn_checksum_ctx_create | ( | svn_checksum_kind_t | kind,
|  | apr_pool_t * | pool |
| ) |  |  |

Create a new `svn_checksum_ctx_t` structure, allocated from pool for calculating checksums of type kind.

See also:
  svn_checksum_final()

Since:
  New in 1.6.

svn_error_t* svn_checksum_deserialize | ( | const svn_checksum_t ** | checksum,
|  | const char * | data,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool |
| ) |  |  |

Return checksum from the serialized format at data.

The checksum will be allocated in result_pool, with any temporary allocations performed in scratch_pool.

Since:
  New in 1.7.

svn_checksum_t* svn_checksum_dup | ( | const svn_checksum_t * | checksum,
|  | apr_pool_t * | pool |
| ) |  |  |

Return a deep copy of checksum, allocated in pool.

Since:
  New in 1.6.

svn_checksum_t* svn_checksum_empty_checksum | ( | svn_checksum_kind_t | kind,
|  | apr_pool_t * | pool |
| ) |  |  |

Return in pool a newly allocated checksum populated with the checksum of type kind for the empty string.

Since:
  New in 1.6.

svn_error_t* svn_checksum_final | ( | svn_checksum_t ** | checksum,
|  | const svn_checksum_ctx_t * | ctx,
|  | apr_pool_t * | pool |
| ) |  |  |

Finalize the checksum used when creating ctx, and put the resultant checksum in *checksum, allocated in pool.

Since:
  New in 1.6.

svn_boolean_t svn_checksum_match | ( | const svn_checksum_t * | checksum1,
|  | const svn_checksum_t * | checksum2 |
| ) |  |  |

Compare checksums checksum1 and checksum2.

If their kinds do not match or if neither is all zeros, and their content does not match, then return FALSE; else return TRUE.

Since:
  New in 1.6.

svn_error_t* svn_checksum_mismatch_err | ( | const svn_checksum_t * | expected,
|  | const svn_checksum_t * | actual,
|  | apr_pool_t * | scratch_pool,
|  | const char * | fmt,
|  |  | ... |
| ) |  |  |

Return an error of type SVN_ERR_CHECKSUM_MISMATCH for actual and expected checksums which do not match.

Use fmt, and the following parameters to populate the error message.

Note:
  This function does not actually check for the mismatch, it just constructs the error.

scratch_pool is used for temporary allocations; the returned error will be allocated in its own pool (as is typical).

Since:
  New in 1.7.

svn_error_t* svn_checksum_parse_hex | ( | svn_checksum_t ** | checksum,
|  | svn_checksum_kind_t | kind,
|  | const char * | hex,
|  | apr_pool_t * | pool |
| ) |  |  |

Parse the hex representation hex of a checksum of kind kind and set *checksum to the result, allocating in pool.

If hex is `NULL` or is the all-zeros checksum, then set *checksum to `NULL`.

Since:
  New in 1.6.

const char* svn_checksum_serialize | ( | const svn_checksum_t * | checksum,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool |
| ) |  |  |

Return a serialized representation of checksum, allocated in result_pool.

Temporary allocations are performed in scratch_pool.

Note that checksum may not be NULL.

Since:
  New in 1.7.

apr_size_t svn_checksum_size | ( | const svn_checksum_t * | checksum | ) |

Return the digest size of checksum.

Since:
  New in 1.6.

const char* svn_checksum_to_cstring | ( | const svn_checksum_t * | checksum,
|  | apr_pool_t * | pool |
| ) |  |  |

Return the hex representation of checksum, allocating the string in pool.

If checksum->digest is all zeros (that is, 0, not '0') then return NULL. In 1.7+, checksum may be NULL and NULL will be returned in that case.

Since:
  New in 1.6.

Note:
  Passing NULL for checksum in 1.6 will cause a segfault.

const char* svn_checksum_to_cstring_display | ( | const svn_checksum_t * | checksum,
|  | apr_pool_t * | pool |
| ) |  |  |

Return the hex representation of checksum, allocating the string in pool.

Since:
  New in 1.6.

svn_error_t* svn_checksum_update | ( | svn_checksum_ctx_t * | ctx,
|  | const void * | data,
|  | apr_size_t | len |
| ) |  |  |

Update the checksum represented by ctx, with len bytes starting at data.

Since:
  New in 1.6.

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines