forked from Qortal/qortal
Added support for group encryption in service validation.
This commit is contained in:
parent
badd6ad2b0
commit
c0eeef546a
@ -186,6 +186,7 @@ public enum Service {
|
|||||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
|
||||||
private static final String encryptedDataPrefix = "qortalEncryptedData";
|
private static final String encryptedDataPrefix = "qortalEncryptedData";
|
||||||
|
private static final String encryptedGroupDataPrefix = "qortalGroupEncryptedData";
|
||||||
|
|
||||||
Service(int value, boolean requiresValidation, Long maxSize, boolean single, boolean isPrivate, List<String> requiredKeys) {
|
Service(int value, boolean requiresValidation, Long maxSize, boolean single, boolean isPrivate, List<String> requiredKeys) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
@ -221,10 +222,10 @@ public enum Service {
|
|||||||
// Validate private data for single file resources
|
// Validate private data for single file resources
|
||||||
if (this.single) {
|
if (this.single) {
|
||||||
String dataString = new String(data, StandardCharsets.UTF_8);
|
String dataString = new String(data, StandardCharsets.UTF_8);
|
||||||
if (this.isPrivate && !dataString.startsWith(encryptedDataPrefix)) {
|
if (this.isPrivate && !dataString.startsWith(encryptedDataPrefix) && !dataString.startsWith(encryptedGroupDataPrefix)) {
|
||||||
return ValidationResult.DATA_NOT_ENCRYPTED;
|
return ValidationResult.DATA_NOT_ENCRYPTED;
|
||||||
}
|
}
|
||||||
if (!this.isPrivate && dataString.startsWith(encryptedDataPrefix)) {
|
if (!this.isPrivate && (dataString.startsWith(encryptedDataPrefix) || dataString.startsWith(encryptedGroupDataPrefix))) {
|
||||||
return ValidationResult.DATA_ENCRYPTED;
|
return ValidationResult.DATA_ENCRYPTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -456,6 +456,25 @@ public class ArbitraryServiceTests extends Common {
|
|||||||
assertEquals(ValidationResult.OK, service.validate(filePath));
|
assertEquals(ValidationResult.OK, service.validate(filePath));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValidPrivateGroupData() throws IOException {
|
||||||
|
String dataString = "qortalGroupEncryptedDatabMx4fELNTV+ifJxmv4+GcuOIJOTo+3qAvbWKNY2L1rfla5UBoEcoxbtjgZ9G7FLPb8V/Qfr0bfKWfvMmN06U/pgUdLuv2mGL2V0D3qYd1011MUzGdNG1qERjaCDz8GAi63+KnHHjfMtPgYt6bcqjs4CNV+ZZ4dIt3xxHYyVEBNc=";
|
||||||
|
|
||||||
|
// Write the data a single file in a temp path
|
||||||
|
Path path = Files.createTempDirectory("testValidPrivateData");
|
||||||
|
Path filePath = Paths.get(path.toString(), "test");
|
||||||
|
filePath.toFile().deleteOnExit();
|
||||||
|
|
||||||
|
BufferedWriter writer = new BufferedWriter(new FileWriter(filePath.toFile()));
|
||||||
|
writer.write(dataString);
|
||||||
|
writer.close();
|
||||||
|
|
||||||
|
Service service = Service.FILE_PRIVATE;
|
||||||
|
assertTrue(service.isValidationRequired());
|
||||||
|
|
||||||
|
assertEquals(ValidationResult.OK, service.validate(filePath));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testEncryptedData() throws IOException {
|
public void testEncryptedData() throws IOException {
|
||||||
String dataString = "qortalEncryptedDatabMx4fELNTV+ifJxmv4+GcuOIJOTo+3qAvbWKNY2L1rfla5UBoEcoxbtjgZ9G7FLPb8V/Qfr0bfKWfvMmN06U/pgUdLuv2mGL2V0D3qYd1011MUzGdNG1qERjaCDz8GAi63+KnHHjfMtPgYt6bcqjs4CNV+ZZ4dIt3xxHYyVEBNc=";
|
String dataString = "qortalEncryptedDatabMx4fELNTV+ifJxmv4+GcuOIJOTo+3qAvbWKNY2L1rfla5UBoEcoxbtjgZ9G7FLPb8V/Qfr0bfKWfvMmN06U/pgUdLuv2mGL2V0D3qYd1011MUzGdNG1qERjaCDz8GAi63+KnHHjfMtPgYt6bcqjs4CNV+ZZ4dIt3xxHYyVEBNc=";
|
||||||
|
Loading…
Reference in New Issue
Block a user