+
+static int cert_load(const char *certfile, struct blob_attr *certtb[]) {
+ FILE *f;
+ struct blob_buf certbuf;
+ int ret = 0;
+ char filebuf[CERT_BUF_LEN];
+ int len;
+
+ blob_buf_init(&certbuf, 0);
+
+ f = fopen(certfile, "r");
+ if (!f)
+ return 1;
+
+ do {
+ len = fread(&filebuf, 1, CERT_BUF_LEN - 1, f);
+ blob_put_raw(&certbuf, filebuf, len);
+ } while(!feof(f) && !ferror(f));
+
+ ret = ferror(f);
+ fclose(f);
+
+ if (ret)
+ return 1;
+
+ blob_parse(certbuf.head, certtb, cert_policy, CERT_ATTR_MAX);
+
+ return 0;
+}
+