mbed TLS v3.1.0
|
This file contains ChaCha20 definitions and functions. More...
#include "mbedtls/private_access.h"
#include "mbedtls/build_info.h"
#include <stdint.h>
#include <stddef.h>
#include "chacha20_alt.h"
Go to the source code of this file.
Macros | |
#define | MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0051 |
Functions | |
void | mbedtls_chacha20_init (mbedtls_chacha20_context *ctx) |
This function initializes the specified ChaCha20 context. More... | |
void | mbedtls_chacha20_free (mbedtls_chacha20_context *ctx) |
This function releases and clears the specified ChaCha20 context. More... | |
int | mbedtls_chacha20_setkey (mbedtls_chacha20_context *ctx, const unsigned char key[32]) |
This function sets the encryption/decryption key. More... | |
int | mbedtls_chacha20_starts (mbedtls_chacha20_context *ctx, const unsigned char nonce[12], uint32_t counter) |
This function sets the nonce and initial counter value. More... | |
int | mbedtls_chacha20_update (mbedtls_chacha20_context *ctx, size_t size, const unsigned char *input, unsigned char *output) |
This function encrypts or decrypts data. More... | |
int | mbedtls_chacha20_crypt (const unsigned char key[32], const unsigned char nonce[12], uint32_t counter, size_t size, const unsigned char *input, unsigned char *output) |
This function encrypts or decrypts data with ChaCha20 and the given key and nonce. More... | |
int | mbedtls_chacha20_self_test (int verbose) |
The ChaCha20 checkup routine. More... | |
This file contains ChaCha20 definitions and functions.
ChaCha20 is a stream cipher that can encrypt and decrypt information. ChaCha was created by Daniel Bernstein as a variant of its Salsa cipher https://cr.yp.to/chacha/chacha-20080128.pdf ChaCha20 is the variant with 20 rounds, that was also standardized in RFC 7539.
Definition in file chacha20.h.
#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0051 |
Invalid input parameter(s).
Definition at line 42 of file chacha20.h.
int mbedtls_chacha20_crypt | ( | const unsigned char | key[32], |
const unsigned char | nonce[12], | ||
uint32_t | counter, | ||
size_t | size, | ||
const unsigned char * | input, | ||
unsigned char * | output | ||
) |
This function encrypts or decrypts data with ChaCha20 and the given key and nonce.
Since ChaCha20 is a stream cipher, the same operation is used for encrypting and decrypting data.
input
and output
pointers must either be equal or point to non-overlapping buffers.key | The encryption/decryption key. This must be 32 Bytes in length. |
nonce | The nonce. This must be 12 Bytes in size. |
counter | The initial counter value. This is usually 0 . |
size | The length of the input data in Bytes. |
input | The buffer holding the input data. This pointer can be NULL if size == 0 . |
output | The buffer holding the output data. This must be able to hold size Bytes. This pointer can be NULL if size == 0 . |
0
on success. void mbedtls_chacha20_free | ( | mbedtls_chacha20_context * | ctx | ) |
This function releases and clears the specified ChaCha20 context.
ctx | The ChaCha20 context to clear. This may be NULL , in which case this function is a no-op. If it is not NULL , it must point to an initialized context. |
void mbedtls_chacha20_init | ( | mbedtls_chacha20_context * | ctx | ) |
This function initializes the specified ChaCha20 context.
It must be the first API called before using the context.
It is usually followed by calls to mbedtls_chacha20_setkey()
and mbedtls_chacha20_starts()
, then one or more calls to to mbedtls_chacha20_update()
, and finally to mbedtls_chacha20_free()
.
ctx | The ChaCha20 context to initialize. This must not be NULL . |
int mbedtls_chacha20_self_test | ( | int | verbose | ) |
The ChaCha20 checkup routine.
0
on success. 1
on failure. int mbedtls_chacha20_setkey | ( | mbedtls_chacha20_context * | ctx, |
const unsigned char | key[32] | ||
) |
This function sets the encryption/decryption key.
mbedtls_chacha20_starts()
to set a nonce before you start encrypting/decrypting data with mbedtls_chacha_update()
.ctx | The ChaCha20 context to which the key should be bound. It must be initialized. |
key | The encryption/decryption key. This must be 32 Bytes in length. |
0
on success. int mbedtls_chacha20_starts | ( | mbedtls_chacha20_context * | ctx, |
const unsigned char | nonce[12], | ||
uint32_t | counter | ||
) |
This function sets the nonce and initial counter value.
ctx | The ChaCha20 context to which the nonce should be bound. It must be initialized and bound to a key. |
nonce | The nonce. This must be 12 Bytes in size. |
counter | The initial counter value. This is usually 0 . |
0
on success. int mbedtls_chacha20_update | ( | mbedtls_chacha20_context * | ctx, |
size_t | size, | ||
const unsigned char * | input, | ||
unsigned char * | output | ||
) |
This function encrypts or decrypts data.
Since ChaCha20 is a stream cipher, the same operation is used for encrypting and decrypting data.
input
and output
pointers must either be equal or point to non-overlapping buffers.mbedtls_chacha20_setkey()
and mbedtls_chacha20_starts()
must be called at least once to setup the context before this function can be called.ctx | The ChaCha20 context to use for encryption or decryption. It must be initialized and bound to a key and nonce. |
size | The length of the input data in Bytes. |
input | The buffer holding the input data. This pointer can be NULL if size == 0 . |
output | The buffer holding the output data. This must be able to hold size Bytes. This pointer can be NULL if size == 0 . |
0
on success.