gnutls_crypto_register_cipher — API function


#include <gnutls/crypto.h>

int gnutls_crypto_register_cipher(gnutls_cipher_algorithm_t algorithm, int priority, gnutls_cipher_init_func init, gnutls_cipher_setkey_func setkey, gnutls_cipher_setiv_func setiv, gnutls_cipher_encrypt_func encrypt, gnutls_cipher_decrypt_func decrypt, gnutls_cipher_deinit_func deinit);


gnutls_cipher_algorithm_t algorithm

is the gnutls algorithm identifier

int priority

is the priority of the algorithm

gnutls_cipher_init_func init

A function which initializes the cipher

gnutls_cipher_setkey_func setkey

A function which sets the key of the cipher

gnutls_cipher_setiv_func setiv

A function which sets the nonce/IV of the cipher (non-AEAD)

gnutls_cipher_encrypt_func encrypt

A function which performs encryption (non-AEAD)

gnutls_cipher_decrypt_func decrypt

A function which performs decryption (non-AEAD)

gnutls_cipher_deinit_func deinit

A function which deinitializes the cipher


This function will register a cipher algorithm to be used by gnutls.  Any algorithm registered will override the included algorithms and by convention kernel implemented algorithms have priority of 90 and CPU-assisted of 80.  The algorithm with the lowest priority will be used by gnutls.

In the case the registered init or setkey functions return GNUTLS_E_NEED_FALLBACK, GnuTLS will attempt to use the next in priority registered cipher.

The functions which are marked as non-AEAD they are not required when registering a cipher to be used with the new AEAD API introduced in GnuTLS 3.4.0. Internally GnuTLS uses the new AEAD API.


GNUTLS_E_SUCCESS on success, otherwise a negative error code.



Reporting Bugs

Report bugs to <>.
Home page:

See Also

The full documentation for gnutls is maintained as a Texinfo manual. If the /usr/share/doc/gnutls/ directory does not contain the HTML form visit


3.6.9 gnutls