@super-protocol/pki-attestation-engine 0.0.0-nvidia-local-verifier

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 (53) hide show
  1. package/dist/attestationType.d.ts +4 -0
  2. package/dist/attestationType.js +61 -0
  3. package/dist/azure.d.ts +40 -0
  4. package/dist/azure.js +128 -0
  5. package/dist/certificateGenerator.d.ts +34 -0
  6. package/dist/certificateGenerator.js +347 -0
  7. package/dist/challengeProvider/challengeNvidiaCCHelper.d.ts +33 -0
  8. package/dist/challengeProvider/challengeNvidiaCCHelper.js +254 -0
  9. package/dist/challengeProvider/challengeProvider.d.ts +6 -0
  10. package/dist/challengeProvider/challengeProvider.js +3 -0
  11. package/dist/challengeProvider/challengeProviderAzure.d.ts +11 -0
  12. package/dist/challengeProvider/challengeProviderAzure.js +60 -0
  13. package/dist/challengeProvider/challengeProviderCertificate.d.ts +15 -0
  14. package/dist/challengeProvider/challengeProviderCertificate.js +82 -0
  15. package/dist/challengeProvider/challengeProviderSevSnp.d.ts +10 -0
  16. package/dist/challengeProvider/challengeProviderSevSnp.js +55 -0
  17. package/dist/challengeProvider/challengeProviderTdx.d.ts +11 -0
  18. package/dist/challengeProvider/challengeProviderTdx.js +60 -0
  19. package/dist/challengeProvider/challengeProviderToken.d.ts +9 -0
  20. package/dist/challengeProvider/challengeProviderToken.js +22 -0
  21. package/dist/challengeProvider/challengeProviderUntrusted.d.ts +9 -0
  22. package/dist/challengeProvider/challengeProviderUntrusted.js +22 -0
  23. package/dist/challengeProvider/index.d.ts +8 -0
  24. package/dist/challengeProvider/index.js +25 -0
  25. package/dist/challengeValidator/challengeValidator.d.ts +18 -0
  26. package/dist/challengeValidator/challengeValidator.js +3 -0
  27. package/dist/challengeValidator/challengeValidatorAzure.d.ts +29 -0
  28. package/dist/challengeValidator/challengeValidatorAzure.js +67 -0
  29. package/dist/challengeValidator/challengeValidatorCertificate.d.ts +9 -0
  30. package/dist/challengeValidator/challengeValidatorCertificate.js +55 -0
  31. package/dist/challengeValidator/challengeValidatorNvidia.d.ts +10 -0
  32. package/dist/challengeValidator/challengeValidatorNvidia.js +246 -0
  33. package/dist/challengeValidator/challengeValidatorSevSnp.d.ts +13 -0
  34. package/dist/challengeValidator/challengeValidatorSevSnp.js +142 -0
  35. package/dist/challengeValidator/challengeValidatorTdx.d.ts +8 -0
  36. package/dist/challengeValidator/challengeValidatorTdx.js +58 -0
  37. package/dist/challengeValidator/challengeValidatorToken.d.ts +8 -0
  38. package/dist/challengeValidator/challengeValidatorToken.js +38 -0
  39. package/dist/challengeValidator/index.d.ts +9 -0
  40. package/dist/challengeValidator/index.js +37 -0
  41. package/dist/challengeValidator/schemas.d.ts +13 -0
  42. package/dist/challengeValidator/schemas.js +21 -0
  43. package/dist/challengeValidator/validatorConfig.d.ts +28 -0
  44. package/dist/challengeValidator/validatorConfig.js +3 -0
  45. package/dist/challengeValidator/wasmVerificationPolicy.d.ts +60 -0
  46. package/dist/challengeValidator/wasmVerificationPolicy.js +123 -0
  47. package/dist/index.d.ts +7 -0
  48. package/dist/index.js +24 -0
  49. package/dist/mrEnclaveSignature.d.ts +9 -0
  50. package/dist/mrEnclaveSignature.js +32 -0
  51. package/dist/swarmCertValidation.d.ts +6 -0
  52. package/dist/swarmCertValidation.js +52 -0
  53. package/package.json +32 -0
@@ -0,0 +1,33 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeType, NvidiaCCToken, NvidiaEvidence, Log } from '@super-protocol/pki-common';
3
+ import { NvidiaVerifierMode } from '../challengeValidator/validatorConfig';
4
+ export interface NvidiaChallengeOptions {
5
+ verifier?: NvidiaVerifierMode;
6
+ challengeType?: ChallengeType;
7
+ }
8
+ export declare class ChallengeNvidiaCCHelper {
9
+ private static getNvidiaToken;
10
+ /**
11
+ * Reports how the GPUs can reach each other's memory.
12
+ *
13
+ * PCIe and unidentified peer paths are reported as unverified metadata;
14
+ * the verifier only permits that state on an untrusted network. Whether
15
+ * NVLink requires a separate NVSwitch token is determined from the LS10
16
+ * count returned by getGPUTopology(): Hopper exposes attestable LS10
17
+ * switches, while Blackwell does not.
18
+ *
19
+ * @returns the metadata status to bind to the TEE challenge
20
+ * @throws if NVML cannot be queried
21
+ */
22
+ private static getGpuInterconnectStatus;
23
+ static isLocalEvidence(value: NvidiaCCToken | NvidiaEvidence): value is NvidiaEvidence;
24
+ static canonicalEvidenceBinding(evidence: NvidiaEvidence): string;
25
+ static getEvidenceHash(evidence: NvidiaEvidence): Buffer;
26
+ static assertLocalVerifierAllowsChallenge(verifier: NvidiaVerifierMode | undefined, challengeType: ChallengeType | undefined): void;
27
+ static getTokenHash(token: NvidiaCCToken): Buffer;
28
+ static getTokenAndCombinedChallengeData(baseUserData: Buffer, logger?: Log, options?: NvidiaChallengeOptions): Promise<{
29
+ nvidiaTokens: NvidiaCCToken | undefined;
30
+ nvidiaEvidence: NvidiaEvidence | undefined;
31
+ challengeData: Buffer;
32
+ }>;
33
+ }
@@ -0,0 +1,254 @@
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 pki_common_1 = require("@super-protocol/pki-common");
6
+ const crypto_1 = require("crypto");
7
+ const CLOUD_CHALLENGE_TYPES = new Set([
8
+ pki_common_1.ChallengeType.TDXGOOGLE,
9
+ pki_common_1.ChallengeType.TDXAZURE,
10
+ pki_common_1.ChallengeType.SEVSNPAZURE,
11
+ ]);
12
+ class ChallengeNvidiaCCHelper {
13
+ static async getNvidiaToken(logger, verifier = 'remote') {
14
+ const log = logger?.child({
15
+ helper: 'ChallengeNvidiaCCHelper',
16
+ });
17
+ try {
18
+ const wrapper = new sp_nvtrust_wrapper_1.NvtrustWrapper();
19
+ log?.info('Checking for untrusted GPUs');
20
+ await wrapper.assertTrustedGpus();
21
+ log?.info('Untrusted GPUs were not detected');
22
+ const topology = await wrapper.getGPUTopology();
23
+ log?.debug('NVIDIA GPU topology detected', {
24
+ gpuCount: topology.gpuCount,
25
+ nvswitchCount: topology.nvswitchCount,
26
+ });
27
+ if (!topology.gpuCount) {
28
+ log?.info('Challenge NVIDIA token present: false');
29
+ log?.info('NVIDIA token retrieval skipped: no GPUs detected in topology');
30
+ return;
31
+ }
32
+ let gpuInterconnectStatus;
33
+ if (topology.gpuCount > 1) {
34
+ gpuInterconnectStatus =
35
+ await ChallengeNvidiaCCHelper.getGpuInterconnectStatus(wrapper, topology.nvswitchCount, log);
36
+ }
37
+ const nonce = sp_nvtrust_wrapper_1.NvtrustWrapper.generateNonce();
38
+ const needsSwitch = gpuInterconnectStatus ===
39
+ sp_nvtrust_wrapper_1.NvidiaGpuInterconnectStatus.NVIDIA_GPU_INTERCONNECT_NVLINK_SWITCH_ATTESTATION_VERIFIED;
40
+ if (verifier === 'local') {
41
+ log?.debug('Collecting NVIDIA GPU evidence', {
42
+ gpuCount: topology.gpuCount,
43
+ });
44
+ const gpuEvidence = await wrapper.collectEvidence({
45
+ device: sp_nvtrust_wrapper_1.NvidiaDeviceType.GPU,
46
+ nonce,
47
+ ppcieMode: false,
48
+ });
49
+ let nvswitchEvidence;
50
+ if (needsSwitch) {
51
+ log?.debug('Collecting NVIDIA NVSwitch evidence', {
52
+ nvswitchCount: topology.nvswitchCount,
53
+ });
54
+ nvswitchEvidence = await wrapper.collectEvidence({
55
+ device: sp_nvtrust_wrapper_1.NvidiaDeviceType.SWITCH,
56
+ nonce,
57
+ ppcieMode: false,
58
+ });
59
+ }
60
+ log?.info('Challenge NVIDIA evidence present: true');
61
+ return {
62
+ gpuEvidence,
63
+ nonce,
64
+ ...(gpuInterconnectStatus !== undefined
65
+ ? { gpuInterconnectStatus }
66
+ : {}),
67
+ ...(nvswitchEvidence !== undefined
68
+ ? { nvswitchEvidence }
69
+ : {}),
70
+ };
71
+ }
72
+ log?.debug('Attempting NVIDIA token retrieval for detected GPUs', {
73
+ gpuCount: topology.gpuCount,
74
+ });
75
+ const gpuTokenRaw = await wrapper.getNvidiaToken({
76
+ device: sp_nvtrust_wrapper_1.NvidiaDeviceType.GPU,
77
+ nonce,
78
+ ppcieMode: false,
79
+ });
80
+ let nvswitchToken;
81
+ if (needsSwitch) {
82
+ log?.debug('Attempting NVIDIA NVSwitch token retrieval', {
83
+ nvswitchCount: topology.nvswitchCount,
84
+ });
85
+ const nvswitchTokenRaw = await wrapper.getNvidiaToken({
86
+ device: sp_nvtrust_wrapper_1.NvidiaDeviceType.SWITCH,
87
+ nonce,
88
+ ppcieMode: false,
89
+ });
90
+ nvswitchToken = nvswitchTokenRaw.jwt;
91
+ log?.info('NVIDIA NVSwitch token retrieved successfully', {
92
+ nvswitchCount: topology.nvswitchCount,
93
+ });
94
+ }
95
+ log?.info('Challenge NVIDIA token present: true');
96
+ log?.info('NVIDIA token retrieved successfully', {
97
+ gpuCount: topology.gpuCount,
98
+ nvswitchCount: topology.nvswitchCount,
99
+ });
100
+ return {
101
+ gpuToken: gpuTokenRaw.jwt,
102
+ ...(gpuInterconnectStatus !== undefined
103
+ ? { gpuInterconnectStatus }
104
+ : {}),
105
+ ...(nvswitchToken !== undefined ? { nvswitchToken } : {}),
106
+ };
107
+ }
108
+ catch (error) {
109
+ if (error instanceof sp_nvtrust_wrapper_1.NvtrustWrapperCallError) {
110
+ log?.error(`NvtrustWrapperCallError: ${error.message}`);
111
+ if (error.traceback?.trim()) {
112
+ log?.debug(`Traceback:\n${error.traceback}`);
113
+ }
114
+ const logEntries = Object.entries(error.logs ?? {});
115
+ if (logEntries.length > 0) {
116
+ log?.debug('Logs from nvtrust wrapper:');
117
+ for (const [fileName, logContent] of logEntries) {
118
+ log?.debug(`--- ${fileName} ---`);
119
+ log?.debug(String(logContent));
120
+ }
121
+ }
122
+ }
123
+ else if (error instanceof sp_nvtrust_wrapper_1.UntrustedGpusError) {
124
+ log?.error('Untrusted GPUs detected', {
125
+ errors: error.errors,
126
+ });
127
+ }
128
+ else {
129
+ log?.error(`Error during NVIDIA token retrieval: ${error}`);
130
+ }
131
+ throw error;
132
+ }
133
+ }
134
+ /**
135
+ * Reports how the GPUs can reach each other's memory.
136
+ *
137
+ * PCIe and unidentified peer paths are reported as unverified metadata;
138
+ * the verifier only permits that state on an untrusted network. Whether
139
+ * NVLink requires a separate NVSwitch token is determined from the LS10
140
+ * count returned by getGPUTopology(): Hopper exposes attestable LS10
141
+ * switches, while Blackwell does not.
142
+ *
143
+ * @returns the metadata status to bind to the TEE challenge
144
+ * @throws if NVML cannot be queried
145
+ */
146
+ static async getGpuInterconnectStatus(wrapper, nvswitchCount, log) {
147
+ const links = await wrapper.getGpuInterconnect();
148
+ const describe = (type) => sp_nvtrust_wrapper_1.GpuInterconnectLinkType[type] ?? String(type);
149
+ const format = (subset) => subset
150
+ .map((link) => `${link.bdf1} <-> ${link.bdf2}: ${describe(link.type)}`)
151
+ .join('; ');
152
+ log?.debug('GPU interconnect checked', {
153
+ pairs: links.map((link) => ({
154
+ bdf1: link.bdf1,
155
+ bdf2: link.bdf2,
156
+ type: describe(link.type),
157
+ })),
158
+ });
159
+ const connected = links.filter((link) => link.type !==
160
+ sp_nvtrust_wrapper_1.GpuInterconnectLinkType.GPU_INTERCONNECT_LINK_TYPE_NONE);
161
+ if (connected.length === 0) {
162
+ log?.info('GPUs are isolated: no direct interconnect detected');
163
+ return sp_nvtrust_wrapper_1.NvidiaGpuInterconnectStatus.NVIDIA_GPU_INTERCONNECT_DISCONNECTED;
164
+ }
165
+ const bypassing = connected.filter((link) => link.type !==
166
+ sp_nvtrust_wrapper_1.GpuInterconnectLinkType.GPU_INTERCONNECT_LINK_TYPE_NVLINK);
167
+ if (bypassing.length > 0) {
168
+ const details = format(bypassing);
169
+ log?.warn('Unverified direct GPU interconnect detected; it is allowed only on an untrusted network', { links: details });
170
+ return sp_nvtrust_wrapper_1.NvidiaGpuInterconnectStatus.NVIDIA_GPU_INTERCONNECT_DIRECT_UNVERIFIED;
171
+ }
172
+ log?.warn('NVLink interconnect detected', { links: format(connected) });
173
+ if (nvswitchCount === 0) {
174
+ log?.warn('No attestable LS10 NVSwitch devices were found; continuing with GPU-only attestation (expected for Blackwell)');
175
+ return sp_nvtrust_wrapper_1.NvidiaGpuInterconnectStatus.NVIDIA_GPU_INTERCONNECT_NVLINK_SWITCH_ATTESTATION_NOT_APPLICABLE;
176
+ }
177
+ return sp_nvtrust_wrapper_1.NvidiaGpuInterconnectStatus.NVIDIA_GPU_INTERCONNECT_NVLINK_SWITCH_ATTESTATION_VERIFIED;
178
+ }
179
+ static isLocalEvidence(value) {
180
+ return 'gpuEvidence' in value;
181
+ }
182
+ static canonicalEvidenceBinding(evidence) {
183
+ return JSON.stringify({
184
+ gpuEvidence: evidence.gpuEvidence,
185
+ nonce: evidence.nonce,
186
+ ...(evidence.gpuInterconnectStatus !== undefined
187
+ ? { gpuInterconnectStatus: evidence.gpuInterconnectStatus }
188
+ : {}),
189
+ ...(evidence.nvswitchEvidence !== undefined
190
+ ? { nvswitchEvidence: evidence.nvswitchEvidence }
191
+ : {}),
192
+ });
193
+ }
194
+ static getEvidenceHash(evidence) {
195
+ return (0, crypto_1.createHash)('sha256')
196
+ .update(ChallengeNvidiaCCHelper.canonicalEvidenceBinding(evidence))
197
+ .digest();
198
+ }
199
+ static assertLocalVerifierAllowsChallenge(verifier, challengeType) {
200
+ if (verifier === 'local' &&
201
+ challengeType !== undefined &&
202
+ CLOUD_CHALLENGE_TYPES.has(challengeType)) {
203
+ throw new Error(`NVIDIA local verifier does not support ${challengeType}`);
204
+ }
205
+ }
206
+ static getTokenHash(token) {
207
+ const hash = (0, crypto_1.createHash)('sha256');
208
+ hash.update(JSON.stringify({
209
+ gpuToken: token.gpuToken,
210
+ ...(token.gpuInterconnectStatus !== undefined
211
+ ? {
212
+ gpuInterconnectStatus: token.gpuInterconnectStatus,
213
+ }
214
+ : {}),
215
+ ...(token.nvswitchToken !== undefined
216
+ ? { nvswitchToken: token.nvswitchToken }
217
+ : {}),
218
+ }));
219
+ return hash.digest();
220
+ }
221
+ static async getTokenAndCombinedChallengeData(baseUserData, logger, options) {
222
+ const log = logger?.child({
223
+ helper: 'ChallengeNvidiaCCHelper',
224
+ });
225
+ const verifier = options?.verifier ?? 'remote';
226
+ ChallengeNvidiaCCHelper.assertLocalVerifierAllowsChallenge(verifier, options?.challengeType);
227
+ const material = await ChallengeNvidiaCCHelper.getNvidiaToken(logger, verifier);
228
+ const nvidiaEvidence = material && ChallengeNvidiaCCHelper.isLocalEvidence(material)
229
+ ? material
230
+ : undefined;
231
+ const nvidiaTokens = material && !ChallengeNvidiaCCHelper.isLocalEvidence(material)
232
+ ? material
233
+ : undefined;
234
+ const nvidiaHash = nvidiaEvidence
235
+ ? ChallengeNvidiaCCHelper.getEvidenceHash(nvidiaEvidence)
236
+ : nvidiaTokens &&
237
+ ChallengeNvidiaCCHelper.getTokenHash(nvidiaTokens);
238
+ const challengeData = nvidiaHash
239
+ ? Buffer.concat([baseUserData, nvidiaHash])
240
+ : baseUserData;
241
+ if (challengeData.length > 64) {
242
+ throw new Error('challengeData length exceeds 64 bytes');
243
+ }
244
+ log?.debug('Prepared combined challenge data', {
245
+ baseUserDataLength: baseUserData.length,
246
+ challengeDataLength: challengeData.length,
247
+ hasNvidiaToken: Boolean(nvidiaTokens),
248
+ hasNvidiaEvidence: Boolean(nvidiaEvidence),
249
+ });
250
+ return { nvidiaTokens, nvidiaEvidence, challengeData };
251
+ }
252
+ }
253
+ exports.ChallengeNvidiaCCHelper = ChallengeNvidiaCCHelper;
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBTzRDO0FBQzVDLDJEQUtvQztBQUVwQyxtQ0FBb0M7QUFFcEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBZ0I7SUFDakQsMEJBQWEsQ0FBQyxTQUFTO0lBQ3ZCLDBCQUFhLENBQUMsUUFBUTtJQUN0QiwwQkFBYSxDQUFDLFdBQVc7Q0FDNUIsQ0FBQyxDQUFDO0FBT0gsTUFBYSx1QkFBdUI7SUFDeEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQy9CLE1BQVksRUFDWixXQUErQixRQUFRO1FBRXZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDdEIsTUFBTSxFQUFFLHlCQUF5QjtTQUNwQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1DQUFjLEVBQUUsQ0FBQztZQUNyQyxHQUFHLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFFOUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEQsR0FBRyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsRUFBRTtnQkFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUMzQixhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7YUFDeEMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyx1Q0FBdUMsQ0FB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
@@ -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,11 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, ChallengeType, Log } from '@super-protocol/pki-common';
4
+ import { NvidiaVerifierMode } from '../challengeValidator/validatorConfig';
5
+ export declare class ChallengeProviderAzure implements ChallengeProvider {
6
+ readonly logger: Log | undefined;
7
+ private readonly challengeType;
8
+ private readonly nvidiaVerifier?;
9
+ constructor(logger: Log | undefined, challengeType: ChallengeType.TDXAZURE | ChallengeType.SEVSNPAZURE, nvidiaVerifier?: NvidiaVerifierMode | undefined);
10
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
11
+ }
@@ -0,0 +1,60 @@
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.ChallengeProviderAzure = void 0;
27
+ const challengeNvidiaCCHelper_1 = require("./challengeNvidiaCCHelper");
28
+ const pki_common_1 = require("@super-protocol/pki-common");
29
+ class ChallengeProviderAzure {
30
+ logger;
31
+ challengeType;
32
+ nvidiaVerifier;
33
+ constructor(logger, challengeType, nvidiaVerifier) {
34
+ this.logger = logger;
35
+ this.challengeType = challengeType;
36
+ this.nvidiaVerifier = nvidiaVerifier;
37
+ }
38
+ async generateChallenge(userData, networkID) {
39
+ // This module depends on native library that cannot be compiled for all architectures / operating systems.
40
+ // That is why we load it dynamically and use only when it's really needed.
41
+ const { TeeNative } = await Promise.resolve().then(() => __importStar(require('@super-protocol/addons-tee')));
42
+ const { challengeData, nvidiaTokens, nvidiaEvidence } = await challengeNvidiaCCHelper_1.ChallengeNvidiaCCHelper.getTokenAndCombinedChallengeData(userData, this.logger, {
43
+ verifier: this.nvidiaVerifier,
44
+ challengeType: this.challengeType,
45
+ });
46
+ const azureCvmService = new TeeNative.AzureCvmService();
47
+ const evidence = this.challengeType === pki_common_1.ChallengeType.TDXAZURE
48
+ ? await azureCvmService.generateSerializedTDXAzureEvidence(challengeData)
49
+ : await azureCvmService.generateSerializedAmdSevSnpAzureEvidence(challengeData);
50
+ return {
51
+ type: this.challengeType,
52
+ evidenceBase64: evidence.toString('base64'),
53
+ ...(nvidiaTokens ? { nvidiaTokens } : {}),
54
+ ...(nvidiaEvidence ? { nvidiaEvidence } : {}),
55
+ networkID,
56
+ };
57
+ }
58
+ }
59
+ exports.ChallengeProviderAzure = ChallengeProviderAzure;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJBenVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFsbGVuZ2VQcm92aWRlci9jaGFsbGVuZ2VQcm92aWRlckF6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQW9FO0FBRXBFLDJEQUEyRTtBQUczRSxNQUFhLHNCQUFzQjtJQUVYO0lBQ0M7SUFHQTtJQUxyQixZQUNvQixNQUF1QixFQUN0QixhQUVjLEVBQ2QsY0FBbUM7UUFKcEMsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBRUM7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7SUFDckQsQ0FBQztJQUVKLEtBQUssQ0FBQyxpQkFBaUIsQ0FDbkIsUUFBZ0IsRUFDaEIsU0FBa0I7UUFFbEIsMkdBQTJHO1FBQzNHLDJFQUEyRTtRQUMzRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsd0RBQWEsNEJBQTRCLEdBQUMsQ0FBQztRQUVqRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsR0FDakQsTUFBTSxpREFBdUIsQ0FBQyxnQ0FBZ0MsQ0FDMUQsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLEVBQ1g7WUFDSSxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3BDLENBQ0osQ0FBQztRQUVOLE1BQU0sZUFBZSxHQUFHLElBQUksU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhELE1BQU0sUUFBUSxHQUNWLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxRQUFRO1lBQ3pDLENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxrQ0FBa0MsQ0FDcEQsYUFBYSxDQUNoQjtZQUNILENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyx3Q0FBd0MsQ0FDMUQsYUFBYSxDQUNoQixDQUFDO1FBRVosT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUN4QixjQUFjLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDM0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxTQUFTO1NBQ1osQ0FBQztJQUNOLENBQUM7Q0FDSjtBQTlDRCx3REE4Q0MifQ==
@@ -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,10 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ import { NvidiaVerifierMode } from '../challengeValidator/validatorConfig';
5
+ export declare class ChallengeProviderSevSnp implements ChallengeProvider {
6
+ readonly logger?: Log | undefined;
7
+ private readonly nvidiaVerifier?;
8
+ constructor(logger?: Log | undefined, nvidiaVerifier?: NvidiaVerifierMode | undefined);
9
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
10
+ }
@@ -0,0 +1,55 @@
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
+ nvidiaVerifier;
32
+ constructor(logger, nvidiaVerifier) {
33
+ this.logger = logger;
34
+ this.nvidiaVerifier = nvidiaVerifier;
35
+ }
36
+ async generateChallenge(userData, networkID) {
37
+ // This module depends on native library that cannot be compiled for all architectures / operating systems.
38
+ // That is why we load it dynamically and use only when it's really needed.
39
+ const { TeeNative } = await Promise.resolve().then(() => __importStar(require('@super-protocol/addons-tee')));
40
+ const { challengeData, nvidiaTokens, nvidiaEvidence } = await challengeNvidiaCCHelper_1.ChallengeNvidiaCCHelper.getTokenAndCombinedChallengeData(userData, this.logger, {
41
+ verifier: this.nvidiaVerifier,
42
+ challengeType: pki_common_1.ChallengeType.SEVSNP,
43
+ });
44
+ const evidence = await TeeNative.SevSNP.generateSerializedAmdSevSnpQemuEvidence(challengeData);
45
+ return {
46
+ type: pki_common_1.ChallengeType.SEVSNP,
47
+ evidenceBase64: evidence.toString('base64'),
48
+ ...(nvidiaTokens ? { nvidiaTokens } : {}),
49
+ ...(nvidiaEvidence ? { nvidiaEvidence } : {}),
50
+ networkID,
51
+ };
52
+ }
53
+ }
54
+ exports.ChallengeProviderSevSnp = ChallengeProviderSevSnp;
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJTZXZTbnAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlUHJvdmlkZXJTZXZTbnAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1RUFBb0U7QUFFcEUsMkRBQTJFO0FBRzNFLE1BQWEsdUJBQXVCO0lBRVo7SUFDQztJQUZyQixZQUNvQixNQUFZLEVBQ1gsY0FBbUM7UUFEcEMsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUNYLG1CQUFjLEdBQWQsY0FBYyxDQUFxQjtJQUNyRCxDQUFDO0lBRUosS0FBSyxDQUFDLGlCQUFpQixDQUNuQixRQUFnQixFQUNoQixTQUFrQjtRQUVsQiwyR0FBMkc7UUFDM0csMkVBQTJFO1FBQzNFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyx3REFBYSw0QkFBNEIsR0FBQyxDQUFDO1FBRWpFLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxHQUNqRCxNQUFNLGlEQUF1QixDQUFDLGdDQUFnQyxDQUMxRCxRQUFRLEVBQ1IsSUFBSSxDQUFDLE1BQU0sRUFDWDtZQUNJLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUM3QixhQUFhLEVBQUUsMEJBQWEsQ0FBQyxNQUFNO1NBQ3RDLENBQ0osQ0FBQztRQUNOLE1BQU0sUUFBUSxHQUNWLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FDMUQsYUFBYSxDQUNoQixDQUFDO1FBQ04sT0FBTztZQUNILElBQUksRUFBRSwwQkFBYSxDQUFDLE1BQU07WUFDMUIsY0FBYyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsU0FBUztTQUNaLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFuQ0QsMERBbUNDIn0=
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, ChallengeType, Log } from '@super-protocol/pki-common';
4
+ import { NvidiaVerifierMode } from '../challengeValidator/validatorConfig';
5
+ export declare class ChallengeProviderTdx implements ChallengeProvider {
6
+ readonly logger?: Log | undefined;
7
+ private readonly challengeType;
8
+ private readonly nvidiaVerifier?;
9
+ constructor(logger?: Log | undefined, challengeType?: ChallengeType.TDX | ChallengeType.TDXGOOGLE, nvidiaVerifier?: NvidiaVerifierMode | undefined);
10
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
11
+ }
@@ -0,0 +1,60 @@
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.ChallengeProviderTdx = void 0;
27
+ const challengeNvidiaCCHelper_1 = require("./challengeNvidiaCCHelper");
28
+ const pki_common_1 = require("@super-protocol/pki-common");
29
+ class ChallengeProviderTdx {
30
+ logger;
31
+ challengeType;
32
+ nvidiaVerifier;
33
+ constructor(logger, challengeType = pki_common_1.ChallengeType.TDX, nvidiaVerifier) {
34
+ this.logger = logger;
35
+ this.challengeType = challengeType;
36
+ this.nvidiaVerifier = nvidiaVerifier;
37
+ }
38
+ async generateChallenge(userData, networkID) {
39
+ // This module depends on native library that cannot be compiled for all architectures / operating systems.
40
+ // That is why we load it dynamically and use only when it's really needed.
41
+ const { TeeNative } = await Promise.resolve().then(() => __importStar(require('@super-protocol/addons-tee')));
42
+ const { challengeData, nvidiaTokens, nvidiaEvidence } = await challengeNvidiaCCHelper_1.ChallengeNvidiaCCHelper.getTokenAndCombinedChallengeData(userData, this.logger, {
43
+ verifier: this.nvidiaVerifier,
44
+ challengeType: this.challengeType,
45
+ });
46
+ const dcapVerifyService = new TeeNative.DcapQuoteVerifyService();
47
+ const evidence = this.challengeType === pki_common_1.ChallengeType.TDXGOOGLE
48
+ ? await dcapVerifyService.generateSerializedTDXGCPEvidence(challengeData)
49
+ : await dcapVerifyService.generateSerializedTDXQemuEvidence(challengeData);
50
+ return {
51
+ type: this.challengeType,
52
+ evidenceBase64: evidence.toString('base64'),
53
+ ...(nvidiaTokens ? { nvidiaTokens } : {}),
54
+ ...(nvidiaEvidence ? { nvidiaEvidence } : {}),
55
+ networkID,
56
+ };
57
+ }
58
+ }
59
+ exports.ChallengeProviderTdx = ChallengeProviderTdx;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJUZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlUHJvdmlkZXJUZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1RUFBb0U7QUFFcEUsMkRBQTJFO0FBRzNFLE1BQWEsb0JBQW9CO0lBRVQ7SUFDQztJQUdBO0lBTHJCLFlBQ29CLE1BQVksRUFDWCxnQkFFZSwwQkFBYSxDQUFDLEdBQUcsRUFDaEMsY0FBbUM7UUFKcEMsV0FBTSxHQUFOLE1BQU0sQ0FBTTtRQUNYLGtCQUFhLEdBQWIsYUFBYSxDQUVtQjtRQUNoQyxtQkFBYyxHQUFkLGNBQWMsQ0FBcUI7SUFDckQsQ0FBQztJQUVKLEtBQUssQ0FBQyxpQkFBaUIsQ0FDbkIsUUFBZ0IsRUFDaEIsU0FBa0I7UUFFbEIsMkdBQTJHO1FBQzNHLDJFQUEyRTtRQUMzRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsd0RBQWEsNEJBQTRCLEdBQUMsQ0FBQztRQUVqRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsR0FDakQsTUFBTSxpREFBdUIsQ0FBQyxnQ0FBZ0MsQ0FDMUQsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLEVBQ1g7WUFDSSxRQUFRLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3BDLENBQ0osQ0FBQztRQUVOLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVqRSxNQUFNLFFBQVEsR0FDVixJQUFJLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsU0FBUztZQUMxQyxDQUFDLENBQUMsTUFBTSxpQkFBaUIsQ0FBQyxnQ0FBZ0MsQ0FDcEQsYUFBYSxDQUNoQjtZQUNILENBQUMsQ0FBQyxNQUFNLGlCQUFpQixDQUFDLGlDQUFpQyxDQUNyRCxhQUFhLENBQ2hCLENBQUM7UUFFWixPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ3hCLGNBQWMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUMzQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLFNBQVM7U0FDWixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBOUNELG9EQThDQyJ9
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderToken implements ChallengeProvider {
5
+ private readonly token;
6
+ readonly logger?: Log | undefined;
7
+ constructor(token: string, logger?: Log | undefined);
8
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
9
+ }