Skip to content

Commit a5c3e86

Browse files
fix: allow TEE datasetorders without framework (#473)
1 parent 3f5dfc1 commit a5c3e86

File tree

5 files changed

+25
-16
lines changed

5 files changed

+25
-16
lines changed

src/common/execution/order-helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {
2626
import { resolveTeeFrameworkFromApp, showApp } from '../protocol/registries.js';
2727

2828
export const resolveTeeFrameworkFromTag = async (tag) => {
29-
const vTag = await tagSchema().validate(tag);
29+
const vTag = await tagSchema({ allowAgnosticTee: true }).validate(tag);
3030
if (checkActiveBitInTag(vTag, TAG_MAP[TEE_FRAMEWORKS.SCONE])) {
3131
return TEE_FRAMEWORKS.SCONE;
3232
}

src/common/market/order.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@ export const createDatasetorder = async (
11291129
.validate(dataset),
11301130
datasetprice: await nRlcAmountSchema().validate(datasetprice),
11311131
volume: await uint256Schema().validate(volume),
1132-
tag: await tagSchema().validate(tag),
1132+
tag: await tagSchema({ allowAgnosticTee: true }).validate(tag),
11331133
apprestrict: await addressSchema({
11341134
ethProvider: contracts.provider,
11351135
}).validate(apprestrict),

src/common/utils/validator.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ export const paramsSchema = () =>
369369
},
370370
);
371371

372-
export const tagSchema = () =>
372+
export const tagSchema = ({ allowAgnosticTee = false } = {}) =>
373373
mixed()
374374
.transform((value) => {
375375
if (Array.isArray(value)) {
@@ -424,7 +424,7 @@ export const tagSchema = () =>
424424
);
425425
try {
426426
if (isTee) {
427-
if (teeFrameworks.length < 1) {
427+
if (!allowAgnosticTee && teeFrameworks.length < 1) {
428428
throw new Error(
429429
`'tee' tag must be used with a tee framework (${Object.values(
430430
TEE_FRAMEWORKS,
@@ -486,7 +486,7 @@ export const datasetorderSchema = (opt) =>
486486
dataset: addressSchema(opt).required(),
487487
datasetprice: nRlcAmountSchema().required(),
488488
volume: uint256Schema().required(),
489-
tag: tagSchema().required(),
489+
tag: tagSchema({ allowAgnosticTee: true }).required(),
490490
apprestrict: addressSchema(opt).required(),
491491
workerpoolrestrict: addressSchema(opt).required(),
492492
requesterrestrict: addressSchema(opt).required(),

test/lib/e2e/IExecOrderModule.test.js

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,15 @@ describe('order', () => {
113113
apprestrict,
114114
workerpoolrestrict,
115115
requesterrestrict,
116-
tag: ['tee', 'scone'],
116+
tag: ['tee'],
117117
volume: 100,
118118
});
119119
expect(order).toEqual({
120120
dataset,
121121
datasetprice: '1000000000',
122122
apprestrict,
123123
requesterrestrict,
124-
tag: '0x0000000000000000000000000000000000000000000000000000000000000003',
124+
tag: '0x0000000000000000000000000000000000000000000000000000000000000001',
125125
volume: '100',
126126
workerpoolrestrict,
127127
});
@@ -384,6 +384,13 @@ describe('signDatasetorder()', () => {
384384
const order = await iexec.order.createDatasetorder({
385385
dataset: address,
386386
});
387+
await expect(
388+
iexec.order.signDatasetorder({ ...order, tag: ['tee'] }),
389+
).rejects.toThrow(
390+
new Error(
391+
`Dataset encryption key is not set for dataset ${address} in the SMS. Dataset decryption will fail.`,
392+
),
393+
);
387394
await expect(
388395
iexec.order.signDatasetorder({ ...order, tag: ['tee', 'scone'] }),
389396
).rejects.toThrow(
@@ -395,6 +402,9 @@ describe('signDatasetorder()', () => {
395402
address,
396403
iexec.dataset.generateEncryptionKey(),
397404
);
405+
await expect(
406+
iexec.order.signDatasetorder({ ...order, tag: ['tee'] }),
407+
).resolves.toBeDefined();
398408
await expect(
399409
iexec.order.signDatasetorder({ ...order, tag: ['tee', 'scone'] }),
400410
).resolves.toBeDefined();
@@ -412,13 +422,6 @@ describe('signDatasetorder()', () => {
412422
const order = await iexec.order.createDatasetorder({
413423
dataset: getRandomAddress(),
414424
});
415-
await expect(
416-
iexec.order.signDatasetorder({ ...order, tag: ['tee'] }),
417-
).rejects.toThrow(
418-
new Error(
419-
"'tee' tag must be used with a tee framework ('scone'|'gramine')",
420-
),
421-
);
422425
await expect(
423426
iexec.order.signDatasetorder({ ...order, tag: ['scone'] }),
424427
).rejects.toThrow(Error("'scone' tag must be used with 'tee' tag"));
@@ -883,7 +886,7 @@ describe('publish...order()', () => {
883886
test('preflightChecks dataset secret exists for tee tag', async () => {
884887
const { iexec } = getTestConfig(iexecTestChain)();
885888
const datasetorder = await deployAndGetDatasetorder(iexec, {
886-
tag: ['tee', 'scone'],
889+
tag: ['tee'],
887890
});
888891
const datasetAddress = datasetorder.dataset;
889892
await expect(
@@ -2456,7 +2459,7 @@ describe('matchOrders()', () => {
24562459
});
24572460
const teeDatasetorder = await deployAndGetDatasetorder(
24582461
iexecResourcesProvider,
2459-
{ tag: ['tee', 'scone'] },
2462+
{ tag: ['tee'] },
24602463
);
24612464
const teeWorkerpoolorder = await deployAndGetWorkerpoolorder(
24622465
iexecResourcesProvider,

test/lib/unit/validator.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,12 @@ describe('[tagSchema]', () => {
865865
).rejects.toThrow(
866866
new ValidationError("'gramine' tag must be used with 'tee' tag"),
867867
);
868+
const agnosticTeeTag = await tagSchema({ allowAgnosticTee: true }).validate(
869+
['tee'],
870+
);
871+
expect(agnosticTeeTag).toBe(
872+
'0x0000000000000000000000000000000000000000000000000000000000000001',
873+
);
868874
await expect(tagSchema().validate('tee,gramine,scone')).rejects.toThrow(
869875
new ValidationError(
870876
"tee framework tags are exclusive ('scone'|'gramine')",

0 commit comments

Comments
 (0)