Fix Werrors with GCC-14.1.0
[platform/upstream/rpm.git] / rpmio / rpmkeyring.h
1 #ifndef _RPMKEYRING_H
2 #define _RPMKEYRING_H
3
4 /** \ingroup rpmkeyring
5  * \file rpmio/rpmkeyring.h
6  *
7  * RPM keyring API
8  */
9
10 #include <rpm/rpmtypes.h>
11 #include <rpm/rpmpgp.h>
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 /** \ingroup rpmkeyring
18  * Create a new, empty keyring
19  * @return      new keyring handle
20  */
21 rpmKeyring rpmKeyringNew(void);
22
23 /** \ingroup rpmkeyring
24  * Free keyring and the keys within it
25  * @return      NULL always
26  */
27 rpmKeyring rpmKeyringFree(rpmKeyring keyring);
28
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
34  */
35 int rpmKeyringAddKey(rpmKeyring keyring, rpmPubkey key);
36
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
42  */
43 rpmRC rpmKeyringLookup(rpmKeyring keyring, pgpDig sig);
44
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
51  */
52 rpmRC rpmKeyringVerifySig(rpmKeyring keyring, pgpDigParams sig, DIGEST_CTX ctx);
53
54 /** \ingroup rpmkeyring
55  * Reference a keyring.
56  * @param keyring       keyring handle
57  * @return              new keyring reference
58  */
59 rpmKeyring rpmKeyringLink(rpmKeyring keyring);
60
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
66  */
67 rpmPubkey rpmPubkeyNew(const uint8_t *pkt, size_t pktlen);
68
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
74  */
75 rpmPubkey *rpmGetSubkeys(rpmPubkey mainkey, int *count);
76
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
81  */
82 rpmPubkey rpmPubkeyRead(const char *filename);
83
84 /** \ingroup rpmkeyring
85  * Free a pubkey.
86  * @param key           Pubkey to free
87  * @return              NULL always
88  */
89 rpmPubkey rpmPubkeyFree(rpmPubkey key);
90
91 /** \ingroup rpmkeyring
92  * Reference a pubkey.
93  * @param key           Pubkey
94  * @return              new pubkey reference
95  */
96 rpmPubkey rpmPubkeyLink(rpmPubkey key);
97
98 /** \ingroup rpmkeyring
99  * Parse OpenPGP pubkey parameters.
100  * @param key           Pubkey
101  * @return              parsed output of pubkey packet parameters
102  */
103 pgpDig rpmPubkeyDig(rpmPubkey key);
104
105 /** \ingroup rpmkeyring
106  * Return base64 encoding of pubkey
107  * @param key           Pubkey
108  * @return              base64 encoded pubkey (malloced), NULL on error
109  */
110 char * rpmPubkeyBase64(rpmPubkey key);
111
112 /** \ingroup rpmkeyring
113  * Return pgp params of key
114  * @param key           Pubkey
115  * @return              pgp params, NULL on error
116  */
117 pgpDigParams rpmPubkeyPgpDigParams(rpmPubkey key);
118
119 #ifdef __cplusplus
120 }
121 #endif
122 #endif /* _RPMKEYDB_H */