131 lines
4.5 KiB
C
131 lines
4.5 KiB
C
/*
|
|
* Copyright (c) 2010-11 Apple Inc. All rights reserved.
|
|
*
|
|
* This document is the property of Apple Inc.
|
|
* It is considered confidential and proprietary.
|
|
*
|
|
* This document may not be reproduced or transmitted in any form,
|
|
* in whole or in part, without the express written permission of
|
|
* Apple Inc.
|
|
*/
|
|
|
|
#ifndef _APPLE_EFFACEABLE_STORAGE_KEYS_H
|
|
#define _APPLE_EFFACEABLE_STORAGE_KEYS_H
|
|
|
|
__BEGIN_DECLS
|
|
|
|
// =============================================================================
|
|
|
|
// callPlatformFunction methods
|
|
//
|
|
// GetLocker
|
|
// Returns the contents of the locker type_id, if it exists.
|
|
//
|
|
// SetLocker
|
|
// Updates or creates the locker type_id.
|
|
//
|
|
// Space
|
|
// Returns the largest amount of data that could be stored in a locker
|
|
// with type_id, accounting for overwriting any current value.
|
|
//
|
|
// Efface
|
|
// Destroys the locker type_id and all its contents.
|
|
//
|
|
// GenerateNonce
|
|
// Populate private nonce locker with random 64-bit value and return its hash.
|
|
//
|
|
// type_id
|
|
// Unique identifier for the locker. Typically a four-byte ASCII value.
|
|
//
|
|
// data
|
|
// Pointer to read/write data buffer.
|
|
//
|
|
// data_size
|
|
// Buffer/operation size in bytes. Note that for GetLocker this is a
|
|
// pointer to an IOByteCount that is updated to the actual size of the
|
|
// locker, and for Space this is the amount of space available for
|
|
// a locker with type_id.
|
|
//
|
|
// untrusted
|
|
// True if the client is untrusted and should not be allowed to operate
|
|
// on protected lockers.
|
|
//
|
|
// hash
|
|
// Pointer to 20 byte buffer into which the nonce hash will be copied.
|
|
//
|
|
#define kAppleEffaceableStorageFunctionGet "GetLocker" // (type_id, *data, *data_size, untrusted)
|
|
#define kAppleEffaceableStorageFunctionSet "SetLocker" // (type_id, *data, data_size, untrusted)
|
|
#define kAppleEffaceableStorageFunctionEfface "EffaceLocker" // (type_id, untrusted)
|
|
#define kAppleEffaceableStorageFunctionGenerateNonce "GenerateNonce" // (*hash)
|
|
#define kAppleEffaceableStorageFunctionSpace "Space" // (type_id, *free_size)
|
|
|
|
// When set on a request's type_id, the locker can only be read, overwritten and
|
|
// effaced by a kernel client. Cannot be set by a user client.
|
|
#define kAppleEffaceableStorageLockerProtected (1<<31)
|
|
// Special type for manipulating nonce locker, which is permitted
|
|
// only by the effaceable storage driver
|
|
#define kAppleEffaceableStorageLockerPrivate (1<<23)
|
|
|
|
// These bits must not be set in a locker's type_id.
|
|
#define kAppleEffaceableStorageLockerReserved ((1<<15) | (1<<7))
|
|
|
|
// This type_id is considered a wildcard; passed to Efface it will cause
|
|
// every locker to be effaced.
|
|
#define kAppleEffaceableStorageLockerWildcard '****'
|
|
|
|
// =============================================================================
|
|
|
|
#define kAppleEffaceableStorageClassName "AppleEffaceableStorage"
|
|
|
|
// DeviceTree properties
|
|
|
|
#define kAppleEffaceableStoragePropertyVersionMajor "VersionMajor"
|
|
#define kAppleEffaceableStoragePropertyVersionMinor "VersionMinor"
|
|
#define kAppleEffaceableStoragePropertyIsFormatted "IsFormatted"
|
|
|
|
// UserClient methods
|
|
|
|
enum _AppleEffaceableStorageMethod
|
|
{
|
|
// Maintenance interface.
|
|
kAppleEffaceableStorageMethodGetCapacity,
|
|
kAppleEffaceableStorageMethodGetBytes,
|
|
kAppleEffaceableStorageMethodSetBytes,
|
|
kAppleEffaceableStorageMethodIsFormatted,
|
|
kAppleEffaceableStorageMethodFormatStorage,
|
|
|
|
// Userclient locker methods.
|
|
//
|
|
// The type_id argument is always passed in scalarInput[0].
|
|
//
|
|
// GetLocker returns the actual size of the locker in scalarOutput[0],
|
|
// and if structureOutput/structureOutputSize describe a buffer, as much
|
|
// of the locker data as will fit is returned into the buffer.
|
|
//
|
|
// SetLocker creates or replaces an existing locker with the contents of
|
|
// structureInput/structureInputSize.
|
|
//
|
|
// EffaceLocker destroys the locker.
|
|
//
|
|
kAppleEffaceableStorageMethodGetLocker,
|
|
kAppleEffaceableStorageMethodSetLocker,
|
|
kAppleEffaceableStorageMethodEffaceLocker,
|
|
kAppleEffaceableStorageMethodSpace,
|
|
|
|
// Debug-only interface.
|
|
kAppleEffaceableStorageMethodWipeStorage,
|
|
|
|
// Nonce support
|
|
kAppleEffaceableStorageMethodGenerateNonce,
|
|
|
|
kAppleEffaceableStorageMethodCount
|
|
};
|
|
|
|
typedef enum _AppleEffaceableStorageMethod AppleEffaceableStorageMethod;
|
|
|
|
// =============================================================================
|
|
|
|
__END_DECLS
|
|
|
|
#endif /* _APPLE_EFFACEABLE_STORAGE_KEYS_H */
|