123 lines
3.0 KiB
C
123 lines
3.0 KiB
C
#ifndef _RPMKEYRING_H
|
|
#define _RPMKEYRING_H
|
|
|
|
/** \ingroup rpmkeyring
|
|
* \file rpmio/rpmkeyring.h
|
|
*
|
|
* RPM keyring API
|
|
*/
|
|
|
|
#include <rpm/rpmtypes.h>
|
|
#include <rpm/rpmpgp.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Create a new, empty keyring
|
|
* @return new keyring handle
|
|
*/
|
|
rpmKeyring rpmKeyringNew(void);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Free keyring and the keys within it
|
|
* @return NULL always
|
|
*/
|
|
rpmKeyring rpmKeyringFree(rpmKeyring keyring);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Add a public key to keyring.
|
|
* @param keyring keyring handle
|
|
* @param key pubkey handle
|
|
* @return 0 on success, -1 on error, 1 if key already present
|
|
*/
|
|
int rpmKeyringAddKey(rpmKeyring keyring, rpmPubkey key);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Perform keyring lookup for a key matching a signature
|
|
* @param keyring keyring handle
|
|
* @param sig OpenPGP packet container of signature
|
|
* @return RPMRC_OK if found, RPMRC_NOKEY otherwise
|
|
*/
|
|
rpmRC rpmKeyringLookup(rpmKeyring keyring, pgpDig sig);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Perform combined keyring lookup and signature verification
|
|
* @param keyring keyring handle
|
|
* @param sig OpenPGP signature parameters
|
|
* @param ctx signature hash context
|
|
* @return RPMRC_OK / RPMRC_FAIL / RPMRC_NOKEY
|
|
*/
|
|
rpmRC rpmKeyringVerifySig(rpmKeyring keyring, pgpDigParams sig, DIGEST_CTX ctx);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Reference a keyring.
|
|
* @param keyring keyring handle
|
|
* @return new keyring reference
|
|
*/
|
|
rpmKeyring rpmKeyringLink(rpmKeyring keyring);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Create a new rpmPubkey from OpenPGP packet
|
|
* @param pkt OpenPGP packet data
|
|
* @param pktlen Data length
|
|
* @return new pubkey handle
|
|
*/
|
|
rpmPubkey rpmPubkeyNew(const uint8_t *pkt, size_t pktlen);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Return array of subkeys belonging to maikey
|
|
* param mainkey main rpmPubkey
|
|
* param count count of returned subkeys
|
|
* @return an array of subkey's handles
|
|
*/
|
|
rpmPubkey *rpmGetSubkeys(rpmPubkey mainkey, int *count);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Create a new rpmPubkey from ASCII-armored pubkey file
|
|
* @param filename Path to pubkey file
|
|
* @return new pubkey handle
|
|
*/
|
|
rpmPubkey rpmPubkeyRead(const char *filename);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Free a pubkey.
|
|
* @param key Pubkey to free
|
|
* @return NULL always
|
|
*/
|
|
rpmPubkey rpmPubkeyFree(rpmPubkey key);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Reference a pubkey.
|
|
* @param key Pubkey
|
|
* @return new pubkey reference
|
|
*/
|
|
rpmPubkey rpmPubkeyLink(rpmPubkey key);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Parse OpenPGP pubkey parameters.
|
|
* @param key Pubkey
|
|
* @return parsed output of pubkey packet parameters
|
|
*/
|
|
pgpDig rpmPubkeyDig(rpmPubkey key);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Return base64 encoding of pubkey
|
|
* @param key Pubkey
|
|
* @return base64 encoded pubkey (malloced), NULL on error
|
|
*/
|
|
char * rpmPubkeyBase64(rpmPubkey key);
|
|
|
|
/** \ingroup rpmkeyring
|
|
* Return pgp params of key
|
|
* @param key Pubkey
|
|
* @return pgp params, NULL on error
|
|
*/
|
|
pgpDigParams rpmPubkeyPgpDigParams(rpmPubkey key);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* _RPMKEYDB_H */
|