8#include <botan/internal/ffi_util.h>
9#include <botan/internal/ffi_pkey.h>
10#include <botan/internal/ffi_rng.h>
11#include <botan/pubkey.h>
38 *op =
new botan_pk_op_encrypt_struct(pk.release());
50 if(ctext_len ==
nullptr)
57 uint8_t out[],
size_t* out_len,
58 const uint8_t plaintext[],
size_t plaintext_len)
83 *op =
new botan_pk_op_decrypt_struct(pk.release());
95 if(ptext_len ==
nullptr)
101 uint8_t out[],
size_t* out_len,
102 const uint8_t ciphertext[],
size_t ciphertext_len)
105 return write_vec_output(out, out_len, o.decrypt(ciphertext, ciphertext_len));
129 *op =
new botan_pk_op_sign_struct(pk.release());
141 if(sig_len ==
nullptr)
174 *op =
new botan_pk_op_verify_struct(pk.release());
215 *op =
new botan_pk_op_ka_struct(pk.release());
226 uint8_t out[],
size_t* out_len)
238 if(out_len ==
nullptr)
240 *out_len = o.agreed_value_size();
245 uint8_t out[],
size_t* out_len,
246 const uint8_t other_key[],
size_t other_key_len,
247 const uint8_t salt[],
size_t salt_len)
virtual size_t plaintext_length(size_t ctext_len) const =0
virtual size_t ciphertext_length(size_t ctext_len) const =0
SymmetricKey derive_key(size_t key_len, const uint8_t in[], size_t in_len, const uint8_t params[], size_t params_len) const
size_t signature_length() const
bool check_signature(const uint8_t sig[], size_t length)
struct botan_pubkey_struct * botan_pubkey_t
#define BOTAN_PUBKEY_DER_FORMAT_SIGNATURE
struct botan_pk_op_decrypt_struct * botan_pk_op_decrypt_t
struct botan_privkey_struct * botan_privkey_t
struct botan_pk_op_encrypt_struct * botan_pk_op_encrypt_t
struct botan_pk_op_ka_struct * botan_pk_op_ka_t
struct botan_pk_op_sign_struct * botan_pk_op_sign_t
struct botan_rng_struct * botan_rng_t
@ BOTAN_FFI_INVALID_VERIFIER
@ BOTAN_FFI_ERROR_BAD_FLAG
@ BOTAN_FFI_ERROR_NULL_POINTER
struct botan_pk_op_verify_struct * botan_pk_op_verify_t
int botan_pk_op_encrypt(botan_pk_op_encrypt_t op, botan_rng_t rng_obj, uint8_t out[], size_t *out_len, const uint8_t plaintext[], size_t plaintext_len)
int botan_pk_op_decrypt(botan_pk_op_decrypt_t op, uint8_t out[], size_t *out_len, const uint8_t ciphertext[], size_t ciphertext_len)
int botan_pk_op_sign_output_length(botan_pk_op_sign_t op, size_t *sig_len)
BOTAN_FFI_DECLARE_STRUCT(botan_pk_op_encrypt_struct, Botan::PK_Encryptor, 0x891F3FC3)
int botan_pk_op_key_agreement_export_public(botan_privkey_t key, uint8_t out[], size_t *out_len)
int botan_pk_op_key_agreement_size(botan_pk_op_ka_t op, size_t *out_len)
int botan_pk_op_sign_update(botan_pk_op_sign_t op, const uint8_t in[], size_t in_len)
int botan_pk_op_decrypt_destroy(botan_pk_op_decrypt_t op)
int botan_pk_op_verify_create(botan_pk_op_verify_t *op, botan_pubkey_t key_obj, const char *hash, uint32_t flags)
int botan_pk_op_key_agreement_destroy(botan_pk_op_ka_t op)
int botan_pk_op_sign_finish(botan_pk_op_sign_t op, botan_rng_t rng_obj, uint8_t out[], size_t *out_len)
int botan_pk_op_verify_update(botan_pk_op_verify_t op, const uint8_t in[], size_t in_len)
int botan_pk_op_encrypt_create(botan_pk_op_encrypt_t *op, botan_pubkey_t key_obj, const char *padding, uint32_t flags)
int botan_pk_op_verify_destroy(botan_pk_op_verify_t op)
int botan_pk_op_verify_finish(botan_pk_op_verify_t op, const uint8_t sig[], size_t sig_len)
int botan_pk_op_decrypt_output_length(botan_pk_op_decrypt_t op, size_t ctext_len, size_t *ptext_len)
int botan_pk_op_encrypt_output_length(botan_pk_op_encrypt_t op, size_t ptext_len, size_t *ctext_len)
int botan_pk_op_key_agreement(botan_pk_op_ka_t op, uint8_t out[], size_t *out_len, const uint8_t other_key[], size_t other_key_len, const uint8_t salt[], size_t salt_len)
int botan_pk_op_decrypt_create(botan_pk_op_decrypt_t *op, botan_privkey_t key_obj, const char *padding, uint32_t flags)
int botan_pk_op_encrypt_destroy(botan_pk_op_encrypt_t op)
int botan_pk_op_sign_create(botan_pk_op_sign_t *op, botan_privkey_t key_obj, const char *hash, uint32_t flags)
int botan_pk_op_sign_destroy(botan_pk_op_sign_t op)
int botan_pk_op_key_agreement_create(botan_pk_op_ka_t *op, botan_privkey_t key_obj, const char *kdf, uint32_t flags)
#define BOTAN_FFI_DO(T, obj, param, block)
#define BOTAN_FFI_CHECKED_DELETE(o)
#define BOTAN_FFI_RETURNING(T, obj, param, block)
int ffi_guard_thunk(const char *func_name, std::function< int()> thunk)
T & safe_get(botan_struct< T, M > *p)
int write_vec_output(uint8_t out[], size_t *out_len, const std::vector< uint8_t, Alloc > &buf)
RandomNumberGenerator & system_rng()