@super-protocol/sdk-js 3.15.3-beta.0 → 3.15.3-beta.1
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/certificates/serializer.d.ts +5 -3
- package/dist/cjs/certificates/serializer.js +26 -11
- package/dist/cjs/certificates/types.d.ts +1 -1
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +3 -2
- package/dist/cjs/tee/TeeBlockVerifier.js +3 -3
- package/dist/cjs/utils/helper.d.ts +4 -2
- package/dist/cjs/utils/helper.js +20 -90
- package/dist/mjs/certificates/serializer.d.ts +5 -3
- package/dist/mjs/certificates/serializer.js +26 -11
- package/dist/mjs/certificates/types.d.ts +1 -1
- package/dist/mjs/constants.d.ts +1 -0
- package/dist/mjs/constants.js +2 -1
- package/dist/mjs/tee/TeeBlockVerifier.js +3 -3
- package/dist/mjs/utils/helper.d.ts +4 -2
- package/dist/mjs/utils/helper.js +18 -90
- package/package.json +1 -1
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BufferedChunkedX509Cert } from './types.js';
|
|
2
|
+
import { ChunkedX509Cert } from '@super-protocol/dto-js';
|
|
2
3
|
export declare const BLOCKCHAIN_CERT_TBS_PARTS: string[];
|
|
3
4
|
export declare class CertificateSerializer {
|
|
4
5
|
static serializeCertChain(certChainPem: string): string;
|
|
5
6
|
static deserializeCertChain(input: string): string;
|
|
6
7
|
static isSerializedCertChain(certChainBase64: string): boolean;
|
|
7
|
-
static serializeForBlockchain(certPem: string):
|
|
8
|
-
static deserializeFromBlockchain(
|
|
8
|
+
static serializeForBlockchain(certPem: string): ChunkedX509Cert;
|
|
9
|
+
static deserializeFromBlockchain(blockchainCert: ChunkedX509Cert): string;
|
|
9
10
|
private static removeLeadingZerosIfNeeded;
|
|
10
11
|
private static getPart;
|
|
12
|
+
static chunkedToBufferedChunkedX509Cert(blockchainCert: ChunkedX509Cert): BufferedChunkedX509Cert;
|
|
11
13
|
}
|
|
@@ -10,6 +10,7 @@ const binary_splitter_js_1 = require("./binary-splitter.js");
|
|
|
10
10
|
const helper_js_1 = require("./helper.js");
|
|
11
11
|
const constants_js_1 = require("../constants.js");
|
|
12
12
|
const pki_common_1 = require("@super-protocol/pki-common");
|
|
13
|
+
const helper_js_2 = require("../utils/helper.js");
|
|
13
14
|
const CERTS_CHAIN_DELIMITER = ';';
|
|
14
15
|
const CERTS_SERIALIZATION_PREFIX = 'certs:';
|
|
15
16
|
exports.BLOCKCHAIN_CERT_TBS_PARTS = [
|
|
@@ -69,18 +70,19 @@ class CertificateSerializer {
|
|
|
69
70
|
throw new Error(`Unexpected serialized parts found in certificate: ${serializedParts.map((part) => part.name || part.oid).join(', ')}`);
|
|
70
71
|
}
|
|
71
72
|
return {
|
|
72
|
-
nonSerializedParts,
|
|
73
|
-
expirationDate: expirationDate.value,
|
|
74
|
-
ca: ca.value,
|
|
75
|
-
userData: userData?.value,
|
|
76
|
-
serialNumber: serial.value,
|
|
77
|
-
signature: signature.value,
|
|
78
|
-
publicKey: publicKey.value,
|
|
79
|
-
mrEnclave: mrEnclave?.value,
|
|
80
|
-
mrSigner: mrSigner?.value,
|
|
73
|
+
nonSerializedParts: nonSerializedParts.map(helper_js_2.toBlockchainHex),
|
|
74
|
+
expirationDate: (0, helper_js_2.toBlockchainHex)(expirationDate.value),
|
|
75
|
+
ca: (0, helper_js_2.toBlockchainHex)(ca.value),
|
|
76
|
+
userData: (0, helper_js_2.toBlockchainHex)(userData?.value),
|
|
77
|
+
serialNumber: (0, helper_js_2.toBlockchainHex)(serial.value),
|
|
78
|
+
signature: (0, helper_js_2.toBlockchainHex)(signature.value),
|
|
79
|
+
publicKey: (0, helper_js_2.toBlockchainHex)(publicKey.value),
|
|
80
|
+
mrEnclave: (0, helper_js_2.toBlockchainHex)(mrEnclave?.value),
|
|
81
|
+
mrSigner: (0, helper_js_2.toBlockchainHex)(mrSigner?.value),
|
|
81
82
|
};
|
|
82
83
|
}
|
|
83
|
-
static deserializeFromBlockchain(
|
|
84
|
+
static deserializeFromBlockchain(blockchainCert) {
|
|
85
|
+
const data = CertificateSerializer.chunkedToBufferedChunkedX509Cert(blockchainCert);
|
|
84
86
|
const bufferParts = [];
|
|
85
87
|
bufferParts.push(Buffer.from(data.nonSerializedParts[0]));
|
|
86
88
|
bufferParts.push(Buffer.from(data.nonSerializedParts[1]));
|
|
@@ -124,6 +126,19 @@ class CertificateSerializer {
|
|
|
124
126
|
}
|
|
125
127
|
return part;
|
|
126
128
|
}
|
|
129
|
+
static chunkedToBufferedChunkedX509Cert(blockchainCert) {
|
|
130
|
+
return {
|
|
131
|
+
nonSerializedParts: blockchainCert.nonSerializedParts.map((part) => (0, helper_js_2.fromBlockchainHex)(part)),
|
|
132
|
+
expirationDate: (0, helper_js_2.fromBlockchainHex)(blockchainCert.expirationDate),
|
|
133
|
+
ca: (0, helper_js_2.fromBlockchainHex)(blockchainCert.ca),
|
|
134
|
+
userData: (0, helper_js_2.fromBlockchainHexOptional)(blockchainCert.userData),
|
|
135
|
+
publicKey: (0, helper_js_2.fromBlockchainHex)(blockchainCert.publicKey),
|
|
136
|
+
serialNumber: (0, helper_js_2.fromBlockchainHex)(blockchainCert.serialNumber),
|
|
137
|
+
mrEnclave: (0, helper_js_2.fromBlockchainHexOptional)(blockchainCert.mrEnclave),
|
|
138
|
+
mrSigner: (0, helper_js_2.fromBlockchainHexOptional)(blockchainCert.mrSigner),
|
|
139
|
+
signature: (0, helper_js_2.fromBlockchainHex)(blockchainCert.signature),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
127
142
|
}
|
|
128
143
|
exports.CertificateSerializer = CertificateSerializer;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jZXJ0aWZpY2F0ZXMvc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0REFBK0I7QUFDL0Isb0RBQXVCO0FBQ3ZCLDZEQUF5RjtBQUN6RiwyQ0FBaUQ7QUFDakQsa0RBQWlFO0FBQ2pFLDJEQUdvQztBQUdwQyxrREFBbUc7QUFFbkcsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDbEMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQUM7QUFFL0IsUUFBQSx5QkFBeUIsR0FBRztJQUN2QyxjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLFdBQVc7SUFDWCxJQUFJO0lBQ0osVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0NBQ1gsQ0FBQztBQUVGLE1BQWEscUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxZQUFvQjtRQUM1QyxNQUFNLFFBQVEsR0FBRyw4QkFBa0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEUsT0FBTyxHQUFHLDBCQUEwQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztJQUNwSSxDQUFDO0lBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQWE7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLDBCQUEwQixZQUFZLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSzthQUNuQixLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FB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
|
|
@@ -70,7 +70,7 @@ export type ParsedCert = {
|
|
|
70
70
|
authorityKeyIdentifier?: string;
|
|
71
71
|
subjectKeyIdentifier?: string;
|
|
72
72
|
};
|
|
73
|
-
export type
|
|
73
|
+
export type BufferedChunkedX509Cert = {
|
|
74
74
|
nonSerializedParts: Uint8Array[];
|
|
75
75
|
expirationDate: Uint8Array;
|
|
76
76
|
ca: Uint8Array;
|
package/dist/cjs/constants.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare const AMOY_TX_GAS_LIMIT: bigint;
|
|
|
27
27
|
export declare const DEFAULT_OFFER_VERSION = 0;
|
|
28
28
|
export declare const HTTPS_PORT = 443;
|
|
29
29
|
export declare const ZERO_HASH: Hash;
|
|
30
|
+
export declare const ZERO32_HEX = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
30
31
|
export declare const TEE_LOADER_TRUSTED_MRSIGNER = "4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b";
|
|
31
32
|
export declare const TEE_PKI_TRUSTED_MRSIGNER = "34ea7ca88034fe80f209e97cd0f8442f7ba621eb2a5f60393ab05871ae6b979d";
|
|
32
33
|
export declare const OPBNB_MAIN_CHAIN_ID = 204;
|
package/dist/cjs/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SUPERPROTOCOL_CA = exports.OID_OCSP_NONCE = exports.OID_OCSP_ISSUER_ACCESS_METHOD = exports.OID_OCSP_ACCESS_METHOD = exports.OID_CRL_DISTRIBUTION_POINTS = exports.OID_AUTHORITY_INFORMATION_ACCESS_EXTENSION = exports.OID_CUSTOM_EXTENSION_USER_DATA = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT_WORKLOAD_INFO_HASH = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT_SIGNATURE_KEY_HASH = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT_HARDWARE_CONTEXT = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT = exports.TEE_LOADER_TRUSTED_CERTIFICATE = exports.OPBNB_MAX_PRIORITY_FEE_PER_GAS = exports.OPBNB_TX_GAS_LIMIT = exports.OPBNB_TEST_CHAIN_ID = exports.OPBNB_MAIN_CHAIN_ID = exports.TEE_PKI_TRUSTED_MRSIGNER = exports.TEE_LOADER_TRUSTED_MRSIGNER = exports.ZERO_HASH = exports.HTTPS_PORT = exports.DEFAULT_OFFER_VERSION = exports.AMOY_TX_GAS_LIMIT = exports.AMOY_TX_COST_LIMIT = exports.OCSP_URL = exports.POLYGON_MAIN_GASSTATION_URL = exports.POLYGON_AMOY_GASSTATION_URL = exports.POLYGON_AMOY_CHAIN_ID = exports.POLYGON_MAIN_CHAIN_ID = exports.MAX_RPC_BATCH_SIZE = exports.BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = exports.TRANSACTION_RETRY_ATTEMPTS = exports.BLOCKCHAIN_CALL_RETRY_INTERVAL = exports.BLOCKCHAIN_CALL_RETRY_ATTEMPTS = exports.POLYGON_MATIC_EVENT_PATH = exports.BLOCK_SIZE_TO_FETCH_TRANSACTION = exports.FIVE_MINUTES = exports.ONE_HOUR = exports.ONE_DAY = exports.txIntervalMs = exports.txConcurrency = exports.defaultMaxPriorityFeePerGasMultiplier = exports.defaultMaxFeePerGasMultiplier = exports.defaultGasLimitMultiplier = exports.defaultGasPrice = exports.defaultGasLimit = exports.defaultBlockchainUrl = void 0;
|
|
3
|
+
exports.SUPERPROTOCOL_CA = exports.OID_OCSP_NONCE = exports.OID_OCSP_ISSUER_ACCESS_METHOD = exports.OID_OCSP_ACCESS_METHOD = exports.OID_CRL_DISTRIBUTION_POINTS = exports.OID_AUTHORITY_INFORMATION_ACCESS_EXTENSION = exports.OID_CUSTOM_EXTENSION_USER_DATA = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT_WORKLOAD_INFO_HASH = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT_SIGNATURE_KEY_HASH = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT_HARDWARE_CONTEXT = exports.OID_CUSTOM_EXTENSION_ORDER_REPORT = exports.TEE_LOADER_TRUSTED_CERTIFICATE = exports.OPBNB_MAX_PRIORITY_FEE_PER_GAS = exports.OPBNB_TX_GAS_LIMIT = exports.OPBNB_TEST_CHAIN_ID = exports.OPBNB_MAIN_CHAIN_ID = exports.TEE_PKI_TRUSTED_MRSIGNER = exports.TEE_LOADER_TRUSTED_MRSIGNER = exports.ZERO32_HEX = exports.ZERO_HASH = exports.HTTPS_PORT = exports.DEFAULT_OFFER_VERSION = exports.AMOY_TX_GAS_LIMIT = exports.AMOY_TX_COST_LIMIT = exports.OCSP_URL = exports.POLYGON_MAIN_GASSTATION_URL = exports.POLYGON_AMOY_GASSTATION_URL = exports.POLYGON_AMOY_CHAIN_ID = exports.POLYGON_MAIN_CHAIN_ID = exports.MAX_RPC_BATCH_SIZE = exports.BLOCKCHAIN_BATCH_REQUEST_TIMEOUT = exports.TRANSACTION_RETRY_ATTEMPTS = exports.BLOCKCHAIN_CALL_RETRY_INTERVAL = exports.BLOCKCHAIN_CALL_RETRY_ATTEMPTS = exports.POLYGON_MATIC_EVENT_PATH = exports.BLOCK_SIZE_TO_FETCH_TRANSACTION = exports.FIVE_MINUTES = exports.ONE_HOUR = exports.ONE_DAY = exports.txIntervalMs = exports.txConcurrency = exports.defaultMaxPriorityFeePerGasMultiplier = exports.defaultMaxFeePerGasMultiplier = exports.defaultGasLimitMultiplier = exports.defaultGasPrice = exports.defaultGasLimit = exports.defaultBlockchainUrl = void 0;
|
|
4
4
|
const dto_js_1 = require("@super-protocol/dto-js");
|
|
5
5
|
exports.defaultBlockchainUrl = 'http://127.0.0.1:8545';
|
|
6
6
|
exports.defaultGasLimit = BigInt(7000000);
|
|
@@ -34,6 +34,7 @@ exports.ZERO_HASH = {
|
|
|
34
34
|
algo: dto_js_1.HashAlgorithm.SHA256,
|
|
35
35
|
encoding: dto_js_1.Encoding.base64,
|
|
36
36
|
};
|
|
37
|
+
exports.ZERO32_HEX = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
37
38
|
exports.TEE_LOADER_TRUSTED_MRSIGNER = '4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b';
|
|
38
39
|
exports.TEE_PKI_TRUSTED_MRSIGNER = '34ea7ca88034fe80f209e97cd0f8442f7ba621eb2a5f60393ab05871ae6b979d';
|
|
39
40
|
// opBNB Network Constants
|
|
@@ -441,4 +442,4 @@ OVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0t
|
|
|
441
442
|
LS0tCgAwCgYIKoZIzj0EAwIDSAAwRQIgDTaE8oMgfCSqhbOeqnn6FD2ypLS4arzW
|
|
442
443
|
th/G0VQ3e40CIQCEcpjpdAP63KCipYLE1UEmHJOBOvcKNjevt/2O9DkwXA==
|
|
443
444
|
-----END CERTIFICATE-----`;
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFBdUU7QUFFMUQsUUFBQSxvQkFBb0IsR0FBRyx1QkFBdUIsQ0FBQztBQUMvQyxRQUFBLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsUUFBQSxlQUFlLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JDLFFBQUEseUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLFFBQUEsNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLFFBQUEscUNBQXFDLEdBQUcsR0FBRyxDQUFDO0FBQzVDLFFBQUEsYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDbEIsUUFBQSxPQUFPLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBQSxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFFBQUEsK0JBQStCLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLFFBQUEsd0JBQXdCLEdBQUcsNENBQTRDLENBQUM7QUFDeEUsUUFBQSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDcEMsUUFBQSw4QkFBOEIsR0FBRyxJQUFJLENBQUM7QUFDdEMsUUFBQSwwQkFBMEIsR0FBRyxDQUFDLENBQUM7QUFDL0IsUUFBQSxnQ0FBZ0MsR0FBRyxLQUFLLENBQUM7QUFDekMsUUFBQSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDMUIsUUFBQSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDNUIsUUFBQSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDOUIsUUFBQSwyQkFBMkIsR0FBRyw0Q0FBNEMsQ0FBQztBQUMzRSxRQUFBLDJCQUEyQixH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
|
|
@@ -11,7 +11,6 @@ const index_js_1 = require("../certificates/index.js");
|
|
|
11
11
|
const TeeCertificateService_js_1 = require("./TeeCertificateService.js");
|
|
12
12
|
const index_js_2 = require("../utils/helpers/index.js");
|
|
13
13
|
const constants_js_1 = require("../constants.js");
|
|
14
|
-
const helper_js_1 = require("../utils/helper.js");
|
|
15
14
|
class TeeBlockVerifier {
|
|
16
15
|
static verifiedTcbs = new Set();
|
|
17
16
|
static async verifyTcb(tcb, utilityData) {
|
|
@@ -26,7 +25,8 @@ class TeeBlockVerifier {
|
|
|
26
25
|
benchmark: (await Consensus_js_1.default.getBenchmarksByTcbIds([tcb.tcbId], [utilityData.teeOfferId]))[tcb.tcbId],
|
|
27
26
|
};
|
|
28
27
|
const { certsChain } = await tcb.get();
|
|
29
|
-
|
|
28
|
+
const certChainPem = certsChain.map(index_js_1.CertificateSerializer.deserializeFromBlockchain).join('\n');
|
|
29
|
+
await TeeBlockVerifier.verifyWithCertificates(certChainPem, signedTcbData);
|
|
30
30
|
// update cache
|
|
31
31
|
this.verifiedTcbs.add(tcb.tcbId);
|
|
32
32
|
if (this.verifiedTcbs.size > config_js_1.config.TLB_CACHE_SIZE) {
|
|
@@ -51,4 +51,4 @@ class TeeBlockVerifier {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
exports.TeeBlockVerifier = TeeBlockVerifier;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw2REFBa0M7QUFDbEMsNENBQXNDO0FBR3RDLGdGQUFxRDtBQUNyRCx1REFBcUY7QUFDckYseUVBQW1FO0FBQ25FLHdEQUFnRTtBQUNoRSxrREFBaUU7QUFTakUsTUFBYSxnQkFBZ0I7SUFDbkIsTUFBTSxDQUFVLFlBQVksR0FBc0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUVwRSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFRLEVBQUUsV0FBMkI7UUFDMUQsY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckMsbUJBQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzdDLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUUsQ0FBQyxNQUFNLHNCQUFTLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUN2RixHQUFHLENBQUMsS0FBSyxDQUNWO1NBQ0YsQ0FBQztRQUVGLE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLGdDQUFxQixDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTNFLGVBQWU7UUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksR0FBRyxrQkFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQXlCLENBQUM7WUFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsbUJBQU0sQ0FBQyxLQUFLLENBQ1YsS0FBSyxFQUNMLFlBQVksS0FBSyx3Q0FBd0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLGtCQUFrQixrQkFBTSxDQUFDLGNBQWMsRUFBRSxDQUN6SCxDQUFDO1FBQ0osQ0FBQztRQUNELG1CQUFNLENBQUMsS0FBSyxDQUNWLEdBQUcsQ0FBQyxLQUFLLEVBQ1QsWUFBWSxHQUFHLENBQUMsS0FBSyxvQ0FBb0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLGtCQUFrQixrQkFBTSxDQUFDLGNBQWMsRUFBRSxDQUN6SCxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQ3pDLEtBQWEsRUFDYixhQUFzQjtRQUV0QixNQUFNLFNBQVMsR0FBRyxnQ0FBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRSxNQUFNLGdEQUFxQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsNkJBQWtCLENBQUMsaUJBQWlCLENBQy9ELFNBQVMsRUFDVCw2Q0FBOEIsQ0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFtQixFQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0YsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDOztBQTFESCw0Q0EyREMifQ==
|
|
@@ -2,7 +2,7 @@ import { TransactionOptions } from '../types/Web3.js';
|
|
|
2
2
|
import Web3, { JsonRpcOptionalRequest } from 'web3';
|
|
3
3
|
import { SlotInfo } from '../types/SlotInfo.js';
|
|
4
4
|
import { ConsensusBenchmarkStorage, LoaderSecretAccessPublicKey, LoaderSession, OfferResource, OfferStorageAllocated, OfferStorageRequest, OptionInfo, OptionInfoRaw, OrderUsage, OrderUsageRaw, SecretRequest, SlotUsage, TeeOfferOption, TeeOfferOptionRaw, TeeOfferSlot, ValueOfferSlot, ValueOfferSlotRaw, ConsensusBenchmarkPriceMultipliers, OfferVersion, OfferVersionInfo, OfferVersionInfoRaw, OfferVersionRaw, TeeOfferInfo, TeeOfferInfoRaw, HardwareInfoRaw, HardwareInfo, OfferInfoRaw, OfferInfo, ValueOfferRestrictionsSpecification, OfferType, OfferGroup, Origins } from '../types/index.js';
|
|
5
|
-
import { BenchmarkInfo,
|
|
5
|
+
import { BenchmarkInfo, ConsensusBenchmark } from '@super-protocol/dto-js';
|
|
6
6
|
import { BatchResponse, BatchResponseSuccess, ExecuteBatchOptions } from './types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Function for checking if provider action account initialized (required for set methods)
|
|
@@ -58,7 +58,6 @@ export declare function formatPriceMultipliers(priceMultipliers: ConsensusBenchm
|
|
|
58
58
|
export declare function formatBenchmarks(benchmarks: ConsensusBenchmarkStorage[]): ConsensusBenchmark[];
|
|
59
59
|
export declare function formatBenchmark(benchmark: ConsensusBenchmarkStorage): ConsensusBenchmark;
|
|
60
60
|
export declare function formatBenchmarkTo(benchmark: ConsensusBenchmark): ConsensusBenchmarkStorage;
|
|
61
|
-
export declare function formatCertsChain(certsChain: ChunkedX509Cert[]): string;
|
|
62
61
|
export declare function formatUsage(usage: SlotUsage): SlotUsage;
|
|
63
62
|
export declare function convertOrderUsage(usage: OrderUsageRaw, slotInfo: SlotInfo, slotUsage: SlotUsage): OrderUsage;
|
|
64
63
|
export declare function convertOptionInfoFromRaw(optionInfo: OptionInfoRaw): OptionInfo;
|
|
@@ -74,3 +73,6 @@ export declare function executeBatchAsync<T>(requests: JsonRpcOptionalRequest[],
|
|
|
74
73
|
export declare function executeBatchAsync<T>(requests: JsonRpcOptionalRequest[], options?: ExecuteBatchOptions): Promise<BatchResponse<T>[]>;
|
|
75
74
|
export declare const preparePrivateKey: (pk: string) => string;
|
|
76
75
|
export declare const isIpAddress: (host: string) => boolean;
|
|
76
|
+
export declare const fromBlockchainHexOptional: (hex?: string) => Uint8Array | undefined;
|
|
77
|
+
export declare const fromBlockchainHex: (hex: string) => Uint8Array;
|
|
78
|
+
export declare const toBlockchainHex: (u?: Uint8Array) => string;
|
package/dist/cjs/utils/helper.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isIpAddress = exports.preparePrivateKey = exports.executeBatchAsync = exports.transformComplexObject = exports.cleanWeb3Data = exports.isValidBytes32Hex = exports.packSlotInfo = exports.unpackSlotInfo = exports.convertOptionInfoToRaw = exports.convertOptionInfoFromRaw = exports.convertOrderUsage = exports.formatUsage = exports.
|
|
6
|
+
exports.toBlockchainHex = exports.fromBlockchainHex = exports.fromBlockchainHexOptional = exports.isIpAddress = exports.preparePrivateKey = exports.executeBatchAsync = exports.transformComplexObject = exports.cleanWeb3Data = exports.isValidBytes32Hex = exports.packSlotInfo = exports.unpackSlotInfo = exports.convertOptionInfoToRaw = exports.convertOptionInfoFromRaw = exports.convertOrderUsage = exports.formatUsage = exports.formatBenchmarkTo = exports.formatBenchmark = exports.formatBenchmarks = exports.formatPriceMultipliers = exports.createBenchmarkInfo = exports.formatOfferSlot = exports.formatTeeOfferSlot = exports.formatEpochIndexes = exports.convertValueOfferInfo = exports.convertTeeOfferInfo = exports.convertHardwareInfo = exports.convertOfferVersion = exports.convertOfferVersionInfo = exports.convertOrigins = exports.convertOfferStorageRequestFromRaw = exports.convertOfferStorageAllocatedFromRaw = exports.convertSecretRequestFromRaw = exports.convertOfferResourceFromRaw = exports.convertLoaderSessionFromRaw = exports.convertLoaderSecretAccessPublicKeyFromRaw = exports.convertTeeOfferOptionFromRaw = exports.convertBigIntToString = exports.incrementMethodCall = exports.isNodeJS = exports.createTransactionOptions = exports.getGasLimitForNetwork = exports.multiplyBigIntByNumber = exports.getMaxPriorityFeePerGas = exports.getBaseBlockFee = exports.checkForUsingExternalTxManager = exports.checkIfActionAccountInitialized = void 0;
|
|
7
7
|
const lodash_1 = __importDefault(require("lodash"));
|
|
8
8
|
const store_js_1 = __importDefault(require("../store.js"));
|
|
9
9
|
const web3_1 = __importDefault(require("web3"));
|
|
@@ -408,94 +408,6 @@ function formatBenchmarkTo(benchmark) {
|
|
|
408
408
|
};
|
|
409
409
|
}
|
|
410
410
|
exports.formatBenchmarkTo = formatBenchmarkTo;
|
|
411
|
-
function formatCertsChain(certsChain) {
|
|
412
|
-
const zeroHash = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
413
|
-
const formattedCertsChain = certsChain.map((cert) => {
|
|
414
|
-
let packedData = web3_1.default.utils.encodePacked({
|
|
415
|
-
type: 'bytes',
|
|
416
|
-
value: cert.nonSerializedParts[0],
|
|
417
|
-
}, {
|
|
418
|
-
type: 'bytes',
|
|
419
|
-
value: cert.nonSerializedParts[1],
|
|
420
|
-
}, {
|
|
421
|
-
type: 'bytes',
|
|
422
|
-
value: cert.serialNumber,
|
|
423
|
-
}, {
|
|
424
|
-
type: 'bytes',
|
|
425
|
-
value: cert.nonSerializedParts[2],
|
|
426
|
-
}, {
|
|
427
|
-
type: 'bytes',
|
|
428
|
-
value: cert.expirationDate,
|
|
429
|
-
}, {
|
|
430
|
-
type: 'bytes',
|
|
431
|
-
value: cert.nonSerializedParts[3],
|
|
432
|
-
}, {
|
|
433
|
-
type: 'bytes',
|
|
434
|
-
value: cert.publicKey,
|
|
435
|
-
}, {
|
|
436
|
-
type: 'bytes',
|
|
437
|
-
value: cert.nonSerializedParts[4],
|
|
438
|
-
}, {
|
|
439
|
-
type: 'bytes',
|
|
440
|
-
value: cert.ca,
|
|
441
|
-
});
|
|
442
|
-
let index = 5;
|
|
443
|
-
if (cert.userData != zeroHash) {
|
|
444
|
-
packedData = web3_1.default.utils.encodePacked({
|
|
445
|
-
type: 'bytes',
|
|
446
|
-
value: packedData,
|
|
447
|
-
}, {
|
|
448
|
-
type: 'bytes',
|
|
449
|
-
value: cert.nonSerializedParts[5],
|
|
450
|
-
}, {
|
|
451
|
-
type: 'bytes32',
|
|
452
|
-
value: cert.userData,
|
|
453
|
-
});
|
|
454
|
-
index++;
|
|
455
|
-
}
|
|
456
|
-
if (cert.mrEnclave != zeroHash) {
|
|
457
|
-
packedData = web3_1.default.utils.encodePacked({
|
|
458
|
-
type: 'bytes',
|
|
459
|
-
value: packedData,
|
|
460
|
-
}, {
|
|
461
|
-
type: 'bytes',
|
|
462
|
-
value: cert.nonSerializedParts[index],
|
|
463
|
-
}, {
|
|
464
|
-
type: 'bytes32',
|
|
465
|
-
value: cert.mrEnclave,
|
|
466
|
-
});
|
|
467
|
-
index++;
|
|
468
|
-
}
|
|
469
|
-
if (cert.mrSigner != zeroHash) {
|
|
470
|
-
packedData = web3_1.default.utils.encodePacked({
|
|
471
|
-
type: 'bytes',
|
|
472
|
-
value: packedData,
|
|
473
|
-
}, {
|
|
474
|
-
type: 'bytes',
|
|
475
|
-
value: cert.nonSerializedParts[index],
|
|
476
|
-
}, {
|
|
477
|
-
type: 'bytes32',
|
|
478
|
-
value: cert.mrSigner,
|
|
479
|
-
});
|
|
480
|
-
index++;
|
|
481
|
-
}
|
|
482
|
-
if (index < cert.nonSerializedParts.length - 2) {
|
|
483
|
-
packedData = web3_1.default.utils.encodePacked({
|
|
484
|
-
type: 'bytes',
|
|
485
|
-
value: packedData,
|
|
486
|
-
}, {
|
|
487
|
-
type: 'bytes',
|
|
488
|
-
value: cert.nonSerializedParts[index],
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
return {
|
|
492
|
-
type: 'bytes',
|
|
493
|
-
value: packedData,
|
|
494
|
-
};
|
|
495
|
-
});
|
|
496
|
-
return web3_1.default.utils.encodePacked(...formattedCertsChain);
|
|
497
|
-
}
|
|
498
|
-
exports.formatCertsChain = formatCertsChain;
|
|
499
411
|
function formatUsage(usage) {
|
|
500
412
|
return {
|
|
501
413
|
priceType: usage.priceType.toString(),
|
|
@@ -662,4 +574,22 @@ const isIpAddress = (host) => {
|
|
|
662
574
|
return Boolean(host.match(/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/));
|
|
663
575
|
};
|
|
664
576
|
exports.isIpAddress = isIpAddress;
|
|
665
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBdUI7QUFDdkIsMkRBQWdDO0FBRWhDLGdEQUFvRDtBQUNwRCxtREFBNkM7QUFFN0MsZ0RBcUMyQjtBQUMzQixrREFheUI7QUFDekIsbUNBQWdDO0FBQ2hDLG1EQUtnQztBQUNoQyxrREFBMEI7QUFDMUIsc0RBQThEO0FBRzlEOzs7R0FHRztBQUNJLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxrQkFBdUMsRUFBUSxFQUFFO0lBQy9GLElBQUksQ0FBQyxrQkFBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUk7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYix3SUFBd0ksQ0FDekksQ0FBQztBQUNOLENBQUMsQ0FBQztBQUxXLFFBQUEsK0JBQStCLG1DQUsxQztBQUVGOztHQUVHO0FBQ0ksTUFBTSw4QkFBOEIsR0FBRyxDQUM1QyxrQkFBdUMsRUFDOUIsRUFBRTtJQUNYLCtIQUErSDtJQUMvSCxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBTFcsUUFBQSw4QkFBOEIsa0NBS3pDO0FBRUssTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFVLEVBQW1CLEVBQUU7SUFDN0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQXVCLENBQUMsQ0FBQztBQUM1RSxDQUFDLENBQUM7QUFGVyxRQUFBLGVBQWUsbUJBRTFCO0FBRUssTUFBTSx1QkFBdUIsR0FBRyxDQUFDLElBQVUsRUFBbUIsRUFBRTtJQUNyRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFGVyxR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
|
|
577
|
+
const fromBlockchainHexOptional = (hex) => {
|
|
578
|
+
const cleaned = hex?.startsWith('0x') ? hex.slice(2) : hex;
|
|
579
|
+
if (!cleaned || hex === constants_js_1.ZERO32_HEX)
|
|
580
|
+
return;
|
|
581
|
+
return new Uint8Array(Buffer.from(cleaned, 'hex'));
|
|
582
|
+
};
|
|
583
|
+
exports.fromBlockchainHexOptional = fromBlockchainHexOptional;
|
|
584
|
+
const fromBlockchainHex = (hex) => {
|
|
585
|
+
const converted = (0, exports.fromBlockchainHexOptional)(hex);
|
|
586
|
+
return converted ? converted : new Uint8Array();
|
|
587
|
+
};
|
|
588
|
+
exports.fromBlockchainHex = fromBlockchainHex;
|
|
589
|
+
const toBlockchainHex = (u) => {
|
|
590
|
+
if (!u || u.length === 0)
|
|
591
|
+
return constants_js_1.ZERO32_HEX;
|
|
592
|
+
return '0x' + Buffer.from(u).toString('hex');
|
|
593
|
+
};
|
|
594
|
+
exports.toBlockchainHex = toBlockchainHex;
|
|
595
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBdUI7QUFDdkIsMkRBQWdDO0FBRWhDLGdEQUFvRDtBQUNwRCxtREFBNkM7QUFFN0MsZ0RBcUMyQjtBQUMzQixrREFjeUI7QUFDekIsbUNBQWdDO0FBQ2hDLG1EQUF1RjtBQUN2RixrREFBMEI7QUFDMUIsc0RBQThEO0FBRzlEOzs7R0FHRztBQUNJLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxrQkFBdUMsRUFBUSxFQUFFO0lBQy9GLElBQUksQ0FBQyxrQkFBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUk7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYix3SUFBd0ksQ0FDekksQ0FBQztBQUNOLENBQUMsQ0FBQztBQUxXLFFBQUEsK0JBQStCLG1DQUsxQztBQUVGOztHQUVHO0FBQ0ksTUFBTSw4QkFBOEIsR0FBRyxDQUM1QyxrQkFBdUMsRUFDOUIsRUFBRTtJQUNYLCtIQUErSDtJQUMvSCxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBTFcsUUFBQSw4QkFBOEIsa0NBS3pDO0FBRUssTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFVLEVBQW1CLEVBQUU7SUFDN0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQXVCLENBQUMsQ0FBQztBQUM1RSxDQUFDLENBQUM7QUFGVyxRQUFBLGVBQWUsbUJBRTFCO0FBRUssTUFBTSx1QkFBdUIsR0FBRyxDQUFDLElBQVUsRUFBbUIsRUFBRTtJQUNyRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztBQUM1QyxDQUFDLENBQUM7QUFGVyxR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
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BufferedChunkedX509Cert } from './types.js';
|
|
2
|
+
import { ChunkedX509Cert } from '@super-protocol/dto-js';
|
|
2
3
|
export declare const BLOCKCHAIN_CERT_TBS_PARTS: string[];
|
|
3
4
|
export declare class CertificateSerializer {
|
|
4
5
|
static serializeCertChain(certChainPem: string): string;
|
|
5
6
|
static deserializeCertChain(input: string): string;
|
|
6
7
|
static isSerializedCertChain(certChainBase64: string): boolean;
|
|
7
|
-
static serializeForBlockchain(certPem: string):
|
|
8
|
-
static deserializeFromBlockchain(
|
|
8
|
+
static serializeForBlockchain(certPem: string): ChunkedX509Cert;
|
|
9
|
+
static deserializeFromBlockchain(blockchainCert: ChunkedX509Cert): string;
|
|
9
10
|
private static removeLeadingZerosIfNeeded;
|
|
10
11
|
private static getPart;
|
|
12
|
+
static chunkedToBufferedChunkedX509Cert(blockchainCert: ChunkedX509Cert): BufferedChunkedX509Cert;
|
|
11
13
|
}
|
|
@@ -4,6 +4,7 @@ import { CertificateBinarySplitter, CertificateNonOidParts } from './binary-spli
|
|
|
4
4
|
import { CertificatesHelper } from './helper.js';
|
|
5
5
|
import { OID_CUSTOM_EXTENSION_USER_DATA } from '../constants.js';
|
|
6
6
|
import { OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID, OID_CUSTOM_EXTENSION_CHALLENGE_ID, } from '@super-protocol/pki-common';
|
|
7
|
+
import { fromBlockchainHex, fromBlockchainHexOptional, toBlockchainHex } from '../utils/helper.js';
|
|
7
8
|
const CERTS_CHAIN_DELIMITER = ';';
|
|
8
9
|
const CERTS_SERIALIZATION_PREFIX = 'certs:';
|
|
9
10
|
export const BLOCKCHAIN_CERT_TBS_PARTS = [
|
|
@@ -63,18 +64,19 @@ export class CertificateSerializer {
|
|
|
63
64
|
throw new Error(`Unexpected serialized parts found in certificate: ${serializedParts.map((part) => part.name || part.oid).join(', ')}`);
|
|
64
65
|
}
|
|
65
66
|
return {
|
|
66
|
-
nonSerializedParts,
|
|
67
|
-
expirationDate: expirationDate.value,
|
|
68
|
-
ca: ca.value,
|
|
69
|
-
userData: userData?.value,
|
|
70
|
-
serialNumber: serial.value,
|
|
71
|
-
signature: signature.value,
|
|
72
|
-
publicKey: publicKey.value,
|
|
73
|
-
mrEnclave: mrEnclave?.value,
|
|
74
|
-
mrSigner: mrSigner?.value,
|
|
67
|
+
nonSerializedParts: nonSerializedParts.map(toBlockchainHex),
|
|
68
|
+
expirationDate: toBlockchainHex(expirationDate.value),
|
|
69
|
+
ca: toBlockchainHex(ca.value),
|
|
70
|
+
userData: toBlockchainHex(userData?.value),
|
|
71
|
+
serialNumber: toBlockchainHex(serial.value),
|
|
72
|
+
signature: toBlockchainHex(signature.value),
|
|
73
|
+
publicKey: toBlockchainHex(publicKey.value),
|
|
74
|
+
mrEnclave: toBlockchainHex(mrEnclave?.value),
|
|
75
|
+
mrSigner: toBlockchainHex(mrSigner?.value),
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
|
-
static deserializeFromBlockchain(
|
|
78
|
+
static deserializeFromBlockchain(blockchainCert) {
|
|
79
|
+
const data = CertificateSerializer.chunkedToBufferedChunkedX509Cert(blockchainCert);
|
|
78
80
|
const bufferParts = [];
|
|
79
81
|
bufferParts.push(Buffer.from(data.nonSerializedParts[0]));
|
|
80
82
|
bufferParts.push(Buffer.from(data.nonSerializedParts[1]));
|
|
@@ -118,5 +120,18 @@ export class CertificateSerializer {
|
|
|
118
120
|
}
|
|
119
121
|
return part;
|
|
120
122
|
}
|
|
123
|
+
static chunkedToBufferedChunkedX509Cert(blockchainCert) {
|
|
124
|
+
return {
|
|
125
|
+
nonSerializedParts: blockchainCert.nonSerializedParts.map((part) => fromBlockchainHex(part)),
|
|
126
|
+
expirationDate: fromBlockchainHex(blockchainCert.expirationDate),
|
|
127
|
+
ca: fromBlockchainHex(blockchainCert.ca),
|
|
128
|
+
userData: fromBlockchainHexOptional(blockchainCert.userData),
|
|
129
|
+
publicKey: fromBlockchainHex(blockchainCert.publicKey),
|
|
130
|
+
serialNumber: fromBlockchainHex(blockchainCert.serialNumber),
|
|
131
|
+
mrEnclave: fromBlockchainHexOptional(blockchainCert.mrEnclave),
|
|
132
|
+
mrSigner: fromBlockchainHexOptional(blockchainCert.mrSigner),
|
|
133
|
+
signature: fromBlockchainHex(blockchainCert.signature),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
121
136
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jZXJ0aWZpY2F0ZXMvc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsd0NBQXdDLEVBQ3hDLGlDQUFpQyxHQUNsQyxNQUFNLDRCQUE0QixDQUFDO0FBR3BDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVuRyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLFdBQVc7SUFDWCxJQUFJO0lBQ0osVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0NBQ1gsQ0FBQztBQUVGLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQW9CO1FBQzVDLE1BQU0sUUFBUSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVoRSxPQUFPLEdBQUcsMEJBQTBCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJ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
|
|
@@ -70,7 +70,7 @@ export type ParsedCert = {
|
|
|
70
70
|
authorityKeyIdentifier?: string;
|
|
71
71
|
subjectKeyIdentifier?: string;
|
|
72
72
|
};
|
|
73
|
-
export type
|
|
73
|
+
export type BufferedChunkedX509Cert = {
|
|
74
74
|
nonSerializedParts: Uint8Array[];
|
|
75
75
|
expirationDate: Uint8Array;
|
|
76
76
|
ca: Uint8Array;
|
package/dist/mjs/constants.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export declare const AMOY_TX_GAS_LIMIT: bigint;
|
|
|
27
27
|
export declare const DEFAULT_OFFER_VERSION = 0;
|
|
28
28
|
export declare const HTTPS_PORT = 443;
|
|
29
29
|
export declare const ZERO_HASH: Hash;
|
|
30
|
+
export declare const ZERO32_HEX = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
30
31
|
export declare const TEE_LOADER_TRUSTED_MRSIGNER = "4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b";
|
|
31
32
|
export declare const TEE_PKI_TRUSTED_MRSIGNER = "34ea7ca88034fe80f209e97cd0f8442f7ba621eb2a5f60393ab05871ae6b979d";
|
|
32
33
|
export declare const OPBNB_MAIN_CHAIN_ID = 204;
|
package/dist/mjs/constants.js
CHANGED
|
@@ -31,6 +31,7 @@ export const ZERO_HASH = {
|
|
|
31
31
|
algo: HashAlgorithm.SHA256,
|
|
32
32
|
encoding: Encoding.base64,
|
|
33
33
|
};
|
|
34
|
+
export const ZERO32_HEX = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
34
35
|
export const TEE_LOADER_TRUSTED_MRSIGNER = '4a5cb479b8a30fa3821b88aa29bad04788ea006a9e09925bf3ec36398fc9d64b';
|
|
35
36
|
export const TEE_PKI_TRUSTED_MRSIGNER = '34ea7ca88034fe80f209e97cd0f8442f7ba621eb2a5f60393ab05871ae6b979d';
|
|
36
37
|
// opBNB Network Constants
|
|
@@ -438,4 +439,4 @@ OVFXeEhSQXZaVUdPZFJRN2N2cVJYYXFJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0t
|
|
|
438
439
|
LS0tCgAwCgYIKoZIzj0EAwIDSAAwRQIgDTaE8oMgfCSqhbOeqnn6FD2ypLS4arzW
|
|
439
440
|
th/G0VQ3e40CIQCEcpjpdAP63KCipYLE1UEmHJOBOvcKNjevt/2O9DkwXA==
|
|
440
441
|
-----END CERTIFICATE-----`;
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLEdBQUcsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDL0IsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2hDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEdBQUcsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0Q0FBNEMsQ0FBQztBQUNyRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUM1QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxLQUFLLENBQUM7QUFDdEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsNENBQTRDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsMENBQTBDLENBQUM7QUFDdEYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLDhDQUE4QyxDQUFDO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztBQUM5QixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQVM7SUFDN0IsSUFBSSxFQUFFLGtFQUFrRTtJQUN4RSxJQUFJLEVBQUUsYUFBYSxDQUFDLE1BQU07SUFDMUIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxNQUFNO0NBQzFCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsb0VBQW9FLENBQUM7QUFDL0YsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQ3RDLGtFQUFrRSxDQUFDO0FBQ3JFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUNuQyxrRUFBa0UsQ0FBQztBQUVyRSwwQkFBMEI7QUFDMUIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUN4QyxxRUFBcUU7QUFDckUsd0NBQXdDO0FBRXhDLG1CQUFtQjtBQUNuQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7QUFFakYsNEJBQTRCO0FBQzVCLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHFCQUFxQjtBQUVoRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQXdCcEIsQ0FBQztBQUMzQixNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxrQkFBa0IsQ0FBQztBQUNwRSxNQUFNLENBQUMsTUFBTSxrREFBa0QsR0FBRyxHQUFHLGlDQUFpQyxJQUFJLENBQUM7QUFDM0csTUFBTSxDQUFDLE1BQU0sb0RBQW9ELEdBQUcsR0FBRyxpQ0FBaUMsSUFBSSxDQUFDO0FBQzdHLE1BQU0sQ0FBQyxNQUFNLG9EQUFvRCxHQUFHLEdBQUcsaUNBQWlDLElBQUksQ0FBQztBQUM3RyxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxHQUFHLGlDQUFpQyxJQUFJLENBQUM7QUFDdkYsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsbUJBQW1CLENBQUM7QUFDOUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsV0FBVyxDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLG9CQUFvQixDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLG9CQUFvQixDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQXdXTixDQUFDIn0=
|
|
@@ -5,7 +5,6 @@ import { CertificateSerializer, CertificatesHelper } from '../certificates/index
|
|
|
5
5
|
import { TeeCertificateService } from './TeeCertificateService.js';
|
|
6
6
|
import { calculateObjectHash } from '../utils/helpers/index.js';
|
|
7
7
|
import { OID_CUSTOM_EXTENSION_USER_DATA } from '../constants.js';
|
|
8
|
-
import { formatCertsChain } from '../utils/helper.js';
|
|
9
8
|
export class TeeBlockVerifier {
|
|
10
9
|
static verifiedTcbs = new Set();
|
|
11
10
|
static async verifyTcb(tcb, utilityData) {
|
|
@@ -20,7 +19,8 @@ export class TeeBlockVerifier {
|
|
|
20
19
|
benchmark: (await Consensus.getBenchmarksByTcbIds([tcb.tcbId], [utilityData.teeOfferId]))[tcb.tcbId],
|
|
21
20
|
};
|
|
22
21
|
const { certsChain } = await tcb.get();
|
|
23
|
-
|
|
22
|
+
const certChainPem = certsChain.map(CertificateSerializer.deserializeFromBlockchain).join('\n');
|
|
23
|
+
await TeeBlockVerifier.verifyWithCertificates(certChainPem, signedTcbData);
|
|
24
24
|
// update cache
|
|
25
25
|
this.verifiedTcbs.add(tcb.tcbId);
|
|
26
26
|
if (this.verifiedTcbs.size > config.TLB_CACHE_SIZE) {
|
|
@@ -44,4 +44,4 @@ export class TeeBlockVerifier {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGVlQmxvY2tWZXJpZmllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZWUvVGVlQmxvY2tWZXJpZmllci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUM7QUFDbEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUd0QyxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVNqRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ25CLE1BQU0sQ0FBVSxZQUFZLEdBQXNCLElBQUksR0FBRyxFQUFFLENBQUM7SUFFcEUsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFdBQTJCO1FBQzFELGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLENBQUMsS0FBSyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3pELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzdDLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUUsQ0FBQyxNQUFNLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ3ZGLEdBQUcsQ0FBQyxLQUFLLENBQ1Y7U0FDRixDQUFDO1FBRUYsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEcsTUFBTSxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFM0UsZUFBZTtRQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUF5QixDQUFDO1lBQzdFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQ1YsS0FBSyxFQUNMLFlBQVksS0FBSyx3Q0FBd0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLGtCQUFrQixNQUFNLENBQUMsY0FBYyxFQUFFLENBQ3pILENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FDVixHQUFHLENBQUMsS0FBSyxFQUNULFlBQVksR0FBRyxDQUFDLEtBQUssb0NBQW9DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxrQkFBa0IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUN6SCxDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQ3pDLEtBQWEsRUFDYixhQUFzQjtRQUV0QixNQUFNLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRSxNQUFNLHFCQUFxQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sb0JBQW9CLEdBQUcsa0JBQWtCLENBQUMsaUJBQWlCLENBQy9ELFNBQVMsRUFDVCw4QkFBOEIsQ0FDL0IsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdGLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQyJ9
|
|
@@ -2,7 +2,7 @@ import { TransactionOptions } from '../types/Web3.js';
|
|
|
2
2
|
import Web3, { JsonRpcOptionalRequest } from 'web3';
|
|
3
3
|
import { SlotInfo } from '../types/SlotInfo.js';
|
|
4
4
|
import { ConsensusBenchmarkStorage, LoaderSecretAccessPublicKey, LoaderSession, OfferResource, OfferStorageAllocated, OfferStorageRequest, OptionInfo, OptionInfoRaw, OrderUsage, OrderUsageRaw, SecretRequest, SlotUsage, TeeOfferOption, TeeOfferOptionRaw, TeeOfferSlot, ValueOfferSlot, ValueOfferSlotRaw, ConsensusBenchmarkPriceMultipliers, OfferVersion, OfferVersionInfo, OfferVersionInfoRaw, OfferVersionRaw, TeeOfferInfo, TeeOfferInfoRaw, HardwareInfoRaw, HardwareInfo, OfferInfoRaw, OfferInfo, ValueOfferRestrictionsSpecification, OfferType, OfferGroup, Origins } from '../types/index.js';
|
|
5
|
-
import { BenchmarkInfo,
|
|
5
|
+
import { BenchmarkInfo, ConsensusBenchmark } from '@super-protocol/dto-js';
|
|
6
6
|
import { BatchResponse, BatchResponseSuccess, ExecuteBatchOptions } from './types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Function for checking if provider action account initialized (required for set methods)
|
|
@@ -58,7 +58,6 @@ export declare function formatPriceMultipliers(priceMultipliers: ConsensusBenchm
|
|
|
58
58
|
export declare function formatBenchmarks(benchmarks: ConsensusBenchmarkStorage[]): ConsensusBenchmark[];
|
|
59
59
|
export declare function formatBenchmark(benchmark: ConsensusBenchmarkStorage): ConsensusBenchmark;
|
|
60
60
|
export declare function formatBenchmarkTo(benchmark: ConsensusBenchmark): ConsensusBenchmarkStorage;
|
|
61
|
-
export declare function formatCertsChain(certsChain: ChunkedX509Cert[]): string;
|
|
62
61
|
export declare function formatUsage(usage: SlotUsage): SlotUsage;
|
|
63
62
|
export declare function convertOrderUsage(usage: OrderUsageRaw, slotInfo: SlotInfo, slotUsage: SlotUsage): OrderUsage;
|
|
64
63
|
export declare function convertOptionInfoFromRaw(optionInfo: OptionInfoRaw): OptionInfo;
|
|
@@ -74,3 +73,6 @@ export declare function executeBatchAsync<T>(requests: JsonRpcOptionalRequest[],
|
|
|
74
73
|
export declare function executeBatchAsync<T>(requests: JsonRpcOptionalRequest[], options?: ExecuteBatchOptions): Promise<BatchResponse<T>[]>;
|
|
75
74
|
export declare const preparePrivateKey: (pk: string) => string;
|
|
76
75
|
export declare const isIpAddress: (host: string) => boolean;
|
|
76
|
+
export declare const fromBlockchainHexOptional: (hex?: string) => Uint8Array | undefined;
|
|
77
|
+
export declare const fromBlockchainHex: (hex: string) => Uint8Array;
|
|
78
|
+
export declare const toBlockchainHex: (u?: Uint8Array) => string;
|
package/dist/mjs/utils/helper.js
CHANGED
|
@@ -3,9 +3,9 @@ import store from '../store.js';
|
|
|
3
3
|
import Web3 from 'web3';
|
|
4
4
|
import { Monitoring } from './Monitoring.js';
|
|
5
5
|
import { OfferVersionStatus, } from '../types/index.js';
|
|
6
|
-
import { POLYGON_AMOY_CHAIN_ID, POLYGON_MAIN_CHAIN_ID, POLYGON_AMOY_GASSTATION_URL, POLYGON_MAIN_GASSTATION_URL, MAX_RPC_BATCH_SIZE, OPBNB_MAIN_CHAIN_ID, OPBNB_TEST_CHAIN_ID, AMOY_TX_GAS_LIMIT, OPBNB_TX_GAS_LIMIT, defaultGasLimit, FIVE_MINUTES, BLOCKCHAIN_BATCH_REQUEST_TIMEOUT, } from '../constants.js';
|
|
6
|
+
import { POLYGON_AMOY_CHAIN_ID, POLYGON_MAIN_CHAIN_ID, POLYGON_AMOY_GASSTATION_URL, POLYGON_MAIN_GASSTATION_URL, MAX_RPC_BATCH_SIZE, OPBNB_MAIN_CHAIN_ID, OPBNB_TEST_CHAIN_ID, AMOY_TX_GAS_LIMIT, OPBNB_TX_GAS_LIMIT, defaultGasLimit, FIVE_MINUTES, BLOCKCHAIN_BATCH_REQUEST_TIMEOUT, ZERO32_HEX, } from '../constants.js';
|
|
7
7
|
import { ethers } from 'ethers';
|
|
8
|
-
import { HashSchema
|
|
8
|
+
import { HashSchema } from '@super-protocol/dto-js';
|
|
9
9
|
import axios from 'axios';
|
|
10
10
|
import { deserializeBySchema } from './schema-utils/index.js';
|
|
11
11
|
/**
|
|
@@ -371,93 +371,6 @@ export function formatBenchmarkTo(benchmark) {
|
|
|
371
371
|
cpuInfo: benchmark.cpuInfo,
|
|
372
372
|
};
|
|
373
373
|
}
|
|
374
|
-
export function formatCertsChain(certsChain) {
|
|
375
|
-
const zeroHash = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
376
|
-
const formattedCertsChain = certsChain.map((cert) => {
|
|
377
|
-
let packedData = Web3.utils.encodePacked({
|
|
378
|
-
type: 'bytes',
|
|
379
|
-
value: cert.nonSerializedParts[0],
|
|
380
|
-
}, {
|
|
381
|
-
type: 'bytes',
|
|
382
|
-
value: cert.nonSerializedParts[1],
|
|
383
|
-
}, {
|
|
384
|
-
type: 'bytes',
|
|
385
|
-
value: cert.serialNumber,
|
|
386
|
-
}, {
|
|
387
|
-
type: 'bytes',
|
|
388
|
-
value: cert.nonSerializedParts[2],
|
|
389
|
-
}, {
|
|
390
|
-
type: 'bytes',
|
|
391
|
-
value: cert.expirationDate,
|
|
392
|
-
}, {
|
|
393
|
-
type: 'bytes',
|
|
394
|
-
value: cert.nonSerializedParts[3],
|
|
395
|
-
}, {
|
|
396
|
-
type: 'bytes',
|
|
397
|
-
value: cert.publicKey,
|
|
398
|
-
}, {
|
|
399
|
-
type: 'bytes',
|
|
400
|
-
value: cert.nonSerializedParts[4],
|
|
401
|
-
}, {
|
|
402
|
-
type: 'bytes',
|
|
403
|
-
value: cert.ca,
|
|
404
|
-
});
|
|
405
|
-
let index = 5;
|
|
406
|
-
if (cert.userData != zeroHash) {
|
|
407
|
-
packedData = Web3.utils.encodePacked({
|
|
408
|
-
type: 'bytes',
|
|
409
|
-
value: packedData,
|
|
410
|
-
}, {
|
|
411
|
-
type: 'bytes',
|
|
412
|
-
value: cert.nonSerializedParts[5],
|
|
413
|
-
}, {
|
|
414
|
-
type: 'bytes32',
|
|
415
|
-
value: cert.userData,
|
|
416
|
-
});
|
|
417
|
-
index++;
|
|
418
|
-
}
|
|
419
|
-
if (cert.mrEnclave != zeroHash) {
|
|
420
|
-
packedData = Web3.utils.encodePacked({
|
|
421
|
-
type: 'bytes',
|
|
422
|
-
value: packedData,
|
|
423
|
-
}, {
|
|
424
|
-
type: 'bytes',
|
|
425
|
-
value: cert.nonSerializedParts[index],
|
|
426
|
-
}, {
|
|
427
|
-
type: 'bytes32',
|
|
428
|
-
value: cert.mrEnclave,
|
|
429
|
-
});
|
|
430
|
-
index++;
|
|
431
|
-
}
|
|
432
|
-
if (cert.mrSigner != zeroHash) {
|
|
433
|
-
packedData = Web3.utils.encodePacked({
|
|
434
|
-
type: 'bytes',
|
|
435
|
-
value: packedData,
|
|
436
|
-
}, {
|
|
437
|
-
type: 'bytes',
|
|
438
|
-
value: cert.nonSerializedParts[index],
|
|
439
|
-
}, {
|
|
440
|
-
type: 'bytes32',
|
|
441
|
-
value: cert.mrSigner,
|
|
442
|
-
});
|
|
443
|
-
index++;
|
|
444
|
-
}
|
|
445
|
-
if (index < cert.nonSerializedParts.length - 2) {
|
|
446
|
-
packedData = Web3.utils.encodePacked({
|
|
447
|
-
type: 'bytes',
|
|
448
|
-
value: packedData,
|
|
449
|
-
}, {
|
|
450
|
-
type: 'bytes',
|
|
451
|
-
value: cert.nonSerializedParts[index],
|
|
452
|
-
});
|
|
453
|
-
}
|
|
454
|
-
return {
|
|
455
|
-
type: 'bytes',
|
|
456
|
-
value: packedData,
|
|
457
|
-
};
|
|
458
|
-
});
|
|
459
|
-
return Web3.utils.encodePacked(...formattedCertsChain);
|
|
460
|
-
}
|
|
461
374
|
export function formatUsage(usage) {
|
|
462
375
|
return {
|
|
463
376
|
priceType: usage.priceType.toString(),
|
|
@@ -612,4 +525,19 @@ export const preparePrivateKey = (pk) => {
|
|
|
612
525
|
export const isIpAddress = (host) => {
|
|
613
526
|
return Boolean(host.match(/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/));
|
|
614
527
|
};
|
|
615
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBRWhDLE9BQU8sSUFBZ0MsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFzQkwsa0JBQWtCLEdBZW5CLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0NBQWdDLEdBQ2pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzlEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsa0JBQXVDLEVBQVEsRUFBRTtJQUMvRixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUk7UUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYix3SUFBd0ksQ0FDekksQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FDNUMsa0JBQXVDLEVBQzlCLEVBQUU7SUFDWCwrSEFB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
|
|
528
|
+
export const fromBlockchainHexOptional = (hex) => {
|
|
529
|
+
const cleaned = hex?.startsWith('0x') ? hex.slice(2) : hex;
|
|
530
|
+
if (!cleaned || hex === ZERO32_HEX)
|
|
531
|
+
return;
|
|
532
|
+
return new Uint8Array(Buffer.from(cleaned, 'hex'));
|
|
533
|
+
};
|
|
534
|
+
export const fromBlockchainHex = (hex) => {
|
|
535
|
+
const converted = fromBlockchainHexOptional(hex);
|
|
536
|
+
return converted ? converted : new Uint8Array();
|
|
537
|
+
};
|
|
538
|
+
export const toBlockchainHex = (u) => {
|
|
539
|
+
if (!u || u.length === 0)
|
|
540
|
+
return ZERO32_HEX;
|
|
541
|
+
return '0x' + Buffer.from(u).toString('hex');
|
|
542
|
+
};
|
|
543
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2hlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sYUFBYSxDQUFDO0FBRWhDLE9BQU8sSUFBZ0MsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFzQkwsa0JBQWtCLEdBZW5CLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0NBQWdDLEVBQ2hDLFVBQVUsR0FDWCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHOUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxrQkFBdUMsRUFBUSxFQUFFO0lBQy9GLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSTtRQUNuRCxNQUFNLElBQUksS0FBSyxDQUNiLHdJQUF3SSxDQUN6SSxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxDQUM1QyxrQkFBdUMsRUFDOUIsRUFB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
|