Function: gnutls-format-certificate

gnutls-format-certificate is a function defined in gnutls.c.

Signature

(gnutls-format-certificate CERT)

Documentation

Format a X.509 certificate to a string.

Given a PEM-encoded X.509 certificate CERT, returns a human-readable string representation.

Source Code

// Defined in /usr/src/emacs/src/gnutls.c
{
  CHECK_STRING (cert);

  int err;
  gnutls_x509_crt_t crt;

  err = gnutls_x509_crt_init (&crt);
  check_memory_full (err);
  if (err < GNUTLS_E_SUCCESS)
    error ("gnutls-format-certificate error: %s", emacs_gnutls_strerror (err));

  gnutls_datum_t crt_data = { SDATA (cert), strlen (SSDATA (cert)) };
  err = gnutls_x509_crt_import (crt, &crt_data, GNUTLS_X509_FMT_PEM);
  check_memory_full (err);
  if (err < GNUTLS_E_SUCCESS)
    {
      gnutls_x509_crt_deinit (crt);
      error ("gnutls-format-certificate error: %s",
	     emacs_gnutls_strerror (err));
    }

  gnutls_datum_t out;
  err = gnutls_x509_crt_print (crt, GNUTLS_CRT_PRINT_FULL, &out);
  check_memory_full (err);
  if (err < GNUTLS_E_SUCCESS)
    {
      gnutls_x509_crt_deinit (crt);
      error ("gnutls-format-certificate error: %s",
	     emacs_gnutls_strerror (err));
    }

  Lisp_Object result = make_string_from_bytes ((char *) out.data, out.size,
					       out.size);
  gnutls_free (out.data);
  gnutls_x509_crt_deinit (crt);

  return result;
}