|
55 | 55 | import java.util.Map;
|
56 | 56 | import java.util.Optional;
|
57 | 57 | import java.util.function.Predicate;
|
| 58 | +import jdk.jpackage.internal.ApplicationBuilder.MainLauncherStartupInfo; |
58 | 59 | import jdk.jpackage.internal.SigningConfigBuilder.StandardCertificateSelector;
|
| 60 | +import jdk.jpackage.internal.model.Application; |
| 61 | +import jdk.jpackage.internal.model.ApplicationLaunchers; |
59 | 62 | import jdk.jpackage.internal.model.ConfigException;
|
60 | 63 | import jdk.jpackage.internal.model.FileAssociation;
|
61 |
| -import jdk.jpackage.internal.model.ApplicationLaunchers; |
62 | 64 | import jdk.jpackage.internal.model.Launcher;
|
63 | 65 | import jdk.jpackage.internal.model.MacApplication;
|
64 | 66 | import jdk.jpackage.internal.model.MacDmgPackage;
|
65 | 67 | import jdk.jpackage.internal.model.MacFileAssociation;
|
66 | 68 | import jdk.jpackage.internal.model.MacLauncher;
|
67 | 69 | import jdk.jpackage.internal.model.MacPkgPackage;
|
68 | 70 | import jdk.jpackage.internal.model.RuntimeLayout;
|
69 |
| -import static jdk.jpackage.internal.ApplicationBuilder.MainLauncherStartupInfo; |
70 | 71 |
|
71 | 72 |
|
72 | 73 | final class MacFromParams {
|
@@ -128,16 +129,24 @@ private static MacApplication createMacApplication(
|
128 | 129 | appBuilder.appStore(appStore);
|
129 | 130 |
|
130 | 131 | if (sign) {
|
131 |
| - final var signingBuilder = new SigningConfigBuilder(); |
132 |
| - app.mainLauncher().flatMap(Launcher::startupInfo).ifPresent(signingBuilder::signingIdentityPrefix); |
133 |
| - BUNDLE_ID_SIGNING_PREFIX.copyInto(params, signingBuilder::signingIdentityPrefix); |
134 |
| - SIGNING_KEYCHAIN.copyInto(params, signingBuilder::keychain); |
| 132 | + final var signingBuilder = createSigningConfigBuilder(params, app); |
| 133 | + if (appStore) { |
| 134 | + signingBuilder.entitlementsResourceName("entitlements.plist"); |
| 135 | + } |
| 136 | + |
135 | 137 | ENTITLEMENTS.copyInto(params, signingBuilder::entitlements);
|
136 | 138 | APP_IMAGE_SIGN_IDENTITY.copyInto(params, signingBuilder::signingIdentity);
|
137 | 139 |
|
138 |
| - final var filter = appStore ? StandardCertificateSelector.APP_STORE_APP_IMAGE : StandardCertificateSelector.APP_IMAGE; |
| 140 | + SIGNING_KEY_USER.findIn(params).ifPresent(userName -> { |
| 141 | + final StandardCertificateSelector filter; |
| 142 | + if (appStore) { |
| 143 | + filter = StandardCertificateSelector.APP_STORE_APP_IMAGE; |
| 144 | + } else { |
| 145 | + filter = StandardCertificateSelector.APP_IMAGE; |
| 146 | + } |
139 | 147 |
|
140 |
| - signingBuilder.addCertificateSelectors(StandardCertificateSelector.create(SIGNING_KEY_USER.findIn(params), filter)); |
| 148 | + signingBuilder.addCertificateSelectors(StandardCertificateSelector.create(userName, filter)); |
| 149 | + }); |
141 | 150 |
|
142 | 151 | appBuilder.signingBuilder(signingBuilder);
|
143 | 152 | }
|
@@ -168,9 +177,40 @@ private static MacPkgPackage createMacPkgPackage(
|
168 | 177 |
|
169 | 178 | final var pkgBuilder = new MacPkgPackageBuilder(superPkgBuilder);
|
170 | 179 |
|
| 180 | + final boolean sign = SIGN_BUNDLE.findIn(params).orElse(false); |
| 181 | + final boolean appStore = APP_STORE.findIn(params).orElse(false); |
| 182 | + |
| 183 | + if (sign) { |
| 184 | + final var signingBuilder = createSigningConfigBuilder(params, app); |
| 185 | + INSTALLER_SIGN_IDENTITY.copyInto(params, signingBuilder::signingIdentity); |
| 186 | + |
| 187 | + SIGNING_KEY_USER.findIn(params).ifPresent(userName -> { |
| 188 | + final List<StandardCertificateSelector> filters; |
| 189 | + if (appStore) { |
| 190 | + filters = List.of(StandardCertificateSelector.APP_STORE_PKG_INSTALLER); |
| 191 | + } else { |
| 192 | + filters = List.of(StandardCertificateSelector.PKG_INSTALLER); |
| 193 | + } |
| 194 | + |
| 195 | + for (final var filter : filters) { |
| 196 | + signingBuilder.addCertificateSelectors(StandardCertificateSelector.create(userName, filter)); |
| 197 | + } |
| 198 | + }); |
| 199 | + |
| 200 | + pkgBuilder.signingBuilder(signingBuilder); |
| 201 | + } |
| 202 | + |
171 | 203 | return pkgBuilder.create();
|
172 | 204 | }
|
173 | 205 |
|
| 206 | + private static SigningConfigBuilder createSigningConfigBuilder(Map<String, ? super Object> params, Application app) { |
| 207 | + final var builder = new SigningConfigBuilder(); |
| 208 | + app.mainLauncher().flatMap(Launcher::startupInfo).ifPresent(builder::signingIdentityPrefix); |
| 209 | + BUNDLE_ID_SIGNING_PREFIX.copyInto(params, builder::signingIdentityPrefix); |
| 210 | + SIGNING_KEYCHAIN.copyInto(params, builder::keychain); |
| 211 | + return builder; |
| 212 | + } |
| 213 | + |
174 | 214 | private static MacFileAssociation createMacFa(FileAssociation fa, Map<String, ? super Object> params) {
|
175 | 215 |
|
176 | 216 | final var builder = new MacFileAssociationBuilder();
|
@@ -216,6 +256,9 @@ private static MacFileAssociation createMacFa(FileAssociation fa, Map<String, ?
|
216 | 256 | static final BundlerParamInfo<String> APP_IMAGE_SIGN_IDENTITY = createStringBundlerParam(
|
217 | 257 | Arguments.CLIOptions.MAC_APP_IMAGE_SIGN_IDENTITY.getId());
|
218 | 258 |
|
| 259 | + static final BundlerParamInfo<String> INSTALLER_SIGN_IDENTITY = createStringBundlerParam( |
| 260 | + Arguments.CLIOptions.MAC_INSTALLER_SIGN_IDENTITY.getId()); |
| 261 | + |
219 | 262 | private static final BundlerParamInfo<String> PACKAGE_TYPE = createStringBundlerParam(
|
220 | 263 | Arguments.CLIOptions.PACKAGE_TYPE.getId());
|
221 | 264 |
|
|
0 commit comments