@super-protocol/pki-attestation-engine 3.0.0 → 3.0.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-protocol/pki-attestation-engine",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -1,18 +0,0 @@
1
- /// <reference types="node" />
2
- import { Challenge } from '@super-protocol/pki-common';
3
- export interface SuccessChallengeResult {
4
- success: true;
5
- validatedUserData: Buffer;
6
- validatedId: Buffer;
7
- validatedCommonId?: Buffer;
8
- validatedSolutionHash?: Buffer;
9
- }
10
- export interface UnsuccessfulChallengeResult {
11
- success: false;
12
- error: string;
13
- }
14
- export type ChallengeResult = SuccessChallengeResult | UnsuccessfulChallengeResult;
15
- export interface ChallengeValidator {
16
- validate(challenge: Challenge, publicKeyPem?: string): Promise<ChallengeResult>;
17
- initialize?: () => Promise<void>;
18
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvci9jaGFsbGVuZ2VWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,8 +0,0 @@
1
- import { Challenge } from '@super-protocol/pki-common';
2
- import { ChallengeResult, ChallengeValidator } from './challengeValidator';
3
- import { Log } from '@super-protocol/pki-apps-common';
4
- export declare class ChallengeValidatorCertificate implements ChallengeValidator {
5
- log: Log;
6
- validate(challenge: Challenge, publicKeyPem: string): Promise<ChallengeResult>;
7
- private verifyUserData;
8
- }
@@ -1,70 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.ChallengeValidatorCertificate = void 0;
16
- const crypto_1 = __importDefault(require("crypto"));
17
- const pki_common_1 = require("@super-protocol/pki-common");
18
- const inversify_1 = require("inversify");
19
- const sdk_js_1 = require("@super-protocol/sdk-js");
20
- const pki_apps_common_1 = require("@super-protocol/pki-apps-common");
21
- let ChallengeValidatorCertificate = class ChallengeValidatorCertificate {
22
- log = new pki_apps_common_1.MockLog();
23
- async validate(challenge, publicKeyPem) {
24
- switch (challenge.type) {
25
- case pki_common_1.ChallengeType.Certificate:
26
- try {
27
- await sdk_js_1.TeeCertificateService.validateTeeCertChainOrFail(challenge.orderCertificate + challenge.orderCABundle);
28
- this.verifyUserData(publicKeyPem, challenge.userDataSignatureBase64, challenge.orderCertificate);
29
- return {
30
- success: true,
31
- validatedUserData: (0, pki_common_1.getPublicKeyPemHash)(publicKeyPem),
32
- validatedId: sdk_js_1.CertificatesHelper.getExtensionValue(challenge.orderCertificate, pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_ID) ?? Buffer.alloc(0),
33
- validatedCommonId: sdk_js_1.CertificatesHelper.getExtensionValue(challenge.orderCertificate, pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID),
34
- validatedSolutionHash: sdk_js_1.CertificatesHelper.getExtensionValue(challenge.orderCertificate, sdk_js_1.constants.OID_CUSTOM_EXTENSION_USER_DATA),
35
- };
36
- }
37
- catch (e) {
38
- return {
39
- success: false,
40
- error: e.message,
41
- };
42
- }
43
- }
44
- throw new Error('Method not implemented.');
45
- }
46
- async verifyUserData(publicKeyPem, signatureBase64, certificatePem) {
47
- const cert = await sdk_js_1.CertificateGenerator.checkAndParseCert(certificatePem);
48
- const certPublicKeyPem = await sdk_js_1.CryptoKeysTransformer.cryptoKeyToSpkiPem(cert.publicKey);
49
- const certPublicKeyKeyObj = crypto_1.default.createPublicKey(certPublicKeyPem);
50
- const publicKeyHash = (0, pki_common_1.getPublicKeyPemHash)(publicKeyPem);
51
- const isValid = await sdk_js_1.Crypto.verify({
52
- data: publicKeyHash,
53
- signature: signatureBase64,
54
- publicKey: certPublicKeyKeyObj,
55
- signatureFormat: 'base64',
56
- });
57
- if (!isValid) {
58
- throw Error('Signature verification failed');
59
- }
60
- }
61
- };
62
- exports.ChallengeValidatorCertificate = ChallengeValidatorCertificate;
63
- __decorate([
64
- (0, inversify_1.inject)(pki_apps_common_1.CommonInjectable.Logger),
65
- __metadata("design:type", Object)
66
- ], ChallengeValidatorCertificate.prototype, "log", void 0);
67
- exports.ChallengeValidatorCertificate = ChallengeValidatorCertificate = __decorate([
68
- (0, inversify_1.injectable)()
69
- ], ChallengeValidatorCertificate);
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yQ2VydGlmaWNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdG9yL2NoYWxsZW5nZVZhbGlkYXRvckNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwyREFNb0M7QUFFcEMseUNBQStDO0FBQy9DLG1EQU9nQztBQUVoQyxxRUFJeUM7QUFHbEMsSUFBTSw2QkFBNkIsR0FBbkMsTUFBTSw2QkFBNkI7SUFFL0IsR0FBRyxHQUFRLElBQUkseUJBQU8sRUFBRSxDQUFDO0lBRWhDLEtBQUssQ0FBQyxRQUFRLENBQ1YsU0FBb0IsRUFDcEIsWUFBb0I7UUFFcEIsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsS0FBSywwQkFBYSxDQUFDLFdBQVc7Z0JBQzFCLElBQUksQ0FBQztvQkFDRCxNQUFNLDhCQUFxQixDQUFDLDBCQUEwQixDQUNsRCxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FDdkQsQ0FBQztvQkFDRixJQUFJLENBQUMsY0FBYyxDQUNmLFlBQVksRUFDWixTQUFTLENBQUMsdUJBQXVCLEVBQ2pDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FDN0IsQ0FBQztvQkFDRixPQUFPO3dCQUNILE9BQU8sRUFBRSxJQUFJO3dCQUNiLGlCQUFpQixFQUFFLElBQUEsZ0NBQW1CLEVBQUMsWUFBWSxDQUFDO3dCQUNwRCxXQUFXLEVBQ1AsMkJBQWtCLENBQUMsaUJBQWlCLENBQ2hDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFDMUIsOENBQWlDLENBQ3BDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7d0JBQ3hCLGlCQUFpQixFQUFFLDJCQUFrQixDQUFDLGlCQUFpQixDQUNuRCxTQUFTLENBQUMsZ0JBQWdCLEVBQzFCLHFEQUF3QyxDQUMzQzt3QkFDRCxxQkFBcUIsRUFDakIsMkJBQWtCLENBQUMsaUJBQWlCLENBQ2hDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFDMUIsa0JBQVMsQ0FBQyw4QkFBOEIsQ0FDM0M7cUJBQ1IsQ0FBQztnQkFDTixDQUFDO2dCQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7b0JBQ2QsT0FBTzt3QkFDSCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU87cUJBQ25CLENBQUM7Z0JBQ04sQ0FBQztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQ3hCLFlBQW9CLEVBQ3BCLGVBQXVCLEVBQ3ZCLGNBQXNCO1FBRXRCLE1BQU0sSUFBSSxHQUNOLE1BQU0sNkJBQW9CLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLDhCQUFxQixDQUFDLGtCQUFrQixDQUNuRSxJQUFJLENBQUMsU0FBUyxDQUNqQixDQUFDO1FBQ0YsTUFBTSxtQkFBbUIsR0FBRyxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sYUFBYSxHQUFHLElBQUEsZ0NBQW1CLEVBQUMsWUFBWSxDQUFDLENBQUM7UUFFeEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFNLENBQUMsTUFBTSxDQUFDO1lBQ2hDLElBQUksRUFBRSxhQUFhO1lBQ25CLFNBQVMsRUFBRSxlQUFlO1lBQzFCLFNBQVMsRUFBRSxtQkFBbUI7WUFDOUIsZUFBZSxFQUFFLFFBQVE7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsTUFBTSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0wsQ0FBQztDQUNKLENBQUE7QUF2RVksc0VBQTZCO0FBRS9CO0lBRE4sSUFBQSxrQkFBTSxFQUFDLGtDQUFnQixDQUFDLE1BQU0sQ0FBQzs7MERBQ0E7d0NBRnZCLDZCQUE2QjtJQUR6QyxJQUFBLHNCQUFVLEdBQUU7R0FDQSw2QkFBNkIsQ0F1RXpDIn0=
@@ -1,10 +0,0 @@
1
- /// <reference types="node" />
2
- import { NvtrustWrapperConfig } from './validatorConfig';
3
- import { Challenge, NetworkType } from '@super-protocol/pki-common';
4
- import { Log } from '@super-protocol/pki-apps-common';
5
- export declare class ChallengeValidatorNvidia {
6
- private readonly log;
7
- private readonly config?;
8
- constructor(log: Log, config?: NvtrustWrapperConfig | undefined);
9
- validate(challenge: Challenge, userData: Buffer, networkType?: NetworkType): Promise<void>;
10
- }
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChallengeValidatorNvidia = 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 challengeProvider_1 = require("../challengeProvider");
7
- class ChallengeValidatorNvidia {
8
- log;
9
- config;
10
- constructor(log, config) {
11
- this.log = log;
12
- this.config = config;
13
- }
14
- async validate(challenge, userData, networkType) {
15
- this.log.debug(`NVIDIA validation networkType: ${networkType}`);
16
- if (!(0, pki_common_1.hasChallengeNvidiaToken)(challenge)) {
17
- return;
18
- }
19
- const tokenHash = challengeProvider_1.ChallengeNvidiaCCHelper.getTokenHash(challenge.nvidiaTokens);
20
- if (userData.length < 64) {
21
- throw new Error('userData must be at least 64 bytes');
22
- }
23
- const expectedHash = userData.slice(32, 64);
24
- const tokenHashHex = tokenHash.toString('hex');
25
- const expectedHashHex = expectedHash.toString('hex');
26
- this.log.debug(`NVIDIA tokenHash: ${tokenHashHex}, expectedHash: ${expectedHashHex}`);
27
- if (tokenHashHex !== expectedHashHex) {
28
- throw new Error('Nvidia hash included in the challenge does not match the hash of the nvidia token specified in the request');
29
- }
30
- const nvtrusWrapper = new sp_nvtrust_wrapper_1.NvtrustWrapper(this.config?.tmp ?? '/sp/nvtrust-tmp', this.config?.timeout ?? 60000);
31
- let nvidiaTokenValidationResult = {
32
- success: false,
33
- };
34
- try {
35
- nvidiaTokenValidationResult = await nvtrusWrapper.validateToken({
36
- device: sp_nvtrust_wrapper_1.NvidiaDeviceType.GPU,
37
- policy: sp_nvtrust_wrapper_1.defaultGPUpolicy,
38
- token: { jwt: challenge.nvidiaTokens.gpuToken },
39
- });
40
- if (nvidiaTokenValidationResult.success !== true) {
41
- throw new Error('Failed to verify Nvidia GPU token: validateToken returned success=false');
42
- }
43
- if (networkType === 'trusted') {
44
- const gpusInfo = sp_nvtrust_wrapper_1.NvtrustWrapper.extractGPUInfoFromToken({
45
- jwt: challenge.nvidiaTokens.gpuToken,
46
- });
47
- const debugGpuNumbers = gpusInfo.gpus
48
- .map((gpu, index) => ({ gpu, gpuNumber: index + 1 }))
49
- .filter(({ gpu }) => gpu.dbgStat === true)
50
- .map(({ gpuNumber }) => gpuNumber);
51
- const hasDebugEnabledGpu = debugGpuNumbers.length > 0;
52
- if (hasDebugEnabledGpu) {
53
- const debugGpuNumbersText = debugGpuNumbers.join(', ');
54
- throw new Error(`Trusted network does not allow NVIDIA GPUs with dbgStat=true. Debug enabled on GPU(s): ${debugGpuNumbersText}`);
55
- }
56
- }
57
- }
58
- catch (error) {
59
- if (error instanceof sp_nvtrust_wrapper_1.NvtrustWrapperCallError) {
60
- this.log.error(`NvtrustWrapperCallError: ${error.message}`);
61
- if (error.traceback?.trim()) {
62
- this.log.debug(`Traceback:\n${error.traceback}`);
63
- }
64
- const logEntries = Object.entries(error.logs ?? {});
65
- if (logEntries.length > 0) {
66
- this.log.debug('Logs from nvtrust wrapper:');
67
- for (const [fileName, logContent] of logEntries) {
68
- this.log.debug(`--- ${fileName} ---`);
69
- this.log.debug(String(logContent));
70
- }
71
- }
72
- }
73
- else {
74
- this.log.error(`Error during NVIDIA token validation: ${error}`);
75
- }
76
- throw error;
77
- }
78
- }
79
- }
80
- exports.ChallengeValidatorNvidia = ChallengeValidatorNvidia;
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yTnZpZGlhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvci9jaGFsbGVuZ2VWYWxpZGF0b3JOdmlkaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBTTRDO0FBRTVDLDJEQUlvQztBQUNwQyw0REFBK0Q7QUFHL0QsTUFBYSx3QkFBd0I7SUFFWjtJQUNBO0lBRnJCLFlBQ3FCLEdBQVEsRUFDUixNQUE2QjtRQUQ3QixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ1IsV0FBTSxHQUFOLE1BQU0sQ0FBdUI7SUFDL0MsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRLENBQ1YsU0FBb0IsRUFDcEIsUUFBZ0IsRUFDaEIsV0FBeUI7UUFFekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0NBQWtDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUEsb0NBQXVCLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLDJDQUF1QixDQUFDLFlBQVksQ0FDbEQsU0FBUyxDQUFDLFlBQVksQ0FDekIsQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDVixxQkFBcUIsWUFBWSxtQkFB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
@@ -1,14 +0,0 @@
1
- import { Challenge } from '@super-protocol/pki-common';
2
- import { Log } from '@super-protocol/pki-apps-common';
3
- import { ChallengeResult, ChallengeValidator } from './challengeValidator';
4
- import { SevValidationConfig } from './validatorConfig';
5
- export declare class ChallengeValidatorSevSnp implements ChallengeValidator {
6
- private readonly log;
7
- private measureInstance;
8
- private readonly sevTmp;
9
- private static instance;
10
- private readonly securityPolicy;
11
- static getInstance(log: Log, config?: SevValidationConfig): ChallengeValidatorSevSnp;
12
- private constructor();
13
- validate(challenge: Challenge): Promise<ChallengeResult>;
14
- }
@@ -1,137 +0,0 @@
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.ChallengeValidatorSevSnp = void 0;
27
- const path = __importStar(require("path"));
28
- const addons_tee_1 = require("@super-protocol/addons-tee");
29
- const pki_common_1 = require("@super-protocol/pki-common");
30
- const sdk_js_1 = require("@super-protocol/sdk-js");
31
- const schemas_1 = require("./schemas");
32
- class ChallengeValidatorSevSnp {
33
- log;
34
- measureInstance;
35
- sevTmp;
36
- static instance;
37
- securityPolicy;
38
- static getInstance(log, config) {
39
- if (!ChallengeValidatorSevSnp.instance) {
40
- ChallengeValidatorSevSnp.instance = new ChallengeValidatorSevSnp(log, config);
41
- }
42
- return ChallengeValidatorSevSnp.instance;
43
- }
44
- constructor(log, config) {
45
- this.log = log;
46
- this.log.debug(`SEV config: ${JSON.stringify(config)}`);
47
- this.sevTmp = config?.sevTmp ?? '/tmp';
48
- const cacheFolder = config?.cacheFolder ??
49
- path.join(this.sevTmp, 'snp-mrenclave-cache');
50
- let storageAccess;
51
- if (config?.storageAccess) {
52
- const { isValid } = (0, sdk_js_1.validateBySchema)(config.storageAccess, schemas_1.accessCredentialsSchema);
53
- if (!isValid) {
54
- throw new Error(`sev storageAccess is not valid!})`);
55
- }
56
- storageAccess = config.storageAccess;
57
- }
58
- if (config?.securityPolicy) {
59
- try {
60
- this.securityPolicy = addons_tee_1.SgxNative.SevSNP.parsePolicySet(config.securityPolicy);
61
- }
62
- catch (error) {
63
- this.log.error(`Failed to parse SEV-SNP security policy: ${error}`);
64
- throw new Error(`Invalid SEV-SNP security policy configuration: ${error}`);
65
- }
66
- }
67
- this.measureInstance = new addons_tee_1.SgxNative.SNPMrEnclaveCalculator({
68
- cacheFolder,
69
- vmRepo: config?.vmRepo,
70
- vmRepoOwner: config?.vmRepoOwner,
71
- releaseAsset: config?.releaseAsset,
72
- storageAccess,
73
- rmPrevCache: false,
74
- });
75
- }
76
- async validate(challenge) {
77
- switch (challenge.type) {
78
- case pki_common_1.ChallengeType.SEVSNP:
79
- try {
80
- let report;
81
- try {
82
- report = addons_tee_1.SgxNative.SevSNP.deserializeSNPReport(Buffer.from(challenge.serializedReportBase64, 'base64'));
83
- }
84
- catch (e) {
85
- this.log.error(`deserializeSNPReport returned error: ${e}`);
86
- throw e;
87
- }
88
- try {
89
- await addons_tee_1.SgxNative.SevSNP.verifyReport(report, {
90
- timeoutMs: 60000,
91
- tmpDirTemplate: `${this.sevTmp}/verify-`,
92
- });
93
- }
94
- catch (e) {
95
- this.log.error(`verifyReport returned error: ${e}`);
96
- throw e;
97
- }
98
- if (!report.snpReport?.rawReport) {
99
- throw new Error('Missing snpReport or rawReport');
100
- }
101
- try {
102
- if (this.securityPolicy) {
103
- await addons_tee_1.SgxNative.SevSNP.verifyPolicy(Buffer.from(report.snpReport?.rawReport), this.securityPolicy);
104
- }
105
- }
106
- catch (e) {
107
- this.log.error(`verifyPolicy returned error: ${e}`);
108
- throw e;
109
- }
110
- const userData = await addons_tee_1.SgxNative.SevSNP.getReportData(Buffer.from(report.snpReport.rawReport));
111
- let mrenclave;
112
- try {
113
- mrenclave =
114
- await this.measureInstance.getSingleCoreMrEnclave(report.snpReport);
115
- }
116
- catch (e) {
117
- this.log.error(`getSingleCoreMrEnclave returned error: ${e}`);
118
- throw e;
119
- }
120
- return {
121
- success: true,
122
- validatedUserData: Buffer.from(userData.slice(0, 64)),
123
- validatedId: mrenclave,
124
- };
125
- }
126
- catch (e) {
127
- return {
128
- success: false,
129
- error: e.message,
130
- };
131
- }
132
- }
133
- throw new Error('Method not implemented.');
134
- }
135
- }
136
- exports.ChallengeValidatorSevSnp = ChallengeValidatorSevSnp;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yU2V2U25wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvci9jaGFsbGVuZ2VWYWxpZGF0b3JTZXZTbnAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IsMkRBQXVEO0FBQ3ZELDJEQUFzRTtBQUl0RSxtREFBeUU7QUFDekUsdUNBQW9EO0FBRXBELE1BQWEsd0JBQXdCO0lBcUJaO0lBcEJiLGVBQWUsQ0FBbUM7SUFDekMsTUFBTSxDQUFTO0lBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQTJCO0lBQ2pDLGNBQWMsQ0FBa0M7SUFFMUQsTUFBTSxDQUFDLFdBQVcsQ0FDckIsR0FBUSxFQUNSLE1BQTRCO1FBRTVCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQyx3QkFBd0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSx3QkFBd0IsQ0FDNUQsR0FBRyxFQUNILE1BQU0sQ0FDVCxDQUFDO1FBQ04sQ0FBQztRQUVELE9BQU8sd0JBQXdCLENBQUMsUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUNxQixHQUFRLEVBQ3pCLE1BQTRCO1FBRFgsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUd6QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLE1BQU0sSUFBSSxNQUFNLENBQUM7UUFDdkMsTUFBTSxXQUFXLEdBQ2IsTUFBTSxFQUFFLFdBQVc7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFFbEQsSUFBSSxhQUF3QyxDQUFDO1FBQzdDLElBQUksTUFBTSxFQUFFLGFBQWEsRUFBRSxD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
@@ -1,8 +0,0 @@
1
- import { Challenge } from '@super-protocol/pki-common';
2
- import { ChallengeResult, ChallengeValidator } from './challengeValidator';
3
- import { Log } from '@super-protocol/pki-apps-common';
4
- export declare class ChallengeValidatorSgx implements ChallengeValidator {
5
- log: Log;
6
- private verifierService;
7
- validate(challenge: Challenge): Promise<ChallengeResult>;
8
- }
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ChallengeValidatorSgx = void 0;
13
- const pki_common_1 = require("@super-protocol/pki-common");
14
- const inversify_1 = require("inversify");
15
- const pki_apps_common_1 = require("@super-protocol/pki-apps-common");
16
- const addons_tee_1 = require("@super-protocol/addons-tee");
17
- const sdk_js_1 = require("@super-protocol/sdk-js");
18
- let ChallengeValidatorSgx = class ChallengeValidatorSgx {
19
- log = new pki_apps_common_1.MockLog();
20
- verifierService = new addons_tee_1.SgxNative.DcapQuoteVerifyService();
21
- async validate(challenge) {
22
- switch (challenge.type) {
23
- case pki_common_1.ChallengeType.SGXDCAP:
24
- const quote = Buffer.from(challenge.quoteBase64, 'base64');
25
- try {
26
- try {
27
- await this.verifierService.validateQuoteVerifierEnclave(quote);
28
- }
29
- catch (e) {
30
- this.log.debug(`validateQuoteVerifierEnclave returned error: ${e}`);
31
- if (!e.hasOwnProperty('criticalError') ||
32
- e.criticalError) {
33
- throw e;
34
- }
35
- }
36
- const parser = new sdk_js_1.TeeSgxParser();
37
- const parsedQuote = parser.parseQuote(quote);
38
- this.log.debug(`Parsed quote: ${JSON.stringify(parsedQuote)}`);
39
- const parsedReport = parser.parseReport(parsedQuote.report);
40
- const userData = parsedReport.userData;
41
- this.log.debug(`Parsed report: ${JSON.stringify(parsedReport)}`);
42
- const mrenclave = parsedReport.mrEnclave;
43
- const mrsigner = parsedReport.mrSigner;
44
- return {
45
- success: true,
46
- validatedUserData: Buffer.from(userData.slice(0, 32)),
47
- validatedId: Buffer.from(mrenclave),
48
- validatedCommonId: Buffer.from(mrsigner),
49
- };
50
- }
51
- catch (e) {
52
- return {
53
- success: false,
54
- error: e.message,
55
- };
56
- }
57
- }
58
- throw new Error('Method not implemented.');
59
- }
60
- };
61
- exports.ChallengeValidatorSgx = ChallengeValidatorSgx;
62
- __decorate([
63
- (0, inversify_1.inject)(pki_apps_common_1.CommonInjectable.Logger),
64
- __metadata("design:type", Object)
65
- ], ChallengeValidatorSgx.prototype, "log", void 0);
66
- exports.ChallengeValidatorSgx = ChallengeValidatorSgx = __decorate([
67
- (0, inversify_1.injectable)()
68
- ], ChallengeValidatorSgx);
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yU2d4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvci9jaGFsbGVuZ2VWYWxpZGF0b3JTZ3gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQXNFO0FBRXRFLHlDQUErQztBQUUvQyxxRUFJeUM7QUFDekMsMkRBQXVEO0FBQ3ZELG1EQUFzRDtBQUcvQyxJQUFNLHFCQUFxQixHQUEzQixNQUFNLHFCQUFxQjtJQUV2QixHQUFHLEdBQVEsSUFBSSx5QkFBTyxFQUFFLENBQUM7SUFFeEIsZUFBZSxHQUFHLElBQUksc0JBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBRWpFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBb0I7UUFDL0IsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsS0FBSywwQkFBYSxDQUFDLE9BQU87Z0JBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDO29CQUNELElBQUksQ0FBQzt3QkFDRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQ25ELEtBQUssQ0FDUixDQUFDO29CQUNOLENBQUM7b0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDVixnREFBZ0QsQ0FBQyxFQUFFLENBQ3RELENBQUM7d0JBQ0YsSUFDSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDOzRCQUNsQyxDQUFDLENBQUMsYUFBYSxFQUNqQixDQUFDOzRCQUNDLE1BQU0sQ0FBQyxDQUFDO3dCQUNaLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1YsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FDakQsQ0FBQztvQkFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDNUQsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1Ysa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FDbkQsQ0FBQztvQkFDRixNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUN6QyxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO29CQUN2QyxPQUFPO3dCQUNILE9BQU8sRUFBRSxJQUFJO3dCQUNiLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQ3JELFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDbkMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7cUJBQzNDLENBQUM7Z0JBQ04sQ0FBQztnQkFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO29CQUNkLE9BQU87d0JBQ0gsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPO3FCQUNuQixDQUFDO2dCQUNOLENBQUM7UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSixDQUFBO0FBckRZLHNEQUFxQjtBQUV2QjtJQUROLElBQUEsa0JBQU0sRUFBQyxrQ0FBZ0IsQ0FBQyxNQUFNLENBQUM7O2tEQUNBO2dDQUZ2QixxQkFBcUI7SUFEakMsSUFBQSxzQkFBVSxHQUFFO0dBQ0EscUJBQXFCLENBcURqQyJ9
@@ -1,8 +0,0 @@
1
- import { Challenge } from '@super-protocol/pki-common';
2
- import { ChallengeResult, ChallengeValidator } from './challengeValidator';
3
- import { Log } from '@super-protocol/pki-apps-common';
4
- export declare class ChallengeValidatorTdx implements ChallengeValidator {
5
- log: Log;
6
- private verifierService;
7
- validate(challenge: Challenge): Promise<ChallengeResult>;
8
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ChallengeValidatorTdx = void 0;
13
- const pki_common_1 = require("@super-protocol/pki-common");
14
- const inversify_1 = require("inversify");
15
- const addons_tee_1 = require("@super-protocol/addons-tee");
16
- const pki_apps_common_1 = require("@super-protocol/pki-apps-common");
17
- const sdk_js_1 = require("@super-protocol/sdk-js");
18
- let ChallengeValidatorTdx = class ChallengeValidatorTdx {
19
- log = new pki_apps_common_1.MockLog();
20
- verifierService = new addons_tee_1.SgxNative.DcapQuoteVerifyService();
21
- async validate(challenge) {
22
- switch (challenge.type) {
23
- case pki_common_1.ChallengeType.TDX:
24
- const quote = Buffer.from(challenge.quoteBase64, 'base64');
25
- try {
26
- try {
27
- await this.verifierService.validateQuoteVerifierEnclave(quote);
28
- }
29
- catch (e) {
30
- this.log.debug(`validateQuoteVerifierEnclave returned error: ${e}`);
31
- if (!e.hasOwnProperty('criticalError') ||
32
- e.criticalError) {
33
- throw e;
34
- }
35
- }
36
- const parser = new sdk_js_1.TeeTdxParser();
37
- const parsedQuote = parser.parseQuote(quote);
38
- this.log.debug(`Parsed quote: ${JSON.stringify(parsedQuote)}`);
39
- const parsedBody = parser.parseBody(parsedQuote.tdQuoteBody);
40
- const userData = parsedBody.reportData;
41
- this.log.debug(`Parsed report: ${JSON.stringify(parsedBody)}`);
42
- const mrenclave = sdk_js_1.TeeTdxParser.getMrEnclave(quote);
43
- return {
44
- success: true,
45
- validatedUserData: Buffer.from(userData.slice(0, 64)),
46
- validatedId: Buffer.from(mrenclave),
47
- };
48
- }
49
- catch (e) {
50
- return {
51
- success: false,
52
- error: e.message,
53
- };
54
- }
55
- }
56
- throw new Error('Method not implemented.');
57
- }
58
- };
59
- exports.ChallengeValidatorTdx = ChallengeValidatorTdx;
60
- __decorate([
61
- (0, inversify_1.inject)(pki_apps_common_1.CommonInjectable.Logger),
62
- __metadata("design:type", Object)
63
- ], ChallengeValidatorTdx.prototype, "log", void 0);
64
- exports.ChallengeValidatorTdx = ChallengeValidatorTdx = __decorate([
65
- (0, inversify_1.injectable)()
66
- ], ChallengeValidatorTdx);
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yVGR4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvci9jaGFsbGVuZ2VWYWxpZGF0b3JUZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQXNFO0FBRXRFLHlDQUErQztBQUMvQywyREFBdUQ7QUFFdkQscUVBSXlDO0FBQ3pDLG1EQUFzRDtBQUcvQyxJQUFNLHFCQUFxQixHQUEzQixNQUFNLHFCQUFxQjtJQUV2QixHQUFHLEdBQVEsSUFBSSx5QkFBTyxFQUFFLENBQUM7SUFFeEIsZUFBZSxHQUFHLElBQUksc0JBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBRWpFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBb0I7UUFDL0IsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsS0FBSywwQkFBYSxDQUFDLEdBQUc7Z0JBQ2xCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxDQUFDO29CQUNELElBQUksQ0FBQzt3QkFDRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQ25ELEtBQUssQ0FDUixDQUFDO29CQUNOLENBQUM7b0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQzt3QkFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDVixnREFBZ0QsQ0FBQyxFQUFFLENBQ3RELENBQUM7d0JBQ0YsSUFDSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDOzRCQUNsQyxDQUFDLENBQUMsYUFBYSxFQUNqQixDQUFDOzRCQUNDLE1BQU0sQ0FBQyxDQUFDO3dCQUNaLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFZLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQ1YsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FDakQsQ0FBQztvQkFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUMvQixXQUFXLENBQUMsV0FBVyxDQUMxQixDQUFDO29CQUNGLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNWLGtCQUFrQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQ2pELENBQUM7b0JBQ0YsTUFBTSxTQUFTLEdBQUcscUJBQVksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBRW5ELE9BQU87d0JBQ0gsT0FBTyxFQUFFLElBQUk7d0JBQ2IsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDckQsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO3FCQUN0QyxDQUFDO2dCQUNOLENBQUM7Z0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztvQkFDZCxPQUFPO3dCQUNILE9BQU8sRUFBRSxLQUFLO3dCQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTztxQkFDbkIsQ0FBQztnQkFDTixDQUFDO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0osQ0FBQTtBQXREWSxzREFBcUI7QUFFdkI7SUFETixJQUFBLGtCQUFNLEVBQUMsa0NBQWdCLENBQUMsTUFBTSxDQUFDOztrREFDQTtnQ0FGdkIscUJBQXFCO0lBRGpDLElBQUEsc0JBQVUsR0FBRTtHQUNBLHFCQUFxQixDQXNEakMifQ==
@@ -1,9 +0,0 @@
1
- import { Challenge } from '@super-protocol/pki-common';
2
- import { ChallengeResult, ChallengeValidator } from './challengeValidator';
3
- import { Log } from '@super-protocol/pki-apps-common';
4
- export declare class ChallengeValidatorToken implements ChallengeValidator {
5
- private readonly token;
6
- private readonly log;
7
- constructor(token: string, log: Log);
8
- validate(challenge: Challenge): Promise<ChallengeResult>;
9
- }
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChallengeValidatorToken = void 0;
4
- const pki_common_1 = require("@super-protocol/pki-common");
5
- class ChallengeValidatorToken {
6
- token;
7
- log;
8
- constructor(token, log) {
9
- this.token = token;
10
- this.log = log;
11
- }
12
- async validate(challenge) {
13
- switch (challenge.type) {
14
- case pki_common_1.ChallengeType.Token:
15
- try {
16
- if (challenge.token !== this.token) {
17
- throw new Error('Invalid token');
18
- }
19
- this.log.info(`token challenge validated successfully`);
20
- return {
21
- success: true,
22
- validatedUserData: Buffer.from(challenge.userDataBase64, 'base64'),
23
- validatedId: Buffer.alloc(0), // empty as we don't have id in token challenge
24
- };
25
- }
26
- catch (e) {
27
- this.log.error(`challengeValidatorToken returned error: ${e}`);
28
- return {
29
- success: false,
30
- error: e.message,
31
- };
32
- }
33
- }
34
- throw new Error('Method not implemented.');
35
- }
36
- }
37
- exports.ChallengeValidatorToken = ChallengeValidatorToken;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdG9yL2NoYWxsZW5nZVZhbGlkYXRvclRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUFzRTtBQUl0RSxNQUFhLHVCQUF1QjtJQUVYO0lBQ0E7SUFGckIsWUFDcUIsS0FBYSxFQUNiLEdBQVE7UUFEUixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsUUFBRyxHQUFILEdBQUcsQ0FBSztJQUMxQixDQUFDO0lBRUosS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFvQjtRQUMvQixRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixLQUFLLDBCQUFhLENBQUMsS0FBSztnQkFDcEIsSUFBSSxDQUFDO29CQUNELElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ3JDLENBQUM7b0JBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQztvQkFFeEQsT0FBTzt3QkFDSCxPQUFPLEVBQUUsSUFBSTt3QkFDYixpQkFBaUIsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUMxQixTQUFTLENBQUMsY0FBYyxFQUN4QixRQUFRLENBQ1g7d0JBQ0QsV0FBVyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsK0NBQStDO3FCQUNoRixDQUFDO2dCQUNOLENBQUM7Z0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztvQkFDZCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDViwyQ0FBMkMsQ0FBQyxFQUFFLENBQ2pELENBQUM7b0JBQ0YsT0FBTzt3QkFDSCxPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU87cUJBQ25CLENBQUM7Z0JBQ04sQ0FBQztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBbkNELDBEQW1DQyJ9
@@ -1,13 +0,0 @@
1
- export declare const accessCredentialsSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
2
- storageType: import("@sinclair/typebox").TLiteral<"STORJ">;
3
- credentials: import("@sinclair/typebox").TObject<{
4
- token: import("@sinclair/typebox").TString;
5
- }>;
6
- }>, import("@sinclair/typebox").TObject<{
7
- storageType: import("@sinclair/typebox").TLiteral<"S3">;
8
- credentials: import("@sinclair/typebox").TObject<{
9
- accessKeyId: import("@sinclair/typebox").TString;
10
- secretKey: import("@sinclair/typebox").TString;
11
- endpoint: import("@sinclair/typebox").TString;
12
- }>;
13
- }>]>;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.accessCredentialsSchema = void 0;
4
- const typebox_1 = require("@sinclair/typebox");
5
- exports.accessCredentialsSchema = typebox_1.Type.Union([
6
- typebox_1.Type.Object({
7
- storageType: typebox_1.Type.Literal('STORJ'),
8
- credentials: typebox_1.Type.Object({
9
- token: typebox_1.Type.String(),
10
- }),
11
- }),
12
- typebox_1.Type.Object({
13
- storageType: typebox_1.Type.Literal('S3'),
14
- credentials: typebox_1.Type.Object({
15
- accessKeyId: typebox_1.Type.String(),
16
- secretKey: typebox_1.Type.String(),
17
- endpoint: typebox_1.Type.String(),
18
- }),
19
- }),
20
- ]);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0b3Ivc2NoZW1hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBeUM7QUFFNUIsUUFBQSx1QkFBdUIsR0FBRyxjQUFJLENBQUMsS0FBSyxDQUFDO0lBQzlDLGNBQUksQ0FBQyxNQUFNLENBQUM7UUFDUixXQUFXLEVBQUUsY0FBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDbEMsV0FBVyxFQUFFLGNBQUksQ0FBQyxNQUFNLENBQUM7WUFDckIsS0FBSyxFQUFFLGNBQUksQ0FBQyxNQUFNLEVBQUU7U0FDdkIsQ0FBQztLQUNMLENBQUM7SUFDRixjQUFJLENBQUMsTUFBTSxDQUFDO1FBQ1IsV0FBVyxFQUFFLGNBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQy9CLFdBQVcsRUFBRSxjQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JCLFdBQVcsRUFBRSxjQUFJLENBQUMsTUFBTSxFQUFFO1lBQzFCLFNBQVMsRUFBRSxjQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3hCLFFBQVEsRUFBRSxjQUFJLENBQUMsTUFBTSxFQUFFO1NBQzFCLENBQUM7S0FDTCxDQUFDO0NBQ0wsQ0FBQyxDQUFDIn0=
@@ -1,13 +0,0 @@
1
- export interface SevValidationConfig {
2
- sevTmp?: string;
3
- cacheFolder?: string;
4
- vmRepoOwner?: string;
5
- vmRepo?: string;
6
- releaseAsset?: string;
7
- storageAccess?: Record<string, unknown>;
8
- securityPolicy?: Record<string, unknown>;
9
- }
10
- export interface NvtrustWrapperConfig {
11
- tmp?: string;
12
- timeout?: number;
13
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRvci92YWxpZGF0b3JDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9