99 lines
3.4 KiB
C
99 lines
3.4 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_FORMAT_H
|
|
#define _APPLE_EFFACEABLE_STORAGE_FORMAT_H
|
|
|
|
// =============================================================================
|
|
|
|
#include <stdint.h>
|
|
|
|
// =============================================================================
|
|
|
|
#define kAppleEffaceableStorageMagic 'Face'
|
|
|
|
#define kAppleEffaceableStorageGenerationUnknown ((uint32_t)0x00000000)
|
|
#define kAppleEffaceableStorageGenerationInitial ((uint32_t)0x00000001)
|
|
#define kAppleEffaceableStorageGenerationInvalid ((uint32_t)0xFFFFFFFF)
|
|
|
|
#define kAppleEffaceableStorageVersionMajorUnknown ((uint32_t)0x00000000)
|
|
#define kAppleEffaceableStorageVersionMajorInitial ((uint32_t)0x00000001)
|
|
#define kAppleEffaceableStorageVersionMajorNonce ((uint32_t)0x00000001)
|
|
#define kAppleEffaceableStorageVersionMajorCurrent kAppleEffaceableStorageVersionMajorNonce
|
|
#define kAppleEffaceableStorageVersionMajorInvalid ((uint32_t)0xFFFFFFFF)
|
|
|
|
#define kAppleEffaceableStorageVersionMinorUnknown ((uint32_t)0x00000000)
|
|
#define kAppleEffaceableStorageVersionMinorInitial ((uint32_t)0x00000001)
|
|
#define kAppleEffaceableStorageVersionMinorNonce ((uint32_t)0x00000002)
|
|
#define kAppleEffaceableStorageVersionMinorCurrent kAppleEffaceableStorageVersionMajorNonce
|
|
#define kAppleEffaceableStorageVersionMinorInvalid ((uint32_t)0xFFFFFFFF)
|
|
|
|
#define kAppleEffaceableStorageFlagsNone ((uint32_t)0x00000000)
|
|
|
|
#define kAppleEffaceableStorageSize 1024
|
|
#define kAppleEffaceableStorageSaltSize 16
|
|
#define kAppleEffaceableStorageReservedSize 24
|
|
#define kAppleEffaceableStorageContentSize (kAppleEffaceableStorageSize - sizeof(AppleEffaceableStorageHeader))
|
|
|
|
#define kAppleEffaceableStorageLockerBase 0
|
|
#define kAppleEffaceableStorageLockerSize (kAppleEffaceableStorageContentSize - kAppleEffaceableStorageLockerBase)
|
|
|
|
// =============================================================================
|
|
|
|
// All structures defined here are on-media formats.
|
|
|
|
typedef struct
|
|
{
|
|
uint32_t magic;
|
|
uint32_t version_major;
|
|
uint32_t version_minor;
|
|
uint32_t flags;
|
|
|
|
} __attribute__((__packed__)) AppleEffaceableStorageNaked;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t reserved[kAppleEffaceableStorageReservedSize];
|
|
uint32_t generation;
|
|
uint32_t checksum;
|
|
|
|
} __attribute__((__packed__)) AppleEffaceableStorageVeiled;
|
|
|
|
typedef struct
|
|
{
|
|
AppleEffaceableStorageNaked naked;
|
|
uint8_t salt[kAppleEffaceableStorageSaltSize];
|
|
AppleEffaceableStorageVeiled veiled;
|
|
|
|
} __attribute__((__packed__)) AppleEffaceableStorageHeader;
|
|
|
|
typedef struct
|
|
{
|
|
AppleEffaceableStorageHeader header;
|
|
uint8_t content[kAppleEffaceableStorageContentSize];
|
|
|
|
} __attribute__((__packed__)) AppleEffaceableStorageClone;
|
|
|
|
typedef struct
|
|
{
|
|
uint16_t magic;
|
|
uint16_t data_size;
|
|
uint32_t type_id;
|
|
} __attribute__((__packed__)) AppleEffaceableStorageLockerHeader;
|
|
|
|
#define kAppleEffaceableStorageLockerMagic 0x4c6b // 'Lk'
|
|
#define kAppleEffaceableStorageLockerSentinel 'DONE'
|
|
|
|
|
|
// =============================================================================
|
|
|
|
#endif /* _APPLE_EFFACEABLE_STORAGE_FORMAT_H */
|