rpm 5.99.90
The RPM Package Manager
Loading...
Searching...
No Matches
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
25extern "C" {
26#endif
27
30typedef struct pgpDigParams_s * pgpDigParams;
31
35#define PGP_KEYID_LEN 8
36
37typedef uint8_t pgpKeyID_t[PGP_KEYID_LEN];
38
67
91
107
125
135
154
170
215
218typedef enum pgpArmor_e {
219 PGPARMOR_ERR_CRC_CHECK = -7,
220 PGPARMOR_ERR_BODY_DECODE = -6,
221 PGPARMOR_ERR_CRC_DECODE = -5,
222 PGPARMOR_ERR_NO_END_PGP = -4,
223 PGPARMOR_ERR_UNKNOWN_PREAMBLE_TAG = -3,
224 PGPARMOR_ERR_UNKNOWN_ARMOR_TYPE = -2,
225 PGPARMOR_ERR_NO_BEGIN_PGP = -1,
226#define PGPARMOR_ERROR PGPARMOR_ERR_NO_BEGIN_PGP
227 PGPARMOR_NONE = 0,
234 PGPARMOR_SECKEY = 7
235} pgpArmor;
236
246
247typedef enum pgpValType_e {
248 PGPVAL_TAG = 1,
249 PGPVAL_ARMORBLOCK = 2,
250 PGPVAL_ARMORKEY = 3,
251 PGPVAL_SIGTYPE = 4,
252 PGPVAL_SUBTYPE = 5,
253 PGPVAL_PUBKEYALGO = 6,
254 PGPVAL_SYMKEYALGO = 7,
255 PGPVAL_COMPRESSALGO = 8,
256 PGPVAL_HASHALGO = 9,
257 PGPVAL_SERVERPREFS = 10,
258} pgpValType;
259
266const char * pgpValString(pgpValType type, uint8_t val);
267
276int pgpPubkeyFingerprint(const uint8_t * pkt, size_t pktlen,
277 uint8_t **fp, size_t *fplen);
278
286int pgpPubkeyKeyID(const uint8_t * pkt, size_t pktlen, pgpKeyID_t keyid);
287
296int pgpPrtParams(const uint8_t *pkts, size_t pktlen, unsigned int pkttype,
297 pgpDigParams * ret);
298
308int pgpPrtParams2(const uint8_t *pkts, size_t pktlen, unsigned int pkttype,
309 pgpDigParams * ret, char **lints);
310
320int pgpPrtParamsSubkeys(const uint8_t *pkts, size_t pktlen,
321 pgpDigParams mainkey, pgpDigParams **subkeys,
322 int *subkeysCount);
323
331pgpArmor pgpReadPkts(const char * fn, uint8_t ** pkt, size_t * pktlen);
332
340pgpArmor pgpParsePkts(const char *armor, uint8_t ** pkt, size_t * pktlen);
341
354int pgpPubKeyCertLen(const uint8_t *pkts, size_t pktslen, size_t *certlen);
355
380rpmRC pgpPubKeyLint(const uint8_t *pkts, size_t pktslen, char **explanation);
381
389char * pgpArmorWrap(int atype, const unsigned char * s, size_t ns);
390
397int pgpDigParamsCmp(pgpDigParams p1, pgpDigParams p2);
398
405unsigned int pgpDigParamsAlgo(pgpDigParams digp, unsigned int algotype);
406
423const uint8_t *pgpDigParamsSignID(pgpDigParams digp);
424
443const char *pgpDigParamsUserID(pgpDigParams digp);
444
462int pgpDigParamsVersion(pgpDigParams digp);
463
470uint32_t pgpDigParamsCreationTime(pgpDigParams digp);
471
477pgpDigParams pgpDigParamsFree(pgpDigParams digp);
478
486rpmRC pgpVerifySignature(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx);
487
496rpmRC pgpVerifySignature2(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx,
497 char **lints);
498
506int pgpSignatureType(pgpDigParams sig);
507
513char *pgpIdentItem(pgpDigParams digp);
514
530rpmRC pgpPubkeyMerge(const uint8_t *pkts1, size_t pkts1len, const uint8_t *pkts2, size_t pkts2len, uint8_t **pktsm, size_t *pktsmlen, int flags);
531
532#ifdef __cplusplus
533}
534#endif
535
536#endif /* H_RPMPGP */
const char * pgpValString(pgpValType type, uint8_t val)
enum pgpTag_e pgpTag
enum pgpHashAlgo_e pgpHashAlgo
rpmRC pgpVerifySignature(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx)
int pgpPrtParams(const uint8_t *pkts, size_t pktlen, unsigned int pkttype, pgpDigParams *ret)
enum pgpPubkeyAlgo_e pgpPubkeyAlgo
enum pgpSigType_e pgpSigType
pgpCompressAlgo_e
Definition rpmpgp.h:129
uint32_t pgpDigParamsCreationTime(pgpDigParams digp)
int pgpPubKeyCertLen(const uint8_t *pkts, size_t pktslen, size_t *certlen)
const uint8_t * pgpDigParamsSignID(pgpDigParams digp)
int pgpSignatureType(pgpDigParams sig)
int pgpPrtParams2(const uint8_t *pkts, size_t pktlen, unsigned int pkttype, pgpDigParams *ret, char **lints)
pgpPubkeyAlgo_e
Definition rpmpgp.h:95
int pgpDigParamsVersion(pgpDigParams digp)
rpmRC pgpVerifySignature2(pgpDigParams key, pgpDigParams sig, DIGEST_CTX hashctx, char **lints)
pgpArmor pgpParsePkts(const char *armor, uint8_t **pkt, size_t *pktlen)
pgpArmor pgpReadPkts(const char *fn, uint8_t **pkt, size_t *pktlen)
rpmRC pgpPubKeyLint(const uint8_t *pkts, size_t pktslen, char **explanation)
rpmRC pgpPubkeyMerge(const uint8_t *pkts1, size_t pkts1len, const uint8_t *pkts2, size_t pkts2len, uint8_t **pktsm, size_t *pktsmlen, int flags)
pgpCurveId_e
Definition rpmpgp.h:161
enum pgpCompressAlgo_e pgpCompressAlgo
pgpArmor_e
Definition rpmpgp.h:218
pgpHashAlgo_e
Definition rpmpgp.h:139
pgpSigType_e
Definition rpmpgp.h:71
int pgpDigParamsCmp(pgpDigParams p1, pgpDigParams p2)
char * pgpArmorWrap(int atype, const unsigned char *s, size_t ns)
pgpArmorKey_e
Definition rpmpgp.h:239
unsigned int pgpDigParamsAlgo(pgpDigParams digp, unsigned int algotype)
#define PGP_KEYID_LEN
Definition rpmpgp.h:35
enum pgpSymkeyAlgo_e pgpSymkeyAlgo
pgpDigParams pgpDigParamsFree(pgpDigParams digp)
int pgpPubkeyKeyID(const uint8_t *pkt, size_t pktlen, pgpKeyID_t keyid)
pgpTag_e
Definition rpmpgp.h:42
pgpSymkeyAlgo_e
Definition rpmpgp.h:111
enum pgpSubType_e pgpSubType
const char * pgpDigParamsUserID(pgpDigParams digp)
int pgpPrtParamsSubkeys(const uint8_t *pkts, size_t pktlen, pgpDigParams mainkey, pgpDigParams **subkeys, int *subkeysCount)
char * pgpIdentItem(pgpDigParams digp)
int pgpPubkeyFingerprint(const uint8_t *pkt, size_t pktlen, uint8_t **fp, size_t *fplen)
pgpSubType_e
Definition rpmpgp.h:174
enum pgpCurveId_e pgpCurveId
@ PGPCOMPRESSALGO_NONE
Definition rpmpgp.h:130
@ PGPCOMPRESSALGO_BZIP2
Definition rpmpgp.h:133
@ PGPCOMPRESSALGO_ZLIB
Definition rpmpgp.h:132
@ PGPCOMPRESSALGO_ZIP
Definition rpmpgp.h:131
@ PGPPUBKEYALGO_ELGAMAL
Definition rpmpgp.h:103
@ PGPPUBKEYALGO_EC
Definition rpmpgp.h:101
@ PGPPUBKEYALGO_EDDSA
Definition rpmpgp.h:105
@ PGPPUBKEYALGO_RSA_ENCRYPT
Definition rpmpgp.h:97
@ PGPPUBKEYALGO_ELGAMAL_ENCRYPT
Definition rpmpgp.h:99
@ PGPPUBKEYALGO_RSA
Definition rpmpgp.h:96
@ PGPPUBKEYALGO_ECDSA
Definition rpmpgp.h:102
@ PGPPUBKEYALGO_DH
Definition rpmpgp.h:104
@ PGPPUBKEYALGO_RSA_SIGN
Definition rpmpgp.h:98
@ PGPPUBKEYALGO_DSA
Definition rpmpgp.h:100
@ PGPCURVE_ED25519
Definition rpmpgp.h:167
@ PGPCURVE_NIST_P_384
Definition rpmpgp.h:163
@ PGPCURVE_NIST_P_521
Definition rpmpgp.h:164
@ PGPCURVE_BRAINPOOL_P256R1
Definition rpmpgp.h:165
@ PGPCURVE_BRAINPOOL_P512R1
Definition rpmpgp.h:166
@ PGPCURVE_NIST_P_256
Definition rpmpgp.h:162
@ PGPCURVE_CURVE25519
Definition rpmpgp.h:168
@ PGPARMOR_PRIVKEY
Definition rpmpgp.h:233
@ PGPARMOR_MESSAGE
Definition rpmpgp.h:228
@ PGPARMOR_PUBKEY
Definition rpmpgp.h:229
@ PGPARMOR_SIGNED_MESSAGE
Definition rpmpgp.h:231
@ PGPARMOR_SIGNATURE
Definition rpmpgp.h:230
@ PGPARMOR_FILE
Definition rpmpgp.h:232
@ PGPARMOR_SECKEY
Definition rpmpgp.h:234
@ PGPHASHALGO_SHA384
Definition rpmpgp.h:147
@ PGPHASHALGO_SHA256
Definition rpmpgp.h:146
@ PGPHASHALGO_HAVAL_5_160
Definition rpmpgp.h:145
@ PGPHASHALGO_MD2
Definition rpmpgp.h:143
@ PGPHASHALGO_RIPEMD160
Definition rpmpgp.h:142
@ PGPHASHALGO_TIGER192
Definition rpmpgp.h:144
@ PGPHASHALGO_SHA3_512
Definition rpmpgp.h:152
@ PGPHASHALGO_SHA512
Definition rpmpgp.h:148
@ PGPHASHALGO_MD5
Definition rpmpgp.h:140
@ PGPHASHALGO_SHA3_256
Definition rpmpgp.h:150
@ PGPHASHALGO_SHA224
Definition rpmpgp.h:149
@ PGPHASHALGO_SHA1
Definition rpmpgp.h:141
@ PGPSIGTYPE_CASUAL_CERT
Definition rpmpgp.h:79
@ PGPSIGTYPE_STANDALONE
Definition rpmpgp.h:74
@ PGPSIGTYPE_GENERIC_CERT
Definition rpmpgp.h:75
@ PGPSIGTYPE_SUBKEY_BINDING
Definition rpmpgp.h:83
@ PGPSIGTYPE_KEY_REVOKE
Definition rpmpgp.h:86
@ PGPSIGTYPE_PERSONA_CERT
Definition rpmpgp.h:77
@ PGPSIGTYPE_SIGNED_KEY
Definition rpmpgp.h:85
@ PGPSIGTYPE_SUBKEY_REVOKE
Definition rpmpgp.h:87
@ PGPSIGTYPE_TEXT
Definition rpmpgp.h:73
@ PGPSIGTYPE_PRIMARY_BINDING
Definition rpmpgp.h:84
@ PGPSIGTYPE_CERT_REVOKE
Definition rpmpgp.h:88
@ PGPSIGTYPE_BINARY
Definition rpmpgp.h:72
@ PGPSIGTYPE_TIMESTAMP
Definition rpmpgp.h:89
@ PGPSIGTYPE_POSITIVE_CERT
Definition rpmpgp.h:81
@ PGPARMORKEY_COMMENT
Definition rpmpgp.h:241
@ PGPARMORKEY_MESSAGEID
Definition rpmpgp.h:242
@ PGPARMORKEY_HASH
Definition rpmpgp.h:243
@ PGPARMORKEY_CHARSET
Definition rpmpgp.h:244
@ PGPARMORKEY_VERSION
Definition rpmpgp.h:240
@ PGPTAG_COMPRESSED_DATA
Definition rpmpgp.h:51
@ PGPTAG_PRIVATE_60
Definition rpmpgp.h:62
@ PGPTAG_MARKER
Definition rpmpgp.h:53
@ PGPTAG_SYMMETRIC_DATA
Definition rpmpgp.h:52
@ PGPTAG_USER_ID
Definition rpmpgp.h:56
@ PGPTAG_ENCRYPTED_MDC
Definition rpmpgp.h:60
@ PGPTAG_SECRET_SUBKEY
Definition rpmpgp.h:50
@ PGPTAG_PRIVATE_62
Definition rpmpgp.h:64
@ PGPTAG_ONEPASS_SIGNATURE
Definition rpmpgp.h:47
@ PGPTAG_TRUST
Definition rpmpgp.h:55
@ PGPTAG_PUBLIC_KEY
Definition rpmpgp.h:49
@ PGPTAG_RESERVED
Definition rpmpgp.h:43
@ PGPTAG_COMMENT_OLD
Definition rpmpgp.h:58
@ PGPTAG_PHOTOID
Definition rpmpgp.h:59
@ PGPTAG_LITERAL_DATA
Definition rpmpgp.h:54
@ PGPTAG_SIGNATURE
Definition rpmpgp.h:45
@ PGPTAG_PUBLIC_SESSION_KEY
Definition rpmpgp.h:44
@ PGPTAG_SYMMETRIC_SESSION_KEY
Definition rpmpgp.h:46
@ PGPTAG_COMMENT
Definition rpmpgp.h:63
@ PGPTAG_SECRET_KEY
Definition rpmpgp.h:48
@ PGPTAG_PUBLIC_SUBKEY
Definition rpmpgp.h:57
@ PGPTAG_MDC
Definition rpmpgp.h:61
@ PGPTAG_CONTROL
Definition rpmpgp.h:65
@ PGPSYMKEYALGO_DES_SK
Definition rpmpgp.h:118
@ PGPSYMKEYALGO_BLOWFISH
Definition rpmpgp.h:116
@ PGPSYMKEYALGO_PLAINTEXT
Definition rpmpgp.h:112
@ PGPSYMKEYALGO_AES_192
Definition rpmpgp.h:120
@ PGPSYMKEYALGO_NOENCRYPT
Definition rpmpgp.h:123
@ PGPSYMKEYALGO_AES_256
Definition rpmpgp.h:121
@ PGPSYMKEYALGO_TWOFISH
Definition rpmpgp.h:122
@ PGPSYMKEYALGO_TRIPLE_DES
Definition rpmpgp.h:114
@ PGPSYMKEYALGO_CAST5
Definition rpmpgp.h:115
@ PGPSYMKEYALGO_SAFER
Definition rpmpgp.h:117
@ PGPSYMKEYALGO_IDEA
Definition rpmpgp.h:113
@ PGPSYMKEYALGO_AES_128
Definition rpmpgp.h:119
@ PGPSUBTYPE_EMBEDDED_SIG
Definition rpmpgp.h:198
@ PGPSUBTYPE_EXPORTABLE_CERT
Definition rpmpgp.h:178
@ PGPSUBTYPE_ARR
Definition rpmpgp.h:183
@ PGPSUBTYPE_NOTATION
Definition rpmpgp.h:187
@ PGPSUBTYPE_ISSUER_FINGERPRINT
Definition rpmpgp.h:199
@ PGPSUBTYPE_ISSUER_KEYID
Definition rpmpgp.h:186
@ PGPSUBTYPE_REVOCABLE
Definition rpmpgp.h:181
@ PGPSUBTYPE_POLICY_URL
Definition rpmpgp.h:193
@ PGPSUBTYPE_FEATURES
Definition rpmpgp.h:197
@ PGPSUBTYPE_TRUST_SIG
Definition rpmpgp.h:179
@ PGPSUBTYPE_PREFER_SYMKEY
Definition rpmpgp.h:184
@ PGPSUBTYPE_SIG_EXPIRE_TIME
Definition rpmpgp.h:177
@ PGPSUBTYPE_INTERNAL_104
Definition rpmpgp.h:205
@ PGPSUBTYPE_SIGNER_USERID
Definition rpmpgp.h:195
@ PGPSUBTYPE_PREFER_COMPRESS
Definition rpmpgp.h:189
@ PGPSUBTYPE_KEY_EXPIRE_TIME
Definition rpmpgp.h:182
@ PGPSUBTYPE_REVOKE_KEY
Definition rpmpgp.h:185
@ PGPSUBTYPE_INTERNAL_101
Definition rpmpgp.h:202
@ PGPSUBTYPE_PREFER_HASH
Definition rpmpgp.h:188
@ PGPSUBTYPE_NONE
Definition rpmpgp.h:175
@ PGPSUBTYPE_SIG_CREATE_TIME
Definition rpmpgp.h:176
@ PGPSUBTYPE_REVOKE_REASON
Definition rpmpgp.h:196
@ PGPSUBTYPE_KEYSERVER_PREFERS
Definition rpmpgp.h:190
@ PGPSUBTYPE_CRITICAL
Definition rpmpgp.h:213
@ PGPSUBTYPE_INTERNAL_110
Definition rpmpgp.h:211
@ PGPSUBTYPE_INTERNAL_109
Definition rpmpgp.h:210
@ PGPSUBTYPE_INTERNAL_108
Definition rpmpgp.h:209
@ PGPSUBTYPE_INTERNAL_105
Definition rpmpgp.h:206
@ PGPSUBTYPE_INTERNAL_100
Definition rpmpgp.h:201
@ PGPSUBTYPE_PREFER_KEYSERVER
Definition rpmpgp.h:191
@ PGPSUBTYPE_INTERNAL_107
Definition rpmpgp.h:208
@ PGPSUBTYPE_REGEX
Definition rpmpgp.h:180
@ PGPSUBTYPE_PRIMARY_USERID
Definition rpmpgp.h:192
@ PGPSUBTYPE_INTERNAL_102
Definition rpmpgp.h:203
@ PGPSUBTYPE_INTERNAL_103
Definition rpmpgp.h:204
@ PGPSUBTYPE_INTERNAL_106
Definition rpmpgp.h:207
@ PGPSUBTYPE_KEY_FLAGS
Definition rpmpgp.h:194
enum rpmRC_e rpmRC