#include <gnutls_cipher_int.h>
#include <gnutls_datum.h>
#include <gnutls/crypto.h>
+#include <random.h>
#include <crypto.h>
/**
{
return _gnutls_hash_fast (algorithm, text, textlen, digest);
}
+
+/**
+ * gnutls_key_generate:
+ * @key: is a pointer to a #gnutls_datum_t which will contain a newly
+ * created key.
+ * @key_size: The number of bytes of the key.
+ *
+ * Generates a random key of @key_bytes size.
+ *
+ * Returns: On success, %GNUTLS_E_SUCCESS (0) is returned, or an
+ * error code.
+ *
+ * Since: 3.0.0
+ **/
+int
+gnutls_key_generate (gnutls_datum_t * key, unsigned int key_size)
+{
+ int ret;
+
+ key->size = key_size;
+ key->data = gnutls_malloc (key->size);
+ if (!key->data)
+ {
+ gnutls_assert ();
+ return GNUTLS_E_MEMORY_ERROR;
+ }
+
+ ret = _gnutls_rnd (GNUTLS_RND_RANDOM, key->data, key->size);
+ if (ret < 0)
+ {
+ gnutls_assert ();
+ _gnutls_free_datum (key);
+ return ret;
+ }
+
+ return 0;
+}
int
gnutls_session_ticket_key_generate (gnutls_datum_t * key)
{
- int ret;
-
- key->size = SESSION_KEY_SIZE;
- key->data = gnutls_malloc (key->size);
- if (!key->data)
- {
- gnutls_assert ();
- return GNUTLS_E_MEMORY_ERROR;
- }
-
- ret = _gnutls_rnd (GNUTLS_RND_RANDOM, key->data, key->size);
- if (ret < 0)
- {
- gnutls_assert ();
- _gnutls_free_datum (key);
- return ret;
- }
-
- return 0;
+ return gnutls_key_generate(key, SESSION_KEY_SIZE);
}
/**
int gnutls_session_ticket_enable_server (gnutls_session_t session,
const gnutls_datum_t * key);
+ int gnutls_key_generate (gnutls_datum_t * key, unsigned int key_size);
+
/* if you just want some defaults, use the following.
*/
int gnutls_priority_init (gnutls_priority_t * priority_cache,
#define GNUTLS_E_CRYPTODEV_DEVICE_ERROR -212
#define GNUTLS_E_CHANNEL_BINDING_NOT_AVAILABLE -213
+#define GNUTLS_E_BAD_COOKIE -214
/* PKCS11 related */
#define GNUTLS_E_PKCS11_ERROR -300