1
0
Fork 0
mirror of https://github.com/DarkMatterCore/nxdumptool.git synced 2025-02-19 23:15:37 +00:00

Codestyle fixes.

This commit is contained in:
Pablo Curiel 2020-05-01 11:06:24 -04:00
parent e2b4ebc5d4
commit 91fdff7816
7 changed files with 49 additions and 34 deletions

View file

@ -286,8 +286,6 @@ static u8 certGetCertificateType(const void *data, u64 data_size)
return type; return type;
} }
offset += MEMBER_SIZE(CertCommonBlock, issuer);
memcpy(&pub_key_type, data_u8 + offset, sizeof(u32)); memcpy(&pub_key_type, data_u8 + offset, sizeof(u32));
pub_key_type = __builtin_bswap32(pub_key_type); pub_key_type = __builtin_bswap32(pub_key_type);

View file

@ -67,7 +67,6 @@ typedef struct {
/// Placed after the certificate signature block. /// Placed after the certificate signature block.
typedef struct { typedef struct {
char issuer[0x40];
u32 pub_key_type; ///< CertPubKeyType. u32 pub_key_type; ///< CertPubKeyType.
char name[0x40]; char name[0x40];
u32 date; u32 date;

View file

@ -49,12 +49,12 @@ typedef enum {
GameCardRomSize_32GiB = 0xE2 GameCardRomSize_32GiB = 0xE2
} GameCardRomSize; } GameCardRomSize;
typedef struct { typedef enum {
u8 autoboot : 1; GameCardFlags_AutoBoot = BIT(0),
u8 history_erase : 1; GameCardFlags_HistoryErase = BIT(1),
u8 repair_tool : 1; GameCardFlags_RepairTool = BIT(2),
u8 different_region_cup_to_terra_device : 1; GameCardFlags_DifferentRegionCupToTerraDevice = BIT(3),
u8 different_region_cup_to_global_device : 1; GameCardFlags_DifferentRegionCupToGlobalDevice = BIT(4)
} GameCardFlags; } GameCardFlags;
typedef enum { typedef enum {
@ -102,7 +102,7 @@ typedef struct {
GameCardKeyFlags key_flags; GameCardKeyFlags key_flags;
u8 rom_size; ///< GameCardRomSize. u8 rom_size; ///< GameCardRomSize.
u8 header_version; u8 header_version;
GameCardFlags flags; u8 flags; ///< GameCardFlags.
u64 package_id; u64 package_id;
u32 valid_data_end_address; ///< Expressed in GAMECARD_MEDIA_UNIT_SIZE blocks. u32 valid_data_end_address; ///< Expressed in GAMECARD_MEDIA_UNIT_SIZE blocks.
u8 reserved[0x4]; u8 reserved[0x4];

View file

@ -88,8 +88,8 @@ typedef enum {
NcaKeyGeneration_700_801 = 8, NcaKeyGeneration_700_801 = 8,
NcaKeyGeneration_810_811 = 9, NcaKeyGeneration_810_811 = 9,
NcaKeyGeneration_900_901 = 10, NcaKeyGeneration_900_901 = 10,
NcaKeyGeneration_910_1001 = 11, NcaKeyGeneration_910_1002 = 11,
NcaKeyGeneration_Current = NcaKeyGeneration_910_1001 NcaKeyGeneration_Current = NcaKeyGeneration_910_1002
} NcaKeyGeneration; } NcaKeyGeneration;
typedef struct { typedef struct {

View file

@ -33,24 +33,28 @@ typedef struct {
u32 sig_type; ///< SignatureType_Rsa4096Sha1, SignatureType_Rsa4096Sha256. u32 sig_type; ///< SignatureType_Rsa4096Sha1, SignatureType_Rsa4096Sha256.
u8 signature[0x200]; u8 signature[0x200];
u8 padding[0x3C]; u8 padding[0x3C];
char issuer[0x40];
} SignatureBlockRsa4096; } SignatureBlockRsa4096;
typedef struct { typedef struct {
u32 sig_type; ///< SignatureType_Rsa2048Sha1, SignatureType_Rsa2048Sha256. u32 sig_type; ///< SignatureType_Rsa2048Sha1, SignatureType_Rsa2048Sha256.
u8 signature[0x100]; u8 signature[0x100];
u8 padding[0x3C]; u8 padding[0x3C];
char issuer[0x40];
} SignatureBlockRsa2048; } SignatureBlockRsa2048;
typedef struct { typedef struct {
u32 sig_type; ///< SignatureType_Ecc480Sha1, SignatureType_Ecc480Sha256. u32 sig_type; ///< SignatureType_Ecc480Sha1, SignatureType_Ecc480Sha256.
u8 signature[0x3C]; u8 signature[0x3C];
u8 padding[0x40]; u8 padding[0x40];
char issuer[0x40];
} SignatureBlockEcc480; } SignatureBlockEcc480;
typedef struct { typedef struct {
u32 sig_type; ///< SignatureType_Hmac160Sha1. u32 sig_type; ///< SignatureType_Hmac160Sha1.
u8 signature[0x14]; u8 signature[0x14];
u8 padding[0x28]; u8 padding[0x28];
char issuer[0x40];
} SignatureBlockHmac160; } SignatureBlockHmac160;
#endif /* __SIGNATURE_H__ */ #endif /* __SIGNATURE_H__ */

View file

@ -151,6 +151,13 @@ void tikConvertPersonalizedTicketToCommonTicket(Ticket *tik)
bool dev_cert = false; bool dev_cert = false;
TikCommonBlock *tik_common_blk = NULL; TikCommonBlock *tik_common_blk = NULL;
SignatureBlockRsa4096 *sig_rsa_4096 = NULL;
SignatureBlockRsa2048 *sig_rsa_2048 = NULL;
SignatureBlockEcc480 *sig_ecc_480 = NULL;
SignatureBlockHmac160 *sig_hmac_160 = NULL;
char *sig_issuer = NULL;
tik_common_blk = tikGetCommonBlockFromTicket(tik); tik_common_blk = tikGetCommonBlockFromTicket(tik);
if (!tik_common_blk || tik_common_blk->titlekey_type != TikTitleKeyType_Personalized) return; if (!tik_common_blk || tik_common_blk->titlekey_type != TikTitleKeyType_Personalized) return;
@ -158,28 +165,36 @@ void tikConvertPersonalizedTicketToCommonTicket(Ticket *tik)
{ {
case TikType_SigRsa4096: case TikType_SigRsa4096:
tik->size = sizeof(TikSigRsa4096); tik->size = sizeof(TikSigRsa4096);
memset(tik->data + 4, 0xFF, MEMBER_SIZE(SignatureBlockRsa4096, signature)); sig_rsa_4096 = (SignatureBlockRsa4096*)tik->data;
memset(sig_rsa_4096->signature, 0xFF, sizeof(sig_rsa_4096->signature));
sig_issuer = sig_rsa_4096->issuer;
break; break;
case TikType_SigRsa2048: case TikType_SigRsa2048:
tik->size = sizeof(TikSigRsa2048); tik->size = sizeof(TikSigRsa2048);
memset(tik->data + 4, 0xFF, MEMBER_SIZE(SignatureBlockRsa2048, signature)); sig_rsa_2048 = (SignatureBlockRsa2048*)tik->data;
memset(sig_rsa_2048->signature, 0xFF, sizeof(sig_rsa_2048->signature));
sig_issuer = sig_rsa_2048->issuer;
break; break;
case TikType_SigEcc480: case TikType_SigEcc480:
tik->size = sizeof(TikSigEcc480); tik->size = sizeof(TikSigEcc480);
memset(tik->data + 4, 0xFF, MEMBER_SIZE(SignatureBlockEcc480, signature)); sig_ecc_480 = (SignatureBlockEcc480*)tik->data;
memset(sig_ecc_480->signature, 0xFF, sizeof(sig_ecc_480->signature));
sig_issuer = sig_ecc_480->issuer;
break; break;
case TikType_SigHmac160: case TikType_SigHmac160:
tik->size = sizeof(TikSigHmac160); tik->size = sizeof(TikSigHmac160);
memset(tik->data + 4, 0xFF, MEMBER_SIZE(SignatureBlockHmac160, signature)); sig_hmac_160 = (SignatureBlockHmac160*)tik->data;
memset(sig_hmac_160->signature, 0xFF, sizeof(sig_hmac_160->signature));
sig_issuer = sig_hmac_160->issuer;
break; break;
default: default:
break; break;
} }
dev_cert = (strstr(tik_common_blk->issuer, "CA00000004") != NULL); dev_cert = (strstr(sig_issuer, "CA00000004") != NULL);
memset(tik_common_blk->issuer, 0, sizeof(tik_common_blk->issuer)); memset(sig_issuer, 0, MEMBER_SIZE(SignatureBlockRsa4096, issuer));
sprintf(tik_common_blk->issuer, "Root-CA%08X-XS00000020", dev_cert ? 4 : 3); sprintf(sig_issuer, "Root-CA%08X-XS00000020", dev_cert ? 4 : 3);
memset(tik_common_blk->titlekey_block, 0, sizeof(tik_common_blk->titlekey_block)); memset(tik_common_blk->titlekey_block, 0, sizeof(tik_common_blk->titlekey_block));
memcpy(tik_common_blk->titlekey_block, tik->enc_titlekey, 0x10); memcpy(tik_common_blk->titlekey_block, tik->enc_titlekey, 0x10);

View file

@ -47,13 +47,13 @@ typedef enum {
TikLicenseType_Service = 5 TikLicenseType_Service = 5
} TikLicenseType; } TikLicenseType;
typedef struct { typedef enum {
u8 preinstallation : 1; TikPropertyMask_PreInstallation = BIT(0),
u8 shared_title : 1; TikPropertyMask_SharedTitle = BIT(1),
u8 all_contents : 1; TikPropertyMask_AllContents = BIT(2),
u8 device_link_independent : 1; TikPropertyMask_DeviceLinkIndepedent = BIT(3),
u8 _volatile : 1; TikPropertyMask_Volatile = BIT(4),
u8 elicense_required : 1; TikPropertyMask_ELicenseRequired = BIT(5)
} TikPropertyMask; } TikPropertyMask;
typedef enum { typedef enum {
@ -67,14 +67,13 @@ typedef enum {
/// Placed after the ticket signature block. /// Placed after the ticket signature block.
typedef struct { typedef struct {
char issuer[0x40];
u8 titlekey_block[0x100]; u8 titlekey_block[0x100];
u8 format_version; u8 format_version;
u8 titlekey_type; ///< TikTitleKeyType. u8 titlekey_type; ///< TikTitleKeyType.
u16 ticket_version; u16 ticket_version;
u8 license_type; ///< TikLicenseType. u8 license_type; ///< TikLicenseType.
u8 key_generation; u8 key_generation;
TikPropertyMask property_mask; u8 property_mask; ///< TikPropertyMask.
u8 reserved_1[0x9]; u8 reserved_1[0x9];
u64 ticket_id; u64 ticket_id;
u64 device_id; u64 device_id;