@super-protocol/pki-attestation-engine 5.1.0-beta3 → 5.1.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 (30) hide show
  1. package/dist/attestationType.d.ts +1 -1
  2. package/dist/attestationType.js +7 -4
  3. package/dist/azure.d.ts +40 -0
  4. package/dist/azure.js +128 -0
  5. package/dist/certificateGenerator.js +2 -1
  6. package/dist/challengeProvider/challengeNvidiaCCHelper.js +1 -7
  7. package/dist/challengeProvider/challengeProviderAzure.d.ts +9 -0
  8. package/dist/challengeProvider/challengeProviderAzure.js +54 -0
  9. package/dist/challengeProvider/index.d.ts +1 -1
  10. package/dist/challengeProvider/index.js +2 -2
  11. package/dist/challengeValidator/challengeValidatorAzure.d.ts +29 -0
  12. package/dist/challengeValidator/challengeValidatorAzure.js +67 -0
  13. package/dist/challengeValidator/index.d.ts +2 -1
  14. package/dist/challengeValidator/index.js +9 -4
  15. package/dist/challengeValidator/validatorConfig.d.ts +5 -0
  16. package/dist/challengeValidator/wasmVerificationPolicy.d.ts +60 -0
  17. package/dist/challengeValidator/wasmVerificationPolicy.js +123 -0
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.js +3 -3
  20. package/dist/mrEnclaveSignature.d.ts +9 -0
  21. package/dist/mrEnclaveSignature.js +32 -0
  22. package/package.json +6 -4
  23. package/dist/azure/detectAzureTdx.d.ts +0 -3
  24. package/dist/azure/detectAzureTdx.js +0 -87
  25. package/dist/azure/tdxAzureEvidence.d.ts +0 -16
  26. package/dist/azure/tdxAzureEvidence.js +0 -207
  27. package/dist/challengeProvider/challengeProviderTdxAzure.d.ts +0 -8
  28. package/dist/challengeProvider/challengeProviderTdxAzure.js +0 -66
  29. package/dist/challengeValidator/challengeValidatorTdxAzure.d.ts +0 -7
  30. package/dist/challengeValidator/challengeValidatorTdxAzure.js +0 -37
@@ -1,66 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChallengeProviderTdxAzure = void 0;
4
- const child_process_1 = require("child_process");
5
- const util_1 = require("util");
6
- const challengeNvidiaCCHelper_1 = require("./challengeNvidiaCCHelper");
7
- const pki_common_1 = require("@super-protocol/pki-common");
8
- const tdxAzureEvidence_1 = require("../azure/tdxAzureEvidence");
9
- const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
10
- class ChallengeProviderTdxAzure {
11
- logger;
12
- constructor(logger) {
13
- this.logger = logger;
14
- }
15
- async generateChallenge(userData, networkID) {
16
- const { challengeData, nvidiaTokens } = await challengeNvidiaCCHelper_1.ChallengeNvidiaCCHelper.getTokenAndCombinedChallengeData(userData, this.logger);
17
- const bin = process.env.AZURE_GUEST_ATTEST ?? 'azure-guest-attest';
18
- const padded = Buffer.alloc(64);
19
- challengeData.copy(padded);
20
- const jsonArgs = ['guest-attest', '--provider', 'maa', '--json'];
21
- const execOpts = {
22
- timeout: 30000,
23
- maxBuffer: 4 * 1024 * 1024,
24
- };
25
- let stdout;
26
- try {
27
- const result = await execFileAsync(bin, [
28
- ...jsonArgs,
29
- '--client-payload',
30
- JSON.stringify({
31
- 'user-data': padded.toString('base64'),
32
- }),
33
- ], execOpts);
34
- stdout = result.stdout;
35
- }
36
- catch (clientPayloadError) {
37
- try {
38
- const result = await execFileAsync(bin, [
39
- ...jsonArgs,
40
- '--user-data',
41
- `hex:${padded.toString('hex')}`,
42
- ], execOpts);
43
- stdout = result.stdout;
44
- }
45
- catch {
46
- throw new Error(`azure-guest-attest failed (${bin}): ${clientPayloadError.stderr || clientPayloadError.message}`);
47
- }
48
- }
49
- const jsonStart = stdout.indexOf('{');
50
- if (jsonStart < 0) {
51
- throw new Error('azure-guest-attest returned no JSON');
52
- }
53
- const parsed = JSON.parse(stdout.slice(jsonStart));
54
- if (!parsed.passed || typeof parsed.token !== 'string') {
55
- throw new Error(`Azure MAA guest attestation failed: ${parsed.error || 'no token'}`);
56
- }
57
- return {
58
- type: pki_common_1.ChallengeType.TDXAZURE,
59
- evidenceBase64: (0, tdxAzureEvidence_1.encodeTdxAzureEvidence)(parsed.token).toString('base64'),
60
- nvidiaTokens,
61
- networkID,
62
- };
63
- }
64
- }
65
- exports.ChallengeProviderTdxAzure = ChallengeProviderTdxAzure;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJUZHhBenVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFsbGVuZ2VQcm92aWRlci9jaGFsbGVuZ2VQcm92aWRlclRkeEF6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUF5QztBQUN6QywrQkFBaUM7QUFDakMsdUVBQW9FO0FBRXBFLDJEQUEyRTtBQUMzRSxnRUFBbUU7QUFFbkUsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBUyxFQUFDLHdCQUFRLENBQUMsQ0FBQztBQUUxQyxNQUFhLHlCQUF5QjtJQUNOO0lBQTVCLFlBQTRCLE1BQVk7UUFBWixXQUFNLEdBQU4sTUFBTSxDQUFNO0lBQUcsQ0FBQztJQUU1QyxLQUFLLENBQUMsaUJBQWlCLENBQ25CLFFBQWdCLEVBQ2hCLFNBQWtCO1FBRWxCLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQ2pDLE1BQU0saURBQXVCLENBQUMsZ0NBQWdDLENBQzFELFFBQVEsRUFDUixJQUFJLENBQUMsTUFBTSxDQUNkLENBQUM7UUFFTixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLG9CQUFvQixDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxDQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sUUFBUSxHQUFHO1lBQ2IsT0FBTyxFQUFFLEtBQU07WUFDZixTQUFTLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJO1NBQzdCLENBQUM7UUFFRixJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGFBQWEsQ0FDOUIsR0FBRyxFQUNIO2dCQUNJLEdBQUcsUUFBUTtnQkFDWCxrQkFBa0I7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUM7b0JBQ1gsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2lCQUN6QyxDQUFDO2FBQ0wsRUFDRCxRQUFRLENBQ1gsQ0FBQztZQUNGLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzNCLENBQUM7UUFBQyxPQUFPLGtCQUF1QixFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUM5QixHQUFHLEVBQ0g7b0JBQ0ksR0FBRyxRQUFRO29CQUNYLGFBQWE7b0JBQ2IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUNsQyxFQUNELFFBQVEsQ0FDWCxDQUFDO2dCQUNGLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQzNCLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ0wsTUFBTSxJQUFJLEtBQUssQ0FDWCw4QkFBOEIsR0FBRyxNQUM3QixrQkFBa0IsQ0FBQyxNQUFNLElBQUksa0JBQWtCLENBQUMsT0FDcEQsRUFBRSxDQUNMLENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBSWhELENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FDWCx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FDdEUsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPO1lBQ0gsSUFBSSxFQUFFLDBCQUFhLENBQUMsUUFBUTtZQUM1QixjQUFjLEVBQUUsSUFBQSx5Q0FBc0IsRUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUN6RCxRQUFRLENBQ1g7WUFDRCxZQUFZO1lBQ1osU0FBUztTQUNaLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFqRkQsOERBaUZDIn0=
@@ -1,7 +0,0 @@
1
- import { Challenge, Log } from '@super-protocol/pki-common';
2
- import { ChallengeResult, ChallengeValidator } from './challengeValidator';
3
- export declare class ChallengeValidatorTdxAzure implements ChallengeValidator {
4
- private readonly log;
5
- constructor(log: Log);
6
- validate(challenge: Challenge): Promise<ChallengeResult>;
7
- }
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChallengeValidatorTdxAzure = void 0;
4
- const pki_common_1 = require("@super-protocol/pki-common");
5
- const tdxAzureEvidence_1 = require("../azure/tdxAzureEvidence");
6
- class ChallengeValidatorTdxAzure {
7
- log;
8
- constructor(log) {
9
- this.log = log;
10
- }
11
- async validate(challenge) {
12
- if (challenge.type !== pki_common_1.ChallengeType.TDXAZURE) {
13
- throw new Error('Method not implemented.');
14
- }
15
- try {
16
- const evidence = (0, tdxAzureEvidence_1.parseTdxAzureEvidence)(Buffer.from(challenge.evidenceBase64, 'base64'));
17
- const claims = await (0, tdxAzureEvidence_1.verifyMaaJwt)(evidence.token);
18
- const { userData, mrenclave } = (0, tdxAzureEvidence_1.validateAzureTdxClaims)(claims);
19
- this.log.debug('Validated tdx-azure MAA claims', {
20
- mrenclaveHex: mrenclave.toString('hex'),
21
- });
22
- return {
23
- success: true,
24
- validatedUserData: userData,
25
- validatedId: mrenclave,
26
- };
27
- }
28
- catch (e) {
29
- return {
30
- success: false,
31
- error: e.message,
32
- };
33
- }
34
- }
35
- }
36
- exports.ChallengeValidatorTdxAzure = ChallengeValidatorTdxAzure;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yVGR4QXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlVmFsaWRhdG9yL2NoYWxsZW5nZVZhbGlkYXRvclRkeEF6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUEyRTtBQUUzRSxnRUFJbUM7QUFFbkMsTUFBYSwwQkFBMEI7SUFDTjtJQUE3QixZQUE2QixHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztJQUFHLENBQUM7SUFFekMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFvQjtRQUMvQixJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssMEJBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLElBQUEsd0NBQXFCLEVBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsQ0FDbEQsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSwrQkFBWSxFQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEseUNBQXNCLEVBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUU7Z0JBQzdDLFlBQVksRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQzthQUMxQyxDQUFDLENBQUM7WUFDSCxPQUFPO2dCQUNILE9BQU8sRUFBRSxJQUFJO2dCQUNiLGlCQUFpQixFQUFFLFFBQVE7Z0JBQzNCLFdBQVcsRUFBRSxTQUFTO2FBQ3pCLENBQUM7UUFDTixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNkLE9BQU87Z0JBQ0gsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPO2FBQ25CLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBN0JELGdFQTZCQyJ9