@super-protocol/pki-attestation-engine 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/certificateGenerator.d.ts +34 -0
  2. package/dist/certificateGenerator.js +271 -0
  3. package/dist/challengeProvider/challengeNvidiaCCHelper.d.ts +10 -0
  4. package/dist/challengeProvider/challengeNvidiaCCHelper.js +62 -0
  5. package/dist/challengeProvider/challengeProvider.d.ts +6 -0
  6. package/dist/challengeProvider/challengeProvider.js +3 -0
  7. package/dist/challengeProvider/challengeProviderCertificate.d.ts +15 -0
  8. package/dist/challengeProvider/challengeProviderCertificate.js +82 -0
  9. package/dist/challengeProvider/challengeProviderSevSnp.d.ts +8 -0
  10. package/dist/challengeProvider/challengeProviderSevSnp.js +49 -0
  11. package/dist/challengeProvider/challengeProviderSgx.d.ts +8 -0
  12. package/dist/challengeProvider/challengeProviderSgx.js +47 -0
  13. package/dist/challengeProvider/challengeProviderTdx.d.ts +8 -0
  14. package/dist/challengeProvider/challengeProviderTdx.js +50 -0
  15. package/dist/challengeProvider/challengeProviderToken.d.ts +9 -0
  16. package/dist/challengeProvider/challengeProviderToken.js +22 -0
  17. package/dist/challengeProvider/challengeProviderUntrusted.d.ts +9 -0
  18. package/dist/challengeProvider/challengeProviderUntrusted.js +22 -0
  19. package/dist/challengeProvider/index.d.ts +8 -0
  20. package/dist/challengeProvider/index.js +25 -0
  21. package/dist/challengeValidator/challengeValidator.d.ts +18 -0
  22. package/dist/challengeValidator/challengeValidator.js +3 -0
  23. package/dist/challengeValidator/challengeValidatorCertificate.d.ts +9 -0
  24. package/dist/challengeValidator/challengeValidatorCertificate.js +55 -0
  25. package/dist/challengeValidator/challengeValidatorNvidia.d.ts +10 -0
  26. package/dist/challengeValidator/challengeValidatorNvidia.js +81 -0
  27. package/dist/challengeValidator/challengeValidatorSevSnp.d.ts +13 -0
  28. package/dist/challengeValidator/challengeValidatorSevSnp.js +137 -0
  29. package/dist/challengeValidator/challengeValidatorSgx.d.ts +8 -0
  30. package/dist/challengeValidator/challengeValidatorSgx.js +54 -0
  31. package/dist/challengeValidator/challengeValidatorTdx.d.ts +8 -0
  32. package/dist/challengeValidator/challengeValidatorTdx.js +52 -0
  33. package/dist/challengeValidator/challengeValidatorToken.d.ts +8 -0
  34. package/dist/challengeValidator/challengeValidatorToken.js +38 -0
  35. package/dist/challengeValidator/index.d.ts +8 -0
  36. package/dist/challengeValidator/index.js +32 -0
  37. package/dist/challengeValidator/schemas.d.ts +13 -0
  38. package/dist/challengeValidator/schemas.js +21 -0
  39. package/dist/challengeValidator/validatorConfig.d.ts +13 -0
  40. package/dist/challengeValidator/validatorConfig.js +3 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.js +20 -0
  43. package/dist/validator/challengeValidator.d.ts +18 -0
  44. package/dist/validator/challengeValidator.js +3 -0
  45. package/dist/validator/challengeValidatorCertificate.d.ts +8 -0
  46. package/dist/validator/challengeValidatorCertificate.js +70 -0
  47. package/dist/validator/challengeValidatorNvidia.d.ts +10 -0
  48. package/dist/validator/challengeValidatorNvidia.js +81 -0
  49. package/dist/validator/challengeValidatorSevSnp.d.ts +14 -0
  50. package/dist/validator/challengeValidatorSevSnp.js +137 -0
  51. package/dist/validator/challengeValidatorSgx.d.ts +8 -0
  52. package/dist/validator/challengeValidatorSgx.js +69 -0
  53. package/dist/validator/challengeValidatorTdx.d.ts +8 -0
  54. package/dist/validator/challengeValidatorTdx.js +67 -0
  55. package/dist/validator/challengeValidatorToken.d.ts +9 -0
  56. package/dist/validator/challengeValidatorToken.js +38 -0
  57. package/dist/validator/schemas.d.ts +13 -0
  58. package/dist/validator/schemas.js +21 -0
  59. package/dist/validator/validatorConfig.d.ts +13 -0
  60. package/dist/validator/validatorConfig.js +3 -0
  61. package/package.json +30 -0
@@ -0,0 +1,34 @@
1
+ import { CustomExtension } from '@super-protocol/sdk-js';
2
+ import { PkiCertParams, CertificateType, CertificateChallengeInfo, Challenge, NetworkType, PKISslCertificate } from '@super-protocol/pki-common';
3
+ export declare const generateRootCertificate: (params: {
4
+ domains: string[];
5
+ privateKeyPem: string;
6
+ publicKeyPem: string;
7
+ challenge: Challenge;
8
+ certParams: PkiCertParams;
9
+ networkType?: NetworkType;
10
+ }) => Promise<string>;
11
+ type GenerateCertificateParams = {
12
+ certType: CertificateType;
13
+ domains: string[];
14
+ caBundle: string;
15
+ signingCertPem: string;
16
+ signingPrivateKeyPem: string;
17
+ certParams: PkiCertParams;
18
+ publicKeyPem: string;
19
+ ocspSigning: boolean;
20
+ validated?: boolean;
21
+ commonName?: string;
22
+ challengeInfo?: CertificateChallengeInfo;
23
+ clientExtensionAttrs?: CustomExtension[];
24
+ vmCertificatePem?: string;
25
+ };
26
+ export declare const generateSubrootCertificate: (params: GenerateCertificateParams) => Promise<PKISslCertificate>;
27
+ export declare const generateEntityCertificate: (params: GenerateCertificateParams) => Promise<PKISslCertificate>;
28
+ export declare const getParamsFromCSR: (csrPem: string) => Promise<{
29
+ commonName: string | undefined;
30
+ publicKeyPem: string;
31
+ clientDomains: string[];
32
+ clientExtensionAttrs: CustomExtension[];
33
+ }>;
34
+ export {};
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getParamsFromCSR = exports.generateEntityCertificate = exports.generateSubrootCertificate = exports.generateRootCertificate = void 0;
4
+ const sdk_js_1 = require("@super-protocol/sdk-js");
5
+ const sp_nvtrust_wrapper_1 = require("@super-protocol/sp-nvtrust-wrapper");
6
+ const pki_common_1 = require("@super-protocol/pki-common");
7
+ const MIN_CERT_LIFETIME_DAYS = 1;
8
+ const MAX_CERT_LIFETIME_DAYS = 18250;
9
+ const addDaysUtc = (base, days) => {
10
+ const next = new Date(base);
11
+ next.setUTCDate(next.getUTCDate() + days);
12
+ return next;
13
+ };
14
+ const resolveNotAfter = (certParams) => {
15
+ const { lifetimeDays } = certParams;
16
+ if (!Number.isInteger(lifetimeDays) ||
17
+ lifetimeDays < MIN_CERT_LIFETIME_DAYS ||
18
+ lifetimeDays > MAX_CERT_LIFETIME_DAYS) {
19
+ throw new Error(`certParams.lifetimeDays must be an integer between ${MIN_CERT_LIFETIME_DAYS} and ${MAX_CERT_LIFETIME_DAYS}`);
20
+ }
21
+ return addDaysUtc(new Date(), lifetimeDays);
22
+ };
23
+ const buildPrincipal = (certParams) => ({
24
+ commonName: certParams.commonName,
25
+ country: certParams.countryName,
26
+ stateName: certParams.stateName,
27
+ localityName: certParams.localityName,
28
+ organization: certParams.organizationName,
29
+ organizationalUnit: certParams.organizationUnitName,
30
+ });
31
+ const getQuoteBase64FromChallenge = (challenge) => {
32
+ let quoteBase64;
33
+ switch (challenge.type) {
34
+ case pki_common_1.ChallengeType.SGXDCAP:
35
+ case pki_common_1.ChallengeType.TDX:
36
+ quoteBase64 = challenge.quoteBase64;
37
+ break;
38
+ case pki_common_1.ChallengeType.SEVSNP:
39
+ quoteBase64 = challenge.serializedReportBase64;
40
+ break;
41
+ }
42
+ if (!quoteBase64) {
43
+ return;
44
+ }
45
+ return { challengeType: challenge.type, quoteBase64 };
46
+ };
47
+ const generateRootCertificate = async (params) => {
48
+ const principal = buildPrincipal(params.certParams);
49
+ const notAfter = resolveNotAfter(params.certParams);
50
+ const customExtensions = [
51
+ {
52
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_TYPE,
53
+ value: Buffer.from(params.challenge.type, 'ascii'),
54
+ },
55
+ ];
56
+ if (params.networkType) {
57
+ customExtensions.push({
58
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_NETWORK_TYPE,
59
+ value: Buffer.from(params.networkType, 'ascii'),
60
+ });
61
+ }
62
+ const challenge = getQuoteBase64FromChallenge(params.challenge);
63
+ if (challenge) {
64
+ customExtensions.push({
65
+ oid: pki_common_1.OID_SGX_QUOTE,
66
+ value: Buffer.from(challenge.quoteBase64, 'base64'),
67
+ });
68
+ }
69
+ const generateCertParams = {
70
+ privateKey: params.privateKeyPem,
71
+ publicKey: params.publicKeyPem,
72
+ subject: principal,
73
+ issuer: principal,
74
+ notAfter,
75
+ dnsNames: params.domains,
76
+ ca: true,
77
+ customExtensions,
78
+ };
79
+ return sdk_js_1.CertificateGenerator.generateCert(generateCertParams);
80
+ };
81
+ exports.generateRootCertificate = generateRootCertificate;
82
+ const SYSTEM_MANAGED_EXTENSION_OIDS = [
83
+ pki_common_1.OID_SGX_QUOTE,
84
+ pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_TYPE,
85
+ pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_ID,
86
+ pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID,
87
+ pki_common_1.OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
88
+ pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_SUBTYPE,
89
+ pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_CERTIFICATE_ID,
90
+ ];
91
+ const filterClientExtensions = (extensions = []) => extensions.filter((ext) => !SYSTEM_MANAGED_EXTENSION_OIDS.some((oid) => ext.oid.startsWith(oid)));
92
+ const buildNvidiaGpuExtension = (challenge) => {
93
+ if (!(0, pki_common_1.hasChallengeNvidiaToken)(challenge)) {
94
+ return [];
95
+ }
96
+ const gpusInfo = sp_nvtrust_wrapper_1.NvtrustWrapper.extractGPUInfoFromToken({
97
+ jwt: challenge.nvidiaTokens.gpuToken,
98
+ });
99
+ return [
100
+ {
101
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
102
+ value: Buffer.from(sp_nvtrust_wrapper_1.NvtrustGPUList.encode(gpusInfo).finish()),
103
+ },
104
+ ];
105
+ };
106
+ const buildCertificateChallengeExtensions = (challenge) => {
107
+ if (challenge.type !== pki_common_1.ChallengeType.Certificate) {
108
+ return [];
109
+ }
110
+ const challengeSubtype = sdk_js_1.CertificatesHelper.getExtensionValue(challenge.orderCertificate, pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_TYPE);
111
+ const certificateId = sdk_js_1.CertificatesHelper.getExtensionValue(challenge.orderCertificate, sdk_js_1.constants.OID_CUSTOM_EXTENSION_USER_DATA);
112
+ if (!challengeSubtype || !certificateId) {
113
+ throw new Error(`Challenge certificate is missing required extensions: ${pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_TYPE} or ${sdk_js_1.constants.OID_CUSTOM_EXTENSION_USER_DATA}`);
114
+ }
115
+ return [
116
+ {
117
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_SUBTYPE,
118
+ value: challengeSubtype,
119
+ },
120
+ {
121
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_CERTIFICATE_ID,
122
+ value: certificateId,
123
+ },
124
+ ];
125
+ };
126
+ const buildValidatedExtension = (validated) => {
127
+ if (!validated) {
128
+ return [];
129
+ }
130
+ return [
131
+ {
132
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_VALIDATED,
133
+ value: Buffer.alloc(0),
134
+ },
135
+ ];
136
+ };
137
+ // TODO: Investigate behavior
138
+ // const buildVmGpuExtension = (
139
+ // vmCertificatePem: string | undefined,
140
+ // existingExtensions: CustomExtension[],
141
+ // ): CustomExtension[] => {
142
+ // if (!vmCertificatePem) {
143
+ // return [];
144
+ // }
145
+ //
146
+ // const gpuInfo = CertificatesHelper.getExtensionValue(
147
+ // vmCertificatePem,
148
+ // OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
149
+ // );
150
+ //
151
+ // if (
152
+ // gpuInfo &&
153
+ // !existingExtensions.some(
154
+ // (ext) => ext.oid === OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
155
+ // )
156
+ // ) {
157
+ // return [
158
+ // {
159
+ // oid: OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
160
+ // value: gpuInfo,
161
+ // },
162
+ // ];
163
+ // }
164
+ //
165
+ // return [];
166
+ // };
167
+ const buildCommonExtensions = (params) => {
168
+ const extensions = [];
169
+ if (params.challengeInfo) {
170
+ const { challenge, idHex, commonIdHex } = params.challengeInfo;
171
+ extensions.push({
172
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_TYPE,
173
+ value: Buffer.from(challenge.type, 'ascii'),
174
+ });
175
+ if (challenge.type !== pki_common_1.ChallengeType.Token) {
176
+ extensions.push({
177
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_ID,
178
+ value: Buffer.from(idHex, 'hex'),
179
+ });
180
+ if (commonIdHex) {
181
+ extensions.push({
182
+ oid: pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID,
183
+ value: Buffer.from(commonIdHex, 'hex'),
184
+ });
185
+ }
186
+ if (params.certType === pki_common_1.CertificateType.Basic) {
187
+ const quote = getQuoteBase64FromChallenge(challenge);
188
+ if (quote) {
189
+ extensions.push({
190
+ oid: pki_common_1.OID_SGX_QUOTE,
191
+ value: Buffer.from(quote.quoteBase64, 'base64'),
192
+ });
193
+ }
194
+ }
195
+ extensions.push(...buildNvidiaGpuExtension(challenge));
196
+ extensions.push(...buildCertificateChallengeExtensions(challenge));
197
+ }
198
+ }
199
+ const filteredClientExtensions = filterClientExtensions(params.clientExtensionAttrs);
200
+ return [...filteredClientExtensions, ...extensions];
201
+ };
202
+ const generateCertificate = async (params) => {
203
+ const signingCert = await sdk_js_1.CertificateGenerator.checkAndParseCert(params.signingCertPem);
204
+ const customExtensions = buildCommonExtensions({
205
+ certType: params.certType,
206
+ challengeInfo: params.challengeInfo,
207
+ clientExtensionAttrs: params.clientExtensionAttrs,
208
+ });
209
+ customExtensions.push(...buildValidatedExtension(params.validated));
210
+ // TODO: Investigate behavior
211
+ // customExtensions.push(
212
+ // ...buildVmGpuExtension(params.vmCertificatePem, customExtensions),
213
+ // );
214
+ const subject = {
215
+ commonName: params.commonName || params.domains[0] || '',
216
+ country: params.certParams.countryName,
217
+ stateName: params.certParams.stateName,
218
+ localityName: params.certParams.localityName,
219
+ organization: params.certParams.organizationName,
220
+ organizationalUnit: params.certParams.organizationUnitName,
221
+ };
222
+ const domains = params.certType === pki_common_1.CertificateType.Basic ? params.domains : [];
223
+ const notAfter = resolveNotAfter(params.certParams);
224
+ const generateCertParams = {
225
+ privateKey: params.signingPrivateKeyPem,
226
+ publicKey: params.publicKeyPem,
227
+ subject,
228
+ dnsNames: domains,
229
+ ca: params.ca,
230
+ ocspSigning: params.ocspSigning,
231
+ issuer: signingCert.subject,
232
+ notAfter,
233
+ customExtensions,
234
+ };
235
+ if (params.certParams.ocspUrl) {
236
+ generateCertParams.ocspExtension = {
237
+ ocspUrl: params.certParams.ocspUrl,
238
+ };
239
+ }
240
+ const certPem = await sdk_js_1.CertificateGenerator.generateCert(generateCertParams);
241
+ const rootCertsPem = params.caBundle === params.signingCertPem
242
+ ? params.signingCertPem
243
+ : params.signingCertPem + '\n' + params.caBundle;
244
+ return {
245
+ certPem,
246
+ domains,
247
+ rootCertsPem,
248
+ };
249
+ };
250
+ const generateSubrootCertificate = async (params) => generateCertificate({
251
+ ...params,
252
+ ca: true,
253
+ });
254
+ exports.generateSubrootCertificate = generateSubrootCertificate;
255
+ const generateEntityCertificate = async (params) => generateCertificate({
256
+ ...params,
257
+ ca: false,
258
+ });
259
+ exports.generateEntityCertificate = generateEntityCertificate;
260
+ const getParamsFromCSR = async (csrPem) => {
261
+ const parsedCsr = await sdk_js_1.CertificateGenerator.checkAndParseCsr(csrPem);
262
+ const commonName = parsedCsr.subject.match(/CN=([^,]+)/)?.[1]?.trim();
263
+ return {
264
+ commonName,
265
+ publicKeyPem: await sdk_js_1.CryptoKeysTransformer.cryptoKeyToSpkiPem(parsedCsr.publicKey),
266
+ clientDomains: parsedCsr.dnsNames || [],
267
+ clientExtensionAttrs: parsedCsr.extensions || [],
268
+ };
269
+ };
270
+ exports.getParamsFromCSR = getParamsFromCSR;
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGVHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2VydGlmaWNhdGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBUWdDO0FBQ2hDLDJFQUc0QztBQUM1QywyREFrQm9DO0FBRXBDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0FBRXJDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBVSxFQUFFLElBQVksRUFBUSxFQUFFO0lBQ2xELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBeUIsRUFBUSxFQUFFO0lBQ3hELE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUM7SUFFcEMsSUFDSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQy9CLFlBQVksR0FBRyxzQkFBc0I7UUFDckMsWUFBWSxHQUFHLHNCQUFzQixFQUN2QyxDQUFDO1FBQ0MsTUFBTSxJQUFJLEtBQUssQ0FDWCxzREFBc0Qsc0JBQXNCLFFBQVEsc0JBQXNCLEVBQUUsQ0FDL0csQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2hELENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsVUFBeUIsRUFBd0IsRUFBRSxDQUFDLENBQUM7SUFDekUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO0lBQ2pDLE9BQU8sRUFBRSxVQUFVLENBQUMsV0FBVztJQUMvQixTQUFT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
@@ -0,0 +1,10 @@
1
+ /// <reference types="node" />
2
+ import { NvidiaCCToken, Log } from '@super-protocol/pki-common';
3
+ export declare class ChallengeNvidiaCCHelper {
4
+ private static getNvidiaToken;
5
+ static getTokenHash(token: NvidiaCCToken): Buffer;
6
+ static getTokenAndCombinedChallengeData(baseUserData: Buffer, logger?: Log): Promise<{
7
+ nvidiaTokens: NvidiaCCToken | undefined;
8
+ challengeData: Buffer;
9
+ }>;
10
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChallengeNvidiaCCHelper = void 0;
4
+ const sp_nvtrust_wrapper_1 = require("@super-protocol/sp-nvtrust-wrapper");
5
+ const crypto_1 = require("crypto");
6
+ class ChallengeNvidiaCCHelper {
7
+ static async getNvidiaToken(logger) {
8
+ try {
9
+ //TODO: add nvswitchToken here
10
+ const wrapper = new sp_nvtrust_wrapper_1.NvtrustWrapper();
11
+ const topology = await wrapper.getGPUTopology();
12
+ if (!topology.gpuCount) {
13
+ return;
14
+ }
15
+ const nonce = sp_nvtrust_wrapper_1.NvtrustWrapper.generateNonce();
16
+ const gpuTokenRaw = await wrapper.getNvidiaToken({
17
+ device: sp_nvtrust_wrapper_1.NvidiaDeviceType.GPU,
18
+ nonce,
19
+ ppcieMode: false,
20
+ });
21
+ return { gpuToken: gpuTokenRaw.jwt };
22
+ }
23
+ catch (error) {
24
+ if (error instanceof sp_nvtrust_wrapper_1.NvtrustWrapperCallError) {
25
+ logger?.error(`NvtrustWrapperCallError: ${error.message}`);
26
+ if (error.traceback?.trim()) {
27
+ logger?.debug(`Traceback:\n${error.traceback}`);
28
+ }
29
+ const logEntries = Object.entries(error.logs ?? {});
30
+ if (logEntries.length > 0) {
31
+ logger?.debug('Logs from nvtrust wrapper:');
32
+ for (const [fileName, logContent] of logEntries) {
33
+ logger?.debug(`--- ${fileName} ---`);
34
+ logger?.debug(String(logContent));
35
+ }
36
+ }
37
+ }
38
+ else {
39
+ logger?.error(`Error during NVIDIA token retrieval: ${error}`);
40
+ }
41
+ throw error;
42
+ }
43
+ }
44
+ static getTokenHash(token) {
45
+ const hash = (0, crypto_1.createHash)('sha256');
46
+ hash.update(JSON.stringify(token));
47
+ return hash.digest();
48
+ }
49
+ static async getTokenAndCombinedChallengeData(baseUserData, logger) {
50
+ const nvidiaTokens = await ChallengeNvidiaCCHelper.getNvidiaToken(logger);
51
+ const nvidiaTokenHash = nvidiaTokens && ChallengeNvidiaCCHelper.getTokenHash(nvidiaTokens);
52
+ const challengeData = nvidiaTokenHash
53
+ ? Buffer.concat([baseUserData, nvidiaTokenHash])
54
+ : baseUserData;
55
+ if (challengeData.length > 64) {
56
+ throw new Error('challengeData length exceeds 64 bytes');
57
+ }
58
+ return { nvidiaTokens, challengeData };
59
+ }
60
+ }
61
+ exports.ChallengeNvidiaCCHelper = ChallengeNvidiaCCHelper;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBSTRDO0FBRTVDLG1DQUFvQztBQUVwQyxNQUFhLHVCQUF1QjtJQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FDL0IsTUFBWTtRQUVaLElBQUksQ0FBQztZQUNELDhCQUE4QjtZQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLG1DQUFjLEVBQUUsQ0FBQztZQUNyQyxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVoRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQixPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLG1DQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxNQUFNLEVBQUUscUNBQWdCLENBQUMsR0FBRztnQkFDNUIsS0FBSztnQkFDTCxTQUFTLEVBQUUsS0FBSzthQUNuQixDQUFDLENBQUM7WUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSyxZQUFZLDRDQUF1QixFQUFFLENBQUM7Z0JBQzNDLE1BQU0sRUFBRSxLQUFLLENBQUMsNEJBQTRCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxlQUFlLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2dCQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN4QixNQUFNLEVBQUUsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7b0JBQzVDLEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDOUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLFFBQVEsTUFBTSxDQUFDLENBQUM7d0JBQ3JDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBQ3RDLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLEVBQUUsS0FBSyxDQUFDLHdDQUF3QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFFRCxNQUFNLEtBQUssQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBb0I7UUFDcEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxtQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUN6QyxZQUFvQixFQUNwQixNQUFZO1FBS1osTUFBTSxZQUFZLEdBQ2QsTUFBTSx1QkFBdUIsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsTUFBTSxlQUFlLEdBQ2pCLFlBQVksSUFBSSx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdkUsTUFBTSxhQUFhLEdBQUcsZUFBZTtZQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsWUFBWSxDQUFDO1FBRW5CLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBckVELDBEQXFFQyJ9
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ import { Challenge, Log } from '@super-protocol/pki-common';
3
+ export interface ChallengeProvider {
4
+ logger?: Log;
5
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,15 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderCertificate implements ChallengeProvider {
5
+ private readonly orderCertsPath;
6
+ readonly logger?: Log | undefined;
7
+ private orderCert;
8
+ private orderCaBundle;
9
+ private orderPrivateKey;
10
+ private initialized;
11
+ constructor(orderCertsPath: string, logger?: Log | undefined);
12
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
13
+ private readOrderCerts;
14
+ private signUserData;
15
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ChallengeProviderCertificate = void 0;
30
+ const pki_common_1 = require("@super-protocol/pki-common");
31
+ const fs = __importStar(require("fs/promises"));
32
+ const path = __importStar(require("path"));
33
+ const crypto_1 = __importDefault(require("crypto"));
34
+ class ChallengeProviderCertificate {
35
+ orderCertsPath;
36
+ logger;
37
+ orderCert;
38
+ orderCaBundle;
39
+ orderPrivateKey;
40
+ initialized = false;
41
+ constructor(orderCertsPath, logger) {
42
+ this.orderCertsPath = orderCertsPath;
43
+ this.logger = logger;
44
+ }
45
+ async generateChallenge(userData, networkID) {
46
+ if (!this.initialized) {
47
+ try {
48
+ await this.readOrderCerts();
49
+ this.initialized = true;
50
+ }
51
+ catch (error) {
52
+ throw new Error(`Error on reading order certificate files: ${error.message}`);
53
+ }
54
+ }
55
+ return {
56
+ type: pki_common_1.ChallengeType.Certificate,
57
+ userDataSignatureBase64: this.signUserData(userData),
58
+ orderCertificate: this.orderCert,
59
+ orderCABundle: this.orderCaBundle,
60
+ networkID,
61
+ };
62
+ }
63
+ async readOrderCerts() {
64
+ this.orderCert = await fs.readFile(path.join(this.orderCertsPath, 'order_cert.crt'), 'utf8');
65
+ this.orderPrivateKey = await fs.readFile(path.join(this.orderCertsPath, 'order_cert.key'), 'utf8');
66
+ this.orderCaBundle = await fs.readFile(path.join(this.orderCertsPath, 'order_cert_ca_bundle.crt'), 'utf8');
67
+ }
68
+ signUserData(userData) {
69
+ const privateKeyObj = crypto_1.default.createPrivateKey({
70
+ key: this.orderPrivateKey,
71
+ format: 'pem',
72
+ type: 'pkcs8',
73
+ });
74
+ const signer = crypto_1.default.createSign('sha256');
75
+ signer.update(userData);
76
+ signer.end();
77
+ const signature = signer.sign(privateKeyObj);
78
+ return signature.toString('base64');
79
+ }
80
+ }
81
+ exports.ChallengeProviderCertificate = ChallengeProviderCertificate;
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJDZXJ0aWZpY2F0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFsbGVuZ2VQcm92aWRlci9jaGFsbGVuZ2VQcm92aWRlckNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkRBQTJFO0FBQzNFLGdEQUFrQztBQUNsQywyQ0FBNkI7QUFDN0Isb0RBQTRCO0FBRTVCLE1BQWEsNEJBQTRCO0lBT2hCO0lBQ0Q7SUFQWixTQUFTLENBQVU7SUFDbkIsYUFBYSxDQUFVO0lBQ3ZCLGVBQWUsQ0FBVTtJQUN6QixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBRTVCLFlBQ3FCLGNBQXNCLEVBQ3ZCLE1BQVk7UUFEWCxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFNO0lBQzdCLENBQUM7SUFDSixLQUFLLENBQUMsaUJBQWlCLENBQ25CLFFBQWdCLEVBQ2hCLFNBQWtCO1FBRWxCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDO2dCQUNELE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDWCw2Q0FBNkMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUMvRCxDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPO1lBQ0gsSUFBSSxFQUFFLDBCQUFhLENBQUMsV0FBVztZQUMvQix1QkFBdUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUztZQUNoQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsU0FBUztTQUNaLENBQUM7SUFDTixDQUFDO0lBQ08sS0FBSyxDQUFDLGNBQWM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxFQUNoRCxNQUFNLENBQ1QsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsRUFDaEQsTUFBTSxDQUNULENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDLEVBQzFELE1BQU0sQ0FDVCxDQUFDO0lBQ04sQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFnQjtRQUNqQyxNQUFNLGFBQWEsR0FBRyxnQkFBTSxDQUFDLGdCQUFnQixDQUFDO1lBQzFDLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUN6QixNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxPQUFPO1NBQ2hCLENBQUMsQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLGdCQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBM0RELG9FQTJEQyJ9
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderSevSnp implements ChallengeProvider {
5
+ readonly logger?: Log | undefined;
6
+ constructor(logger?: Log | undefined);
7
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
8
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ChallengeProviderSevSnp = void 0;
27
+ const challengeNvidiaCCHelper_1 = require("./challengeNvidiaCCHelper");
28
+ const pki_common_1 = require("@super-protocol/pki-common");
29
+ class ChallengeProviderSevSnp {
30
+ logger;
31
+ constructor(logger) {
32
+ this.logger = logger;
33
+ }
34
+ async generateChallenge(userData, networkID) {
35
+ // This module depends on native library that cannot be compiled for all architectures / operating systems.
36
+ // That is why we load it dynamically and use only when it's really needed.
37
+ const { SgxNative } = await Promise.resolve().then(() => __importStar(require('@super-protocol/addons-tee')));
38
+ const { challengeData, nvidiaTokens } = await challengeNvidiaCCHelper_1.ChallengeNvidiaCCHelper.getTokenAndCombinedChallengeData(userData, this.logger);
39
+ const report = await SgxNative.SevSNP.generateSNPReportWithChain(challengeData);
40
+ return {
41
+ type: pki_common_1.ChallengeType.SEVSNP,
42
+ serializedReportBase64: SgxNative.SevSNP.serializeSNPReport(report).toString('base64'),
43
+ nvidiaTokens,
44
+ networkID,
45
+ };
46
+ }
47
+ }
48
+ exports.ChallengeProviderSevSnp = ChallengeProviderSevSnp;
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJTZXZTbnAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlUHJvdmlkZXJTZXZTbnAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1RUFBb0U7QUFFcEUsMkRBQTJFO0FBRTNFLE1BQWEsdUJBQXVCO0lBQ0o7SUFBNUIsWUFBNEIsTUFBWTtRQUFaLFdBQU0sR0FBTixNQUFNLENBQU07SUFBRyxDQUFDO0lBRTVDLEtBQUssQ0FBQyxpQkFBaUIsQ0FDbkIsUUFBZ0IsRUFDaEIsU0FBa0I7UUFFbEIsMkdBQTJHO1FBQzNHLDJFQUEyRTtRQUMzRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsd0RBQWEsNEJBQTRCLEdBQUMsQ0FBQztRQUVqRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxHQUNqQyxNQUFNLGlEQUF1QixDQUFDLGdDQUFnQyxDQUMxRCxRQUFRLEVBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FDZCxDQUFDO1FBQ04sTUFBTSxNQUFNLEdBQ1IsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLE9BQU87WUFDSCxJQUFJLEVBQUUsMEJBQWEsQ0FBQyxNQUFNO1lBQzFCLHNCQUFzQixFQUNsQixTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbEUsWUFBWTtZQUNaLFNBQVM7U0FDWixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBMUJELDBEQTBCQyJ9
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderSgx implements ChallengeProvider {
5
+ readonly logger?: Log | undefined;
6
+ constructor(logger?: Log | undefined);
7
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
8
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.ChallengeProviderSgx = void 0;
27
+ const pki_common_1 = require("@super-protocol/pki-common");
28
+ class ChallengeProviderSgx {
29
+ logger;
30
+ constructor(logger) {
31
+ this.logger = logger;
32
+ }
33
+ async generateChallenge(userData, networkID) {
34
+ // This module depends on native library that cannot be compiled for all architectures / operating systems.
35
+ // That is why we load it dynamically and use only when it's really needed.
36
+ const { SgxNative } = await Promise.resolve().then(() => __importStar(require('@super-protocol/addons-tee')));
37
+ const dcapVerifyService = new SgxNative.DcapQuoteVerifyService();
38
+ const quoteData = await dcapVerifyService.generateSGXQuote(userData);
39
+ return {
40
+ type: pki_common_1.ChallengeType.SGXDCAP,
41
+ quoteBase64: quoteData.toString('base64'),
42
+ networkID,
43
+ };
44
+ }
45
+ }
46
+ exports.ChallengeProviderSgx = ChallengeProviderSgx;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJTZ3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlUHJvdmlkZXJTZ3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyREFBMkU7QUFFM0UsTUFBYSxvQkFBb0I7SUFDRDtJQUE1QixZQUE0QixNQUFZO1FBQVosV0FBTSxHQUFOLE1BQU0sQ0FBTTtJQUFHLENBQUM7SUFFNUMsS0FBSyxDQUFDLGlCQUFpQixDQUNuQixRQUFnQixFQUNoQixTQUFrQjtRQUVsQiwyR0FBMkc7UUFDM0csMkVBQTJFO1FBQzNFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyx3REFBYSw0QkFBNEIsR0FBQyxDQUFDO1FBQ2pFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNqRSxNQUFNLFNBQVMsR0FBRyxNQUFNLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JFLE9BQU87WUFDSCxJQUFJLEVBQUUsMEJBQWEsQ0FBQyxPQUFPO1lBQzNCLFdBQVcsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN6QyxTQUFTO1NBQ1osQ0FBQztJQUNOLENBQUM7Q0FDSjtBQWxCRCxvREFrQkMifQ==
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderTdx implements ChallengeProvider {
5
+ readonly logger?: Log | undefined;
6
+ constructor(logger?: Log | undefined);
7
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
8
+ }