diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp index 34b130a..bac7371 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/Controller.cpp @@ -226,6 +226,7 @@ void CheckSdInserted(common::HardwareStateManager& manager, common::OperationMes void CheckAcAdapter(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); void CheckSdWritable(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); void CheckApSetting(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); +void CheckSerialNumber(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); void CheckNupExecuted(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); void CheckDownloadIvs(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); void CheckAccountDeleted(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep); @@ -286,12 +287,9 @@ void CheckSdWritable(common::HardwareStateManager& manager, common::OperationMes // 設定ファイル書式チェック void CheckApSetting(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep) { - NN_UNUSED_VAR(manager); - NN_UNUSED_VAR(goNextStep); - if (CheckAndReadAPSetting(message)) { - s_RestoreState = IMPORT_RTC; + CheckSerialNumber(manager, message, goNextStep); } else { @@ -299,6 +297,43 @@ void CheckApSetting(common::HardwareStateManager& manager, common::OperationMess } } +// シリアルNo.が一致しているかどうかチェック +void CheckSerialNumber(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep) +{ + NN_UNUSED_VAR(message); + NN_UNUSED_VAR(goNextStep); + + // SDカードにシリアルナンバーがあるか? + if (!common::ExistsSerialNumberFile()) + { + s_RestoreState = IMPORT_RTC; + return; + } + + u8 serialInSd[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + nn::Result result = ReadSerialNumber(serialInSd); + if (result.IsFailure()) + { + s_RestoreState = FAIL; + return; + } + + u8* serial; + size_t size; + manager.GetSerialNumber(&serial, &size); + + if(std::memcmp(serialInSd, serial, size) == 0) + { + s_RestoreState = IMPORT_RTC; + } + else + { + COMMON_LOGGER("Mismatched Serial Number!!"); + s_RestoreState = FAIL; + } + +} + // NUP済みかどうかチェック void CheckNupExecuted(common::HardwareStateManager& manager, common::OperationMessage& message, bool& goNextStep) {