Botan 3.6.1
Crypto and TLS for C&
|
#include <botan/ffi.h>
#include <botan/aead.h>
#include <botan/internal/bit_ops.h>
#include <botan/internal/ffi_util.h>
#include <botan/internal/stl_util.h>
#include <limits>
Go to the source code of this file.
Functions | |
int | botan_cipher_clear (botan_cipher_t cipher) |
int | botan_cipher_destroy (botan_cipher_t cipher) |
int | botan_cipher_get_default_nonce_length (botan_cipher_t cipher, size_t *nl) |
int | botan_cipher_get_ideal_update_granularity (botan_cipher_t cipher, size_t *ug) |
int | botan_cipher_get_keyspec (botan_cipher_t cipher, size_t *out_minimum_keylength, size_t *out_maximum_keylength, size_t *out_keylength_modulo) |
int | botan_cipher_get_tag_length (botan_cipher_t cipher, size_t *tl) |
int | botan_cipher_get_update_granularity (botan_cipher_t cipher, size_t *ug) |
int | botan_cipher_init (botan_cipher_t *cipher, const char *cipher_name, uint32_t flags) |
int | botan_cipher_is_authenticated (botan_cipher_t cipher) |
int | botan_cipher_name (botan_cipher_t cipher, char *name, size_t *name_len) |
int | botan_cipher_output_length (botan_cipher_t cipher, size_t in_len, size_t *out_len) |
int | botan_cipher_query_keylen (botan_cipher_t cipher, size_t *out_minimum_keylength, size_t *out_maximum_keylength) |
int | botan_cipher_requires_entire_message (botan_cipher_t cipher) |
int | botan_cipher_reset (botan_cipher_t cipher) |
int | botan_cipher_set_associated_data (botan_cipher_t cipher, const uint8_t *ad, size_t ad_len) |
int | botan_cipher_set_key (botan_cipher_t cipher, const uint8_t *key, size_t key_len) |
int | botan_cipher_start (botan_cipher_t cipher_obj, const uint8_t *nonce, size_t nonce_len) |
int | botan_cipher_update (botan_cipher_t cipher_obj, uint32_t flags, uint8_t output[], size_t output_size, size_t *output_written, const uint8_t input[], size_t input_size, size_t *input_consumed) |
Encrypt/Decrypt some data and/or finalize the encryption/decryption. | |
int | botan_cipher_valid_nonce_length (botan_cipher_t cipher, size_t nl) |
int botan_cipher_clear | ( | botan_cipher_t | hash | ) |
Reset the key, nonce, AD and all other state on this cipher object
Definition at line 118 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_destroy | ( | botan_cipher_t | cipher | ) |
Destroy the cipher object
Definition at line 114 of file ffi_cipher.cpp.
References BOTAN_FFI_CHECKED_DELETE.
int botan_cipher_get_default_nonce_length | ( | botan_cipher_t | cipher, |
size_t * | nl ) |
Get the default nonce length of this cipher
Definition at line 299 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_get_ideal_update_granularity | ( | botan_cipher_t | cipher, |
size_t * | ug ) |
Return the ideal update granularity of the cipher. This is some multiple of the update granularity, reflecting possibilities for optimization.
Definition at line 307 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_get_keyspec | ( | botan_cipher_t | cipher, |
size_t * | min_keylen, | ||
size_t * | max_keylen, | ||
size_t * | mod_keylen ) |
Get information about the supported key lengths.
Definition at line 141 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_get_tag_length | ( | botan_cipher_t | cipher, |
size_t * | tag_size ) |
Get the tag length of the cipher (0 for non-AEAD modes)
Definition at line 311 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_get_update_granularity | ( | botan_cipher_t | cipher, |
size_t * | ug ) |
Return the update granularity of the cipher; botan_cipher_update must be called with blocks of this size, except for the final.
Definition at line 303 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_init | ( | botan_cipher_t * | cipher, |
const char * | name, | ||
uint32_t | flags ) |
Initialize a cipher object
Definition at line 96 of file ffi_cipher.cpp.
References BOTAN_CIPHER_INIT_FLAG_ENCRYPT, BOTAN_CIPHER_INIT_FLAG_MASK_DIRECTION, BOTAN_FFI_ERROR_NOT_IMPLEMENTED, BOTAN_FFI_SUCCESS, Botan::Cipher_Mode::create(), Botan::Decryption, Botan::Encryption, and Botan_FFI::ffi_guard_thunk().
int botan_cipher_is_authenticated | ( | botan_cipher_t | cipher | ) |
Returns 1 iff the cipher provides authentication as well as confidentiality.
Definition at line 315 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_name | ( | botan_cipher_t | cipher, |
char * | name, | ||
size_t * | name_len ) |
Return the name of the cipher object
Definition at line 323 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT, name, and Botan_FFI::write_str_output().
int botan_cipher_output_length | ( | botan_cipher_t | cipher, |
size_t | in_len, | ||
size_t * | out_len ) |
Return the output length of this cipher, for a particular input length.
Definition at line 126 of file ffi_cipher.cpp.
References BOTAN_FFI_ERROR_NULL_POINTER, and BOTAN_FFI_VISIT.
int botan_cipher_query_keylen | ( | botan_cipher_t | cipher, |
size_t * | out_minimum_keylength, | ||
size_t * | out_maximum_keylength ) |
Get information about the key lengths. Prefer botan_cipher_get_keyspec
Definition at line 134 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_requires_entire_message | ( | botan_cipher_t | cipher | ) |
Returns 1 iff the cipher requires the entire message before any encryption or decryption can be performed. No output data will be produced in botan_cipher_update() until the final flag is set.
Definition at line 319 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_reset | ( | botan_cipher_t | cipher | ) |
Reset the message specific state for this cipher. Without resetting the keys, this resets the nonce, and any state associated with any message bits that have been processed so far.
It is conceptually equivalent to calling botan_cipher_clear followed by botan_cipher_set_key with the original key.
Definition at line 122 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_set_associated_data | ( | botan_cipher_t | cipher, |
const uint8_t * | ad, | ||
size_t | ad_len ) |
Set the associated data. Will fail if cipher is not an AEAD
Definition at line 285 of file ffi_cipher.cpp.
References BOTAN_FFI_ERROR_BAD_PARAMETER, BOTAN_FFI_SUCCESS, and BOTAN_FFI_VISIT.
int botan_cipher_set_key | ( | botan_cipher_t | cipher, |
const uint8_t * | key, | ||
size_t | key_len ) |
Set the key for this cipher object
Definition at line 155 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.
int botan_cipher_start | ( | botan_cipher_t | cipher, |
const uint8_t * | nonce, | ||
size_t | nonce_len ) |
Begin processing a new message using the provided nonce
Definition at line 159 of file ffi_cipher.cpp.
References BOTAN_FFI_SUCCESS, Botan_FFI::ffi_guard_thunk(), Botan_FFI::safe_get(), and Botan::Cipher_Mode::start().
int botan_cipher_update | ( | botan_cipher_t | cipher, |
uint32_t | flags, | ||
uint8_t | output[], | ||
size_t | output_size, | ||
size_t * | output_written, | ||
const uint8_t | input_bytes[], | ||
size_t | input_size, | ||
size_t * | input_consumed ) |
Encrypt/Decrypt some data and/or finalize the encryption/decryption.
This encrypts as many bytes from input_bytes
into output_bytes
as possible. Unless BOTAN_CIPHER_UPDATE_FLAG_FINAL
is set, this function will consume bytes in multiples of botan_cipher_get_update_granularity(). input_consumed
and output_written
will be set accordingly and it is the caller's responsibility to adapt their buffers accordingly before calling this function again. Note that, unless BOTAN_CIPHER_UPDATE_FLAG_FINAL
is set, the cipher will at most generate input_size
output bytes.
Eventually, the caller must set the BOTAN_CIPHER_UPDATE_FLAG_FINAL
flag to indicate that no more input will be provided. This will cause the cipher to consume all given input bytes and produce the final output; or return a BOTAN_FFI_ERROR_INSUFFICIENT_BUFFER_SPACE
error if the given output buffer was too small. In the latter case, output_written
will be set to the required buffer size. Calling again with BOTAN_CIPHER_UPDATE_FLAG_FINAL
, a big enough buffer and no further input will then produce the final output.
Note that some ciphers require the entire message to be provided before any output is produced.
Definition at line 167 of file ffi_cipher.cpp.
References BOTAN_ASSERT_NOMSG, BOTAN_CIPHER_UPDATE_FLAG_FINAL, BOTAN_DEBUG_ASSERT, BOTAN_FFI_ERROR_BAD_MAC, BOTAN_FFI_ERROR_BAD_PARAMETER, BOTAN_FFI_ERROR_INSUFFICIENT_BUFFER_SPACE, BOTAN_FFI_ERROR_INVALID_OBJECT_STATE, BOTAN_FFI_SUCCESS, Botan_FFI::ffi_guard_thunk(), Botan::Cipher_Mode::finish(), Botan::Cipher_Mode::process(), Botan::Cipher_Mode::requires_entire_message(), and Botan_FFI::safe_get().
int botan_cipher_valid_nonce_length | ( | botan_cipher_t | cipher, |
size_t | nl ) |
Return if the specified nonce length is valid for this cipher
Definition at line 295 of file ffi_cipher.cpp.
References BOTAN_FFI_VISIT.