rpm  5.4.4
rpmio/rpmiotypes.h
Go to the documentation of this file.
00001 #ifndef _H_RPMIOTYPES_
00002 #define _H_RPMIOTYPES_
00003 
00011 typedef enum rpmRC_e {
00012     RPMRC_OK            = 0,    
00013     RPMRC_NOTFOUND      = 1,    
00014     RPMRC_FAIL          = 2,    
00015     RPMRC_NOTTRUSTED    = 3,    
00016     RPMRC_NOKEY         = 4     
00017 } rpmRC;
00018 
00022 typedef /*@unsignedintegraltype@*/      unsigned char           rpmuint8_t;
00023 typedef /*@unsignedintegraltype@*/      unsigned short          rpmuint16_t;
00024 typedef /*@unsignedintegraltype@*/      unsigned int            rpmuint32_t;
00025 typedef /*@unsignedintegraltype@*/      unsigned long long      rpmuint64_t;
00026 
00029 typedef /*@signedintegraltype@*/        int                     rpmint32_t;
00030 
00033 typedef /*@refcounted@*/ struct rpmioItem_s * rpmioItem;
00034 struct rpmioItem_s {
00035 /*@null@*/
00036     void *use;                  
00037 /*@kept@*/ /*@null@*/
00038     void *pool;                 
00039     void *next;                 
00040 #if defined(__LCLINT__)
00041 /*@refs@*/
00042     int nrefs;                  
00043 #endif
00044 };
00045 
00048 typedef struct rpmioPool_s * rpmioPool;
00049 
00052 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmiob_s * rpmiob;
00053 
00056 /*@unchecked@*/
00057 extern size_t _rpmiob_chunk;
00058 
00061 typedef struct rpmioP_s {
00062     char * str;
00063     char * next;
00064     const char ** av;
00065     int ac;
00066 } * rpmioP;
00067 
00070 typedef /*@abstract@*/ struct DIGEST_CTX_s * DIGEST_CTX;
00071 
00074 typedef /*@abstract@*/ struct pgpPkt_s * pgpPkt;
00075 
00078 typedef /*@abstract@*/ /*@refcounted@*/ struct pgpDig_s * pgpDig;
00079 
00082 typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams;
00083 
00086 typedef rpmuint8_t pgpKeyID_t[8];
00087 
00090 typedef rpmuint8_t pgpTime_t[4];
00091 
00095 typedef enum pgpVSFlags_e {
00096     RPMVSF_DEFAULT      = 0,
00097     RPMVSF_NOHDRCHK     = (1 <<  0),
00098     RPMVSF_NEEDPAYLOAD  = (1 <<  1),
00099     /* bit(s) 2-7 unused */
00100     RPMVSF_NOSHA1HEADER = (1 <<  8),
00101     RPMVSF_NOMD5HEADER  = (1 <<  9),    /* unimplemented */
00102     RPMVSF_NODSAHEADER  = (1 << 10),
00103     RPMVSF_NORSAHEADER  = (1 << 11),
00104     /* bit(s) 12-15 unused */
00105     RPMVSF_NOSHA1       = (1 << 16),    /* unimplemented */
00106     RPMVSF_NOMD5        = (1 << 17),
00107     RPMVSF_NODSA        = (1 << 18),
00108     RPMVSF_NORSA        = (1 << 19)
00109     /* bit(s) 20-31 unused */
00110 } pgpVSFlags;
00111 
00112 #define _RPMVSF_NODIGESTS       \
00113   ( RPMVSF_NOSHA1HEADER |       \
00114     RPMVSF_NOMD5HEADER |        \
00115     RPMVSF_NOSHA1 |             \
00116     RPMVSF_NOMD5 )
00117 
00118 #define _RPMVSF_NOSIGNATURES    \
00119   ( RPMVSF_NODSAHEADER |        \
00120     RPMVSF_NORSAHEADER |        \
00121     RPMVSF_NODSA |              \
00122     RPMVSF_NORSA )
00123 
00124 #define _RPMVSF_NOHEADER        \
00125   ( RPMVSF_NOSHA1HEADER |       \
00126     RPMVSF_NOMD5HEADER |        \
00127     RPMVSF_NODSAHEADER |        \
00128     RPMVSF_NORSAHEADER )
00129 
00130 #define _RPMVSF_NOPAYLOAD       \
00131   ( RPMVSF_NOSHA1 |             \
00132     RPMVSF_NOMD5 |              \
00133     RPMVSF_NODSA |              \
00134     RPMVSF_NORSA )
00135 
00136 /*@-redef@*/ /* LCL: ??? */
00137 typedef /*@abstract@*/ const void * fnpyKey;
00138 /*@=redef@*/
00139 
00143 typedef enum rpmCallbackType_e {
00144     RPMCALLBACK_UNKNOWN         = 0,
00145     RPMCALLBACK_INST_PROGRESS   = (1 <<  0),
00146     RPMCALLBACK_INST_START      = (1 <<  1),
00147     RPMCALLBACK_INST_OPEN_FILE  = (1 <<  2),
00148     RPMCALLBACK_INST_CLOSE_FILE = (1 <<  3),
00149     RPMCALLBACK_TRANS_PROGRESS  = (1 <<  4),
00150     RPMCALLBACK_TRANS_START     = (1 <<  5),
00151     RPMCALLBACK_TRANS_STOP      = (1 <<  6),
00152     RPMCALLBACK_UNINST_PROGRESS = (1 <<  7),
00153     RPMCALLBACK_UNINST_START    = (1 <<  8),
00154     RPMCALLBACK_UNINST_STOP     = (1 <<  9),
00155     RPMCALLBACK_REPACKAGE_PROGRESS = (1 << 10),
00156     RPMCALLBACK_REPACKAGE_START = (1 << 11),
00157     RPMCALLBACK_REPACKAGE_STOP  = (1 << 12),
00158     RPMCALLBACK_UNPACK_ERROR    = (1 << 13),
00159     RPMCALLBACK_CPIO_ERROR      = (1 << 14),
00160     RPMCALLBACK_SCRIPT_ERROR    = (1 << 15)
00161 } rpmCallbackType;
00162 
00165 typedef void * rpmCallbackData;
00166 
00187 typedef enum pgpHashAlgo_e {
00188     PGPHASHALGO_ERROR           =  -1,
00189     PGPHASHALGO_NONE            =  0,
00190     PGPHASHALGO_MD5             =  1,   
00191     PGPHASHALGO_SHA1            =  2,   
00192     PGPHASHALGO_RIPEMD160       =  3,   
00193     PGPHASHALGO_MD2             =  5,   
00194     PGPHASHALGO_TIGER192        =  6,   
00195     PGPHASHALGO_HAVAL_5_160     =  7,   
00196     PGPHASHALGO_SHA256          =  8,   
00197     PGPHASHALGO_SHA384          =  9,   
00198     PGPHASHALGO_SHA512          = 10,   
00199     PGPHASHALGO_SHA224          = 11,   
00201     PGPHASHALGO_MD4             = 104,  
00202     PGPHASHALGO_RIPEMD128       = 105,  
00203     PGPHASHALGO_CRC32           = 106,  
00204     PGPHASHALGO_ADLER32         = 107,  
00205     PGPHASHALGO_CRC64           = 108,  
00206     PGPHASHALGO_JLU32           = 109,  
00208     PGPHASHALGO_RIPEMD256       = 111,  
00209     PGPHASHALGO_RIPEMD320       = 112,  
00210     PGPHASHALGO_SALSA10         = 113,  
00211     PGPHASHALGO_SALSA20         = 114,  
00213     PGPHASHALGO_MD6_224         = 128+0,
00214     PGPHASHALGO_MD6_256         = 128+1,
00215     PGPHASHALGO_MD6_384         = 128+2,
00216     PGPHASHALGO_MD6_512         = 128+3,
00218     PGPHASHALGO_CUBEHASH_224    = 136+0,
00219     PGPHASHALGO_CUBEHASH_256    = 136+1,
00220     PGPHASHALGO_CUBEHASH_384    = 136+2,
00221     PGPHASHALGO_CUBEHASH_512    = 136+3,
00223     PGPHASHALGO_KECCAK_224      = 144+0,
00224     PGPHASHALGO_KECCAK_256      = 144+1,
00225     PGPHASHALGO_KECCAK_384      = 144+2,
00226     PGPHASHALGO_KECCAK_512      = 144+3,
00228     PGPHASHALGO_ECHO_224        = 148+0,
00229     PGPHASHALGO_ECHO_256        = 148+1,
00230     PGPHASHALGO_ECHO_384        = 148+2,
00231     PGPHASHALGO_ECHO_512        = 148+3,
00233     PGPHASHALGO_EDONR_224       = 152+0,
00234     PGPHASHALGO_EDONR_256       = 152+1,
00235     PGPHASHALGO_EDONR_384       = 152+2,
00236     PGPHASHALGO_EDONR_512       = 152+3,
00238     PGPHASHALGO_FUGUE_224       = 156+0,
00239     PGPHASHALGO_FUGUE_256       = 156+1,
00240     PGPHASHALGO_FUGUE_384       = 156+2,
00241     PGPHASHALGO_FUGUE_512       = 156+3,
00243     PGPHASHALGO_SKEIN_224       = 160+0,
00244     PGPHASHALGO_SKEIN_256       = 160+1,
00245     PGPHASHALGO_SKEIN_384       = 160+2,
00246     PGPHASHALGO_SKEIN_512       = 160+3,
00247     PGPHASHALGO_SKEIN_1024      = 160+4,
00249     PGPHASHALGO_BMW_224         = 168+0,
00250     PGPHASHALGO_BMW_256         = 168+1,
00251     PGPHASHALGO_BMW_384         = 168+2,
00252     PGPHASHALGO_BMW_512         = 168+3,
00254     PGPHASHALGO_SHABAL_224      = 176+0,
00255     PGPHASHALGO_SHABAL_256      = 176+1,
00256     PGPHASHALGO_SHABAL_384      = 176+2,
00257     PGPHASHALGO_SHABAL_512      = 176+3,
00259     PGPHASHALGO_SHAVITE3_224    = 180+0,
00260     PGPHASHALGO_SHAVITE3_256    = 180+1,
00261     PGPHASHALGO_SHAVITE3_384    = 180+2,
00262     PGPHASHALGO_SHAVITE3_512    = 180+3,
00264     PGPHASHALGO_BLAKE_224       = 184+0,
00265     PGPHASHALGO_BLAKE_256       = 184+1,
00266     PGPHASHALGO_BLAKE_384       = 184+2,
00267     PGPHASHALGO_BLAKE_512       = 184+3,
00269     PGPHASHALGO_TIB3_224        = 192+0,
00270     PGPHASHALGO_TIB3_256        = 192+1,
00271     PGPHASHALGO_TIB3_384        = 192+2,
00272     PGPHASHALGO_TIB3_512        = 192+3,
00274     PGPHASHALGO_SIMD_224        = 200+0,
00275     PGPHASHALGO_SIMD_256        = 200+1,
00276     PGPHASHALGO_SIMD_384        = 200+2,
00277     PGPHASHALGO_SIMD_512        = 200+3,
00279     PGPHASHALGO_ARIRANG_224     = 208+0,
00280     PGPHASHALGO_ARIRANG_256     = 208+1,
00281     PGPHASHALGO_ARIRANG_384     = 208+2,
00282     PGPHASHALGO_ARIRANG_512     = 208+3,
00284     PGPHASHALGO_LANE_224        = 212+0,
00285     PGPHASHALGO_LANE_256        = 212+1,
00286     PGPHASHALGO_LANE_384        = 212+2,
00287     PGPHASHALGO_LANE_512        = 212+3,
00289     PGPHASHALGO_LUFFA_224       = 216+0,
00290     PGPHASHALGO_LUFFA_256       = 216+1,
00291     PGPHASHALGO_LUFFA_384       = 216+2,
00292     PGPHASHALGO_LUFFA_512       = 216+3,
00294     PGPHASHALGO_CHI_224         = 224+0,
00295     PGPHASHALGO_CHI_256         = 224+1,
00296     PGPHASHALGO_CHI_384         = 224+2,
00297     PGPHASHALGO_CHI_512         = 224+3,
00299     PGPHASHALGO_JH_224          = 232+0,
00300     PGPHASHALGO_JH_256          = 232+1,
00301     PGPHASHALGO_JH_384          = 232+2,
00302     PGPHASHALGO_JH_512          = 232+3,
00304     PGPHASHALGO_GROESTL_224     = 240+0,
00305     PGPHASHALGO_GROESTL_256     = 240+1,
00306     PGPHASHALGO_GROESTL_384     = 240+2,
00307     PGPHASHALGO_GROESTL_512     = 240+3,
00309     PGPHASHALGO_HAMSI_224       = 248+0,
00310     PGPHASHALGO_HAMSI_256       = 248+1,
00311     PGPHASHALGO_HAMSI_384       = 248+2,
00312     PGPHASHALGO_HAMSI_512       = 248+3
00314 } pgpHashAlgo;
00315 
00319 typedef enum rpmDigestFlags_e {
00320     RPMDIGEST_NONE      =       0
00321 } rpmDigestFlags;
00322 
00323 #if defined(_RPMIOB_INTERNAL)
00324 
00326 struct rpmiob_s {
00327     struct rpmioItem_s _item;   
00328     rpmuint8_t * b;             
00329     size_t blen;                
00330     size_t allocated;           
00331 #if defined(__LCLINT__)
00332 /*@refs@*/
00333     int nrefs;                          
00334 #endif
00335 };
00336 #endif
00337 
00338 #ifdef __cplusplus
00339 extern "C" {
00340 #endif
00341 
00347 pgpHashAlgo rpmDigestAlgo(DIGEST_CTX ctx)
00348         /*@*/;
00349 
00355 rpmDigestFlags rpmDigestF(DIGEST_CTX ctx)
00356         /*@*/;
00357 
00363 /*@observer@*/
00364 const char * rpmDigestName(DIGEST_CTX ctx)
00365         /*@*/;
00366 
00373 /*@observer@*/ /*@null@*/
00374 const char * rpmDigestASN1(DIGEST_CTX ctx)
00375         /*@*/;
00376 
00382 /*@only@*/
00383 DIGEST_CTX rpmDigestDup(DIGEST_CTX octx)
00384         /*@*/;
00385 
00393 /*@only@*/ /*@null@*/
00394 DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
00395         /*@*/;
00396 
00404 int rpmDigestUpdate(/*@null@*/ DIGEST_CTX ctx, const void * data, size_t len)
00405         /*@modifies ctx @*/;
00406 
00416 int rpmDigestFinal(/*@only@*/ /*@null@*/ DIGEST_CTX ctx,
00417         /*@null@*/ /*@out@*/ void * datap,
00418         /*@null@*/ /*@out@*/ size_t * lenp, int asAscii)
00419                 /*@modifies *datap, *lenp @*/;
00420 
00429 int rpmHmacInit(DIGEST_CTX ctx, const void * key, size_t keylen)
00430         /*@*/;
00431 
00434 typedef void * (*rpmCallbackFunction)
00435                 (/*@null@*/ const void * h,
00436                 const rpmCallbackType what,
00437                 const rpmuint64_t amount,
00438                 const rpmuint64_t total,
00439                 /*@null@*/ fnpyKey key,
00440                 /*@null@*/ rpmCallbackData data)
00441         /*@globals internalState@*/
00442         /*@modifies internalState@*/;
00443 
00444 #if !defined(SWIG)
00445 
00450 #if defined(WITH_DMALLOC)
00451 #define _free(p) ((p) != NULL ? free((void *)(p)) : (void)0, NULL)
00452 #else
00453 /*@unused@*/ static inline /*@null@*/
00454 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
00455         /*@modifies p @*/
00456 {
00457     if (p != NULL)      free((void *)p);
00458     return NULL;
00459 }
00460 #endif
00461 #endif
00462 
00463 /*@unused@*/ static inline int xislower(int c) /*@*/ {
00464     return (c >= (int)'a' && c <= (int)'z');
00465 }
00466 /*@unused@*/ static inline int xisupper(int c) /*@*/ {
00467     return (c >= (int)'A' && c <= (int)'Z');
00468 }
00469 /*@unused@*/ static inline int xisalpha(int c) /*@*/ {
00470     return (xislower(c) || xisupper(c));
00471 }
00472 /*@unused@*/ static inline int xisdigit(int c) /*@*/ {
00473     return (c >= (int)'0' && c <= (int)'9');
00474 }
00475 /*@unused@*/ static inline int xisalnum(int c) /*@*/ {
00476     return (xisalpha(c) || xisdigit(c));
00477 }
00478 /*@unused@*/ static inline int xisblank(int c) /*@*/ {
00479     return (c == (int)' ' || c == (int)'\t');
00480 }
00481 /*@unused@*/ static inline int xisspace(int c) /*@*/ {
00482     return (xisblank(c) || c == (int)'\n' || c == (int)'\r' || c == (int)'\f' || c == (int)'\v');
00483 }
00484 /*@unused@*/ static inline int xiscntrl(int c) /*@*/ {
00485     return (c < (int)' ');
00486 }
00487 /*@unused@*/ static inline int xisascii(int c) /*@*/ {
00488     return ((c & 0x80) != 0x80);
00489 }
00490 /*@unused@*/ static inline int xisprint(int c) /*@*/ {
00491     return (c >= (int)' ' && xisascii(c));
00492 }
00493 /*@unused@*/ static inline int xisgraph(int c) /*@*/ {
00494     return (c > (int)' ' && xisascii(c));
00495 }
00496 /*@unused@*/ static inline int xispunct(int c) /*@*/ {
00497     return (xisgraph(c) && !xisalnum(c));
00498 }
00499 
00500 /*@unused@*/ static inline int xtolower(int c) /*@*/ {
00501     return ((xisupper(c)) ? (c | ('a' - 'A')) : c);
00502 }
00503 /*@unused@*/ static inline int xtoupper(int c) /*@*/ {
00504     return ((xislower(c)) ? (c & ~('a' - 'A')) : c);
00505 }
00506 
00510 int xstrcasecmp(const char * s1, const char * s2)               /*@*/;
00511 
00515 int xstrncasecmp(const char *s1, const char * s2, size_t n)     /*@*/;
00516 
00520 /*@only@*/ /*@null@*/
00521 const char * xstrtolocale(/*@only@*/ const char *str)
00522         /*@modifies *str @*/;
00523 
00529 /*@unused@*/ /*@null@*/
00530 rpmiob rpmiobUnlink (/*@killref@*/ /*@null@*/ rpmiob iob)
00531         /*@globals fileSystem @*/
00532         /*@modifies iob, fileSystem @*/;
00533 #define rpmiobUnlink(_iob)      \
00534     ((rpmiob)rpmioUnlinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00535 
00541 /*@unused@*/ /*@newref@*/ /*@null@*/
00542 rpmiob rpmiobLink (/*@null@*/ rpmiob iob)
00543         /*@globals fileSystem @*/
00544         /*@modifies iob, fileSystem @*/;
00545 #define rpmiobLink(_iob)        \
00546     ((rpmiob)rpmioLinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00547 
00553 /*@null@*/
00554 rpmiob rpmiobFree( /*@killref@*/ rpmiob iob)
00555         /*@globals fileSystem @*/
00556         /*@modifies iob, fileSystem @*/;
00557 #define rpmiobFree(_iob)        \
00558     ((rpmiob)rpmioFreePoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00559 
00565 /*@newref@*/ /*@null@*/
00566 rpmiob rpmiobNew(size_t len)
00567         /*@globals fileSystem @*/
00568         /*@modifies fileSystem @*/;
00569 
00575 rpmiob rpmiobEmpty(/*@returned@*/ rpmiob iob)
00576         /*@modifies iob @*/;
00577 
00583 rpmiob rpmiobRTrim(/*@returned@*/ rpmiob iob)
00584         /*@modifies iob @*/;
00585 
00593 rpmiob rpmiobAppend(/*@returned@*/ rpmiob iob, const char * s, size_t nl)
00594         /*@modifies iob @*/;
00595 
00601 rpmuint8_t * rpmiobBuf(rpmiob iob)
00602         /*@*/;
00603 
00609 char * rpmiobStr(rpmiob iob)
00610         /*@*/;
00611 
00617 size_t rpmiobLen(rpmiob iob)
00618         /*@*/;
00619 
00620 #if defined(_RPMIOB_INTERNAL)
00621 
00627 int rpmiobSlurp(const char * fn, rpmiob * iobp)
00628         /*@globals h_errno, fileSystem, internalState @*/
00629         /*@modifies *iobp, fileSystem, internalState @*/;
00630 #endif
00631 
00637 /*@null@*/
00638 rpmioP rpmioPFree(/*@only@*/ /*@null@*/ rpmioP P)
00639         /*@modifies P @*/;
00640 
00647 rpmRC rpmioParse(rpmioP *Pptr, const char * str)
00648         /*@modifies *Pptr @*/;
00649 
00650 #ifdef __cplusplus
00651 }
00652 #endif
00653 
00654 #endif /* _H_RPMIOTYPES_ */