Rename rpmcliImportPubkey() -> rpmtsImportPubkey()
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 26 Oct 2007 07:21:12 +0000 (10:21 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 26 Oct 2007 07:21:12 +0000 (10:21 +0300)
- it's not a cli function in any way
- move to rpmts group

lib/rpmchecksig.c
lib/rpmcli.h
lib/rpmts.c
lib/rpmts.h
python/rpmts-py.c

index 9750847..996497d 100644 (file)
@@ -384,138 +384,6 @@ exit:
     return res;
 }
 
-rpmRC rpmcliImportPubkey(const rpmts ts, const unsigned char * pkt, ssize_t pktlen)
-{
-    static unsigned char zeros[] =
-       { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-    const char * afmt = "%{pubkeys:armor}";
-    const char * group = "Public Keys";
-    const char * license = "pubkey";
-    const char * buildhost = "localhost";
-    int_32 pflags = (RPMSENSE_KEYRING|RPMSENSE_EQUAL);
-    int_32 zero = 0;
-    pgpDig dig = NULL;
-    pgpDigParams pubp = NULL;
-    const char * d = NULL;
-    const char * enc = NULL;
-    const char * n = NULL;
-    const char * u = NULL;
-    const char * v = NULL;
-    const char * r = NULL;
-    const char * evr = NULL;
-    Header h = NULL;
-    rpmRC rc = RPMRC_FAIL;             /* assume failure */
-    char * t;
-    int xx;
-
-    if (pkt == NULL || pktlen <= 0)
-       return RPMRC_FAIL;
-    if (rpmtsOpenDB(ts, (O_RDWR|O_CREAT)))
-       return RPMRC_FAIL;
-
-    if ((enc = b64encode(pkt, pktlen)) == NULL)
-       goto exit;
-
-    dig = pgpNewDig();
-
-    /* Build header elements. */
-    (void) pgpPrtPkts(pkt, pktlen, dig, 0);
-    pubp = &dig->pubkey;
-
-    if (!memcmp(pubp->signid, zeros, sizeof(pubp->signid))
-     || !memcmp(pubp->time, zeros, sizeof(pubp->time))
-     || pubp->userid == NULL)
-       goto exit;
-
-    v = t = xmalloc(16+1);
-    t = stpcpy(t, pgpHexStr(pubp->signid, sizeof(pubp->signid)));
-
-    r = t = xmalloc(8+1);
-    t = stpcpy(t, pgpHexStr(pubp->time, sizeof(pubp->time)));
-
-    n = t = xmalloc(sizeof("gpg()")+8);
-    t = stpcpy( stpcpy( stpcpy(t, "gpg("), v+8), ")");
-
-    /* FIX: pubp->userid may be NULL */
-    u = t = xmalloc(sizeof("gpg()")+strlen(pubp->userid));
-    t = stpcpy( stpcpy( stpcpy(t, "gpg("), pubp->userid), ")");
-
-    evr = t = xmalloc(sizeof("4X:-")+strlen(v)+strlen(r));
-    t = stpcpy(t, (pubp->version == 4 ? "4:" : "3:"));
-    t = stpcpy( stpcpy( stpcpy(t, v), "-"), r);
-
-    /* Check for pre-existing header. */
-
-    /* Build pubkey header. */
-    h = headerNew();
-
-    xx = headerAddOrAppendEntry(h, RPMTAG_PUBKEYS,
-                       RPM_STRING_ARRAY_TYPE, &enc, 1);
-
-    d = headerSprintf(h, afmt, rpmTagTable, rpmHeaderFormats, NULL);
-    if (d == NULL)
-       goto exit;
-
-    xx = headerAddEntry(h, RPMTAG_NAME, RPM_STRING_TYPE, "gpg-pubkey", 1);
-    xx = headerAddEntry(h, RPMTAG_VERSION, RPM_STRING_TYPE, v+8, 1);
-    xx = headerAddEntry(h, RPMTAG_RELEASE, RPM_STRING_TYPE, r, 1);
-    xx = headerAddEntry(h, RPMTAG_DESCRIPTION, RPM_STRING_TYPE, d, 1);
-    xx = headerAddEntry(h, RPMTAG_GROUP, RPM_STRING_TYPE, group, 1);
-    xx = headerAddEntry(h, RPMTAG_LICENSE, RPM_STRING_TYPE, license, 1);
-    xx = headerAddEntry(h, RPMTAG_SUMMARY, RPM_STRING_TYPE, u, 1);
-
-    xx = headerAddEntry(h, RPMTAG_SIZE, RPM_INT32_TYPE, &zero, 1);
-
-    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME,
-                       RPM_STRING_ARRAY_TYPE, &u, 1);
-    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION,
-                       RPM_STRING_ARRAY_TYPE, &evr, 1);
-    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS,
-                       RPM_INT32_TYPE, &pflags, 1);
-
-    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME,
-                       RPM_STRING_ARRAY_TYPE, &n, 1);
-    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION,
-                       RPM_STRING_ARRAY_TYPE, &evr, 1);
-    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS,
-                       RPM_INT32_TYPE, &pflags, 1);
-
-    xx = headerAddEntry(h, RPMTAG_RPMVERSION, RPM_STRING_TYPE, RPMVERSION, 1);
-
-    /* XXX W2DO: tag value inheirited from parent? */
-    xx = headerAddEntry(h, RPMTAG_BUILDHOST, RPM_STRING_TYPE, buildhost, 1);
-    {   int_32 tid = rpmtsGetTid(ts);
-       xx = headerAddEntry(h, RPMTAG_INSTALLTIME, RPM_INT32_TYPE, &tid, 1);
-       /* XXX W2DO: tag value inheirited from parent? */
-       xx = headerAddEntry(h, RPMTAG_BUILDTIME, RPM_INT32_TYPE, &tid, 1);
-    }
-
-#ifdef NOTYET
-    /* XXX W2DO: tag value inheirited from parent? */
-    xx = headerAddEntry(h, RPMTAG_SOURCERPM, RPM_STRING_TYPE, fn, 1);
-#endif
-
-    /* Add header to database. */
-    xx = rpmdbAdd(rpmtsGetRdb(ts), rpmtsGetTid(ts), h, NULL, NULL);
-    if (xx != 0)
-       goto exit;
-    rc = RPMRC_OK;
-
-exit:
-    /* Clean up. */
-    h = headerFree(h);
-    dig = pgpFreeDig(dig);
-    n = _free(n);
-    u = _free(u);
-    v = _free(v);
-    r = _free(r);
-    evr = _free(evr);
-    enc = _free(enc);
-    d = _free(d);
-    
-    return rc;
-}
-
 /** \ingroup rpmcli
  * Import public key(s).
  * @todo Implicit --update policy for gpg-pubkey headers.
@@ -570,7 +438,7 @@ static int rpmcliImportPubkeys(const rpmts ts,
        }
 
        /* Import pubkey packet(s). */
-       if ((rpmrc = rpmcliImportPubkey(ts, pkt, pktlen)) != RPMRC_OK) {
+       if ((rpmrc = rpmtsImportPubkey(ts, pkt, pktlen)) != RPMRC_OK) {
            rpmlog(RPMERR_IMPORT, _("%s: import failed.\n"), fn);
            res++;
            continue;
index 85d690e..ea66da6 100644 (file)
@@ -567,17 +567,6 @@ extern struct poptOption rpmDatabasePoptTable[];
 /** \name RPMK */
 
 /** \ingroup rpmcli
- * Import public key packet(s).
- * @todo Implicit --update policy for gpg-pubkey headers.
- * @param ts           transaction set
- * @param pkt          pgp pubkey packet(s)
- * @param pktlen       pgp pubkey length
- * @return             RPMRC_OK/RPMRC_FAIL
- */
-rpmRC rpmcliImportPubkey(const rpmts ts,
-               const unsigned char * pkt, ssize_t pktlen);
-
-/** \ingroup rpmcli
  * Bit(s) to control rpmReSign() operation.
  */
 typedef enum rpmSignFlags_e {
index e2e77df..930a229 100644 (file)
@@ -456,6 +456,138 @@ exit:
     return res;
 }
 
+rpmRC rpmtsImportPubkey(const rpmts ts, const unsigned char * pkt, ssize_t pktlen)
+{
+    static unsigned char zeros[] =
+       { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+    const char * afmt = "%{pubkeys:armor}";
+    const char * group = "Public Keys";
+    const char * license = "pubkey";
+    const char * buildhost = "localhost";
+    int_32 pflags = (RPMSENSE_KEYRING|RPMSENSE_EQUAL);
+    int_32 zero = 0;
+    pgpDig dig = NULL;
+    pgpDigParams pubp = NULL;
+    const char * d = NULL;
+    const char * enc = NULL;
+    const char * n = NULL;
+    const char * u = NULL;
+    const char * v = NULL;
+    const char * r = NULL;
+    const char * evr = NULL;
+    Header h = NULL;
+    rpmRC rc = RPMRC_FAIL;             /* assume failure */
+    char * t;
+    int xx;
+
+    if (pkt == NULL || pktlen <= 0)
+       return RPMRC_FAIL;
+    if (rpmtsOpenDB(ts, (O_RDWR|O_CREAT)))
+       return RPMRC_FAIL;
+
+    if ((enc = b64encode(pkt, pktlen)) == NULL)
+       goto exit;
+
+    dig = pgpNewDig();
+
+    /* Build header elements. */
+    (void) pgpPrtPkts(pkt, pktlen, dig, 0);
+    pubp = &dig->pubkey;
+
+    if (!memcmp(pubp->signid, zeros, sizeof(pubp->signid))
+     || !memcmp(pubp->time, zeros, sizeof(pubp->time))
+     || pubp->userid == NULL)
+       goto exit;
+
+    v = t = xmalloc(16+1);
+    t = stpcpy(t, pgpHexStr(pubp->signid, sizeof(pubp->signid)));
+
+    r = t = xmalloc(8+1);
+    t = stpcpy(t, pgpHexStr(pubp->time, sizeof(pubp->time)));
+
+    n = t = xmalloc(sizeof("gpg()")+8);
+    t = stpcpy( stpcpy( stpcpy(t, "gpg("), v+8), ")");
+
+    /* FIX: pubp->userid may be NULL */
+    u = t = xmalloc(sizeof("gpg()")+strlen(pubp->userid));
+    t = stpcpy( stpcpy( stpcpy(t, "gpg("), pubp->userid), ")");
+
+    evr = t = xmalloc(sizeof("4X:-")+strlen(v)+strlen(r));
+    t = stpcpy(t, (pubp->version == 4 ? "4:" : "3:"));
+    t = stpcpy( stpcpy( stpcpy(t, v), "-"), r);
+
+    /* Check for pre-existing header. */
+
+    /* Build pubkey header. */
+    h = headerNew();
+
+    xx = headerAddOrAppendEntry(h, RPMTAG_PUBKEYS,
+                       RPM_STRING_ARRAY_TYPE, &enc, 1);
+
+    d = headerSprintf(h, afmt, rpmTagTable, rpmHeaderFormats, NULL);
+    if (d == NULL)
+       goto exit;
+
+    xx = headerAddEntry(h, RPMTAG_NAME, RPM_STRING_TYPE, "gpg-pubkey", 1);
+    xx = headerAddEntry(h, RPMTAG_VERSION, RPM_STRING_TYPE, v+8, 1);
+    xx = headerAddEntry(h, RPMTAG_RELEASE, RPM_STRING_TYPE, r, 1);
+    xx = headerAddEntry(h, RPMTAG_DESCRIPTION, RPM_STRING_TYPE, d, 1);
+    xx = headerAddEntry(h, RPMTAG_GROUP, RPM_STRING_TYPE, group, 1);
+    xx = headerAddEntry(h, RPMTAG_LICENSE, RPM_STRING_TYPE, license, 1);
+    xx = headerAddEntry(h, RPMTAG_SUMMARY, RPM_STRING_TYPE, u, 1);
+
+    xx = headerAddEntry(h, RPMTAG_SIZE, RPM_INT32_TYPE, &zero, 1);
+
+    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME,
+                       RPM_STRING_ARRAY_TYPE, &u, 1);
+    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION,
+                       RPM_STRING_ARRAY_TYPE, &evr, 1);
+    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS,
+                       RPM_INT32_TYPE, &pflags, 1);
+
+    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDENAME,
+                       RPM_STRING_ARRAY_TYPE, &n, 1);
+    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEVERSION,
+                       RPM_STRING_ARRAY_TYPE, &evr, 1);
+    xx = headerAddOrAppendEntry(h, RPMTAG_PROVIDEFLAGS,
+                       RPM_INT32_TYPE, &pflags, 1);
+
+    xx = headerAddEntry(h, RPMTAG_RPMVERSION, RPM_STRING_TYPE, RPMVERSION, 1);
+
+    /* XXX W2DO: tag value inheirited from parent? */
+    xx = headerAddEntry(h, RPMTAG_BUILDHOST, RPM_STRING_TYPE, buildhost, 1);
+    {   int_32 tid = rpmtsGetTid(ts);
+       xx = headerAddEntry(h, RPMTAG_INSTALLTIME, RPM_INT32_TYPE, &tid, 1);
+       /* XXX W2DO: tag value inheirited from parent? */
+       xx = headerAddEntry(h, RPMTAG_BUILDTIME, RPM_INT32_TYPE, &tid, 1);
+    }
+
+#ifdef NOTYET
+    /* XXX W2DO: tag value inheirited from parent? */
+    xx = headerAddEntry(h, RPMTAG_SOURCERPM, RPM_STRING_TYPE, fn, 1);
+#endif
+
+    /* Add header to database. */
+    xx = rpmdbAdd(rpmtsGetRdb(ts), rpmtsGetTid(ts), h, NULL, NULL);
+    if (xx != 0)
+       goto exit;
+    rc = RPMRC_OK;
+
+exit:
+    /* Clean up. */
+    h = headerFree(h);
+    dig = pgpFreeDig(dig);
+    n = _free(n);
+    u = _free(u);
+    v = _free(v);
+    r = _free(r);
+    evr = _free(evr);
+    enc = _free(enc);
+    d = _free(d);
+    
+    return rc;
+}
+
 int rpmtsCloseSDB(rpmts ts)
 {
     int rc = 0;
index a7c3370..44a7792 100644 (file)
@@ -449,6 +449,16 @@ rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
 rpmRC rpmtsFindPubkey(rpmts ts);
 
 /** \ingroup rpmts
+ * Import public key packet(s).
+ * @todo Implicit --update policy for gpg-pubkey headers.
+ * @param ts            transaction set
+ * @param pkt           pgp pubkey packet(s)
+ * @param pktlen        pgp pubkey length
+ * @return              RPMRC_OK/RPMRC_FAIL
+ */
+rpmRC rpmtsImportPubkey(rpmts ts, const unsigned char * pkt, ssize_t pktlen);
+
+/** \ingroup rpmts
  * Close the database used by the transaction to solve dependencies.
  * @param ts           transaction set
  * @return             0 on success
index 5fbd453..7822ed5 100644 (file)
@@ -892,7 +892,7 @@ fprintf(stderr, "*** rpmts_PgpImportPubkey(%p) ts %p\n", s, s->ts);
     pkt = (unsigned char *)PyString_AsString(blob);
     pktlen = PyString_Size(blob);
 
-    rc = rpmcliImportPubkey(s->ts, pkt, pktlen);
+    rc = rpmtsImportPubkey(s->ts, pkt, pktlen);
 
     return Py_BuildValue("i", rc);
 }