// Copyright 2019 The Chromium OS Authors. All rights reserved.
// 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) {
  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
