// Copyright 2019 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "login_manager/fake_secret_util.h"

#include <fcntl.h>
#include <sys/types.h>

namespace login_manager {
namespace secret_util {

base::ScopedFD FakeSharedMemoryUtil::WriteDataToSharedMemory(
    const std::vector<uint8_t>& data) {
  // Return an invalid file descriptor if the input is empty to match
  // the behavior of base::SharedMemory::Create.
  if (data.empty()) {
    return base::ScopedFD();
  }

  base::ScopedFD fd(open("/dev/null", O_RDONLY));
  data_[fd.get()] = data;
  return fd;
}

bool FakeSharedMemoryUtil::ReadDataFromSharedMemory(
    const base::ScopedFD& in_data_fd,
    size_t data_size,
    std::vector<uint8_t>* out_data) {
  if (!data_.count(in_data_fd.get()))
    return false;
  *out_data = data_[in_data_fd.get()];
  return true;
}

}  // namespace secret_util
}  // namespace login_manager
