crypto engine

Simon Josefsson simon at josefsson.org
Sun Apr 13 14:33:37 CEST 2008


Nikos Mavrogiannopoulos <nmav at gnutls.org> writes:

> About the new crypto engine I think it should be included as is in the
> new release. It is not tested but API-wise I don't expect changes. I
> could add the mpi interface after the release in the development
> branch.

Ok, I looked over the API, and I think we need to do at least #1/#2
before we can release it:

#1:

  I think that avoiding struct's in the public API would be a good idea
  (struct alignment always seem to cause problems on weirder platforms),
  so how about instead of doing something like this:

typedef struct gnutls_crypto_rnd {
  int (*init)( void** ctx);
  int (*rnd) ( void* ctx, int /* gnutls_rnd_level_t */ level, void* data, int datasize);
  void (*deinit)( void* ctx);
} gnutls_crypto_rnd_st;

int gnutls_crypto_rnd_register( int priority, gnutls_crypto_rnd_st* s);

  do this instead:

typedef int (*gnutls_rng_init_func)( void** ctx);
typedef int (*gnutls_rng_rnd_func) ( void* ctx, gnutls_rnd_level_t level, void* data, int datasize);
typedef void (*gnutls_rng_deinit_func)( void* ctx);

int gnutls_crypto_rnd_register( int priority,
                                gnutls_rng_init_func init,
                                gnutls_rng_rnd_func rnd,
                                gnutls_rng_deinit_func deinit);

  Note use of gnutls_rnd_level_t as well.

#2:

  Use 'size_t' for buffer length variables instead of 'int'.

#3:

  Couldn't we align the GNUTLS_RND_* symbols to match the libgcrypt
  values?  In other words, change the order and values of the symbols.
  Not important, but might simplify libgcrypt mapping...

/Simon





More information about the Gnutls-devel mailing list