Botan 3.9.0
Crypto and TLS for C&
|
Classes | |
struct | botan_struct |
struct | botan_view_bounce_struct |
class | FFI_Error |
Functions | |
template<typename... Ptrs> | |
bool | any_null_pointers (Ptrs... ptr) |
template<typename T, uint32_t M, typename F> | |
int | botan_ffi_visit (botan_struct< T, M > *o, F func, const char *func_name) |
int | botan_view_bin_bounce_fn (botan_view_ctx vctx, const uint8_t *buf, size_t len) |
int | botan_view_str_bounce_fn (botan_view_ctx vctx, const char *str, size_t len) |
template<typename Fn, typename... Args> | |
int | copy_view_bin (uint8_t out[], size_t *out_len, Fn fn, Args... args) |
template<typename Fn, typename... Args> | |
int | copy_view_str (uint8_t out[], size_t *out_len, Fn fn, Args... args) |
void | ffi_clear_last_exception () |
template<typename T, uint32_t M> | |
int | ffi_delete_object (botan_struct< T, M > *obj, const char *func_name) |
int | ffi_error_exception_thrown (const char *func_name, const char *exn, Botan::ErrorType err) |
int | ffi_error_exception_thrown (const char *func_name, const char *exn, int rc) |
template<std::invocable T> | |
int | ffi_guard_thunk (const char *func_name, T thunk) |
template<typename T, typename... Args> | |
BOTAN_FFI_ERROR | ffi_new_object (T *obj, Args &&... args) |
int | invoke_view_callback (botan_view_bin_fn view, botan_view_ctx ctx, std::span< const uint8_t > buf) |
int | invoke_view_callback (botan_view_str_fn view, botan_view_ctx ctx, const std::string &str) |
template<typename T, uint32_t M> | |
T & | safe_get (botan_struct< T, M > *p) |
template<std::integral T> | |
int | write_output (T out[], size_t *out_len, const T buf[], size_t buf_len) |
int | write_str_output (char out[], size_t *out_len, const std::string &str) |
int | write_vec_output (uint8_t out[], size_t *out_len, std::span< const uint8_t > buf) |
bool Botan::any_null_pointers | ( | Ptrs... | ptr | ) |
Return true if any of the provided arguments are null
Definition at line 23 of file mem_utils.h.
Referenced by botan_mac_init(), botan_srp6_client_agree(), botan_srp6_generate_verifier(), botan_srp6_group_size(), and botan_srp6_server_session_step1().
int Botan_FFI::botan_ffi_visit | ( | botan_struct< T, M > * | o, |
F | func, | ||
const char * | func_name ) |
Definition at line 114 of file ffi_util.h.
References BOTAN_FFI_ERROR_INVALID_OBJECT, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, ffi_guard_thunk(), Botan_FFI::botan_struct< T, MAGIC >::magic_ok(), and Botan_FFI::botan_struct< T, MAGIC >::unsafe_get().
int Botan_FFI::botan_view_bin_bounce_fn | ( | botan_view_ctx | vctx, |
const uint8_t * | buf, | ||
size_t | len ) |
Definition at line 112 of file ffi.cpp.
References BOTAN_FFI_ERROR_INSUFFICIENT_BUFFER_SPACE, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, Botan::clear_mem(), Botan::copy_mem(), Botan_FFI::botan_view_bounce_struct::out_len, and Botan_FFI::botan_view_bounce_struct::out_ptr.
Referenced by botan_view_str_bounce_fn(), and copy_view_bin().
int Botan_FFI::botan_view_str_bounce_fn | ( | botan_view_ctx | vctx, |
const char * | str, | ||
size_t | len ) |
Definition at line 108 of file ffi.cpp.
References botan_view_bin_bounce_fn().
Referenced by copy_view_str().
int Botan_FFI::copy_view_bin | ( | uint8_t | out[], |
size_t * | out_len, | ||
Fn | fn, | ||
Args... | args ) |
Definition at line 211 of file ffi_util.h.
References botan_view_bin_bounce_fn().
Referenced by botan_pk_op_key_agreement_export_public(), botan_privkey_export(), botan_privkey_export_encrypted_pbkdf_iter(), botan_privkey_export_encrypted_pbkdf_msec(), botan_pubkey_export(), and botan_x509_cert_get_public_key_bits().
int Botan_FFI::copy_view_str | ( | uint8_t | out[], |
size_t * | out_len, | ||
Fn | fn, | ||
Args... | args ) |
Definition at line 217 of file ffi_util.h.
References BOTAN_FFI_ERROR_NULL_POINTER, and botan_view_str_bounce_fn().
Referenced by botan_privkey_export(), botan_privkey_export_encrypted_pbkdf_iter(), botan_privkey_export_encrypted_pbkdf_msec(), botan_pubkey_export(), and botan_x509_cert_to_string().
void Botan_FFI::ffi_clear_last_exception | ( | ) |
Definition at line 86 of file ffi.cpp.
Referenced by ffi_guard_thunk().
int Botan_FFI::ffi_delete_object | ( | botan_struct< T, M > * | obj, |
const char * | func_name ) |
Definition at line 161 of file ffi_util.h.
References BOTAN_FFI_ERROR_INVALID_OBJECT, BOTAN_FFI_SUCCESS, ffi_guard_thunk(), and Botan_FFI::botan_struct< T, MAGIC >::magic_ok().
int Botan_FFI::ffi_error_exception_thrown | ( | const char * | func_name, |
const char * | exn, | ||
Botan::ErrorType | err ) |
Definition at line 104 of file ffi.cpp.
References ffi_error_exception_thrown().
int Botan_FFI::ffi_error_exception_thrown | ( | const char * | func_name, |
const char * | exn, | ||
int | rc ) |
Definition at line 90 of file ffi.cpp.
References Botan::OS::read_env_variable().
Referenced by ffi_error_exception_thrown(), and ffi_guard_thunk().
int Botan_FFI::ffi_guard_thunk | ( | const char * | func_name, |
T | thunk ) |
Definition at line 95 of file ffi_util.h.
References BOTAN_FFI_ERROR_EXCEPTION_THROWN, BOTAN_FFI_ERROR_OUT_OF_MEMORY, Botan_FFI::FFI_Error::error_code(), Botan_FFI::FFI_Error::error_type(), ffi_clear_last_exception(), ffi_error_exception_thrown(), and Botan::Exception::what().
Referenced by botan_base64_decode(), botan_base64_encode(), botan_bcrypt_generate(), botan_bcrypt_is_valid(), botan_block_cipher_init(), botan_cipher_init(), botan_cipher_start(), botan_cipher_update(), botan_ec_group_from_ber(), botan_ec_group_from_name(), botan_ec_group_from_oid(), botan_ec_group_from_params(), botan_ec_group_from_pem(), botan_ec_group_supports_named_group(), botan_ec_privkey_create(), botan_ffi_visit(), botan_fpe_decrypt(), botan_fpe_encrypt(), botan_fpe_fe1_init(), botan_hash_init(), botan_hex_decode(), botan_hex_encode(), botan_hotp_init(), botan_kdf(), botan_mac_init(), botan_mp_init(), botan_nist_kw_dec(), botan_nist_kw_enc(), botan_oid_from_string(), botan_pk_op_decrypt_create(), botan_pk_op_encrypt_create(), botan_pk_op_kem_decrypt_create(), botan_pk_op_kem_encrypt_create(), botan_pk_op_key_agreement_create(), botan_pk_op_sign_create(), botan_pk_op_verify_create(), botan_pkcs_hash_id(), botan_privkey_create(), botan_privkey_create_dsa(), botan_privkey_create_elgamal(), botan_privkey_export_pubkey(), botan_privkey_load(), botan_privkey_load_classic_mceliece(), botan_privkey_load_dh(), botan_privkey_load_dsa(), botan_privkey_load_ecdh(), botan_privkey_load_ecdsa(), botan_privkey_load_ed25519(), botan_privkey_load_ed448(), botan_privkey_load_elgamal(), botan_privkey_load_frodokem(), botan_privkey_load_kyber(), botan_privkey_load_ml_dsa(), botan_privkey_load_ml_kem(), botan_privkey_load_rsa(), botan_privkey_load_rsa_pkcs1(), botan_privkey_load_slh_dsa(), botan_privkey_load_sm2(), botan_privkey_load_x25519(), botan_privkey_load_x448(), botan_pubkey_ecc_key_used_explicit_encoding(), botan_pubkey_load(), botan_pubkey_load_classic_mceliece(), botan_pubkey_load_dh(), botan_pubkey_load_dsa(), botan_pubkey_load_ecdh(), botan_pubkey_load_ecdsa(), botan_pubkey_load_ed25519(), botan_pubkey_load_ed448(), botan_pubkey_load_elgamal(), botan_pubkey_load_frodokem(), botan_pubkey_load_ml_dsa(), botan_pubkey_load_ml_kem(), botan_pubkey_load_rsa(), botan_pubkey_load_slh_dsa(), botan_pubkey_load_sm2(), botan_pubkey_load_x25519(), botan_pubkey_load_x448(), botan_pubkey_sm2_compute_za(), botan_pwdhash(), botan_pwdhash_timed(), botan_rng_init(), botan_rng_init_custom(), botan_srp6_client_agree(), botan_srp6_generate_verifier(), botan_srp6_group_size(), botan_srp6_server_session_init(), botan_system_rng_get(), botan_totp_init(), botan_tpm2_ctx_from_esys(), botan_tpm2_ctx_init(), botan_tpm2_ctx_init_ex(), botan_tpm2_enable_crypto_backend(), botan_x509_cert_dup(), botan_x509_cert_get_public_key(), botan_x509_cert_load(), botan_x509_cert_load_file(), botan_x509_cert_verify(), botan_x509_cert_verify_with_crl(), botan_x509_crl_load(), botan_x509_crl_load_file(), botan_zfec_decode(), botan_zfec_encode(), and ffi_delete_object().
BOTAN_FFI_ERROR Botan_FFI::ffi_new_object | ( | T * | obj, |
Args &&... | args ) |
Definition at line 178 of file ffi_util.h.
References BOTAN_FFI_SUCCESS.
Referenced by botan_block_cipher_init(), botan_cipher_init(), botan_ec_group_from_ber(), botan_ec_group_from_name(), botan_ec_group_from_oid(), botan_ec_group_from_params(), botan_ec_group_from_pem(), botan_ec_group_get_curve_oid(), botan_ec_privkey_create(), botan_fpe_fe1_init(), botan_hash_copy_state(), botan_hash_init(), botan_hotp_init(), botan_mac_init(), botan_mp_init(), botan_oid_from_string(), botan_pk_op_decrypt_create(), botan_pk_op_encrypt_create(), botan_pk_op_kem_decrypt_create(), botan_pk_op_kem_encrypt_create(), botan_pk_op_key_agreement_create(), botan_pk_op_sign_create(), botan_pk_op_verify_create(), botan_privkey_create(), botan_privkey_create_dsa(), botan_privkey_create_elgamal(), botan_privkey_export_pubkey(), botan_privkey_load(), botan_privkey_load_classic_mceliece(), botan_privkey_load_dh(), botan_privkey_load_dsa(), botan_privkey_load_ecdh(), botan_privkey_load_ecdsa(), botan_privkey_load_ed25519(), botan_privkey_load_ed448(), botan_privkey_load_elgamal(), botan_privkey_load_frodokem(), botan_privkey_load_kyber(), botan_privkey_load_ml_dsa(), botan_privkey_load_ml_kem(), botan_privkey_load_rsa(), botan_privkey_load_rsa_pkcs1(), botan_privkey_load_slh_dsa(), botan_privkey_load_sm2(), botan_privkey_load_x25519(), botan_privkey_load_x448(), botan_privkey_oid(), botan_pubkey_load(), botan_pubkey_load_classic_mceliece(), botan_pubkey_load_dh(), botan_pubkey_load_dsa(), botan_pubkey_load_ecdh(), botan_pubkey_load_ecdsa(), botan_pubkey_load_ed25519(), botan_pubkey_load_ed448(), botan_pubkey_load_elgamal(), botan_pubkey_load_frodokem(), botan_pubkey_load_kyber(), botan_pubkey_load_ml_dsa(), botan_pubkey_load_ml_kem(), botan_pubkey_load_rsa(), botan_pubkey_load_slh_dsa(), botan_pubkey_load_sm2(), botan_pubkey_load_x25519(), botan_pubkey_load_x448(), botan_pubkey_oid(), botan_rng_init(), botan_rng_init_custom(), botan_srp6_server_session_init(), botan_totp_init(), botan_tpm2_ctx_from_esys(), botan_tpm2_ctx_init(), botan_tpm2_ctx_init_ex(), botan_tpm2_enable_crypto_backend(), botan_tpm2_rng_init(), botan_tpm2_unauthenticated_session_init(), botan_x509_cert_dup(), botan_x509_cert_get_public_key(), botan_x509_cert_load(), botan_x509_cert_load_file(), botan_x509_crl_load(), and botan_x509_crl_load_file().
|
inline |
Definition at line 187 of file ffi_util.h.
References BOTAN_FFI_ERROR_NULL_POINTER.
Referenced by botan_ec_group_view_der(), botan_ec_group_view_pem(), botan_oid_view_name(), botan_oid_view_string(), botan_pk_op_key_agreement_view_public(), botan_privkey_view_der(), botan_privkey_view_encrypted_der(), botan_privkey_view_encrypted_der_timed(), botan_privkey_view_encrypted_pem(), botan_privkey_view_encrypted_pem_timed(), botan_privkey_view_kyber_raw_key(), botan_privkey_view_pem(), botan_privkey_view_raw(), botan_pubkey_view_der(), botan_pubkey_view_ec_public_point(), botan_pubkey_view_kyber_raw_key(), botan_pubkey_view_pem(), botan_pubkey_view_raw(), botan_x509_cert_view_as_string(), and botan_x509_cert_view_public_key_bits().
|
inline |
Definition at line 195 of file ffi_util.h.
References BOTAN_FFI_ERROR_NULL_POINTER.
T & Botan_FFI::safe_get | ( | botan_struct< T, M > * | p | ) |
Definition at line 79 of file ffi_util.h.
References BOTAN_FFI_ERROR_INVALID_OBJECT, BOTAN_FFI_ERROR_NULL_POINTER, Botan_FFI::botan_struct< T, MAGIC >::magic_ok(), and Botan_FFI::botan_struct< T, MAGIC >::unsafe_get().
Referenced by botan_bcrypt_generate(), botan_cipher_start(), botan_cipher_update(), botan_ec_group_equal(), botan_ec_group_from_oid(), botan_ec_group_from_params(), botan_ec_privkey_create(), botan_fpe_decrypt(), botan_fpe_encrypt(), botan_fpe_fe1_init(), botan_mp_add(), botan_mp_add_u32(), botan_mp_cmp(), botan_mp_div(), botan_mp_equal(), botan_mp_gcd(), botan_mp_is_prime(), botan_mp_lshift(), botan_mp_mod_inverse(), botan_mp_mod_mul(), botan_mp_mul(), botan_mp_powmod(), botan_mp_rand_bits(), botan_mp_rand_range(), botan_mp_rshift(), botan_mp_set_from_mp(), botan_mp_sub(), botan_mp_sub_u32(), botan_mp_swap(), botan_oid_cmp(), botan_oid_equal(), botan_pk_op_decrypt_create(), botan_pk_op_encrypt(), botan_pk_op_encrypt_create(), botan_pk_op_kem_decrypt_create(), botan_pk_op_kem_encrypt_create(), botan_pk_op_kem_encrypt_create_shared_key(), botan_pk_op_key_agreement_create(), botan_pk_op_sign_create(), botan_pk_op_sign_finish(), botan_pk_op_verify_create(), botan_privkey_check_key(), botan_privkey_create(), botan_privkey_create_dsa(), botan_privkey_create_elgamal(), botan_privkey_export_pubkey(), botan_privkey_get_field(), botan_privkey_load_dh(), botan_privkey_load_dsa(), botan_privkey_load_ecdh(), botan_privkey_load_ecdsa(), botan_privkey_load_elgamal(), botan_privkey_load_rsa(), botan_privkey_load_sm2(), botan_privkey_view_encrypted_der(), botan_privkey_view_encrypted_der_timed(), botan_privkey_view_encrypted_pem(), botan_privkey_view_encrypted_pem_timed(), botan_pubkey_check_key(), botan_pubkey_ecc_key_used_explicit_encoding(), botan_pubkey_get_field(), botan_pubkey_load_dh(), botan_pubkey_load_dsa(), botan_pubkey_load_ecdh(), botan_pubkey_load_ecdsa(), botan_pubkey_load_elgamal(), botan_pubkey_load_rsa(), botan_pubkey_load_sm2(), botan_pubkey_sm2_compute_za(), botan_rng_reseed_from_rng(), botan_srp6_client_agree(), botan_srp6_server_session_step1(), botan_tpm2_ctx_enable_crypto_backend(), botan_tpm2_enable_crypto_backend(), botan_x509_cert_dup(), botan_x509_cert_get_public_key(), botan_x509_cert_verify(), botan_x509_cert_verify_with_crl(), and botan_x509_is_revoked().
|
inline |
Definition at line 226 of file ffi_util.h.
References BOTAN_FFI_ERROR_INSUFFICIENT_BUFFER_SPACE, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, Botan::clear_mem(), and Botan::copy_mem().
Referenced by botan_pkcs_hash_id(), write_str_output(), and write_vec_output().
|
inline |
Definition at line 251 of file ffi_util.h.
References write_output().
Referenced by botan_base64_encode(), botan_bcrypt_generate(), botan_block_cipher_name(), botan_cipher_name(), botan_hash_name(), botan_mac_name(), botan_mp_to_str(), botan_privkey_algo_name(), botan_privkey_rsa_get_privkey(), botan_pubkey_algo_name(), botan_x509_cert_get_fingerprint(), botan_x509_cert_get_issuer_dn(), botan_x509_cert_get_subject_dn(), botan_x509_cert_get_time_expires(), and botan_x509_cert_get_time_starts().
|
inline |
Definition at line 247 of file ffi_util.h.
References write_output().
Referenced by botan_hex_decode(), botan_nist_kw_dec(), botan_nist_kw_enc(), botan_pk_op_decrypt(), botan_pk_op_encrypt(), botan_pk_op_kem_decrypt_shared_key(), botan_pk_op_kem_encrypt_create_shared_key(), botan_pk_op_key_agreement(), botan_pk_op_sign_finish(), botan_privkey_rsa_get_privkey(), botan_pubkey_fingerprint(), botan_pubkey_sm2_compute_za(), botan_srp6_client_agree(), botan_srp6_generate_verifier(), botan_srp6_server_session_step1(), botan_srp6_server_session_step2(), botan_x509_cert_get_authority_key_id(), botan_x509_cert_get_serial_number(), and botan_x509_cert_get_subject_key_id().