Botan 2.19.5 Crypto and TLS for C&

Functions
ffi_pk_op.cpp File Reference
`#include <botan/ffi.h>`
`#include <botan/internal/ffi_util.h>`
`#include <botan/internal/ffi_pkey.h>`
`#include <botan/internal/ffi_rng.h>`
`#include <botan/pubkey.h>`

Go to the source code of this file.

## Functions
| BOTAN_FFI_DECLARE_STRUCT (botan_pk_op_decrypt_struct, Botan::PK_Decryptor, 0x912F3C37)
| BOTAN_FFI_DECLARE_STRUCT (botan_pk_op_encrypt_struct, Botan::PK_Encryptor, 0x891F3FC3)
| BOTAN_FFI_DECLARE_STRUCT (botan_pk_op_ka_struct, Botan::PK_Key_Agreement, 0x2939CAB1)
| BOTAN_FFI_DECLARE_STRUCT (botan_pk_op_sign_struct, Botan::PK_Signer, 0x1AF0C39F)
| BOTAN_FFI_DECLARE_STRUCT (botan_pk_op_verify_struct, Botan::PK_Verifier, 0x2B91F936)
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_decrypt_create (botan_pk_op_decrypt_t *op, botan_privkey_t key_obj, const char *padding, uint32_t flags)
int | botan_pk_op_decrypt_destroy (botan_pk_op_decrypt_t op)
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 (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_encrypt_create (botan_pk_op_encrypt_t *op, botan_pubkey_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_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_key_agreement_create (botan_pk_op_ka_t *op, botan_privkey_t key_obj, const char *kdf, uint32_t flags)
int | botan_pk_op_key_agreement_destroy (botan_pk_op_ka_t op)
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_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_sign_finish (botan_pk_op_sign_t op, botan_rng_t rng_obj, uint8_t out[], size_t *out_len)
int | botan_pk_op_sign_output_length (botan_pk_op_sign_t op, size_t *sig_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_verify_create (botan_pk_op_verify_t *op, botan_pubkey_t key_obj, const char *hash, 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_verify_update (botan_pk_op_verify_t op, const uint8_t in[], size_t in_len)

## Function Documentation

## ◆ BOTAN_FFI_DECLARE_STRUCT() [1/5]

BOTAN_FFI_DECLARE_STRUCT | ( | botan_pk_op_decrypt_struct | ,
|  | Botan::PK_Decryptor | ,
|  | 0x912F3C37 |
| ) |  |

## ◆ BOTAN_FFI_DECLARE_STRUCT() [2/5]

BOTAN_FFI_DECLARE_STRUCT | ( | botan_pk_op_encrypt_struct | ,
|  | Botan::PK_Encryptor | ,
|  | 0x891F3FC3 |
| ) |  |

## ◆ BOTAN_FFI_DECLARE_STRUCT() [3/5]

BOTAN_FFI_DECLARE_STRUCT | ( | botan_pk_op_ka_struct | ,
|  | Botan::PK_Key_Agreement | ,
|  | 0x2939CAB1 |
| ) |  |

## ◆ BOTAN_FFI_DECLARE_STRUCT() [4/5]

BOTAN_FFI_DECLARE_STRUCT | ( | botan_pk_op_sign_struct | ,
|  | Botan::PK_Signer | ,
|  | 0x1AF0C39F |
| ) |  |

## ◆ BOTAN_FFI_DECLARE_STRUCT() [5/5]

BOTAN_FFI_DECLARE_STRUCT | ( | botan_pk_op_verify_struct | ,
|  | Botan::PK_Verifier | ,
|  | 0x2B91F936 |
| ) |  |

## ◆ botan_pk_op_decrypt()

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
| ) |  |

Definition at line 100 of file ffi_pk_op.cpp.

103 {
104 return BOTAN_FFI_DO(Botan::PK_Decryptor, op, o, {
105 return write_vec_output(out, out_len, o.decrypt(ciphertext, ciphertext_len));
106 });
107 }
Botan::PK_Decryptor
Definition: pubkey.h:85
BOTAN_FFI_DO
#define BOTAN_FFI_DO(T, obj, param, block)
Definition: ffi_util.h:92
Botan_FFI::write_vec_output
int write_vec_output(uint8_t out[], size_t *out_len, const std::vector< uint8_t, Alloc > &buf)
Definition: ffi_util.h:155

References BOTAN_FFI_DO, and Botan_FFI::write_vec_output().

## ◆ botan_pk_op_decrypt_create()

int botan_pk_op_decrypt_create | ( | botan_pk_op_decrypt_t * | op,
|  | botan_privkey_t | key_obj,
|  | const char * | padding,
|  | uint32_t | flags
| ) |  |

Definition at line 68 of file ffi_pk_op.cpp.

72 {
73 if(op == nullptr)
74 return BOTAN_FFI_ERROR_NULL_POINTER;
75
76 if(flags != 0)
77 return BOTAN_FFI_ERROR_BAD_FLAG;
78
79 return ffi_guard_thunk(__func__, [=]() -> int {
80 *op = nullptr;
81
82 std::unique_ptr<Botan::PK_Decryptor> pk(new Botan::PK_Decryptor_EME(safe_get(key_obj), Botan::system_rng(), padding));
83 *op = new botan_pk_op_decrypt_struct(pk.release());
84 return BOTAN_FFI_SUCCESS;
85 });
86 }
Botan::PK_Decryptor_EME
Definition: pubkey.h:580
BOTAN_FFI_ERROR_BAD_FLAG
@ BOTAN_FFI_ERROR_BAD_FLAG
Definition: ffi.h:76
BOTAN_FFI_ERROR_NULL_POINTER
@ BOTAN_FFI_ERROR_NULL_POINTER
Definition: ffi.h:77
BOTAN_FFI_SUCCESS
@ BOTAN_FFI_SUCCESS
Definition: ffi.h:63
Botan::PKCS11::flags
Flags flags(Flag flags)
Definition: p11.h:860
Botan_FFI::ffi_guard_thunk
int ffi_guard_thunk(const char *func_name, std::function< int()> thunk)
Definition: ffi.cpp:89
Botan_FFI::safe_get
T & safe_get(botan_struct< T, M > *p)
Definition: ffi_util.h:61
Botan::system_rng
RandomNumberGenerator & system_rng()
Definition: system_rng.cpp:283

References BOTAN_FFI_ERROR_BAD_FLAG, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, Botan_FFI::ffi_guard_thunk(), Botan::PKCS11::flags(), Botan_FFI::safe_get(), and Botan::system_rng().

## ◆ botan_pk_op_decrypt_destroy()

int botan_pk_op_decrypt_destroy | ( | botan_pk_op_decrypt_t | op | ) |

Returns
  0 if success, error if invalid object handle

Definition at line 88 of file ffi_pk_op.cpp.

89 {
90 return BOTAN_FFI_CHECKED_DELETE(op);
91 }
BOTAN_FFI_CHECKED_DELETE
#define BOTAN_FFI_CHECKED_DELETE(o)
Definition: ffi_util.h:129

References BOTAN_FFI_CHECKED_DELETE.

## ◆ botan_pk_op_decrypt_output_length()

int botan_pk_op_decrypt_output_length | ( | botan_pk_op_decrypt_t | op,
|  | size_t | ctext_len,
|  | size_t * | ptext_len
| ) |  |

Definition at line 93 of file ffi_pk_op.cpp.

94 {
95 if(ptext_len == nullptr)
96 return BOTAN_FFI_ERROR_NULL_POINTER;
97 return BOTAN_FFI_DO(Botan::PK_Decryptor, op, o, { *ptext_len = o.plaintext_length(ctext_len); });
98 }
Botan::PK_Decryptor::plaintext_length
virtual size_t plaintext_length(size_t ctext_len) const =0

References BOTAN_FFI_DO, BOTAN_FFI_ERROR_NULL_POINTER, and Botan::PK_Decryptor::plaintext_length().

## ◆ botan_pk_op_encrypt()

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
| ) |  |

Definition at line 55 of file ffi_pk_op.cpp.

59 {
60 return BOTAN_FFI_DO(Botan::PK_Encryptor, op, o, {
61 return write_vec_output(out, out_len, o.encrypt(plaintext, plaintext_len, safe_get(rng_obj)));
62 });
63 }
Botan::PK_Encryptor
Definition: pubkey.h:30

References BOTAN_FFI_DO, Botan_FFI::safe_get(), and Botan_FFI::write_vec_output().

## ◆ botan_pk_op_encrypt_create()

int botan_pk_op_encrypt_create | ( | botan_pk_op_encrypt_t * | op,
|  | botan_pubkey_t | key_obj,
|  | const char * | padding,
|  | uint32_t | flags
| ) |  |

Definition at line 23 of file ffi_pk_op.cpp.

27 {
28 if(op == nullptr)
29 return BOTAN_FFI_ERROR_NULL_POINTER;
30
31 if(flags != 0 && flags != BOTAN_PUBKEY_DER_FORMAT_SIGNATURE)
32 return BOTAN_FFI_ERROR_BAD_FLAG;
33
34 return ffi_guard_thunk(__func__, [=]() -> int {
35 *op = nullptr;
36
37 std::unique_ptr<Botan::PK_Encryptor> pk(new Botan::PK_Encryptor_EME(safe_get(key_obj), Botan::system_rng(), padding));
38 *op = new botan_pk_op_encrypt_struct(pk.release());
39 return BOTAN_FFI_SUCCESS;
40 });
41 }
Botan::PK_Encryptor_EME
Definition: pubkey.h:530
BOTAN_PUBKEY_DER_FORMAT_SIGNATURE
#define BOTAN_PUBKEY_DER_FORMAT_SIGNATURE
Definition: ffi.h:1425

References BOTAN_FFI_ERROR_BAD_FLAG, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, BOTAN_PUBKEY_DER_FORMAT_SIGNATURE, Botan_FFI::ffi_guard_thunk(), Botan::PKCS11::flags(), Botan_FFI::safe_get(), and Botan::system_rng().

## ◆ botan_pk_op_encrypt_destroy()

int botan_pk_op_encrypt_destroy | ( | botan_pk_op_encrypt_t | op | ) |

Returns
  0 if success, error if invalid object handle

Definition at line 43 of file ffi_pk_op.cpp.

44 {
45 return BOTAN_FFI_CHECKED_DELETE(op);
46 }

References BOTAN_FFI_CHECKED_DELETE.

## ◆ botan_pk_op_encrypt_output_length()

int botan_pk_op_encrypt_output_length | ( | botan_pk_op_encrypt_t | op,
|  | size_t | ptext_len,
|  | size_t * | ctext_len
| ) |  |

Definition at line 48 of file ffi_pk_op.cpp.

49 {
50 if(ctext_len == nullptr)
51 return BOTAN_FFI_ERROR_NULL_POINTER;
52 return BOTAN_FFI_DO(Botan::PK_Encryptor, op, o, { *ctext_len = o.ciphertext_length(ptext_len); });
53 }
Botan::PK_Encryptor::ciphertext_length
virtual size_t ciphertext_length(size_t ctext_len) const =0

References BOTAN_FFI_DO, BOTAN_FFI_ERROR_NULL_POINTER, and Botan::PK_Encryptor::ciphertext_length().

## ◆ botan_pk_op_key_agreement()

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
| ) |  |

Definition at line 244 of file ffi_pk_op.cpp.

248 {
249 return BOTAN_FFI_DO(Botan::PK_Key_Agreement, op, o, {
250 auto k = o.derive_key(*out_len, other_key, other_key_len, salt, salt_len).bits_of();
251 return write_vec_output(out, out_len, k);
252 });
253 }
Botan::PK_Key_Agreement
Definition: pubkey.h:414
Botan::PK_Key_Agreement::derive_key
SymmetricKey derive_key(size_t key_len, const uint8_t in[], size_t in_len, const uint8_t params[], size_t params_len) const
Definition: pubkey.cpp:218
salt_len
size_t salt_len
Definition: x509_obj.cpp:25

References BOTAN_FFI_DO, Botan::PK_Key_Agreement::derive_key(), salt_len, and Botan_FFI::write_vec_output().

## ◆ botan_pk_op_key_agreement_create()

int botan_pk_op_key_agreement_create | ( | botan_pk_op_ka_t * | op,
|  | botan_privkey_t | key_obj,
|  | const char * | kdf,
|  | uint32_t | flags
| ) |  |

Definition at line 201 of file ffi_pk_op.cpp.

205 {
206 if(op == nullptr)
207 return BOTAN_FFI_ERROR_NULL_POINTER;
208
209 if(flags != 0)
210 return BOTAN_FFI_ERROR_BAD_FLAG;
211
212 return ffi_guard_thunk(__func__, [=]() -> int {
213 *op = nullptr;
214 std::unique_ptr<Botan::PK_Key_Agreement> pk(new Botan::PK_Key_Agreement(safe_get(key_obj), Botan::system_rng(), kdf));
215 *op = new botan_pk_op_ka_struct(pk.release());
216 return BOTAN_FFI_SUCCESS;
217 });
218 }

References BOTAN_FFI_ERROR_BAD_FLAG, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, Botan_FFI::ffi_guard_thunk(), Botan::PKCS11::flags(), Botan_FFI::safe_get(), and Botan::system_rng().

## ◆ botan_pk_op_key_agreement_destroy()

int botan_pk_op_key_agreement_destroy | ( | botan_pk_op_ka_t | op | ) |

Returns
  0 if success, error if invalid object handle

Definition at line 220 of file ffi_pk_op.cpp.

221 {
222 return BOTAN_FFI_CHECKED_DELETE(op);
223 }

References BOTAN_FFI_CHECKED_DELETE.

## ◆ botan_pk_op_key_agreement_export_public()

int botan_pk_op_key_agreement_export_public | ( | botan_privkey_t | key,
|  | uint8_t | out[],
|  | size_t * | out_len
| ) |  |

Definition at line 225 of file ffi_pk_op.cpp.

227 {
228 return BOTAN_FFI_DO(Botan::Private_Key, key, k, {
229 if(auto kak = dynamic_cast<const Botan::PK_Key_Agreement_Key*>(&k))
230 return write_vec_output(out, out_len, kak->public_value());
231 return BOTAN_FFI_ERROR_BAD_FLAG;
232 });
233 }
Botan::PK_Key_Agreement_Key
Definition: pk_keys.h:294
Botan::Private_Key
Definition: pk_keys.h:181

References BOTAN_FFI_DO, BOTAN_FFI_ERROR_BAD_FLAG, and Botan_FFI::write_vec_output().

## ◆ botan_pk_op_key_agreement_size()

int botan_pk_op_key_agreement_size | ( | botan_pk_op_ka_t | op,
|  | size_t * | out_len
| ) |  |

Definition at line 235 of file ffi_pk_op.cpp.

236 {
237 return BOTAN_FFI_DO(Botan::PK_Key_Agreement, op, o, {
238 if(out_len == nullptr)
239 return BOTAN_FFI_ERROR_NULL_POINTER;
240 *out_len = o.agreed_value_size();
241 });
242 }

References BOTAN_FFI_DO, and BOTAN_FFI_ERROR_NULL_POINTER.

## ◆ botan_pk_op_sign_create()

int botan_pk_op_sign_create | ( | botan_pk_op_sign_t * | op,
|  | botan_privkey_t | key_obj,
|  | const char * | hash,
|  | uint32_t | flags
| ) |  |

Definition at line 112 of file ffi_pk_op.cpp.

116 {
117 if(op == nullptr)
118 return BOTAN_FFI_ERROR_NULL_POINTER;
119
120 if(flags != 0 && flags != BOTAN_PUBKEY_DER_FORMAT_SIGNATURE)
121 return BOTAN_FFI_ERROR_BAD_FLAG;
122
123 return ffi_guard_thunk(__func__, [=]() -> int {
124 *op = nullptr;
125
126 auto format = (flags & BOTAN_PUBKEY_DER_FORMAT_SIGNATURE) ? Botan::DER_SEQUENCE : Botan::IEEE_1363;
127
128 std::unique_ptr<Botan::PK_Signer> pk(new Botan::PK_Signer(safe_get(key_obj), Botan::system_rng(), hash, format));
129 *op = new botan_pk_op_sign_struct(pk.release());
130 return BOTAN_FFI_SUCCESS;
131 });
132 }
Botan::PK_Signer
Definition: pubkey.h:167
Botan::DER_SEQUENCE
@ DER_SEQUENCE
Definition: pk_keys.h:23
Botan::IEEE_1363
@ IEEE_1363
Definition: pk_keys.h:23
hash
MechanismType hash
Definition: p11_mechanism.cpp:64

References BOTAN_FFI_ERROR_BAD_FLAG, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, BOTAN_PUBKEY_DER_FORMAT_SIGNATURE, Botan::DER_SEQUENCE, Botan_FFI::ffi_guard_thunk(), Botan::PKCS11::flags(), hash, Botan::IEEE_1363, Botan_FFI::safe_get(), and Botan::system_rng().

## ◆ botan_pk_op_sign_destroy()

int botan_pk_op_sign_destroy | ( | botan_pk_op_sign_t | op | ) |

Returns
  0 if success, error if invalid object handle

Definition at line 134 of file ffi_pk_op.cpp.

135 {
136 return BOTAN_FFI_CHECKED_DELETE(op);
137 }

References BOTAN_FFI_CHECKED_DELETE.

## ◆ botan_pk_op_sign_finish()

int botan_pk_op_sign_finish | ( | botan_pk_op_sign_t | op,
|  | botan_rng_t | rng_obj,
|  | uint8_t | out[],
|  | size_t * | out_len
| ) |  |

Definition at line 152 of file ffi_pk_op.cpp.

153 {
154 return BOTAN_FFI_DO(Botan::PK_Signer, op, o, {
155 return write_vec_output(out, out_len, o.signature(safe_get(rng_obj)));
156 });
157 }

References BOTAN_FFI_DO, Botan_FFI::safe_get(), and Botan_FFI::write_vec_output().

## ◆ botan_pk_op_sign_output_length()

int botan_pk_op_sign_output_length | ( | botan_pk_op_sign_t | op,
|  | size_t * | sig_len
| ) |  |

Definition at line 139 of file ffi_pk_op.cpp.

140 {
141 if(sig_len == nullptr)
142 return BOTAN_FFI_ERROR_NULL_POINTER;
143
144 return BOTAN_FFI_DO(Botan::PK_Signer, op, o, { *sig_len = o.signature_length(); });
145 }
Botan::PK_Signer::signature_length
size_t signature_length() const
Definition: pubkey.cpp:277

References BOTAN_FFI_DO, BOTAN_FFI_ERROR_NULL_POINTER, and Botan::PK_Signer::signature_length().

## ◆ botan_pk_op_sign_update()

int botan_pk_op_sign_update | ( | botan_pk_op_sign_t | op,
|  | const uint8_t | in[],
|  | size_t | in_len
| ) |  |

Definition at line 147 of file ffi_pk_op.cpp.

148 {
149 return BOTAN_FFI_DO(Botan::PK_Signer, op, o, { o.update(in, in_len); });
150 }
Botan::PK_Signer::update
void update(uint8_t in)
Definition: pubkey.h:238

References BOTAN_FFI_DO, and Botan::PK_Signer::update().

## ◆ botan_pk_op_verify_create()

int botan_pk_op_verify_create | ( | botan_pk_op_verify_t * | op,
|  | botan_pubkey_t | key_obj,
|  | const char * | hash,
|  | uint32_t | flags
| ) |  |

Definition at line 159 of file ffi_pk_op.cpp.

163 {
164 if(op == nullptr)
165 return BOTAN_FFI_ERROR_NULL_POINTER;
166
167 if(flags != 0 && flags != BOTAN_PUBKEY_DER_FORMAT_SIGNATURE)
168 return BOTAN_FFI_ERROR_BAD_FLAG;
169
170 return ffi_guard_thunk(__func__, [=]() -> int {
171 *op = nullptr;
172 auto format = (flags & BOTAN_PUBKEY_DER_FORMAT_SIGNATURE) ? Botan::DER_SEQUENCE : Botan::IEEE_1363;
173 std::unique_ptr<Botan::PK_Verifier> pk(new Botan::PK_Verifier(safe_get(key_obj), hash, format));
174 *op = new botan_pk_op_verify_struct(pk.release());
175 return BOTAN_FFI_SUCCESS;
176 });
177 }
Botan::PK_Verifier
Definition: pubkey.h:299

References BOTAN_FFI_ERROR_BAD_FLAG, BOTAN_FFI_ERROR_NULL_POINTER, BOTAN_FFI_SUCCESS, BOTAN_PUBKEY_DER_FORMAT_SIGNATURE, Botan::DER_SEQUENCE, Botan_FFI::ffi_guard_thunk(), Botan::PKCS11::flags(), hash, Botan::IEEE_1363, and Botan_FFI::safe_get().

## ◆ botan_pk_op_verify_destroy()

int botan_pk_op_verify_destroy | ( | botan_pk_op_verify_t | op | ) |

Returns
  0 if success, error if invalid object handle

Definition at line 179 of file ffi_pk_op.cpp.

180 {
181 return BOTAN_FFI_CHECKED_DELETE(op);
182 }

References BOTAN_FFI_CHECKED_DELETE.

## ◆ botan_pk_op_verify_finish()

int botan_pk_op_verify_finish | ( | botan_pk_op_verify_t | op,
|  | const uint8_t | sig[],
|  | size_t | sig_len
| ) |  |

Definition at line 189 of file ffi_pk_op.cpp.

190 {
191 return BOTAN_FFI_RETURNING(Botan::PK_Verifier, op, o, {
192 const bool legit = o.check_signature(sig, sig_len);
193
194 if(legit)
195 return BOTAN_FFI_SUCCESS;
196 else
197 return BOTAN_FFI_INVALID_VERIFIER;
198 });
199 }
Botan::PK_Verifier::check_signature
bool check_signature(const uint8_t sig[], size_t length)
Definition: pubkey.cpp:343
BOTAN_FFI_INVALID_VERIFIER
@ BOTAN_FFI_INVALID_VERIFIER
Definition: ffi.h:64
BOTAN_FFI_RETURNING
#define BOTAN_FFI_RETURNING(T, obj, param, block)
Definition: ffi_util.h:101

References BOTAN_FFI_INVALID_VERIFIER, BOTAN_FFI_RETURNING, BOTAN_FFI_SUCCESS, and Botan::PK_Verifier::check_signature().

## ◆ botan_pk_op_verify_update()

int botan_pk_op_verify_update | ( | botan_pk_op_verify_t | op,
|  | const uint8_t | in[],
|  | size_t | in_len
| ) |  |

Definition at line 184 of file ffi_pk_op.cpp.

185 {
186 return BOTAN_FFI_DO(Botan::PK_Verifier, op, o, { o.update(in, in_len); });
187 }
Botan::PK_Verifier::update
void update(uint8_t in)
Definition: pubkey.h:347

References BOTAN_FFI_DO, and Botan::PK_Verifier::update().