Skip to content

Commit bfb5ea1

Browse files
committed
U enable hardened runtime if macos version 10.13.6+
1 parent d3733c8 commit bfb5ea1

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

src/main/java/io/github/fvarrui/javapackager/packagers/MacPackager.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
import java.util.stream.Collectors;
99

1010
import org.apache.commons.lang3.StringUtils;
11+
import org.apache.commons.lang3.SystemUtils;
1112
import org.codehaus.plexus.util.cli.CommandLineException;
1213

1314
import io.github.fvarrui.javapackager.model.Platform;
1415
import io.github.fvarrui.javapackager.utils.CommandUtils;
1516
import io.github.fvarrui.javapackager.utils.FileUtils;
1617
import io.github.fvarrui.javapackager.utils.Logger;
1718
import io.github.fvarrui.javapackager.utils.VelocityUtils;
19+
import io.github.fvarrui.javapackager.utils.VersionUtils;
1820
import io.github.fvarrui.javapackager.utils.XMLUtils;
1921

2022
/**
@@ -147,8 +149,18 @@ public File doCreateApp() throws Exception {
147149
}
148150

149151
private void codesign(String developerId, File entitlements, File appFile) throws IOException, CommandLineException {
152+
153+
List<String> flags = new ArrayList<>();
154+
if (VersionUtils.compareVersions("10.13.6", SystemUtils.OS_VERSION) >= 0) {
155+
Logger.warn("Hardened runtime enabled!");
156+
flags.add("runtime"); // enable hardened runtime if Mac OS version >= 10.13.6
157+
}
158+
150159
List<Object> codesignArgs = new ArrayList<>();
151160
codesignArgs.add("--force");
161+
if (!flags.isEmpty()) {
162+
codesignArgs.add("--options " + StringUtils.join(",", flags));
163+
}
152164
codesignArgs.add("--deep");
153165
if (entitlements == null) {
154166
Logger.warn("Entitlements file not specified");
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.github.fvarrui.javapackager.utils;
2+
3+
/**
4+
* Java utils
5+
*/
6+
public class VersionUtils {
7+
8+
private static int [] parseVersion(String version) {
9+
String [] splittedVersion = version.split("\\.");
10+
int [] parsedVersion = new int[splittedVersion.length];
11+
for (int i = 0; i < splittedVersion.length; i++) {
12+
parsedVersion[i] = Integer.parseInt(splittedVersion[i]);
13+
}
14+
return parsedVersion;
15+
}
16+
17+
/**
18+
* Compares two strings with version numbers
19+
* @param v1 First version string
20+
* @param v2 Second version string
21+
* @return 0 if equals, -1 if v1 less than v2, +1 if v1 greater than v2
22+
*/
23+
public static int compareVersions(String v1, String v2) {
24+
int [] parsed1 = parseVersion(v1);
25+
int [] parsed2 = parseVersion(v2);
26+
int size = Math.min(parsed1.length, parsed2.length);
27+
for (int i = 0; i < size; i++) {
28+
if (parsed1[i] > parsed2[i]) return -1;
29+
if (parsed1[i] < parsed2[i]) return 1;
30+
}
31+
return 0;
32+
}
33+
34+
}

0 commit comments

Comments
 (0)