libqaeda

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | README | LICENSE

verify.c (880B)


      1 #include <stdio.h>
      2 #include <fcntl.h>
      3 #include <unistd.h>
      4 #include <errno.h>
      5 #include <llog.h>
      6 #include <lq/cert.h>
      7 #include <lq/base.h>
      8 #include "debug.h"
      9 
     10 
     11 int main(int argc, char **argv) {
     12 	int f;
     13 	int r;
     14 	int c;
     15 	int l;
     16 	char b[LQ_CRYPTO_BUFLEN];
     17 	LQCert *cert;
     18 
     19 	lq_init();
     20 	f = open(*(argv+1), O_RDONLY);
     21 	if (f < 0) {
     22 		lq_finish();
     23 		return 1;
     24 	}
     25 
     26 	c = 0;
     27 	l = LQ_CRYPTO_BUFLEN;
     28 	while (1) {
     29 		r = read(f, b, l);
     30 		if (r < 1) {
     31 			break;
     32 		}
     33 		l -= r;
     34 		c += r;
     35 	}
     36 	close(f);
     37 	if (r < 0) {
     38 		lq_finish();
     39 		return errno;
     40 	}
     41 
     42 	r = lq_certificate_deserialize(&cert, NULL, b, c);
     43 	if (r) {
     44 		debug_logerr(LLOG_ERROR, r, "deserialize err");
     45 		lq_finish();
     46 		return 1;
     47 	}
     48 
     49 	r = lq_certificate_verify(cert);
     50 	if (r) {
     51 		debug_logerr(LLOG_ERROR, r, "verify err");
     52 		lq_certificate_free(cert);
     53 		lq_finish();
     54 		return 1;
     55 	}
     56 
     57 	lq_certificate_free(cert);
     58 	lq_finish();
     59 	return r;
     60 }