mirror of
https://github.com/opa334/TrollStore.git
synced 2026-07-02 03:00:39 +08:00
Readd ldid for use on iOS 14
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include <Foundation/Foundation.h>
|
||||
#include <Security/Security.h>
|
||||
#include <TargetConditionals.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -64,12 +65,27 @@ typedef struct CF_BRIDGED_TYPE(id) __SecCodeSigner* SecCodeSignerRef SPI_AVAILAB
|
||||
typedef struct __SecCodeSigner* SecCodeSignerRef SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
#endif
|
||||
|
||||
extern const CFStringRef kSecCodeSignerEntitlements SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
extern const CFStringRef kSecCodeSignerIdentifier SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
extern const CFStringRef kSecCodeSignerIdentity SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
extern const CFStringRef kSecCodeSignerPreserveMetadata SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
extern const CFStringRef kSecCodeSignerRequirements SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
extern const CFStringRef kSecCodeSignerResourceRules SPI_AVAILABLE(macos(10.5), ios(15.0), macCatalyst(13.0));
|
||||
const CFStringRef kSecCodeSignerApplicationData = CFSTR("application-specific");
|
||||
const CFStringRef kSecCodeSignerDetached = CFSTR("detached");
|
||||
const CFStringRef kSecCodeSignerDigestAlgorithm = CFSTR("digest-algorithm");
|
||||
const CFStringRef kSecCodeSignerDryRun = CFSTR("dryrun");
|
||||
const CFStringRef kSecCodeSignerEntitlements = CFSTR("entitlements");
|
||||
const CFStringRef kSecCodeSignerFlags = CFSTR("flags");
|
||||
const CFStringRef kSecCodeSignerIdentifier = CFSTR("identifier");
|
||||
const CFStringRef kSecCodeSignerIdentifierPrefix = CFSTR("identifier-prefix");
|
||||
const CFStringRef kSecCodeSignerIdentity = CFSTR("signer");
|
||||
const CFStringRef kSecCodeSignerPageSize = CFSTR("pagesize");
|
||||
const CFStringRef kSecCodeSignerRequirements = CFSTR("requirements");
|
||||
const CFStringRef kSecCodeSignerResourceRules = CFSTR("resource-rules");
|
||||
const CFStringRef kSecCodeSignerSDKRoot = CFSTR("sdkroot");
|
||||
const CFStringRef kSecCodeSignerSigningTime = CFSTR("signing-time");
|
||||
const CFStringRef kSecCodeSignerRequireTimestamp = CFSTR("timestamp-required");
|
||||
const CFStringRef kSecCodeSignerTimestampServer = CFSTR("timestamp-url");
|
||||
const CFStringRef kSecCodeSignerTimestampAuthentication = CFSTR("timestamp-authentication");
|
||||
const CFStringRef kSecCodeSignerTimestampOmitCertificates = CFSTR("timestamp-omit-certificates");
|
||||
const CFStringRef kSecCodeSignerPreserveMetadata = CFSTR("preserve-metadata");
|
||||
const CFStringRef kSecCodeSignerTeamIdentifier = CFSTR("teamidentifier");
|
||||
const CFStringRef kSecCodeSignerPlatformIdentifier = CFSTR("platform-identifier");
|
||||
|
||||
#ifdef BRIDGED_SECCODESIGNER
|
||||
OSStatus SecCodeSignerCreate(CFDictionaryRef parameters, SecCSFlags flags, SecCodeSignerRef* __nonnull CF_RETURNS_RETAINED signer)
|
||||
@@ -91,6 +107,13 @@ extern const CFStringRef kSecCodeInfoResourceDirectory; /* Internal */
|
||||
|
||||
int codesign_sign_adhoc(const char *path, bool preserveMetadata, NSDictionary *customEntitlements)
|
||||
{
|
||||
// We need to do this shit because iOS 14 does not have the symbol
|
||||
OSStatus (*__SecCodeSignerCreate)(CFDictionaryRef parameters, SecCSFlags flags, SecCodeSignerRef *signerRef) = dlsym(RTLD_DEFAULT, "SecCodeSignerCreate");
|
||||
OSStatus (*__SecCodeSignerAddSignatureWithErrors)(SecCodeSignerRef signerRef, SecStaticCodeRef codeRef, SecCSFlags flags, CFErrorRef *errors) = dlsym(RTLD_DEFAULT, "SecCodeSignerAddSignatureWithErrors");
|
||||
// if this is not found, all bets are off
|
||||
if (!__SecCodeSignerCreate) return 404;
|
||||
if (!__SecCodeSignerAddSignatureWithErrors) return 404;
|
||||
|
||||
NSString *filePath = [NSString stringWithUTF8String:path];
|
||||
OSStatus status = 0;
|
||||
int retval = 200;
|
||||
@@ -127,13 +150,13 @@ int codesign_sign_adhoc(const char *path, bool preserveMetadata, NSDictionary *c
|
||||
}
|
||||
|
||||
SecCodeSignerRef signerRef;
|
||||
status = SecCodeSignerCreate((__bridge CFDictionaryRef)parameters, kSecCSDefaultFlags, &signerRef);
|
||||
status = __SecCodeSignerCreate((__bridge CFDictionaryRef)parameters, kSecCSDefaultFlags, &signerRef);
|
||||
if (status == 0) {
|
||||
SecStaticCodeRef code;
|
||||
status = SecStaticCodeCreateWithPathAndAttributes((__bridge CFURLRef)[NSURL fileURLWithPath:filePath], kSecCSDefaultFlags, (__bridge CFDictionaryRef)@{}, &code);
|
||||
if (status == 0) {
|
||||
CFErrorRef errors;
|
||||
status = SecCodeSignerAddSignatureWithErrors(signerRef, code, kSecCSDefaultFlags, &errors);
|
||||
status = __SecCodeSignerAddSignatureWithErrors(signerRef, code, kSecCSDefaultFlags, &errors);
|
||||
if (status == 0) {
|
||||
CFDictionaryRef newSigningInformation;
|
||||
// Difference from codesign: added kSecCSSigningInformation, kSecCSRequirementInformation, kSecCSInternalInformation
|
||||
|
||||
Reference in New Issue
Block a user