mirror of https://github.com/zeldaret/tp
139 lines
3.0 KiB
C
139 lines
3.0 KiB
C
#ifndef _REVOLUTION_ESP_H_
|
|
#define _REVOLUTION_ESP_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <revolution/types.h>
|
|
#include <revolution/private/iostypes.h>
|
|
|
|
typedef u32 ESId;
|
|
typedef u32 ESContentId;
|
|
typedef u64 ESTitleId;
|
|
typedef u64 ESTicketId;
|
|
typedef u8 ESVersion;
|
|
typedef u16 ESTitleVersion;
|
|
typedef ESTitleId ESSysVersion;
|
|
typedef u32 ESTitleType;
|
|
typedef u16 ESContentType;
|
|
typedef u8 ESTmdReserved[62];
|
|
typedef u8 ESTicketReserved[48];
|
|
typedef u8 ESSysAccessMask[2];
|
|
typedef u8 ESCidxMask[64];
|
|
|
|
#pragma pack(push, 4)
|
|
|
|
typedef struct {
|
|
ESVersion version;
|
|
ESSysVersion sysVersion;
|
|
ESTitleId titleId;
|
|
ESTitleType type;
|
|
u16 groupId;
|
|
ESTmdReserved reserved;
|
|
ESTitleVersion titleVersion;
|
|
u16 numContents;
|
|
} ESTmdViewHeader;
|
|
|
|
typedef struct {
|
|
ESContentId cid;
|
|
u16 index;
|
|
ESContentType type;
|
|
u64 size;
|
|
} ESCmdView;
|
|
|
|
typedef struct {
|
|
u32 code;
|
|
u32 limit;
|
|
} ESLpEntry;
|
|
|
|
typedef struct {
|
|
ESVersion version;
|
|
ESTicketId ticketID;
|
|
ESId devID;
|
|
ESTitleId titleID;
|
|
ESSysAccessMask sysAccessMask;
|
|
u16 ticketVer;
|
|
u32 accTitleID;
|
|
u32 accTitleMask;
|
|
u8 license;
|
|
ESTicketReserved reserved;
|
|
u8 audit;
|
|
ESCidxMask cidxMask;
|
|
ESLpEntry limits[8];
|
|
} ESTicketView;
|
|
|
|
typedef struct {
|
|
ESTmdViewHeader head;
|
|
ESCmdView contents[512];
|
|
} ESTmdView;
|
|
|
|
typedef struct {
|
|
ESContentId cid;
|
|
u16 index;
|
|
ESContentType type;
|
|
u64 size;
|
|
IOSCHash hash;
|
|
} ESContentMeta;
|
|
|
|
typedef struct {
|
|
ESVersion version;
|
|
ESVersion caCrlVersion;
|
|
ESVersion signerCrlVersion;
|
|
ESSysVersion sysVersion;
|
|
ESTitleId titleId;
|
|
ESTitleType type;
|
|
u16 groupId;
|
|
ESTmdReserved reserved;
|
|
u32 accessRights;
|
|
ESTitleVersion titleVersion;
|
|
u16 numContents;
|
|
u16 bootIndex;
|
|
} ESTitleMetaHeader;
|
|
|
|
typedef struct {
|
|
IOSCSigRsa2048 sig;
|
|
ESTitleMetaHeader head;
|
|
ESContentMeta contents[512];
|
|
} ESTitleMeta;
|
|
|
|
typedef struct {
|
|
IOSCSigRsa2048 sig;
|
|
IOSCEccPublicKey serverPubKey;
|
|
ESVersion version;
|
|
ESVersion caCrlVersion;
|
|
ESVersion signerCrlVersion;
|
|
IOSCAesKey titleKey;
|
|
ESTicketId ticketId;
|
|
ESId deviceId;
|
|
ESTitleId titleId;
|
|
ESSysAccessMask sysAccessMask;
|
|
u16 ticketVersion;
|
|
u32 accessTitleId;
|
|
u32 accessTitleMask;
|
|
u8 licenseType;
|
|
ESTicketReserved reserved;
|
|
u8 audit;
|
|
ESCidxMask cidxMask;
|
|
ESLpEntry limits[8];
|
|
} ESTicket;
|
|
|
|
#pragma pack(pop)
|
|
|
|
s32 ESP_InitLib(void);
|
|
s32 ESP_CloseLib(void);
|
|
s32 ESP_LaunchTitle(u64 titleID, ESTicketView* pTicketView);
|
|
s32 ESP_GetTicketViews(ESTitleId titleId, ESTicketView* ticketViewList, u32* ticketViewCnt);
|
|
s32 ESP_DiGetTicketView(const void* ticket, ESTicketView* ticketView);
|
|
s32 ESP_DiGetTmd(ESTitleMeta* tmd, u32* tmdSize);
|
|
s32 ESP_GetTmdView(ESTitleId titleId, ESTmdView* tmdView, u32* size);
|
|
s32 ESP_GetDataDir(ESTitleId titleId, char* dataDir);
|
|
s32 ESP_GetTitleId(ESTitleId* titleId);
|
|
s32 ESP_GetConsumption(ESTicketId ticketId, ESLpEntry* entries, u32* nEntries);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _REVOLUTION_ESP_H_
|