mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
ファイルリストへのCMAC付加が抜けていたので追加
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@479 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
c5c112366c
commit
665cb1a9d2
@ -71,7 +71,7 @@ u64 s_ExportProgress = 0;
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddCmac(nn::fs::FileOutputStream* file, nn::crypto::Sha256Context* context);
|
bool AddCmac(nn::fs::FileOutputStream* file, nn::crypto::Sha256Context* context);
|
||||||
|
|
||||||
nn::Result DeleteTrash(std::wstring currentDirectory)
|
nn::Result DeleteTrash(std::wstring currentDirectory)
|
||||||
{
|
{
|
||||||
@ -758,6 +758,22 @@ nn::Result WriteMcuRtcData(common::HardwareStateManager& manager)
|
|||||||
return nn::ResultSuccess();
|
return nn::ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AddCmactoExportFileList()
|
||||||
|
{
|
||||||
|
nn::Result result;
|
||||||
|
nn::fs::FileOutputStream list;
|
||||||
|
result = list.TryInitialize(common::FILE_LIST_PATHNAME, true);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
s64 fileSize = 0;
|
||||||
|
result = list.TryGetSize(&fileSize);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
// 末尾に移動
|
||||||
|
result = list.TrySetPosition(fileSize);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|
||||||
|
return AddCmac(&list, &s_FileListContext);
|
||||||
|
}
|
||||||
|
|
||||||
void ExportThreadFunc()
|
void ExportThreadFunc()
|
||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
@ -778,6 +794,15 @@ void ExportThreadFunc()
|
|||||||
{
|
{
|
||||||
common::SaveDataMover saveDataMover;
|
common::SaveDataMover saveDataMover;
|
||||||
saveDataMover.StartExport(buf, bufSize, &s_ExportProgress);
|
saveDataMover.StartExport(buf, bufSize, &s_ExportProgress);
|
||||||
|
COMMON_LOGGER_RETURN_VOID_SET_BOOL_IF_FAILED(
|
||||||
|
saveDataMover.GetLastResult(), s_IsExportSucceeded
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FileListにCMACを付加する
|
||||||
|
if(!AddCmactoExportFileList())
|
||||||
|
{
|
||||||
|
s_IsExportSucceeded = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
common::SdMountManager::Unmount();
|
common::SdMountManager::Unmount();
|
||||||
@ -925,7 +950,7 @@ bool IsExportSucceeded()
|
|||||||
//!@ brief ファイルにSHA256から計算したAES-CMACを付加します
|
//!@ brief ファイルにSHA256から計算したAES-CMACを付加します
|
||||||
//!@ param[in] file CMACを付加したいInitialize済みのファイル
|
//!@ param[in] file CMACを付加したいInitialize済みのファイル
|
||||||
//!@ param[in] context CMAC計算元のSHA256コンテキスト
|
//!@ param[in] context CMAC計算元のSHA256コンテキスト
|
||||||
void AddCmac(nn::fs::FileOutputStream* file, nn::crypto::Sha256Context* context)
|
bool AddCmac(nn::fs::FileOutputStream* file, nn::crypto::Sha256Context* context)
|
||||||
{
|
{
|
||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|
||||||
@ -934,12 +959,16 @@ void AddCmac(nn::fs::FileOutputStream* file, nn::crypto::Sha256Context* context)
|
|||||||
|
|
||||||
bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE];
|
bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE];
|
||||||
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, nn::crypto::Sha256Context::HASH_SIZE, common::cmacKey);
|
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, nn::crypto::Sha256Context::HASH_SIZE, common::cmacKey);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|
||||||
s32 writeSize;
|
s32 writeSize;
|
||||||
result = file->TryWrite(&writeSize, cmac, sizeof(cmac), false);
|
result = file->TryWrite(&writeSize, cmac, sizeof(cmac), false);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|
||||||
|
result = file->TryFlush();
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user