blob: e7bb4ef364d83463304e6a764c493a162b86b875 [file] [log] [blame]
// Copyright 2016 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.
#ifndef LOGIN_MANAGER_CROSSYSTEM_H_
#define LOGIN_MANAGER_CROSSYSTEM_H_
#include <cstddef>
// Light-weight interface to crossystem keeping the original char* semantics to
// make it an easy drop-in replacement. (std::string semantics may be added in
// the future.)
class Crossystem {
public:
virtual ~Crossystem() {}
// Recommended size for string property buffers used with
// VbGetSystemPropertyString().
static const std::size_t kVbMaxStringProperty = 8192;
// The name of the flag that indicates whether dev mode must be blocked.
static const char kBlockDevmode[];
// The name of the flag that indicates whether enrollment check must be run.
static const char kCheckEnrollment[];
// The name of the flag that indicates whether NVRAM has been cleared (eg. due
// to loss of power).
static const char kNvramCleared[];
// Crossystem property indicating firmware type.
static const char kMainfwType[];
// Firmware type string returned when there is no Chrome OS firmware present.
static const char kMainfwTypeNonchrome[];
// Name of the flag that signals a request to clear the TPM owner on next
// reboot.
static const char kClearTpmOwnerRequest[];
// Reads a system property integer.
//
// Returns the property value, or -1 if error.
virtual int VbGetSystemPropertyInt(const char* name) = 0;
// Sets a system property integer.
//
// Returns 0 if success, -1 if error.
virtual int VbSetSystemPropertyInt(const char* name, int value) = 0;
// Reads a system property string into a destination buffer of the specified
// size. Returned string will be null-terminated. If the buffer is too
// small, the returned string will be truncated.
//
// The caller can expect an un-truncated value if the size provided is at
// least kVbMaxStringProperty.
//
// Returns the passed buffer, or nullptr if error.
virtual const char* VbGetSystemPropertyString(const char* name,
char* dest,
std::size_t size) = 0;
// Sets a system property string.
//
// The maximum length of the value accepted depends on the specific
// property, not on kVbMaxStringProperty.
//
// Returns 0 if success, -1 if error.
virtual int VbSetSystemPropertyString(const char* name,
const char* value) = 0;
};
#endif // LOGIN_MANAGER_CROSSYSTEM_H_