rpm  6.0.91
The RPM Package Manager
rpmpgp.h
Go to the documentation of this file.
1 #ifndef H_RPMPGP
2 #define H_RPMPGP
3 
17 #include <string.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <rpm/rpmtypes.h>
21 #include <rpm/rpmstring.h>
22 #include <rpm/rpmcrypto.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
30 typedef struct pgpDigParams_s * pgpDigParams;
31 
35 #define PGP_KEYID_LEN 8
36 
37 typedef uint8_t pgpKeyID_t[PGP_KEYID_LEN];
38 
42 typedef enum pgpTag_e {
55  PGPTAG_TRUST = 12,
61  PGPTAG_MDC = 19,
67 } pgpTag;
68 
69 #define PGPTAG_PHOTOID PGPTAG_USER_ATTRIBUTE /* legacy name */
70 
74 typedef enum pgpSigType_e {
76  PGPSIGTYPE_TEXT = 0x01,
94 } pgpSigType;
95 
99 typedef enum pgpPubkeyAlgo_e {
121 } pgpPubkeyAlgo;
122 
126 typedef enum pgpSymkeyAlgo_e {
142 } pgpSymkeyAlgo;
143 
147 typedef enum pgpCompressAlgo_e {
153 
157 typedef enum pgpHashAlgo_e {
171 } pgpHashAlgo;
172 
179 typedef enum pgpCurveId_e {
187 } pgpCurveId;
188 
192 typedef enum pgpSubType_e {
234 } pgpSubType;
235 
238 typedef enum pgpArmor_e {
239  PGPARMOR_ERR_CRC_CHECK = -7,
240  PGPARMOR_ERR_BODY_DECODE = -6,
241  PGPARMOR_ERR_CRC_DECODE = -5,
242  PGPARMOR_ERR_NO_END_PGP = -4,
243  PGPARMOR_ERR_UNKNOWN_PREAMBLE_TAG = -3,
244  PGPARMOR_ERR_UNKNOWN_ARMOR_TYPE = -2,
245  PGPARMOR_ERR_NO_BEGIN_PGP = -1,
246 #define PGPARMOR_ERROR PGPARMOR_ERR_NO_BEGIN_PGP
247  PGPARMOR_NONE = 0,
255 } pgpArmor;
256 
259 typedef enum pgpArmorKey_e {
265 } pgpArmorKey;
266 
267 typedef enum pgpValType_e {
268  PGPVAL_TAG = 1,
269  PGPVAL_ARMORBLOCK = 2,
270  PGPVAL_ARMORKEY = 3,
271  PGPVAL_SIGTYPE = 4,
272  PGPVAL_SUBTYPE = 5,
273  PGPVAL_PUBKEYALGO = 6,
274  PGPVAL_SYMKEYALGO = 7,
275  PGPVAL_COMPRESSALGO = 8,
276  PGPVAL_HASHALGO = 9,
277  PGPVAL_SERVERPREFS = 10,
278 } pgpValType;
279 
286 const char * pgpValString(pgpValType type, uint8_t val);
287 
296 int pgpPubkeyFingerprint(const uint8_t * pkt, size_t pktlen,
297  uint8_t **fp, size_t *fplen);
298 
306 int pgpPubkeyKeyID(const uint8_t * pkt, size_t pktlen, pgpKeyID_t keyid);
307 
316 int pgpPrtParams(const uint8_t *pkts, size_t pktlen, unsigned int pkttype,
317  pgpDigParams * ret);
318 
328 int pgpPrtParams2(const uint8_t *pkts, size_t pktlen, unsigned int pkttype,
329  pgpDigParams * ret, char **lints);
330 
340 int pgpPrtParamsSubkeys(const uint8_t *pkts, size_t pktlen,
341  pgpDigParams mainkey, pgpDigParams **subkeys,
342  int *subkeysCount);
343 
351 pgpArmor pgpReadPkts(const char * fn, uint8_t ** pkt, size_t * pktlen);
352 
360 pgpArmor pgpParsePkts(const char *armor, uint8_t ** pkt, size_t * pktlen);
361 
374 int pgpPubKeyCertLen(const uint8_t *pkts, size_t pktslen, size_t *certlen);
375 
400 rpmRC pgpPubKeyLint(const uint8_t *pkts, size_t pktslen, char **explanation);
401 
409 char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns);
410 
417 int pgpDigParamsCmp(pgpDigParams p1, pgpDigParams p2);
418 
425 unsigned int pgpDigParamsAlgo(pgpDigParams digp, unsigned int algotype);
426 
443 const uint8_t *pgpDigParamsSignID(pgpDigParams digp);
444 
463 const char *pgpDigParamsUserID(pgpDigParams digp);
464 
482 int pgpDigParamsVersion(pgpDigParams digp);
483 
490 uint32_t pgpDigParamsCreationTime(pgpDigParams digp);
491 
499 int pgpDigParamsSalt(pgpDigParams digp, const uint8_t **datap, size_t *lenp);
500 
506 pgpDigParams pgpDigParamsFree(pgpDigParams digp);
507 
515 rpmRC pgpVerifySignature(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx);
516 
525 rpmRC pgpVerifySignature2(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx,
526  char **lints);
527 
535 int pgpSignatureType(pgpDigParams sig);
536 
542 char *pgpIdentItem(pgpDigParams digp);
543 
559 rpmRC pgpPubkeyMerge(const uint8_t *pkts1, size_t pkts1len, const uint8_t *pkts2, size_t pkts2len, uint8_t **pktsm, size_t *pktsmlen, int flags);
560 
561 #ifdef __cplusplus
562 }
563 #endif
564 
565 #endif /* H_RPMPGP */
Definition: rpmpgp.h:93
Definition: rpmpgp.h:110
int pgpSignatureType(pgpDigParams sig)
Definition: rpmpgp.h:219
Definition: rpmpgp.h:163
Definition: rpmpgp.h:134
Definition: rpmpgp.h:180
Definition: rpmpgp.h:78
rpmRC pgpPubkeyMerge(const uint8_t *pkts1, size_t pkts1len, const uint8_t *pkts2, size_t pkts2len, uint8_t **pktsm, size_t *pktsmlen, int flags)
pgpArmor pgpParsePkts(const char *armor, uint8_t **pkt, size_t *pktlen)
enum pgpPubkeyAlgo_e pgpPubkeyAlgo
Definition: rpmpgp.h:216
Definition: rpmpgp.h:115
Definition: rpmpgp.h:229
Definition: rpmpgp.h:162
Definition: rpmpgp.h:43
Definition: rpmpgp.h:215
const uint8_t * pgpDigParamsSignID(pgpDigParams digp)
Definition: rpmpgp.h:114
const char * pgpDigParamsUserID(pgpDigParams digp)
Definition: rpmpgp.h:185
enum pgpSymkeyAlgo_e pgpSymkeyAlgo
int pgpDigParamsSalt(pgpDigParams digp, const uint8_t **datap, size_t *lenp)
Definition: rpmpgp.h:199
Definition: rpmpgp.h:151
Definition: rpmpgp.h:183
Definition: rpmpgp.h:61
Definition: rpmpgp.h:204
Definition: rpmpgp.h:48
Definition: rpmpgp.h:251
int pgpDigParamsCmp(pgpDigParams p1, pgpDigParams p2)
pgpTag_e
Definition: rpmpgp.h:42
Definition: rpmpgp.h:63
pgpArmor pgpReadPkts(const char *fn, uint8_t **pkt, size_t *pktlen)
Definition: rpmpgp.h:193
Definition: rpmpgp.h:141
Definition: rpmpgp.h:228
Definition: rpmpgp.h:80
Definition: rpmpgp.h:138
pgpCurveId_e
Definition: rpmpgp.h:179
Definition: rpmpgp.h:109
Definition: rpmpgp.h:47
pgpPubkeyAlgo_e
Definition: rpmpgp.h:99
Definition: rpmpgp.h:194
enum pgpCurveId_e pgpCurveId
Definition: rpmpgp.h:264
enum pgpCompressAlgo_e pgpCompressAlgo
Definition: rpmpgp.h:160
Definition: rpmpgp.h:140
Definition: rpmpgp.h:49
Definition: rpmpgp.h:52
Definition: rpmpgp.h:104
int pgpDigParamsVersion(pgpDigParams digp)
Definition: rpmpgp.h:53
pgpArmorKey_e
Definition: rpmpgp.h:259
Definition: rpmpgp.h:227
Definition: rpmpgp.h:92
Definition: rpmpgp.h:105
rpmRC pgpVerifySignature(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx)
Definition: rpmpgp.h:203
Definition: rpmpgp.h:65
Definition: rpmpgp.h:75
int pgpPubkeyKeyID(const uint8_t *pkt, size_t pktlen, pgpKeyID_t keyid)
Definition: rpmpgp.h:181
Definition: rpmpgp.h:200
Definition: rpmpgp.h:186
Definition: rpmpgp.h:57
Definition: rpmpgp.h:84
Definition: rpmpgp.h:217
Definition: rpmpgp.h:166
Definition: rpmpgp.h:89
Definition: rpmpgp.h:101
Definition: rpmpgp.h:222
Definition: rpmpgp.h:161
Definition: rpmpgp.h:82
pgpArmor_e
Definition: rpmpgp.h:238
Definition: rpmpgp.h:127
Definition: rpmpgp.h:167
Definition: rpmpgp.h:249
Definition: rpmpgp.h:207
Definition: rpmpgp.h:231
Definition: rpmpgp.h:214
Definition: rpmpgp.h:223
Definition: rpmpgp.h:128
enum pgpHashAlgo_e pgpHashAlgo
Definition: rpmpgp.h:253
Definition: rpmpgp.h:225
Definition: rpmpgp.h:107
Definition: rpmpgp.h:139
Definition: rpmpgp.h:262
Definition: rpmpgp.h:118
Definition: rpmpgp.h:59
Definition: rpmpgp.h:90
Definition: rpmpgp.h:46
Definition: rpmpgp.h:196
Definition: rpmpgp.h:148
Definition: rpmpgp.h:55
Definition: rpmpgp.h:211
Definition: rpmpgp.h:66
Definition: rpmpgp.h:132
Definition: rpmpgp.h:112
pgpDigParams pgpDigParamsFree(pgpDigParams digp)
Definition: rpmpgp.h:58
Definition: rpmpgp.h:106
Definition: rpmpgp.h:182
Definition: rpmpgp.h:164
Definition: rpmpgp.h:111
int pgpPubkeyFingerprint(const uint8_t *pkt, size_t pktlen, uint8_t **fp, size_t *fplen)
Definition: rpmpgp.h:87
enum pgpSubType_e pgpSubType
Definition: rpmpgp.h:133
Definition: rpmpgp.h:159
Definition: rpmpgp.h:248
Definition: rpmpgp.h:218
#define PGP_KEYID_LEN
Definition: rpmpgp.h:35
Definition: rpmpgp.h:88
Definition: rpmpgp.h:205
pgpSubType_e
Definition: rpmpgp.h:192
Definition: rpmpgp.h:213
Definition: rpmpgp.h:209
Definition: rpmpgp.h:137
Definition: rpmpgp.h:150
Definition: rpmpgp.h:60
Definition: rpmpgp.h:208
Definition: rpmpgp.h:62
char * pgpArmorWrap(int atype, const unsigned char *s, size_t ns)
Definition: rpmpgp.h:202
Definition: rpmpgp.h:226
pgpHashAlgo_e
Definition: rpmpgp.h:157
Definition: rpmpgp.h:184
Definition: rpmpgp.h:136
Definition: rpmpgp.h:201
Definition: rpmpgp.h:195
rpmRC pgpPubKeyLint(const uint8_t *pkts, size_t pktslen, char **explanation)
rpmRC pgpVerifySignature2(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx, char **lints)
Definition: rpmpgp.h:260
enum pgpTag_e pgpTag
Definition: rpmpgp.h:170
Definition: rpmpgp.h:100
Definition: rpmpgp.h:120
Definition: rpmpgp.h:230
Definition: rpmpgp.h:165
uint32_t pgpDigParamsCreationTime(pgpDigParams digp)
unsigned int pgpDigParamsAlgo(pgpDigParams digp, unsigned int algotype)
Definition: rpmpgp.h:250
Definition: rpmpgp.h:76
Definition: rpmpgp.h:224
Definition: rpmpgp.h:77
char * pgpIdentItem(pgpDigParams digp)
pgpSigType_e
Definition: rpmpgp.h:74
Definition: rpmpgp.h:44
Definition: rpmpgp.h:252
Definition: rpmpgp.h:50
Definition: rpmpgp.h:113
Definition: rpmpgp.h:45
Definition: rpmpgp.h:108
Definition: rpmpgp.h:119
int pgpPubKeyCertLen(const uint8_t *pkts, size_t pktslen, size_t *certlen)
pgpSymkeyAlgo_e
Definition: rpmpgp.h:126
int pgpPrtParamsSubkeys(const uint8_t *pkts, size_t pktlen, pgpDigParams mainkey, pgpDigParams **subkeys, int *subkeysCount)
Definition: rpmpgp.h:117
Definition: rpmpgp.h:261
Definition: rpmpgp.h:56
Definition: rpmpgp.h:221
const char * pgpValString(pgpValType type, uint8_t val)
Definition: rpmpgp.h:91
enum pgpSigType_e pgpSigType
Definition: rpmpgp.h:64
Definition: rpmpgp.h:233
Definition: rpmpgp.h:212
int pgpPrtParams2(const uint8_t *pkts, size_t pktlen, unsigned int pkttype, pgpDigParams *ret, char **lints)
int pgpPrtParams(const uint8_t *pkts, size_t pktlen, unsigned int pkttype, pgpDigParams *ret)
Definition: rpmpgp.h:86
Definition: rpmpgp.h:206
Definition: rpmpgp.h:103
Definition: rpmpgp.h:131
Definition: rpmpgp.h:263
Definition: rpmpgp.h:149
Definition: rpmpgp.h:254
pgpCompressAlgo_e
Definition: rpmpgp.h:147
Definition: rpmpgp.h:130
Definition: rpmpgp.h:198
Definition: rpmpgp.h:116
Definition: rpmpgp.h:158
Definition: rpmpgp.h:168
Definition: rpmpgp.h:135
Definition: rpmpgp.h:102
Definition: rpmpgp.h:51
enum rpmRC_e rpmRC
Definition: rpmpgp.h:54
Definition: rpmpgp.h:129
Definition: rpmpgp.h:197
Definition: rpmpgp.h:210