feat(android): implement private Rust storage runtime (#90)
Dependency security audit / rustsec (push) Failing after 23s

This commit is contained in:
hugo committed 2026-10-08 14:36:05 +02:00
1 parent 180851087b
commit 874c8139a4
36 files changed
+2848 -39

No files matched your search

@@ -61,6 +61,33 @@ enum MobileContractProbe {
}
let request = try validateMobileCredentialRequest(request: MobileCredentialRequest(requestId: "opaque", package: "de.example.app", signingCertificateSha256: String(repeating: "A", count: 64), origins: ["https://EXAMPLE.test:443/"]))
precondition(request.origins == ["https://example.test"])
print("Swift native contract: fixtures/icons, callbacks, large payload, redaction, cancellation and concurrency passed")
do { try privateStorageProbe() }
catch MobilePrivateStorageFfiError.Failed(let kind) {
print("Swift private storage failed: \(kind)")
exit(1)
}
print("Swift native contract: fixtures/icons, callbacks, large payload, redaction, cancellation, concurrency and private storage passed")
}
static func privateStorageProbe() throws {
let root = URL(fileURLWithPath: "/private/tmp").appendingPathComponent(UUID().uuidString)
defer { try? FileManager.default.removeItem(at: root) }
for name in ["files", "no-backup", "cache"] {
try FileManager.default.createDirectory(at: root.appendingPathComponent(name), withIntermediateDirectories: true)
}
let directories = MobilePrivateDirectories(
files: root.appendingPathComponent("files").path,
noBackup: root.appendingPathComponent("no-backup").path,
cache: root.appendingPathComponent("cache").path
)
precondition(!String(reflecting: directories).contains(root.path))
let storage = try openMobilePrivateRuntime(directories: directories)
precondition(storage.status().version == 1 && !storage.status().configured)
precondition(storage.shell().pages.first?.state == .empty)
precondition(!String(reflecting: storage.layout()).contains(root.path))
try storage.clearDisposableCache()
let recreated = try openMobilePrivateRuntime(directories: directories)
precondition(recreated.status() == storage.status())
precondition(recreated.layout() == storage.layout())
}
}