Skip to content

Commit

Permalink
build with 'crypto.standard' gradle build parameter
Browse files Browse the repository at this point in the history
Signed-off-by: Iwan Igonin <iigonin@sternad.de>
  • Loading branch information
iigonin committed Jan 31, 2025
1 parent 000e1a6 commit a6abb44
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,28 @@

package org.opensearch.gradle.info;

import java.util.function.Function;

public class FipsBuildParams {

private static final String FIPS_BUILD_PARAM = "OPENSEARCH_CRYPTO_STANDARD";
public static final String FIPS_BUILD_PARAM = "crypto.standard";

public static final String FIPS_ENV_VAR = "OPENSEARCH_CRYPTO_STANDARD";

private static String fipsMode;

private static final String FIPS_MODE = System.getenv(FIPS_BUILD_PARAM);
public static void init(Function<String, Object> fipsValue) {
fipsMode = (String) fipsValue.apply(FIPS_BUILD_PARAM);
}

private FipsBuildParams() {}

public static boolean isInFipsMode() {
return "FIPS-140-3".equals(FIPS_MODE);
return "FIPS-140-3".equals(fipsMode);
}

public static String getFipsMode() {
return FIPS_MODE;
}

public static String getFipsBuildParam() {
return FIPS_BUILD_PARAM;
return fipsMode;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@ public void apply(Project project) {
File rootDir = project.getRootDir();
GitInfo gitInfo = gitInfo(rootDir);

FipsBuildParams.init(project::findProperty);

BuildParams.init(params -> {
// Initialize global build parameters
boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -797,7 +797,7 @@ private Map<String, String> getOpenSearchEnvironment() {
defaultEnv.put("HOSTNAME", HOSTNAME_OVERRIDE);
defaultEnv.put("COMPUTERNAME", COMPUTERNAME_OVERRIDE);
if (FipsBuildParams.isInFipsMode()) {
defaultEnv.put(FipsBuildParams.getFipsBuildParam(), FipsBuildParams.getFipsMode());
defaultEnv.put(FipsBuildParams.FIPS_ENV_VAR, FipsBuildParams.getFipsMode());
}

Set<String> commonKeys = new HashSet<>(environment.keySet());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ final class SystemJvmOptions {

static final String OPENSEARCH_CRYPTO_STANDARD = "OPENSEARCH_CRYPTO_STANDARD";
static final String FIPS_140_3 = "FIPS-140-3";
static final boolean IS_IN_FIPS_JVM = FIPS_140_3.equals(System.getenv(OPENSEARCH_CRYPTO_STANDARD))
|| "true".equalsIgnoreCase(System.getProperty("org.bouncycastle.fips.approved_only"));

static List<String> systemJvmOptions(final Path config, Runtime.Version runtimeVersion) throws FileNotFoundException {
return Collections.unmodifiableList(
Expand Down Expand Up @@ -93,21 +95,11 @@ static List<String> systemJvmOptions(final Path config, Runtime.Version runtimeV
}

private static String enableFips() {
var cryptoStandard = System.getenv(OPENSEARCH_CRYPTO_STANDARD);
if (FIPS_140_3.equals(cryptoStandard)) {
return "-Dorg.bouncycastle.fips.approved_only=true";
}
return "";
return IS_IN_FIPS_JVM ? "-Dorg.bouncycastle.fips.approved_only=true" : "";
}

private static String loadJavaSecurityProperties(final Path config) throws FileNotFoundException {
String securityFile;
var cryptoStandard = System.getenv(OPENSEARCH_CRYPTO_STANDARD);
if (FIPS_140_3.equals(cryptoStandard)) {
securityFile = "fips_java.security";
} else {
securityFile = "java.security";
}
String securityFile = IS_IN_FIPS_JVM ? "fips_java.security" : "java.security";
var securityFilePath = config.resolve(securityFile);

if (!Files.exists(securityFilePath)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ private void setup(boolean addShutdownHook, Environment environment) throws Boot
SecureRandomInitializer.init();

var cryptoStandard = System.getenv("OPENSEARCH_CRYPTO_STANDARD");
if ("FIPS-140-3".equals(cryptoStandard)) {
if ("FIPS-140-3".equals(cryptoStandard) || "true".equalsIgnoreCase(System.getProperty("org.bouncycastle.fips.approved_only"))) {
LogManager.getLogger(Bootstrap.class).info("running in FIPS-140-3 mode");
SecurityProviderManager.excludeSunJCE();
}
Expand Down

0 comments on commit a6abb44

Please sign in to comment.