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 }