8#ifndef BOTAN_PUBKEY_H__
9#define BOTAN_PUBKEY_H__
11#include <botan/pk_keys.h>
12#include <botan/pk_ops.h>
13#include <botan/symkey.h>
16#include <botan/emsa.h>
51 return enc(in, length, rng);
63 return enc(&in[0], in.
size(), rng);
76 PK_Encryptor& operator=(
const PK_Encryptor&) {
return *
this; }
78 virtual SecureVector<byte> enc(
const byte[],
size_t,
79 RandomNumberGenerator&)
const = 0;
96 return dec(in, length);
106 return dec(&in[0], in.
size());
113 PK_Decryptor& operator=(
const PK_Decryptor&) {
return *
this; }
115 virtual SecureVector<byte> dec(
const byte[],
size_t)
const = 0;
157 void update(
const byte in[],
size_t length);
188 const std::string& emsa,
198 PK_Signer& operator=(
const PK_Signer&) {
return *
this; }
200 PK_Ops::Signature* op;
201 PK_Ops::Verification* verify_op;
223 const byte sig[],
size_t sig_length);
234 &sig[0], sig.
size());
250 void update(
const byte msg_part[],
size_t length);
267 bool check_signature(
const byte sig[],
size_t length);
293 const std::string& emsa,
299 PK_Verifier& operator=(
const PK_Verifier&) {
return *
this; }
301 bool validate_signature(
const MemoryRegion<byte>& msg,
302 const byte sig[],
size_t sig_len);
304 PK_Ops::Verification* op;
328 size_t params_len)
const;
341 size_t params_len)
const
355 const byte in[],
size_t in_len,
356 const std::string& params =
"")
const
359 reinterpret_cast<const byte*
>(params.data()),
371 const std::string& params =
"")
const
374 reinterpret_cast<const byte*
>(params.data()),
384 const std::string& kdf);
389 PK_Key_Agreement& operator=(
const PK_Key_Agreement&) {
return *
this; }
391 PK_Ops::Key_Agreement* op;
409 const std::string& eme);
432 const std::string& eme);
PK_Decryptor_EME(const Private_Key &key, const std::string &eme)
SecureVector< byte > decrypt(const byte in[], size_t length) const
SecureVector< byte > decrypt(const MemoryRegion< byte > &in) const
PK_Encryptor_EME(const Public_Key &key, const std::string &eme)
size_t maximum_input_size() const
virtual size_t maximum_input_size() const =0
SecureVector< byte > encrypt(const byte in[], size_t length, RandomNumberGenerator &rng) const
SecureVector< byte > encrypt(const MemoryRegion< byte > &in, RandomNumberGenerator &rng) const
SymmetricKey derive_key(size_t key_len, const byte in[], size_t in_len, const byte params[], size_t params_len) const
SymmetricKey derive_key(size_t key_len, const MemoryRegion< byte > &in, const byte params[], size_t params_len) const
PK_Key_Agreement(const PK_Key_Agreement_Key &key, const std::string &kdf)
SymmetricKey derive_key(size_t key_len, const byte in[], size_t in_len, const std::string ¶ms="") const
SymmetricKey derive_key(size_t key_len, const MemoryRegion< byte > &in, const std::string ¶ms="") const
SecureVector< byte > sign_message(const MemoryRegion< byte > &in, RandomNumberGenerator &rng)
SecureVector< byte > sign_message(const byte in[], size_t length, RandomNumberGenerator &rng)
PK_Signer(const Private_Key &key, const std::string &emsa, Signature_Format format=IEEE_1363, Fault_Protection prot=ENABLE_FAULT_PROTECTION)
void set_output_format(Signature_Format format)
void update(const MemoryRegion< byte > &in)
bool verify_message(const MemoryRegion< byte > &msg, const MemoryRegion< byte > &sig)
void update(const MemoryRegion< byte > &in)
bool verify_message(const byte msg[], size_t msg_length, const byte sig[], size_t sig_length)
bool check_signature(const byte sig[], size_t length)
bool check_signature(const MemoryRegion< byte > &sig)
PK_Verifier(const Public_Key &pub_key, const std::string &emsa, Signature_Format format=IEEE_1363)
PK_Encryptor_EME PK_Encryptor_MR_with_EME
PK_Decryptor_EME PK_Decryptor_MR_with_EME
@ ENABLE_FAULT_PROTECTION
@ DISABLE_FAULT_PROTECTION