4 /** \ingroup rpmkeyring
5 * \file rpmio/rpmkeyring.h
8 #include <rpm/rpmtypes.h>
9 #include <rpm/rpmpgp.h>
15 /** \ingroup rpmkeyring
16 * Create a new, empty keyring
17 * @return new keyring handle
19 rpmKeyring rpmKeyringNew(void);
21 /** \ingroup rpmkeyring
22 * Free keyring and the keys within it
25 rpmKeyring rpmKeyringFree(rpmKeyring keyring);
27 /** \ingroup rpmkeyring
28 * Add a public key to keyring.
29 * @param keyring keyring handle
30 * @param key pubkey handle
31 * @return 0 on success, -1 on error, 1 if key already present
33 int rpmKeyringAddKey(rpmKeyring keyring, rpmPubkey key);
35 /** \ingroup rpmkeyring
36 * Perform keyring lookup for a key matching a signature
37 * @param keyring keyring handle
38 * @param sig OpenPGP packet container of signature
39 * @return RPMRC_OK if found, RPMRC_NOKEY otherwise
41 rpmRC rpmKeyringLookup(rpmKeyring keyring, pgpDig sig);
43 /** \ingroup rpmkeyring
44 * Perform combined keyring lookup and signature verification
45 * @param keyring keyring handle
46 * @param sig OpenPGP signature parameters
47 * @param ctx signature hash context
48 * @return RPMRC_OK / RPMRC_FAIL / RPMRC_NOKEY
50 rpmRC rpmKeyringVerifySig(rpmKeyring keyring, pgpDigParams sig, DIGEST_CTX ctx);
52 /** \ingroup rpmkeyring
53 * Reference a keyring.
54 * @param keyring keyring handle
55 * @return new keyring reference
57 rpmKeyring rpmKeyringLink(rpmKeyring keyring);
59 /** \ingroup rpmkeyring
60 * Create a new rpmPubkey from OpenPGP packet
61 * @param pkt OpenPGP packet data
62 * @param pktlen Data length
63 * @return new pubkey handle
65 rpmPubkey rpmPubkeyNew(const uint8_t *pkt, size_t pktlen);
67 /** \ingroup rpmkeyring
68 * Create a new rpmPubkey from ASCII-armored pubkey file
69 * @param filename Path to pubkey file
70 * @return new pubkey handle
72 rpmPubkey rpmPubkeyRead(const char *filename);
74 /** \ingroup rpmkeyring
76 * @param key Pubkey to free
79 rpmPubkey rpmPubkeyFree(rpmPubkey key);
81 /** \ingroup rpmkeyring
84 * @return new pubkey reference
86 rpmPubkey rpmPubkeyLink(rpmPubkey key);
88 /** \ingroup rpmkeyring
89 * Parse OpenPGP pubkey parameters.
91 * @return parsed output of pubkey packet parameters
93 pgpDig rpmPubkeyDig(rpmPubkey key);
95 /** \ingroup rpmkeyring
96 * Return base64 encoding of pubkey
98 * @return base64 encoded pubkey (malloced), NULL on error
100 char * rpmPubkeyBase64(rpmPubkey key);
105 #endif /* _RPMKEYDB_H */