mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
TitleDownloaderのResult抜けを修正
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@614 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
parent
6e20c3e0ac
commit
8a10b81820
@ -504,38 +504,32 @@ void WriteTwlData(enum common::TWL_PATH_INDEX path)
|
|||||||
{
|
{
|
||||||
nn::fs::FileOutputStream list;
|
nn::fs::FileOutputStream list;
|
||||||
result = list.TryInitialize(common::FILE_LIST_PATHNAME, true);
|
result = list.TryInitialize(common::FILE_LIST_PATHNAME, true);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_VOID_SET_BOOL_IF_FAILED(result, s_IsExportSucceeded);
|
||||||
|
|
||||||
|
result = list.TryGetSize(&fileSize);
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
result = list.TryGetSize(&fileSize);
|
// 末尾に移動
|
||||||
|
result = list.TrySetPosition(fileSize);
|
||||||
if (result.IsSuccess())
|
if (result.IsSuccess())
|
||||||
{
|
{
|
||||||
// 末尾に移動
|
wchar_t archiveName[nn::fs::MAX_FILE_PATH_LENGTH];
|
||||||
result = list.TrySetPosition(fileSize);
|
::std::mbstowcs(archiveName, common::TWL_ARCHIVE_NAME_TABLE[path],
|
||||||
if (result.IsSuccess())
|
std::strlen(common::TWL_ARCHIVE_NAME_TABLE[path]) + 1);
|
||||||
|
std::wstring archiveString(archiveName);
|
||||||
|
if (!common::CopyDirectory(
|
||||||
|
NULL,
|
||||||
|
(archiveString + ::std::wstring(L"/")).c_str(),
|
||||||
|
(common::SDMC_ROOT_DIRECTORY_PATH + ::std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str(),
|
||||||
|
buf, bufSize, true, &list, &s_FileListContext))
|
||||||
{
|
{
|
||||||
wchar_t archiveName[nn::fs::MAX_FILE_PATH_LENGTH];
|
s_IsExportSucceeded = false;
|
||||||
::std::mbstowcs(archiveName, common::TWL_ARCHIVE_NAME_TABLE[path],
|
return;
|
||||||
std::strlen(common::TWL_ARCHIVE_NAME_TABLE[path]) + 1);
|
|
||||||
std::wstring archiveString(archiveName);
|
|
||||||
if(!common::CopyDirectory(
|
|
||||||
NULL,
|
|
||||||
(archiveString + ::std::wstring(L"/")).c_str(),
|
|
||||||
(common::SDMC_ROOT_DIRECTORY_PATH + ::std::wstring(common::SD_TWL_ROOTNAME_TABLE[path])).c_str(),
|
|
||||||
buf, bufSize, true, &list, &s_FileListContext))
|
|
||||||
{
|
|
||||||
s_IsExportSucceeded = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
list.TryFlush();
|
|
||||||
list.Finalize();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
list.TryFlush();
|
||||||
{
|
list.Finalize();
|
||||||
s_IsExportSucceeded = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -863,8 +857,7 @@ bool DeleteNimSaveData()
|
|||||||
result = nn::fs::TryDeleteDirectoryRecursively(nimSaveDataPath.c_str());
|
result = nn::fs::TryDeleteDirectoryRecursively(nimSaveDataPath.c_str());
|
||||||
if (result.IsFailure() && !nn::fs::ResultNotFound::Includes(result))
|
if (result.IsFailure() && !nn::fs::ResultNotFound::Includes(result))
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = common::SdMountManager::Unmount();
|
result = common::SdMountManager::Unmount();
|
||||||
|
|||||||
@ -1726,45 +1726,45 @@ nn::Result InitializeHardwareDependentSetting()
|
|||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_TOUCHPANEL),
|
||||||
&cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData));
|
&cfgCalData.touchPanelCfgData, sizeof(TouchPanelCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_LCD, NN_CFG_LCD_CAL_FLICKER),
|
||||||
&cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData));
|
&cfgCalData.lcdFlickerCfgData, sizeof(LcdFlickerCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY), &cfgCalData.fcramCfgData,
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_FCRAM, NN_CFG_FCRAM_CAL_DELAY), &cfgCalData.fcramCfgData,
|
||||||
sizeof(FcramCfgData));
|
sizeof(FcramCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_RTC, NN_CFG_RTC_CAL_COMPENSATION),
|
||||||
&cfgCalData.rtcCfgData, sizeof(RtcCfgData));
|
&cfgCalData.rtcCfgData, sizeof(RtcCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_GYROSCOPE),
|
||||||
&cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData));
|
&cfgCalData.gyroscopeCfgData, sizeof(GyroscopeCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_HID, NN_CFG_HID_CAL_ACCELEROMETER),
|
||||||
&cfgCalData.accelCfgData, sizeof(AccelCfgData));
|
&cfgCalData.accelCfgData, sizeof(AccelCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL), &cfgCalData.codecCfgData,
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_CODEC, NN_CFG_CODEC_CAL), &cfgCalData.codecCfgData,
|
||||||
sizeof(CodecCfgData));
|
sizeof(CodecCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME),
|
result = nn::cfg::CTR::init::SetConfig(GET_CFG_KEY(NN_CFG_MCU, NN_CFG_MCU_SLIDE_VOLUME),
|
||||||
&cfgCalData.mcuSlideVolumeRangeCfgData, sizeof(McuSlideVolumeRangeCfgData));
|
&cfgCalData.mcuSlideVolumeRangeCfgData, sizeof(McuSlideVolumeRangeCfgData));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
NN_LOG("Set cfgCalData\n");
|
NN_LOG("Set cfgCalData\n");
|
||||||
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
nn::cfg::CTR::init::ResetCameraCalibration();
|
nn::cfg::CTR::init::ResetCameraCalibration();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
nn::cfg::CTR::init::ResetAnalogStickCalibration();
|
nn::cfg::CTR::init::ResetAnalogStickCalibration();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -219,18 +219,15 @@ nn::Result ConnectNetwork()
|
|||||||
nn::ac::Config config;
|
nn::ac::Config config;
|
||||||
|
|
||||||
result = nn::ac::CreateDefaultConfig(&config);
|
result = nn::ac::CreateDefaultConfig(&config);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
|
||||||
|
|
||||||
result = nn::ac::ConnectWithoutEula(config);
|
result = nn::ac::ConnectWithoutEula(config);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
|
||||||
|
|
||||||
COMMON_LOGGER_DETAIL("Success nn::ac::ConnectWithoutEula\n");
|
COMMON_LOGGER_DETAIL("Success nn::ac::ConnectWithoutEula\n");
|
||||||
|
|
||||||
result = PrintNetworkSetting();
|
result = PrintNetworkSetting();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -240,12 +237,10 @@ nn::Result InitializeInternal()
|
|||||||
nn::Result result;
|
nn::Result result;
|
||||||
|
|
||||||
result = nn::ac::InitializeInternal();
|
result = nn::ac::InitializeInternal();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
|
||||||
|
|
||||||
result = ConnectNetwork();
|
result = ConnectNetwork();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -414,7 +409,6 @@ void ShopOperationSingleThreadFunc(ShopThreadParam param)
|
|||||||
|
|
||||||
COMMON_LOGGER_DETAIL("util::ac::Initialize\n");
|
COMMON_LOGGER_DETAIL("util::ac::Initialize\n");
|
||||||
result = InitializeInternal();
|
result = InitializeInternal();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
NIM_SHOP_RESULT_CHECK(result);
|
NIM_SHOP_RESULT_CHECK(result);
|
||||||
|
|
||||||
switch(param.op)
|
switch(param.op)
|
||||||
|
|||||||
@ -353,7 +353,7 @@ void TitleDownloader::Start()
|
|||||||
nn::nim::TitleConfig config;
|
nn::nim::TitleConfig config;
|
||||||
s64 requiredSize;
|
s64 requiredSize;
|
||||||
m_Result = GetTitleConfig(m_ProgramIdList[i], &config, &requiredSize);
|
m_Result = GetTitleConfig(m_ProgramIdList[i], &config, &requiredSize);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
|
|
||||||
StartShopOperationSingle(SHOP_OPERATION_DOWNLOAD_TITLE, config);
|
StartShopOperationSingle(SHOP_OPERATION_DOWNLOAD_TITLE, config);
|
||||||
WaitShopOperationAndFinalize();
|
WaitShopOperationAndFinalize();
|
||||||
|
|||||||
@ -622,36 +622,21 @@ bool VerifyMac(nn::fs::FileInputStream* sdFile, nn::fs::FileStream* nandFile, s6
|
|||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
result = nandFile->TryRead(&readSize, buf, bufSize / 2);
|
result = nandFile->TryRead(&readSize, buf, bufSize / 2);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
totalReadSize += readSize;
|
||||||
|
|
||||||
|
if (readSize == 0)
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
retValue = CalculateAndCompareCmac(&context, sdCmac);
|
||||||
retValue = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
totalReadSize += readSize;
|
u8 paddingSize = 0;
|
||||||
|
AddPkcsPadding(&paddingSize, reinterpret_cast<bit8*>(buf), bufSize / 2, &readSize);
|
||||||
if (readSize == 0)
|
result = swAesCtrContext.Encrypt(reinterpret_cast<bit8*>(buf) + bufSize / 2, buf, readSize);
|
||||||
{
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
retValue = CalculateAndCompareCmac(&context, sdCmac);
|
context.Update(reinterpret_cast<bit8*>(buf) + bufSize / 2, readSize);
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
u8 paddingSize = 0;
|
|
||||||
AddPkcsPadding(&paddingSize, reinterpret_cast<bit8*>(buf), bufSize / 2, &readSize);
|
|
||||||
result = swAesCtrContext.Encrypt(reinterpret_cast<bit8*>(buf) + bufSize / 2, buf, readSize);
|
|
||||||
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
|
||||||
context.Update(reinterpret_cast<bit8*>(buf) + bufSize / 2 , readSize);
|
|
||||||
|
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
retValue = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nandFile->Finalize();
|
nandFile->Finalize();
|
||||||
|
|||||||
@ -188,7 +188,7 @@ void SaveDataMover::CalculateExportSystemSaveDataSize()
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,7 +251,7 @@ void SaveDataMover::ExportSystemSaveData(void* buf, size_t bufSize, u64* progres
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
NN_LOG("fileSize = %lld\n", input.GetSize());
|
NN_LOG("fileSize = %lld\n", input.GetSize());
|
||||||
@ -267,7 +267,7 @@ void SaveDataMover::ExportSystemSaveData(void* buf, size_t bufSize, u64* progres
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +278,7 @@ void SaveDataMover::ExportSystemSaveData(void* buf, size_t bufSize, u64* progres
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Export: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -391,7 +391,7 @@ void SaveDataMover::ImportSystemSaveData(void* buf, size_t bufSize, u64* progres
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -402,7 +402,7 @@ void SaveDataMover::ImportSystemSaveData(void* buf, size_t bufSize, u64* progres
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -414,7 +414,7 @@ void SaveDataMover::ImportSystemSaveData(void* buf, size_t bufSize, u64* progres
|
|||||||
if(m_Result.IsFailure())
|
if(m_Result.IsFailure())
|
||||||
{
|
{
|
||||||
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
|
COMMON_LOGGER_WARN("Can't Import: %08x\n", id);
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(m_Result);
|
COMMON_LOGGER_RETURN_VOID_IF_FAILED(m_Result);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -376,26 +376,18 @@ nn::Result InitializeNetwork(void)
|
|||||||
nn::ac::Config config;
|
nn::ac::Config config;
|
||||||
|
|
||||||
result = nn::ac::InitializeInternal();
|
result = nn::ac::InitializeInternal();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
// 接続要求用のパラメータを作成
|
// 接続要求用のパラメータを作成
|
||||||
result = nn::ac::CreateDefaultConfig(&config);
|
result = nn::ac::CreateDefaultConfig(&config);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// デバッグ用に接続テストを無効化
|
// デバッグ用に接続テストを無効化
|
||||||
nn::ac::DebugSetNetworkArea(&config, nn::ac::NETWORK_AREA_LAN);
|
nn::ac::DebugSetNetworkArea(&config, nn::ac::NETWORK_AREA_LAN);
|
||||||
|
|
||||||
// 接続要求を発行
|
// 接続要求を発行
|
||||||
result = nn::ac::ConnectWithoutEula(config);
|
result = nn::ac::ConnectWithoutEula(config);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return nn::ResultSuccess();
|
||||||
}
|
}
|
||||||
@ -406,10 +398,10 @@ nn::Result FinalizeNetwork(void)
|
|||||||
|
|
||||||
// 接続要求用のパラメータを作成
|
// 接続要求用のパラメータを作成
|
||||||
result = nn::ac::Close();
|
result = nn::ac::Close();
|
||||||
NN_UTIL_RETURN_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::ac::FinalizeInternal();
|
result = nn::ac::FinalizeInternal();
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_RESULT_IF_FAILED(result);
|
||||||
|
|
||||||
return nn::ResultSuccess();
|
return nn::ResultSuccess();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -102,24 +102,16 @@ bool AddCmac(const wchar_t * from_path, void* buf, const size_t bufSize)
|
|||||||
bool ret_value = true;
|
bool ret_value = true;
|
||||||
|
|
||||||
nn::Result result = from_dir.TryInitialize(from_path);
|
nn::Result result = from_dir.TryInitialize(from_path);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 出力先ディレクトリを削除してから作成
|
// 出力先ディレクトリを削除してから作成
|
||||||
const wchar_t* CMAC_DIR = L"CmacAdded";
|
const wchar_t* CMAC_DIR = L"CmacAdded";
|
||||||
targetDirectory << from_path << CMAC_DIR;
|
targetDirectory << from_path << CMAC_DIR;
|
||||||
result = nn::fs::TryDeleteDirectoryRecursively(targetDirectory.str().c_str());
|
result = nn::fs::TryDeleteDirectoryRecursively(targetDirectory.str().c_str());
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|
||||||
result = nn::fs::TryCreateDirectory(targetDirectory.str().c_str());
|
result = nn::fs::TryCreateDirectory(targetDirectory.str().c_str());
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -160,11 +160,7 @@ bool CalculateAndCompareCmac(nn::crypto::Sha256Context* context, bit8* sdCmac)
|
|||||||
context->Finalize();
|
context->Finalize();
|
||||||
|
|
||||||
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey);
|
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(std::memcmp(cmac, sdCmac, sizeof(cmac)) != 0)
|
if(std::memcmp(cmac, sdCmac, sizeof(cmac)) != 0)
|
||||||
{
|
{
|
||||||
@ -198,12 +194,7 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
|
|||||||
bool ret_value = true;
|
bool ret_value = true;
|
||||||
|
|
||||||
nn::Result result = from_dir.TryInitialize(from_path);
|
nn::Result result = from_dir.TryInitialize(from_path);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
@ -266,13 +257,8 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
|
|||||||
|
|
||||||
|
|
||||||
result = sdFile.TryGetSize(&sdFileSize);
|
result = sdFile.TryGetSize(&sdFileSize);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
ret_value = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
|
||||||
bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE];
|
bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE];
|
||||||
@ -286,20 +272,10 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
|
|||||||
s32 readSize;
|
s32 readSize;
|
||||||
// ハッシュを取得する
|
// ハッシュを取得する
|
||||||
result = sdFile.TrySetPosition(sdFileSize - nn::crypto::AES_CMAC_MAC_SIZE);
|
result = sdFile.TrySetPosition(sdFileSize - nn::crypto::AES_CMAC_MAC_SIZE);
|
||||||
if (result.IsSuccess())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
|
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
sdFile.SetPosition(0);
|
sdFile.SetPosition(0);
|
||||||
|
|
||||||
@ -324,16 +300,12 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
|
|||||||
BackupDataHeader dec;
|
BackupDataHeader dec;
|
||||||
std::memset(&enc, 0, sizeof(enc));
|
std::memset(&enc, 0, sizeof(enc));
|
||||||
std::memset(&dec, 0, sizeof(dec));
|
std::memset(&dec, 0, sizeof(dec));
|
||||||
sdFile.TryRead(&readSize, &enc, sizeof(enc));
|
result = sdFile.TryRead(&readSize, &enc, sizeof(enc));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if(result.IsFailure())
|
|
||||||
{
|
|
||||||
ret_value = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
totalReadSize += readSize;
|
totalReadSize += readSize;
|
||||||
context.Update(&enc, sizeof(enc));
|
context.Update(&enc, sizeof(enc));
|
||||||
swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
|
result = swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
|
|
||||||
// 書き込み対象ファイル作成
|
// 書き込み対象ファイル作成
|
||||||
s32 writeSize;
|
s32 writeSize;
|
||||||
@ -347,15 +319,9 @@ bool DecryptDirectory(const wchar_t * from_path, const wchar_t* to_path, void* b
|
|||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
result = sdFile.TryRead(&readSize, buf, bufSize / 2);
|
result = sdFile.TryRead(&readSize, buf, bufSize / 2);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
totalReadSize += readSize;
|
totalReadSize += readSize;
|
||||||
|
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
ret_value = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (readSize == 0)
|
if (readSize == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -147,11 +147,7 @@ bool CalculateAndCompareCmac(nn::crypto::Sha256Context* context, bit8* sdCmac)
|
|||||||
context->Finalize();
|
context->Finalize();
|
||||||
|
|
||||||
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey);
|
result = nn::crypto::CalculateAesCmacSw(cmac, sha256Hash, sizeof(sha256Hash), common::cmacKey);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(std::memcmp(cmac, sdCmac, sizeof(cmac)) != 0)
|
if(std::memcmp(cmac, sdCmac, sizeof(cmac)) != 0)
|
||||||
{
|
{
|
||||||
@ -184,12 +180,7 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
|
|||||||
bool ret_value = true;
|
bool ret_value = true;
|
||||||
|
|
||||||
nn::Result result = from_dir.TryInitialize(from_path);
|
nn::Result result = from_dir.TryInitialize(from_path);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
@ -237,13 +228,7 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
result = sdFile.TryGetSize(&sdFileSize);
|
result = sdFile.TryGetSize(&sdFileSize);
|
||||||
if (result.IsFailure())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
ret_value = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
|
||||||
bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE];
|
bit8 sdCmac[nn::crypto::AES_CMAC_MAC_SIZE];
|
||||||
@ -257,20 +242,9 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
|
|||||||
s32 readSize;
|
s32 readSize;
|
||||||
// ハッシュを取得する
|
// ハッシュを取得する
|
||||||
result = sdFile.TrySetPosition(sdFileSize - nn::crypto::AES_CMAC_MAC_SIZE);
|
result = sdFile.TrySetPosition(sdFileSize - nn::crypto::AES_CMAC_MAC_SIZE);
|
||||||
if (result.IsSuccess())
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
{
|
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
|
||||||
result = sdFile.TryRead(&readSize, sdCmac, sizeof(sdCmac));
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
sdFile.SetPosition(0);
|
sdFile.SetPosition(0);
|
||||||
|
|
||||||
@ -295,13 +269,8 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
|
|||||||
BackupDataHeader dec;
|
BackupDataHeader dec;
|
||||||
std::memset(&enc, 0, sizeof(enc));
|
std::memset(&enc, 0, sizeof(enc));
|
||||||
std::memset(&dec, 0, sizeof(dec));
|
std::memset(&dec, 0, sizeof(dec));
|
||||||
sdFile.TryRead(&readSize, &enc, sizeof(enc));
|
result = sdFile.TryRead(&readSize, &enc, sizeof(enc));
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if(result.IsFailure())
|
|
||||||
{
|
|
||||||
ret_value = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
totalReadSize += readSize;
|
totalReadSize += readSize;
|
||||||
context.Update(&enc, sizeof(enc));
|
context.Update(&enc, sizeof(enc));
|
||||||
swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
|
swAesCtrContext.Decrypt(&dec, &enc, sizeof(enc));
|
||||||
@ -309,15 +278,9 @@ bool VerifyDirectory(const wchar_t * from_path, void* buf,
|
|||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
result = sdFile.TryRead(&readSize, buf, bufSize);
|
result = sdFile.TryRead(&readSize, buf, bufSize);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
totalReadSize += readSize;
|
totalReadSize += readSize;
|
||||||
|
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
ret_value = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
if (readSize == 0)
|
if (readSize == 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -155,12 +155,7 @@ bool EncryptDirectory(const wchar_t * from_path, void* buf,
|
|||||||
bool ret_value = true;
|
bool ret_value = true;
|
||||||
|
|
||||||
nn::Result result = from_dir.TryInitialize(from_path);
|
nn::Result result = from_dir.TryInitialize(from_path);
|
||||||
|
COMMON_LOGGER_RETURN_FALSE_IF_FAILED(result);
|
||||||
if (result.IsFailure())
|
|
||||||
{
|
|
||||||
COMMON_LOGGER_RESULT_IF_FAILED(result);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user