[4.0] Use strip (instead of eu-strip) to support --strip-debug of *.so at build time
[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
8 #include <rpm/rpmtypes.h>
9 #include <rpm/rpmpgp.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 /** \ingroup rpmkeyring
16  * Create a new, empty keyring
17  * @return      new keyring handle
18  */
19 rpmKeyring rpmKeyringNew(void);
20
21 /** \ingroup rpmkeyring
22  * Free keyring and the keys within it
23  * @return      NULL always
24  */
25 rpmKeyring rpmKeyringFree(rpmKeyring keyring);
26
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
32  */
33 int rpmKeyringAddKey(rpmKeyring keyring, rpmPubkey key);
34
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
40  */
41 rpmRC rpmKeyringLookup(rpmKeyring keyring, pgpDig sig);
42
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
49  */
50 rpmRC rpmKeyringVerifySig(rpmKeyring keyring, pgpDigParams sig, DIGEST_CTX ctx);
51
52 /** \ingroup rpmkeyring
53  * Reference a keyring.
54  * @param keyring       keyring handle
55  * @return              new keyring reference
56  */
57 rpmKeyring rpmKeyringLink(rpmKeyring keyring);
58
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
64  */
65 rpmPubkey rpmPubkeyNew(const uint8_t *pkt, size_t pktlen);
66
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
71  */
72 rpmPubkey rpmPubkeyRead(const char *filename);
73
74 /** \ingroup rpmkeyring
75  * Free a pubkey.
76  * @param key           Pubkey to free
77  * @return              NULL always
78  */
79 rpmPubkey rpmPubkeyFree(rpmPubkey key);
80
81 /** \ingroup rpmkeyring
82  * Reference a pubkey.
83  * @param key           Pubkey
84  * @return              new pubkey reference
85  */
86 rpmPubkey rpmPubkeyLink(rpmPubkey key);
87
88 /** \ingroup rpmkeyring
89  * Parse OpenPGP pubkey parameters.
90  * @param key           Pubkey
91  * @return              parsed output of pubkey packet parameters
92  */
93 pgpDig rpmPubkeyDig(rpmPubkey key);
94
95 /** \ingroup rpmkeyring
96  * Return base64 encoding of pubkey
97  * @param key           Pubkey
98  * @return              base64 encoded pubkey (malloced), NULL on error
99  */
100 char * rpmPubkeyBase64(rpmPubkey key);
101
102 #ifdef __cplusplus
103 }
104 #endif
105 #endif /* _RPMKEYDB_H */