From da1f86929b5d197343f3df327264bb91569c4134 Mon Sep 17 00:00:00 2001 From: N2614 Date: Fri, 18 Mar 2011 08:12:34 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E4=B8=80?= =?UTF-8?q?=E8=A6=A7=E3=81=AB=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=B5?= =?UTF-8?q?=E3=82=A4=E3=82=BA=E3=82=92=E5=90=AB=E3=82=81=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@153 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../common/FileTransfer.cpp | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/trunk/ConsoleDataMigration/common/FileTransfer.cpp b/trunk/ConsoleDataMigration/common/FileTransfer.cpp index 309474d..f22507f 100644 --- a/trunk/ConsoleDataMigration/common/FileTransfer.cpp +++ b/trunk/ConsoleDataMigration/common/FileTransfer.cpp @@ -43,7 +43,8 @@ bool VerifyMac(nn::fs::FileInputStream* sdFile, nn::fs::FileStream* nandFile, s6 bool ConfirmFile(nn::fs::FileInputStream* from_file, nn::fs::FileStream* to_file, s64 sdFileSize, s64 nandFileSize, void* buf, size_t bufSize, const wchar_t* sdPath, const wchar_t* tmpPath, const wchar_t* truePath); void AddPkcsPadding(u8* paddingSize, void* buf, size_t bufSize, s32* readSize); -void AddPathNameAndUpdateContext(nn::fs::FileOutputStream* file, const wchar_t *str, nn::crypto::Sha256Context* context); +void AddPathNameAndUpdateContext(nn::fs::FileOutputStream* file, const wchar_t *str, s64 fileSize, + nn::crypto::Sha256Context* context); const char* GetCharStr(const wchar_t* path) { @@ -169,7 +170,7 @@ bool CopyDirectory(const wchar_t * from_path, const wchar_t * to_path, void* buf target_to << L"/"; if(encode) { - AddPathNameAndUpdateContext(list, target_to.str().c_str(), listContext); + AddPathNameAndUpdateContext(list, target_to.str().c_str(), 0, listContext); } @@ -187,12 +188,6 @@ bool CopyDirectory(const wchar_t * from_path, const wchar_t * to_path, void* buf target_tmp.str(L""); target_tmp.clear(std::stringstream::goodbit); - if(encode) - { - AddPathNameAndUpdateContext(list, target_to.str().c_str(), listContext); - } - - if(!encode) { target_tmp << to_path << L"_" << entry.entryName; @@ -231,6 +226,11 @@ bool CopyDirectory(const wchar_t * from_path, const wchar_t * to_path, void* buf } else { + if(encode) + { + AddPathNameAndUpdateContext(list, target_to.str().c_str(), filesize, listContext); + } + nn::crypto::SwAesCtrContext swAesCtrContext; swAesCtrContext.Initialize(iv, common::key, sizeof(key)); @@ -623,10 +623,13 @@ void AddPkcsPadding(u8* paddingSize, void* buf, size_t bufSize, s32* readSize) } } -//! @brief ファイルに文字列を改行付きで追加します +//! @brief ファイルに文字列とサイズをカンマ区切り、改行付きで追加します //! @param[in] file 文字列を出力したいファイル -//! @param[in] str 入力文字列 -void AddPathNameAndUpdateContext(nn::fs::FileOutputStream* file, const wchar_t *str, nn::crypto::Sha256Context* context) +//! @param[in] str 入力文字列 +//! @param[in] fileSize サイズ +//! @param[in] context SHA-256計算用コンテキスト +void AddPathNameAndUpdateContext(nn::fs::FileOutputStream* file, const wchar_t *str, s64 fileSize, + nn::crypto::Sha256Context* context) { nn::Result result; s32 writeSize; @@ -636,6 +639,15 @@ void AddPathNameAndUpdateContext(nn::fs::FileOutputStream* file, const wchar_t * context->Update(output.c_str(), output.size()); COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + char comma = ','; + result = file->TryWrite(&writeSize, &comma, sizeof(comma), true); + context->Update(&comma, sizeof(comma)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + + result = file->TryWrite(&writeSize, &fileSize, sizeof(fileSize), true); + context->Update(&fileSize, sizeof(fileSize)); + COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); + char newLine = '\n'; result = file->TryWrite(&writeSize, &newLine, sizeof(newLine), true); context->Update(&newLine, sizeof(newLine));