Skip to content

Commit

Permalink
Fix timezone issue in the signature
Browse files Browse the repository at this point in the history
  • Loading branch information
Dadoum committed Oct 21, 2023
1 parent 63fca80 commit 2f06a13
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 11 deletions.
25 changes: 15 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,14 @@ I am here to help!

## How to install

Currently, the only builds available can be downloaded through GitHub Actions.

On Linux, when it will be ready, it will be as simple as installing the Flatpak on your
system, or wait for someone to package it for your distribution.

Otherwise, for every currently supported platform, there is an automated build in GitHub
Actions waiting for you — actually, that's more complicated than that, because other
architectures automated builds relied on GDC cross-compilers, but GDC does not compile the
code currently :(.
On Windows, it will get a GitHub Release with a simple executable to run.

Currently, not every built platform is functional, and Linux support is the main focus.
Currently, Windows GUI is not working, and the CLI is pretty bare-bones.

Dependencies (runtime): libimobiledevice, libplist-2.X (I attempted to support both 2.2
and 2.3). OpenSSL is currently also needed, but I plan to remove that dependency as soon
Expand Down Expand Up @@ -64,9 +63,10 @@ to add the entitlement for debugging)_
## Features

- Sideload
- Install SideStore (soon)
- iOS version range is unknown. 32-bit support is untested. Please report any issue here!!

A dedicated SideStore installer feature is planned with automated pairing file management.

## Notes on platform support

### Linux
Expand All @@ -76,7 +76,7 @@ familiar with GTK+. I made it in plain code because I really dislike GTK Builder

### Windows

Windows version uses a Win32 frontend. On Windows 11, it looks old and legacy. The current
Windows version uses a Win32 frontend. On Windows 11, it looks terrible. The current
state of GUI libraries on Windows is rather unsatisfying: we have one old well-supported
library across the major versions of Windows, Win32, the one I am using, and then we have
a lot of unsuccessful attempts to supplant it, and finally we have WinUI 3, which looks
Expand All @@ -86,12 +86,17 @@ supported everywhere (Windows 10+ only). This is why I used DFL, which is a Wind
like wrapper of Win32 APIs.

**Requirements:** a USB muxer, which is generally iTunes or anything
distirbuting AppleMobileDevice. netmuxd should work too. OpenSSL is also required,
unfortunately.
distributing AppleMobileDevice. netmuxd should work too if you can't install it for some
reason. OpenSSL is also required for networking, unfortunately.

### macOS

It doesn't work yet. Even less with Apple Silicon.
On Apple Silicon, it does not work at all.

On Intel macs, there is only a CLI tool.

Support is feasible but low-priority as macOS generally has more tools to install and
manage iOS apps.

## Acknowledgements and references

Expand Down
3 changes: 2 additions & 1 deletion source/sideload/macho.d
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import core.stdc.stdint;
import std.algorithm;
import std.algorithm.iteration;
import std.bitmanip; alias readBE = std.bitmanip.bigEndianToNative;
import std.datetime;
import std.datetime.systime;
import std.exception;
import std.format;
Expand Down Expand Up @@ -794,7 +795,7 @@ class SignatureBlob: Blob {
.startCons(ASN1Tag.SEQUENCE)
.encode(OID("1.2.840.113549.1.9.5")) // SigningTime
.startCons(ASN1Tag.SET)
.encode(X509Time(Clock.currTime()))
.encode(X509Time(Clock.currTime(UTC())))
.endCons()
.endCons()
// Attribute
Expand Down
2 changes: 2 additions & 0 deletions source/sideload/package.d
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ void sideloadFull(

auto bundlesWithAppID = app ~ appExtensions;

log.debugF!"App IDs needed: %-(%s, %)"(bundlesWithAppID.map!((b) => b.bundleIdentifier()).array());

// Search which App IDs have to be registered (we don't want to start registering App IDs if we don't
// have enough of them to register them all!! otherwise we will waste their precious App IDs)
auto appIdsToRegister = bundlesWithAppID.filter!((bundle) => !listAppIdResponse.appIds.canFind!((a) => a.identifier == bundle.bundleIdentifier())).array();
Expand Down

0 comments on commit 2f06a13

Please sign in to comment.