mirror of
https://github.com/DarkStore-3DS/Project_CTR.git
synced 2026-07-05 08:49:03 +00:00
makerom v0.3
This commit is contained in:
@@ -1,8 +1,16 @@
|
||||
#include "lib.h"
|
||||
|
||||
// KeyData
|
||||
#include "keys_common.h"
|
||||
#include "keys_retail.h"
|
||||
#ifndef PUBLIC_BUILD
|
||||
#include "keys_debug.h"
|
||||
#endif
|
||||
|
||||
// Private Prototypes
|
||||
int SetRsaKeySet(u8 **PrivDest, u8 *PrivSource, u8 **PubDest, u8 *PubSource);
|
||||
int SetUnFixedKey(keys_struct *keys, u8 *UnFixedKey);
|
||||
void InitCommonKeySlots(keys_struct *keys);
|
||||
|
||||
int SetTIK_RsaKey(keys_struct *keys, u8 *PrivateExp, u8 *PublicMod);
|
||||
int SetTMD_RsaKey(keys_struct *keys, u8 *PrivateExp, u8 *PublicMod);
|
||||
@@ -20,59 +28,78 @@ int SetTmdCert(keys_struct *keys, u8 *Cert);
|
||||
void InitKeys(keys_struct *keys)
|
||||
{
|
||||
memset(keys,0,sizeof(keys_struct));
|
||||
|
||||
#ifdef RETAIL_FSIGN
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
SetCommonKey(keys,(u8*)zeros_fixed_aesKey,1);
|
||||
SetCurrentCommonKey(keys,1);
|
||||
|
||||
// NCCH
|
||||
keys->aes.NormalKey = (u8*)zeros_fixed_aesKey;
|
||||
//SetSystemFixedKey(keys,(u8*)zeros_fixed_aesKey);
|
||||
InitCommonKeySlots(keys);
|
||||
}
|
||||
|
||||
/* RSA Keys */
|
||||
// CIA
|
||||
SetTIK_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
SetTMD_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
// CFA
|
||||
SetCFA_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
// CCI
|
||||
SetCCI_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
// CXI
|
||||
SetAccessDesc_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
void SetKeys(keys_struct *keys)
|
||||
{
|
||||
if(keys->keyset == keyset_RETAIL){
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
//SetCommonKey(keys,(u8*)zeros_fixed_aesKey,1);
|
||||
SetCurrentCommonKey(keys,1);
|
||||
|
||||
/* Certs */
|
||||
SetCaCert(keys,(u8*)ca3_dpki_cert);
|
||||
SetTikCert(keys,(u8*)xsC_dpki_cert);
|
||||
SetTmdCert(keys,(u8*)cpB_dpki_cert);
|
||||
#else // DEBUG KEYS
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
SetCommonKey(keys,(u8*)ctr_aes_common_key_dev0,0);
|
||||
SetCommonKey(keys,(u8*)ctr_aes_common_key_dev1,1);
|
||||
SetCurrentCommonKey(keys,0);
|
||||
|
||||
// NCCH
|
||||
keys->aes.NormalKey = (u8*)zeros_fixed_aesKey;
|
||||
SetSystemFixedKey(keys,(u8*)system_fixed_aesKey);
|
||||
// NCCH
|
||||
keys->aes.NormalKey = (u8*)zeros_fixed_aesKey;
|
||||
SetSystemFixedKey(keys,(u8*)system_fixed_aesKey);
|
||||
|
||||
/* RSA Keys */
|
||||
// CIA
|
||||
SetTIK_RsaKey(keys,(u8*)xs9_dpki_rsa_privExp,(u8*)xs9_dpki_rsa_pubMod);
|
||||
SetTMD_RsaKey(keys,(u8*)cpA_dpki_rsa_privExp,(u8*)cpA_dpki_rsa_pubMod);
|
||||
// CFA
|
||||
SetCFA_RsaKey(keys,(u8*)DevNcsdCfa_privExp,(u8*)DevNcsdCfa_pubMod);
|
||||
// CCI
|
||||
SetCCI_RsaKey(keys,(u8*)DevNcsdCfa_privExp,(u8*)DevNcsdCfa_pubMod);
|
||||
// CXI
|
||||
SetAccessDesc_RsaKey(keys,(u8*)AccessDesc_privExp,(u8*)AccessDesc_pubMod);
|
||||
/* RSA Keys */
|
||||
keys->rsa.FalseSign = true;
|
||||
// CIA
|
||||
SetTIK_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
SetTMD_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
// CFA
|
||||
SetCFA_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
// CCI
|
||||
SetCCI_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
// CXI
|
||||
SetAccessDesc_RsaKey(keys,(u8*)Dummy_rsa_privExp,(u8*)Dummy_rsa_pubMod);
|
||||
|
||||
/* Certs */
|
||||
SetCaCert(keys,(u8*)ca4_dpki_cert);
|
||||
SetTikCert(keys,(u8*)xs9_dpki_cert);
|
||||
SetTmdCert(keys,(u8*)cpA_dpki_cert);
|
||||
/* Certs */
|
||||
SetCaCert(keys,(u8*)ca3_dpki_cert);
|
||||
SetTikCert(keys,(u8*)xsC_dpki_cert);
|
||||
SetTmdCert(keys,(u8*)cpB_dpki_cert);
|
||||
}
|
||||
#ifndef PUBLIC_BUILD
|
||||
else if(keys->keyset == keyset_DEBUG){
|
||||
/* AES Keys */
|
||||
// CIA
|
||||
SetCommonKey(keys,(u8*)ctr_aes_common_key_dev0,0);
|
||||
SetCommonKey(keys,(u8*)ctr_aes_common_key_dev1,1);
|
||||
SetCurrentCommonKey(keys,0);
|
||||
|
||||
// NCCH
|
||||
keys->aes.NormalKey = (u8*)zeros_fixed_aesKey;
|
||||
SetSystemFixedKey(keys,(u8*)system_fixed_aesKey);
|
||||
|
||||
/* RSA Keys */
|
||||
// CIA
|
||||
SetTIK_RsaKey(keys,(u8*)xs9_dpki_rsa_privExp,(u8*)xs9_dpki_rsa_pubMod);
|
||||
SetTMD_RsaKey(keys,(u8*)cpA_dpki_rsa_privExp,(u8*)cpA_dpki_rsa_pubMod);
|
||||
// CFA
|
||||
SetCFA_RsaKey(keys,(u8*)DevNcsdCfa_privExp,(u8*)DevNcsdCfa_pubMod);
|
||||
// CCI
|
||||
SetCCI_RsaKey(keys,(u8*)DevNcsdCfa_privExp,(u8*)DevNcsdCfa_pubMod);
|
||||
// CXI
|
||||
SetAccessDesc_RsaKey(keys,(u8*)AccessDesc_privExp,(u8*)AccessDesc_pubMod);
|
||||
|
||||
/* Certs */
|
||||
SetCaCert(keys,(u8*)ca4_dpki_cert);
|
||||
SetTikCert(keys,(u8*)xs9_dpki_cert);
|
||||
SetTmdCert(keys,(u8*)cpA_dpki_cert);
|
||||
}
|
||||
#endif
|
||||
// Checking if AccessDesc can be signed
|
||||
u8 *tmp = malloc(0x100);
|
||||
memset(tmp,0,0x100);
|
||||
if(memcmp(tmp,keys->rsa.AccessDesc_Priv,0x100) == 0)
|
||||
keys->rsa.RequiresPresignedDesc = true;
|
||||
else
|
||||
keys->rsa.RequiresPresignedDesc = false;
|
||||
|
||||
free(tmp);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void FreeKeys(keys_struct *keys)
|
||||
@@ -126,11 +153,15 @@ int SetRsaKeySet(u8 **PrivDest, u8 *PrivSource, u8 **PubDest, u8 *PubSource)
|
||||
int SetCommonKey(keys_struct *keys, u8 *CommonKey, u8 Index)
|
||||
{
|
||||
if(!keys) return -1;
|
||||
return CopyData(&keys->aes.CommonKey[Index],CommonKey,16);
|
||||
}
|
||||
|
||||
void InitCommonKeySlots(keys_struct *keys)
|
||||
{
|
||||
if(!keys->aes.CommonKey){
|
||||
keys->aes.CommonKey = malloc(sizeof(u8*)*256);
|
||||
memset(keys->aes.CommonKey,0,sizeof(u8*)*256);
|
||||
}
|
||||
return CopyData(&keys->aes.CommonKey[Index],CommonKey,16);
|
||||
}
|
||||
|
||||
int SetCurrentCommonKey(keys_struct *keys, u8 Index)
|
||||
|
||||
Reference in New Issue
Block a user