Files
Project_CTR/tik.h
T
2014-03-10 10:30:00 +08:00

80 lines
1.7 KiB
C

#ifndef _TIK_H_
#define _TIK_H_
static const unsigned char normal_static_ticket_data[0x30] =
{
0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0xAC,
0x00, 0x00, 0x00, 0x14, 0x00, 0x01, 0x00, 0x14,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84,
0x00, 0x00, 0x00, 0x84, 0x00, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};
/*
static const unsigned char system_static_ticket_data[0x30] =
{
0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0xAC,
0x00, 0x00, 0x00, 0x14, 0x00, 0x01, 0x00, 0x14,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84,
0x00, 0x00, 0x00, 0x84, 0x00, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
};
*/
typedef enum
{
lic_Permanent = 0,
lic_Demo = 1,
lic_Trial = 2,
lic_Rental = 3,
lic_Subscription = 4,
lic_Service = 5,
lic_Mask = 15
} ticket_license_type;
typedef enum
{
right_Permanent = 1,
right_Subscription = 2,
right_Content = 3,
right_ContentConsumption = 4,
right_AccessTitle = 5
} ticket_item_rights;
typedef struct
{
u8 sig_type[4];
u8 data[0x100];
u8 padding[0x3C];
} TicketSignatureStruct;
typedef struct
{
u8 Issuer[0x40];
u8 ECDH[0x3c];
u8 TicketFormatVersion;
u8 ca_crl_version;
u8 signer_crl_version;
u8 EncryptedTitleKey[0x10];
u8 unknown_0;
u8 TicketID[8];
u8 DeviceID[4];
u8 TitleID[8];
u8 unknown_1[2];
u8 TicketVersion[2];
u8 unused_0[8];
u8 unused_1;
u8 CommonKeyID;
u8 unused_2[0x2F];
u8 unknown_2;
u8 unused_3[0x82];
u8 StaticData[0x30];
u8 unused_4[0x7C];
} TicketStruct;
#endif
// Prototypes
int BuildTicket(cia_settings *ciaset);
int CryptTitleKey(u8 *EncTitleKey, u8 *DecTitleKey, u8 *TitleID, keys_struct *keys, u8 mode);