@super-protocol/sdk-js 2.1.9-beta.1 → 2.1.9-beta.3
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 +17 -0
- package/dist/cjs/RIGenerator.js +50 -0
- package/dist/cjs/TIIGenerator.d.ts +12 -15
- package/dist/cjs/TIIGenerator.js +14 -137
- package/dist/cjs/TeeInputGeneratorBase.d.ts +11 -0
- package/dist/cjs/TeeInputGeneratorBase.js +79 -0
- package/dist/cjs/constants.d.ts +2 -0
- package/dist/cjs/constants.js +8 -2
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +8 -2
- 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/tee/TeeBlockVerifier.d.ts +10 -0
- package/dist/cjs/tee/TeeBlockVerifier.js +86 -0
- package/dist/cjs/types/Order.d.ts +8 -6
- package/dist/cjs/types/Order.js +1 -1
- package/dist/cjs/utils/helpers/index.d.ts +0 -1
- package/dist/cjs/utils/helpers/index.js +1 -2
- package/dist/mjs/RIGenerator.d.ts +17 -0
- package/dist/mjs/RIGenerator.js +45 -0
- package/dist/mjs/TIIGenerator.d.ts +12 -15
- package/dist/mjs/TIIGenerator.js +16 -139
- package/dist/mjs/TeeInputGeneratorBase.d.ts +11 -0
- package/dist/mjs/TeeInputGeneratorBase.js +73 -0
- package/dist/mjs/constants.d.ts +2 -0
- package/dist/mjs/constants.js +7 -1
- package/dist/mjs/index.d.ts +4 -0
- package/dist/mjs/index.js +5 -1
- 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/tee/TeeBlockVerifier.d.ts +10 -0
- package/dist/mjs/tee/TeeBlockVerifier.js +79 -0
- package/dist/mjs/types/Order.d.ts +8 -6
- package/dist/mjs/types/Order.js +1 -1
- package/dist/mjs/utils/helpers/index.d.ts +0 -1
- package/dist/mjs/utils/helpers/index.js +1 -2
- package/package.json +2 -3
- package/dist/cjs/utils/helpers/orderHelpers.d.ts +0 -12
- package/dist/cjs/utils/helpers/orderHelpers.js +0 -42
- package/dist/mjs/utils/helpers/orderHelpers.d.ts +0 -12
- package/dist/mjs/utils/helpers/orderHelpers.js +0 -34
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TLBlockUnserializeResultType } from '@super-protocol/tee-lib';
|
|
2
|
+
import { TCB } from '../models/index.js';
|
|
3
|
+
import { BlockchainId } from '../types/index.js';
|
|
4
|
+
export declare class TeeBlockVerifier {
|
|
5
|
+
static verifiedTlbHashes: Map<string, string>;
|
|
6
|
+
static verifiedTcbs: Set<BlockchainId>;
|
|
7
|
+
private static checkQuote;
|
|
8
|
+
static verifyTcb(tcb: TCB, quoteString: string, pubKey: string, sgxApiUrl: string): Promise<void>;
|
|
9
|
+
static verifyTlb(tlb: TLBlockUnserializeResultType, tlbString: string, offerId: string, sgxApiUrl: string): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TeeBlockVerifier = void 0;
|
|
7
|
+
const dto_js_1 = require("@super-protocol/dto-js");
|
|
8
|
+
const tee_lib_1 = require("@super-protocol/tee-lib");
|
|
9
|
+
const logger_js_1 = __importDefault(require("../logger.js"));
|
|
10
|
+
const config_js_1 = require("../config.js");
|
|
11
|
+
const QuoteParser_js_1 = require("./QuoteParser.js");
|
|
12
|
+
const QuoteValidator_js_1 = require("./QuoteValidator.js");
|
|
13
|
+
const statuses_js_1 = require("./statuses.js");
|
|
14
|
+
const index_js_1 = __importDefault(require("../crypto/index.js"));
|
|
15
|
+
class TeeBlockVerifier {
|
|
16
|
+
static verifiedTlbHashes = new Map();
|
|
17
|
+
static verifiedTcbs = new Set();
|
|
18
|
+
static async checkQuote(quote, dataBlob, sgxApiUrl) {
|
|
19
|
+
const quoteBuffer = Buffer.from(quote);
|
|
20
|
+
const validator = new QuoteValidator_js_1.QuoteValidator(sgxApiUrl);
|
|
21
|
+
const quoteStatus = await validator.validate(quoteBuffer);
|
|
22
|
+
if (quoteStatus.quoteValidationStatus !== statuses_js_1.QuoteValidationStatuses.UpToDate) {
|
|
23
|
+
if (quoteStatus.quoteValidationStatus === statuses_js_1.QuoteValidationStatuses.Error) {
|
|
24
|
+
throw new Error('Quote is invalid');
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
logger_js_1.default.warn(quoteStatus, 'Quote validation status is not UpToDate');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const userDataCheckResult = await validator.isQuoteHasUserData(quoteBuffer, Buffer.from(dataBlob));
|
|
31
|
+
if (!userDataCheckResult) {
|
|
32
|
+
throw new Error('Quote has invalid user data');
|
|
33
|
+
}
|
|
34
|
+
const parser = new QuoteParser_js_1.TeeSgxParser();
|
|
35
|
+
const parsedQuote = parser.parseQuote(quote);
|
|
36
|
+
const report = parser.parseReport(parsedQuote.report);
|
|
37
|
+
if (report.mrSigner.toString('hex') !== config_js_1.config.TEE_LOADER_TRUSTED_MRSIGNER) {
|
|
38
|
+
throw new Error('Quote has invalid MR signer');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
static async verifyTcb(tcb, quoteString, pubKey, sgxApiUrl) {
|
|
42
|
+
// check cache
|
|
43
|
+
if (this.verifiedTcbs.has(tcb.tcbId)) {
|
|
44
|
+
logger_js_1.default.trace(`Tcb id = ${tcb.tcbId}, already validated`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const quote = Buffer.from(quoteString, 'base64');
|
|
48
|
+
const signedTcbData = {
|
|
49
|
+
checkingTcbId: tcb.tcbId.toString(),
|
|
50
|
+
pubKey,
|
|
51
|
+
...(await tcb.getPublicData()),
|
|
52
|
+
};
|
|
53
|
+
const serializer = new tee_lib_1.TLBlockSerializerV1();
|
|
54
|
+
const dataBlob = await serializer.serializeAnyData(signedTcbData);
|
|
55
|
+
await this.checkQuote(quote, dataBlob, sgxApiUrl);
|
|
56
|
+
// update cache
|
|
57
|
+
this.verifiedTcbs.add(tcb.tcbId);
|
|
58
|
+
if (this.verifiedTcbs.size > config_js_1.config.TLB_CACHE_SIZE) {
|
|
59
|
+
const [value] = this.verifiedTcbs.entries().next().value;
|
|
60
|
+
this.verifiedTcbs.delete(value);
|
|
61
|
+
logger_js_1.default.trace(value, `TCB id = ${value} removed from the cache. Cache size: ${this.verifiedTcbs.size}, cache limit: ${config_js_1.config.TLB_CACHE_SIZE}`);
|
|
62
|
+
}
|
|
63
|
+
logger_js_1.default.trace(tcb.tcbId, `TCB id = ${tcb.tcbId} added to the cache. Cache size: ${this.verifiedTcbs.size}, cache limit: ${config_js_1.config.TLB_CACHE_SIZE}`);
|
|
64
|
+
}
|
|
65
|
+
static async verifyTlb(tlb, tlbString, offerId, sgxApiUrl) {
|
|
66
|
+
const tlbHash = await index_js_1.default.createHash(Buffer.from(tlbString), {
|
|
67
|
+
algo: dto_js_1.HashAlgorithm.SHA256,
|
|
68
|
+
encoding: dto_js_1.Encoding.base64,
|
|
69
|
+
});
|
|
70
|
+
if (this.verifiedTlbHashes.has(tlbHash.hash)) {
|
|
71
|
+
logger_js_1.default.trace(tlbHash, `TLB hash of offer ${this.verifiedTlbHashes.get(tlbHash.hash)} loaded from the cache. Cache size: ${this.verifiedTlbHashes.size}, cache limit: ${config_js_1.config.TLB_CACHE_SIZE}`);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const quoteBuffer = Buffer.from(tlb.quote);
|
|
75
|
+
await this.checkQuote(quoteBuffer, tlb.dataBlob, sgxApiUrl);
|
|
76
|
+
this.verifiedTlbHashes.set(tlbHash.hash, offerId);
|
|
77
|
+
if (this.verifiedTlbHashes.size > config_js_1.config.TLB_CACHE_SIZE) {
|
|
78
|
+
const [key, value] = this.verifiedTlbHashes.entries().next().value;
|
|
79
|
+
this.verifiedTlbHashes.delete(key);
|
|
80
|
+
logger_js_1.default.trace(key, `TLB hash of offer ${value} removed from the cache. Cache size: ${this.verifiedTlbHashes.size}, cache limit: ${config_js_1.config.TLB_CACHE_SIZE}`);
|
|
81
|
+
}
|
|
82
|
+
logger_js_1.default.trace(tlbHash.hash, `TLB hash of offer ${offerId} added to the cache. Cache size: ${this.verifiedTlbHashes.size}, cache limit: ${config_js_1.config.TLB_CACHE_SIZE}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.TeeBlockVerifier = TeeBlockVerifier;
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBaUU7QUFDakUscURBQTRGO0FBQzVGLDZEQUFrQztBQUNsQyw0Q0FBc0M7QUFFdEMscURBQWdEO0FBQ2hELDJEQUFxRDtBQUNyRCwrQ0FBd0Q7QUFFeEQsa0VBQXdDO0FBRXhDLE1BQWEsZ0JBQWdCO0lBQzNCLE1BQU0sQ0FBQyxpQkFBaUIsR0FBd0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMxRCxNQUFNLENBQUMsWUFBWSxHQUFzQixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTNDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUM3QixLQUFpQixFQUNqQixRQUFvQixFQUNwQixTQUFpQjtRQUVqQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksa0NBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxXQUFXLENBQUMscUJBQXFCLEtBQUsscUNBQXVCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0UsSUFBSSxXQUFXLENBQUMscUJBQXFCLEtBQUsscUNBQXVCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3hFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN0QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sbUJBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLHlDQUF5QyxDQUFDLENBQUM7WUFDdEUsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sU0FBUyxDQUFDLGtCQUFrQixDQUM1RCxXQUFXLEVBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDdEIsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSw2QkFBWSxFQUFFLENBQUM7UUFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLGtCQUFNLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDM0IsR0FBUSxFQUNSLFdBQW1CLEVBQ25CLE1BQWMsRUFDZCxTQUFpQjtRQUVqQixjQUFjO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxtQkFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLHFCQUFxQixDQUFDLENBQUM7WUFDekQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRztZQUNwQixhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbkMsTUFBTTtZQUNOLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQixDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBbUIsRUFBRSxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWxELGVBQWU7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxrQkFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxtQkFBTSxDQUFDLEtBQUssQ0FDVixLQUFLLEVBQ0wsWUFBWSxLQUFLLHdDQUF3QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksa0JBQWtCLGtCQUFNLENBQUMsY0FBYyxFQUFFLENBQ3pILENBQUM7UUFDSixDQUFDO1FBQ0QsbUJBQU0sQ0FBQyxLQUFLLENBQ1YsR0FBRyxDQUFDLEtBQUssRUFDVCxZQUFZLEdBQUcsQ0FBQyxLQUFLLG9DQUFvQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksa0JBQWtCLGtCQUFNLENBQUMsY0FBYyxFQUFFLENBQ3pILENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQzNCLEdBQWlDLEVBQ2pDLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixTQUFpQjtRQUVqQixNQUFNLE9BQU8sR0FBRyxNQUFNLGtCQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUQsSUFBSSxFQUFFLHNCQUFhLENBQUMsTUFBTTtZQUMxQixRQUFRLEVBQUUsaUJBQVEsQ0FBQyxNQUFNO1NBQzFCLENBQUMsQ0FBQztRQUNILElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM3QyxtQkFBTSxDQUFDLEtBQUssQ0FDVixPQUFPLEVBQ1AscUJBQXFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQ2IsdUNBQXVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGtCQUNqRSxrQkFBTSxDQUFDLGNBQ1QsRUFBRSxDQUNILENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxHQUFHLGtCQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEQsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ25FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsbUJBQU0sQ0FBQyxLQUFLLENBQ1YsR0FBRyxFQUNILHFCQUFxQixLQUFLLHdDQUF3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxrQkFBa0Isa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FDdkksQ0FBQztRQUNKLENBQUM7UUFDRCxtQkFBTSxDQUFDLEtBQUssQ0FDVixPQUFPLENBQUMsSUFBSSxFQUNaLHFCQUFxQixPQUFPLG9DQUFvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxrQkFBa0Isa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FDckksQ0FBQztJQUNKLENBQUM7O0FBaEhILDRDQWlIQyJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TokenAmount, BlockchainId } from './Web3.js';
|
|
2
|
-
import { EncryptionKey } from '@super-protocol/dto-js';
|
|
2
|
+
import { EncryptionKey, Hash } from '@super-protocol/dto-js';
|
|
3
3
|
export declare enum OrderStatus {
|
|
4
4
|
New = "0",
|
|
5
5
|
Processing = "1",
|
|
@@ -20,12 +20,13 @@ export type OrderSlots = {
|
|
|
20
20
|
optionsIds: BlockchainId[];
|
|
21
21
|
optionsCount: number[];
|
|
22
22
|
};
|
|
23
|
+
export type OrderResultInfo = {
|
|
24
|
+
publicKey: string;
|
|
25
|
+
encryptedInfo: string;
|
|
26
|
+
};
|
|
23
27
|
export type OrderInfo = {
|
|
24
28
|
offerId: BlockchainId;
|
|
25
|
-
resultInfo:
|
|
26
|
-
publicKey: string;
|
|
27
|
-
encryptedInfo: string;
|
|
28
|
-
};
|
|
29
|
+
resultInfo: OrderResultInfo;
|
|
29
30
|
encryptedArgs: string;
|
|
30
31
|
status: OrderStatus;
|
|
31
32
|
externalId: string;
|
|
@@ -59,6 +60,7 @@ export type SubOrderParams = {
|
|
|
59
60
|
};
|
|
60
61
|
export type OrderEncryptedInfo = {
|
|
61
62
|
publicKey: EncryptionKey;
|
|
62
|
-
|
|
63
|
+
solutionHashes: Hash[];
|
|
64
|
+
dataHashes: Hash[];
|
|
63
65
|
linkage: string;
|
|
64
66
|
};
|
package/dist/cjs/types/Order.js
CHANGED
|
@@ -55,4 +55,4 @@ const orderInfoFromRaw = (orderInfoBch, args) => {
|
|
|
55
55
|
};
|
|
56
56
|
};
|
|
57
57
|
exports.orderInfoFromRaw = orderInfoFromRaw;
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZXMvT3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQThFO0FBSTlFLElBQVksV0FTWDtBQVRELFdBQVksV0FBVztJQUNyQix3QkFBUyxDQUFBO0lBQ1QsK0JBQWdCLENBQUE7SUFDaEIsOEJBQWUsQ0FBQTtJQUNmLDZCQUFjLENBQUE7SUFDZCx5QkFBVSxDQUFBO0lBQ1YsMEJBQVcsQ0FBQTtJQUNYLDRCQUFhLENBQUE7SUFDYiw4QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFUVyxXQUFXLDJCQUFYLFdBQVcsUUFTdEI7QUF5Q00sTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFvQixFQUFnQixFQUFFO0lBQ25FLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUztRQUN6QyxhQUFhLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhO1FBQ2pELGFBQWEsRUFBRSxTQUFTLENBQUMsYUFBYTtLQUN2QyxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0wsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO1FBQzFCLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLGdDQUFnQyxFQUFFLEVBQUU7UUFDcEMsd0JBQXdCLEVBQUUsRUFBRTtRQUM1QixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDeEIsVUFBVSxFQUFFLElBQUEsOEJBQW1CLEVBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUNyRCxhQUFhLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxHQUFHO1FBQzdDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHO0tBQ3BELENBQUM7QUFDSixDQUFDLENBQUM7QUFoQlcsUUFBQSxjQUFjLGtCQWdCekI7QUFFSyxNQUFNLGdCQUFnQixHQUFHLENBQUMsWUFBMEIsRUFBRSxJQUFlLEVBQWEsRUFBRTtJQUN6RixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDbkIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRCxJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6RCxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFDaEQsYUFBYSxHQUFHLFlBQVksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDO1FBQzVELGFBQWEsR0FBRyxZQUFZLENBQUMsYUFBYSxJQUFJLGFBQWEsQ0FBQztJQUM5RCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7SUFFZCxPQUFPO1FBQ0wsVUFBVSxFQUFFO1lBQ1YsU0FBUztZQUNULGFBQWE7U0FDZDtRQUNELGFBQWE7UUFDYixPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87UUFDN0IsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNO1FBQzNCLFVBQVUsRUFBRSxJQUFBLDZCQUFrQixFQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDdkQsSUFBSTtLQUNMLENBQUM7QUFDSixDQUFDLENBQUM7QUF0QlcsUUFBQSxnQkFBZ0Isb0JBc0IzQiJ9
|
|
@@ -15,5 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./tryWithInterval.js"), exports);
|
|
18
|
-
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG9EQUFrQyJ9
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDIn0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EncryptionKey, Hash, Encryption } from '@super-protocol/dto-js';
|
|
3
|
+
import { OrderEncryptedInfo, OrderResultInfo } from './types/index.js';
|
|
4
|
+
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
5
|
+
declare class RIGenerator extends TeeInputGeneratorBase {
|
|
6
|
+
static getDerivedPrivateKey(publicKeyEncryption: EncryptionKey): Promise<EncryptionKey>;
|
|
7
|
+
static generate(params: {
|
|
8
|
+
offerId: string;
|
|
9
|
+
encryptionPrivateKey: EncryptionKey;
|
|
10
|
+
pccsServiceApiUrl: string;
|
|
11
|
+
solutionHashes: Hash[];
|
|
12
|
+
dataHashes: Hash[];
|
|
13
|
+
linkage: string;
|
|
14
|
+
}): Promise<OrderResultInfo>;
|
|
15
|
+
static getResultInfo(encryptedResultInfo: Encryption, privateKey: Buffer): Promise<OrderEncryptedInfo>;
|
|
16
|
+
}
|
|
17
|
+
export default RIGenerator;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Encoding, CryptoAlgorithm, HashAlgorithm, } from '@super-protocol/dto-js';
|
|
2
|
+
import { createECDH } from 'crypto';
|
|
3
|
+
import Crypto from './crypto/index.js';
|
|
4
|
+
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
5
|
+
class RIGenerator extends TeeInputGeneratorBase {
|
|
6
|
+
static async getDerivedPrivateKey(publicKeyEncryption) {
|
|
7
|
+
const derivedPrivateKey = await Crypto.createHash(Buffer.from(publicKeyEncryption.key, publicKeyEncryption.encoding), { encoding: Encoding.base64, algo: HashAlgorithm.SHA256 });
|
|
8
|
+
return {
|
|
9
|
+
key: derivedPrivateKey.hash,
|
|
10
|
+
encoding: derivedPrivateKey.encoding,
|
|
11
|
+
algo: CryptoAlgorithm.ECIES,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
static async generate(params) {
|
|
15
|
+
const resultEncryption = Crypto.getPublicKey(params.encryptionPrivateKey);
|
|
16
|
+
const derivedPrivateKey = await this.getDerivedPrivateKey(resultEncryption);
|
|
17
|
+
const ecdh = createECDH('secp256k1');
|
|
18
|
+
ecdh.setPrivateKey(Buffer.from(derivedPrivateKey.key, derivedPrivateKey.encoding));
|
|
19
|
+
const publicKey = {
|
|
20
|
+
key: ecdh.getPublicKey(derivedPrivateKey.encoding),
|
|
21
|
+
encoding: Encoding.base64,
|
|
22
|
+
algo: CryptoAlgorithm.ECIES,
|
|
23
|
+
};
|
|
24
|
+
const orderInfoToEncrypt = {
|
|
25
|
+
publicKey: resultEncryption,
|
|
26
|
+
solutionHashes: params.solutionHashes || [],
|
|
27
|
+
dataHashes: params.dataHashes || [],
|
|
28
|
+
linkage: params.linkage || '',
|
|
29
|
+
};
|
|
30
|
+
const encryptedInfo = await this.encryptByTeeBlock(params.offerId, JSON.stringify(orderInfoToEncrypt), params.pccsServiceApiUrl);
|
|
31
|
+
return {
|
|
32
|
+
publicKey: JSON.stringify(publicKey),
|
|
33
|
+
encryptedInfo: JSON.stringify(encryptedInfo),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
static async getResultInfo(encryptedResultInfo, privateKey) {
|
|
37
|
+
const resultInfo = await Crypto.decrypt({
|
|
38
|
+
...encryptedResultInfo,
|
|
39
|
+
key: privateKey.toString(encryptedResultInfo.encoding),
|
|
40
|
+
}).then((res) => JSON.parse(res));
|
|
41
|
+
return resultInfo;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export default RIGenerator;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUklHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUklHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFFBQVEsRUFDUixlQUFlLEVBRWYsYUFBYSxHQUNkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLHFCQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE1BQU0sV0FBWSxTQUFRLHFCQUFxQjtJQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLG1CQUFrQztRQUNsRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFJLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ25FLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FDMUQsQ0FBQztRQUVGLE9BQU87WUFDTCxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtZQUMzQixRQUFRLEVBQUUsaUJBQWlCLENBQUMsUUFBUTtZQUNwQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUs7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQU9yQjtRQUNDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUUxRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFNUUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFJLEVBQUUsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNwRixNQUFNLFNBQVMsR0FBRztZQUNoQixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7WUFDbEQsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1lBQ3pCLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSztTQUNkLENBQUM7UUFFaEIsTUFBTSxrQkFBa0IsR0FBdUI7WUFDN0MsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFO1lBQzNDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUU7WUFDbkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRTtTQUM5QixDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQ2hELE1BQU0sQ0FBQyxPQUFPLEVBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUNsQyxNQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7UUFFRixPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3BDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUN4QixtQkFBK0IsRUFDL0IsVUFBa0I7UUFFbEIsTUFBTSxVQUFVLEdBQXVCLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUMxRCxHQUFHLG1CQUFtQjtZQUN0QixHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxDLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVELGVBQWUsV0FBVyxDQUFDIn0=
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { TCB } from './models/index.js';
|
|
3
2
|
import { BlockchainId } from './types/index.js';
|
|
4
3
|
import { Encryption, Hash, Resource, TeeRunInfo } from '@super-protocol/dto-js';
|
|
5
|
-
import
|
|
6
|
-
declare class TIIGenerator {
|
|
7
|
-
static
|
|
8
|
-
static verifiedTcbs: Set<BlockchainId>;
|
|
9
|
-
private static checkQuote;
|
|
10
|
-
static verifyTcb(tcb: TCB, quoteString: string, pubKey: string, sgxApiUrl: string): Promise<void>;
|
|
11
|
-
static verifyTlb(tlb: TLBlockUnserializeResultType, tlbString: string, offerId: string, sgxApiUrl: string): Promise<void>;
|
|
12
|
-
private static getVerifiedBlockEncryption;
|
|
13
|
-
static encryptByTeeBlock(offerId: string, data: string, sgxApiUrl: string): Promise<Encryption>;
|
|
14
|
-
static generateByOffer(offerId: BlockchainId, solutionHashes: Hash[], linkageString: string | undefined, resource: Resource, args: any, encryption: Encryption, sgxApiUrl: string): Promise<string>;
|
|
4
|
+
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
5
|
+
declare class TIIGenerator extends TeeInputGeneratorBase {
|
|
6
|
+
static generateByOffer({ offerId, solutionHashes, linkageString, resource, args, encryption, sgxApiUrl, }: GenerateByOfferParams): Promise<string>;
|
|
15
7
|
static generate(orderId: BlockchainId, resource: Resource, args: any, encryption: Encryption, sgxApiUrl: string): Promise<string>;
|
|
16
|
-
static getSolutionHashesAndLinkage(inputOffers: BlockchainId[]): Promise<{
|
|
17
|
-
hashes: Hash[];
|
|
18
|
-
linkage?: string;
|
|
19
|
-
}>;
|
|
20
8
|
static getTRI(tii: string, decryptionKey: Buffer): Promise<TeeRunInfo>;
|
|
21
9
|
static getUrl(tii: string, decryptionKey: Buffer): Promise<string>;
|
|
22
10
|
static getResource<T>(tii: string, decryptionKey: Buffer): Promise<T>;
|
|
23
11
|
}
|
|
12
|
+
export type GenerateByOfferParams = {
|
|
13
|
+
offerId: BlockchainId;
|
|
14
|
+
solutionHashes: Hash[];
|
|
15
|
+
linkageString: string | undefined;
|
|
16
|
+
resource: Resource;
|
|
17
|
+
args: any;
|
|
18
|
+
encryption: Encryption;
|
|
19
|
+
sgxApiUrl: string;
|
|
20
|
+
};
|
|
24
21
|
export default TIIGenerator;
|
package/dist/mjs/TIIGenerator.js
CHANGED
|
@@ -1,121 +1,13 @@
|
|
|
1
1
|
import nodeGzip from 'node-gzip';
|
|
2
|
-
import _ from 'lodash';
|
|
3
|
-
import { config } from './config.js';
|
|
4
2
|
import { Compression, Compression_TYPE } from './proto/Compression.js';
|
|
5
3
|
import { TRI } from './proto/TRI.js';
|
|
6
4
|
import Crypto from './crypto/index.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import { QuoteValidator } from './tee/QuoteValidator.js';
|
|
11
|
-
import { QuoteValidationStatuses } from './tee/statuses.js';
|
|
12
|
-
import { TeeSgxParser } from './tee/QuoteParser.js';
|
|
13
|
-
import logger from './logger.js';
|
|
5
|
+
import { Order, TeeOffer } from './models/index.js';
|
|
6
|
+
import { Encoding, } from '@super-protocol/dto-js';
|
|
7
|
+
import TeeInputGeneratorBase from './TeeInputGeneratorBase.js';
|
|
14
8
|
const { gzip, ungzip } = nodeGzip;
|
|
15
|
-
class TIIGenerator {
|
|
16
|
-
static
|
|
17
|
-
static verifiedTcbs = new Set();
|
|
18
|
-
static async checkQuote(quote, dataBlob, sgxApiUrl) {
|
|
19
|
-
const quoteBuffer = Buffer.from(quote);
|
|
20
|
-
const validator = new QuoteValidator(sgxApiUrl);
|
|
21
|
-
const quoteStatus = await validator.validate(quoteBuffer);
|
|
22
|
-
if (quoteStatus.quoteValidationStatus !== QuoteValidationStatuses.UpToDate) {
|
|
23
|
-
if (quoteStatus.quoteValidationStatus === QuoteValidationStatuses.Error) {
|
|
24
|
-
throw new Error('Quote is invalid');
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
logger.warn(quoteStatus, 'Quote validation status is not UpToDate');
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const userDataCheckResult = await validator.isQuoteHasUserData(quoteBuffer, Buffer.from(dataBlob));
|
|
31
|
-
if (!userDataCheckResult) {
|
|
32
|
-
throw new Error('Quote has invalid user data');
|
|
33
|
-
}
|
|
34
|
-
const parser = new TeeSgxParser();
|
|
35
|
-
const parsedQuote = parser.parseQuote(quote);
|
|
36
|
-
const report = parser.parseReport(parsedQuote.report);
|
|
37
|
-
if (report.mrSigner.toString('hex') !== config.TEE_LOADER_TRUSTED_MRSIGNER) {
|
|
38
|
-
throw new Error('Quote has invalid MR signer');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
static async verifyTcb(tcb, quoteString, pubKey, sgxApiUrl) {
|
|
42
|
-
// check cache
|
|
43
|
-
if (this.verifiedTcbs.has(tcb.tcbId)) {
|
|
44
|
-
logger.trace(`Tcb id = ${tcb.tcbId}, already validated`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const quote = Buffer.from(quoteString, 'base64');
|
|
48
|
-
const signedTcbData = {
|
|
49
|
-
checkingTcbId: tcb.tcbId.toString(),
|
|
50
|
-
pubKey,
|
|
51
|
-
...(await tcb.getPublicData()),
|
|
52
|
-
};
|
|
53
|
-
const serializer = new TLBlockSerializerV1();
|
|
54
|
-
const dataBlob = await serializer.serializeAnyData(signedTcbData);
|
|
55
|
-
await this.checkQuote(quote, dataBlob, sgxApiUrl);
|
|
56
|
-
// update cashe
|
|
57
|
-
this.verifiedTcbs.add(tcb.tcbId);
|
|
58
|
-
if (this.verifiedTcbs.size > config.TLB_CACHE_SIZE) {
|
|
59
|
-
const [value] = this.verifiedTcbs.entries().next().value;
|
|
60
|
-
this.verifiedTcbs.delete(value);
|
|
61
|
-
logger.trace(value, `TCB id = ${value} removed from the cache. Cache size: ${this.verifiedTcbs.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
62
|
-
}
|
|
63
|
-
logger.trace(tcb.tcbId, `TCB id = ${tcb.tcbId} added to the cache. Cache size: ${this.verifiedTcbs.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
64
|
-
}
|
|
65
|
-
static async verifyTlb(tlb, tlbString, offerId, sgxApiUrl) {
|
|
66
|
-
const tlbHash = await Crypto.createHash(Buffer.from(tlbString), {
|
|
67
|
-
algo: HashAlgorithm.SHA256,
|
|
68
|
-
encoding: Encoding.base64,
|
|
69
|
-
});
|
|
70
|
-
if (this.verifiedTlbHashes.has(tlbHash.hash)) {
|
|
71
|
-
logger.trace(tlbHash, `TLB hash of offer ${this.verifiedTlbHashes.get(tlbHash.hash)} loaded from the cache. Cache size: ${this.verifiedTlbHashes.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
const quoteBuffer = Buffer.from(tlb.quote);
|
|
75
|
-
await this.checkQuote(quoteBuffer, tlb.dataBlob, sgxApiUrl);
|
|
76
|
-
this.verifiedTlbHashes.set(tlbHash.hash, offerId);
|
|
77
|
-
if (this.verifiedTlbHashes.size > config.TLB_CACHE_SIZE) {
|
|
78
|
-
const [key, value] = this.verifiedTlbHashes.entries().next().value;
|
|
79
|
-
this.verifiedTlbHashes.delete(key);
|
|
80
|
-
logger.trace(key, `TLB hash of offer ${value} removed from the cache. Cache size: ${this.verifiedTlbHashes.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
81
|
-
}
|
|
82
|
-
logger.trace(tlbHash.hash, `TLB hash of offer ${offerId} added to the cache. Cache size: ${this.verifiedTlbHashes.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
83
|
-
}
|
|
84
|
-
static async getVerifiedBlockEncryption(offerId, sgxApiUrl) {
|
|
85
|
-
const teeOffer = new TeeOffer(offerId);
|
|
86
|
-
const teeOfferInfo = await teeOffer.getInfo();
|
|
87
|
-
const tcbId = await teeOffer.getActualTcbId();
|
|
88
|
-
const verifyByTcb = Number.parseInt(tcbId) != 0;
|
|
89
|
-
let encryption;
|
|
90
|
-
if (verifyByTcb) {
|
|
91
|
-
const tcb = new TCB(await teeOffer.getActualTcbId());
|
|
92
|
-
const { pubKey, quote } = await tcb.getUtilityData();
|
|
93
|
-
await this.verifyTcb(tcb, quote, pubKey, sgxApiUrl);
|
|
94
|
-
// TODO: must be 'blockEncryption = JSON.parse(pubKey);'
|
|
95
|
-
encryption = {
|
|
96
|
-
algo: CryptoAlgorithm.ECIES,
|
|
97
|
-
key: pubKey,
|
|
98
|
-
encoding: Encoding.base64,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
const serializer = new TLBlockSerializerV1();
|
|
103
|
-
const tlb = serializer.unserializeTlb(Buffer.from(teeOfferInfo.tlb, 'base64'));
|
|
104
|
-
await this.verifyTlb(tlb, teeOfferInfo.tlb, offerId, sgxApiUrl);
|
|
105
|
-
encryption = {
|
|
106
|
-
algo: CryptoAlgorithm.ECIES,
|
|
107
|
-
key: tlb.data.teePubKeyData.toString('base64'),
|
|
108
|
-
encoding: Encoding.base64,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
return encryption;
|
|
112
|
-
}
|
|
113
|
-
static async encryptByTeeBlock(offerId, data, sgxApiUrl) {
|
|
114
|
-
const encryption = await this.getVerifiedBlockEncryption(offerId, sgxApiUrl);
|
|
115
|
-
const encryptedInfo = await Crypto.encrypt(data, encryption);
|
|
116
|
-
return encryptedInfo;
|
|
117
|
-
}
|
|
118
|
-
static async generateByOffer(offerId, solutionHashes, linkageString, resource, args, encryption, sgxApiUrl) {
|
|
9
|
+
class TIIGenerator extends TeeInputGeneratorBase {
|
|
10
|
+
static async generateByOffer({ offerId, solutionHashes, linkageString, resource, args, encryption, sgxApiUrl, }) {
|
|
119
11
|
const teeOffer = new TeeOffer(offerId);
|
|
120
12
|
const teeOfferInfo = await teeOffer.getInfo();
|
|
121
13
|
const linkage = linkageString
|
|
@@ -163,31 +55,16 @@ class TIIGenerator {
|
|
|
163
55
|
const parentOrderId = await order.getParentOrder();
|
|
164
56
|
const parentOrder = new Order(parentOrderId);
|
|
165
57
|
const parentOrderInfo = await parentOrder.getOrderInfo();
|
|
166
|
-
const {
|
|
167
|
-
return this.generateByOffer(
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
if (offerInfo.hash) {
|
|
177
|
-
solutionHashes.push(JSON.parse(offerInfo.hash));
|
|
178
|
-
}
|
|
179
|
-
const restrictions = _.intersection(offerInfo.restrictions.offers, inputOffers).filter((restrictedOfferId) => restrictedOfferId !== offer.id);
|
|
180
|
-
if (restrictions.length) {
|
|
181
|
-
solutionLinkage = offerInfo.linkage;
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
anyLinkage = offerInfo.linkage;
|
|
185
|
-
}
|
|
186
|
-
}));
|
|
187
|
-
return {
|
|
188
|
-
hashes: solutionHashes,
|
|
189
|
-
linkage: solutionLinkage || anyLinkage,
|
|
190
|
-
};
|
|
58
|
+
const { solutionHashes, linkage } = await this.getOffersHashesAndLinkage(parentOrderInfo.args.inputOffers);
|
|
59
|
+
return this.generateByOffer({
|
|
60
|
+
offerId: parentOrderInfo.offerId,
|
|
61
|
+
solutionHashes,
|
|
62
|
+
linkageString: linkage,
|
|
63
|
+
resource,
|
|
64
|
+
args,
|
|
65
|
+
encryption,
|
|
66
|
+
sgxApiUrl,
|
|
67
|
+
});
|
|
191
68
|
}
|
|
192
69
|
static async getTRI(tii, decryptionKey) {
|
|
193
70
|
const tiiObj = JSON.parse(tii);
|
|
@@ -238,4 +115,4 @@ class TIIGenerator {
|
|
|
238
115
|
}
|
|
239
116
|
}
|
|
240
117
|
export default TIIGenerator;
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEUsT0FBTyxFQUVMLGVBQWUsRUFDZixRQUFRLEVBSVIsYUFBYSxHQUtkLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFnQyxNQUFNLHlCQUF5QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBRWpDLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBRWxDLE1BQU0sWUFBWTtJQUNoQixNQUFNLENBQUMsaUJBQWlCLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDMUQsTUFBTSxDQUFDLFlBQVksR0FBc0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUUzQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FDN0IsS0FBaUIs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
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVElJR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RJSUdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFHakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFHTCxRQUFRLEdBU1QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLHFCQUFxQixNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDO0FBRWxDLE1BQU0sWUFBYSxTQUFRLHFCQUFxQjtJQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUNsQyxPQUFPLEVBQ1AsY0FBYyxFQUNkLGFBQWEsRUFDYixRQUFRLEVBQ1IsSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEdBQ2E7UUFDdEIsTUFBTSxRQUFRLEdBQWEsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakQsTUFBTSxZQUFZLEdBQWlCLE1BQU0sUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVELE1BQU0sT0FBTyxHQUFZLGFBQWE7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzNCLENBQUMsQ0FBQztnQkFDRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3pCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFO2FBQ2IsQ0FBQztRQUVOLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVsRiw4QkFBOEI7UUFDOUIsTUFBTSxHQUFHLEdBQUksVUFBa0IsQ0FBQyxPQUFPLElBQUssVUFBa0MsQ0FBQyxHQUFHLENBQUM7UUFDbkYsTUFBTSxNQUFNLEdBQUc7WUFDYixjQUFjLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUM1QyxDQUFDLENBQUM7WUFDSCxTQUFTLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDM0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ3pELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEMsVUFBVSxFQUFFO2dCQUNWLEdBQUcsVUFBVTtnQkFDYixVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVU7b0JBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztvQkFDekQsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2xGLEVBQUUsRUFBRyxVQUFrQyxDQUFDLEVBQUU7b0JBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFFLFVBQWtDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQzFFLENBQUMsQ0FBQyxTQUFTO2dCQUNiLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzthQUM3RDtTQUNGLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdkMsSUFBSSxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNyQixJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtTQUM1QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsaUJBQWlCLEVBQUUsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQWUsQ0FDckQ7WUFDRCxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQ3BELGVBQWUsQ0FDaEI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQzFCLE9BQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLElBQVMsRUFDVCxVQUFzQixFQUN0QixTQUFpQjtRQUVqQixNQUFNLEtBQUssR0FBVSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4QyxNQUFNLGFBQWEsR0FBRyxNQUFNLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBVSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRCxNQUFNLGVBQWUsR0FBYyxNQUFNLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUN0RSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDakMsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMxQixPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87WUFDaEMsY0FBYztZQUNkLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLFFBQVE7WUFDUixJQUFJO1lBQ0osVUFBVTtZQUNWLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdELE1BQU0sR0FBRyxHQUFXLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBaUIsQ0FBQyxDQUFDO1FBRW5FLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRTlFLElBQUksWUFBb0IsQ0FBQztRQUN6QixRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3hCLFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFFUjtnQkFDRSxNQUFNLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXpDLE9BQU87WUFDTCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDdEQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFxQjtnQkFDaEMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2FBQzFCLENBQUMsQ0FBQztZQUNILE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3pCLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDbkUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ2xFO1lBQ0QsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVcsQ0FBQyxJQUF1QjtnQkFDakQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFXLENBQUMsTUFBaUI7Z0JBQzdDLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDekIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVcsQ0FBQyxHQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDcEUsRUFBRSxFQUNBLE9BQU8sQ0FBQyxVQUFXLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVcsQ0FBQyxFQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDMUYsR0FBRyxFQUNELE9BQU8sQ0FBQyxVQUFXLENBQUMsR0FBRztvQkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVyxDQUFDLEdBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2FBQzNDO1NBQ3pCLENBQUM7SUFDSixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBVyxFQUFFLGFBQXFCO1FBQzNELE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLFdBQVcsQ0FBYyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFNUUsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBSSxHQUFXLEVBQUUsYUFBcUI7UUFDbkUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUErQixDQUFDO1FBQzFFLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sUUFBUSxHQUFXLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQU0sQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFZRCxlQUFlLFlBQVksQ0FBQyJ9
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Encryption, Hash } from '@super-protocol/dto-js';
|
|
2
|
+
import { BlockchainId } from './types/index.js';
|
|
3
|
+
export default class TeeInputGeneratorBase {
|
|
4
|
+
static getOffersHashesAndLinkage(inputOffers: BlockchainId[]): Promise<{
|
|
5
|
+
solutionHashes: Hash[];
|
|
6
|
+
dataHashes: Hash[];
|
|
7
|
+
linkage?: string;
|
|
8
|
+
}>;
|
|
9
|
+
static encryptByTeeBlock(offerId: string, data: string, sgxApiUrl: string): Promise<Encryption>;
|
|
10
|
+
protected static getVerifiedBlockEncryption(offerId: string, sgxApiUrl: string): Promise<Encryption>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { CryptoAlgorithm, Encoding } from '@super-protocol/dto-js';
|
|
2
|
+
import { TLBlockSerializerV1 } from '@super-protocol/tee-lib';
|
|
3
|
+
import { TeeOffer, TCB, Offer } from './models/index.js';
|
|
4
|
+
import { OfferType } from './types/index.js';
|
|
5
|
+
import Crypto from './crypto/index.js';
|
|
6
|
+
import { TeeBlockVerifier } from './tee/TeeBlockVerifier.js';
|
|
7
|
+
import _ from 'lodash';
|
|
8
|
+
import { ZERO_HASH } from './constants.js';
|
|
9
|
+
export default class TeeInputGeneratorBase {
|
|
10
|
+
static async getOffersHashesAndLinkage(inputOffers) {
|
|
11
|
+
const solutionHashes = [];
|
|
12
|
+
const dataHashes = [];
|
|
13
|
+
let solutionLinkage;
|
|
14
|
+
let anyLinkage;
|
|
15
|
+
await Promise.all(inputOffers.map(async (offerId) => {
|
|
16
|
+
const offer = new Offer(offerId);
|
|
17
|
+
const offerInfo = await offer.getInfo();
|
|
18
|
+
if (offerInfo.offerType === OfferType.Solution) {
|
|
19
|
+
solutionHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : ZERO_HASH);
|
|
20
|
+
const restrictions = _.intersection(offerInfo.restrictions.offers, inputOffers).filter((restrictedOfferId) => restrictedOfferId !== offer.id);
|
|
21
|
+
if (restrictions.length) {
|
|
22
|
+
solutionLinkage = offerInfo.linkage;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
anyLinkage = offerInfo.linkage;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (offerInfo.offerType === OfferType.Data) {
|
|
29
|
+
dataHashes.push(offerInfo.hash ? JSON.parse(offerInfo.hash) : ZERO_HASH);
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
return {
|
|
33
|
+
solutionHashes,
|
|
34
|
+
dataHashes,
|
|
35
|
+
linkage: solutionLinkage || anyLinkage,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
static async encryptByTeeBlock(offerId, data, sgxApiUrl) {
|
|
39
|
+
const encryption = await this.getVerifiedBlockEncryption(offerId, sgxApiUrl);
|
|
40
|
+
const encryptedInfo = await Crypto.encrypt(data, encryption);
|
|
41
|
+
return encryptedInfo;
|
|
42
|
+
}
|
|
43
|
+
static async getVerifiedBlockEncryption(offerId, sgxApiUrl) {
|
|
44
|
+
const teeOffer = new TeeOffer(offerId);
|
|
45
|
+
const teeOfferInfo = await teeOffer.getInfo();
|
|
46
|
+
const tcbId = await teeOffer.getActualTcbId();
|
|
47
|
+
const verifyByTcb = Number.parseInt(tcbId) != 0;
|
|
48
|
+
let encryption;
|
|
49
|
+
if (verifyByTcb) {
|
|
50
|
+
const tcb = new TCB(await teeOffer.getActualTcbId());
|
|
51
|
+
const { pubKey, quote } = await tcb.getUtilityData();
|
|
52
|
+
await TeeBlockVerifier.verifyTcb(tcb, quote, pubKey, sgxApiUrl);
|
|
53
|
+
// TODO: must be 'blockEncryption = JSON.parse(pubKey);'
|
|
54
|
+
encryption = {
|
|
55
|
+
algo: CryptoAlgorithm.ECIES,
|
|
56
|
+
key: pubKey,
|
|
57
|
+
encoding: Encoding.base64,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const serializer = new TLBlockSerializerV1();
|
|
62
|
+
const tlb = serializer.unserializeTlb(Buffer.from(teeOfferInfo.tlb, 'base64'));
|
|
63
|
+
await TeeBlockVerifier.verifyTlb(tlb, teeOfferInfo.tlb, offerId, sgxApiUrl);
|
|
64
|
+
encryption = {
|
|
65
|
+
algo: CryptoAlgorithm.ECIES,
|
|
66
|
+
key: tlb.data.teePubKeyData.toString('base64'),
|
|
67
|
+
encoding: Encoding.base64,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return encryption;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlSW5wdXRHZW5lcmF0b3JCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1RlZUlucHV0R2VuZXJhdG9yQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsZUFBZSxFQUFFLFFBQVEsRUFBUSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxtQkFBbUIsRUFBZ0MsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQTJCLFNBQVMsRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRixPQUFPLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sQ0FBQyxPQUFPLE9BQU8scUJBQXFCO0lBQ2pDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQzNDLFdBQTJCO1FBRTNCLE1BQU0sY0FBYyxHQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxlQUFtQyxDQUFDO1FBQ3hDLElBQUksVUFBOEIsQ0FBQztRQUNuQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFpQixFQUFFO1lBQy9DLE1BQU0sS0FBSyxHQUFVLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sU0FBUyxHQUFjLE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRW5ELElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsUUFB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
|
package/dist/mjs/constants.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Hash } from '@super-protocol/dto-js';
|
|
1
2
|
export declare const defaultBlockchainUrl = "http://127.0.0.1:8545";
|
|
2
3
|
export declare const defaultGasLimit: bigint;
|
|
3
4
|
export declare const defaultGasPrice: bigint;
|
|
@@ -14,3 +15,4 @@ export declare const BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = 10000;
|
|
|
14
15
|
export declare const POLYGON_MAIN_CHAIN_ID = 137;
|
|
15
16
|
export declare const POLYGON_AMOY_CHAIN_ID = 80002;
|
|
16
17
|
export declare const AMOY_TX_COST_LIMIT: bigint;
|
|
18
|
+
export declare const ZERO_HASH: Hash;
|
package/dist/mjs/constants.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Encoding, HashAlgorithm } from '@super-protocol/dto-js';
|
|
1
2
|
export const defaultBlockchainUrl = 'http://127.0.0.1:8545';
|
|
2
3
|
export const defaultGasLimit = BigInt(7000000);
|
|
3
4
|
export const defaultGasPrice = BigInt(3000000000);
|
|
@@ -14,4 +15,9 @@ export const BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = 10000;
|
|
|
14
15
|
export const POLYGON_MAIN_CHAIN_ID = 137;
|
|
15
16
|
export const POLYGON_AMOY_CHAIN_ID = 80002;
|
|
16
17
|
export const AMOY_TX_COST_LIMIT = BigInt('5000000000000000000');
|
|
17
|
-
|
|
18
|
+
export const ZERO_HASH = {
|
|
19
|
+
hash: '0000000000000000000000000000000000000000000000000000000000000000',
|
|
20
|
+
algo: HashAlgorithm.SHA256,
|
|
21
|
+
encoding: Encoding.base64,
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDaEMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDcEMsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLDRDQUE0QyxDQUFDO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsS0FBSyxDQUFDO0FBQ3RELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFDaEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFTO0lBQzdCLElBQUksRUFBRSxrRUFBa0U7SUFDeEUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBQzFCLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTTtDQUMxQixDQUFDIn0=
|