8 #include <botan/internal/tls_messages.h> 9 #include <botan/internal/tls_reader.h> 10 #include <botan/der_enc.h> 11 #include <botan/ber_dec.h> 12 #include <botan/loadstor.h> 13 #include <botan/secqueue.h> 22 const std::vector<X509_Certificate>& certs)
24 for(
size_t i = 0; i != certs.size(); ++i)
25 names.push_back(certs[i].subject_dn());
44 for(
size_t i = 0; i != names.size(); ++i)
60 size_t types_size = buf[0];
62 if(buf.
size() < types_size + 3)
65 for(
size_t i = 0; i != types_size; ++i)
66 types.push_back(static_cast<Certificate_Type>(buf[i+1]));
68 size_t names_size =
make_u16bit(buf[types_size+2], buf[types_size+3]);
70 if(buf.
size() != names_size + types_size + 3)
73 BER_Decoder decoder(&buf[types_size + 3], names_size);
79 names.push_back(name);
87 const std::vector<X509_Certificate>& cert_list,
101 for(
size_t i = 0; i != certs.size(); ++i)
104 const size_t cert_size = raw_cert.
size();
105 for(
size_t i = 0; i != 3; ++i)
106 buf.
push_back(get_byte<u32bit>(i+1, cert_size));
110 const size_t buf_size = buf.
size() - 3;
111 for(
size_t i = 0; i != 3; ++i)
112 buf[i] = get_byte<u32bit>(i+1, buf_size);
125 const size_t total_size =
make_u32bit(0, buf[0], buf[1], buf[2]);
130 if(queue.
size() != total_size)
141 const size_t cert_size =
make_u32bit(0, len[0], len[1], len[2]);
142 const size_t original_size = queue.
size();
145 if(queue.
size() + cert_size != original_size)
147 certs.push_back(cert);
void append_tls_length_value(MemoryRegion< byte > &buf, const T *vals, size_t vals_size, size_t tag_size)
SecureVector< byte > get_contents()
void send(Record_Writer &, HandshakeHash &) const
size_t read(byte[], size_t)
BER_Decoder & decode(bool &)
Certificate(Record_Writer &, const std::vector< X509_Certificate > &, HandshakeHash &)
DER_Encoder & encode(bool b)
void write(const byte[], size_t)
u16bit make_u16bit(byte i0, byte i1)
u32bit make_u32bit(byte i0, byte i1, byte i2, byte i3)
Certificate_Req(Record_Writer &, HandshakeHash &, const std::vector< X509_Certificate > &)