Add image mounting functions for RSD providers

This commit is contained in:
Jackson Coxson
2026-03-30 15:46:14 -06:00
parent 8c956d2830
commit e733dd0db2
4 changed files with 363 additions and 0 deletions
@@ -69,6 +69,28 @@ class MobileImageMounter {
plist_t info_plist,
uint64_t unique_chip_id,
std::function<void(size_t, size_t)>& lambda);
Result<void, FfiError> mount_personalized_rsd(AdapterHandle* adapter,
RsdHandshakeHandle* handshake,
const uint8_t* image_data,
size_t image_size,
const uint8_t* trust_cache_data,
size_t trust_cache_size,
const uint8_t* build_manifest_data,
size_t build_manifest_size,
plist_t info_plist,
uint64_t unique_chip_id);
Result<void, FfiError>
mount_personalized_with_callback_rsd(AdapterHandle* adapter,
RsdHandshakeHandle* handshake,
const uint8_t* image_data,
size_t image_size,
const uint8_t* trust_cache_data,
size_t trust_cache_size,
const uint8_t* build_manifest_data,
size_t build_manifest_size,
plist_t info_plist,
uint64_t unique_chip_id,
std::function<void(size_t, size_t)>& lambda);
// RAII / moves
~MobileImageMounter() noexcept = default;
+54
View File
@@ -253,4 +253,58 @@ MobileImageMounter::mount_personalized_with_callback(Provider& provider,
return e ? Result<void, FfiError>(Err(e)) : Result<void, FfiError>(Ok());
}
Result<void, FfiError> MobileImageMounter::mount_personalized_rsd(AdapterHandle* adapter,
RsdHandshakeHandle* handshake,
const uint8_t* image_data,
size_t image_size,
const uint8_t* trust_cache_data,
size_t trust_cache_size,
const uint8_t* build_manifest_data,
size_t build_manifest_size,
plist_t info_plist,
uint64_t unique_chip_id) {
FfiError e(::image_mounter_mount_personalized_rsd(this->raw(),
adapter,
handshake,
image_data,
image_size,
trust_cache_data,
trust_cache_size,
build_manifest_data,
build_manifest_size,
info_plist,
unique_chip_id));
return e ? Result<void, FfiError>(Err(e)) : Result<void, FfiError>(Ok());
}
Result<void, FfiError> MobileImageMounter::mount_personalized_with_callback_rsd(
AdapterHandle* adapter,
RsdHandshakeHandle* handshake,
const uint8_t* image_data,
size_t image_size,
const uint8_t* trust_cache_data,
size_t trust_cache_size,
const uint8_t* build_manifest_data,
size_t build_manifest_size,
plist_t info_plist,
uint64_t unique_chip_id,
std::function<void(size_t, size_t)>& lambda) {
FfiError e(::image_mounter_mount_personalized_with_callback_rsd(this->raw(),
adapter,
handshake,
image_data,
image_size,
trust_cache_data,
trust_cache_size,
build_manifest_data,
build_manifest_size,
info_plist,
unique_chip_id,
progress_trampoline,
&lambda /* context */));
return e ? Result<void, FfiError>(Err(e)) : Result<void, FfiError>(Ok());
}
} // namespace IdeviceFFI