curl-fuzzer C++ reference
Loading...
Searching...
No Matches
smtps_mock_server.h
Go to the documentation of this file.
1/*
2 * Copyright (C) Max Dymond, <cmeister2@gmail.com>, et al.
3 *
4 * SPDX-License-Identifier: curl
5 */
6
9
10#ifndef PROTO_FUZZER_SMTPS_MOCK_SERVER_H_
11#define PROTO_FUZZER_SMTPS_MOCK_SERVER_H_
12
13#include <curl/curl.h>
14
15#include <cstddef>
16#include <memory>
17#include <string>
18
21
22namespace proto_fuzzer {
23
36class SmtpsMockServer final : public SmtpMockServer {
37 public:
39
40 ~SmtpsMockServer() override;
41
42 void ObserveState() override;
43
44 SmtpsMockServer(const SmtpsMockServer&) = delete;
45 SmtpsMockServer& operator=(const SmtpsMockServer&) = delete;
46
47 void Install(CURL* easy) override;
48
49 int negotiated_tls_version() const;
50
51 std::size_t completed_handshake_count() const;
52
53 std::string negotiated_alpn() const;
54
55 protected:
56 std::unique_ptr<MockConnection> CreateConnection() override;
57
58 private:
59 TlsMockTransport transport_;
60};
61
62} // namespace proto_fuzzer
63
64#endif // PROTO_FUZZER_SMTPS_MOCK_SERVER_H_
SmtpMockServer(curl::fuzzer::proto::SmtpProbeMode mode=curl::fuzzer::proto::SMTP_PROBE_DEFAULT)
Begin without a borrowed protobuf or open socketpair.
std::size_t completed_handshake_count() const
void ObserveState() override
Retain protocol outcomes in coverage and introspector builds.
void Install(CURL *easy) override
Install the shared socket callbacks and a stable local trust anchor.
~SmtpsMockServer() override
Release the TLS connection before the carrier-owned server context.
std::unique_ptr< MockConnection > CreateConnection() override
Wrap one socketpair endpoint in an OpenSSL acceptor.
SmtpsMockServer()
Construct the OpenSSL server carrier used by every SMTPS scenario.
std::string negotiated_alpn() const
Reusable TLS carrier for protocol-specific mock peers.
Command-aware in-process peer for curl's SMTP state machine.
Reusable TLS transport for structured in-process protocol peers.