8 #include <botan/internal/tls_messages.h>
9 #include <botan/internal/tls_reader.h>
10 #include <botan/pubkey.h>
11 #include <botan/rsa.h>
12 #include <botan/dsa.h>
13 #include <botan/loadstor.h>
26 std::string padding =
"";
30 padding =
"EMSA3(TLS.Digest.0)";
33 padding =
"EMSA1(SHA-1)";
38 " is invalid/unknown for TLS signatures");
40 PK_Signer signer(*priv_key, padding, format);
42 signature = signer.sign_message(hash.
final(),
rng);
64 void Certificate_Verify::deserialize(
const MemoryRegion<byte>& buf)
66 TLS_Data_Reader reader(buf);
67 signature = reader.get_range<
byte>(2, 0, 65535);
80 std::string padding =
"";
83 if(key->algo_name() ==
"RSA")
84 padding =
"EMSA3(TLS.Digest.0)";
85 else if(key->algo_name() ==
"DSA")
87 padding =
"EMSA1(SHA-1)";
92 " is invalid/unknown for TLS signatures");
95 return verifier.verify_message(hash.
final(), signature);
void send(Record_Writer &, HandshakeHash &) const
bool verify(const X509_Certificate &, HandshakeHash &)
virtual std::string algo_name() const =0
std::invalid_argument Invalid_Argument
byte get_byte(size_t byte_num, T input)
RandomNumberGenerator * rng
Certificate_Verify(RandomNumberGenerator &rng, Record_Writer &, HandshakeHash &, const Private_Key *)
Public_Key * subject_public_key() const
SecureVector< byte > final()