@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/mjs/RIGenerator.js
CHANGED
|
@@ -23,10 +23,7 @@ class RIGenerator extends TeeInputGeneratorBase {
|
|
|
23
23
|
};
|
|
24
24
|
const orderInfoToEncrypt = {
|
|
25
25
|
publicKey: resultEncryption,
|
|
26
|
-
|
|
27
|
-
dataHashes: params.dataHashes || [],
|
|
28
|
-
imageHashes: params.imageHashes || [],
|
|
29
|
-
linkage: params.linkage ?? '',
|
|
26
|
+
runtimeInputInfos: params.runtimeInputInfos,
|
|
30
27
|
...(params.argsHash && { argsHash: params.argsHash }),
|
|
31
28
|
};
|
|
32
29
|
const encryptedInfo = await this.encryptByTeeBlock(params.offerId, JSON.stringify(orderInfoToEncrypt), params.pccsServiceApiUrl);
|
|
@@ -44,4 +41,4 @@ class RIGenerator extends TeeInputGeneratorBase {
|
|
|
44
41
|
}
|
|
45
42
|
}
|
|
46
43
|
export default RIGenerator;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUklHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUklHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFFBQVEsRUFDUixlQUFlLEVBRWYsYUFBYSxHQUVkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLHFCQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE1BQU0sV0FBWSxTQUFRLHFCQUFxQjtJQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLG1CQUFrQztRQUNsRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ25FLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FDMUQsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUMzQixRQUFRLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtZQUNwQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUs7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQU1yQjtRQUNDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUxRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFJLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLFNBQVMsR0FBRztZQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDbEQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3pCLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSztTQUNkLENBQUM7UUFFaEIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUN0RCxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN4QixtQkFBK0IsRUFDL0IsVUFBa0I7UUFFbEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQy9CLEdBQUcsbUJBQW1CO1lBQ3RCLEdBQUcsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztTQUN2RCxDQUFDLENBQUM7UUFFSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBRUQsZUFBZSxXQUFXLENBQUMifQ==
|
|
@@ -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/mjs/TIIGenerator.js
CHANGED
|
@@ -1,117 +1,44 @@
|
|
|
1
|
-
import nodeGzip from 'node-gzip';
|
|
2
|
-
import { Compression, Compression_TYPE } from './proto/Compression.js';
|
|
3
|
-
import { TRI } from './proto/TRI.js';
|
|
4
1
|
import Crypto from './crypto/index.js';
|
|
5
2
|
import { Order, TeeOffer } from './models/index.js';
|
|
6
|
-
import { Encoding, } from '@super-protocol/dto-js';
|
|
7
3
|
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
8
|
-
const { gzip, ungzip } = nodeGzip;
|
|
9
4
|
class TIIGenerator extends TeeInputGeneratorBase {
|
|
10
|
-
static async
|
|
11
|
-
const
|
|
5
|
+
static async buildTII(params) {
|
|
6
|
+
const triEncryption = await this.getVerifiedBlockEncryption(params.offerId, params.sgxApiUrl);
|
|
7
|
+
const teeOffer = new TeeOffer(params.offerId);
|
|
12
8
|
const teeOfferInfo = await teeOffer.getInfo();
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
// TODO: check env with SP-149
|
|
22
|
-
const mac = encryption.authTag || encryption.mac;
|
|
23
|
-
const rawTri = {
|
|
24
|
-
solutionHashes: solutionHashes.map((hash) => ({
|
|
25
|
-
algo: hash.algo,
|
|
26
|
-
hash: Buffer.from(hash.hash, hash.encoding),
|
|
27
|
-
})),
|
|
28
|
-
imageHashes: imageHashes.map((hash) => ({
|
|
29
|
-
algo: hash.algo,
|
|
30
|
-
hash: Buffer.from(hash.hash, hash.encoding),
|
|
31
|
-
})),
|
|
32
|
-
mrenclave: Buffer.from(linkage.mrenclave, linkage.encoding),
|
|
33
|
-
mrsigner: Buffer.from(linkage.mrsigner, linkage.encoding),
|
|
34
|
-
args: JSON.stringify(args || ''),
|
|
35
|
-
encryption: {
|
|
36
|
-
...encryption,
|
|
37
|
-
ciphertext: encryption.ciphertext
|
|
38
|
-
? Buffer.from(encryption.ciphertext, encryption.encoding)
|
|
39
|
-
: undefined,
|
|
40
|
-
key: encryption.key ? Buffer.from(encryption.key, encryption.encoding) : undefined,
|
|
41
|
-
iv: encryption.iv
|
|
42
|
-
? Buffer.from(encryption.iv, encryption.encoding)
|
|
43
|
-
: undefined,
|
|
44
|
-
mac: mac ? Buffer.from(mac, encryption.encoding) : undefined,
|
|
45
|
-
},
|
|
9
|
+
const resourceEncryption = JSON.parse(teeOfferInfo.argsPublicKey);
|
|
10
|
+
const tri = {
|
|
11
|
+
runtimeInputInfos: params.runtimeInputInfos,
|
|
12
|
+
encryption: params.encryption,
|
|
13
|
+
};
|
|
14
|
+
return {
|
|
15
|
+
encryptedResource: await Crypto.encrypt(JSON.stringify(params.resource), resourceEncryption),
|
|
16
|
+
encryptedTRI: await Crypto.encrypt(JSON.stringify(tri), triEncryption),
|
|
46
17
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}).finish();
|
|
52
|
-
return JSON.stringify({
|
|
53
|
-
encryptedResource: await Crypto.encrypt(JSON.stringify(resource), JSON.parse(teeOfferInfo.argsPublicKey)),
|
|
54
|
-
tri: await Crypto.encrypt(Buffer.from(compressedTri).toString(Encoding.base64), blockEncryption),
|
|
55
|
-
});
|
|
18
|
+
}
|
|
19
|
+
static async generateByOffer(params) {
|
|
20
|
+
const tii = await this.buildTII(params);
|
|
21
|
+
return JSON.stringify(tii);
|
|
56
22
|
}
|
|
57
23
|
static async generate(orderId, resource, args, encryption, sgxApiUrl) {
|
|
58
24
|
const order = new Order(orderId);
|
|
59
25
|
const parentOrderId = await order.getParentOrder();
|
|
60
26
|
const parentOrder = new Order(parentOrderId);
|
|
61
27
|
const parentOrderInfo = await parentOrder.getOrderInfo();
|
|
62
|
-
const { solutionHashes, imageHashes, linkage } = await this.getOffersHashesAndLinkage(parentOrderInfo.args.inputOffersIds);
|
|
63
28
|
return this.generateByOffer({
|
|
64
29
|
offerId: parentOrderInfo.offerId,
|
|
65
|
-
solutionHashes,
|
|
66
|
-
imageHashes,
|
|
67
|
-
linkageString: linkage,
|
|
68
30
|
resource,
|
|
69
31
|
args,
|
|
70
32
|
encryption,
|
|
71
33
|
sgxApiUrl,
|
|
34
|
+
runtimeInputInfos: await this.generateRiiByOfferIds(parentOrderInfo.args.inputOffersIds),
|
|
72
35
|
});
|
|
73
36
|
}
|
|
74
37
|
static async getTRI(tii, decryptionKey) {
|
|
75
38
|
const tiiObj = JSON.parse(tii);
|
|
76
|
-
tiiObj.
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
let decompressed;
|
|
80
|
-
switch (compression.type) {
|
|
81
|
-
case Compression_TYPE.GZIP:
|
|
82
|
-
decompressed = await ungzip(compression.data);
|
|
83
|
-
break;
|
|
84
|
-
default:
|
|
85
|
-
throw Error('Unknown compression method');
|
|
86
|
-
}
|
|
87
|
-
const decoded = TRI.decode(decompressed);
|
|
88
|
-
return {
|
|
89
|
-
solutionHashes: decoded.solutionHashes.map((hash) => ({
|
|
90
|
-
hash: Buffer.from(hash.hash).toString(Encoding.base64),
|
|
91
|
-
algo: hash.algo,
|
|
92
|
-
encoding: Encoding.base64,
|
|
93
|
-
})),
|
|
94
|
-
imageHashes: decoded.imageHashes.map((hash) => ({
|
|
95
|
-
hash: Buffer.from(hash.hash).toString(Encoding.base64),
|
|
96
|
-
algo: hash.algo,
|
|
97
|
-
encoding: Encoding.base64,
|
|
98
|
-
})),
|
|
99
|
-
linkage: {
|
|
100
|
-
encoding: Encoding.base64,
|
|
101
|
-
mrenclave: Buffer.from(decoded.mrenclave).toString(Encoding.base64),
|
|
102
|
-
mrsigner: Buffer.from(decoded.mrsigner).toString(Encoding.base64),
|
|
103
|
-
},
|
|
104
|
-
args: decoded.args,
|
|
105
|
-
encryption: {
|
|
106
|
-
algo: decoded.encryption.algo,
|
|
107
|
-
cipher: decoded.encryption.cipher,
|
|
108
|
-
encoding: Encoding.base64,
|
|
109
|
-
key: Buffer.from(decoded.encryption.key).toString(Encoding.base64),
|
|
110
|
-
iv: decoded.encryption.iv && Buffer.from(decoded.encryption.iv).toString(Encoding.base64),
|
|
111
|
-
mac: decoded.encryption.mac &&
|
|
112
|
-
Buffer.from(decoded.encryption.mac).toString(Encoding.base64),
|
|
113
|
-
},
|
|
114
|
-
};
|
|
39
|
+
tiiObj.encryptedTRI.key = decryptionKey.toString(tiiObj.encryptedTRI.encoding);
|
|
40
|
+
const stringTri = await Crypto.decrypt(tiiObj.encryptedTRI);
|
|
41
|
+
return JSON.parse(stringTri);
|
|
115
42
|
}
|
|
116
43
|
static async getUrl(tii, decryptionKey) {
|
|
117
44
|
const res = await TIIGenerator.getResource(tii, decryptionKey);
|
|
@@ -125,4 +52,4 @@ class TIIGenerator extends TeeInputGeneratorBase {
|
|
|
125
52
|
}
|
|
126
53
|
}
|
|
127
54
|
export default TIIGenerator;
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBVXBELE9BQU8scUJBQXFCLE1BQU0sNEJBQTRCLENBQUM7QUFFL0QsTUFBTSxZQUFhLFNBQVEscUJBQXFCO0lBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUM3QixNQUdDO1FBRUQsTUFBTSxhQUFhLEdBQWUsTUFBTSxJQUFJLENBQUMsMEJBQTBCLENBQ3JFLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsTUFBTSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBaUIsTUFBTSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUQsTUFBTSxrQkFBa0IsR0FBZSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RSxNQUFNLEdBQUcsR0FBZTtZQUN0QixpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCO1lBQzNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUM5QixDQUFDO1FBQ0YsT0FBTztZQUNMLGlCQUFpQixFQUFFLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxrQkFBa0IsQ0FBQztZQUM1RixZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDO1NBQ3ZFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBNkI7UUFDeEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQzFCLE9BQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLElBQWEsRUFDYixVQUFzQixFQUN0QixTQUFpQjtRQUVqQixNQUFNLEtBQUssR0FBVSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4QyxNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBVSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBYyxNQUFNLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDMUIsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1lBQ2hDLFFBQVE7WUFDUixJQUFJO1lBQ0osVUFBVTtZQUNWLFNBQVM7WUFDVCxpQkFBaUIsRUFBRSxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN6RixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzNELE1BQU0sTUFBTSxHQUFpQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRSxNQUFNLFNBQVMsR0FBVyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXBFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQ3BELE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLFdBQVcsQ0FBYyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFNUUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBSSxHQUFXLEVBQUUsYUFBcUI7UUFDNUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUErQixDQUFDO1FBQzFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sUUFBUSxHQUFXLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQU0sQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFXRCxlQUFlLFlBQVksQ0FBQyJ9
|
|
@@ -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
|
}
|
|
@@ -1,46 +1,52 @@
|
|
|
1
|
-
import { CryptoAlgorithm, Encoding } from '@super-protocol/dto-js';
|
|
2
|
-
import {
|
|
1
|
+
import { CryptoAlgorithm, Encoding, } from '@super-protocol/dto-js';
|
|
2
|
+
import { Offer, TCB, TeeOffer } from './models/index.js';
|
|
3
3
|
import { OfferType } from './types/index.js';
|
|
4
4
|
import Crypto from './crypto/index.js';
|
|
5
5
|
import { TeeBlockVerifier } from './tee/TeeBlockVerifier.js';
|
|
6
6
|
import { ZERO_HASH } from './constants.js';
|
|
7
7
|
export default class TeeInputGeneratorBase {
|
|
8
|
-
static async
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
static async generateRiiByOfferId(offerId) {
|
|
9
|
+
const offer = new Offer(offerId);
|
|
10
|
+
const offerInfo = await offer.getInfo();
|
|
11
|
+
const calcType = (offerType, offer) => {
|
|
12
|
+
switch (offerType) {
|
|
13
|
+
case OfferType.Solution: {
|
|
14
|
+
const isBaseImage = offer.isBaseImage();
|
|
15
|
+
const isOfferPublic = offer.isOfferPublic();
|
|
16
|
+
if (!isBaseImage) {
|
|
17
|
+
return 'Solution';
|
|
18
|
+
}
|
|
19
|
+
else if (!isOfferPublic) {
|
|
20
|
+
return 'Image';
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
23
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
imageHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : ZERO_HASH);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (offerInfo.offerType === OfferType.Data) {
|
|
30
|
-
dataHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : ZERO_HASH);
|
|
24
|
+
case OfferType.Data:
|
|
25
|
+
return 'Data';
|
|
31
26
|
}
|
|
32
|
-
}
|
|
27
|
+
};
|
|
28
|
+
const type = calcType(offerInfo.offerType, offer);
|
|
29
|
+
if (!type) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const hardwareContext = offerInfo.hardwareContext && JSON.parse(offerInfo.hardwareContext);
|
|
33
33
|
return {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
args: undefined,
|
|
35
|
+
hash: offerInfo.hash ? JSON.parse(offerInfo.hash) : ZERO_HASH,
|
|
36
|
+
...(offerInfo.signatureKeyHash && {
|
|
37
|
+
signatureKeyHash: JSON.parse(offerInfo.signatureKeyHash),
|
|
38
|
+
}),
|
|
39
|
+
type,
|
|
40
|
+
...(hardwareContext && { hardwareContext }),
|
|
38
41
|
};
|
|
39
42
|
}
|
|
43
|
+
static async generateRiiByOfferIds(inputOffersIds) {
|
|
44
|
+
const inputs = await Promise.all(inputOffersIds.map(this.generateRiiByOfferId));
|
|
45
|
+
return inputs.filter(Boolean);
|
|
46
|
+
}
|
|
40
47
|
static async encryptByTeeBlock(offerId, data, sgxApiUrl) {
|
|
41
48
|
const encryption = await this.getVerifiedBlockEncryption(offerId, sgxApiUrl);
|
|
42
|
-
|
|
43
|
-
return encryptedInfo;
|
|
49
|
+
return Crypto.encrypt(data, encryption);
|
|
44
50
|
}
|
|
45
51
|
static async getVerifiedBlockEncryption(offerId, sgxApiUrl) {
|
|
46
52
|
const teeOffer = new TeeOffer(offerId);
|
|
@@ -52,12 +58,11 @@ export default class TeeInputGeneratorBase {
|
|
|
52
58
|
const { pubKey, quote } = await tcb.getUtilityData();
|
|
53
59
|
await TeeBlockVerifier.verifyTcb(tcb, quote, pubKey, sgxApiUrl);
|
|
54
60
|
// TODO: must be 'blockEncryption = JSON.parse(pubKey);'
|
|
55
|
-
|
|
61
|
+
return {
|
|
56
62
|
algo: CryptoAlgorithm.ECIES,
|
|
57
63
|
key: pubKey,
|
|
58
64
|
encoding: Encoding.base64,
|
|
59
65
|
};
|
|
60
|
-
return encryption;
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlSW5wdXRHZW5lcmF0b3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RlZUlucHV0R2VuZXJhdG9yQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLFFBQVEsR0FJVCxNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBMkIsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEUsT0FBTyxNQUFNLE1BQU0sbUJBQW1CLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsT0FBZTtRQUN6RCxNQUFNLEtBQUssR0FBVSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBYyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQW9CLEVBQUUsS0FBWSxFQUF1QixFQUFFO1lBQzNFLFFBQVEsU0FBUyxFQUFFLENBQUM7Z0JBQ2xCLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3hCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDeEMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUM1QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ2pCLE9BQU8sVUFBVSxDQUFDO29CQUNwQixDQUFDO3lCQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUs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
|