@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,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyChallengeMrEnclaveSignature = void 0;
4
+ const attestation_common_1 = require("@super-protocol/attestation-common");
5
+ const pki_common_1 = require("@super-protocol/pki-common");
6
+ const challengeTypeToEvidenceType = (challengeType) => {
7
+ switch (challengeType) {
8
+ case pki_common_1.ChallengeType.TDX:
9
+ return attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_INTEL_TDX_QEMU;
10
+ case pki_common_1.ChallengeType.TDXGOOGLE:
11
+ return attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_INTEL_TDX_GCP;
12
+ case pki_common_1.ChallengeType.TDXAZURE:
13
+ return attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_INTEL_TDX_AZURE;
14
+ case pki_common_1.ChallengeType.SEVSNP:
15
+ return attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_AMD_SEV_SNP_QEMU;
16
+ case pki_common_1.ChallengeType.SEVSNPAZURE:
17
+ return attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_AMD_SEV_SNP_AZURE;
18
+ default:
19
+ throw new Error(`mrEnclave signature verification is not supported for challenge type ${challengeType}`);
20
+ }
21
+ };
22
+ /**
23
+ * Verifies that the mrEnclave of a TEE challenge is signed by Super Protocol
24
+ * and present in the trusted registry.
25
+ *
26
+ * @throws If the challenge type has no registry or the signature is missing or invalid.
27
+ */
28
+ const verifyChallengeMrEnclaveSignature = async (mrEnclave, challengeType) => {
29
+ await (0, attestation_common_1.verifyMrEnclaveSignature)(mrEnclave, challengeTypeToEvidenceType(challengeType));
30
+ };
31
+ exports.verifyChallengeMrEnclaveSignature = verifyChallengeMrEnclaveSignature;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXJFbmNsYXZlU2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21yRW5jbGF2ZVNpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyRUFHNEM7QUFDNUMsMkRBQTJEO0FBRTNELE1BQU0sMkJBQTJCLEdBQUcsQ0FDaEMsYUFBNEIsRUFDYixFQUFFO0lBQ2pCLFFBQVEsYUFBYSxFQUFFLENBQUM7UUFDcEIsS0FBSywwQkFBYSxDQUFDLEdBQUc7WUFDbEIsT0FBTyxvQ0FBZSxDQUFDLGdDQUFnQyxDQUFDO1FBQzVELEtBQUssMEJBQWEsQ0FBQyxTQUFTO1lBQ3hCLE9BQU8sb0NBQWUsQ0FBQywrQkFBK0IsQ0FBQztRQUMzRCxLQUFLLDBCQUFhLENBQUMsUUFBUTtZQUN2QixPQUFPLG9DQUFlLENBQUMsaUNBQWlDLENBQUM7UUFDN0QsS0FBSywwQkFBYSxDQUFDLE1BQU07WUFDckIsT0FBTyxvQ0FBZSxDQUFDLGtDQUFrQyxDQUFDO1FBQzlELEtBQUssMEJBQWEsQ0FBQyxXQUFXO1lBQzFCLE9BQU8sb0NBQWUsQ0FBQyxtQ0FBbUMsQ0FBQztRQUMvRDtZQUNJLE1BQU0sSUFBSSxLQUFLLENBQ1gsd0VBQXdFLGFBQWEsRUFBRSxDQUMxRixDQUFDO0lBQ1YsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0ksTUFBTSxpQ0FBaUMsR0FBRyxLQUFLLEVBQ2xELFNBQWlCLEVBQ2pCLGFBQTRCLEVBQ2YsRUFBRTtJQUNmLE1BQU0sSUFBQSw2Q0FBd0IsRUFDMUIsU0FBUyxFQUNULDJCQUEyQixDQUFDLGFBQWEsQ0FBQyxDQUM3QyxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBUlcsUUFBQSxpQ0FBaUMscUNBUTVDIn0=
@@ -0,0 +1,6 @@
1
+ import { Log } from '@super-protocol/pki-common';
2
+ export declare const validateClientCertificateChain: (certChainPem: string, rootCaPem: string, log?: Log) => Promise<{
3
+ isValid: boolean;
4
+ errorMessage?: string;
5
+ leafCertPem?: string;
6
+ }>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateClientCertificateChain = void 0;
4
+ const pki_common_1 = require("@super-protocol/pki-common");
5
+ const sdk_js_1 = require("@super-protocol/sdk-js");
6
+ const validateClientCertificateChain = async (certChainPem, rootCaPem, log) => {
7
+ try {
8
+ const { isValid, errorMessage } = await sdk_js_1.CertificatesHelper.validateCertChain(certChainPem, rootCaPem);
9
+ if (!isValid) {
10
+ const message = errorMessage || 'Certificate chain validation failed';
11
+ log?.warn('Certificate validation failed', { error: message });
12
+ return {
13
+ isValid: false,
14
+ errorMessage: message,
15
+ };
16
+ }
17
+ // Sort certificates from leaf to root to get leaf certificate
18
+ const sortedCertPems = (0, pki_common_1.sortCertsFromLeafToRootWrapper)(certChainPem, (pem) => sdk_js_1.CertificatesHelper.sortCertsFromLeafToRoot(pem).map((c) => sdk_js_1.CertificatesHelper.derToPem(c.cert.toSchema().toBER(false))));
19
+ if (sortedCertPems.length === 0) {
20
+ const message = 'No certificates found in chain';
21
+ log?.warn('Certificate validation failed', { error: message });
22
+ return {
23
+ isValid: false,
24
+ errorMessage: message,
25
+ };
26
+ }
27
+ // First certificate after sorting is leaf
28
+ const leafCertPem = sortedCertPems[0];
29
+ // Check for OID_CUSTOM_EXTENSION_CHALLENGE_VALIDATED in leaf certificate
30
+ const challengeValidated = sdk_js_1.CertificatesHelper.getExtensionValue(leafCertPem, pki_common_1.OID_CUSTOM_EXTENSION_CHALLENGE_VALIDATED);
31
+ if (!challengeValidated) {
32
+ const message = 'Certificate is missing challenge validation extension';
33
+ log?.warn('Certificate validation failed', { error: message });
34
+ return {
35
+ isValid: false,
36
+ errorMessage: message,
37
+ };
38
+ }
39
+ return { isValid: true, leafCertPem };
40
+ }
41
+ catch (error) {
42
+ log?.error('Error validating certificate', {
43
+ error: error.message,
44
+ });
45
+ return {
46
+ isValid: false,
47
+ errorMessage: `Certificate validation error: ${error.message}`,
48
+ };
49
+ }
50
+ };
51
+ exports.validateClientCertificateChain = validateClientCertificateChain;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhcm1DZXJ0VmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zd2FybUNlcnRWYWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUlvQztBQUNwQyxtREFBNEQ7QUFFckQsTUFBTSw4QkFBOEIsR0FBRyxLQUFLLEVBQy9DLFlBQW9CLEVBQ3BCLFNBQWlCLEVBQ2pCLEdBQVMsRUFLVixFQUFFO0lBQ0QsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FDM0IsTUFBTSwyQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFeEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsTUFBTSxPQUFPLEdBQ1QsWUFBWSxJQUFJLHFDQUFxQyxDQUFDO1lBQzFELEdBQUcsRUFBRSxJQUFJLENBQUMsK0JBQStCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMvRCxPQUFPO2dCQUNILE9BQU8sRUFBRSxLQUFLO2dCQUNkLFlBQVksRUFBRSxPQUFPO2FBQ3hCLENBQUM7UUFDTixDQUFDO1FBRUQsOERBQThEO1FBQzlELE1BQU0sY0FBYyxHQUFHLElBQUEsMkNBQThCLEVBQ2pELFlBQVksRUFDWixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ0osMkJBQWtCLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEQsMkJBQWtCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzlELENBQ1IsQ0FBQztRQUVGLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLE9BQU8sR0FBRyxnQ0FBZ0MsQ0FBQztZQUNqRCxHQUFHLEVBQUUsSUFBSSxDQUFDLCtCQUErQixFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDL0QsT0FBTztnQkFDSCxPQUFPLEVBQUUsS0FBSztnQkFDZCxZQUFZLEVBQUUsT0FBTzthQUN4QixDQUFDO1FBQ04sQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEMseUVBQXlFO1FBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsMkJBQWtCLENBQUMsaUJBQWlCLENBQzNELFdBQVcsRUFDWCxxREFBd0MsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sT0FBTyxHQUNULHVEQUF1RCxDQUFDO1lBQzVELEdBQUcsRUFBRSxJQUFJLENBQUMsK0JBQStCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMvRCxPQUFPO2dCQUNILE9BQU8sRUFBRSxLQUFLO2dCQUNkLFlBQVksRUFBRSxPQUFPO2FBQ3hCLENBQUM7UUFDTixDQUFDO1FBQ0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDbEIsR0FBRyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsRUFBRTtZQUN2QyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNILE9BQU8sRUFBRSxLQUFLO1lBQ2QsWUFBWSxFQUFFLGlDQUFpQyxLQUFLLENBQUMsT0FBTyxFQUFFO1NBQ2pFLENBQUM7SUFDTixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBckVXLFFBQUEsOEJBQThCLGtDQXFFekMifQ==
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@super-protocol/pki-attestation-engine",
3
+ "version": "0.0.0-nvidia-local-verifier",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "directories": {
12
+ "lib": "dist"
13
+ },
14
+ "scripts": {
15
+ "build": "tsc -b",
16
+ "lint": "eslint --max-warnings=0 src",
17
+ "lint:fix": "eslint --fix src"
18
+ },
19
+ "author": "Super Protocol",
20
+ "license": "ISC",
21
+ "dependencies": {
22
+ "@sinclair/typebox": "0.33.22",
23
+ "@super-protocol/addons-tee": "^4.2.0",
24
+ "@super-protocol/attestation-common": "^0.3.1",
25
+ "@super-protocol/attestation-wasm": "^0.3.0",
26
+ "@super-protocol/pki-common": "0.0.0-nvidia-local-verifier",
27
+ "@super-protocol/sp-nvtrust-wrapper": "0.0.0-nvidia-local-verifier"
28
+ },
29
+ "peerDependencies": {
30
+ "@super-protocol/sdk-js": "*"
31
+ }
32
+ }