From 3f4f9e9957a27be4efb29498f8fecd63eafcd16c Mon Sep 17 00:00:00 2001 From: Timo Teras Date: Fri, 17 Jul 2009 13:07:52 +0300 Subject: verify: new applet (ref #46) an utility to check package signature and integrity. --- src/verify.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/verify.c (limited to 'src/verify.c') diff --git a/src/verify.c b/src/verify.c new file mode 100644 index 0000000..2fed4bd --- /dev/null +++ b/src/verify.c @@ -0,0 +1,49 @@ +/* verify.c - Alpine Package Keeper (APK) + * + * Copyright (C) 2009 Timo Teräs + * All rights reserved. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. See http://www.gnu.org/ for details. + */ + +#include +#include + +#include "apk_applet.h" +#include "apk_database.h" + +static int verify_main(void *ctx, int argc, char **argv) +{ + struct apk_database db; + struct apk_sign_ctx sctx; + int i, ok, rc = 0; + + apk_db_open(&db, NULL, APK_OPENF_NO_STATE); + for (i = 0; i < argc; i++) { + apk_sign_ctx_init(&sctx, APK_SIGN_VERIFY); + apk_pkg_read(&db, argv[i], &sctx); + ok = sctx.control_verified && sctx.data_verified; + if (apk_verbosity >= 1) + apk_message("%s: %s", argv[i], + ok ? "OK" : + sctx.data_verified ? "UNTRUSTED" : "FAILED"); + if (!ok) + rc++; + apk_sign_ctx_free(&sctx); + } + apk_db_close(&db); + + return rc; +} + +static struct apk_applet apk_verify = { + .name = "verify", + .help = "Verify package integrity and signature", + .arguments = "FILE...", + .main = verify_main, +}; + +APK_DEFINE_APPLET(apk_verify); + -- cgit v1.2.3-60-g2f50