# 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.

description     "Start the cryptohome-proxy daemon"
author          "chromium-os-dev@chromium.org"

start on starting cryptohomed
stop on stopping cryptohomed
respawn

# Check if we are using the new interface, we'll only start the proxy in
# that case.
pre-start script
  # Call the script to determine if we are running the new interface.
  if ! /usr/libexec/cryptohome/shall-use-userdataauth.sh; then
    # Old interface is used.
    stop
  fi
end script

expect fork

# -i Fork and exit
# -e New network namespace
# -l New IPC namespace
# -n No new privileges
# -p New PID namespace
# -v New mount namespace
# -r Remount /proc read-only
# --uts New UTS namespace
# -c 0 Grant no caps

exec minijail0 -e -i -l -n -p -v -r --uts -c 0 \
  --profile=minimalistic-mountns \
  -k 'tmpfs,/run,tmpfs,MS_NOSUID|MS_NODEV|MS_NOEXEC' \
  -b /run/dbus -- \
  /usr/sbin/cryptohome-proxy
