1use std::fmt::Display;
7
8pub const HEADER_IMAGE: isize = 61;
9pub const HEADER_SIGNATURES: isize = 62;
10pub const HEADER_IMMUTABLE: isize = 63;
11pub const HEADER_REGIONS: isize = 64;
12pub const HEADER_I18NTABLE: isize = 100;
13pub const HEADER_SIGBASE: isize = 256;
14pub const HEADER_TAGBASE: isize = 1000;
15pub const RPMTAG_SIG_BASE: isize = HEADER_SIGBASE;
16
17#[derive(
18 num_derive::FromPrimitive,
19 num_derive::ToPrimitive,
20 Debug,
21 PartialEq,
22 Eq,
23 Copy,
24 Clone,
25 enum_display_derive::Display,
26)]
27#[allow(non_camel_case_types)]
28pub enum IndexTag {
29 RPMTAG_HEADERIMAGE = HEADER_IMAGE,
30 RPMTAG_HEADERSIGNATURES = HEADER_SIGNATURES,
31 RPMTAG_HEADERIMMUTABLE = HEADER_IMMUTABLE,
32 RPMTAG_HEADERREGIONS = HEADER_REGIONS,
33
34 RPMTAG_HEADERI18NTABLE = HEADER_I18NTABLE,
35
36 RPMTAG_SIGSIZE = RPMTAG_SIG_BASE,
37 RPMTAG_SIGLEMD5_1 = RPMTAG_SIG_BASE + 2,
38 RPMTAG_SIGPGP = RPMTAG_SIG_BASE + 3,
39 RPMTAG_SIGLEMD5_2 = RPMTAG_SIG_BASE + 4,
40 RPMTAG_SIGMD5 = RPMTAG_SIG_BASE + 5,
41
42 RPMTAG_SIGGPG = RPMTAG_SIG_BASE + 6,
43 RPMTAG_SIGPGP5 = RPMTAG_SIG_BASE + 7,
44
45 RPMTAG_BADSHA1_1 = RPMTAG_SIG_BASE + 8,
46 RPMTAG_BADSHA1_2 = RPMTAG_SIG_BASE + 9,
47 RPMTAG_PUBKEYS = RPMTAG_SIG_BASE + 10,
48 RPMTAG_DSAHEADER = RPMTAG_SIG_BASE + 11,
49 RPMTAG_RSAHEADER = RPMTAG_SIG_BASE + 12,
50 RPMTAG_SHA1HEADER = RPMTAG_SIG_BASE + 13,
51
52 RPMTAG_LONGSIGSIZE = RPMTAG_SIG_BASE + 14,
53 RPMTAG_LONGARCHIVESIZE = RPMTAG_SIG_BASE + 15,
54
55 RPMTAG_SHA256HEADER = RPMTAG_SIG_BASE + 17,
56
57 RPMTAG_NAME = 1000,
58
59 RPMTAG_VERSION = 1001,
60
61 RPMTAG_RELEASE = 1002,
62
63 RPMTAG_EPOCH = 1003,
64
65 RPMTAG_SUMMARY = 1004,
66 RPMTAG_DESCRIPTION = 1005,
67 RPMTAG_BUILDTIME = 1006,
68 RPMTAG_BUILDHOST = 1007,
69 RPMTAG_INSTALLTIME = 1008,
70 RPMTAG_SIZE = 1009,
71 RPMTAG_DISTRIBUTION = 1010,
72 RPMTAG_VENDOR = 1011,
73 RPMTAG_GIF = 1012,
74 RPMTAG_XPM = 1013,
75 RPMTAG_LICENSE = 1014,
76 RPMTAG_PACKAGER = 1015,
77 RPMTAG_GROUP = 1016,
78 RPMTAG_CHANGELOG = 1017,
79 RPMTAG_SOURCE = 1018,
80 RPMTAG_PATCH = 1019,
81 RPMTAG_URL = 1020,
82 RPMTAG_OS = 1021,
83 RPMTAG_ARCH = 1022,
84 RPMTAG_PREIN = 1023,
85 RPMTAG_POSTIN = 1024,
86 RPMTAG_PREUN = 1025,
87 RPMTAG_POSTUN = 1026,
88 RPMTAG_OLDFILENAMES = 1027,
89 RPMTAG_FILESIZES = 1028,
90 RPMTAG_FILESTATES = 1029,
91 RPMTAG_FILEMODES = 1030,
92 RPMTAG_FILEUIDS = 1031,
93 RPMTAG_FILEGIDS = 1032,
94 RPMTAG_FILERDEVS = 1033,
95 RPMTAG_FILEMTIMES = 1034,
96 RPMTAG_FILEDIGESTS = 1035,
97
98 RPMTAG_FILELINKTOS = 1036,
99 RPMTAG_FILEFLAGS = 1037,
100 RPMTAG_ROOT = 1038,
101 RPMTAG_FILEUSERNAME = 1039,
102 RPMTAG_FILEGROUPNAME = 1040,
103 RPMTAG_EXCLUDE = 1041,
104 RPMTAG_EXCLUSIVE = 1042,
105 RPMTAG_ICON = 1043,
106 RPMTAG_SOURCERPM = 1044,
107 RPMTAG_FILEVERIFYFLAGS = 1045,
108 RPMTAG_ARCHIVESIZE = 1046,
109 RPMTAG_PROVIDENAME = 1047,
110
111 RPMTAG_REQUIREFLAGS = 1048,
112 RPMTAG_REQUIRENAME = 1049,
113
114 RPMTAG_REQUIREVERSION = 1050,
115 RPMTAG_NOSOURCE = 1051,
116 RPMTAG_NOPATCH = 1052,
117 RPMTAG_CONFLICTFLAGS = 1053,
118 RPMTAG_CONFLICTNAME = 1054,
119
120 RPMTAG_CONFLICTVERSION = 1055,
121 RPMTAG_DEFAULTPREFIX = 1056,
122 RPMTAG_BUILDROOT = 1057,
123 RPMTAG_INSTALLPREFIX = 1058,
124 RPMTAG_EXCLUDEARCH = 1059,
125 RPMTAG_EXCLUDEOS = 1060,
126 RPMTAG_EXCLUSIVEARCH = 1061,
127 RPMTAG_EXCLUSIVEOS = 1062,
128 RPMTAG_AUTOREQPROV = 1063,
129 RPMTAG_RPMVERSION = 1064,
130 RPMTAG_TRIGGERSCRIPTS = 1065,
131 RPMTAG_TRIGGERNAME = 1066,
132 RPMTAG_TRIGGERVERSION = 1067,
133 RPMTAG_TRIGGERFLAGS = 1068,
134 RPMTAG_TRIGGERINDEX = 1069,
135 RPMTAG_VERIFYSCRIPT = 1079,
136 RPMTAG_CHANGELOGTIME = 1080,
137 RPMTAG_CHANGELOGNAME = 1081,
138 RPMTAG_CHANGELOGTEXT = 1082,
139 RPMTAG_BROKENMD5 = 1083,
140 RPMTAG_PREREQ = 1084,
141 RPMTAG_PREINPROG = 1085,
142 RPMTAG_POSTINPROG = 1086,
143 RPMTAG_PREUNPROG = 1087,
144 RPMTAG_POSTUNPROG = 1088,
145 RPMTAG_BUILDARCHS = 1089,
146 RPMTAG_OBSOLETENAME = 1090,
147
148 RPMTAG_VERIFYSCRIPTPROG = 1091,
149 RPMTAG_TRIGGERSCRIPTPROG = 1092,
150 RPMTAG_DOCDIR = 1093,
151 RPMTAG_COOKIE = 1094,
152 RPMTAG_FILEDEVICES = 1095,
153 RPMTAG_FILEINODES = 1096,
154 RPMTAG_FILELANGS = 1097,
155 RPMTAG_PREFIXES = 1098,
156 RPMTAG_INSTPREFIXES = 1099,
157 RPMTAG_TRIGGERIN = 1100,
158 RPMTAG_TRIGGERUN = 1101,
159 RPMTAG_TRIGGERPOSTUN = 1102,
160 RPMTAG_AUTOREQ = 1103,
161 RPMTAG_AUTOPROV = 1104,
162 RPMTAG_CAPABILITY = 1105,
163 RPMTAG_SOURCEPACKAGE = 1106,
164 RPMTAG_OLDORIGFILENAMES = 1107,
165 RPMTAG_BUILDPREREQ = 1108,
166 RPMTAG_BUILDREQUIRES = 1109,
167 RPMTAG_BUILDCONFLICTS = 1110,
168 RPMTAG_BUILDMACROS = 1111,
169 RPMTAG_PROVIDEFLAGS = 1112,
170 RPMTAG_PROVIDEVERSION = 1113,
171 RPMTAG_OBSOLETEFLAGS = 1114,
172 RPMTAG_OBSOLETEVERSION = 1115,
173 RPMTAG_DIRINDEXES = 1116,
174 RPMTAG_BASENAMES = 1117,
175 RPMTAG_DIRNAMES = 1118,
176 RPMTAG_ORIGDIRINDEXES = 1119,
177 RPMTAG_ORIGBASENAMES = 1120,
178 RPMTAG_ORIGDIRNAMES = 1121,
179 RPMTAG_OPTFLAGS = 1122,
180 RPMTAG_DISTURL = 1123,
181 RPMTAG_PAYLOADFORMAT = 1124,
182 RPMTAG_PAYLOADCOMPRESSOR = 1125,
183 RPMTAG_PAYLOADFLAGS = 1126,
184 RPMTAG_INSTALLCOLOR = 1127,
185 RPMTAG_INSTALLTID = 1128,
186 RPMTAG_REMOVETID = 1129,
187 RPMTAG_SHA1RHN = 1130,
188 RPMTAG_RHNPLATFORM = 1131,
189 RPMTAG_PLATFORM = 1132,
190 RPMTAG_PATCHESNAME = 1133,
191 RPMTAG_PATCHESFLAGS = 1134,
192 RPMTAG_PATCHESVERSION = 1135,
193 RPMTAG_CACHECTIME = 1136,
194 RPMTAG_CACHEPKGPATH = 1137,
195 RPMTAG_CACHEPKGSIZE = 1138,
196 RPMTAG_CACHEPKGMTIME = 1139,
197 RPMTAG_FILECOLORS = 1140,
198 RPMTAG_FILECLASS = 1141,
199 RPMTAG_CLASSDICT = 1142,
200 RPMTAG_FILEDEPENDSX = 1143,
201 RPMTAG_FILEDEPENDSN = 1144,
202 RPMTAG_DEPENDSDICT = 1145,
203 RPMTAG_SOURCEPKGID = 1146,
204 RPMTAG_FILECONTEXTS = 1147,
205 RPMTAG_FSCONTEXTS = 1148,
206 RPMTAG_RECONTEXTS = 1149,
207 RPMTAG_POLICIES = 1150,
208 RPMTAG_PRETRANS = 1151,
209 RPMTAG_POSTTRANS = 1152,
210 RPMTAG_PRETRANSPROG = 1153,
211 RPMTAG_POSTTRANSPROG = 1154,
212 RPMTAG_DISTTAG = 1155,
213 RPMTAG_OLDSUGGESTSNAME = 1156,
214
215 RPMTAG_OLDSUGGESTSVERSION = 1157,
216 RPMTAG_OLDSUGGESTSFLAGS = 1158,
217 RPMTAG_OLDENHANCESNAME = 1159,
218
219 RPMTAG_OLDENHANCESVERSION = 1160,
220 RPMTAG_OLDENHANCESFLAGS = 1161,
221 RPMTAG_PRIORITY = 1162,
222 RPMTAG_CVSID = 1163,
223
224 RPMTAG_BLINKPKGID = 1164,
225 RPMTAG_BLINKHDRID = 1165,
226 RPMTAG_BLINKNEVRA = 1166,
227 RPMTAG_FLINKPKGID = 1167,
228 RPMTAG_FLINKHDRID = 1168,
229 RPMTAG_FLINKNEVRA = 1169,
230 RPMTAG_PACKAGEORIGIN = 1170,
231 RPMTAG_TRIGGERPREIN = 1171,
232 RPMTAG_BUILDSUGGESTS = 1172,
233 RPMTAG_BUILDENHANCES = 1173,
234 RPMTAG_SCRIPTSTATES = 1174,
235 RPMTAG_SCRIPTMETRICS = 1175,
236 RPMTAG_BUILDCPUCLOCK = 1176,
237 RPMTAG_FILEDIGESTALGOS = 1177,
238 RPMTAG_VARIANTS = 1178,
239 RPMTAG_XMAJOR = 1179,
240 RPMTAG_XMINOR = 1180,
241 RPMTAG_REPOTAG = 1181,
242 RPMTAG_KEYWORDS = 1182,
243 RPMTAG_BUILDPLATFORMS = 1183,
244 RPMTAG_PACKAGECOLOR = 1184,
245 RPMTAG_PACKAGEPREFCOLOR = 1185,
246 RPMTAG_XATTRSDICT = 1186,
247 RPMTAG_FILEXATTRSX = 1187,
248 RPMTAG_DEPATTRSDICT = 1188,
249 RPMTAG_CONFLICTATTRSX = 1189,
250 RPMTAG_OBSOLETEATTRSX = 1190,
251 RPMTAG_PROVIDEATTRSX = 1191,
252 RPMTAG_REQUIREATTRSX = 1192,
253 RPMTAG_BUILDPROVIDES = 1193,
254 RPMTAG_BUILDOBSOLETES = 1194,
255 RPMTAG_DBINSTANCE = 1195,
256 RPMTAG_NVRA = 1196,
257
258 RPMTAG_FILENAMES = 5000,
259 RPMTAG_FILEPROVIDE = 5001,
260 RPMTAG_FILEREQUIRE = 5002,
261 RPMTAG_FSNAMES = 5003,
262 RPMTAG_FSSIZES = 5004,
263 RPMTAG_TRIGGERCONDS = 5005,
264 RPMTAG_TRIGGERTYPE = 5006,
265 RPMTAG_ORIGFILENAMES = 5007,
266 RPMTAG_LONGFILESIZES = 5008,
267 RPMTAG_LONGSIZE = 5009,
268 RPMTAG_FILECAPS = 5010,
269 RPMTAG_FILEDIGESTALGO = 5011,
270 RPMTAG_BUGURL = 5012,
271 RPMTAG_EVR = 5013,
272 RPMTAG_NVR = 5014,
273 RPMTAG_NEVR = 5015,
274 RPMTAG_NEVRA = 5016,
275 RPMTAG_HEADERCOLOR = 5017,
276 RPMTAG_VERBOSE = 5018,
277 RPMTAG_EPOCHNUM = 5019,
278 RPMTAG_PREINFLAGS = 5020,
279 RPMTAG_POSTINFLAGS = 5021,
280 RPMTAG_PREUNFLAGS = 5022,
281 RPMTAG_POSTUNFLAGS = 5023,
282 RPMTAG_PRETRANSFLAGS = 5024,
283 RPMTAG_POSTTRANSFLAGS = 5025,
284 RPMTAG_VERIFYSCRIPTFLAGS = 5026,
285 RPMTAG_TRIGGERSCRIPTFLAGS = 5027,
286 RPMTAG_COLLECTIONS = 5029,
287 RPMTAG_POLICYNAMES = 5030,
288 RPMTAG_POLICYTYPES = 5031,
289 RPMTAG_POLICYTYPESINDEXES = 5032,
290 RPMTAG_POLICYFLAGS = 5033,
291 RPMTAG_VCS = 5034,
292 RPMTAG_ORDERNAME = 5035,
293 RPMTAG_ORDERVERSION = 5036,
294 RPMTAG_ORDERFLAGS = 5037,
295 RPMTAG_MSSFMANIFEST = 5038,
296 RPMTAG_MSSFDOMAIN = 5039,
297 RPMTAG_INSTFILENAMES = 5040,
298 RPMTAG_REQUIRENEVRS = 5041,
299 RPMTAG_PROVIDENEVRS = 5042,
300 RPMTAG_OBSOLETENEVRS = 5043,
301 RPMTAG_CONFLICTNEVRS = 5044,
302 RPMTAG_FILENLINKS = 5045,
303 RPMTAG_RECOMMENDNAME = 5046,
304
305 RPMTAG_RECOMMENDVERSION = 5047,
306 RPMTAG_RECOMMENDFLAGS = 5048,
307 RPMTAG_SUGGESTNAME = 5049,
308
309 RPMTAG_SUGGESTVERSION = 5050,
310 RPMTAG_SUGGESTFLAGS = 5051,
311 RPMTAG_SUPPLEMENTNAME = 5052,
312
313 RPMTAG_SUPPLEMENTVERSION = 5053,
314 RPMTAG_SUPPLEMENTFLAGS = 5054,
315 RPMTAG_ENHANCENAME = 5055,
316
317 RPMTAG_ENHANCEVERSION = 5056,
318 RPMTAG_ENHANCEFLAGS = 5057,
319 RPMTAG_RECOMMENDNEVRS = 5058,
320 RPMTAG_SUGGESTNEVRS = 5059,
321 RPMTAG_SUPPLEMENTNEVRS = 5060,
322 RPMTAG_ENHANCENEVRS = 5061,
323 RPMTAG_ENCODING = 5062,
324 RPMTAG_FILETRIGGERIN = 5063,
325 RPMTAG_FILETRIGGERUN = 5064,
326 RPMTAG_FILETRIGGERPOSTUN = 5065,
327 RPMTAG_FILETRIGGERSCRIPTS = 5066,
328 RPMTAG_FILETRIGGERSCRIPTPROG = 5067,
329 RPMTAG_FILETRIGGERSCRIPTFLAGS = 5068,
330 RPMTAG_FILETRIGGERNAME = 5069,
331 RPMTAG_FILETRIGGERINDEX = 5070,
332 RPMTAG_FILETRIGGERVERSION = 5071,
333 RPMTAG_FILETRIGGERFLAGS = 5072,
334 RPMTAG_TRANSFILETRIGGERIN = 5073,
335 RPMTAG_TRANSFILETRIGGERUN = 5074,
336 RPMTAG_TRANSFILETRIGGERPOSTUN = 5075,
337 RPMTAG_TRANSFILETRIGGERSCRIPTS = 5076,
338 RPMTAG_TRANSFILETRIGGERSCRIPTPROG = 5077,
339 RPMTAG_TRANSFILETRIGGERSCRIPTFLAGS = 5078,
340 RPMTAG_TRANSFILETRIGGERNAME = 5079,
341 RPMTAG_TRANSFILETRIGGERINDEX = 5080,
342 RPMTAG_TRANSFILETRIGGERVERSION = 5081,
343 RPMTAG_TRANSFILETRIGGERFLAGS = 5082,
344 RPMTAG_REMOVEPATHPOSTFIXES = 5083,
345 RPMTAG_FILETRIGGERPRIORITIES = 5084,
346 RPMTAG_TRANSFILETRIGGERPRIORITIES = 5085,
347 RPMTAG_FILETRIGGERCONDS = 5086,
348 RPMTAG_FILETRIGGERTYPE = 5087,
349 RPMTAG_TRANSFILETRIGGERCONDS = 5088,
350 RPMTAG_TRANSFILETRIGGERTYPE = 5089,
351 RPMTAG_FILESIGNATURES = 5090,
352 RPMTAG_FILESIGNATURELENGTH = 5091,
353 RPMTAG_PAYLOADDIGEST = 5092,
354 RPMTAG_PAYLOADDIGESTALGO = 5093,
355 RPMTAG_AUTOINSTALLED = 5094,
356 RPMTAG_IDENTITY = 5095,
357 RPMTAG_MODULARITYLABEL = 5096,
358 RPMTAG_PAYLOADDIGESTALT = 5097,
359}
360
361#[derive(
362 num_derive::FromPrimitive,
363 num_derive::ToPrimitive,
364 Debug,
365 PartialEq,
366 Eq,
367 Copy,
368 Clone,
369 enum_display_derive::Display,
370)]
371#[allow(non_camel_case_types)]
372pub enum IndexSignatureTag {
373 HEADER_SIGNATURES = HEADER_SIGNATURES,
374 RPMSIGTAG_SIZE = HEADER_TAGBASE,
376
377 RPMSIGTAG_PAYLOADSIZE = HEADER_TAGBASE + 7,
379
380 RPMSIGTAG_SHA1 = 269,
383
384 RPMSIGTAG_MD5 = 1004,
386
387 RPMSIGTAG_DSA = 267,
391
392 RPMSIGTAG_RSA = 268,
396
397 RPMSIGTAG_LONGSIGSIZE = 270,
399
400 RPMSIGTAG_LONGARCHIVESIZE = 271,
402
403 RPMSIGTAG_FILESIGNATURES = 274,
407
408 RPMSIGTAG_FILESIGNATURE_LENGTH = 275,
411
412 RPMSIGTAG_PGP = 1002,
415
416 RPMSIGTAG_GPG = 1005,
419
420 RPMSIGTAG_SHA256 = IndexTag::RPMTAG_SHA256HEADER as isize,
423
424 RPMTAG_INSTALLTIME = IndexTag::RPMTAG_INSTALLTIME as isize,
426}
427
428pub trait TypeName {
429 fn type_name() -> &'static str;
430}
431
432impl TypeName for IndexTag {
433 fn type_name() -> &'static str {
434 "IndexTag"
435 }
436}
437
438impl TypeName for IndexSignatureTag {
439 fn type_name() -> &'static str {
440 "IndexSignatureTag"
441 }
442}
443
444pub const LEAD_SIZE: usize = 96;
446pub const RPM_MAGIC: [u8; 4] = [0xed, 0xab, 0xee, 0xdb];
448
449pub const HEADER_MAGIC: [u8; 3] = [0x8e, 0xad, 0xe8];
451
452pub const RPMSENSE_ANY: u32 = 0;
453pub const RPMSENSE_LESS: u32 = 1 << 1;
454pub const RPMSENSE_GREATER: u32 = 1 << 2;
455pub const RPMSENSE_EQUAL: u32 = 1 << 3;
456
457pub const RPMFILE_CONFIG: i32 = 1;
483pub const RPMFILE_DOC: i32 = 1 << 1;
484pub const PGPHASHALGO_MD5: i32 = 1;
498pub const PGPHASHALGO_SHA1: i32 = 2;
499pub const PGPHASHALGO_RIPEMD160: i32 = 3;
500pub const PGPHASHALGO_MD2: i32 = 5;
501pub const PGPHASHALGO_TIGER192: i32 = 6;
502pub const PGPHASHALGO_HAVAL_5_160: i32 = 7;
503pub const PGPHASHALGO_SHA256: i32 = 8;
504pub const PGPHASHALGO_SHA384: i32 = 9;
505pub const PGPHASHALGO_SHA512: i32 = 10;
506pub const PGPHASHALGO_SHA224: i32 = 11;