diff options
author | 2024-09-21 03:15:23 +0200 | |
---|---|---|
committer | 2024-09-21 03:15:23 +0200 | |
commit | 48350d676e9d817c8c8f1af2cd1e0006e1ad9c3b (patch) | |
tree | 26f8b5613da98df1a46ea0101da051f51024e602 /src | |
parent | d2e1c4f2ab81c419d2cbb8d921fa385a0bf0433b (diff) | |
download | idevicerestore-48350d676e9d817c8c8f1af2cd1e0006e1ad9c3b.tar.gz idevicerestore-48350d676e9d817c8c8f1af2cd1e0006e1ad9c3b.tar.bz2 |
Initial support for iPhone 16 restore
Diffstat (limited to 'src')
-rw-r--r-- | src/idevicerestore.c | 10 | ||||
-rw-r--r-- | src/img4.c | 8 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/idevicerestore.c b/src/idevicerestore.c index 36099d1..2dd7eb8 100644 --- a/src/idevicerestore.c +++ b/src/idevicerestore.c @@ -1258,6 +1258,16 @@ int idevicerestore_start(struct idevicerestore_client_t* client) error("ERROR: Unable to get SHSH blobs for this device (recovery OS Root Ticket)\n"); return -1; } + } else { + plist_t recovery_variant = plist_access_path(build_identity, 2, "Info", "RecoveryVariant"); + if (recovery_variant) { + const char* recovery_variant_str = plist_get_string_ptr(recovery_variant, NULL); + plist_t recovery_build_identity = build_manifest_get_build_identity_for_model_with_variant(client->build_manifest, client->device->hardware_model, recovery_variant_str, 1); + if (get_tss_response(client, recovery_build_identity, &client->tss_recoveryos_root_ticket) < 0) { + error("ERROR: Unable to get SHSH blobs for this device (%s)\n", recovery_variant_str); + return -1; + } + } } } @@ -441,6 +441,14 @@ int img4_stitch_component(const char* component_name, const unsigned char* compo memcpy((void*)tag, "rcio", 4); } else if (strcmp(component_name, "Ap,DCP2") == 0) { memcpy((void*)tag, "dcp2", 4); + } else if (strcmp(component_name, "Ap,RestoreSecureM3Firmware") == 0) { + memcpy((void*)tag, "rsm3", 4); + } else if (strcmp(component_name, "Ap,RestoreSecurePageTableMonitor") == 0) { + memcpy((void*)tag, "rspt", 4); + } else if (strcmp(component_name, "Ap,RestoreTrustedExecutionMonitor") == 0) { + memcpy((void*)tag, "rtrx", 4); + } else if (strcmp(component_name, "Ap,RestorecL4") == 0) { + memcpy((void*)tag, "rxcl", 4); } } |