RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
______________________________________________________________________
______
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: [EMAIL PROTECTED]
Module: rpm Date: 05-Aug-2008
23:10:30
Branch: HEAD Handle: 2008080521102901
Added files:
rpm/rpmio rpmku.c rpmku.h
Modified files:
rpm CHANGES
rpm/rpmdb pkgio.c signature.c
rpm/rpmio Makefile.am librpmio.vers rpmiotypes.h
Removed files:
rpm/rpmio getpass.c
Log:
- jbj: rpmku: create opaque keyutils keyring.
Summary:
Revision Changes Path
1.2512 +1 -0 rpm/CHANGES
1.89 +26 -50 rpm/rpmdb/pkgio.c
1.54 +20 -51 rpm/rpmdb/signature.c
1.191 +3 -3 rpm/rpmio/Makefile.am
1.14 +0 -259 rpm/rpmio/getpass.c
2.75 +4 -1 rpm/rpmio/librpmio.vers
1.10 +0 -6 rpm/rpmio/rpmiotypes.h
2.1 +233 -0 rpm/rpmio/rpmku.c
2.1 +49 -0 rpm/rpmio/rpmku.h
______________________________________________________________________
______
patch -p0 <<'@@ .'
Index: rpm/CHANGES
======================================================================
======
$ cvs diff -u -r1.2511 -r1.2512 CHANGES
--- rpm/CHANGES 5 Aug 2008 17:18:06 -0000 1.2511
+++ rpm/CHANGES 5 Aug 2008 21:10:29 -0000 1.2512
@@ -1,5 +1,6 @@
5.1.0 -> 5.2a0:
+ - jbj: rpmku: create opaque keyutils keyring.
- jbj: keyutils: permit configurable keyring.
- rse: fix building under --with-lzma by providing the
necessary 64-bit defines for inclusion of <lzma.h>
- jbj: QNX: use strtouq() instead of strtoul() in rpmmtree.
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/pkgio.c
======================================================================
======
$ cvs diff -u -r1.88 -r1.89 pkgio.c
--- rpm/rpmdb/pkgio.c 5 Aug 2008 17:18:07 -0000 1.88
+++ rpm/rpmdb/pkgio.c 5 Aug 2008 21:10:29 -0000 1.89
@@ -11,14 +11,13 @@
#include <netinet/in.h>
-#if defined(HAVE_KEYUTILS_H)
-#include <keyutils.h>
-#endif
-
+#define _RPMIOB_INTERNAL
+#include <rpmiotypes.h>
#include <rpmio_internal.h>
#include <rpmcb.h>
#include <rpmbc.h> /* XXX beecrypt base64 */
#include <rpmmacro.h>
+#include <rpmku.h>
#define _RPMTAG_INTERNAL
#include "header_internal.h"
@@ -162,9 +161,8 @@
pgpDigParams pubp = pgpGetPubkey(dig);
rpmRC res = RPMRC_NOKEY;
const char * pubkeysource = NULL;
-#if defined(HAVE_KEYUTILS_H)
+ rpmiob iob = NULL;
int krcache = 1; /* XXX assume pubkeys are cached in
keyutils keyring. */
-#endif
int xx;
assert(dig != NULL);
@@ -188,38 +186,23 @@
memset(ts->pksignid, 0, sizeof(ts->pksignid));
}
-#if defined(HAVE_KEYUTILS_H)
- /* Try keyutils keyring lookup. */
- if (krcache && ts->pkpkt == NULL) {
- key_serial_t keyring = (key_serial_t) _kuKeyring;
- const char * krprefix = "rpm:gpg:pubkey:";
- char krfp[32];
- char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
- long key;
-
- (void) snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid
+4, 4));
- krfp[sizeof(krfp)-1] = '\0';
- *krn = '\0';
- (void) stpcpy( stpcpy(krn, krprefix), krfp);
-
-/[EMAIL PROTECTED]@*/
- key = keyctl_search(keyring, "user", krn, 0);
- xx = keyctl_read(key, NULL, 0);
- if (xx > 0) {
- ts->pkpktlen = xx;
- ts->pkpkt = NULL;
- xx = keyctl_read_alloc(key, (void **)&ts->pkpkt);
- if (xx > 0) {
- pubkeysource = xstrdup(krn);
- krcache = 0; /* XXX don't bother caching. */
- } else {
- ts->pkpkt = _free(ts->pkpkt);
- ts->pkpktlen = 0;
- }
+ /* Try keyutils keyring lookup. */
+ if (ts->pkpkt == NULL) {
+ iob = NULL;
+ switch (rpmkuFindPubkey(sigp, &iob)) {
+ case RPMRC_NOTFOUND:
+ case RPMRC_FAIL:
+ case RPMRC_NOTTRUSTED:
+ case RPMRC_NOKEY:
+ break;
+ case RPMRC_OK:
+ pubkeysource = xstrdup("keyutils");
+ krcache = 0; /* XXX don't bother caching. */
+ ts->pkpkt = memcpy(xmalloc(iob->blen), iob->b, iob->blen);
+ ts->pkpktlen = iob->blen;
+ break;
}
-/[EMAIL PROTECTED]@*/
}
-#endif
/* Try rpmdb keyring lookup. */
if (ts->pkpkt == NULL) {
@@ -323,23 +306,16 @@
/* XXX Verify any pubkey signatures. */
-#if defined(HAVE_KEYUTILS_H)
/* Save the pubkey in the keyutils keyring. */
if (krcache) {
- key_serial_t keyring = (key_serial_t) _kuKeyring;
- const char * krprefix = "rpm:gpg:pubkey:";
- char krfp[32];
- char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
-
- (void) snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp-
>signid+4, 4));
- krfp[sizeof(krfp)-1] = '\0';
- *krn = '\0';
- (void) stpcpy( stpcpy(krn, krprefix), krfp);
-/[EMAIL PROTECTED] -noeffectuncon @*/
- (void) add_key("user", krn, ts->pkpkt, ts->pkpktlen, keyring);
-/[EMAIL PROTECTED] =noeffectuncon @*/
+ if (iob == NULL) {
+ iob = xcalloc(1, sizeof(*iob));
+ iob->b = memcpy(xmalloc(ts->pkpktlen), ts->pkpkt, ts->pkpktlen);
+ iob->blen = ts->pkpktlen;
+ iob->allocated = ts->pkpktlen;
+ }
+ (void) rpmkuStorePubkey(sigp, iob);
}
-#endif
/* Pubkey packet looks good, save the signer id. */
memcpy(ts->pksignid, pubp->signid, sizeof(ts->pksignid));
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmdb/signature.c
======================================================================
======
$ cvs diff -u -r1.53 -r1.54 signature.c
--- rpm/rpmdb/signature.c 5 Aug 2008 17:18:07 -0000 1.53
+++ rpm/rpmdb/signature.c 5 Aug 2008 21:10:29 -0000 1.54
@@ -3,22 +3,21 @@
*/
#include "system.h"
-#if defined(HAVE_KEYUTILS_H)
-#include <keyutils.h>
-#endif
#include <rpmio.h>
#include <rpmurl.h>
#include <rpmcb.h> /* XXX rpmIsVerbose() */
#define _RPMPGP_INTERNAL
#include <rpmpgp.h>
-#include <rpmtag.h>
#include <rpmmacro.h> /* XXX for rpmGetPath() */
-#include "rpmdb.h"
+#include <rpmku.h>
+#include <rpmtag.h>
+#include "rpmdb.h"
+#include <pkgio.h> /* XXX expects <rpmts.h> */
#include "legacy.h" /* XXX for dodogest() */
-#include <pkgio.h>
#include "signature.h"
+
#include "debug.h"
/[EMAIL PROTECTED] [EMAIL PROTECTED]/ /* XXX ufdio->read arg1
is void ptr */
@@ -196,24 +195,12 @@
delMacro(NULL, "__plaintext_filename");
delMacro(NULL, "__signature_filename");
-#if defined(HAVE_KEYUTILS_H)
- if (passPhrase && !strcmp(passPhrase, "@u user rpm:passwd")) {
- key_serial_t keyring = (key_serial_t) _kuKeyring;
- long key;
- int xx;
-
-/[EMAIL PROTECTED]@*/
- key = keyctl_search(keyring, "user", "rpm:passwd", 0);
- pw = NULL;
- if ((xx = keyctl_read_alloc(key, (void **)&pw)) < 0) {
- rpmlog(RPMLOG_ERR, _("Failed %s(%d) key(0x%lx): %s\n"),
- "keyctl_read_alloc of key", xx, key, strerror(errno));
- return 1;
- }
-/[EMAIL PROTECTED]@*/
- } else
-#endif
- pw = passPhrase;
+ pw = rpmkuPassPhrase(passPhrase);
+ if (pw == NULL) {
+ rpmlog(RPMLOG_ERR, _("Failed rpmkuPassPhrase(passPhrase): %s\n"),
+ strerror(errno));
+ return 1;
+ }
fpipe = fdopen(inpipe[1], "w");
(void) close(inpipe[0]);
@@ -221,14 +208,11 @@
fprintf(fpipe, "%s\n", (pw ? pw : ""));
(void) fclose(fpipe);
}
-/[EMAIL PROTECTED]@*/
- if (pw && pw != passPhrase) {
+
+ if (pw != NULL) {
(void) memset((void *)pw, 0, strlen(pw));
-/[EMAIL PROTECTED]@*/ /* XXX mixed use in variable */
pw = _free(pw);
-/[EMAIL PROTECTED]@*/
}
-/[EMAIL PROTECTED]@*/
(void) waitpid(pid, &status, 0);
if (!WIFEXITED(status) || WEXITSTATUS(status)) {
@@ -540,37 +524,22 @@
}
}
-#if defined(HAVE_KEYUTILS_H)
- if (!strcmp(passPhrase, "@u user rpm:passwd")) {
- long key;
- key_serial_t keyring = (key_serial_t) _kuKeyring;
-
-/[EMAIL PROTECTED]@*/
- key = keyctl_search(keyring, "user", "rpm:passwd", 0);
- pw = NULL;
- if ((xx = keyctl_read_alloc(key, (void **)&pw)) < 0) {
- rpmlog(RPMLOG_ERR, _("Failed %s(%d) key(0x%lx): %s\n"),
- "keyctl_read_alloc of key", xx, key, strerror(errno));
- return 1;
- }
-/[EMAIL PROTECTED]@*/
- } else
-#endif
- pw = passPhrase;
+ pw = rpmkuPassPhrase(passPhrase);
+ if (pw == NULL) {
+ rpmlog(RPMLOG_ERR, _("Failed rpmkuPassPhrase(passPhrase): %s\n"),
+ strerror(errno));
+ return 1;
+ }
xx = close(p[0]);
xx = (int) write(p[1], pw, strlen(pw));
xx = (int) write(p[1], "\n", 1);
xx = close(p[1]);
-/[EMAIL PROTECTED]@*/
- if (pw && pw != passPhrase) {
+ if (pw != NULL) {
(void) memset((void *)pw, 0, strlen(pw));
-/[EMAIL PROTECTED]@*/ /* XXX mixed use in variable */
pw = _free(pw);
-/[EMAIL PROTECTED]@*/
}
-/[EMAIL PROTECTED]@*/
(void) waitpid(pid, &status, 0);
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/Makefile.am
======================================================================
======
$ cvs diff -u -r1.190 -r1.191 Makefile.am
--- rpm/rpmio/Makefile.am 5 Aug 2008 12:57:07 -0000 1.190
+++ rpm/rpmio/Makefile.am 5 Aug 2008 21:10:30 -0000 1.191
@@ -63,7 +63,7 @@
md2.h md4.h rmd128.h rmd160.h rmd256.h rmd320.h sha224.h \
salsa10.h salsa20.h tiger.h \
mire.h poptIO.h rpmbc.h rpmdav.h \
- rpmgc.h rpmhash.h rpmhook.h rpmio_internal.h rpmkeyring.h \
+ rpmgc.h rpmhash.h rpmhook.h rpmio_internal.h rpmkeyring.h
rpmku.h \
rpmlua.h rpmmg.h rpmnss.h rpmsq.h rpmssl.h \
rpmio-stub.h rpmsw.h rpmurl.h rpmuuid.h rpmxar.h \
tar.h ugid.h
@@ -72,12 +72,12 @@
usrlib_LTLIBRARIES = librpmio.la
librpmio_la_SOURCES = \
ar.c argv.c bzdio.c cpio.c digest.c fnmatch.c fts.c \
- getdate.c getpass.c gzdio.c glob.c iosm.c lzdio.c \
+ getdate.c gzdio.c glob.c iosm.c lzdio.c \
macro.c mire.c mount.c poptIO.c \
md2.c md4.c rmd128.c rmd160.c rmd256.c rmd320.c sha224.c \
salsa10.c salsa20.c tiger.c \
rpmbc.c rpmdav.c rpmgc.c rpmhash.c rpmhook.c rpmio.c rpmiob.c
rpmio-stub.c \
- rpmkeyring.c rpmlog.c rpmlua.c rpmmalloc.c rpmmg.c rpmnss.c
rpmpgp.c \
+ rpmkeyring.c rpmku.c rpmlog.c rpmlua.c rpmmalloc.c rpmmg.c
rpmnss.c rpmpgp.c \
rpmrpc.c rpmsq.c rpmssl.c rpmsw.c rpmuuid.c rpmxar.c \
strcasecmp.c strtolocale.c tar.c url.c ugid.c
librpmio_la_LDFLAGS = -release $(LT_CURRENT).$(LT_REVISION)
@@ .
rm -f rpm/rpmio/getpass.c <<'@@ .'
Index: rpm/rpmio/getpass.c
======================================================================
======
[NO CHANGE SUMMARY BECAUSE FILE AS A WHOLE IS JUST REMOVED]
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/librpmio.vers
======================================================================
======
$ cvs diff -u -r2.74 -r2.75 librpmio.vers
--- rpm/rpmio/librpmio.vers 5 Aug 2008 17:18:07 -0000 2.74
+++ rpm/rpmio/librpmio.vers 5 Aug 2008 21:10:30 -0000 2.75
@@ -146,7 +146,6 @@
iosmStrerror;
iosmTeardown;
isCompressed;
- _kuKeyring;
Lchown;
_Lchown;
Link;
@@ -313,6 +312,10 @@
rpmKeyringLookup;
rpmKeyringNew;
rpmKeyringUnlink;
+ _kuKeyring;
+ rpmkuFindPubkey;
+ rpmkuStorePubkey;
+ rpmkuPassPhrase;
rpmPubkeyFree;
rpmPubkeyLink;
rpmPubkeyNew;
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmiotypes.h
======================================================================
======
$ cvs diff -u -r1.9 -r1.10 rpmiotypes.h
--- rpm/rpmio/rpmiotypes.h 5 Aug 2008 17:18:07 -0000 1.9
+++ rpm/rpmio/rpmiotypes.h 5 Aug 2008 21:10:30 -0000 1.10
@@ -201,12 +201,6 @@
};
#endif
-/**
- * Keyutils keyring to use.
- */
-/[EMAIL PROTECTED]@*/
-extern rpmint32_t _kuKeyring;
-
#ifdef __cplusplus
extern "C" {
#endif
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmku.c
======================================================================
======
$ cvs diff -u -r0 -r2.1 rpmku.c
--- /dev/null 2008-08-05 23:00:24 +0200
+++ rpmku.c 2008-08-05 23:10:30 +0200
@@ -0,0 +1,233 @@
+/** \ingroup rpmio
+ * \file rpmio/rpmku.c
+ */
+
+#include "system.h"
+
+#define _RPMIOB_INTERNAL
+#include <rpmiotypes.h>
+#include <rpmio.h>
+#if defined(HAVE_KEYUTILS_H)
+#include <rpmmacro.h>
+#include <argv.h>
+#include <keyutils.h>
+#define _RPMPGP_INTERNAL
+#include <rpmpgp.h>
+#endif
+#include <rpmku.h>
+
+#include "debug.h"
+
+#if defined(HAVE_KEYUTILS_H)
+/[EMAIL PROTECTED]@*/
+rpmint32_t _kuKeyring;
+
+/[EMAIL PROTECTED]@*/
+static int _kuCache = 1;
+
+typedef struct _kuItem_s {
+/[EMAIL PROTECTED]@*/
+ const char *name;
+ key_serial_t val;
+} * _kuItem;
+
+/* NB: the following table must be sorted lexically for bsearch
(3). */
+/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
+static struct _kuItem_s kuTable[] = {
+ { "group", KEY_SPEC_GROUP_KEYRING },
+ { "process", KEY_SPEC_PROCESS_KEYRING },
+ { "session", KEY_SPEC_SESSION_KEYRING },
+ { "thread", KEY_SPEC_THREAD_KEYRING },
+ { "user", KEY_SPEC_USER_KEYRING },
+ { "user_session", KEY_SPEC_USER_SESSION_KEYRING },
+#ifdef NOTYET /* XXX is this useful? */
+ { "???", KEY_SPEC_REQKEY_AUTH_KEY },
+#endif
+};
+
+/[EMAIL PROTECTED]@*/
+static size_t nkuTable = sizeof(kuTable) / sizeof(kuTable[0]);
+
+static int
+kuCmp(const void * a, const void * b)
+ /[EMAIL PROTECTED]/
+{
+ return strcmp(((_kuItem)a)->name, ((_kuItem)b)->name);
+}
+
+static key_serial_t
+kuValue(const char * name)
+ /[EMAIL PROTECTED] fileSystem @*/
+ /[EMAIL PROTECTED] fileSystem @*/
+{
+ _kuItem k = NULL;
+
+ if (name != NULL && *name != '\0') {
+ _kuItem tmp = memset(alloca(sizeof(*tmp)), 0, sizeof(*tmp));
+ tmp->name = name;
+ k = (_kuItem)bsearch(tmp, kuTable, nkuTable, sizeof(kuTable
[0]), kuCmp);
+ }
+ return (k != NULL ? k->val : 0);
+}
+#endif
+
+char * _GetPass(const char * prompt)
+{
+ char * pw;
+
+/[EMAIL PROTECTED]@*/
+ pw = getpass( prompt ? prompt : "" );
+/[EMAIL PROTECTED]@*/
+
+#if defined(HAVE_KEYUTILS_H)
+ if (_kuKeyring == 0) {
+ const char * _keyutils_keyring
+ = rpmExpand("%{?_keyutils_keyring}", NULL);
+ _kuKeyring = kuValue(_keyutils_keyring);
+ if (_kuKeyring == 0)
+ _kuKeyring = KEY_SPEC_PROCESS_KEYRING;
+ _keyutils_keyring = _free(_keyutils_keyring);
+ }
+
+ if (pw && *pw) {
+ key_serial_t keyring = (key_serial_t) _kuKeyring;
+ size_t npw = strlen(pw);
+ (void) add_key("user", "rpm:passwd", pw, npw, keyring);
+ (void) memset(pw, 0, npw); /* burn the password */
+ pw = "@u user rpm:passwd";
+ }
+#endif
+
+assert(pw != NULL);
+/[EMAIL PROTECTED] [EMAIL PROTECTED]/
+ return pw;
+/[EMAIL PROTECTED] [EMAIL PROTECTED]/
+}
+
+char * _RequestPass(/[EMAIL PROTECTED]@*/ const char * prompt)
+{
+/[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
+ static char * password = NULL;
+#if defined(HAVE_KEYUTILS_H)
+ const char * foo = "user rpm:yyyy spoon";
+ ARGV_t av = NULL;
+ int xx = argvSplit(&av, foo, NULL);
+ key_serial_t dest = 0;
+ key_serial_t key = 0;
+
+ if (password != NULL) {
+ free(password);
+ password = NULL;
+ }
+assert(av != NULL);
+assert(av[0] != NULL);
+assert(av[1] != NULL);
+assert(av[2] != NULL);
+ key = request_key(av[0], av[1], av[2], dest);
+
+/[EMAIL PROTECTED]@*/ /* XXX *password may be null. */
+ xx = keyctl_read_alloc(key, (void *)&password);
+/[EMAIL PROTECTED]@*/
+assert(password != NULL);
+#endif
+
+/[EMAIL PROTECTED]@*/
+ return password;
+/[EMAIL PROTECTED]@*/
+}
+
+/[EMAIL PROTECTED]@*/
+char * (*Getpass) (const char * prompt) = _GetPass;
+/[EMAIL PROTECTED]@*/
+
+rpmRC rpmkuFindPubkey(pgpDigParams sigp, /[EMAIL PROTECTED]@*/ rpmiob * iobp)
+{
+ if (iobp != NULL)
+ *iobp = NULL;
+
+#if defined(HAVE_KEYUTILS_H)
+ if (_kuCache) {
+/[EMAIL PROTECTED]@*/
+ static const char krprefix[] = "rpm:gpg:pubkey:";
+ key_serial_t keyring = (key_serial_t) _kuKeyring;
+ char krfp[32];
+ char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
+ long key;
+ int xx;
+
+ (void) snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid
+4, 4));
+ krfp[sizeof(krfp)-1] = '\0';
+ *krn = '\0';
+ (void) stpcpy( stpcpy(krn, krprefix), krfp);
+
+ key = keyctl_search(keyring, "user", krn, 0);
+ xx = keyctl_read(key, NULL, 0);
+ if (xx > 0) {
+ rpmiob iob = xcalloc(1, sizeof(*iob));
+ iob->allocated = iob->blen = xx;
+ xx = keyctl_read_alloc(key, (void **)&iob->b);
+ if (xx > 0) {
+#ifdef NOTYET
+ pubkeysource = xstrdup(krn);
+ _kuCache = 0; /* XXX don't bother caching. */
+#endif
+ } else
+ iob = rpmiobFree(iob);
+
+ if (iob != NULL && iobp != NULL) {
+ *iobp = iob;
+ return RPMRC_OK;
+ } else
+ return RPMRC_NOTFOUND;
+ } else
+ return RPMRC_NOTFOUND;
+ } else
+#endif
+ return RPMRC_NOTFOUND;
+}
+
+rpmRC rpmkuStorePubkey(pgpDigParams sigp, /[EMAIL PROTECTED]@*/ rpmiob iob)
+{
+#if defined(HAVE_KEYUTILS_H)
+ if (_kuCache) {
+/[EMAIL PROTECTED]@*/
+ static const char krprefix[] = "rpm:gpg:pubkey:";
+ key_serial_t keyring = (key_serial_t) _kuKeyring;
+ char krfp[32];
+ char * krn = alloca(strlen(krprefix) + sizeof("12345678"));
+
+ (void) snprintf(krfp, sizeof(krfp), "%08X", pgpGrab(sigp->signid
+4, 4));
+ krfp[sizeof(krfp)-1] = '\0';
+ *krn = '\0';
+ (void) stpcpy( stpcpy(krn, krprefix), krfp);
+/[EMAIL PROTECTED] -noeffectuncon @*/
+ (void) add_key("user", krn, iob->b, iob->blen, keyring);
+/[EMAIL PROTECTED] =noeffectuncon @*/
+ }
+#endif
+ iob = rpmiobFree(iob);
+ return RPMRC_OK;
+}
+
+const char * rpmkuPassPhrase(const char * passPhrase)
+{
+ const char * pw;
+
+#if defined(HAVE_KEYUTILS_H)
+ if (passPhrase && !strcmp(passPhrase, "@u user rpm:passwd")) {
+ key_serial_t keyring = (key_serial_t) _kuKeyring;
+ long key;
+ int xx;
+
+/[EMAIL PROTECTED]@*/
+ key = keyctl_search(keyring, "user", "rpm:passwd", 0);
+ pw = NULL;
+ xx = keyctl_read_alloc(key, (void **)&pw);
+/[EMAIL PROTECTED]@*/
+ if (xx < 0)
+ pw = NULL;
+ } else
+#endif
+ pw = xstrdup(passPhrase);
+ return pw;
+}
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/rpmku.h
======================================================================
======
$ cvs diff -u -r0 -r2.1 rpmku.h
--- /dev/null 2008-08-05 23:00:24 +0200
+++ rpmku.h 2008-08-05 23:10:30 +0200
@@ -0,0 +1,49 @@
+#ifndef _H_RPMKU_
+#define _H_RPMKU_
+
+/** \ingroup rpmio
+ * \file rpmio/rpmku.h
+ */
+
+/**
+ * Keyutils keyring to use.
+ */
+/[EMAIL PROTECTED]@*/
+extern rpmint32_t _kuKeyring;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Lookup pubkey in keyutils keyring.
+ * @param sigp signature packet
+ * @retval *iobp pubkey I/O buffer
+ * @return RPMRC_OK on success
+ */
+rpmRC rpmkuFindPubkey(pgpDigParams sigp, /[EMAIL PROTECTED]@*/ rpmiob * iobp)
+ /[EMAIL PROTECTED] *iobp @*/;
+
+/**
+ * Store pubkey in keyutils keyring.
+ * @param sigp signature packet
+ * @param iob pubkey I/O buffer
+ * @return RPMRC_OK on success
+ */
+rpmRC rpmkuStorePubkey(pgpDigParams sigp, /[EMAIL PROTECTED]@*/ rpmiob iob)
+ /[EMAIL PROTECTED] iob @*/;
+
+/**
+ * Return pass phrase from keyutils keyring.
+ * @param passPhrase pass phrase
+ * @return (malloc'd) pass phrase
+ */
+/[EMAIL PROTECTED]@*/
+const char * rpmkuPassPhrase(const char * passPhrase)
+ /[EMAIL PROTECTED] iob @*/;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _H_RPMKU_ */
@@ .
______________________________________________________________________
RPM Package Manager http://rpm5.org
CVS Sources Repository [EMAIL PROTECTED]