Codesign libplist.

Also, increase retries of codesign keychain setup.

Bug: https://github.com/flutter/flutter/issues/168342
Change-Id: I57e5aa8d22292ffe08ee984d944c27237b1007c2
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/65929
Reviewed-by: Matan Lurey <matanl@google.com>
Commit-Queue: Victoria Ashworth <vashworth@google.com>
diff --git a/recipe_modules/signing/api.py b/recipe_modules/signing/api.py
index 5b2e9b7..5803b04 100644
--- a/recipe_modules/signing/api.py
+++ b/recipe_modules/signing/api.py
@@ -61,7 +61,7 @@
     env = {}
     env_prefixes = {}
     self.m.retry.basic_wrap(
-        lambda timeout: self._start(env, env_prefixes), max_attempts=3
+        lambda timeout: self._start(env, env_prefixes), max_attempts=5
     )
 
     try:
diff --git a/recipe_modules/signing/examples/code_sign.expected/failing_keychain.json b/recipe_modules/signing/examples/code_sign.expected/failing_keychain.json
index f555846..1ad4b1f 100644
--- a/recipe_modules/signing/examples/code_sign.expected/failing_keychain.json
+++ b/recipe_modules/signing/examples/code_sign.expected/failing_keychain.json
@@ -1197,9 +1197,775 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "Setup codesign environment (4)"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).ensure_installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/exported_p12.encrypted",
+      "[CLEANUP]/exported_p12.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).gsutil download",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/exported_p12.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (4).cloudkms get key",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).ensure_installed (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/0325_p12password.encrypted",
+      "[CLEANUP]/0325_p12password.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).gsutil download (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/0325_p12password.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (4).cloudkms get key (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).ensure_installed (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_team_id.encrypted",
+      "[CLEANUP]/codesign_team_id.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).gsutil download (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_team_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_TEAM_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (4).cloudkms get key (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).ensure_installed (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_specific_password.encrypted",
+      "[CLEANUP]/codesign_app_specific_password.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).gsutil download (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_specific_password.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (4).cloudkms get key (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).ensure_installed (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_store_id.encrypted",
+      "[CLEANUP]/codesign_app_store_id.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (4).gsutil download (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_store_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (4).cloudkms get key (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Setup keychain (4)"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "755",
+      "RECIPE_MODULE[flutter::signing]/resources/setup_keychain.dart"
+    ],
+    "infra_step": true,
+    "name": "Setup keychain (4).Set execute permission",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "RECIPE_MODULE[flutter::signing]/resources/setup_keychain.dart"
+    ],
+    "env": {
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_1/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12",
+      "SETUP_KEYCHAIN_LOGS_PATH": "[CLEANUP]/setup_keychain_logs.txt"
+    },
+    "name": "run keychain setup script (4)",
+    "~followup_annotations": [
+      "@@@STEP_FAILURE@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/setup_keychain_logs.txt",
+      "gs://flutter_tmp_logs/0/setup_keychain_logs_00000000-0000-0000-0000-000000001340.txt"
+    ],
+    "env": {
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_1/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12",
+      "SETUP_KEYCHAIN_LOGS_PATH": "[CLEANUP]/setup_keychain_logs.txt"
+    },
+    "infra_step": true,
+    "name": "gsutil upload debug logs to 0/setup_keychain_logs_00000000-0000-0000-0000-000000001340.txt",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_tmp_logs/0/setup_keychain_logs_00000000-0000-0000-0000-000000001340.txt@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Setup codesign environment (5)"
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).ensure_installed",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/exported_p12.encrypted",
+      "[CLEANUP]/exported_p12.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).gsutil download",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/exported_p12.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (5).cloudkms get key",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).ensure_installed (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/0325_p12password.encrypted",
+      "[CLEANUP]/0325_p12password.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).gsutil download (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/0325_p12password.encrypted",
+      "-output",
+      "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (5).cloudkms get key (2)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).ensure_installed (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_team_id.encrypted",
+      "[CLEANUP]/codesign_team_id.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).gsutil download (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_team_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_TEAM_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (5).cloudkms get key (3)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).ensure_installed (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_specific_password.encrypted",
+      "[CLEANUP]/codesign_app_specific_password.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).gsutil download (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_specific_password.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (5).cloudkms get key (4)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "cipd",
+      "ensure",
+      "-root",
+      "[START_DIR]/cloudkms",
+      "-ensure-file",
+      "infra/tools/luci/cloudkms/${platform} latest",
+      "-max-threads",
+      "0",
+      "-json-output",
+      "/path/to/tmp/json"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).ensure_installed (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@      {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-latest----------\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/cloudkms/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_configs/codesign_app_store_id.encrypted",
+      "[CLEANUP]/codesign_app_store_id.encrypted"
+    ],
+    "infra_step": true,
+    "name": "Setup codesign environment (5).gsutil download (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[START_DIR]/cloudkms/cloudkms",
+      "decrypt",
+      "-input",
+      "[CLEANUP]/codesign_app_store_id.encrypted",
+      "-output",
+      "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "projects/flutter-infra-staging/locations/global/keyRings/luci/cryptoKeys/flutter-infra"
+    ],
+    "name": "Setup codesign environment (5).cloudkms get key (5)",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "Setup keychain (5)"
+  },
+  {
+    "cmd": [
+      "chmod",
+      "755",
+      "RECIPE_MODULE[flutter::signing]/resources/setup_keychain.dart"
+    ],
+    "infra_step": true,
+    "name": "Setup keychain (5).Set execute permission",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "RECIPE_MODULE[flutter::signing]/resources/setup_keychain.dart"
+    ],
+    "env": {
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_1/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12",
+      "SETUP_KEYCHAIN_LOGS_PATH": "[CLEANUP]/setup_keychain_logs.txt"
+    },
+    "name": "run keychain setup script (5)",
+    "~followup_annotations": [
+      "@@@STEP_FAILURE@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "-r",
+      "[CLEANUP]/setup_keychain_logs.txt",
+      "gs://flutter_tmp_logs/0/setup_keychain_logs_00000000-0000-0000-0000-000000001343.txt"
+    ],
+    "env": {
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_1/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12",
+      "SETUP_KEYCHAIN_LOGS_PATH": "[CLEANUP]/setup_keychain_logs.txt"
+    },
+    "infra_step": true,
+    "name": "gsutil upload debug logs to 0/setup_keychain_logs_00000000-0000-0000-0000-000000001343.txt",
+    "~followup_annotations": [
+      "@@@STEP_LINK@gsutil.upload@https://console.cloud.google.com/storage/browser/flutter_tmp_logs/0/setup_keychain_logs_00000000-0000-0000-0000-000000001343.txt@@@"
+    ]
+  },
+  {
     "failure": {
       "failure": {},
-      "humanReason": "Step('run keychain setup script (3)') (retcode: 1)"
+      "humanReason": "Step('run keychain setup script (5)') (retcode: 1)"
     },
     "name": "$result"
   }
diff --git a/recipe_modules/signing/examples/code_sign.py b/recipe_modules/signing/examples/code_sign.py
index dee1dab..4106f38 100644
--- a/recipe_modules/signing/examples/code_sign.py
+++ b/recipe_modules/signing/examples/code_sign.py
@@ -39,5 +39,7 @@
       api.step_data('run keychain setup script', retcode=1),
       api.step_data('run keychain setup script (2)', retcode=1),
       api.step_data('run keychain setup script (3)', retcode=1),
+      api.step_data('run keychain setup script (4)', retcode=1),
+      api.step_data('run keychain setup script (5)', retcode=1),
       status='FAILURE'
   )
diff --git a/recipe_modules/signing/resources/setup_keychain.dart b/recipe_modules/signing/resources/setup_keychain.dart
index 023d94f..b210e5e 100755
--- a/recipe_modules/signing/resources/setup_keychain.dart
+++ b/recipe_modules/signing/resources/setup_keychain.dart
@@ -202,7 +202,7 @@
 
   Future<void> _verifyCertWithRetries() async {
     // Verify the certificate is valid. If it isn't, check again after n seconds.
-    int sleepSeconds = 2;
+    int sleepSeconds = 3;
     for (int attempt = 0; attempt < totalRetryAttempts; attempt++) {
       final String results = _verifyCert(allowNonzero: true);
       if (!results.contains('Certificate errors') && !results.contains('Trust evaluation errors')) {
diff --git a/recipes/ios_usb_dependencies/ios_usb_dependencies_release.expected/with_codesigning.json b/recipes/ios_usb_dependencies/ios_usb_dependencies_release.expected/with_codesigning.json
index 09a7174..0891c06 100644
--- a/recipes/ios_usb_dependencies/ios_usb_dependencies_release.expected/with_codesigning.json
+++ b/recipes/ios_usb_dependencies/ios_usb_dependencies_release.expected/with_codesigning.json
@@ -628,7 +628,7 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "cp",
-      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libusbmuxd/latest_unsigned.version",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libplist/latest_unsigned.version",
       "[CLEANUP]/tmp_tmp_3/latest_unsigned.version"
     ],
     "env": {
@@ -662,6 +662,189 @@
         "hostname": "rdbhost"
       }
     },
+    "name": "gsutil download latest_unsigned.version for libplist"
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "copy",
+      "[CLEANUP]/tmp_tmp_3/latest_unsigned.version",
+      "/path/to/tmp/"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Read latest_unsigned.version for libplist",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@latest_unsigned.version@  123456  @@@",
+      "@@@STEP_LOG_LINE@latest_unsigned.version@@@@",
+      "@@@STEP_LOG_END@latest_unsigned.version@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "ls",
+      "gs://flutter_infra_release/ios-usb-dependencies/libplist/123456/libplist.zip"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil list (3)"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libplist/123456/libplist.zip",
+      "[CLEANUP]/tmp_tmp_3/libplist.zip"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil download [CLEANUP]/tmp_tmp_3/libplist.zip"
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libusbmuxd/latest_unsigned.version",
+      "[CLEANUP]/tmp_tmp_4/latest_unsigned.version"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
     "name": "gsutil download latest_unsigned.version for libusbmuxd"
   },
   {
@@ -672,7 +855,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[CLEANUP]/tmp_tmp_3/latest_unsigned.version",
+      "[CLEANUP]/tmp_tmp_4/latest_unsigned.version",
       "/path/to/tmp/"
     ],
     "env": {
@@ -755,7 +938,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil list (3)"
+    "name": "gsutil list (4)"
   },
   {
     "cmd": [
@@ -767,7 +950,7 @@
       "----",
       "cp",
       "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libusbmuxd/123456/libusbmuxd.zip",
-      "[CLEANUP]/tmp_tmp_3/libusbmuxd.zip"
+      "[CLEANUP]/tmp_tmp_4/libusbmuxd.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -800,7 +983,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil download [CLEANUP]/tmp_tmp_3/libusbmuxd.zip"
+    "name": "gsutil download [CLEANUP]/tmp_tmp_4/libusbmuxd.zip"
   },
   {
     "cmd": [
@@ -812,7 +995,7 @@
       "----",
       "cp",
       "gs://flutter_infra_release/ios-usb-dependencies/unsigned/openssl/latest_unsigned.version",
-      "[CLEANUP]/tmp_tmp_4/latest_unsigned.version"
+      "[CLEANUP]/tmp_tmp_5/latest_unsigned.version"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -855,7 +1038,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[CLEANUP]/tmp_tmp_4/latest_unsigned.version",
+      "[CLEANUP]/tmp_tmp_5/latest_unsigned.version",
       "/path/to/tmp/"
     ],
     "env": {
@@ -938,7 +1121,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil list (4)"
+    "name": "gsutil list (5)"
   },
   {
     "cmd": [
@@ -950,7 +1133,7 @@
       "----",
       "cp",
       "gs://flutter_infra_release/ios-usb-dependencies/unsigned/openssl/123456/openssl.zip",
-      "[CLEANUP]/tmp_tmp_4/openssl.zip"
+      "[CLEANUP]/tmp_tmp_5/openssl.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -983,7 +1166,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil download [CLEANUP]/tmp_tmp_4/openssl.zip"
+    "name": "gsutil download [CLEANUP]/tmp_tmp_5/openssl.zip"
   },
   {
     "cmd": [
@@ -995,7 +1178,7 @@
       "----",
       "cp",
       "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libimobiledevice/latest_unsigned.version",
-      "[CLEANUP]/tmp_tmp_5/latest_unsigned.version"
+      "[CLEANUP]/tmp_tmp_6/latest_unsigned.version"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -1038,7 +1221,7 @@
       "--json-output",
       "/path/to/tmp/json",
       "copy",
-      "[CLEANUP]/tmp_tmp_5/latest_unsigned.version",
+      "[CLEANUP]/tmp_tmp_6/latest_unsigned.version",
       "/path/to/tmp/"
     ],
     "env": {
@@ -1121,7 +1304,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil list (5)"
+    "name": "gsutil list (6)"
   },
   {
     "cmd": [
@@ -1133,7 +1316,7 @@
       "----",
       "cp",
       "gs://flutter_infra_release/ios-usb-dependencies/unsigned/libimobiledevice/123456/libimobiledevice.zip",
-      "[CLEANUP]/tmp_tmp_5/libimobiledevice.zip"
+      "[CLEANUP]/tmp_tmp_6/libimobiledevice.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -1166,7 +1349,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "gsutil download [CLEANUP]/tmp_tmp_5/libimobiledevice.zip"
+    "name": "gsutil download [CLEANUP]/tmp_tmp_6/libimobiledevice.zip"
   },
   {
     "cmd": [],
@@ -1184,7 +1367,7 @@
       "cipd",
       "ensure",
       "-root",
-      "[CLEANUP]/tmp_tmp_6",
+      "[CLEANUP]/tmp_tmp_7",
       "-ensure-file",
       "flutter/codesign/${platform} latest",
       "-max-threads",
@@ -2062,7 +2245,7 @@
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
       "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
       "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
-      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_6/codesign",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
       "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
       "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
       "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
@@ -2115,7 +2298,7 @@
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
       "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
       "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
-      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_6/codesign",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
       "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
       "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
       "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
@@ -2248,7 +2431,7 @@
   },
   {
     "cmd": [
-      "[CLEANUP]/tmp_tmp_6/codesign",
+      "[CLEANUP]/tmp_tmp_7/codesign",
       "--codesign-cert-name",
       "Developer ID Application: FLUTTER.IO LLC (S8QB4VV633)",
       "--no-dryrun",
@@ -2267,7 +2450,7 @@
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
       "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
       "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
-      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_6/codesign",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
       "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
       "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
       "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
@@ -2314,8 +2497,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "move",
-      "[CLEANUP]/tmp_tmp_3/libusbmuxd.zip",
-      "[CLEANUP]/tmp_tmp_3/unsigned_libusbmuxd.zip"
+      "[CLEANUP]/tmp_tmp_3/libplist.zip",
+      "[CLEANUP]/tmp_tmp_3/unsigned_libplist.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -2348,11 +2531,11 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Move [CLEANUP]/tmp_tmp_3/libusbmuxd.zip"
+    "name": "Move [CLEANUP]/tmp_tmp_3/libplist.zip"
   },
   {
     "cmd": [],
-    "name": "Codesign [CLEANUP]/tmp_tmp_3/unsigned_libusbmuxd.zip"
+    "name": "Codesign [CLEANUP]/tmp_tmp_3/unsigned_libplist.zip"
   },
   {
     "cmd": [
@@ -2392,14 +2575,14 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Codesign [CLEANUP]/tmp_tmp_3/unsigned_libusbmuxd.zip.unlock build keychain",
+    "name": "Codesign [CLEANUP]/tmp_tmp_3/unsigned_libplist.zip.unlock build keychain",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [
-      "[CLEANUP]/tmp_tmp_6/codesign",
+      "[CLEANUP]/tmp_tmp_7/codesign",
       "--codesign-cert-name",
       "Developer ID Application: FLUTTER.IO LLC (S8QB4VV633)",
       "--no-dryrun",
@@ -2410,15 +2593,15 @@
       "--codesign-team-id-file-path",
       "[CLEANUP]/CODESIGN_TEAM_ID",
       "--input-zip-file-path",
-      "[CLEANUP]/tmp_tmp_3/unsigned_libusbmuxd.zip",
+      "[CLEANUP]/tmp_tmp_3/unsigned_libplist.zip",
       "--output-zip-file-path",
-      "[CLEANUP]/tmp_tmp_3/libusbmuxd.zip"
+      "[CLEANUP]/tmp_tmp_3/libplist.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
       "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
       "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
-      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_6/codesign",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
       "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
       "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
       "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
@@ -2452,7 +2635,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Codesign [CLEANUP]/tmp_tmp_3/unsigned_libusbmuxd.zip.codesign Apple engine binaries",
+    "name": "Codesign [CLEANUP]/tmp_tmp_3/unsigned_libplist.zip.codesign Apple engine binaries",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -2465,8 +2648,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "move",
-      "[CLEANUP]/tmp_tmp_4/openssl.zip",
-      "[CLEANUP]/tmp_tmp_4/unsigned_openssl.zip"
+      "[CLEANUP]/tmp_tmp_4/libusbmuxd.zip",
+      "[CLEANUP]/tmp_tmp_4/unsigned_libusbmuxd.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -2499,11 +2682,11 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Move [CLEANUP]/tmp_tmp_4/openssl.zip"
+    "name": "Move [CLEANUP]/tmp_tmp_4/libusbmuxd.zip"
   },
   {
     "cmd": [],
-    "name": "Codesign [CLEANUP]/tmp_tmp_4/unsigned_openssl.zip"
+    "name": "Codesign [CLEANUP]/tmp_tmp_4/unsigned_libusbmuxd.zip"
   },
   {
     "cmd": [
@@ -2543,14 +2726,14 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Codesign [CLEANUP]/tmp_tmp_4/unsigned_openssl.zip.unlock build keychain",
+    "name": "Codesign [CLEANUP]/tmp_tmp_4/unsigned_libusbmuxd.zip.unlock build keychain",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [
-      "[CLEANUP]/tmp_tmp_6/codesign",
+      "[CLEANUP]/tmp_tmp_7/codesign",
       "--codesign-cert-name",
       "Developer ID Application: FLUTTER.IO LLC (S8QB4VV633)",
       "--no-dryrun",
@@ -2561,15 +2744,15 @@
       "--codesign-team-id-file-path",
       "[CLEANUP]/CODESIGN_TEAM_ID",
       "--input-zip-file-path",
-      "[CLEANUP]/tmp_tmp_4/unsigned_openssl.zip",
+      "[CLEANUP]/tmp_tmp_4/unsigned_libusbmuxd.zip",
       "--output-zip-file-path",
-      "[CLEANUP]/tmp_tmp_4/openssl.zip"
+      "[CLEANUP]/tmp_tmp_4/libusbmuxd.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
       "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
       "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
-      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_6/codesign",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
       "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
       "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
       "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
@@ -2603,7 +2786,7 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Codesign [CLEANUP]/tmp_tmp_4/unsigned_openssl.zip.codesign Apple engine binaries",
+    "name": "Codesign [CLEANUP]/tmp_tmp_4/unsigned_libusbmuxd.zip.codesign Apple engine binaries",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -2616,8 +2799,8 @@
       "--json-output",
       "/path/to/tmp/json",
       "move",
-      "[CLEANUP]/tmp_tmp_5/libimobiledevice.zip",
-      "[CLEANUP]/tmp_tmp_5/unsigned_libimobiledevice.zip"
+      "[CLEANUP]/tmp_tmp_5/openssl.zip",
+      "[CLEANUP]/tmp_tmp_5/unsigned_openssl.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
@@ -2650,11 +2833,11 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Move [CLEANUP]/tmp_tmp_5/libimobiledevice.zip"
+    "name": "Move [CLEANUP]/tmp_tmp_5/openssl.zip"
   },
   {
     "cmd": [],
-    "name": "Codesign [CLEANUP]/tmp_tmp_5/unsigned_libimobiledevice.zip"
+    "name": "Codesign [CLEANUP]/tmp_tmp_5/unsigned_openssl.zip"
   },
   {
     "cmd": [
@@ -2694,14 +2877,14 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Codesign [CLEANUP]/tmp_tmp_5/unsigned_libimobiledevice.zip.unlock build keychain",
+    "name": "Codesign [CLEANUP]/tmp_tmp_5/unsigned_openssl.zip.unlock build keychain",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [
-      "[CLEANUP]/tmp_tmp_6/codesign",
+      "[CLEANUP]/tmp_tmp_7/codesign",
       "--codesign-cert-name",
       "Developer ID Application: FLUTTER.IO LLC (S8QB4VV633)",
       "--no-dryrun",
@@ -2712,15 +2895,15 @@
       "--codesign-team-id-file-path",
       "[CLEANUP]/CODESIGN_TEAM_ID",
       "--input-zip-file-path",
-      "[CLEANUP]/tmp_tmp_5/unsigned_libimobiledevice.zip",
+      "[CLEANUP]/tmp_tmp_5/unsigned_openssl.zip",
       "--output-zip-file-path",
-      "[CLEANUP]/tmp_tmp_5/libimobiledevice.zip"
+      "[CLEANUP]/tmp_tmp_5/openssl.zip"
     ],
     "env": {
       "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
       "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
       "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
-      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_6/codesign",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
       "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
       "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
       "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
@@ -2754,7 +2937,158 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "Codesign [CLEANUP]/tmp_tmp_5/unsigned_libimobiledevice.zip.codesign Apple engine binaries",
+    "name": "Codesign [CLEANUP]/tmp_tmp_5/unsigned_openssl.zip.codesign Apple engine binaries",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "vpython3",
+      "-u",
+      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
+      "--json-output",
+      "/path/to/tmp/json",
+      "move",
+      "[CLEANUP]/tmp_tmp_6/libimobiledevice.zip",
+      "[CLEANUP]/tmp_tmp_6/unsigned_libimobiledevice.zip"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Move [CLEANUP]/tmp_tmp_6/libimobiledevice.zip"
+  },
+  {
+    "cmd": [],
+    "name": "Codesign [CLEANUP]/tmp_tmp_6/unsigned_libimobiledevice.zip"
+  },
+  {
+    "cmd": [
+      "security",
+      "unlock-keychain",
+      "-p",
+      "",
+      "build.keychain"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Codesign [CLEANUP]/tmp_tmp_6/unsigned_libimobiledevice.zip.unlock build keychain",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@1@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "[CLEANUP]/tmp_tmp_7/codesign",
+      "--codesign-cert-name",
+      "Developer ID Application: FLUTTER.IO LLC (S8QB4VV633)",
+      "--no-dryrun",
+      "--app-specific-password-file-path",
+      "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "--codesign-appstore-id-file-path",
+      "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "--codesign-team-id-file-path",
+      "[CLEANUP]/CODESIGN_TEAM_ID",
+      "--input-zip-file-path",
+      "[CLEANUP]/tmp_tmp_6/unsigned_libimobiledevice.zip",
+      "--output-zip-file-path",
+      "[CLEANUP]/tmp_tmp_6/libimobiledevice.zip"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "CODESIGN_APP_SPECIFIC_PASSWORD": "[CLEANUP]/CODESIGN_APP_SPECIFIC_PASSWORD",
+      "CODESIGN_APP_STORE_ID": "[CLEANUP]/CODESIGN_APP_STORE_ID",
+      "CODESIGN_PATH": "[CLEANUP]/tmp_tmp_7/codesign",
+      "CODESIGN_TEAM_ID": "[CLEANUP]/CODESIGN_TEAM_ID",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "FLUTTER_P12": "[CLEANUP]/FLUTTER_P12",
+      "FLUTTER_P12_PASSWORD": "[CLEANUP]/FLUTTER_P12_PASSWORD",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "P12_SUFFIX_FILEPATH": "[CLEANUP]/flutter.p12",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter",
+      "SETUP_KEYCHAIN_LOGS_PATH": "[CLEANUP]/setup_keychain_logs.txt"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "Codesign [CLEANUP]/tmp_tmp_6/unsigned_libimobiledevice.zip.codesign Apple engine binaries",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
@@ -2903,7 +3237,55 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "cp",
-      "[CLEANUP]/tmp_tmp_3/libusbmuxd.zip",
+      "[CLEANUP]/tmp_tmp_3/libplist.zip",
+      "gs://flutter_infra_release/ios-usb-dependencies/libplist/123456/libplist.zip"
+    ],
+    "env": {
+      "ARTIFACT_HUB_REPOSITORY": "artifactregistry://us-maven.pkg.dev/artifact-foundry-prod/maven-3p",
+      "DEPOT_TOOLS": "RECIPE_REPO[depot_tools]",
+      "GIT_BRANCH": "",
+      "LUCI_BRANCH": "",
+      "LUCI_CI": "True",
+      "LUCI_PR": "",
+      "OS": "darwin",
+      "PUB_CACHE": "[START_DIR]/.pub-cache",
+      "REVISION": "12345abcde12345abcde12345abcde12345abcde",
+      "SDK_CHECKOUT_PATH": "[START_DIR]/flutter"
+    },
+    "env_prefixes": {
+      "PATH": [
+        "[START_DIR]/flutter/bin",
+        "[START_DIR]/flutter/bin/cache/dart-sdk/bin"
+      ]
+    },
+    "infra_step": true,
+    "luci_context": {
+      "realm": {
+        "name": "dart-internal:flutter"
+      },
+      "resultdb": {
+        "current_invocation": {
+          "name": "invocations/build:8945511751514863184",
+          "update_token": "token"
+        },
+        "hostname": "rdbhost"
+      }
+    },
+    "name": "gsutil upload of libplist.zip",
+    "~followup_annotations": [
+      "@@@STEP_LINK@libplist.zip@https://storage.cloud.google.com/flutter_infra_release/ios-usb-dependencies/libplist/123456/libplist.zip@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "python3",
+      "-u",
+      "RECIPE_MODULE[depot_tools::gsutil]/resources/gsutil_smart_retry.py",
+      "--",
+      "RECIPE_REPO[depot_tools]/gsutil.py",
+      "----",
+      "cp",
+      "[CLEANUP]/tmp_tmp_4/libusbmuxd.zip",
       "gs://flutter_infra_release/ios-usb-dependencies/libusbmuxd/123456/libusbmuxd.zip"
     ],
     "env": {
@@ -2951,7 +3333,7 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "cp",
-      "[CLEANUP]/tmp_tmp_4/openssl.zip",
+      "[CLEANUP]/tmp_tmp_5/openssl.zip",
       "gs://flutter_infra_release/ios-usb-dependencies/openssl/123456/openssl.zip"
     ],
     "env": {
@@ -2999,7 +3381,7 @@
       "RECIPE_REPO[depot_tools]/gsutil.py",
       "----",
       "cp",
-      "[CLEANUP]/tmp_tmp_5/libimobiledevice.zip",
+      "[CLEANUP]/tmp_tmp_6/libimobiledevice.zip",
       "gs://flutter_infra_release/ios-usb-dependencies/libimobiledevice/123456/libimobiledevice.zip"
     ],
     "env": {
diff --git a/recipes/ios_usb_dependencies/ios_usb_dependencies_release.py b/recipes/ios_usb_dependencies/ios_usb_dependencies_release.py
index afc0911..1fbd480 100644
--- a/recipes/ios_usb_dependencies/ios_usb_dependencies_release.py
+++ b/recipes/ios_usb_dependencies/ios_usb_dependencies_release.py
@@ -150,6 +150,7 @@
       libimobiledeviceglue_package_info = _downloadPackage(
           api, 'libimobiledeviceglue'
       )
+      libplist_package_info = _downloadPackage(api, 'libplist')
       libusbmuxd_package_info = _downloadPackage(api, 'libusbmuxd')
       openssl_package_info = _downloadPackage(api, 'openssl')
       libimobiledevice_package_info = _downloadPackage(api, 'libimobiledevice')
@@ -157,6 +158,7 @@
           api, [
               ios_deploy_package_info,
               libimobiledeviceglue_package_info,
+              libplist_package_info,
               libusbmuxd_package_info,
               openssl_package_info,
               libimobiledevice_package_info,
@@ -189,11 +191,13 @@
           api.path.cleanup_dir / 'tmp_tmp_2/latest_unsigned.version',
           api.path.cleanup_dir / 'tmp_tmp_2/libimobiledeviceglue.zip',
           api.path.cleanup_dir / 'tmp_tmp_3/latest_unsigned.version',
-          api.path.cleanup_dir / 'tmp_tmp_3/libusbmuxd.zip',
+          api.path.cleanup_dir / 'tmp_tmp_3/libplist.zip',
           api.path.cleanup_dir / 'tmp_tmp_4/latest_unsigned.version',
-          api.path.cleanup_dir / 'tmp_tmp_4/openssl.zip',
+          api.path.cleanup_dir / 'tmp_tmp_4/libusbmuxd.zip',
           api.path.cleanup_dir / 'tmp_tmp_5/latest_unsigned.version',
-          api.path.cleanup_dir / 'tmp_tmp_5/libimobiledevice.zip',
+          api.path.cleanup_dir / 'tmp_tmp_5/openssl.zip',
+          api.path.cleanup_dir / 'tmp_tmp_6/latest_unsigned.version',
+          api.path.cleanup_dir / 'tmp_tmp_6/libimobiledevice.zip',
           *api.repo_util.flutter_environment_path(
               api.path.start_dir / 'flutter'
           )
@@ -207,6 +211,10 @@
           api.file.read_text(text_content=('  123456  \n\n'))
       ),
       api.step_data(
+          'Read latest_unsigned.version for libplist',
+          api.file.read_text(text_content=('  123456  \n\n'))
+      ),
+      api.step_data(
           'Read latest_unsigned.version for libusbmuxd',
           api.file.read_text(text_content=('  123456  \n\n'))
       ),