@super-protocol/sdk-js 3.15.3-beta.5 → 3.15.3-beta.8
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/tee/TeeBlockVerifier.d.ts +0 -6
- package/dist/cjs/tee/TeeBlockVerifier.js +13 -8
- package/dist/cjs/types/Consensus.d.ts +6 -1
- package/dist/cjs/types/Consensus.js +1 -1
- package/dist/cjs/utils/tcb.d.ts +2 -2
- package/dist/cjs/utils/tcb.js +1 -1
- package/dist/mjs/tee/TeeBlockVerifier.d.ts +0 -6
- package/dist/mjs/tee/TeeBlockVerifier.js +13 -8
- package/dist/mjs/types/Consensus.d.ts +6 -1
- package/dist/mjs/types/Consensus.js +1 -1
- package/dist/mjs/utils/tcb.d.ts +2 -2
- package/dist/mjs/utils/tcb.js +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { TCB } from '../models/index.js';
|
|
2
2
|
import { TcbUtilityData } from '../types/index.js';
|
|
3
|
-
import { ConsensusBenchmark } from '@super-protocol/dto-js';
|
|
4
|
-
export type TcbData = {
|
|
5
|
-
teeOfferId: string;
|
|
6
|
-
pubKey: string;
|
|
7
|
-
benchmark: ConsensusBenchmark;
|
|
8
|
-
};
|
|
9
3
|
export declare class TeeBlockVerifier {
|
|
10
4
|
private static readonly verifiedTcbs;
|
|
11
5
|
static verifyTcb(tcb: TCB, utilityData: TcbUtilityData): Promise<void>;
|
|
@@ -9,8 +9,9 @@ const config_js_1 = require("../config.js");
|
|
|
9
9
|
const Consensus_js_1 = __importDefault(require("../staticModels/Consensus.js"));
|
|
10
10
|
const index_js_1 = require("../certificates/index.js");
|
|
11
11
|
const TeeCertificateService_js_1 = require("./TeeCertificateService.js");
|
|
12
|
-
const index_js_2 = require("../utils/helpers/index.js");
|
|
13
12
|
const constants_js_1 = require("../constants.js");
|
|
13
|
+
const dto_js_1 = require("@super-protocol/dto-js");
|
|
14
|
+
const tcb_js_1 = require("../utils/tcb.js");
|
|
14
15
|
class TeeBlockVerifier {
|
|
15
16
|
static verifiedTcbs = new Set();
|
|
16
17
|
static async verifyTcb(tcb, utilityData) {
|
|
@@ -19,10 +20,15 @@ class TeeBlockVerifier {
|
|
|
19
20
|
logger_js_1.default.trace(`Tcb id = ${tcb.tcbId}, already validated`);
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
23
|
+
const benchmarksByTcbId = await Consensus_js_1.default.getBenchmarksByTcbIds([tcb.tcbId], [utilityData.teeOfferId]);
|
|
24
|
+
const benchmark = benchmarksByTcbId[tcb.tcbId];
|
|
25
|
+
if (!benchmark) {
|
|
26
|
+
throw new Error(`TCB is invalid: benchmark not found for tcbId=${tcb.tcbId}`);
|
|
27
|
+
}
|
|
22
28
|
const signedTcbData = {
|
|
23
|
-
teeOfferId: utilityData.teeOfferId
|
|
29
|
+
teeOfferId: utilityData.teeOfferId,
|
|
24
30
|
pubKey: utilityData.pubKey,
|
|
25
|
-
benchmark
|
|
31
|
+
benchmark,
|
|
26
32
|
};
|
|
27
33
|
const { certsChain } = await tcb.get();
|
|
28
34
|
const certChainPem = certsChain.map(index_js_1.CertificateSerializer.deserializeFromBlockchain).join('\n');
|
|
@@ -36,19 +42,18 @@ class TeeBlockVerifier {
|
|
|
36
42
|
}
|
|
37
43
|
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}`);
|
|
38
44
|
}
|
|
39
|
-
static async verifyWithCertificates(
|
|
40
|
-
const certChain = index_js_1.CertificateSerializer.deserializeCertChain(certs);
|
|
45
|
+
static async verifyWithCertificates(certChain, signedTcbData) {
|
|
41
46
|
await TeeCertificateService_js_1.TeeCertificateService.validateTeeCertChainOrFail(certChain);
|
|
42
47
|
const userDataHashFromCert = index_js_1.CertificatesHelper.getExtensionValue(certChain, constants_js_1.OID_CUSTOM_EXTENSION_USER_DATA);
|
|
43
48
|
if (!userDataHashFromCert) {
|
|
44
49
|
throw new Error(`TCB is invalid: userData not found in TCB certificate`);
|
|
45
50
|
}
|
|
46
|
-
const signableDataHash = (0,
|
|
47
|
-
const signableDataHashBuffer = Buffer.from(signableDataHash
|
|
51
|
+
const signableDataHash = (0, tcb_js_1.getTcbDataHash)(signedTcbData);
|
|
52
|
+
const signableDataHashBuffer = Buffer.from(signableDataHash, dto_js_1.Encoding.hex);
|
|
48
53
|
if (Buffer.compare(userDataHashFromCert, signableDataHashBuffer) !== 0) {
|
|
49
54
|
throw new Error(`TCB is invalid: userData is not match`);
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
58
|
exports.TeeBlockVerifier = TeeBlockVerifier;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBa0M7QUFDbEMsNENBQXNDO0FBR3RDLGdGQUFxRDtBQUNyRCx1REFBcUY7QUFDckYseUVBQW1FO0FBQ25FLGtEQUFpRTtBQUNqRSxtREFBa0Q7QUFDbEQsNENBQWlEO0FBRWpELE1BQWEsZ0JBQWdCO0lBQ25CLE1BQU0sQ0FBVSxZQUFZLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFcEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFdBQTJCO1FBQzFELGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLG1CQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLEtBQUsscUJBQXFCLENBQUMsQ0FBQztZQUN6RCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxzQkFBUyxDQUFDLHFCQUFxQixDQUM3RCxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFDWCxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FDekIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQWtCO1lBQ25DLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtZQUNsQyxNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU07WUFDMUIsU0FBUztTQUNWLENBQUM7UUFFRixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxnQ0FBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRyxNQUFNLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUzRSxlQUFlO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUF5QixDQUFDO1lBQzdFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLG1CQUFNLENBQUMsS0FBSyxDQUNWLEtBQUssRUFDTCxZQUFZLEtBQUssd0NBQXdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxrQkFBa0Isa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FDekgsQ0FBQztRQUNKLENBQUM7UUFDRCxtQkFBTSxDQUFDLEtBQUssQ0FDVixHQUFHLENBQUMsS0FBSyxFQUNULFlBQVksR0FBRyxDQUFDLEtBQUssb0NBQW9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxrQkFBa0Isa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FDekgsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUN6QyxTQUFpQixFQUNqQixhQUE0QjtRQUU1QixNQUFNLGdEQUFxQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsNkJBQWtCLENBQUMsaUJBQWlCLENBQy9ELFNBQVMsRUFDVCw2Q0FBOEIsQ0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLHVCQUFjLEVBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGlCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0UsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDOztBQWhFSCw0Q0FpRUMifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChunkedX509Cert, CpuInfo } from '@super-protocol/dto-js';
|
|
1
|
+
import { ChunkedX509Cert, ConsensusBenchmark, CpuInfo } from '@super-protocol/dto-js';
|
|
2
2
|
import { BlockchainId, TokenAmount } from './Web3.js';
|
|
3
3
|
export type ConsensusBenchmarkStorage = {
|
|
4
4
|
cpuSize: number;
|
|
@@ -33,6 +33,11 @@ export type TcbData = {
|
|
|
33
33
|
certsChain: ChunkedX509Cert[];
|
|
34
34
|
rootCertId: BlockchainId;
|
|
35
35
|
};
|
|
36
|
+
export type SignedTcbData = {
|
|
37
|
+
teeOfferId: BlockchainId;
|
|
38
|
+
pubKey: string;
|
|
39
|
+
benchmark: ConsensusBenchmark;
|
|
40
|
+
};
|
|
36
41
|
export declare enum TcbStatus {
|
|
37
42
|
Inited = "0",
|
|
38
43
|
Completed = "1",
|
|
@@ -8,4 +8,4 @@ var TcbStatus;
|
|
|
8
8
|
TcbStatus["Banned"] = "2";
|
|
9
9
|
TcbStatus["BenchmarkChanged"] = "3";
|
|
10
10
|
})(TcbStatus || (exports.TcbStatus = TcbStatus = {}));
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc2Vuc3VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL0NvbnNlbnN1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErQ0EsSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLHlCQUFZLENBQUE7SUFDWiw0QkFBZSxDQUFBO0lBQ2YseUJBQVksQ0FBQTtJQUNaLG1DQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFMVyxTQUFTLHlCQUFULFNBQVMsUUFLcEIifQ==
|
package/dist/cjs/utils/tcb.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function getTcbDataHash(signableData:
|
|
1
|
+
import { SignedTcbData } from '../types/Consensus.js';
|
|
2
|
+
export declare function getTcbDataHash(signableData: SignedTcbData): string;
|
package/dist/cjs/utils/tcb.js
CHANGED
|
@@ -10,4 +10,4 @@ function getTcbDataHash(signableData) {
|
|
|
10
10
|
return ethers_1.ethers.sha256(userData).slice(2); // remove 0x
|
|
11
11
|
}
|
|
12
12
|
exports.getTcbDataHash = getTcbDataHash;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3RjYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBZ0M7QUFHaEMsU0FBZ0IsY0FBYyxDQUFDLFlBQTJCO0lBQ3hELE1BQU0sS0FBSyxHQUNULGlHQUFpRyxDQUFDO0lBQ3BHLE1BQU0sS0FBSyxHQUFHLGlGQUFpRixDQUFDO0lBQ2hHLE1BQU0sT0FBTyxHQUNYLGdKQUFnSixDQUFDO0lBRW5KLE1BQU0sUUFBUSxHQUFHLGVBQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUN2RCxDQUFDLFNBQVMsRUFBRSxTQUFTLEtBQUssSUFBSSxLQUFLLElBQUksT0FBTyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQzVELENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FDdkUsQ0FBQztJQUVGLE9BQU8sZUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZO0FBQ3ZELENBQUM7QUFiRCx3Q0FhQyJ9
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import { TCB } from '../models/index.js';
|
|
2
2
|
import { TcbUtilityData } from '../types/index.js';
|
|
3
|
-
import { ConsensusBenchmark } from '@super-protocol/dto-js';
|
|
4
|
-
export type TcbData = {
|
|
5
|
-
teeOfferId: string;
|
|
6
|
-
pubKey: string;
|
|
7
|
-
benchmark: ConsensusBenchmark;
|
|
8
|
-
};
|
|
9
3
|
export declare class TeeBlockVerifier {
|
|
10
4
|
private static readonly verifiedTcbs;
|
|
11
5
|
static verifyTcb(tcb: TCB, utilityData: TcbUtilityData): Promise<void>;
|
|
@@ -3,8 +3,9 @@ import { config } from '../config.js';
|
|
|
3
3
|
import Consensus from '../staticModels/Consensus.js';
|
|
4
4
|
import { CertificateSerializer, CertificatesHelper } from '../certificates/index.js';
|
|
5
5
|
import { TeeCertificateService } from './TeeCertificateService.js';
|
|
6
|
-
import { calculateObjectHash } from '../utils/helpers/index.js';
|
|
7
6
|
import { OID_CUSTOM_EXTENSION_USER_DATA } from '../constants.js';
|
|
7
|
+
import { Encoding } from '@super-protocol/dto-js';
|
|
8
|
+
import { getTcbDataHash } from '../utils/tcb.js';
|
|
8
9
|
export class TeeBlockVerifier {
|
|
9
10
|
static verifiedTcbs = new Set();
|
|
10
11
|
static async verifyTcb(tcb, utilityData) {
|
|
@@ -13,10 +14,15 @@ export class TeeBlockVerifier {
|
|
|
13
14
|
logger.trace(`Tcb id = ${tcb.tcbId}, already validated`);
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
17
|
+
const benchmarksByTcbId = await Consensus.getBenchmarksByTcbIds([tcb.tcbId], [utilityData.teeOfferId]);
|
|
18
|
+
const benchmark = benchmarksByTcbId[tcb.tcbId];
|
|
19
|
+
if (!benchmark) {
|
|
20
|
+
throw new Error(`TCB is invalid: benchmark not found for tcbId=${tcb.tcbId}`);
|
|
21
|
+
}
|
|
16
22
|
const signedTcbData = {
|
|
17
|
-
teeOfferId: utilityData.teeOfferId
|
|
23
|
+
teeOfferId: utilityData.teeOfferId,
|
|
18
24
|
pubKey: utilityData.pubKey,
|
|
19
|
-
benchmark
|
|
25
|
+
benchmark,
|
|
20
26
|
};
|
|
21
27
|
const { certsChain } = await tcb.get();
|
|
22
28
|
const certChainPem = certsChain.map(CertificateSerializer.deserializeFromBlockchain).join('\n');
|
|
@@ -30,18 +36,17 @@ export class TeeBlockVerifier {
|
|
|
30
36
|
}
|
|
31
37
|
logger.trace(tcb.tcbId, `TCB id = ${tcb.tcbId} added to the cache. Cache size: ${this.verifiedTcbs.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
32
38
|
}
|
|
33
|
-
static async verifyWithCertificates(
|
|
34
|
-
const certChain = CertificateSerializer.deserializeCertChain(certs);
|
|
39
|
+
static async verifyWithCertificates(certChain, signedTcbData) {
|
|
35
40
|
await TeeCertificateService.validateTeeCertChainOrFail(certChain);
|
|
36
41
|
const userDataHashFromCert = CertificatesHelper.getExtensionValue(certChain, OID_CUSTOM_EXTENSION_USER_DATA);
|
|
37
42
|
if (!userDataHashFromCert) {
|
|
38
43
|
throw new Error(`TCB is invalid: userData not found in TCB certificate`);
|
|
39
44
|
}
|
|
40
|
-
const signableDataHash =
|
|
41
|
-
const signableDataHashBuffer = Buffer.from(signableDataHash
|
|
45
|
+
const signableDataHash = getTcbDataHash(signedTcbData);
|
|
46
|
+
const signableDataHashBuffer = Buffer.from(signableDataHash, Encoding.hex);
|
|
42
47
|
if (Buffer.compare(userDataHashFromCert, signableDataHashBuffer) !== 0) {
|
|
43
48
|
throw new Error(`TCB is invalid: userData is not match`);
|
|
44
49
|
}
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0QyxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE1BQU0sT0FBTyxnQkFBZ0I7SUFDbkIsTUFBTSxDQUFVLFlBQVksR0FBc0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVwRSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFRLEVBQUUsV0FBMkI7UUFDMUQsY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFLLHFCQUFxQixDQUFDLENBQUM7WUFDekQsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sU0FBUyxDQUFDLHFCQUFxQixDQUM3RCxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFDWCxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FDekIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixD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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChunkedX509Cert, CpuInfo } from '@super-protocol/dto-js';
|
|
1
|
+
import { ChunkedX509Cert, ConsensusBenchmark, CpuInfo } from '@super-protocol/dto-js';
|
|
2
2
|
import { BlockchainId, TokenAmount } from './Web3.js';
|
|
3
3
|
export type ConsensusBenchmarkStorage = {
|
|
4
4
|
cpuSize: number;
|
|
@@ -33,6 +33,11 @@ export type TcbData = {
|
|
|
33
33
|
certsChain: ChunkedX509Cert[];
|
|
34
34
|
rootCertId: BlockchainId;
|
|
35
35
|
};
|
|
36
|
+
export type SignedTcbData = {
|
|
37
|
+
teeOfferId: BlockchainId;
|
|
38
|
+
pubKey: string;
|
|
39
|
+
benchmark: ConsensusBenchmark;
|
|
40
|
+
};
|
|
36
41
|
export declare enum TcbStatus {
|
|
37
42
|
Inited = "0",
|
|
38
43
|
Completed = "1",
|
|
@@ -5,4 +5,4 @@ export var TcbStatus;
|
|
|
5
5
|
TcbStatus["Banned"] = "2";
|
|
6
6
|
TcbStatus["BenchmarkChanged"] = "3";
|
|
7
7
|
})(TcbStatus || (TcbStatus = {}));
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc2Vuc3VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGVzL0NvbnNlbnN1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErQ0EsTUFBTSxDQUFOLElBQVksU0FLWDtBQUxELFdBQVksU0FBUztJQUNuQix5QkFBWSxDQUFBO0lBQ1osNEJBQWUsQ0FBQTtJQUNmLHlCQUFZLENBQUE7SUFDWixtQ0FBc0IsQ0FBQTtBQUN4QixDQUFDLEVBTFcsU0FBUyxLQUFULFNBQVMsUUFLcEIifQ==
|
package/dist/mjs/utils/tcb.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function getTcbDataHash(signableData:
|
|
1
|
+
import { SignedTcbData } from '../types/Consensus.js';
|
|
2
|
+
export declare function getTcbDataHash(signableData: SignedTcbData): string;
|
package/dist/mjs/utils/tcb.js
CHANGED
|
@@ -6,4 +6,4 @@ export function getTcbDataHash(signableData) {
|
|
|
6
6
|
const userData = ethers.AbiCoder.defaultAbiCoder().encode(['uint256', `tuple(${sizes},${marks},${cpuInfo})`, 'string'], [signableData.teeOfferId, signableData.benchmark, signableData.pubKey]);
|
|
7
7
|
return ethers.sha256(userData).slice(2); // remove 0x
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3RjYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBR2hDLE1BQU0sVUFBVSxjQUFjLENBQUMsWUFBMkI7SUFDeEQsTUFBTSxLQUFLLEdBQ1QsaUdBQWlHLENBQUM7SUFDcEcsTUFBTSxLQUFLLEdBQUcsaUZBQWlGLENBQUM7SUFDaEcsTUFBTSxPQUFPLEdBQ1gsZ0pBQWdKLENBQUM7SUFFbkosTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQ3ZELENBQUMsU0FBUyxFQUFFLFNBQVMsS0FBSyxJQUFJLEtBQUssSUFBSSxPQUFPLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFDNUQsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUN2RSxDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVk7QUFDdkQsQ0FBQyJ9
|