HttpsJob.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright (c) 2020, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/HashMap.h>
  8. #include <LibCore/NetworkJob.h>
  9. #include <LibCore/Stream.h>
  10. #include <LibHTTP/HttpRequest.h>
  11. #include <LibHTTP/HttpResponse.h>
  12. #include <LibHTTP/Job.h>
  13. #include <LibTLS/TLSv12.h>
  14. namespace HTTP {
  15. class HttpsJob final : public Job {
  16. C_OBJECT(HttpsJob)
  17. public:
  18. virtual ~HttpsJob() override
  19. {
  20. }
  21. bool received_client_certificates() const { return m_received_client_certificates.has_value(); }
  22. Vector<TLS::Certificate> take_client_certificates() const { return m_received_client_certificates.release_value(); }
  23. void set_certificate(String certificate, String key);
  24. Function<Vector<TLS::Certificate>()> on_certificate_requested;
  25. private:
  26. explicit HttpsJob(HttpRequest&& request, Core::Stream::Stream& output_stream)
  27. : Job(move(request), output_stream)
  28. {
  29. }
  30. mutable Optional<Vector<TLS::Certificate>> m_received_client_certificates;
  31. };
  32. }