SIGNATURE.


Files

file  rpmlib.h
 In Memoriam: Steve Taylor <staylor@redhat.com> was here, now he's not.
file  signature.c
file  signature.h
 Generate and verify signatures.
file  digest.c
file  rpmpgp.c
 Routines to handle RFC-2440 detached signatures.

RPMK

enum  rpmtagSignature {
  RPMSIGTAG_SIZE = 1000, RPMSIGTAG_LEMD5_1 = 1001, RPMSIGTAG_PGP = 1002, RPMSIGTAG_LEMD5_2 = 1003,
  RPMSIGTAG_MD5 = 1004, RPMSIGTAG_GPG = 1005, RPMSIGTAG_PGP5 = 1006, RPMSIGTAG_PAYLOADSIZE = 1007,
  RPMSIGTAG_BADSHA1_1 = RPMTAG_BADSHA1_1, RPMSIGTAG_BADSHA1_2 = RPMTAG_BADSHA1_2, RPMSIGTAG_SHA1 = RPMTAG_SHA1HEADER, RPMSIGTAG_DSA = RPMTAG_DSAHEADER,
  RPMSIGTAG_RSA = RPMTAG_RSAHEADER
}
 Tags found in signature header from package. More...
rpmRC rpmVerifySignature (const rpmts ts, char *result)
 Verify a signature from a package.
Header rpmFreeSignature (Header sigh)
 Destroy signature header from package.

Typedefs

typedef enum sigType_e sigType
 Signature types stored in rpm lead.
typedef enum pgpVersion_e pgpVersion
 Identify PGP versions.

Enumerations

enum  sigType_e { RPMSIGTYPE_HEADERSIG = 5 }
 Signature types stored in rpm lead. More...
enum  pgpVersion_e { PGP_NOTDETECTED = -1, PGP_UNKNOWN = 0, PGP_2 = 2, PGP_5 = 5 }
 Identify PGP versions. More...

Functions

Header rpmNewSignature (void)
 Return new, empty (signature) header instance.
rpmRC rpmReadSignature (FD_t fd, Header *sighp, sigType sig_type, const char **msg)
 Read (and verify header+payload size) signature header.
int rpmWriteSignature (FD_t fd, Header sigh)
 Write signature header.
int rpmAddSignature (Header sigh, const char *file, int_32 sigTag, const char *passPhrase)
 Generate signature(s) from a header+payload file, save in signature header.
int rpmLookupSignatureType (int action)
 Return type of signature needed for signing/building.
char * rpmGetPassPhrase (const char *prompt, const int sigTag)
 Read a pass phrase using getpass(3), confirm with gpg/pgp helper binaries.
const char * rpmDetectPGPVersion (pgpVersion *pgpVer)
 Return path to pgp executable of given type, or NULL when not found.

Typedef Documentation

typedef enum pgpVersion_e pgpVersion

Identify PGP versions.

Note:
Greater than 0 is a valid PGP version.

typedef enum sigType_e sigType

Signature types stored in rpm lead.


Enumeration Type Documentation

enum pgpVersion_e

Identify PGP versions.

Note:
Greater than 0 is a valid PGP version.
Enumerator:
PGP_NOTDETECTED 
PGP_UNKNOWN 
PGP_2 
PGP_5 

Definition at line 22 of file signature.h.

enum rpmtagSignature

Tags found in signature header from package.

Enumerator:
RPMSIGTAG_SIZE  internal Header+Payload size in bytes.
RPMSIGTAG_LEMD5_1  internal Broken MD5, take 1
Deprecated:
legacy.
RPMSIGTAG_PGP  internal PGP 2.6.3 signature.
RPMSIGTAG_LEMD5_2  internal Broken MD5, take 2
Deprecated:
legacy.
RPMSIGTAG_MD5  internal MD5 signature.
RPMSIGTAG_GPG  internal GnuPG signature.
RPMSIGTAG_PGP5  internal PGP5 signature
Deprecated:
legacy.
RPMSIGTAG_PAYLOADSIZE  internal uncompressed payload size in bytes.
RPMSIGTAG_BADSHA1_1  internal Broken SHA1, take 1.
RPMSIGTAG_BADSHA1_2  internal Broken SHA1, take 2.
RPMSIGTAG_SHA1  internal sha1 header digest.
RPMSIGTAG_DSA  internal DSA header signature.
RPMSIGTAG_RSA  internal RSA header signature.

Definition at line 1078 of file rpmlib.h.

enum sigType_e

Signature types stored in rpm lead.

Enumerator:
RPMSIGTYPE_HEADERSIG  Header style signature

Definition at line 14 of file signature.h.


Function Documentation

int rpmAddSignature ( Header  sigh,
const char *  file,
int_32  sigTag,
const char *  passPhrase 
)

Generate signature(s) from a header+payload file, save in signature header.

Parameters:
sigh signature header
file header+payload file name
sigTag type of signature(s) to add
passPhrase private key pass phrase
Returns:
0 on success, -1 on failure

Definition at line 800 of file signature.c.

References alloca(), dodigest(), headerAddEntry(), makeGPGSignature(), makeHDRSignature(), makePGPSignature(), PGPHASHALGO_MD5, RPM_BIN_TYPE, RPM_INT32_TYPE, RPMSIGTAG_DSA, RPMSIGTAG_GPG, RPMSIGTAG_MD5, RPMSIGTAG_PGP, RPMSIGTAG_PGP5, RPMSIGTAG_RSA, RPMSIGTAG_SHA1, and RPMSIGTAG_SIZE.

Referenced by rpmReSign(), and writeRPM().

const char* rpmDetectPGPVersion ( pgpVersion pgpVer  ) 

Return path to pgp executable of given type, or NULL when not found.

Return values:
pgpVer pgp version
Returns:
path to pgp executable

Definition at line 69 of file signature.c.

References _free(), alloca(), PGP_2, PGP_5, PGP_NOTDETECTED, PGP_UNKNOWN, rpmGetPath(), and stpcpy().

Referenced by checkPassPhrase(), main(), and makePGPSignature().

Header rpmFreeSignature ( Header  sigh  ) 

Destroy signature header from package.

Parameters:
sigh signature header
Returns:
NULL always

Definition at line 381 of file signature.c.

References headerFree().

Referenced by rpmpsmStage(), rpmReadPackageFile(), rpmReSign(), rpmVerifySignatures(), and writeRPM().

char* rpmGetPassPhrase ( const char *  prompt,
const int  sigTag 
)

Read a pass phrase using getpass(3), confirm with gpg/pgp helper binaries.

Parameters:
prompt user prompt
sigTag signature type/tag
Returns:
pass phrase

Definition at line 964 of file signature.c.

References _, _free(), checkPassPhrase(), Getpass, RPMERR_SIGGEN, rpmError, rpmExpand(), RPMSIGTAG_DSA, RPMSIGTAG_GPG, RPMSIGTAG_PGP, RPMSIGTAG_PGP5, and RPMSIGTAG_RSA.

Referenced by main().

int rpmLookupSignatureType ( int  action  ) 

Return type of signature needed for signing/building.

Parameters:
action enable/disable/query action
Returns:
sigTag to use, 0 if none, -1 on error

Definition at line 29 of file signature.c.

References _free(), rpmExpand(), RPMLOOKUPSIG_DISABLE, RPMLOOKUPSIG_ENABLE, RPMLOOKUPSIG_QUERY, RPMSIGTAG_GPG, RPMSIGTAG_PGP, and xstrcasecmp().

Referenced by main(), rpmReSign(), and writeRPM().

Header rpmNewSignature ( void   ) 

Return new, empty (signature) header instance.

Returns:
signature header

Definition at line 375 of file signature.c.

References headerNew().

Referenced by headerRegenSigHeader(), and writeRPM().

rpmRC rpmReadSignature ( FD_t  fd,
Header sighp,
sigType  sig_type,
const char **  msg 
)

Read (and verify header+payload size) signature header.

If an old-style signature is found, we emulate a new style one.

Parameters:
fd file handle
Return values:
sighp address of (signature) header (or NULL)
Parameters:
sig_type type of signature header to read (from lead)
Return values:
msg failure msg
Returns:
rpmRC return code

Definition at line 154 of file signature.c.

References _, alloca(), block(), headerToken_s::flags, header_magic, HEADER_MAGIC_YES, HEADERFLAG_ALLOCATED, headerFree(), headerGetEntry(), headerLink(), headerLoad(), headerSizeof(), headerVerifyInfo(), printSize(), REGION_TAG_COUNT, RPM_BIN_TYPE, RPMRC_FAIL, RPMRC_OK, RPMSIGTAG_SIZE, RPMSIGTYPE_HEADERSIG, RPMTAG_HEADERIMAGE, RPMTAG_HEADERSIGNATURES, snprintf(), timedRead, xmalloc(), and xstrdup().

Referenced by rpmReadPackageFile(), rpmReSign(), and rpmVerifySignatures().

rpmRC rpmVerifySignature ( const rpmts  ts,
char *  result 
)

Verify a signature from a package.

This needs the following variables from the transaction set:

Parameters:
ts transaction set
Return values:
result detailed text result of signature verification
Returns:
result of signature verification

Definition at line 1492 of file signature.c.

References _, pgpDigParams_s::hash_algo, pgpDig_s::hdrmd5ctx, pgpDig_s::hdrsha1ctx, pgpDig_s::md5ctx, PGPHASHALGO_MD5, RPMRC_NOTFOUND, RPMSIGTAG_DSA, RPMSIGTAG_GPG, RPMSIGTAG_LEMD5_1, RPMSIGTAG_LEMD5_2, RPMSIGTAG_MD5, RPMSIGTAG_PGP, RPMSIGTAG_PGP5, RPMSIGTAG_RSA, RPMSIGTAG_SHA1, RPMSIGTAG_SIZE, rpmtsDig(), rpmtsSig(), rpmtsSiglen(), rpmtsSigtag(), pgpDig_s::sha1ctx, pgpDig_s::signature, verifyDSASignature(), verifyMD5Signature(), verifyRSASignature(), verifySHA1Signature(), and verifySizeSignature().

Referenced by rpmReadPackageFile(), and rpmVerifySignatures().

int rpmWriteSignature ( FD_t  fd,
Header  sigh 
)

Write signature header.

Parameters:
fd file handle
sigh (signature) header
Returns:
0 on success, 1 on error

Definition at line 353 of file signature.c.

References _, Fwrite(), HEADER_MAGIC_YES, headerSizeof(), headerWrite(), RPMMESS_DEBUG, and rpmMessage.

Referenced by rpmpsmStage(), rpmReSign(), and writeRPM().


Generated on Fri May 25 21:20:36 2007 for rpm by  doxygen 1.5.2