[Top][All Lists]
[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>
- [gnutls-dev] Problem with subject names. (Ä ndrat av Pelle Johansson),
Pelle Johansson <=