static void usage(void) { sign_usage(); verify_usage(); exit(1); }
void verify(int argc, char *argv[]) { struct key *key; char *gzipfile; FILE *fin; int i, error, qflag; qflag = 0; while ((i = getopt(argc, argv, "qv")) != -1) { switch (i) { case 'q': qflag = 1; break; case 'v': qflag = 0; break; default: verify_usage(); exit(1); } } argc -= optind; argv += optind; if (argc < 1) { verify_usage(); exit(1); } OpenSSL_add_all_algorithms(); if ((key = key_new()) == NULL) fatal(1, "Can't initialize public key"); if (key_load_public(key, argv[0]) < 0) fatal(1, "Can't load public key"); if (argc == 1 || *argv[1] == '-') { argc = 0; if (verify_signature(key, stdin) == 0) { if (!qflag) fprintf(stderr, "Verified input\n"); } else fatal(1, "Couldn't verify input"); } for (i = 1; i < argc; i++) { gzipfile = argv[i]; if ((fin = fopen(gzipfile, "r")) == NULL) { fprintf(stderr, "Couldn't open %s: %s\n", gzipfile, strerror(errno)); continue; } error = verify_signature(key, fin); fclose(fin); if (!error) { if (!qflag) fprintf(stderr, "Verified %s\n", gzipfile); } else fatal(1, "Couldn't verify %s", gzipfile); } key_free(key); }