#include <stdlib.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <gnutls/gnutls.h>

gnutls_certificate_credentials_t ca_list;

int main(int argc, char *argv[]) {
  DIR *d;
  struct dirent *dent;
  char ca_file[MAXPATHLEN];
  struct stat s;
  char *dir = "/etc/ssl/certs";
  int i = 0;

  d = opendir(dir);
  if (d == NULL) exit(1);
  gnutls_global_init();
  gnutls_certificate_allocate_credentials(&ca_list);
  while ((dent = readdir(d)) != NULL) {
    snprintf(ca_file, sizeof ca_file, "%s/%s", dir, dent->d_name);
    stat(ca_file, &s);
    if (!S_ISREG(s.st_mode)) continue;
    gnutls_certificate_set_x509_trust_file(ca_list, ca_file, GNUTLS_X509_FMT_PEM);
    if (i++ > 20) break;
  }
  gnutls_certificate_free_credentials (ca_list);
  gnutls_global_deinit ();
  closedir(d);
}
