@super-protocol/sdk-js 3.15.3-beta.5 → 3.15.3-beta.6
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.
|
@@ -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) {
|
|
@@ -36,19 +37,18 @@ class TeeBlockVerifier {
|
|
|
36
37
|
}
|
|
37
38
|
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
39
|
}
|
|
39
|
-
static async verifyWithCertificates(
|
|
40
|
-
const certChain = index_js_1.CertificateSerializer.deserializeCertChain(certs);
|
|
40
|
+
static async verifyWithCertificates(certChain, signedTcbData) {
|
|
41
41
|
await TeeCertificateService_js_1.TeeCertificateService.validateTeeCertChainOrFail(certChain);
|
|
42
42
|
const userDataHashFromCert = index_js_1.CertificatesHelper.getExtensionValue(certChain, constants_js_1.OID_CUSTOM_EXTENSION_USER_DATA);
|
|
43
43
|
if (!userDataHashFromCert) {
|
|
44
44
|
throw new Error(`TCB is invalid: userData not found in TCB certificate`);
|
|
45
45
|
}
|
|
46
|
-
const signableDataHash = (0,
|
|
47
|
-
const signableDataHashBuffer = Buffer.from(signableDataHash
|
|
46
|
+
const signableDataHash = (0, tcb_js_1.getTcbDataHash)(signedTcbData);
|
|
47
|
+
const signableDataHashBuffer = Buffer.from(signableDataHash, dto_js_1.Encoding.hex);
|
|
48
48
|
if (Buffer.compare(userDataHashFromCert, signableDataHashBuffer) !== 0) {
|
|
49
49
|
throw new Error(`TCB is invalid: userData is not match`);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
exports.TeeBlockVerifier = TeeBlockVerifier;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBa0M7QUFDbEMsNENBQXNDO0FBR3RDLGdGQUFxRDtBQUNyRCx1REFBcUY7QUFDckYseUVBQW1FO0FBQ25FLGtEQUFpRTtBQUNqRSxtREFBc0U7QUFDdEUsNENBQWlEO0FBUWpELE1BQWEsZ0JBQWdCO0lBQ25CLE1BQU0sQ0FBVSxZQUFZLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFcEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFdBQTJCO1FBQzFELGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLG1CQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxDQUFDLEtBQUsscUJBQXFCLENBQUMsQ0FBQztZQUN6RCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUM3QyxNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU07WUFDMUIsU0FBUyxFQUFFLENBQUMsTUFBTSxzQkFBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FDdkYsR0FBRyxDQUFDLEtBQUssQ0FDVjtTQUNGLENBQUM7UUFFRixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxnQ0FBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRyxNQUFNLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUUzRSxlQUFlO1FBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUF5QixDQUFDO1lBQzdFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLG1CQUFNLENBQUMsS0FBSyxDQUNWLEtBQUssRUFDTCxZQUFZLEtBQUssd0NBQXdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxrQkFBa0Isa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FDekgsQ0FBQztRQUNKLENBQUM7UUFDRCxtQkFBTSxDQUFDLEtBQUssQ0FDVixHQUFHLENBQUMsS0FBSyxFQUNULFlBQVksR0FBRyxDQUFDLEtBQUssb0NBQW9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxrQkFBa0Isa0JBQU0sQ0FBQyxjQUFjLEVBQUUsQ0FDekgsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUN6QyxTQUFpQixFQUNqQixhQUFzQjtRQUV0QixNQUFNLGdEQUFxQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsNkJBQWtCLENBQUMsaUJBQWlCLENBQy9ELFNBQVMsRUFDVCw2Q0FBOEIsQ0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLHVCQUFjLEVBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGlCQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0UsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDOztBQXpESCw0Q0EwREMifQ==
|
|
@@ -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) {
|
|
@@ -30,18 +31,17 @@ export class TeeBlockVerifier {
|
|
|
30
31
|
}
|
|
31
32
|
logger.trace(tcb.tcbId, `TCB id = ${tcb.tcbId} added to the cache. Cache size: ${this.verifiedTcbs.size}, cache limit: ${config.TLB_CACHE_SIZE}`);
|
|
32
33
|
}
|
|
33
|
-
static async verifyWithCertificates(
|
|
34
|
-
const certChain = CertificateSerializer.deserializeCertChain(certs);
|
|
34
|
+
static async verifyWithCertificates(certChain, signedTcbData) {
|
|
35
35
|
await TeeCertificateService.validateTeeCertChainOrFail(certChain);
|
|
36
36
|
const userDataHashFromCert = CertificatesHelper.getExtensionValue(certChain, OID_CUSTOM_EXTENSION_USER_DATA);
|
|
37
37
|
if (!userDataHashFromCert) {
|
|
38
38
|
throw new Error(`TCB is invalid: userData not found in TCB certificate`);
|
|
39
39
|
}
|
|
40
|
-
const signableDataHash =
|
|
41
|
-
const signableDataHashBuffer = Buffer.from(signableDataHash
|
|
40
|
+
const signableDataHash = getTcbDataHash(signedTcbData);
|
|
41
|
+
const signableDataHashBuffer = Buffer.from(signableDataHash, Encoding.hex);
|
|
42
42
|
if (Buffer.compare(userDataHashFromCert, signableDataHashBuffer) !== 0) {
|
|
43
43
|
throw new Error(`TCB is invalid: userData is not match`);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0QyxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQXNCLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVFqRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ25CLE1BQU0sQ0FBVSxZQUFZLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFcEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFdBQTJCO1FBQzFELGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzdDLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUUsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ3ZGLEdBQUcsQ0FBQyxLQUFLLENBQ1Y7U0FDRixDQUFDO1FBRUYsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEcsTUFBTSxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFM0UsZUFBZTtRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUF5QixDQUFDO1lBQzdFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQ1YsS0FBSyxFQUNMLFlBQVksS0FBSyx3Q0FBd0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLGtCQUFrQixNQUFNLENBQUMsY0FBYyxFQUFFLENBQ3pILENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FDVixHQUFHLENBQUMsS0FBSyxFQUNULFlBQVksR0FBRyxDQUFDLEtBQUssb0NBQW9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxrQkFBa0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUN6SCxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQ3pDLFNBQWlCLEVBQ2pCLGFBQXNCO1FBRXRCLE1BQU0scUJBQXFCLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFbEUsTUFBTSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FDL0QsU0FBUyxFQUNULDhCQUE4QixDQUMvQixDQUFDO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQyJ9
|