From 0fdc95de7e747193a9ca200afd7d481a949d6e99 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petr=20P=C3=ADsa=C5=99?= Date: Sun, 27 Jun 2010 20:45:21 +0200 Subject: [PATCH] Implement message authenticity check This feature is accessible using `authenticate' command. --- src/shigofumi.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/shigofumi.c b/src/shigofumi.c index e4e3465..95fafb9 100644 --- a/src/shigofumi.c +++ b/src/shigofumi.c @@ -2077,6 +2077,39 @@ static int shi_verify(int argc, const char **argv) { } +static int shi_authenticate(int argc, const char **argv) { + isds_error err; + int retval = 0; + + if (!message) { + printf(_("No message loaded\n")); + return -1; + } + if (!message->raw || message->raw_length == 0) { + printf(_("Current message is missing raw representation\n")); + return -1; + } + + printf(_("Submitting message to authenticity check...\n")); + err = isds_authenticate_message(cisds, message->raw, message->raw_length); + finish_isds_operation(cisds, (err == IE_NOTUNIQ) ? IE_SUCCESS : err); + + switch (err) { + case IE_SUCCESS: + printf(_("Message originates in ISDS.\n")); break; + case IE_NOTUNIQ: + printf(_("Message is unknown to ISDS or has been tampered.\n")); + retval = -1; + break; + default: + retval = -1; + break; + } + + return retval; +} + + static void shi_accept_message_usage(const char *command) { printf(_( "Usage: %s [MESSAGE_ID...]\n" @@ -2960,6 +2993,8 @@ struct command base_commands[] = { }; struct command message_commands[] = { + { "authenticate", shi_authenticate, N_("check message authenticity"), + NULL, ARGTYPE_NONE }, { "convertdoc", shi_convert_document, N_("submit document of current message for authorized conversion"), shi_convert_document_usage, ARGTYPE_DOCID }, -- 2.11.4.GIT