@super-protocol/sdk-js 2.2.0-beta.99 → 3.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/RIGenerator.d.ts +2 -5
- package/dist/cjs/RIGenerator.js +2 -5
- package/dist/cjs/TIIGenerator.d.ts +6 -7
- package/dist/cjs/TIIGenerator.js +20 -93
- package/dist/cjs/TeeInputGeneratorBase.d.ts +3 -7
- package/dist/cjs/TeeInputGeneratorBase.js +37 -32
- package/dist/cjs/contracts/abi.d.ts +173 -28
- package/dist/cjs/contracts/abi.js +218 -33
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +7 -3
- package/dist/cjs/models/Offer.d.ts +11 -1
- package/dist/cjs/models/Offer.js +45 -6
- package/dist/cjs/models/TeeOffer.js +9 -6
- package/dist/cjs/proto/Compression.d.ts +1 -1
- package/dist/cjs/proto/TRI.d.ts +3 -3
- package/dist/cjs/proto/TeeProperties.d.ts +5 -5
- package/dist/cjs/providers/storage/S3StorageProvider.js +5 -8
- package/dist/cjs/providers/storage/StorjCredentialsManager.js +25 -2
- package/dist/cjs/providers/storage/StorjStorageProvider.js +25 -2
- package/dist/cjs/staticModels/Consensus.d.ts +3 -2
- package/dist/cjs/staticModels/Consensus.js +22 -11
- package/dist/cjs/staticModels/OfferResources.d.ts +1 -0
- package/dist/cjs/staticModels/OfferResources.js +10 -1
- package/dist/cjs/staticModels/Offers.js +7 -4
- package/dist/cjs/staticModels/TeeOffers.js +2 -2
- package/dist/cjs/tee/QuoteParser.js +7 -5
- package/dist/cjs/tee/QuoteValidator.d.ts +2 -0
- package/dist/cjs/tee/QuoteValidator.js +24 -7
- package/dist/cjs/tee/TcbSerializer.d.ts +20 -0
- package/dist/cjs/tee/TcbSerializer.js +27 -0
- package/dist/cjs/tee/TeeBlockVerifier.d.ts +0 -4
- package/dist/cjs/tee/TeeBlockVerifier.js +5 -46
- package/dist/cjs/tee/TeeCertificateService.d.ts +13 -0
- package/dist/cjs/tee/TeeCertificateService.js +42 -0
- package/dist/cjs/tee/helpers.d.ts +1 -1
- package/dist/cjs/tee/helpers.js +2 -7
- package/dist/cjs/types/Offer.d.ts +14 -4
- package/dist/cjs/types/Offer.js +9 -2
- package/dist/cjs/types/Order.d.ts +2 -5
- package/dist/cjs/utils/schema-validators/index.d.ts +1 -0
- package/dist/cjs/utils/schema-validators/index.js +6 -0
- package/dist/cjs/utils/schema-validators/validator.d.ts +7 -0
- package/dist/cjs/utils/schema-validators/validator.js +49 -0
- package/dist/mjs/RIGenerator.d.ts +2 -5
- package/dist/mjs/RIGenerator.js +2 -5
- package/dist/mjs/TIIGenerator.d.ts +6 -7
- package/dist/mjs/TIIGenerator.js +20 -93
- package/dist/mjs/TeeInputGeneratorBase.d.ts +3 -7
- package/dist/mjs/TeeInputGeneratorBase.js +39 -34
- package/dist/mjs/contracts/abi.d.ts +173 -28
- package/dist/mjs/contracts/abi.js +216 -31
- package/dist/mjs/index.d.ts +3 -0
- package/dist/mjs/index.js +4 -1
- package/dist/mjs/models/Offer.d.ts +11 -1
- package/dist/mjs/models/Offer.js +46 -7
- package/dist/mjs/models/TeeOffer.js +9 -6
- package/dist/mjs/proto/Compression.d.ts +1 -1
- package/dist/mjs/proto/TRI.d.ts +3 -3
- package/dist/mjs/proto/TeeProperties.d.ts +5 -5
- package/dist/mjs/providers/storage/S3StorageProvider.js +5 -8
- package/dist/mjs/providers/storage/StorjCredentialsManager.js +2 -2
- package/dist/mjs/providers/storage/StorjStorageProvider.js +2 -2
- package/dist/mjs/staticModels/Consensus.d.ts +3 -2
- package/dist/mjs/staticModels/Consensus.js +22 -11
- package/dist/mjs/staticModels/OfferResources.d.ts +1 -0
- package/dist/mjs/staticModels/OfferResources.js +10 -1
- package/dist/mjs/staticModels/Offers.js +7 -4
- package/dist/mjs/staticModels/TeeOffers.js +2 -2
- package/dist/mjs/tee/QuoteParser.js +7 -5
- package/dist/mjs/tee/QuoteValidator.d.ts +2 -0
- package/dist/mjs/tee/QuoteValidator.js +24 -7
- package/dist/mjs/tee/TcbSerializer.d.ts +20 -0
- package/dist/mjs/tee/TcbSerializer.js +23 -0
- package/dist/mjs/tee/TeeBlockVerifier.d.ts +0 -4
- package/dist/mjs/tee/TeeBlockVerifier.js +5 -46
- package/dist/mjs/tee/TeeCertificateService.d.ts +13 -0
- package/dist/mjs/tee/TeeCertificateService.js +35 -0
- package/dist/mjs/tee/helpers.d.ts +1 -1
- package/dist/mjs/tee/helpers.js +2 -7
- package/dist/mjs/types/Offer.d.ts +14 -4
- package/dist/mjs/types/Offer.js +8 -1
- package/dist/mjs/types/Order.d.ts +2 -5
- package/dist/mjs/utils/schema-validators/index.d.ts +1 -0
- package/dist/mjs/utils/schema-validators/index.js +2 -0
- package/dist/mjs/utils/schema-validators/validator.d.ts +7 -0
- package/dist/mjs/utils/schema-validators/validator.js +45 -0
- package/package.json +5 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { EncryptionKey, Hash, Encryption } from '@super-protocol/dto-js';
|
|
2
|
+
import { EncryptionKey, Hash, Encryption, RuntimeInputInfo } from '@super-protocol/dto-js';
|
|
3
3
|
import { OrderEncryptedInfo, OrderResultInfo } from './types/index.js';
|
|
4
4
|
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
5
5
|
declare class RIGenerator extends TeeInputGeneratorBase {
|
|
@@ -8,10 +8,7 @@ declare class RIGenerator extends TeeInputGeneratorBase {
|
|
|
8
8
|
offerId: string;
|
|
9
9
|
encryptionPrivateKey: EncryptionKey;
|
|
10
10
|
pccsServiceApiUrl: string;
|
|
11
|
-
|
|
12
|
-
dataHashes: Hash[];
|
|
13
|
-
imageHashes: Hash[];
|
|
14
|
-
linkage?: string;
|
|
11
|
+
runtimeInputInfos: RuntimeInputInfo[];
|
|
15
12
|
argsHash?: Hash;
|
|
16
13
|
}): Promise<OrderResultInfo>;
|
|
17
14
|
static getResultInfo(encryptedResultInfo: Encryption, privateKey: Buffer): Promise<OrderEncryptedInfo>;
|
package/dist/cjs/RIGenerator.js
CHANGED
|
@@ -28,10 +28,7 @@ class RIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
|
28
28
|
};
|
|
29
29
|
const orderInfoToEncrypt = {
|
|
30
30
|
publicKey: resultEncryption,
|
|
31
|
-
|
|
32
|
-
dataHashes: params.dataHashes || [],
|
|
33
|
-
imageHashes: params.imageHashes || [],
|
|
34
|
-
linkage: params.linkage ?? '',
|
|
31
|
+
runtimeInputInfos: params.runtimeInputInfos,
|
|
35
32
|
...(params.argsHash && { argsHash: params.argsHash }),
|
|
36
33
|
};
|
|
37
34
|
const encryptedInfo = await this.encryptByTeeBlock(params.offerId, JSON.stringify(orderInfoToEncrypt), params.pccsServiceApiUrl);
|
|
@@ -49,4 +46,4 @@ class RIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
48
|
exports.default = RIGenerator;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUklHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUklHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxtREFRZ0M7QUFDaEMsbUNBQW9DO0FBRXBDLGlFQUF1QztBQUN2QywwRkFBK0Q7QUFFL0QsTUFBTSxXQUFZLFNBQVEsa0NBQXFCO0lBQzdDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsbUJBQWtDO1FBQ2xFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxrQkFBTSxDQUFDLFVBQVUsQ0FDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ25FLEVBQUUsUUFBUSxFQUFFLGlCQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxzQkFBYSxDQUFDLE1BQU0sRUFBRSxDQUMxRCxDQUFDO1FBRUYsT0FBTztZQUNMLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1lBQzNCLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1lBQ3BDLElBQUksRUFBRSx3QkFBZSxDQUFDLEtBQUs7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQU1yQjtRQUNDLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUUsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sSUFBSSxHQUFHLElBQUEsbUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBSSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEYsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDO1lBQ2xELFFBQVEsRUFBRSxpQkFBUSxDQUFDLE1BQU07WUFDekIsSUFBSSxFQUFFLHdCQUFlLENBQUMsS0FBSztTQUNkLENBQUM7UUFFaEIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN4QixtQkFBK0IsRUFDL0IsVUFBa0I7UUFFbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQztZQUMvQixHQUFHLG1CQUFtQjtZQUN0QixHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDdkQsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQUVELGtCQUFlLFdBQVcsQ0FBQyJ9
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { BlockchainId } from './types/index.js';
|
|
3
|
-
import { Encryption,
|
|
3
|
+
import { Encryption, Resource, RuntimeInputInfo, TeeInputInfo, TeeRunInfo } from '@super-protocol/dto-js';
|
|
4
4
|
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
5
5
|
declare class TIIGenerator extends TeeInputGeneratorBase {
|
|
6
|
-
static
|
|
7
|
-
static
|
|
6
|
+
protected static buildTII(params: Pick<GenerateByOfferParams, 'offerId' | 'sgxApiUrl' | 'resource' | 'runtimeInputInfos' | 'encryption'>): Promise<TeeInputInfo>;
|
|
7
|
+
static generateByOffer(params: GenerateByOfferParams): Promise<string>;
|
|
8
|
+
static generate(orderId: BlockchainId, resource: Resource, args: unknown, encryption: Encryption, sgxApiUrl: string): Promise<string>;
|
|
8
9
|
static getTRI(tii: string, decryptionKey: Buffer): Promise<TeeRunInfo>;
|
|
9
10
|
static getUrl(tii: string, decryptionKey: Buffer): Promise<string>;
|
|
10
11
|
static getResource<T>(tii: string, decryptionKey: Buffer): Promise<T>;
|
|
11
12
|
}
|
|
12
13
|
export type GenerateByOfferParams = {
|
|
13
14
|
offerId: BlockchainId;
|
|
14
|
-
solutionHashes: Hash[];
|
|
15
|
-
imageHashes: Hash[];
|
|
16
|
-
linkageString: string | undefined;
|
|
17
15
|
resource: Resource;
|
|
18
|
-
args:
|
|
16
|
+
args: unknown;
|
|
19
17
|
encryption: Encryption;
|
|
20
18
|
sgxApiUrl: string;
|
|
19
|
+
runtimeInputInfos: RuntimeInputInfo[];
|
|
21
20
|
};
|
|
22
21
|
export default TIIGenerator;
|
package/dist/cjs/TIIGenerator.js
CHANGED
|
@@ -3,120 +3,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const node_gzip_1 = __importDefault(require("node-gzip"));
|
|
7
|
-
const Compression_js_1 = require("./proto/Compression.js");
|
|
8
|
-
const TRI_js_1 = require("./proto/TRI.js");
|
|
9
6
|
const index_js_1 = __importDefault(require("./crypto/index.js"));
|
|
10
7
|
const index_js_2 = require("./models/index.js");
|
|
11
|
-
const dto_js_1 = require("@super-protocol/dto-js");
|
|
12
8
|
const TeeInputGeneratorBase_js_1 = __importDefault(require("./TeeInputGeneratorBase.js"));
|
|
13
|
-
const { gzip, ungzip } = node_gzip_1.default;
|
|
14
9
|
class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
15
|
-
static async
|
|
16
|
-
const
|
|
10
|
+
static async buildTII(params) {
|
|
11
|
+
const triEncryption = await this.getVerifiedBlockEncryption(params.offerId, params.sgxApiUrl);
|
|
12
|
+
const teeOffer = new index_js_2.TeeOffer(params.offerId);
|
|
17
13
|
const teeOfferInfo = await teeOffer.getInfo();
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// TODO: check env with SP-149
|
|
27
|
-
const mac = encryption.authTag || encryption.mac;
|
|
28
|
-
const rawTri = {
|
|
29
|
-
solutionHashes: solutionHashes.map((hash) => ({
|
|
30
|
-
algo: hash.algo,
|
|
31
|
-
hash: Buffer.from(hash.hash, hash.encoding),
|
|
32
|
-
})),
|
|
33
|
-
imageHashes: imageHashes.map((hash) => ({
|
|
34
|
-
algo: hash.algo,
|
|
35
|
-
hash: Buffer.from(hash.hash, hash.encoding),
|
|
36
|
-
})),
|
|
37
|
-
mrenclave: Buffer.from(linkage.mrenclave, linkage.encoding),
|
|
38
|
-
mrsigner: Buffer.from(linkage.mrsigner, linkage.encoding),
|
|
39
|
-
args: JSON.stringify(args || ''),
|
|
40
|
-
encryption: {
|
|
41
|
-
...encryption,
|
|
42
|
-
ciphertext: encryption.ciphertext
|
|
43
|
-
? Buffer.from(encryption.ciphertext, encryption.encoding)
|
|
44
|
-
: undefined,
|
|
45
|
-
key: encryption.key ? Buffer.from(encryption.key, encryption.encoding) : undefined,
|
|
46
|
-
iv: encryption.iv
|
|
47
|
-
? Buffer.from(encryption.iv, encryption.encoding)
|
|
48
|
-
: undefined,
|
|
49
|
-
mac: mac ? Buffer.from(mac, encryption.encoding) : undefined,
|
|
50
|
-
},
|
|
14
|
+
const resourceEncryption = JSON.parse(teeOfferInfo.argsPublicKey);
|
|
15
|
+
const tri = {
|
|
16
|
+
runtimeInputInfos: params.runtimeInputInfos,
|
|
17
|
+
encryption: params.encryption,
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
encryptedResource: await index_js_1.default.encrypt(JSON.stringify(params.resource), resourceEncryption),
|
|
21
|
+
encryptedTRI: await index_js_1.default.encrypt(JSON.stringify(tri), triEncryption),
|
|
51
22
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}).finish();
|
|
57
|
-
return JSON.stringify({
|
|
58
|
-
encryptedResource: await index_js_1.default.encrypt(JSON.stringify(resource), JSON.parse(teeOfferInfo.argsPublicKey)),
|
|
59
|
-
tri: await index_js_1.default.encrypt(Buffer.from(compressedTri).toString(dto_js_1.Encoding.base64), blockEncryption),
|
|
60
|
-
});
|
|
23
|
+
}
|
|
24
|
+
static async generateByOffer(params) {
|
|
25
|
+
const tii = await this.buildTII(params);
|
|
26
|
+
return JSON.stringify(tii);
|
|
61
27
|
}
|
|
62
28
|
static async generate(orderId, resource, args, encryption, sgxApiUrl) {
|
|
63
29
|
const order = new index_js_2.Order(orderId);
|
|
64
30
|
const parentOrderId = await order.getParentOrder();
|
|
65
31
|
const parentOrder = new index_js_2.Order(parentOrderId);
|
|
66
32
|
const parentOrderInfo = await parentOrder.getOrderInfo();
|
|
67
|
-
const { solutionHashes, imageHashes, linkage } = await this.getOffersHashesAndLinkage(parentOrderInfo.args.inputOffersIds);
|
|
68
33
|
return this.generateByOffer({
|
|
69
34
|
offerId: parentOrderInfo.offerId,
|
|
70
|
-
solutionHashes,
|
|
71
|
-
imageHashes,
|
|
72
|
-
linkageString: linkage,
|
|
73
35
|
resource,
|
|
74
36
|
args,
|
|
75
37
|
encryption,
|
|
76
38
|
sgxApiUrl,
|
|
39
|
+
runtimeInputInfos: await this.generateRiiByOfferIds(parentOrderInfo.args.inputOffersIds),
|
|
77
40
|
});
|
|
78
41
|
}
|
|
79
42
|
static async getTRI(tii, decryptionKey) {
|
|
80
43
|
const tiiObj = JSON.parse(tii);
|
|
81
|
-
tiiObj.
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
let decompressed;
|
|
85
|
-
switch (compression.type) {
|
|
86
|
-
case Compression_js_1.Compression_TYPE.GZIP:
|
|
87
|
-
decompressed = await ungzip(compression.data);
|
|
88
|
-
break;
|
|
89
|
-
default:
|
|
90
|
-
throw Error('Unknown compression method');
|
|
91
|
-
}
|
|
92
|
-
const decoded = TRI_js_1.TRI.decode(decompressed);
|
|
93
|
-
return {
|
|
94
|
-
solutionHashes: decoded.solutionHashes.map((hash) => ({
|
|
95
|
-
hash: Buffer.from(hash.hash).toString(dto_js_1.Encoding.base64),
|
|
96
|
-
algo: hash.algo,
|
|
97
|
-
encoding: dto_js_1.Encoding.base64,
|
|
98
|
-
})),
|
|
99
|
-
imageHashes: decoded.imageHashes.map((hash) => ({
|
|
100
|
-
hash: Buffer.from(hash.hash).toString(dto_js_1.Encoding.base64),
|
|
101
|
-
algo: hash.algo,
|
|
102
|
-
encoding: dto_js_1.Encoding.base64,
|
|
103
|
-
})),
|
|
104
|
-
linkage: {
|
|
105
|
-
encoding: dto_js_1.Encoding.base64,
|
|
106
|
-
mrenclave: Buffer.from(decoded.mrenclave).toString(dto_js_1.Encoding.base64),
|
|
107
|
-
mrsigner: Buffer.from(decoded.mrsigner).toString(dto_js_1.Encoding.base64),
|
|
108
|
-
},
|
|
109
|
-
args: decoded.args,
|
|
110
|
-
encryption: {
|
|
111
|
-
algo: decoded.encryption.algo,
|
|
112
|
-
cipher: decoded.encryption.cipher,
|
|
113
|
-
encoding: dto_js_1.Encoding.base64,
|
|
114
|
-
key: Buffer.from(decoded.encryption.key).toString(dto_js_1.Encoding.base64),
|
|
115
|
-
iv: decoded.encryption.iv && Buffer.from(decoded.encryption.iv).toString(dto_js_1.Encoding.base64),
|
|
116
|
-
mac: decoded.encryption.mac &&
|
|
117
|
-
Buffer.from(decoded.encryption.mac).toString(dto_js_1.Encoding.base64),
|
|
118
|
-
},
|
|
119
|
-
};
|
|
44
|
+
tiiObj.encryptedTRI.key = decryptionKey.toString(tiiObj.encryptedTRI.encoding);
|
|
45
|
+
const stringTri = await index_js_1.default.decrypt(tiiObj.encryptedTRI);
|
|
46
|
+
return JSON.parse(stringTri);
|
|
120
47
|
}
|
|
121
48
|
static async getUrl(tii, decryptionKey) {
|
|
122
49
|
const res = await TIIGenerator.getResource(tii, decryptionKey);
|
|
@@ -130,4 +57,4 @@ class TIIGenerator extends TeeInputGeneratorBase_js_1.default {
|
|
|
130
57
|
}
|
|
131
58
|
}
|
|
132
59
|
exports.default = TIIGenerator;
|
|
133
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlFQUF1QztBQUN2QyxnREFBb0Q7QUFVcEQsMEZBQStEO0FBRS9ELE1BQU0sWUFBYSxTQUFRLGtDQUFxQjtJQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FDN0IsTUFHQztRQUVELE1BQU0sYUFBYSxHQUFlLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUNyRSxNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBYSxJQUFJLG1CQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFpQixNQUFNLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sR0FBRyxHQUFlO1lBQ3RCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7WUFDM0MsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQzlCLENBQUM7UUFDRixPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxrQkFBa0IsQ0FBQztZQUM1RixZQUFZLEVBQUUsTUFBTSxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQztTQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQTZCO1FBQ3hELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUMxQixPQUFxQixFQUNyQixRQUFrQixFQUNsQixJQUFhLEVBQ2IsVUFBc0IsRUFDdEIsU0FBaUI7UUFFakIsTUFBTSxLQUFLLEdBQVUsSUFBSSxnQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLE1BQU0sS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sV0FBVyxHQUFVLElBQUksZ0JBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBYyxNQUFNLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDMUIsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1lBQ2hDLFFBQVE7WUFDUixJQUFJO1lBQ0osVUFBVTtZQUNWLFNBQVM7WUFDVCxpQkFBaUIsRUFBRSxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN6RixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzNELE1BQU0sTUFBTSxHQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRSxNQUFNLFNBQVMsR0FBVyxNQUFNLGtCQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQVcsRUFBRSxhQUFxQjtRQUNwRCxNQUFNLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxXQUFXLENBQWMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUksR0FBVyxFQUFFLGFBQXFCO1FBQzVELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxpQkFBK0IsQ0FBQztRQUMxRSxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRSxNQUFNLFFBQVEsR0FBVyxNQUFNLGtCQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFakUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBTSxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQVdELGtCQUFlLFlBQVksQ0FBQyJ9
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import { Encryption,
|
|
1
|
+
import { Encryption, RuntimeInputInfo } from '@super-protocol/dto-js';
|
|
2
2
|
import { BlockchainId } from './types/index.js';
|
|
3
3
|
export default class TeeInputGeneratorBase {
|
|
4
|
-
static
|
|
5
|
-
|
|
6
|
-
imageHashes: Hash[];
|
|
7
|
-
dataHashes: Hash[];
|
|
8
|
-
linkage?: string;
|
|
9
|
-
}>;
|
|
4
|
+
protected static generateRiiByOfferId(offerId: string): Promise<RuntimeInputInfo | null>;
|
|
5
|
+
static generateRiiByOfferIds(inputOffersIds: BlockchainId[]): Promise<RuntimeInputInfo[]>;
|
|
10
6
|
static encryptByTeeBlock(offerId: string, data: string, sgxApiUrl: string): Promise<Encryption>;
|
|
11
7
|
protected static getVerifiedBlockEncryption(offerId: string, sgxApiUrl: string): Promise<Encryption>;
|
|
12
8
|
}
|
|
@@ -10,42 +10,48 @@ const index_js_3 = __importDefault(require("./crypto/index.js"));
|
|
|
10
10
|
const TeeBlockVerifier_js_1 = require("./tee/TeeBlockVerifier.js");
|
|
11
11
|
const constants_js_1 = require("./constants.js");
|
|
12
12
|
class TeeInputGeneratorBase {
|
|
13
|
-
static async
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
13
|
+
static async generateRiiByOfferId(offerId) {
|
|
14
|
+
const offer = new index_js_1.Offer(offerId);
|
|
15
|
+
const offerInfo = await offer.getInfo();
|
|
16
|
+
const calcType = (offerType, offer) => {
|
|
17
|
+
switch (offerType) {
|
|
18
|
+
case index_js_2.OfferType.Solution: {
|
|
19
|
+
const isBaseImage = offer.isBaseImage();
|
|
20
|
+
const isOfferPublic = offer.isOfferPublic();
|
|
21
|
+
if (!isBaseImage) {
|
|
22
|
+
return 'Solution';
|
|
23
|
+
}
|
|
24
|
+
else if (!isOfferPublic) {
|
|
25
|
+
return 'Image';
|
|
26
|
+
}
|
|
27
|
+
break;
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
imageHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (offerInfo.offerType === index_js_2.OfferType.Data) {
|
|
35
|
-
dataHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH);
|
|
29
|
+
case index_js_2.OfferType.Data:
|
|
30
|
+
return 'Data';
|
|
36
31
|
}
|
|
37
|
-
}
|
|
32
|
+
};
|
|
33
|
+
const type = calcType(offerInfo.offerType, offer);
|
|
34
|
+
if (!type) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const hardwareContext = offerInfo.hardwareContext && JSON.parse(offerInfo.hardwareContext);
|
|
38
38
|
return {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
args: undefined,
|
|
40
|
+
hash: offerInfo.hash ? JSON.parse(offerInfo.hash) : constants_js_1.ZERO_HASH,
|
|
41
|
+
...(offerInfo.signatureKeyHash && {
|
|
42
|
+
signatureKeyHash: JSON.parse(offerInfo.signatureKeyHash),
|
|
43
|
+
}),
|
|
44
|
+
type,
|
|
45
|
+
...(hardwareContext && { hardwareContext }),
|
|
43
46
|
};
|
|
44
47
|
}
|
|
48
|
+
static async generateRiiByOfferIds(inputOffersIds) {
|
|
49
|
+
const inputs = await Promise.all(inputOffersIds.map(this.generateRiiByOfferId));
|
|
50
|
+
return inputs.filter(Boolean);
|
|
51
|
+
}
|
|
45
52
|
static async encryptByTeeBlock(offerId, data, sgxApiUrl) {
|
|
46
53
|
const encryption = await this.getVerifiedBlockEncryption(offerId, sgxApiUrl);
|
|
47
|
-
|
|
48
|
-
return encryptedInfo;
|
|
54
|
+
return index_js_3.default.encrypt(data, encryption);
|
|
49
55
|
}
|
|
50
56
|
static async getVerifiedBlockEncryption(offerId, sgxApiUrl) {
|
|
51
57
|
const teeOffer = new index_js_1.TeeOffer(offerId);
|
|
@@ -57,13 +63,12 @@ class TeeInputGeneratorBase {
|
|
|
57
63
|
const { pubKey, quote } = await tcb.getUtilityData();
|
|
58
64
|
await TeeBlockVerifier_js_1.TeeBlockVerifier.verifyTcb(tcb, quote, pubKey, sgxApiUrl);
|
|
59
65
|
// TODO: must be 'blockEncryption = JSON.parse(pubKey);'
|
|
60
|
-
|
|
66
|
+
return {
|
|
61
67
|
algo: dto_js_1.CryptoAlgorithm.ECIES,
|
|
62
68
|
key: pubKey,
|
|
63
69
|
encoding: dto_js_1.Encoding.base64,
|
|
64
70
|
};
|
|
65
|
-
return encryption;
|
|
66
71
|
}
|
|
67
72
|
}
|
|
68
73
|
exports.default = TeeInputGeneratorBase;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlSW5wdXRHZW5lcmF0b3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RlZUlucHV0R2VuZXJhdG9yQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG1EQU1nQztBQUNoQyxnREFBeUQ7QUFDekQsK0NBQXNFO0FBQ3RFLGlFQUF1QztBQUN2QyxtRUFBNkQ7QUFDN0QsaURBQTJDO0FBRTNDLE1BQXFCLHFCQUFxQjtJQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE9BQWU7UUFDekQsTUFBTSxLQUFLLEdBQVUsSUFBSSxnQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFjLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLENBQUMsU0FBb0IsRUFBRSxLQUFZLEVBQXVCLEVBQUU7WUFDM0UsUUFBUSxTQUFTLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxvQkFBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ2pCLE9BQU8sVUFBVSxDQUFDO29CQUNwQixDQUFDO3lCQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDMUIsT0FBTyxPQUFPLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsTUFBTTtnQkFDUixDQUFDO2dCQUNELEtBQUssb0JBQVMsQ0FBQyxJQUFJO29CQUNqQixPQUFPLE1BQU0sQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxlQUFlLEdBQ25CLFNBQVMsQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckUsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyx3QkFBUztZQUM3RCxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixJQUFJO2dCQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQzthQUN6RCxDQUFDO1lBQ0YsSUFBSTtZQUNKLEdBQUcsQ0FBQyxlQUFlLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQztTQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsY0FBOEI7UUFDL0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUVoRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUF1QixDQUFDO0lBQ3RELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUM1QixPQUFlLEVBQ2YsSUFBWSxFQUNaLFNBQWlCO1FBRWpCLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU3RSxPQUFPLGtCQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FDL0MsT0FBZSxFQUNmLFNBQWlCO1FBRWpCLE1BQU0sUUFBUSxHQUFhLElBQUksbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUU5QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3JELE1BQU0sc0NBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWhFLHdEQUF3RDtRQUN4RCxPQUFPO1lBQ0wsSUFBSSxFQUFFLHdCQUFlLENBQUMsS0FBSztZQUMzQixHQUFHLEVBQUUsTUFBTTtZQUNYLFFBQVEsRUFBRSxpQkFBUSxDQUFDLE1BQU07U0FDMUIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTVFRCx3Q0E0RUMifQ==
|