summaryrefslogtreecommitdiffstats
path: root/src/tss.c
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2012-07-17 16:54:50 +0200
committerGravatar Nikias Bassen2012-07-17 16:54:50 +0200
commitb51e3e5ae1de84ae6d16c933318689b6afcd1354 (patch)
tree27d88989b0cb0cc943119a5e5c650d7d33ca4e84 /src/tss.c
parent4a89ce076e22a8d20648a07faf585ab3210179b0 (diff)
downloadidevicerestore-b51e3e5ae1de84ae6d16c933318689b6afcd1354.tar.gz
idevicerestore-b51e3e5ae1de84ae6d16c933318689b6afcd1354.tar.bz2
tss: Rearrange TSS request keys and add missing baseband hash keys
Diffstat (limited to 'src/tss.c')
-rw-r--r--src/tss.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/tss.c b/src/tss.c
index c876fca..bcd5a7d 100644
--- a/src/tss.c
+++ b/src/tss.c
@@ -232,14 +232,6 @@ plist_t tss_create_baseband_request(plist_t build_identity, uint64_t ecid, uint6
plist_dict_insert_item(tss_request, "ApProductionMode", plist_new_bool(1));
plist_dict_insert_item(tss_request, "ApSecurityDomain", plist_new_uint(security_domain));
plist_dict_insert_item(tss_request, "BasebandFirmware", plist_copy(bbfw_node));
- plist_dict_insert_item(tss_request, "BbChipID", plist_new_uint(bb_chip_id));
- plist_dict_insert_item(tss_request, "BbGoldCertId", plist_new_uint(bb_cert_id));
- if (bb_nonce && (bb_nonce_size > 0)) {
- plist_dict_insert_item(tss_request, "BbNonce", plist_new_data(bb_nonce, bb_nonce_size));
- }
- if (bb_snum && bb_snum_size > 0) {
- plist_dict_insert_item(tss_request, "BbSNUM", plist_new_data(bb_snum, bb_snum_size));
- }
/* Used by XMM 6180/GSM */
plist_t bb_node = NULL;
@@ -252,6 +244,29 @@ plist_t tss_create_baseband_request(plist_t build_identity, uint64_t ecid, uint6
bb_node = NULL;
/* Used by Qualcomm MDM6610 */
+ bb_node = plist_dict_get_item(build_identity, "BbActivationManifestKeyHash");
+ if (bb_node && plist_get_node_type(bb_node) == PLIST_DATA) {
+ plist_dict_insert_item(tss_request, "BbActivationManifestKeyHash", plist_copy(bb_node));
+ } else {
+ error("WARNING: Unable to find BbActivationManifestKeyHash node\n");
+ }
+ bb_node = NULL;
+
+ bb_node = plist_dict_get_item(build_identity, "BbCalibrationManifestKeyHash");
+ if (bb_node && plist_get_node_type(bb_node) == PLIST_DATA) {
+ plist_dict_insert_item(tss_request, "BbCalibrationManifestKeyHash", plist_copy(bb_node));
+ } else {
+ error("WARNING: Unable to find BbCalibrationManifestKeyHash node\n");
+ }
+ bb_node = NULL;
+
+ plist_dict_insert_item(tss_request, "BbChipID", plist_new_uint(bb_chip_id));
+ plist_dict_insert_item(tss_request, "BbGoldCertId", plist_new_uint(bb_cert_id));
+
+ if (bb_nonce && (bb_nonce_size > 0)) {
+ plist_dict_insert_item(tss_request, "BbNonce", plist_new_data(bb_nonce, bb_nonce_size));
+ }
+
bb_node = plist_dict_get_item(build_identity, "BbProvisioningManifestKeyHash");
if (bb_node && plist_get_node_type(bb_node) == PLIST_DATA) {
plist_dict_insert_item(tss_request, "BbProvisioningManifestKeyHash", plist_copy(bb_node));
@@ -260,6 +275,10 @@ plist_t tss_create_baseband_request(plist_t build_identity, uint64_t ecid, uint6
}
bb_node = NULL;
+ if (bb_snum && bb_snum_size > 0) {
+ plist_dict_insert_item(tss_request, "BbSNUM", plist_new_data(bb_snum, bb_snum_size));
+ }
+
plist_dict_insert_item(tss_request, "UniqueBuildID", plist_new_data(unique_build_data, unique_build_size));
free(unique_build_data);