TwlIPL/include/sysmenu/settings/common/TWLStoreFile.h
yosiokat 75a9423d25 ・生産工程でNANDに書き込んで、以降はReadOnlyとなるHW情報を追加。
・HW情報や本体設定データを共通のTSFフォーマットにするため、TSF
 フォーマットのコードを追加。(現状はHW情報のみ対応)
・HW情報用のRSA鍵ペアを追加。
・acsignライブラリにRSA暗号化関数を追加。
・acsignライブラリのRSAでコード関数の値チェックを修正。
・HW情報をライトするHWInfoWriterを追加。
・NANDフラッシュマップ&フォルダツリーのフォルダ構成における各ファイルに
 ついて、RSA署名の有無と使用する鍵による色分けを行う。
・TWL_SystemMenuメモリマップにNANDファーム用バッファを記載。
 (ランチャーとメモリが重ならないように)

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@312 b08762b0-b915-fc4b-9d8c-17b2551a87ff
2007-12-05 12:19:30 +00:00

95 lines
3.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: TwlIPL
File: TWLFileStore.h
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Date:: $
$Rev$
$Author$
*---------------------------------------------------------------------------*/
#ifndef TWL_STORE_FILE_H_
#define TWL_STORE_FILE_H_
#if defined(SDK_CW)
#include <twl.h>
#include <twl/os/common/format_rom.h>
#ifdef __cplusplus
extern "C" {
#endif
// define data ------------------------------------
#define TSF_VERSION_TERMINATOR 0xff // version終端
#define SAVE_COUNT_MAX 0x80 // saveCountの最大値
#define SAVE_COUNT_MASK 0x7f // saveCountの値の範囲をマスクする。(0x00-0x7f
#define DISABLE_SAVE_COUNT 0xff // saveCount無効
// TSFリード結果
typedef enum TSFReadResult {
TSF_READ_RESULT_SUCCEEDED = 0,
TSF_READ_RESULT_ERROR_FILE_EXIST = 1,
TSF_READ_RESULT_ERROR_FILE_LENGTH = 2,
TSF_READ_RESULT_ERROR_DATA = 3
}TSFReadResult;
// TSFアクセス用パラメータ
typedef struct TSFParam { // TSF ( TWL Store File )
u32 dataLength; // 保存するデータ長
u32 fileLength; // 保存するファイル長
const u8 *conpatibleVerList; // 過去ver.の互換ver.リスト。TSF_VERSION_TERMINATORで終端。
const void *pDefaultValue; // 保存するデータのデフォルト値
BOOL (*pCheckDigestFunc)( void *pTgt, u32 len, u8 *pDigest ); // ダイジェストチェック関数へのポインタ
BOOL (*pCheckValueFunc)( void *pTgt ); // 値チェック関数へのポインタ
}TSFParam;
// TSFヘッダ
typedef struct TSFHeader{
union digest {
u8 sha1[ SVC_SHA1_DIGEST_SIZE ]; // SHA-1ダイジェスト
u8 rsa[ RSA_KEY_LENGTH ]; // RSA署名
u8 dst[ RSA_KEY_LENGTH ]; // 転送用の最大サイズ要素
}digest;
u8 version; // データver.
u8 saveCount; // セーブカウント(ミラーリングしないファイルは使用しない)
u8 rsv[2]; // 予約
u32 bodyLength; // データ長
}TSFHeader; // 134bytes
// ※「TSFHeader+データ本体」の形でファイルに保存されます。
#ifdef SDK_ARM9
//=========================================================
// NANDファイルへのリードライト関数
//=========================================================
// TSFフォーマットのファイルのリード
extern TSFReadResult TSF_ReadFile ( char *pPath, void *pDstBody, const TSFParam *pParam, u8 *pDstSaveCount );
// TSFフォーマットのファイルのライトsaveCountにDISABLE_SAVE_COUNTを与えた場合は、saveCountを"0"固定にします。)
extern BOOL TSF_WriteFile( char *pPath, TSFHeader *pHeader, const void *pSrcBody, u8 saveCount );
// TSFフォーマットのファイルのリカバリ
extern BOOL TSF_RecoveryFile( TSFReadResult err, char *pPath, u32 fileLength );
#endif // SDK_ARM9
#ifdef __cplusplus
}
#endif
#endif // SDK_CW
#endif // TWL_STORE_FILE_H_