1 #define _XOPEN_SOURCE 500
12 int main(int argc
, char **argv
) {
13 struct isds_ctx
*ctx
= NULL
;
16 setlocale(LC_ALL
, "");
18 if (argc
!= 2 || !argv
[1] || !*argv
[1]) {
19 printf("Usage: %s CMS_SIGNED_MESSAGE_IN_LOCAL_FILE\n",
26 printf("isds_init() failed: %s\n", isds_strerror(err
));
30 isds_set_logging(ILF_ALL
& ~ILF_HTTP
, ILL_ALL
);
32 ctx
= isds_ctx_create();
34 printf("isds_ctx_create() failed");
37 err
= isds_set_timeout(ctx
, 10000);
39 printf("isds_set_timeout() failed: %s\n", isds_strerror(err
));
42 /* err = isds_set_tls(ctx, ITLS_VERIFY_SERVER, 0);
44 printf("isds_set_tls(ITLS_VERIFY_SERVER) failed: %s\n",
48 err = isds_set_tls(ctx, ITLS_CA_FILE, "/etc/ssl/certs/ca-certificates.crt");
50 printf("isds_set_tls(ITLS_CA_FILE) failed: %s\n",
54 err
= isds_login(ctx
, url
, username
, password
, NULL
);
56 printf("isds_login() failed: %s: %s\n", isds_strerror(err
),
57 isds_long_message(ctx
));
59 printf("Logged in :)\n");
64 /* Authenticate message saved in local file */
69 if (mmap_file(argv
[1], &fd
, &buffer
, &length
))
72 printf("Sending message from file `%s' to ISDS for authenticity "
73 "check...\n", argv
[1]);
74 err
= isds_authenticate_message(ctx
, buffer
, length
);
76 printf("ISDS states: message is original\n");
77 else if (err
== IE_NOTEQUAL
)
78 printf("ISDS states: message is unkown or tampered\n");
80 printf("isds_authenticate_message() failed: %s: %s\n",
81 isds_strerror(err
), isds_long_message(ctx
));
83 munmap_file(fd
, buffer
,length
);
87 err
= isds_logout(ctx
);
89 printf("isds_logout() failed: %s\n", isds_strerror(err
));
92 err
= isds_ctx_free(&ctx
);
94 printf("isds_ctx_free() failed: %s\n", isds_strerror(err
));
99 printf("isds_cleanup() failed: %s\n", isds_strerror(err
));