ファイルリストへの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:
N2614 2011-11-07 01:15:24 +00:00
parent c5c112366c
commit 665cb1a9d2

View File

@ -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)
{
@ -758,6 +758,22 @@ nn::Result WriteMcuRtcData(common::HardwareStateManager& manager)
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()
{
nn::Result result;
@ -778,6 +794,15 @@ void ExportThreadFunc()
{
common::SaveDataMover saveDataMover;
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();
@ -925,7 +950,7 @@ bool IsExportSucceeded()
//!@ brief ファイルにSHA256から計算したAES-CMACを付加します
//!@ param[in] file CMACを付加したいInitialize済みのファイル
//!@ 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;
@ -934,12 +959,16 @@ void AddCmac(nn::fs::FileOutputStream* file, nn::crypto::Sha256Context* context)
bit8 cmac[nn::crypto::AES_CMAC_MAC_SIZE];
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;
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;
}
}