blob: 4f269dae84d6c2104525e746a113211cdb4510ba [file]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_LEGION_SECURE_SESSION_ASYNC_IMPL_H_
#define COMPONENTS_LEGION_SECURE_SESSION_ASYNC_IMPL_H_
#include <memory>
#include <optional>
#include "components/legion/mojom/oak_session.mojom.h"
#include "components/legion/secure_session.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/oak/chromium/proto/session/session.pb.h"
namespace legion {
class SecureSessionAsyncImpl : public SecureSession {
public:
static std::unique_ptr<SecureSessionAsyncImpl> CreateForTesting(
mojo::Remote<mojom::OakSession> service);
SecureSessionAsyncImpl();
~SecureSessionAsyncImpl() override;
// SecureSession:
void GetHandshakeMessage(
SecureSession::GetHandshakeMessageOnceCallback callback) override;
void ProcessHandshakeResponse(
const oak::session::v1::HandshakeResponse& response,
ProcessHandshakeResponseOnceCallback callback) override;
void Encrypt(const Request& data, EncryptOnceCallback callback) override;
void Decrypt(const oak::session::v1::EncryptedMessage& data,
DecryptOnceCallback callback) override;
private:
explicit SecureSessionAsyncImpl(mojo::Remote<mojom::OakSession> service);
mojo::Remote<mojom::OakSession> service_;
};
} // namespace legion
#endif // COMPONENTS_LEGION_SECURE_SESSION_ASYNC_IMPL_H_