+static bool write_pem(FILE *fp, const char *type, void *vbuf, size_t size) {
+ fprintf(fp, "-----BEGIN %s-----\n", type);
+
+ char *buf = vbuf;
+ char base64[65];
+
+ while(size) {
+ size_t todo = size > 48 ? 48 : size;
+ b64encode(buf, base64, todo);
+ fprintf(fp, "%s\n", base64);
+ buf += todo;
+ size -= todo;
+ }
+
+ fprintf(fp, "-----END %s-----\n", type);
+ return !ferror(fp);
+}
+