Skip to content

Commit 782603c

Browse files
authored
feat: use validated names for new variables in TEE session (#312)
1 parent e2a758d commit 782603c

File tree

4 files changed

+59
-43
lines changed

4 files changed

+59
-43
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
version=9.1.0
33
# x-release-please-end
44
iexecCommonsPocoVersion=5.2.0
5-
iexecCommonVersion=9.1.0
5+
iexecCommonVersion=9.2.0
66

77
nexusUser
88
nexusPassword

src/main/java/com/iexec/sms/tee/session/base/SecretSessionBaseService.java

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ public class SecretSessionBaseService {
6565

6666
static final String EMPTY_STRING_VALUE = "";
6767
static final BigInteger BULK_DATASET_VOLUME = BigInteger.TWO.pow(53).subtract(BigInteger.ONE);
68-
static final String BULK_DATASET_PREFIX = "BULK_DATASET_";
69-
static final String BULK_DATASET_URL_SUFFIX = "_URL";
70-
static final String BULK_DATASET_CHECKSUM_SUFFIX = "_CHECKSUM";
71-
static final String BULK_DATASET_KEY_SUFFIX = "_KEY";
72-
static final String BULK_DATASET_FILENAME_SUFFIX = "_FILENAME";
68+
static final String IEXEC_DATASET_PREFIX = "IEXEC_DATASET_";
69+
static final String IEXEC_DATASET_URL_SUFFIX = "_URL";
70+
static final String IEXEC_DATASET_CHECKSUM_SUFFIX = "_CHECKSUM";
71+
static final String IEXEC_DATASET_KEY_SUFFIX = "_KEY";
72+
static final String IEXEC_DATASET_FILENAME_SUFFIX = "_FILENAME";
7373
static final String IEXEC_APP_DEVELOPER_SECRET_PREFIX = "IEXEC_APP_DEVELOPER_SECRET_";
7474
static final String IEXEC_REQUESTER_SECRET_PREFIX = "IEXEC_REQUESTER_SECRET_";
7575

@@ -193,22 +193,22 @@ private List<DatasetOrder> fetchDatasetOrders(final TaskDescription taskDescript
193193
private Map<String, Object> getBulkDatasetTokens(final int index,
194194
final TaskDescription taskDescription,
195195
final DatasetOrder datasetOrder) {
196-
final String prefix = BULK_DATASET_PREFIX + (index + 1);
196+
final String prefix = IEXEC_DATASET_PREFIX + (index + 1);
197197
final ChainDataset dataset = iexecHubService.getChainDataset(datasetOrder.getDataset()).orElse(null);
198198
if (isBulkDatasetOrderValid(taskDescription, datasetOrder) && dataset != null) {
199199
final String datasetKey = web3SecretService.getDecryptedValue(datasetOrder.getDataset()).orElse("");
200200
return Map.of(
201-
prefix + BULK_DATASET_URL_SUFFIX, dataset.getMultiaddr(),
202-
prefix + BULK_DATASET_CHECKSUM_SUFFIX, dataset.getChecksum(),
203-
prefix + BULK_DATASET_KEY_SUFFIX, datasetKey,
204-
prefix + BULK_DATASET_FILENAME_SUFFIX, datasetOrder.getDataset()
201+
prefix + IEXEC_DATASET_URL_SUFFIX, dataset.getMultiaddr(),
202+
prefix + IEXEC_DATASET_CHECKSUM_SUFFIX, dataset.getChecksum(),
203+
prefix + IEXEC_DATASET_KEY_SUFFIX, datasetKey,
204+
prefix + IEXEC_DATASET_FILENAME_SUFFIX, datasetOrder.getDataset()
205205
);
206206
} else {
207207
return Map.of(
208-
prefix + BULK_DATASET_URL_SUFFIX, EMPTY_STRING_VALUE,
209-
prefix + BULK_DATASET_CHECKSUM_SUFFIX, EMPTY_STRING_VALUE,
210-
prefix + BULK_DATASET_KEY_SUFFIX, EMPTY_STRING_VALUE,
211-
prefix + BULK_DATASET_FILENAME_SUFFIX, datasetOrder.getDataset()
208+
prefix + IEXEC_DATASET_URL_SUFFIX, EMPTY_STRING_VALUE,
209+
prefix + IEXEC_DATASET_CHECKSUM_SUFFIX, EMPTY_STRING_VALUE,
210+
prefix + IEXEC_DATASET_KEY_SUFFIX, EMPTY_STRING_VALUE,
211+
prefix + IEXEC_DATASET_FILENAME_SUFFIX, datasetOrder.getDataset()
212212
);
213213
}
214214
}
@@ -255,7 +255,7 @@ SecretEnclaveBase getPreComputeTokens(final TeeSessionRequest request, final Map
255255

256256
if (taskDescription.isBulkRequest()) {
257257
final List<DatasetOrder> orders = fetchDatasetOrders(taskDescription);
258-
tokens.put(BULK_SIZE.name(), orders.size());
258+
tokens.put(IEXEC_BULK_SLICE_SIZE.name(), orders.size());
259259
for (int i = 0; i < orders.size(); i++) {
260260
final DatasetOrder order = orders.get(i);
261261
tokens.putAll(getBulkDatasetTokens(i, taskDescription, order));
@@ -278,6 +278,8 @@ SecretEnclaveBase getPreComputeTokens(final TeeSessionRequest request, final Map
278278
log.info("No dataset key needed for this task [taskId:{}]", taskId);
279279
}
280280
trustedEnv.addAll(List.of(
281+
IEXEC_DEAL_ID.name(),
282+
IEXEC_TASK_INDEX.name(),
281283
IEXEC_TASK_ID.name(),
282284
IEXEC_INPUT_FILES_FOLDER.name(),
283285
IEXEC_INPUT_FILES_NUMBER.name()));
@@ -340,9 +342,9 @@ SecretEnclaveBase getAppTokens(final TeeSessionRequest request) throws TeeSessio
340342
final List<String> addresses = fetchDatasetOrders(taskDescription).stream()
341343
.map(DatasetOrder::getDataset)
342344
.toList();
343-
tokens.put(BULK_SIZE.name(), addresses.size());
345+
tokens.put(IEXEC_BULK_SLICE_SIZE.name(), addresses.size());
344346
for (int i = 0; i < addresses.size(); i++) {
345-
tokens.put(BULK_DATASET_PREFIX + (i + 1) + BULK_DATASET_FILENAME_SUFFIX, addresses.get(i));
347+
tokens.put(IEXEC_DATASET_PREFIX + (i + 1) + IEXEC_DATASET_FILENAME_SUFFIX, addresses.get(i));
346348
}
347349
}
348350

src/test/java/com/iexec/sms/tee/session/TeeSessionTestUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
@Slf4j
4040
public class TeeSessionTestUtils {
41-
public static final String TEST_DEAL_ID = "dealId";
41+
public static final String DEAL_ID = "dealId";
4242
public static final String TASK_ID = "taskId";
4343
public static final String SESSION_ID = "sessionId";
4444
public static final String WORKER_ADDRESS = "workerAddress";
@@ -144,7 +144,7 @@ public static TaskDescription.TaskDescriptionBuilder createTaskDescription(final
144144
final String beneficiaryAddress = createEthereumAddress();
145145
final String workerpoolAddress = createEthereumAddress();
146146
return TaskDescription.builder()
147-
.chainDealId(TEST_DEAL_ID)
147+
.chainDealId(DEAL_ID)
148148
.chainTaskId(TASK_ID)
149149
.workerpoolOwner(workerpoolAddress)
150150
.appUri(APP_URI)

src/test/java/com/iexec/sms/tee/session/base/SecretSessionBaseServiceTests.java

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -292,11 +292,11 @@ void shouldGetPreComputeBulkProcessingTokensForInvalidOrder() throws Exception {
292292
assertThat(enclaveBase.getName()).isEqualTo("pre-compute");
293293
assertThat(enclaveBase.getMrenclave()).isEqualTo(PRE_COMPUTE_FINGERPRINT);
294294
assertThat(enclaveBase.getEnvironment()).containsAllEntriesOf(Map.ofEntries(
295-
Map.entry("BULK_SIZE", 1),
296-
Map.entry("BULK_DATASET_1_URL", ""),
297-
Map.entry("BULK_DATASET_1_CHECKSUM", ""),
298-
Map.entry("BULK_DATASET_1_KEY", ""),
299-
Map.entry("BULK_DATASET_1_FILENAME", datasetAddress)
295+
Map.entry("IEXEC_BULK_SLICE_SIZE", 1),
296+
Map.entry("IEXEC_DATASET_1_URL", ""),
297+
Map.entry("IEXEC_DATASET_1_CHECKSUM", ""),
298+
Map.entry("IEXEC_DATASET_1_KEY", ""),
299+
Map.entry("IEXEC_DATASET_1_FILENAME", datasetAddress)
300300
));
301301
}
302302

@@ -335,11 +335,11 @@ void shouldGetPreComputeBulkProcessingTokensForValidOrder() throws Exception {
335335
assertThat(enclaveBase.getName()).isEqualTo("pre-compute");
336336
assertThat(enclaveBase.getMrenclave()).isEqualTo(PRE_COMPUTE_FINGERPRINT);
337337
assertThat(enclaveBase.getEnvironment()).containsAllEntriesOf(Map.ofEntries(
338-
Map.entry("BULK_SIZE", 1),
339-
Map.entry("BULK_DATASET_1_URL", DATASET_URL),
340-
Map.entry("BULK_DATASET_1_CHECKSUM", DATASET_CHECKSUM),
341-
Map.entry("BULK_DATASET_1_KEY", DATASET_KEY),
342-
Map.entry("BULK_DATASET_1_FILENAME", datasetAddress)
338+
Map.entry("IEXEC_BULK_SLICE_SIZE", 1),
339+
Map.entry("IEXEC_DATASET_1_URL", DATASET_URL),
340+
Map.entry("IEXEC_DATASET_1_CHECKSUM", DATASET_CHECKSUM),
341+
Map.entry("IEXEC_DATASET_1_KEY", DATASET_KEY),
342+
Map.entry("IEXEC_DATASET_1_FILENAME", datasetAddress)
343343
));
344344
}
345345

@@ -358,7 +358,7 @@ void shouldNotGetBulkProcessingPreComputeTokens() throws Exception {
358358
);
359359
assertThat(enclaveBase.getName()).isEqualTo("pre-compute");
360360
assertThat(enclaveBase.getMrenclave()).isEqualTo(PRE_COMPUTE_FINGERPRINT);
361-
assertThat(enclaveBase.getEnvironment()).contains(Map.entry("BULK_SIZE", 0));
361+
assertThat(enclaveBase.getEnvironment()).contains(Map.entry("IEXEC_BULK_SLICE_SIZE", 0));
362362
}
363363

364364
@Test
@@ -379,6 +379,8 @@ void shouldGetPreComputeTokensWithDataset() throws Exception {
379379
assertThat(enclaveBase.getName()).isEqualTo("pre-compute");
380380
assertThat(enclaveBase.getMrenclave()).isEqualTo(PRE_COMPUTE_FINGERPRINT);
381381
final Map<String, Object> expectedTokens = Map.ofEntries(
382+
Map.entry("IEXEC_DEAL_ID", DEAL_ID),
383+
Map.entry("IEXEC_TASK_INDEX", "0"),
382384
Map.entry("IEXEC_TASK_ID", TASK_ID),
383385
Map.entry("IEXEC_PRE_COMPUTE_OUT", "/iexec_in"),
384386
Map.entry("IS_DATASET_REQUIRED", true),
@@ -402,6 +404,11 @@ void shouldGetPreComputeTokensWithoutDataset() throws Exception {
402404
.iexecInputFiles(List.of(INPUT_FILE_URL_1, INPUT_FILE_URL_2))
403405
.build();
404406
final TaskDescription taskDescription = TaskDescription.builder()
407+
.chainDealId(DEAL_ID)
408+
.datasetAddress(BytesUtils.EMPTY_ADDRESS)
409+
.botSize(1)
410+
.botFirstIndex(0)
411+
.botIndex(0)
405412
.chainTaskId(TASK_ID)
406413
.dealParams(dealParams)
407414
.build();
@@ -422,16 +429,18 @@ void shouldGetPreComputeTokensWithoutDataset() throws Exception {
422429
);
423430
assertThat(enclaveBase.getName()).isEqualTo("pre-compute");
424431
assertThat(enclaveBase.getMrenclave()).isEqualTo(PRE_COMPUTE_FINGERPRINT);
425-
final Map<String, Object> expectedTokens = Map.of(
426-
"IEXEC_TASK_ID", TASK_ID,
427-
"IEXEC_PRE_COMPUTE_OUT", "/iexec_in",
428-
"IS_DATASET_REQUIRED", false,
429-
"IEXEC_INPUT_FILES_FOLDER", "/iexec_in",
430-
"IEXEC_INPUT_FILES_NUMBER", "2",
431-
"IEXEC_INPUT_FILE_URL_1", INPUT_FILE_URL_1,
432-
"IEXEC_INPUT_FILE_URL_2", INPUT_FILE_URL_2,
433-
"SIGN_WORKER_ADDRESS", WORKER_ADDRESS,
434-
"SIGN_TEE_CHALLENGE_PRIVATE_KEY", challenge.getCredentials().getPrivateKey()
432+
final Map<String, Object> expectedTokens = Map.ofEntries(
433+
Map.entry("IEXEC_DEAL_ID", DEAL_ID),
434+
Map.entry("IEXEC_TASK_INDEX", "0"),
435+
Map.entry("IEXEC_TASK_ID", TASK_ID),
436+
Map.entry("IEXEC_PRE_COMPUTE_OUT", "/iexec_in"),
437+
Map.entry("IS_DATASET_REQUIRED", false),
438+
Map.entry("IEXEC_INPUT_FILES_FOLDER", "/iexec_in"),
439+
Map.entry("IEXEC_INPUT_FILES_NUMBER", "2"),
440+
Map.entry("IEXEC_INPUT_FILE_URL_1", INPUT_FILE_URL_1),
441+
Map.entry("IEXEC_INPUT_FILE_URL_2", INPUT_FILE_URL_2),
442+
Map.entry("SIGN_WORKER_ADDRESS", WORKER_ADDRESS),
443+
Map.entry("SIGN_TEE_CHALLENGE_PRIVATE_KEY", challenge.getCredentials().getPrivateKey())
435444
);
436445

437446
assertThat(enclaveBase.getEnvironment()).containsExactlyInAnyOrderEntriesOf(expectedTokens);
@@ -456,8 +465,8 @@ void shouldGetAppComputeBulkProcessingTokens() throws TeeSessionGenerationExcept
456465
assertThat(enclaveBase.getName()).isEqualTo("app");
457466
assertThat(enclaveBase.getMrenclave()).isEqualTo(APP_FINGERPRINT);
458467
assertThat(enclaveBase.getEnvironment()).containsAllEntriesOf(Map.ofEntries(
459-
Map.entry("BULK_SIZE", 1),
460-
Map.entry("BULK_DATASET_1_FILENAME", datasetAddress)
468+
Map.entry("IEXEC_BULK_SLICE_SIZE", 1),
469+
Map.entry("IEXEC_DATASET_1_FILENAME", datasetAddress)
461470
));
462471
}
463472

@@ -478,6 +487,8 @@ void shouldGetAppTokensForAdvancedTaskDescription() throws TeeSessionGenerationE
478487
assertThat(enclaveBase.getName()).isEqualTo("app");
479488
assertThat(enclaveBase.getMrenclave()).isEqualTo(APP_FINGERPRINT);
480489
final Map<String, Object> expectedTokens = Map.ofEntries(
490+
Map.entry("IEXEC_DEAL_ID", DEAL_ID),
491+
Map.entry("IEXEC_TASK_INDEX", "0"),
481492
Map.entry("IEXEC_TASK_ID", TASK_ID),
482493
Map.entry("IEXEC_IN", "/iexec_in"),
483494
Map.entry("IEXEC_OUT", "/iexec_out"),
@@ -510,6 +521,7 @@ void shouldGetTokensWithEmptyAppComputeSecretWhenSecretsDoNotExist() throws TeeS
510521
.iexecSecrets(Map.of())
511522
.build();
512523
final TaskDescription taskDescription = TaskDescription.builder()
524+
.chainDealId(DEAL_ID)
513525
.chainTaskId(TASK_ID)
514526
.appUri(APP_URI)
515527
.appAddress(appAddress)
@@ -533,6 +545,8 @@ void shouldGetTokensWithEmptyAppComputeSecretWhenSecretsDoNotExist() throws TeeS
533545
assertThat(enclaveBase.getName()).isEqualTo("app");
534546
assertThat(enclaveBase.getMrenclave()).isEqualTo(APP_FINGERPRINT);
535547
final Map<String, Object> expectedTokens = Map.ofEntries(
548+
Map.entry("IEXEC_DEAL_ID", DEAL_ID),
549+
Map.entry("IEXEC_TASK_INDEX", "0"),
536550
Map.entry("IEXEC_TASK_ID", TASK_ID),
537551
Map.entry("IEXEC_IN", "/iexec_in"),
538552
Map.entry("IEXEC_OUT", "/iexec_out"),

0 commit comments

Comments
 (0)