Files
Project_CTR/ctrtool/exefs.h
T
2017-06-06 12:44:12 +08:00

61 lines
1.6 KiB
C

#ifndef _EXEFS_H_
#define _EXEFS_H_
#include "types.h"
#include "info.h"
#include "ctr.h"
#include "filepath.h"
#include "settings.h"
typedef struct
{
u8 name[8];
u8 offset[4];
u8 size[4];
} exefs_sectionheader;
typedef struct
{
exefs_sectionheader section[8];
u8 reserved[0x80];
u8 hashes[8][0x20];
} exefs_header;
typedef struct
{
FILE* file;
settings* usersettings;
u8 titleid[8];
u8 counter[16];
u8 key[2][16];
u64 offset;
u64 size;
exefs_header header;
ctr_aes_context aes;
ctr_sha256_context sha;
int hashcheck[8];
int compressedflag;
int encrypted;
} exefs_context;
void exefs_init(exefs_context* ctx);
void exefs_set_file(exefs_context* ctx, FILE* file);
void exefs_set_offset(exefs_context* ctx, u64 offset);
void exefs_set_size(exefs_context* ctx, u64 size);
void exefs_set_usersettings(exefs_context* ctx, settings* usersettings);
void exefs_set_titleid(exefs_context* ctx, u8 titleid[8]);
void exefs_set_counter(exefs_context* ctx, u8 counter[16]);
void exefs_set_compressedflag(exefs_context* ctx, int compressedflag);
void exefs_set_keys(exefs_context* ctx, u8 key[16], u8 special_key[16]);
void exefs_set_encrypted(exefs_context* ctx, u32 encrypted);
void exefs_read_header(exefs_context* ctx, u32 flags);
void exefs_calculate_hash(exefs_context* ctx, u8 hash[32]);
void exefs_process(exefs_context* ctx, u32 actions);
void exefs_print(exefs_context* ctx);
void exefs_save(exefs_context* ctx, u32 index, u32 flags);
int exefs_verify(exefs_context* ctx, u32 index, u32 flags);
void exefs_determine_key(exefs_context* ctx, u32 actions);
#endif // _EXEFS_H_