From 8732e2d39cd021812f9ff9e55174a765afaff807 Mon Sep 17 00:00:00 2001 From: vkalapov <87693906+vkalapov@users.noreply.github.com> Date: Tue, 28 Jul 2026 10:45:56 +0300 Subject: [PATCH] Migrate file upload digest algorithm from MD5 to SHA-384 (FIPS 140-3 + NCS) LMCROSSITXSADEPLOY-3224 --- .../multiapps/controller/persistence/Constants.java | 2 +- .../controller/persistence/model/FileInfoTest.java | 4 ++-- .../persistence/services/DatabaseFileServiceTest.java | 9 ++++----- .../services/JCloudsObjectStoreFileStorageTest.java | 2 +- .../process/steps/DeleteRemainingFilePartsTest.java | 4 ++-- .../process/util/ApplicationDigestCalculatorTest.java | 4 ++-- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/Constants.java b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/Constants.java index ba3ca2e294..7e3a552b3d 100644 --- a/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/Constants.java +++ b/multiapps-controller-persistence/src/main/java/org/cloudfoundry/multiapps/controller/persistence/Constants.java @@ -8,7 +8,7 @@ public class Constants { public static final String INDEXED_STEP_NAME = "__INDEXED_STEP_NAME"; public static final String VARIABLE_NAME_SERVICE_ID = "__SERVICE_ID"; - public static final String DIGEST_ALGORITHM = "MD5"; + public static final String DIGEST_ALGORITHM = "SHA-384"; public static final String FILE_ENTRY_CONTENT = "CONTENT"; public static final String FILE_ENTRY_MODIFIED = "MODIFIED"; diff --git a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/model/FileInfoTest.java b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/model/FileInfoTest.java index 5811b54dc5..f82bb353ae 100644 --- a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/model/FileInfoTest.java +++ b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/model/FileInfoTest.java @@ -39,7 +39,7 @@ void testGetInputStreamReadsFromUnderlyingFile() throws Exception { FileInfo info = ImmutableFileInfo.builder() .size(BigInteger.valueOf(5)) .digest("digest") - .digestAlgorithm("SHA-256") + .digestAlgorithm("SHA-384") .file(file.toFile()) .build(); @@ -55,7 +55,7 @@ void testGetInputStreamWrapsFileNotFoundInFileStorageException() { FileInfo info = ImmutableFileInfo.builder() .size(BigInteger.ZERO) .digest("digest") - .digestAlgorithm("SHA-256") + .digestAlgorithm("SHA-384") .file(missing) .build(); diff --git a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/DatabaseFileServiceTest.java b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/DatabaseFileServiceTest.java index d25bb5487e..6a8e6efe7d 100644 --- a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/DatabaseFileServiceTest.java +++ b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/DatabaseFileServiceTest.java @@ -54,8 +54,8 @@ class DatabaseFileServiceTest { private static final String SELECT_FILE_WITH_CONTENT = "SELECT FILE_ID FROM {0} WHERE FILE_ID=? AND CONTENT IS NOT NULL"; private static final String UPDATE_MODIFICATION_TIME = "UPDATE {0} SET MODIFIED=? WHERE FILE_ID=?"; private static final String LIQUIBASE_CHANGELOG_LOCATION = "org/cloudfoundry/multiapps/controller/persistence/db/changelog/db-changelog.xml"; - private static final String DIGEST_METHOD = "MD5"; - private static final String PIC_MD5_DIGEST = "b39a167875c3771c384c9aa5601fc2d6"; + private static final String DIGEST_METHOD = "SHA-384"; + private static final String PIC_SHA256_DIGEST = "b43c60daa2a0f2e4eeadd057da75976d26d21e79ca784970c62da10edb6928692f0ab9bf5e82ca55a2905c0307e9b2b3"; protected FileService fileService; protected DataSourceWithDialect testDataSource; @@ -243,9 +243,8 @@ private void verifyFileEntry(FileEntry entry, String space, String namespace) { // the size of the uploaded file assertEquals(BigInteger.valueOf(PIC_SIZE), entry.getSize()); - // verify the MD5 digest, compare with one taken with md5sum - assertEquals(PIC_MD5_DIGEST.toLowerCase(), entry.getDigest() - .toLowerCase()); + assertEquals(PIC_SHA256_DIGEST.toLowerCase(), entry.getDigest() + .toLowerCase()); assertEquals(DIGEST_METHOD, entry.getDigestAlgorithm()); } diff --git a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java index 0addf3485f..cef9898c39 100644 --- a/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java +++ b/multiapps-controller-persistence/src/test/java/org/cloudfoundry/multiapps/controller/persistence/services/JCloudsObjectStoreFileStorageTest.java @@ -47,7 +47,7 @@ class JCloudsObjectStoreFileStorageTest { protected static final String TEST_FILE_LOCATION = "src/test/resources/pexels-photo-401794.jpeg"; protected static final String SECOND_FILE_TEST_LOCATION = "src/test/resources/pexels-photo-463467.jpeg"; - protected static final String DIGEST_METHOD = "MD5"; + protected static final String DIGEST_METHOD = "SHA-384"; protected static final String CONTAINER = "container4e"; protected String spaceId; diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DeleteRemainingFilePartsTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DeleteRemainingFilePartsTest.java index abbff7a2ff..0dc5a2a192 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DeleteRemainingFilePartsTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/steps/DeleteRemainingFilePartsTest.java @@ -18,9 +18,9 @@ class DeleteRemainingFilePartsTest extends SyncFlowableStepTest { - private static final String DIGEST_ALGORITHM = "MD5"; + private static final String DIGEST_ALGORITHM = "SHA-384"; private static final String NAMESPACE = "namespace"; - private static final String DIGEST = "2252290BC44BEAD16AA1BF89948472E8"; + private static final String DIGEST = "A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2C3D4E5F6A1B2"; @BeforeEach void setUp() { diff --git a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java index 4193f6ad19..682707c9b8 100644 --- a/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java +++ b/multiapps-controller-process/src/test/java/org/cloudfoundry/multiapps/controller/process/util/ApplicationDigestCalculatorTest.java @@ -25,8 +25,8 @@ class ApplicationDigestCalculatorTest { private static final String SPACE_GUID = "123"; private static final String APP_ARCHIVE_ID = "132"; - private static final String DB_DIRECTORY_MODULE_DIGEST = "71017C6429E2E1FA4ED2AD97ABF321A0"; - private static final String WEB_SERVER_MODULE_DIGEST = "4C64A36CDC073B5D07947005F630DACC"; + private static final String DB_DIRECTORY_MODULE_DIGEST = "DCD4C4677C62F5BCB4E3536F1E2EE3575C44814C78548451EEFEA1E8A738C547A3DAC3C74B8D90C5D65F623BC4AD9FC9"; + private static final String WEB_SERVER_MODULE_DIGEST = "10E8B6DDF11583D98197BED52532CA1831098E0AD84A19DC26BFDD54A2A4D83D38BBB11F6F8AA566051794B744278C4F"; @Mock private FileService fileService;