rpm 5.3.7

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 #if defined(__LCLINT__)
00040 /*@refs@*/
00041     int nrefs;                  
00042 #endif
00043 };
00044 
00047 typedef struct rpmioPool_s * rpmioPool;
00048 
00051 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmiob_s * rpmiob;
00052 
00055 /*@unchecked@*/
00056 extern size_t _rpmiob_chunk;
00057 
00060 typedef struct rpmioP_s {
00061     char * str;
00062     char * next;
00063     const char ** av;
00064     int ac;
00065 } * rpmioP;
00066 
00069 typedef /*@abstract@*/ struct DIGEST_CTX_s * DIGEST_CTX;
00070 
00073 typedef /*@abstract@*/ struct pgpPkt_s * pgpPkt;
00074 
00077 typedef /*@abstract@*/ /*@refcounted@*/ struct pgpDig_s * pgpDig;
00078 
00081 typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams;
00082 
00085 typedef rpmuint8_t pgpKeyID_t[8];
00086 
00089 typedef rpmuint8_t pgpTime_t[4];
00090 
00094 typedef enum pgpVSFlags_e {
00095     RPMVSF_DEFAULT      = 0,
00096     RPMVSF_NOHDRCHK     = (1 <<  0),
00097     RPMVSF_NEEDPAYLOAD  = (1 <<  1),
00098     /* bit(s) 2-7 unused */
00099     RPMVSF_NOSHA1HEADER = (1 <<  8),
00100     RPMVSF_NOMD5HEADER  = (1 <<  9),    /* unimplemented */
00101     RPMVSF_NODSAHEADER  = (1 << 10),
00102     RPMVSF_NORSAHEADER  = (1 << 11),
00103     /* bit(s) 12-15 unused */
00104     RPMVSF_NOSHA1       = (1 << 16),    /* unimplemented */
00105     RPMVSF_NOMD5        = (1 << 17),
00106     RPMVSF_NODSA        = (1 << 18),
00107     RPMVSF_NORSA        = (1 << 19)
00108     /* bit(s) 20-31 unused */
00109 } pgpVSFlags;
00110 
00111 #define _RPMVSF_NODIGESTS       \
00112   ( RPMVSF_NOSHA1HEADER |       \
00113     RPMVSF_NOMD5HEADER |        \
00114     RPMVSF_NOSHA1 |             \
00115     RPMVSF_NOMD5 )
00116 
00117 #define _RPMVSF_NOSIGNATURES    \
00118   ( RPMVSF_NODSAHEADER |        \
00119     RPMVSF_NORSAHEADER |        \
00120     RPMVSF_NODSA |              \
00121     RPMVSF_NORSA )
00122 
00123 #define _RPMVSF_NOHEADER        \
00124   ( RPMVSF_NOSHA1HEADER |       \
00125     RPMVSF_NOMD5HEADER |        \
00126     RPMVSF_NODSAHEADER |        \
00127     RPMVSF_NORSAHEADER )
00128 
00129 #define _RPMVSF_NOPAYLOAD       \
00130   ( RPMVSF_NOSHA1 |             \
00131     RPMVSF_NOMD5 |              \
00132     RPMVSF_NODSA |              \
00133     RPMVSF_NORSA )
00134 
00135 /*@-redef@*/ /* LCL: ??? */
00136 typedef /*@abstract@*/ const void * fnpyKey;
00137 /*@=redef@*/
00138 
00142 typedef enum rpmCallbackType_e {
00143     RPMCALLBACK_UNKNOWN         = 0,
00144     RPMCALLBACK_INST_PROGRESS   = (1 <<  0),
00145     RPMCALLBACK_INST_START      = (1 <<  1),
00146     RPMCALLBACK_INST_OPEN_FILE  = (1 <<  2),
00147     RPMCALLBACK_INST_CLOSE_FILE = (1 <<  3),
00148     RPMCALLBACK_TRANS_PROGRESS  = (1 <<  4),
00149     RPMCALLBACK_TRANS_START     = (1 <<  5),
00150     RPMCALLBACK_TRANS_STOP      = (1 <<  6),
00151     RPMCALLBACK_UNINST_PROGRESS = (1 <<  7),
00152     RPMCALLBACK_UNINST_START    = (1 <<  8),
00153     RPMCALLBACK_UNINST_STOP     = (1 <<  9),
00154     RPMCALLBACK_REPACKAGE_PROGRESS = (1 << 10),
00155     RPMCALLBACK_REPACKAGE_START = (1 << 11),
00156     RPMCALLBACK_REPACKAGE_STOP  = (1 << 12),
00157     RPMCALLBACK_UNPACK_ERROR    = (1 << 13),
00158     RPMCALLBACK_CPIO_ERROR      = (1 << 14),
00159     RPMCALLBACK_SCRIPT_ERROR    = (1 << 15)
00160 } rpmCallbackType;
00161 
00164 typedef void * rpmCallbackData;
00165 
00186 typedef enum pgpHashAlgo_e {
00187     PGPHASHALGO_ERROR           =  -1,
00188     PGPHASHALGO_NONE            =  0,
00189     PGPHASHALGO_MD5             =  1,   
00190     PGPHASHALGO_SHA1            =  2,   
00191     PGPHASHALGO_RIPEMD160       =  3,   
00192     PGPHASHALGO_MD2             =  5,   
00193     PGPHASHALGO_TIGER192        =  6,   
00194     PGPHASHALGO_HAVAL_5_160     =  7,   
00195     PGPHASHALGO_SHA256          =  8,   
00196     PGPHASHALGO_SHA384          =  9,   
00197     PGPHASHALGO_SHA512          = 10,   
00198     PGPHASHALGO_SHA224          = 11,   
00200     PGPHASHALGO_MD4             = 104,  
00201     PGPHASHALGO_RIPEMD128       = 105,  
00202     PGPHASHALGO_CRC32           = 106,  
00203     PGPHASHALGO_ADLER32         = 107,  
00204     PGPHASHALGO_CRC64           = 108,  
00205     PGPHASHALGO_JLU32           = 109,  
00207     PGPHASHALGO_RIPEMD256       = 111,  
00208     PGPHASHALGO_RIPEMD320       = 112,  
00209     PGPHASHALGO_SALSA10         = 113,  
00210     PGPHASHALGO_SALSA20         = 114,  
00212     PGPHASHALGO_MD6_224         = 128+0,
00213     PGPHASHALGO_MD6_256         = 128+1,
00214     PGPHASHALGO_MD6_384         = 128+2,
00215     PGPHASHALGO_MD6_512         = 128+3,
00217     PGPHASHALGO_CUBEHASH_224    = 136+0,
00218     PGPHASHALGO_CUBEHASH_256    = 136+1,
00219     PGPHASHALGO_CUBEHASH_384    = 136+2,
00220     PGPHASHALGO_CUBEHASH_512    = 136+3,
00222     PGPHASHALGO_KECCAK_224      = 144+0,
00223     PGPHASHALGO_KECCAK_256      = 144+1,
00224     PGPHASHALGO_KECCAK_384      = 144+2,
00225     PGPHASHALGO_KECCAK_512      = 144+3,
00227     PGPHASHALGO_ECHO_224        = 148+0,
00228     PGPHASHALGO_ECHO_256        = 148+1,
00229     PGPHASHALGO_ECHO_384        = 148+2,
00230     PGPHASHALGO_ECHO_512        = 148+3,
00232     PGPHASHALGO_EDONR_224       = 152+0,
00233     PGPHASHALGO_EDONR_256       = 152+1,
00234     PGPHASHALGO_EDONR_384       = 152+2,
00235     PGPHASHALGO_EDONR_512       = 152+3,
00237     PGPHASHALGO_FUGUE_224       = 156+0,
00238     PGPHASHALGO_FUGUE_256       = 156+1,
00239     PGPHASHALGO_FUGUE_384       = 156+2,
00240     PGPHASHALGO_FUGUE_512       = 156+3,
00242     PGPHASHALGO_SKEIN_224       = 160+0,
00243     PGPHASHALGO_SKEIN_256       = 160+1,
00244     PGPHASHALGO_SKEIN_384       = 160+2,
00245     PGPHASHALGO_SKEIN_512       = 160+3,
00246     PGPHASHALGO_SKEIN_1024      = 160+4,
00248     PGPHASHALGO_BMW_224         = 168+0,
00249     PGPHASHALGO_BMW_256         = 168+1,
00250     PGPHASHALGO_BMW_384         = 168+2,
00251     PGPHASHALGO_BMW_512         = 168+3,
00253     PGPHASHALGO_SHABAL_224      = 176+0,
00254     PGPHASHALGO_SHABAL_256      = 176+1,
00255     PGPHASHALGO_SHABAL_384      = 176+2,
00256     PGPHASHALGO_SHABAL_512      = 176+3,
00258     PGPHASHALGO_SHAVITE3_224    = 180+0,
00259     PGPHASHALGO_SHAVITE3_256    = 180+1,
00260     PGPHASHALGO_SHAVITE3_384    = 180+2,
00261     PGPHASHALGO_SHAVITE3_512    = 180+3,
00263     PGPHASHALGO_BLAKE_224       = 184+0,
00264     PGPHASHALGO_BLAKE_256       = 184+1,
00265     PGPHASHALGO_BLAKE_384       = 184+2,
00266     PGPHASHALGO_BLAKE_512       = 184+3,
00268     PGPHASHALGO_TIB3_224        = 192+0,
00269     PGPHASHALGO_TIB3_256        = 192+1,
00270     PGPHASHALGO_TIB3_384        = 192+2,
00271     PGPHASHALGO_TIB3_512        = 192+3,
00273     PGPHASHALGO_SIMD_224        = 200+0,
00274     PGPHASHALGO_SIMD_256        = 200+1,
00275     PGPHASHALGO_SIMD_384        = 200+2,
00276     PGPHASHALGO_SIMD_512        = 200+3,
00278     PGPHASHALGO_ARIRANG_224     = 208+0,
00279     PGPHASHALGO_ARIRANG_256     = 208+1,
00280     PGPHASHALGO_ARIRANG_384     = 208+2,
00281     PGPHASHALGO_ARIRANG_512     = 208+3,
00283     PGPHASHALGO_LANE_224        = 212+0,
00284     PGPHASHALGO_LANE_256        = 212+1,
00285     PGPHASHALGO_LANE_384        = 212+2,
00286     PGPHASHALGO_LANE_512        = 212+3,
00288     PGPHASHALGO_LUFFA_224       = 216+0,
00289     PGPHASHALGO_LUFFA_256       = 216+1,
00290     PGPHASHALGO_LUFFA_384       = 216+2,
00291     PGPHASHALGO_LUFFA_512       = 216+3,
00293     PGPHASHALGO_CHI_224         = 224+0,
00294     PGPHASHALGO_CHI_256         = 224+1,
00295     PGPHASHALGO_CHI_384         = 224+2,
00296     PGPHASHALGO_CHI_512         = 224+3,
00298     PGPHASHALGO_JH_224          = 232+0,
00299     PGPHASHALGO_JH_256          = 232+1,
00300     PGPHASHALGO_JH_384          = 232+2,
00301     PGPHASHALGO_JH_512          = 232+3,
00303     PGPHASHALGO_GROESTL_224     = 240+0,
00304     PGPHASHALGO_GROESTL_256     = 240+1,
00305     PGPHASHALGO_GROESTL_384     = 240+2,
00306     PGPHASHALGO_GROESTL_512     = 240+3,
00308     PGPHASHALGO_HAMSI_224       = 248+0,
00309     PGPHASHALGO_HAMSI_256       = 248+1,
00310     PGPHASHALGO_HAMSI_384       = 248+2,
00311     PGPHASHALGO_HAMSI_512       = 248+3,
00313 } pgpHashAlgo;
00314 
00318 typedef enum rpmDigestFlags_e {
00319     RPMDIGEST_NONE      =       0,
00320 } rpmDigestFlags;
00321 
00322 #if defined(_RPMIOB_INTERNAL)
00323 
00325 struct rpmiob_s{
00326     struct rpmioItem_s _item;   
00327     rpmuint8_t * b;             
00328     size_t blen;                
00329     size_t allocated;           
00330 #if defined(__LCLINT__)
00331 /*@refs@*/
00332     int nrefs;                          
00333 #endif
00334 };
00335 #endif
00336 
00337 #ifdef __cplusplus
00338 extern "C" {
00339 #endif
00340 
00346 pgpHashAlgo rpmDigestAlgo(DIGEST_CTX ctx)
00347         /*@*/;
00348 
00354 rpmDigestFlags rpmDigestF(DIGEST_CTX ctx)
00355         /*@*/;
00356 
00362 /*@observer@*/
00363 const char * rpmDigestName(DIGEST_CTX ctx)
00364         /*@*/;
00365 
00372 /*@observer@*/ /*@null@*/
00373 const char * rpmDigestASN1(DIGEST_CTX ctx)
00374         /*@*/;
00375 
00381 /*@only@*/
00382 DIGEST_CTX rpmDigestDup(DIGEST_CTX octx)
00383         /*@*/;
00384 
00392 /*@only@*/ /*@null@*/
00393 DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
00394         /*@*/;
00395 
00403 int rpmDigestUpdate(/*@null@*/ DIGEST_CTX ctx, const void * data, size_t len)
00404         /*@modifies ctx @*/;
00405 
00415 int rpmDigestFinal(/*@only@*/ /*@null@*/ DIGEST_CTX ctx,
00416         /*@null@*/ /*@out@*/ void * datap,
00417         /*@null@*/ /*@out@*/ size_t * lenp, int asAscii)
00418                 /*@modifies *datap, *lenp @*/;
00419 
00428 int rpmHmacInit(DIGEST_CTX ctx, const void * key, size_t keylen)
00429         /*@*/;
00430 
00433 typedef void * (*rpmCallbackFunction)
00434                 (/*@null@*/ const void * h,
00435                 const rpmCallbackType what,
00436                 const rpmuint64_t amount,
00437                 const rpmuint64_t total,
00438                 /*@null@*/ fnpyKey key,
00439                 /*@null@*/ rpmCallbackData data)
00440         /*@globals internalState@*/
00441         /*@modifies internalState@*/;
00442 
00443 #if !defined(SWIG)
00444 
00449 #if defined(WITH_DMALLOC)
00450 #define _free(p) ((p) != NULL ? free((void *)(p)) : (void)0, NULL)
00451 #else
00452 /*@unused@*/ static inline /*@null@*/
00453 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p)
00454         /*@modifies p @*/
00455 {
00456     if (p != NULL)      free((void *)p);
00457     return NULL;
00458 }
00459 #endif
00460 #endif
00461 
00462 /*@unused@*/ static inline int xislower(int c) /*@*/ {
00463     return (c >= (int)'a' && c <= (int)'z');
00464 }
00465 /*@unused@*/ static inline int xisupper(int c) /*@*/ {
00466     return (c >= (int)'A' && c <= (int)'Z');
00467 }
00468 /*@unused@*/ static inline int xisalpha(int c) /*@*/ {
00469     return (xislower(c) || xisupper(c));
00470 }
00471 /*@unused@*/ static inline int xisdigit(int c) /*@*/ {
00472     return (c >= (int)'0' && c <= (int)'9');
00473 }
00474 /*@unused@*/ static inline int xisalnum(int c) /*@*/ {
00475     return (xisalpha(c) || xisdigit(c));
00476 }
00477 /*@unused@*/ static inline int xisblank(int c) /*@*/ {
00478     return (c == (int)' ' || c == (int)'\t');
00479 }
00480 /*@unused@*/ static inline int xisspace(int c) /*@*/ {
00481     return (xisblank(c) || c == (int)'\n' || c == (int)'\r' || c == (int)'\f' || c == (int)'\v');
00482 }
00483 /*@unused@*/ static inline int xiscntrl(int c) /*@*/ {
00484     return (c < (int)' ');
00485 }
00486 /*@unused@*/ static inline int xisascii(int c) /*@*/ {
00487     return ((c & 0x80) != 0x80);
00488 }
00489 /*@unused@*/ static inline int xisprint(int c) /*@*/ {
00490     return (c >= (int)' ' && xisascii(c));
00491 }
00492 /*@unused@*/ static inline int xisgraph(int c) /*@*/ {
00493     return (c > (int)' ' && xisascii(c));
00494 }
00495 /*@unused@*/ static inline int xispunct(int c) /*@*/ {
00496     return (xisgraph(c) && !xisalnum(c));
00497 }
00498 
00499 /*@unused@*/ static inline int xtolower(int c) /*@*/ {
00500     return ((xisupper(c)) ? (c | ('a' - 'A')) : c);
00501 }
00502 /*@unused@*/ static inline int xtoupper(int c) /*@*/ {
00503     return ((xislower(c)) ? (c & ~('a' - 'A')) : c);
00504 }
00505 
00509 int xstrcasecmp(const char * s1, const char * s2)               /*@*/;
00510 
00514 int xstrncasecmp(const char *s1, const char * s2, size_t n)     /*@*/;
00515 
00519 /*@only@*/ /*@null@*/
00520 const char * xstrtolocale(/*@only@*/ const char *str)
00521         /*@modifies *str @*/;
00522 
00528 /*@unused@*/ /*@null@*/
00529 rpmiob rpmiobUnlink (/*@killref@*/ /*@null@*/ rpmiob iob)
00530         /*@globals fileSystem @*/
00531         /*@modifies iob, fileSystem @*/;
00532 #define rpmiobUnlink(_iob)      \
00533     ((rpmiob)rpmioUnlinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00534 
00540 /*@unused@*/ /*@newref@*/ /*@null@*/
00541 rpmiob rpmiobLink (/*@null@*/ rpmiob iob)
00542         /*@globals fileSystem @*/
00543         /*@modifies iob, fileSystem @*/;
00544 #define rpmiobLink(_iob)        \
00545     ((rpmiob)rpmioLinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00546 
00552 /*@null@*/
00553 rpmiob rpmiobFree( /*@killref@*/ rpmiob iob)
00554         /*@globals fileSystem @*/
00555         /*@modifies iob, fileSystem @*/;
00556 #define rpmiobFree(_iob)        \
00557     ((rpmiob)rpmioFreePoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00558 
00564 /*@newref@*/ /*@null@*/
00565 rpmiob rpmiobNew(size_t len)
00566         /*@globals fileSystem @*/
00567         /*@modifies fileSystem @*/;
00568 
00574 rpmiob rpmiobEmpty(/*@returned@*/ rpmiob iob)
00575         /*@modifies iob @*/;
00576 
00582 rpmiob rpmiobRTrim(/*@returned@*/ rpmiob iob)
00583         /*@modifies iob @*/;
00584 
00592 rpmiob rpmiobAppend(/*@returned@*/ rpmiob iob, const char * s, size_t nl)
00593         /*@modifies iob @*/;
00594 
00600 rpmuint8_t * rpmiobBuf(rpmiob iob)
00601         /*@*/;
00602 
00608 char * rpmiobStr(rpmiob iob)
00609         /*@*/;
00610 
00616 size_t rpmiobLen(rpmiob iob)
00617         /*@*/;
00618 
00619 #if defined(_RPMIOB_INTERNAL)
00620 
00626 int rpmiobSlurp(const char * fn, rpmiob * iobp)
00627         /*@globals h_errno, fileSystem, internalState @*/
00628         /*@modifies *iobp, fileSystem, internalState @*/;
00629 #endif
00630 
00636 /*@null@*/
00637 rpmioP rpmioPFree(/*@only@*/ /*@null@*/ rpmioP P)
00638         /*@modifies P @*/;
00639 
00646 rpmRC rpmioParse(rpmioP *Pptr, const char * str)
00647         /*@modifies *Pptr @*/;
00648 
00649 #ifdef __cplusplus
00650 }
00651 #endif
00652 
00653 #endif /* _H_RPMIOTYPES_ */