Hi Nikos, Thank you for your reply.
Please find attached to this Email, the patch I made to achieve my goal.
For your information, I also found an issue in GNUTLS which does not handle
supplemental data type > 255.
This fix is included in this patch:
- buf->data[sizepos] = 0;
- buf->data[sizepos + 1] = p->type;
+ buf->data[sizepos] = (p->type >> 8) & 0xFF;
+ buf->data[sizepos + 1] = (p->type) & 0xFF;
This patch do different things:
1) It allow to add extensions support from public API:
gnutls_ext_register
2) It allow to add supplemental data support from public API:
gnutls_supplemental_register
To achieve my goal :
I changed the way supplemental callback are stored.
(gnutls_supplemental.c)
I moved extension en supplemental structure to gnutls.h header.
(gnutls_supplemental_entry, extension_entry_st)
I created an opaque struct for strings (typedef struct gnutls_buffer
gnutls_buffer_st;) and I added a function to append data in this buffer (Used
by extension/supplemental callbacks).
Feel free to contact me if you have any question or if something doesn't look
like your expectations.
Regards,
Thierry.
-----Original Message-----
From: Nikos Mavrogiannopoulos [mailto:[email protected]] On Behalf
Of Nikos Mavrogiannopoulos
Sent: Monday, March 09, 2015 7:05 PM
To: Thierry Quemerais
Cc: [email protected]
Subject: Re: [gnutls-help] GNU TLS and extensions/supplemental data
On Mon, 2015-03-09 at 12:30 +0100, Thierry Quemerais wrote:
> Hi all,
> 1) Is there any way to register extensions and supplemental data
> callback out of GNUTLS (With public API). I found no way to do it
> without changing GNUTLS source code, does I missed something ?
> 2) If no, I plan to make this work and to re-distribute it and I
> would like to know why (if there is any reason like security) this
> work have not been done ?
> Why no public API is available to add and handle customs
> extensions/supplemental data ?
Hi,
In a re-organization of the code the exported functions were removed because
they would have to depend on an internal API. The reason was that I had no time
to implement an API which would allow to register extensions in a way that it
would not depend on internal functionality.
Said that, if you sent a patch with a clean API which doesn't depend on
internals (*), to register extensions and supplemental data, I'll include it.
regards,
Nikos
(*) or export the minimum necessary so we can rewrite the code without changing
the API
gnutls_ext_supp_public.diff
Description: gnutls_ext_supp_public.diff
_______________________________________________ Gnutls-help mailing list [email protected] http://lists.gnupg.org/mailman/listinfo/gnutls-help
