RPM crypto API.

RPM cryptography related APIs and constants. More...

## Typedefs

typedef struct DIGEST_CTX_s * | DIGEST_CTX
typedef enum rpmHashAlgo_e | rpmHashAlgo
| At this time these simply mirror PGPHASHALGO numbers. More...

## Enumerations

enum | rpmHashAlgo_e { RPM_HASH_MD5 = 1 , RPM_HASH_SHA1 = 2 , RPM_HASH_RIPEMD160 = 3 , RPM_HASH_MD2 = 5 , RPM_HASH_TIGER192 = 6 , RPM_HASH_HAVAL_5_160 = 7 , RPM_HASH_SHA256 = 8 , RPM_HASH_SHA384 = 9 , RPM_HASH_SHA512 = 10 , RPM_HASH_SHA224 = 11 }
| At this time these simply mirror PGPHASHALGO numbers. More...
enum | rpmDigestFlags_e { RPMDIGEST_NONE = 0 }
| Bit(s) to control digest operation. More...

## Functions

int | rpmInitCrypto (void)
| Perform cryptography initialization. More...
int | rpmFreeCrypto (void)
| Shutdown cryptography. More...
DIGEST_CTX | rpmDigestDup (DIGEST_CTX octx)
| Duplicate a digest context. More...
size_t | rpmDigestLength (int hashalgo)
| Obtain digest length in bytes. More...
DIGEST_CTX | rpmDigestInit (int hashalgo, rpmDigestFlags flags)
| Initialize digest. More...
int | rpmDigestUpdate (DIGEST_CTX ctx, const void *data, size_t len)
| Update context with next plain text buffer. More...
int | rpmDigestFinal (DIGEST_CTX ctx, void **datap, size_t *lenp, int asAscii)
| Return digest and destroy context. More...
rpmDigestBundle | rpmDigestBundleNew (void)
| Create a new digest bundle. More...
rpmDigestBundle | rpmDigestBundleFree (rpmDigestBundle bundle)
| Free a digest bundle and all contained digest contexts. More...
int | rpmDigestBundleAdd (rpmDigestBundle bundle, int algo, rpmDigestFlags flags)
| Add a new type of digest to a bundle. More...
int | rpmDigestBundleAddID (rpmDigestBundle bundle, int algo, int id, rpmDigestFlags flags)
| Add a new type of digest to a bundle. More...
int | rpmDigestBundleUpdate (rpmDigestBundle bundle, const void *data, size_t len)
| Update contexts within bundle with next plain text buffer. More...
int | rpmDigestBundleFinal (rpmDigestBundle bundle, int id, void **datap, size_t *lenp, int asAscii)
| Return digest from a bundle and destroy context, see rpmDigestFinal(). More...
DIGEST_CTX | rpmDigestBundleDupCtx (rpmDigestBundle bundle, int id)
| Duplicate a digest context from a bundle. More...

## Detailed Description

RPM cryptography related APIs and constants.

## Typedef Documentation

## DIGEST_CTX

typedef struct DIGEST_CTX_s* DIGEST_CTX

Definition at line 12 of file rpmcrypto.h.

## rpmHashAlgo

typedef enum rpmHashAlgo_e rpmHashAlgo

At this time these simply mirror PGPHASHALGO numbers.

Once they start * growing apart we'll need converters.

## Enumeration Type Documentation

## rpmDigestFlags_e

enum rpmDigestFlags_e

Bit(s) to control digest operation.

Enumerator
RPMDIGEST_NONE |

Definition at line 35 of file rpmcrypto.h.

## rpmHashAlgo_e

enum rpmHashAlgo_e

At this time these simply mirror PGPHASHALGO numbers.

Once they start * growing apart we'll need converters.

Enumerator
RPM_HASH_MD5 | MD5
RPM_HASH_SHA1 | SHA1
RPM_HASH_RIPEMD160 | RIPEMD160
RPM_HASH_MD2 | MD2
RPM_HASH_TIGER192 | TIGER192
RPM_HASH_HAVAL_5_160 | HAVAL-5-160
RPM_HASH_SHA256 | SHA256
RPM_HASH_SHA384 | SHA384
RPM_HASH_SHA512 | SHA512
RPM_HASH_SHA224 | SHA224

Definition at line 19 of file rpmcrypto.h.

## Function Documentation

## rpmDigestBundleAdd()

int rpmDigestBundleAdd | ( | rpmDigestBundle | bundle,
|  | int | algo,
|  | rpmDigestFlags | flags
| ) |  |

Add a new type of digest to a bundle.

Same as calling rpmDigestBundleAddID() with algo == id value.

Parameters

  bundle | digest bundle
  algo | type of digest
  flags | bit(s) to control digest operation

Returns
  0 on success

## rpmDigestBundleAddID()

int rpmDigestBundleAddID | ( | rpmDigestBundle | bundle,
|  | int | algo,
|  | int | id,
|  | rpmDigestFlags | flags
| ) |  |

Add a new type of digest to a bundle.

Parameters

  bundle | digest bundle
  algo | type of digest
  id | id of digest (arbitrary, must be > 0)
  flags | bit(s) to control digest operation

Returns
  0 on success

## rpmDigestBundleDupCtx()

DIGEST_CTX rpmDigestBundleDupCtx | ( | rpmDigestBundle | bundle,
|  | int | id
| ) |  |

Duplicate a digest context from a bundle.

Parameters

  bundle | digest bundle
  id | id of digest to dup

Returns
  duplicated digest context

## rpmDigestBundleFinal()

int rpmDigestBundleFinal | ( | rpmDigestBundle | bundle,
|  | int | id,
|  | void ** | datap,
|  | size_t * | lenp,
|  | int | asAscii
| ) |  |

Return digest from a bundle and destroy context, see rpmDigestFinal().

Parameters

  | bundle | digest bundle
  | id | id of digest to return
  [out] | datap | address of returned digest
  [out] | lenp | address of digest length
  | asAscii | return digest as ascii string?

Returns
  0 on success

## rpmDigestBundleFree()

rpmDigestBundle rpmDigestBundleFree | ( | rpmDigestBundle | bundle | ) |

Free a digest bundle and all contained digest contexts.

Parameters

  bundle | digest bundle

Returns
  NULL always

## rpmDigestBundleNew()

rpmDigestBundle rpmDigestBundleNew | ( | void |  | ) |

Create a new digest bundle.

Returns
  New digest bundle

## rpmDigestBundleUpdate()

int rpmDigestBundleUpdate | ( | rpmDigestBundle | bundle,
|  | const void * | data,
|  | size_t | len
| ) |  |

Update contexts within bundle with next plain text buffer.

Parameters

  bundle | digest bundle
  data | next data buffer
  len | no. bytes of data

Returns
  0 on success

## rpmDigestDup()

DIGEST_CTX rpmDigestDup | ( | DIGEST_CTX | octx | ) |

Duplicate a digest context.

Parameters

  octx | existing digest context

Returns
  duplicated digest context

## rpmDigestFinal()

int rpmDigestFinal | ( | DIGEST_CTX | ctx,
|  | void ** | datap,
|  | size_t * | lenp,
|  | int | asAscii
| ) |  |

Return digest and destroy context.

Final wrapup - pad to 64-byte boundary with the bit pattern 1 0* (64-bit count of bits processed, MSB-first)

Parameters

  | ctx | digest context
  [out] | datap | address of returned digest
  [out] | lenp | address of digest length
  | asAscii | return digest as ascii string?

Returns
  0 on success

## rpmDigestInit()

DIGEST_CTX rpmDigestInit | ( | int | hashalgo,
|  | rpmDigestFlags | flags
| ) |  |

Initialize digest.

Set bit count to 0 and buffer to mysterious initialization constants.

Parameters

  hashalgo | type of digest
  flags | bit(s) to control digest operation

Returns
  digest context

## rpmDigestLength()

size_t rpmDigestLength | ( | int | hashalgo | ) |

Obtain digest length in bytes.

Parameters

  hashalgo | type of digest

Returns
  digest length, zero on invalid algorithm

## rpmDigestUpdate()

int rpmDigestUpdate | ( | DIGEST_CTX | ctx,
|  | const void * | data,
|  | size_t | len
| ) |  |

Update context with next plain text buffer.

Parameters

  ctx | digest context
  data | next data buffer
  len | no. bytes of data

Returns
  0 on success

## rpmFreeCrypto()

int rpmFreeCrypto | ( | void |  | ) |

Shutdown cryptography.

## rpmInitCrypto()

int rpmInitCrypto | ( | void |  | ) |

Perform cryptography initialization.

It must be called before any cryptography can be used within rpm. It's not normally necessary to call it directly as it's called in general rpm initialization routines.

Returns
  0 on success, -1 on failure