diff --git a/_ldid b/_ldid index 3aeb9ea..ba22754 100644 --- a/_ldid +++ b/_ldid @@ -15,4 +15,5 @@ _arguments \ '-K-[Signing private key]:key:_files' \ '-P-[Set as platform]:number' \ '-U-[Password for -K]' \ + '-T-[Set team identifier]:identifier' \ '*: :_files' diff --git a/ldid.cpp b/ldid.cpp index 273ed90..acad3c7 100644 --- a/ldid.cpp +++ b/ldid.cpp @@ -119,6 +119,7 @@ bool flag_U(false); std::string password = ""; std::vector cleanup; bool flag_H(false); +const char *flag_t(NULL); template struct Iterator_ { @@ -2268,6 +2269,13 @@ Hash Sign(const void *idata, size_t isize, std::streambuf &output, const std::st get(common, name, NID_commonName); } + if (flag_t != NULL) { + if (strlen(flag_t) != 10) { + fprintf(stderr, "ldid: Team ID must be 10 characters long\n"); + exit(1); + } + team = flag_t; + } std::stringbuf backing; @@ -3302,7 +3310,7 @@ static void usage(const char *argv0) { fprintf(stderr, " host | kill | library-validation | restrict | runtime | linker-signed]] [-D] [-d]\n"); fprintf(stderr, " [-Enum:file] [-e] [-H[sha1 | sha256]] [-h] [-Iname]\n"); fprintf(stderr, " [-Kkey.p12 [-Upassword]] [-M] [-P[num]] [-Qrequirements.xml] [-q]\n"); - fprintf(stderr, " [-r | -Sfile.xml | -s] [-w] [-u] [-arch arch_type] file ...\n"); + fprintf(stderr, " [-r | -Sfile.xml | -s] [-w] [-u] [-tTeamID] [-arch arch_type] file ...\n"); fprintf(stderr, "Common Options:\n"); fprintf(stderr, " -S[file.xml] Pseudo-sign using the entitlements in file.xml\n"); fprintf(stderr, " -w Shallow sign\n"); @@ -3579,6 +3587,10 @@ int main(int argc, char *argv[]) { flag_u = true; } break; + case 't': { + flag_t = argv[argi] + 2; + } break; + case 'I': { flag_I = argv[argi] + 2; } break;