summaryrefslogtreecommitdiffstats
path: root/wii_tik.c
diff options
context:
space:
mode:
Diffstat (limited to 'wii_tik.c')
-rw-r--r--wii_tik.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/wii_tik.c b/wii_tik.c
new file mode 100644
index 0000000..ca36e6c
--- /dev/null
+++ b/wii_tik.c
@@ -0,0 +1,56 @@
+/**
+ * wii_tik.c
+ */
+
+#include "wii_tik.h"
+
+void tik_read(FILE *f, wii_tik *tik) {
+ fread(tik, sizeof(wii_tik), 1, f);
+
+ /* convert to big endian */
+ tik->sig_type = be32((u8*)&tik->sig_type);
+ tik->ticket_id = be64((u8*)&tik->ticket_id);
+ tik->console_id = be32((u8*)&tik->console_id);
+ tik->title_category = be32((u8*)&tik->title_category);
+ tik->bought_dlc_contents = be16((u8*)&tik->bought_dlc_contents);
+ tik->unk7 = be16((u8*)&tik->unk7);
+ tik->has_time_limit = be32((u8*)&tik->has_time_limit);
+ tik->time_limit_sec = be32((u8*)&tik->time_limit_sec);
+}
+
+void print_tik(wii_tik *tik) {
+ u32 i;
+
+ printf("- ticket\n");
+ printf("sig_type : %08x (%s)\n", tik->sig_type, (tik->sig_type == RSA_2048 ? "RSA_2048": "RSA_4096"));
+ printf("signature :\n");
+
+ for (i = 0; i < 0x100; i++) {
+ printf("%02x", tik->signature[i]);
+ if (((i+1)%8) == 0) printf(" ");
+ if (((i+1)%16) == 0) printf("\n");
+ }
+ printf("issuer : %.64s\n", tik->issuer);
+ printf("title_key_enc : ");
+ for (i = 0; i < 0x10; i++) {
+ printf("%02x", tik->title_key_enc[i]);
+ }
+ printf("\n");
+
+ printf("unknown : %02x\n", tik->unk2);
+
+ printf("ticket_id : %016llx\n", tik->ticket_id);
+ printf("console_id : %08x\n", tik->console_id);
+ printf("title_id : %08x-%.4s\n", tik->title_category, (char*)&tik->title_id);
+
+ printf("access_mask : %04x\n", tik->access_mask);
+ printf("bought_dlc_contents: %04x\n", tik->bought_dlc_contents);
+
+ printf("unknown : %016llx\n", tik->unk4);
+ printf("common_key_index : %02x\n", tik->common_key_index);
+
+ printf("unknown : %04x\n", tik->unk7);
+
+ printf("has_time_limit : %08x\n", tik->has_time_limit);
+ printf("time_limit_sec : %08x\n", tik->time_limit_sec);
+}