mirror of
https://github.com/DarkMatterCore/nxdumptool.git
synced 2024-11-26 12:12:02 +00:00
Remove wrong references to ECC data in gamecards.
This commit is contained in:
parent
6bee2c5d20
commit
cddf57363c
2 changed files with 8 additions and 7 deletions
|
@ -28,8 +28,8 @@
|
||||||
|
|
||||||
#define GAMECARD_ACCESS_WAIT_TIME 3 /* Seconds. */
|
#define GAMECARD_ACCESS_WAIT_TIME 3 /* Seconds. */
|
||||||
|
|
||||||
#define GAMECARD_ECC_BLOCK_SIZE 0x200
|
#define GAMECARD_UNUSED_AREA_BLOCK_SIZE 0x24
|
||||||
#define GAMECARD_ECC_DATA_SIZE 0x24
|
#define GAMECARD_UNUSED_AREA_SIZE(x) (((x) / GAMECARD_MEDIA_UNIT_SIZE) * GAMECARD_UNUSED_AREA_BLOCK_SIZE)
|
||||||
|
|
||||||
#define GAMECARD_STORAGE_AREA_NAME(x) ((x) == GameCardStorageArea_Normal ? "normal" : ((x) == GameCardStorageArea_Secure ? "secure" : "none"))
|
#define GAMECARD_STORAGE_AREA_NAME(x) ((x) == GameCardStorageArea_Normal ? "normal" : ((x) == GameCardStorageArea_Secure ? "secure" : "none"))
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ bool gamecardGetTrimmedSize(u64 *out)
|
||||||
{
|
{
|
||||||
mutexLock(&g_gamecardMutex);
|
mutexLock(&g_gamecardMutex);
|
||||||
bool ret = (g_gameCardInserted && g_gameCardInfoLoaded && out);
|
bool ret = (g_gameCardInserted && g_gameCardInfoLoaded && out);
|
||||||
if (ret) *out = (sizeof(GameCardHeader) + ((u64)g_gameCardHeader.valid_data_end_address * GAMECARD_MEDIA_UNIT_SIZE));
|
if (ret) *out = (sizeof(GameCardHeader) + GAMECARD_MEDIA_UNIT_OFFSET(g_gameCardHeader.valid_data_end_address));
|
||||||
mutexUnlock(&g_gamecardMutex);
|
mutexUnlock(&g_gamecardMutex);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -619,7 +619,7 @@ static void gamecardLoadInfo(void)
|
||||||
{
|
{
|
||||||
/* The total size for the secure storage area is maxed out under SX OS. */
|
/* The total size for the secure storage area is maxed out under SX OS. */
|
||||||
/* Let's try to calculate it manually. */
|
/* Let's try to calculate it manually. */
|
||||||
g_gameCardStorageSecureAreaSize = ((g_gameCardCapacity - ((g_gameCardCapacity / GAMECARD_ECC_BLOCK_SIZE) * GAMECARD_ECC_DATA_SIZE)) - g_gameCardStorageNormalAreaSize);
|
g_gameCardStorageSecureAreaSize = (g_gameCardCapacity - (g_gameCardStorageNormalAreaSize + GAMECARD_UNUSED_AREA_SIZE(g_gameCardCapacity)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate memory for the root hash FS header. */
|
/* Allocate memory for the root hash FS header. */
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#define GAMECARD_CERT_MAGIC 0x43455254 /* "CERT". */
|
#define GAMECARD_CERT_MAGIC 0x43455254 /* "CERT". */
|
||||||
|
|
||||||
#define GAMECARD_MEDIA_UNIT_SIZE 0x200
|
#define GAMECARD_MEDIA_UNIT_SIZE 0x200
|
||||||
|
#define GAMECARD_MEDIA_UNIT_OFFSET(x) ((u64)(x) * GAMECARD_MEDIA_UNIT_SIZE)
|
||||||
|
|
||||||
#define GAMECARD_UPDATE_TID (u64)0x0100000000000816
|
#define GAMECARD_UPDATE_TID (u64)0x0100000000000816
|
||||||
|
|
||||||
|
@ -57,10 +58,10 @@ typedef struct {
|
||||||
u8 reserved[0xCF0];
|
u8 reserved[0xCF0];
|
||||||
} GameCardTitleKey;
|
} GameCardTitleKey;
|
||||||
|
|
||||||
/// Encrypted using RSA-2048-OAEP. Assumed to be all zeroes in retail gamecards.
|
/// Encrypted using RSA-2048-OAEP and a private OAEP key from AuthoringTool. Assumed to be all zeroes in retail gamecards.
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u8 titlekey_encryption_key[0x10]; ///< Used as the AES-128-CTR key for the `GameCardTitleKey` section.
|
u8 titlekey_encryption_key[0x10]; ///< Used as the AES-128-CTR key for the `GameCardTitleKey` section. Randomly generated during XCI creation by AuthoringTool.
|
||||||
u8 titlekey_encryption_iv[0x10]; ///< Used as the AES-128-CTR IV/counter for the `GameCardTitleKey` section.
|
u8 titlekey_encryption_iv[0x10]; ///< Used as the AES-128-CTR IV/counter for the `GameCardTitleKey` section. Randomly generated during XCI creation by AuthoringTool.
|
||||||
u8 reserved[0xE0];
|
u8 reserved[0xE0];
|
||||||
} GameCardTitleKeyEncryption;
|
} GameCardTitleKeyEncryption;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue