HttpsJob.h 1000 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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 <LibHTTP/HttpRequest.h>
  10. #include <LibHTTP/HttpResponse.h>
  11. #include <LibHTTP/Job.h>
  12. #include <LibTLS/TLSv12.h>
  13. namespace HTTP {
  14. class HttpsJob final : public Job {
  15. C_OBJECT(HttpsJob)
  16. public:
  17. virtual ~HttpsJob() override
  18. {
  19. }
  20. bool received_client_certificates() const { return m_received_client_certificates.has_value(); }
  21. Vector<TLS::Certificate> take_client_certificates() const { return m_received_client_certificates.release_value(); }
  22. void set_certificate(ByteString certificate, ByteString key);
  23. Function<Vector<TLS::Certificate>()> on_certificate_requested;
  24. private:
  25. explicit HttpsJob(HttpRequest&& request, Stream& output_stream)
  26. : Job(move(request), output_stream)
  27. {
  28. }
  29. mutable Optional<Vector<TLS::Certificate>> m_received_client_certificates;
  30. };
  31. }