crypto

crypto

Synopsis

int                 gnutls_cipher_add_auth              (gnutls_cipher_hd_t handle,
                                                         const void *text,
                                                         size_t text_size);
int                 gnutls_cipher_decrypt               (const gnutls_cipher_hd_t handle,
                                                         void *ciphertext,
                                                         size_t ciphertextlen);
int                 gnutls_cipher_decrypt2              (gnutls_cipher_hd_t handle,
                                                         const void *ciphertext,
                                                         size_t ciphertextlen,
                                                         void *text,
                                                         size_t textlen);
void                gnutls_cipher_deinit                (gnutls_cipher_hd_t handle);
int                 gnutls_cipher_encrypt               (const gnutls_cipher_hd_t handle,
                                                         void *text,
                                                         size_t textlen);
int                 gnutls_cipher_encrypt2              (gnutls_cipher_hd_t handle,
                                                         const void *text,
                                                         size_t textlen,
                                                         void *ciphertext,
                                                         size_t ciphertextlen);
int                 gnutls_cipher_get_block_size        (gnutls_cipher_algorithm_t algorithm);
int                 gnutls_cipher_get_iv_size           (gnutls_cipher_algorithm_t algorithm);
size_t              gnutls_cipher_get_key_size          (gnutls_cipher_algorithm_t algorithm);
typedef             gnutls_cipher_hd_t;
int                 gnutls_cipher_init                  (gnutls_cipher_hd_t *handle,
                                                         gnutls_cipher_algorithm_t cipher,
                                                         const gnutls_datum_t *key,
                                                         const gnutls_datum_t *iv);
void                gnutls_cipher_set_iv                (gnutls_cipher_hd_t handle,
                                                         void *iv,
                                                         size_t ivlen);
int                 gnutls_cipher_tag                   (gnutls_cipher_hd_t handle,
                                                         void *tag,
                                                         size_t tag_size);
int                 gnutls_hash                         (gnutls_hash_hd_t handle,
                                                         const void *text,
                                                         size_t textlen);
void                gnutls_hash_deinit                  (gnutls_hash_hd_t handle,
                                                         void *digest);
int                 gnutls_hash_fast                    (gnutls_digest_algorithm_t algorithm,
                                                         const void *text,
                                                         size_t textlen,
                                                         void *digest);
int                 gnutls_hash_get_len                 (gnutls_digest_algorithm_t algorithm);
typedef             gnutls_hash_hd_t;
int                 gnutls_hash_init                    (gnutls_hash_hd_t *dig,
                                                         gnutls_digest_algorithm_t algorithm);
void                gnutls_hash_output                  (gnutls_hash_hd_t handle,
                                                         void *digest);
int                 gnutls_hmac                         (gnutls_hmac_hd_t handle,
                                                         const void *text,
                                                         size_t textlen);
void                gnutls_hmac_deinit                  (gnutls_hmac_hd_t handle,
                                                         void *digest);
int                 gnutls_hmac_fast                    (gnutls_mac_algorithm_t algorithm,
                                                         const void *key,
                                                         size_t keylen,
                                                         const void *text,
                                                         size_t textlen,
                                                         void *digest);
int                 gnutls_hmac_get_len                 (gnutls_mac_algorithm_t algorithm);
typedef             gnutls_hmac_hd_t;
int                 gnutls_hmac_init                    (gnutls_hmac_hd_t *dig,
                                                         gnutls_mac_algorithm_t algorithm,
                                                         const void *key,
                                                         size_t keylen);
void                gnutls_hmac_output                  (gnutls_hmac_hd_t handle,
                                                         void *digest);
void                gnutls_hmac_set_nonce               (gnutls_hmac_hd_t handle,
                                                         const void *nonce,
                                                         size_t nonce_len);
size_t              gnutls_mac_get_key_size             (gnutls_mac_algorithm_t algorithm);
size_t              gnutls_mac_get_nonce_size           (gnutls_mac_algorithm_t algorithm);
int                 gnutls_rnd                          (gnutls_rnd_level_t level,
                                                         void *data,
                                                         size_t len);
enum                gnutls_rnd_level_t;
void                gnutls_rnd_refresh                  (void);

Description

Details

gnutls_cipher_add_auth ()

int                 gnutls_cipher_add_auth              (gnutls_cipher_hd_t handle,
                                                         const void *text,
                                                         size_t text_size);

This function operates on authenticated encryption with associated data (AEAD) ciphers and authenticate the input data. This function can only be called once and before any encryption operations.

handle :

is a gnutls_cipher_hd_t structure.

text :

the data to be authenticated

text_size :

The length of the data

Returns :

Zero or a negative error code on error.

Since 3.0


gnutls_cipher_decrypt ()

int                 gnutls_cipher_decrypt               (const gnutls_cipher_hd_t handle,
                                                         void *ciphertext,
                                                         size_t ciphertextlen);

This function will decrypt the given data using the algorithm specified by the context.

Note that in AEAD ciphers, this will not check the tag. You will need to compare the tag sent with the value returned from gnutls_cipher_tag().

handle :

is a gnutls_cipher_hd_t structure.

ciphertext :

the data to encrypt

ciphertextlen :

The length of data to encrypt

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_cipher_decrypt2 ()

int                 gnutls_cipher_decrypt2              (gnutls_cipher_hd_t handle,
                                                         const void *ciphertext,
                                                         size_t ciphertextlen,
                                                         void *text,
                                                         size_t textlen);

This function will decrypt the given data using the algorithm specified by the context.

Note that in AEAD ciphers, this will not check the tag. You will need to compare the tag sent with the value returned from gnutls_cipher_tag().

handle :

is a gnutls_cipher_hd_t structure.

ciphertext :

the data to encrypt

ciphertextlen :

The length of data to encrypt

text :

the decrypted data

textlen :

The available length for decrypted data

Returns :

Zero or a negative error code on error.

Since 2.12.0


gnutls_cipher_deinit ()

void                gnutls_cipher_deinit                (gnutls_cipher_hd_t handle);

This function will deinitialize all resources occupied by the given encryption context.

handle :

is a gnutls_cipher_hd_t structure.

Since 2.10.0


gnutls_cipher_encrypt ()

int                 gnutls_cipher_encrypt               (const gnutls_cipher_hd_t handle,
                                                         void *text,
                                                         size_t textlen);

This function will encrypt the given data using the algorithm specified by the context.

handle :

is a gnutls_cipher_hd_t structure.

text :

the data to encrypt

textlen :

The length of data to encrypt

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_cipher_encrypt2 ()

int                 gnutls_cipher_encrypt2              (gnutls_cipher_hd_t handle,
                                                         const void *text,
                                                         size_t textlen,
                                                         void *ciphertext,
                                                         size_t ciphertextlen);

This function will encrypt the given data using the algorithm specified by the context.

handle :

is a gnutls_cipher_hd_t structure.

text :

the data to encrypt

textlen :

The length of data to encrypt

ciphertext :

the encrypted data

ciphertextlen :

The available length for encrypted data

Returns :

Zero or a negative error code on error.

Since 2.12.0


gnutls_cipher_get_block_size ()

int                 gnutls_cipher_get_block_size        (gnutls_cipher_algorithm_t algorithm);

algorithm :

is an encryption algorithm

Returns :

the block size of the encryption algorithm.

Since 2.10.0


gnutls_cipher_get_iv_size ()

int                 gnutls_cipher_get_iv_size           (gnutls_cipher_algorithm_t algorithm);

Get block size for encryption algorithm.

algorithm :

is an encryption algorithm

Returns :

block size for encryption algorithm.

Since 3.2.0


gnutls_cipher_get_key_size ()

size_t              gnutls_cipher_get_key_size          (gnutls_cipher_algorithm_t algorithm);

Get key size for cipher.

algorithm :

is an encryption algorithm

Returns :

length (in bytes) of the given cipher's key size, or 0 if the given cipher is invalid.

gnutls_cipher_hd_t

typedef struct api_cipher_hd_st *gnutls_cipher_hd_t;


gnutls_cipher_init ()

int                 gnutls_cipher_init                  (gnutls_cipher_hd_t *handle,
                                                         gnutls_cipher_algorithm_t cipher,
                                                         const gnutls_datum_t *key,
                                                         const gnutls_datum_t *iv);

This function will initialize an context that can be used for encryption/decryption of data. This will effectively use the current crypto backend in use by gnutls or the cryptographic accelerator in use.

handle :

is a gnutls_cipher_hd_t structure.

cipher :

the encryption algorithm to use

key :

The key to be used for encryption

iv :

The IV to use (if not applicable set NULL)

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_cipher_set_iv ()

void                gnutls_cipher_set_iv                (gnutls_cipher_hd_t handle,
                                                         void *iv,
                                                         size_t ivlen);

This function will set the IV to be used for the next encryption block.

handle :

is a gnutls_cipher_hd_t structure.

iv :

the IV to set

ivlen :

The length of the IV

Since 3.0


gnutls_cipher_tag ()

int                 gnutls_cipher_tag                   (gnutls_cipher_hd_t handle,
                                                         void *tag,
                                                         size_t tag_size);

This function operates on authenticated encryption with associated data (AEAD) ciphers and will return the output tag.

handle :

is a gnutls_cipher_hd_t structure.

tag :

will hold the tag

tag_size :

The length of the tag to return

Returns :

Zero or a negative error code on error.

Since 3.0


gnutls_hash ()

int                 gnutls_hash                         (gnutls_hash_hd_t handle,
                                                         const void *text,
                                                         size_t textlen);

This function will hash the given data using the algorithm specified by the context.

handle :

is a gnutls_cipher_hd_t structure.

text :

the data to hash

textlen :

The length of data to hash

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_hash_deinit ()

void                gnutls_hash_deinit                  (gnutls_hash_hd_t handle,
                                                         void *digest);

This function will deinitialize all resources occupied by the given hash context.

handle :

is a gnutls_hash_hd_t structure.

digest :

is the output value of the hash

Since 2.10.0


gnutls_hash_fast ()

int                 gnutls_hash_fast                    (gnutls_digest_algorithm_t algorithm,
                                                         const void *text,
                                                         size_t textlen,
                                                         void *digest);

This convenience function will hash the given data and return output on a single call.

algorithm :

the hash algorithm to use

text :

the data to hash

textlen :

The length of data to hash

digest :

is the output value of the hash

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_hash_get_len ()

int                 gnutls_hash_get_len                 (gnutls_digest_algorithm_t algorithm);

This function will return the length of the output data of the given hash algorithm.

algorithm :

the hash algorithm to use

Returns :

The length or zero on error.

Since 2.10.0


gnutls_hash_hd_t

typedef struct hash_hd_st *gnutls_hash_hd_t;


gnutls_hash_init ()

int                 gnutls_hash_init                    (gnutls_hash_hd_t *dig,
                                                         gnutls_digest_algorithm_t algorithm);

This function will initialize an context that can be used to produce a Message Digest of data. This will effectively use the current crypto backend in use by gnutls or the cryptographic accelerator in use.

dig :

is a gnutls_hash_hd_t structure.

algorithm :

the hash algorithm to use

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_hash_output ()

void                gnutls_hash_output                  (gnutls_hash_hd_t handle,
                                                         void *digest);

This function will output the current hash value and reset the state of the hash.

handle :

is a gnutls_hash_hd_t structure.

digest :

is the output value of the hash

Since 2.10.0


gnutls_hmac ()

int                 gnutls_hmac                         (gnutls_hmac_hd_t handle,
                                                         const void *text,
                                                         size_t textlen);

This function will hash the given data using the algorithm specified by the context.

handle :

is a gnutls_cipher_hd_t structure.

text :

the data to hash

textlen :

The length of data to hash

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_hmac_deinit ()

void                gnutls_hmac_deinit                  (gnutls_hmac_hd_t handle,
                                                         void *digest);

This function will deinitialize all resources occupied by the given hmac context.

handle :

is a gnutls_hmac_hd_t structure.

digest :

is the output value of the MAC

Since 2.10.0


gnutls_hmac_fast ()

int                 gnutls_hmac_fast                    (gnutls_mac_algorithm_t algorithm,
                                                         const void *key,
                                                         size_t keylen,
                                                         const void *text,
                                                         size_t textlen,
                                                         void *digest);

This convenience function will hash the given data and return output on a single call.

algorithm :

the hash algorithm to use

key :

the key to use

keylen :

The length of the key

text :

the data to hash

textlen :

The length of data to hash

digest :

is the output value of the hash

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_hmac_get_len ()

int                 gnutls_hmac_get_len                 (gnutls_mac_algorithm_t algorithm);

This function will return the length of the output data of the given hmac algorithm.

algorithm :

the hmac algorithm to use

Returns :

The length or zero on error.

Since 2.10.0


gnutls_hmac_hd_t

typedef struct hmac_hd_st *gnutls_hmac_hd_t;


gnutls_hmac_init ()

int                 gnutls_hmac_init                    (gnutls_hmac_hd_t *dig,
                                                         gnutls_mac_algorithm_t algorithm,
                                                         const void *key,
                                                         size_t keylen);

This function will initialize an context that can be used to produce a Message Authentication Code (MAC) of data. This will effectively use the current crypto backend in use by gnutls or the cryptographic accelerator in use.

Note that despite the name of this function, it can be used for other MAC algorithms than HMAC.

dig :

is a gnutls_hmac_hd_t structure.

algorithm :

the HMAC algorithm to use

key :

The key to be used for encryption

keylen :

The length of the key

Returns :

Zero or a negative error code on error.

Since 2.10.0


gnutls_hmac_output ()

void                gnutls_hmac_output                  (gnutls_hmac_hd_t handle,
                                                         void *digest);

This function will output the current MAC value and reset the state of the MAC.

handle :

is a gnutls_hmac_hd_t structure.

digest :

is the output value of the MAC

Since 2.10.0


gnutls_hmac_set_nonce ()

void                gnutls_hmac_set_nonce               (gnutls_hmac_hd_t handle,
                                                         const void *nonce,
                                                         size_t nonce_len);

This function will set the nonce in the MAC algorithm.

handle :

is a gnutls_cipher_hd_t structure.

nonce :

the data to set as nonce

nonce_len :

The length of data

Since 3.2.0


gnutls_mac_get_key_size ()

size_t              gnutls_mac_get_key_size             (gnutls_mac_algorithm_t algorithm);

Returns the size of the MAC key used in TLS.

algorithm :

is an encryption algorithm

Returns :

length (in bytes) of the given MAC key size, or 0 if the given MAC algorithm is invalid.

gnutls_mac_get_nonce_size ()

size_t              gnutls_mac_get_nonce_size           (gnutls_mac_algorithm_t algorithm);

Returns the size of the nonce used by the MAC in TLS.

algorithm :

is an encryption algorithm

Returns :

length (in bytes) of the given MAC nonce size, or 0.

Since 3.2.0


gnutls_rnd ()

int                 gnutls_rnd                          (gnutls_rnd_level_t level,
                                                         void *data,
                                                         size_t len);

This function will generate random data and store it to output buffer.

level :

a security level

data :

place to store random bytes

len :

The requested size

Returns :

Zero or a negative error code on error.

Since 2.12.0


enum gnutls_rnd_level_t

typedef enum {
	GNUTLS_RND_NONCE = 0,
	GNUTLS_RND_RANDOM = 1,
	GNUTLS_RND_KEY = 2
} gnutls_rnd_level_t;

Enumeration of random quality levels.

GNUTLS_RND_NONCE

Non-predictable random number. Fatal in parts of session if broken, i.e., vulnerable to statistical analysis.

GNUTLS_RND_RANDOM

Pseudo-random cryptographic random number. Fatal in session if broken.

GNUTLS_RND_KEY

Fatal in many sessions if broken.

gnutls_rnd_refresh ()

void                gnutls_rnd_refresh                  (void);

This function refreshes the random generator state. That is the current precise time, CPU usage, and other values are input into its state.

On a slower rate input from /dev/urandom is mixed too.

Since 3.1.7