4 /** \ingroup rpmkeyring
5 * \file rpmio/rpmkeyring.h
10 #include <rpm/rpmtypes.h>
11 #include <rpm/rpmpgp.h>
17 /** \ingroup rpmkeyring
18 * Create a new, empty keyring
19 * @return new keyring handle
21 rpmKeyring rpmKeyringNew(void);
23 /** \ingroup rpmkeyring
24 * Free keyring and the keys within it
27 rpmKeyring rpmKeyringFree(rpmKeyring keyring);
29 /** \ingroup rpmkeyring
30 * Add a public key to keyring.
31 * @param keyring keyring handle
32 * @param key pubkey handle
33 * @return 0 on success, -1 on error, 1 if key already present
35 int rpmKeyringAddKey(rpmKeyring keyring, rpmPubkey key);
37 /** \ingroup rpmkeyring
38 * Perform keyring lookup for a key matching a signature
39 * @param keyring keyring handle
40 * @param sig OpenPGP packet container of signature
41 * @return RPMRC_OK if found, RPMRC_NOKEY otherwise
43 rpmRC rpmKeyringLookup(rpmKeyring keyring, pgpDig sig);
45 /** \ingroup rpmkeyring
46 * Perform combined keyring lookup and signature verification
47 * @param keyring keyring handle
48 * @param sig OpenPGP signature parameters
49 * @param ctx signature hash context
50 * @return RPMRC_OK / RPMRC_FAIL / RPMRC_NOKEY
52 rpmRC rpmKeyringVerifySig(rpmKeyring keyring, pgpDigParams sig, DIGEST_CTX ctx);
54 /** \ingroup rpmkeyring
55 * Reference a keyring.
56 * @param keyring keyring handle
57 * @return new keyring reference
59 rpmKeyring rpmKeyringLink(rpmKeyring keyring);
61 /** \ingroup rpmkeyring
62 * Create a new rpmPubkey from OpenPGP packet
63 * @param pkt OpenPGP packet data
64 * @param pktlen Data length
65 * @return new pubkey handle
67 rpmPubkey rpmPubkeyNew(const uint8_t *pkt, size_t pktlen);
69 /** \ingroup rpmkeyring
70 * Return array of subkeys belonging to maikey
71 * param mainkey main rpmPubkey
72 * param count count of returned subkeys
73 * @return an array of subkey's handles
75 rpmPubkey *rpmGetSubkeys(rpmPubkey mainkey, int *count);
77 /** \ingroup rpmkeyring
78 * Create a new rpmPubkey from ASCII-armored pubkey file
79 * @param filename Path to pubkey file
80 * @return new pubkey handle
82 rpmPubkey rpmPubkeyRead(const char *filename);
84 /** \ingroup rpmkeyring
86 * @param key Pubkey to free
89 rpmPubkey rpmPubkeyFree(rpmPubkey key);
91 /** \ingroup rpmkeyring
94 * @return new pubkey reference
96 rpmPubkey rpmPubkeyLink(rpmPubkey key);
98 /** \ingroup rpmkeyring
99 * Parse OpenPGP pubkey parameters.
101 * @return parsed output of pubkey packet parameters
103 pgpDig rpmPubkeyDig(rpmPubkey key);
105 /** \ingroup rpmkeyring
106 * Return base64 encoding of pubkey
108 * @return base64 encoded pubkey (malloced), NULL on error
110 char * rpmPubkeyBase64(rpmPubkey key);
112 /** \ingroup rpmkeyring
113 * Return pgp params of key
115 * @return pgp params, NULL on error
117 pgpDigParams rpmPubkeyPgpDigParams(rpmPubkey key);
122 #endif /* _RPMKEYDB_H */