Export the cli-level signature checking as rpmcliVerifySignatures()
authorPanu Matilainen <pmatilai@redhat.com>
Fri, 3 Sep 2010 07:38:38 +0000 (10:38 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 3 Sep 2010 07:52:22 +0000 (10:52 +0300)
- Signature verification is completely different from package signing,
  another step towards making rpmcliSign() do what it's named after

lib/rpmchecksig.c
lib/rpmcli.h

index dffc42f..e308aee 100644 (file)
@@ -787,17 +787,36 @@ int rpmVerifySignatures(QVA_t qva, rpmts ts, FD_t fd, const char * fn)
     return rc;
 }
 
-int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv)
+int rpmcliVerifySignatures(rpmts ts, QVA_t qva, ARGV_const_t argv)
 {
     const char * arg;
     int res = 0;
-    int xx;
-    rpmKeyring keyring = NULL;
+    rpmKeyring keyring = rpmtsGetKeyring(ts, 1);
+    while ((arg = *argv++) != NULL) {
+       FD_t fd = Fopen(arg, "r.ufdio");
+       if (fd == NULL || Ferror(fd)) {
+           rpmlog(RPMLOG_ERR, _("%s: open failed: %s\n"), 
+                    arg, Fstrerror(fd));
+           res++;
+       } else if (rpmpkgVerifySigs(keyring, qva->qva_flags, fd, arg)) {
+           res++;
+       }
+
+       Fclose(fd);
+       rpmdbCheckSignals();
+    }
+    rpmKeyringFree(keyring);
+    return res;
+}
+
+int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv)
+{
 
-    if (argv == NULL) return res;
+    if (argv == NULL) return -1;
 
     switch (qva->qva_mode) {
     case RPMSIGN_CHK_SIGNATURE:
+       return rpmcliVerifySignatures(ts, qva, argv);
        break;
     case RPMSIGN_IMPORT_PUBKEY:
        return rpmcliImportPubkeys(ts, argv);
@@ -808,27 +827,8 @@ int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv)
        return rpmReSign(ts, qva, argv);
        break;
     default:
-       return -1;
        break;
     }
 
-    keyring = rpmtsGetKeyring(ts, 1);
-    while ((arg = *argv++) != NULL) {
-       FD_t fd;
-
-       fd = Fopen(arg, "r.ufdio");
-       if (fd == NULL || Ferror(fd)) {
-           rpmlog(RPMLOG_ERR, _("%s: open failed: %s\n"), 
-                    arg, Fstrerror(fd));
-           res++;
-       } else if (rpmpkgVerifySigs(keyring, qva->qva_flags, fd, arg)) {
-           res++;
-       }
-
-       if (fd != NULL) xx = Fclose(fd);
-       rpmdbCheckSignals();
-    }
-    rpmKeyringFree(keyring);
-
-    return res;
+    return -1;
 }
index e89cb24..38b4365 100644 (file)
@@ -457,6 +457,15 @@ int rpmcliSign(rpmts ts, QVA_t qva, ARGV_const_t argv);
  */
 int rpmcliImportPubkeys(rpmts ts, ARGV_const_t argv);
 
+/** \ingroup rpmcli
+ * Verify package signatures
+ * @param ts           transaction set
+ * @param qva          mode flags and parameters
+ * @param argv         array of package path arguments (NULL terminated)
+ * @return             0 on success
+ */
+int rpmcliVerifySignatures(rpmts ts, QVA_t qva, ARGV_const_t argv);
+
 #ifdef __cplusplus
 }
 #endif