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)
|
||||
{
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user