summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2025-03-25 00:03:42 +0100
committerGravatar Nikias Bassen2025-03-27 01:52:20 +0100
commita5905b7f905fc3cc83033ebd963f0dcba071e512 (patch)
treeb56349c9e9bf8ee9928e8e075f4efa1c5b38ca5b /src
parent2ee5021f36a26f7344b63d3321cda78899edc319 (diff)
downloadidevicerestore-a5905b7f905fc3cc83033ebd963f0dcba071e512.tar.gz
idevicerestore-a5905b7f905fc3cc83033ebd963f0dcba071e512.tar.bz2
Fix iPhone 16e restore from normal mode
Because of the new Apple baseband the initial TSS request won't succeed when restoring from normal mode due to missing data for a @BBTicket. So now if the baseband information is missing, we don't try to add BBTicket data at all, which will make it work for iPhone 16e devices.
Diffstat (limited to 'src')
-rw-r--r--src/idevicerestore.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/idevicerestore.c b/src/idevicerestore.c
index a61409a..9911e9d 100644
--- a/src/idevicerestore.c
+++ b/src/idevicerestore.c
@@ -2406,18 +2406,20 @@ int get_tss_response(struct idevicerestore_client_t* client, plist_t build_ident
plist_dict_copy_uint(parameters, pinfo, "BbGoldCertId", "CertID");
plist_dict_copy_data(parameters, pinfo, "BbSNUM", "ChipSerialNo");
- /* add baseband parameters */
- tss_request_add_baseband_tags(request, parameters, NULL);
-
- plist_dict_copy_uint(parameters, pinfo, "eUICC,ChipID", "EUICCChipID");
- if (plist_dict_get_uint(parameters, "eUICC,ChipID") >= 5) {
- plist_dict_copy_data(parameters, pinfo, "eUICC,EID", "EUICCCSN");
- plist_dict_copy_data(parameters, pinfo, "eUICC,RootKeyIdentifier", "EUICCCertIdentifier");
- plist_dict_copy_data(parameters, pinfo, "EUICCGoldNonce", NULL);
- plist_dict_copy_data(parameters, pinfo, "EUICCMainNonce", NULL);
-
- /* add vinyl parameters */
- tss_request_add_vinyl_tags(request, parameters, NULL);
+ if (plist_dict_get_item(parameters, "BbSNUM")) {
+ /* add baseband parameters */
+ tss_request_add_baseband_tags(request, parameters, NULL);
+
+ plist_dict_copy_uint(parameters, pinfo, "eUICC,ChipID", "EUICCChipID");
+ if (plist_dict_get_uint(parameters, "eUICC,ChipID") >= 5) {
+ plist_dict_copy_data(parameters, pinfo, "eUICC,EID", "EUICCCSN");
+ plist_dict_copy_data(parameters, pinfo, "eUICC,RootKeyIdentifier", "EUICCCertIdentifier");
+ plist_dict_copy_data(parameters, pinfo, "EUICCGoldNonce", NULL);
+ plist_dict_copy_data(parameters, pinfo, "EUICCMainNonce", NULL);
+
+ /* add vinyl parameters */
+ tss_request_add_vinyl_tags(request, parameters, NULL);
+ }
}
}
client->firmware_preflight_info = pinfo;