gnutls-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnutls-dev] Problem with subject names. (Ä ndrat av Pelle Johansson)


From: Pelle Johansson
Subject: [gnutls-dev] Problem with subject names. (Ä ndrat av Pelle Johansson)
Date: Fri, 29 Oct 2004 00:30:24 +0200

[Tried to join and send this to help-gnutls but it seems to be broken?]

I'm having some problem with the subject name extraction functions. I want to extract the common name from a certificate using gnutls_x509_crt_get_dn_by_oid(), but I'm always getting a GNUTLS_E_SHORT_MEMORY_BUFFER. This is regardless if I call with a NULL buf argument or with buf_sizeof set to 10000.

So to investigate some more I tried the gnutls_x509_crt_get_dn_oid() functions. These do set the size, but the buffer isn't filled out (it keeps it previous value). gnutls_x509_crt_get_dn() works as expected though.

Am I doing something wrong here or is there a bug?

Code:
const char *tls_get_cn (gnutls_x509_crt cert)
{
  size_t sz = 0;
  char *buf;
  int i;

  buf = malloc (10000);
  sz = 10000;
  if (!gnutls_x509_crt_get_dn (cert, buf, &sz))
    fprintf (stderr, "DN: %s\n", buf);
  sz = 10000;
  buf[0] = 0;
  for (i = 0; !gnutls_x509_crt_get_dn_oid (cert, i, buf, &sz); i++)
  {
    fprintf (stderr, "%d size %lu: %s\n", i, sz, buf);
    sz = 10000;
    buf[0] = 0;
  }

  sz = 10000;
i = gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, NULL, &sz);
  fprintf (stderr, "res = %d, sz = %lu\n", i, sz);
i = gnutls_x509_crt_get_dn_by_oid (cert, GNUTLS_OID_X520_COMMON_NAME, 0, 0, buf, &sz);
  fprintf (stderr, "res = %d, sz = %lu\n", i, sz);
  if (i)
    return NULL;
  return buf;
}

Output:
DN: C=SE,L=Linköping,O=morth.org,CN=ftp.morth.org,address@hidden
0 size 7:
1 size 7:
2 size 8:
3 size 7:
4 size 20:
res = -51, sz = 0
res = -51, sz = 0
--
Pelle Johansson
<address@hidden>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]