mirror of
https://github.com/DarkStore-3DS/Project_CTR.git
synced 2026-07-03 00:39:14 +00:00
[makerom] Updated NCSD spec, as per 3dbrew.org contributor research.
This commit is contained in:
+26
-12
@@ -7,8 +7,8 @@ void InitCardInfoHdr(cardinfo_hdr **cihdr, devcardinfo_hdr **dcihdr, cci_setting
|
||||
int SetWriteableAddress(cardinfo_hdr *hdr, cci_settings *set);
|
||||
int SetCardInfoBitmask(cardinfo_hdr *hdr, cci_settings *set);
|
||||
int SetCardInfoNotes(cardinfo_hdr *hdr, cci_settings *set);
|
||||
void ImportNcch0Data(cardinfo_hdr *hdr, cci_settings *set);
|
||||
void SetInitialData(cardinfo_hdr *hdr, cci_settings *set);
|
||||
void SetNcchHeader(cardinfo_hdr *hdr, cci_settings *set);
|
||||
void SetCardSeedData(cardinfo_hdr *hdr, cci_settings *set);
|
||||
void SetDevCardInfo(devcardinfo_hdr *hdr, cci_settings *set);
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ int GenCardInfoHdr(cci_settings *set)
|
||||
return GEN_HDR_FAIL;
|
||||
if(SetCardInfoNotes(cihdr,set))
|
||||
return GEN_HDR_FAIL;
|
||||
ImportNcch0Data(cihdr,set);
|
||||
SetInitialData(cihdr,set);
|
||||
SetNcchHeader(cihdr,set);
|
||||
SetCardSeedData(cihdr,set);
|
||||
|
||||
if(dcihdr)
|
||||
SetDevCardInfo(dcihdr,set);
|
||||
@@ -49,6 +49,8 @@ void InitCardInfoHdr(cardinfo_hdr **cihdr, devcardinfo_hdr **dcihdr, cci_setting
|
||||
else
|
||||
*dcihdr = NULL;
|
||||
|
||||
//clrmem(set->headers.cardinfohdr.buffer, set->headers.cardinfohdr.size);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -174,7 +176,7 @@ int SetCardInfoNotes(cardinfo_hdr *hdr, cci_settings *set)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ImportNcch0Data(cardinfo_hdr *hdr, cci_settings *set)
|
||||
void SetNcchHeader(cardinfo_hdr *hdr, cci_settings *set)
|
||||
{
|
||||
u8 *ncch;
|
||||
ncch_hdr *ncchHdr;
|
||||
@@ -182,19 +184,31 @@ void ImportNcch0Data(cardinfo_hdr *hdr, cci_settings *set)
|
||||
ncch = set->content.data + set->content.dOffset[0];
|
||||
ncchHdr = (ncch_hdr*)ncch;
|
||||
|
||||
memcpy(hdr->ncch0TitleId,ncchHdr->titleId,8);
|
||||
memcpy(hdr->ncch0Hdr,GetNcchHdrData(ncchHdr),GetNcchHdrDataLen(ncchHdr));
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void SetInitialData(cardinfo_hdr *hdr, cci_settings *set)
|
||||
void SetCardSeedData(cardinfo_hdr *hdr, cci_settings *set)
|
||||
{
|
||||
clrmem(hdr->initialData,0x30);
|
||||
if(set->options.useExternalSdkCardInfo)
|
||||
memcpy(hdr->initialData,(u8*)stock_initial_data,0x30);
|
||||
else
|
||||
rndset(hdr->initialData,0x2c);
|
||||
u8 *ncch;
|
||||
ncch_hdr *ncchHdr;
|
||||
|
||||
ncch = set->content.data + set->content.dOffset[0];
|
||||
ncchHdr = (ncch_hdr*)ncch;
|
||||
|
||||
if (set->options.useExternalSdkCardInfo) {
|
||||
memcpy(hdr->cardSeedKeyY, ncchHdr->titleId, 8);
|
||||
clrmem(hdr->encCardSeed, 0x10);
|
||||
memcpy(hdr->cardSeedMac, stock_card_seed_mac, 0x10);
|
||||
clrmem(hdr->cardSeedNonce, 0xC);
|
||||
}
|
||||
else {
|
||||
memcpy(hdr->cardSeedKeyY, ncchHdr->titleId, 8);
|
||||
rndset(hdr->encCardSeed, 0x10);
|
||||
rndset(hdr->cardSeedMac, 0x10);
|
||||
rndset(hdr->cardSeedNonce, 0xC);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
+7
-13
@@ -17,10 +17,11 @@ typedef struct
|
||||
u8 writableAddress[4];
|
||||
u8 cardInfoBitmask[4];
|
||||
cardinfo_notes notes;
|
||||
u8 ncch0TitleId[8];
|
||||
u8 reserved0[8];
|
||||
u8 initialData[0x30];
|
||||
u8 reserved1[0xc0];
|
||||
u8 cardSeedKeyY[0x10];
|
||||
u8 encCardSeed[0x10];
|
||||
u8 cardSeedMac[0x10];
|
||||
u8 cardSeedNonce[0xc];
|
||||
u8 reserved1[0xc4];
|
||||
u8 ncch0Hdr[0x100];
|
||||
} cardinfo_hdr;
|
||||
|
||||
@@ -31,16 +32,9 @@ typedef struct
|
||||
u8 cardDeviceReserved2[0xf0];
|
||||
} devcardinfo_hdr;
|
||||
|
||||
static const u8 stock_initial_data[0x30] =
|
||||
static const u8 stock_card_seed_mac[0x30] =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xAD, 0x88,
|
||||
0xAC, 0x41, 0xA2, 0xB1, 0x5E, 0x8F,
|
||||
0x66, 0x9C, 0x97, 0xE5, 0xE1, 0x5E,
|
||||
0xA3, 0xEB, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
0xAD, 0x88, 0xAC, 0x41, 0xA2, 0xB1, 0x5E, 0x8F, 0x66, 0x9C, 0x97, 0xE5, 0xE1, 0x5E, 0xA3, 0xEB
|
||||
};
|
||||
|
||||
static const u8 stock_title_key[0x10] =
|
||||
|
||||
Reference in New Issue
Block a user