@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,4 +1,4 @@
1
1
  import { ChallengeType } from '@super-protocol/pki-common';
2
- export type DetectAttestationType = ChallengeType.TDX | ChallengeType.TDXGOOGLE | ChallengeType.TDXAZURE | ChallengeType.SEVSNP | ChallengeType.Untrusted;
2
+ export type DetectAttestationType = ChallengeType.TDX | ChallengeType.TDXGOOGLE | ChallengeType.TDXAZURE | ChallengeType.SEVSNP | ChallengeType.SEVSNPAZURE | ChallengeType.Untrusted;
3
3
  export declare const isGoogleCloudVm: () => Promise<boolean>;
4
4
  export declare const detectAttestationType: () => Promise<DetectAttestationType>;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.detectAttestationType = exports.isGoogleCloudVm = void 0;
4
4
  const pki_common_1 = require("@super-protocol/pki-common");
5
5
  const fs_1 = require("fs");
6
- const detectAzureTdx_1 = require("./azure/detectAzureTdx");
6
+ const azure_1 = require("./azure");
7
7
  const GCP_METADATA_URL = 'http://169.254.169.254/computeMetadata/v1/instance/id';
8
8
  const GCP_METADATA_TIMEOUT_MS = 500;
9
9
  const isGoogleCloudVm = async () => {
@@ -27,8 +27,11 @@ const isGoogleCloudVm = async () => {
27
27
  exports.isGoogleCloudVm = isGoogleCloudVm;
28
28
  const detectAttestationType = async () => {
29
29
  try {
30
- if (await (0, detectAzureTdx_1.isAzureTdxVm)()) {
31
- return pki_common_1.ChallengeType.TDXAZURE;
30
+ // Must run before the device checks: on Azure the Hyper-V
31
+ // isolation type takes precedence over /dev/sev-guest.
32
+ const azureType = (0, azure_1.detectAzureAttestationType)();
33
+ if (azureType) {
34
+ return azureType;
32
35
  }
33
36
  const tdxPath = '/dev/tdx_guest';
34
37
  const sevPath = '/dev/sev-guest';
@@ -55,4 +58,4 @@ const detectAttestationType = async () => {
55
58
  return pki_common_1.ChallengeType.Untrusted;
56
59
  };
57
60
  exports.detectAttestationType = detectAttestationType;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25UeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2F0dGVzdGF0aW9uVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBMkQ7QUFDM0QsMkJBQTBDO0FBRTFDLDJEQUFzRDtBQVN0RCxNQUFNLGdCQUFnQixHQUNsQix1REFBdUQsQ0FBQztBQUM1RCxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUU3QixNQUFNLGVBQWUsR0FBRyxLQUFLLElBQXNCLEVBQUU7SUFDeEQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFDM0MsT0FBTyxFQUFFO2dCQUNMLGlCQUFpQixFQUFFLFFBQVE7YUFDOUI7WUFDRCxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztTQUN2RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFsQlcsUUFBQSxlQUFlLG1CQWtCMUI7QUFFSyxNQUFNLHFCQUFxQixHQUM5QixLQUFLLElBQW9DLEVBQUU7SUFDdkMsSUFBSSxDQUFDO1FBQ0QsSUFBSSxNQUFNLElBQUEsNkJBQVksR0FBRSxFQUFFLENBQUM7WUFDdkIsT0FBTywwQkFBYSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFFakMsSUFBSSxJQUFBLGVBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUEsYUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLE1BQU0sSUFBQSx1QkFBZSxHQUFFLENBQUM7b0JBQzVCLENBQUMsQ0FBQywwQkFBYSxDQUFDLFNBQVM7b0JBQ3pCLENBQUMsQ0FBQywwQkFBYSxDQUFDLEdBQUcsQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBQSxlQUFVLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFBLGFBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxNQUFNLElBQUEsdUJBQWUsR0FBRSxDQUFDO29CQUM1QixDQUFDLENBQUMsMEJBQWEsQ0FBQyxTQUFTO29CQUN6QixDQUFDLENBQUMsMEJBQWEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsb0RBQW9EO0lBQ3hELENBQUM7SUFFRCxPQUFPLDBCQUFhLENBQUMsU0FBUyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQWhDTyxRQUFBLHFCQUFxQix5QkFnQzVCIn0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25UeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2F0dGVzdGF0aW9uVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBMkQ7QUFDM0QsMkJBQTBDO0FBQzFDLG1DQUFxRDtBQVVyRCxNQUFNLGdCQUFnQixHQUNsQix1REFBdUQsQ0FBQztBQUM1RCxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUU3QixNQUFNLGVBQWUsR0FBRyxLQUFLLElBQXNCLEVBQUU7SUFDeEQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFDM0MsT0FBTyxFQUFFO2dCQUNMLGlCQUFpQixFQUFFLFFBQVE7YUFDOUI7WUFDRCxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztTQUN2RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFsQlcsUUFBQSxlQUFlLG1CQWtCMUI7QUFFSyxNQUFNLHFCQUFxQixHQUM5QixLQUFLLElBQW9DLEVBQUU7SUFDdkMsSUFBSSxDQUFDO1FBQ0QsMERBQTBEO1FBQzFELHVEQUF1RDtRQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFBLGtDQUEwQixHQUFFLENBQUM7UUFDL0MsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLE9BQU8sU0FBUyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUVqQyxJQUFJLElBQUEsZUFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBQSxhQUFRLEVBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsTUFBTSxJQUFBLHVCQUFlLEdBQUUsQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLDBCQUFhLENBQUMsU0FBUztvQkFDekIsQ0FBQyxDQUFDLDBCQUFhLENBQUMsR0FBRyxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFBLGVBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUEsYUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLE1BQU0sSUFBQSx1QkFBZSxHQUFFLENBQUM7b0JBQzVCLENBQUMsQ0FBQywwQkFBYSxDQUFDLFNBQVM7b0JBQ3pCLENBQUMsQ0FBQywwQkFBYSxDQUFDLE1BQU0sQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxvREFBb0Q7SUFDeEQsQ0FBQztJQUVELE9BQU8sMEJBQWEsQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBbkNPLFFBQUEscUJBQXFCLHlCQW1DNUIifQ==
@@ -0,0 +1,40 @@
1
+ import { ChallengeType } from '@super-protocol/pki-common';
2
+ export type AzureAttestationType = ChallengeType.TDXAZURE | ChallengeType.SEVSNPAZURE;
3
+ export declare enum HvIsolationType {
4
+ None = 0,
5
+ VBS = 1,
6
+ SNP = 2,
7
+ TDX = 3
8
+ }
9
+ export type CpuidRegisters = [
10
+ eax: number,
11
+ ebx: number,
12
+ ecx: number,
13
+ edx: number
14
+ ];
15
+ /**
16
+ * Returns the Hyper-V isolation type from the interface leaf (0x40000000)
17
+ * and the isolation config leaf (0x4000000C), or undefined when this is not
18
+ * a Hyper-V guest.
19
+ */
20
+ export declare const parseHvIsolationType: (interfaceRegs: CpuidRegisters | undefined, isolationRegs: CpuidRegisters | undefined) => number | undefined;
21
+ /**
22
+ * Azure confidential VMs run behind a paravisor, so the guest is given none
23
+ * of the usual TEE interfaces: no /dev/tdx_guest, no TSM provider, no
24
+ * tdx_guest CPUID flag, no TDEL ACPI table, and CPUID leaf 0x21 reads back as
25
+ * zeroes. The instance metadata service does not name the TEE either. What
26
+ * the hypervisor does report is its isolation type, which is exactly what the
27
+ * kernel itself uses to decide it is running under TDX or SEV-SNP.
28
+ */
29
+ export declare const getHvIsolationType: () => number | undefined;
30
+ export declare const parseIsAzureChassisAssetTag: (tag: string) => boolean;
31
+ export declare const isAzureVm: () => boolean;
32
+ /**
33
+ * Azure confidential VM and the TEE backing it, detected offline: no
34
+ * network, no timeouts.
35
+ *
36
+ * NOT verified on a live SEV-SNP guest: the isolation type is read exactly
37
+ * like the TDX one, but only the TDX value has been confirmed against real
38
+ * hardware so far.
39
+ */
40
+ export declare const detectAzureAttestationType: () => AzureAttestationType | undefined;
package/dist/azure.js ADDED
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectAzureAttestationType = exports.isAzureVm = exports.parseIsAzureChassisAssetTag = exports.getHvIsolationType = exports.parseHvIsolationType = exports.HvIsolationType = void 0;
4
+ const pki_common_1 = require("@super-protocol/pki-common");
5
+ const fs_1 = require("fs");
6
+ // Azure stamps every VM with this chassis asset tag, so the platform can be
7
+ // identified offline, without the instance metadata service.
8
+ const DMI_CHASSIS_ASSET_TAG = '/sys/class/dmi/id/chassis_asset_tag';
9
+ const AZURE_CHASSIS_ASSET_TAG = '7783-7084-3265-9085-8269-3286-77';
10
+ // Hyper-V reports the TEE backing an isolated guest through its own CPUID
11
+ // leaves. This is what the kernel reads (hv_get_isolation_type()), and on
12
+ // Azure it is the only precise source: see getHvIsolationType() below.
13
+ const CPUID_DEVICE = '/dev/cpu/0/cpuid';
14
+ const HV_CPUID_INTERFACE = 0x40000000;
15
+ const HV_CPUID_ISOLATION_CONFIG = 0x4000000c;
16
+ const HV_SIGNATURE = 'Microsoft Hv';
17
+ const HV_ISOLATION_TYPE_MASK = 0xf;
18
+ var HvIsolationType;
19
+ (function (HvIsolationType) {
20
+ HvIsolationType[HvIsolationType["None"] = 0] = "None";
21
+ HvIsolationType[HvIsolationType["VBS"] = 1] = "VBS";
22
+ HvIsolationType[HvIsolationType["SNP"] = 2] = "SNP";
23
+ HvIsolationType[HvIsolationType["TDX"] = 3] = "TDX";
24
+ })(HvIsolationType || (exports.HvIsolationType = HvIsolationType = {}));
25
+ /** Read one CPUID leaf through /dev/cpu/0/cpuid (needs CONFIG_X86_CPUID). */
26
+ const readCpuid = (leaf, subleaf = 0) => {
27
+ let fd;
28
+ try {
29
+ fd = (0, fs_1.openSync)(CPUID_DEVICE, 'r');
30
+ const buffer = Buffer.alloc(16);
31
+ const position = (BigInt(subleaf) << 32n) | BigInt(leaf);
32
+ if ((0, fs_1.readSync)(fd, buffer, 0, 16, position) !== 16) {
33
+ return undefined;
34
+ }
35
+ return [
36
+ buffer.readUInt32LE(0),
37
+ buffer.readUInt32LE(4),
38
+ buffer.readUInt32LE(8),
39
+ buffer.readUInt32LE(12),
40
+ ];
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ finally {
46
+ if (fd !== undefined) {
47
+ try {
48
+ (0, fs_1.closeSync)(fd);
49
+ }
50
+ catch {
51
+ // ignore
52
+ }
53
+ }
54
+ }
55
+ };
56
+ /**
57
+ * Returns the Hyper-V isolation type from the interface leaf (0x40000000)
58
+ * and the isolation config leaf (0x4000000C), or undefined when this is not
59
+ * a Hyper-V guest.
60
+ */
61
+ const parseHvIsolationType = (interfaceRegs, isolationRegs) => {
62
+ if (!interfaceRegs) {
63
+ return undefined;
64
+ }
65
+ const [maxLeaf, ebx, ecx, edx] = interfaceRegs;
66
+ const signature = Buffer.alloc(12);
67
+ signature.writeUInt32LE(ebx, 0);
68
+ signature.writeUInt32LE(ecx, 4);
69
+ signature.writeUInt32LE(edx, 8);
70
+ if (signature.toString('latin1') !== HV_SIGNATURE) {
71
+ return undefined;
72
+ }
73
+ if (maxLeaf < HV_CPUID_ISOLATION_CONFIG || !isolationRegs) {
74
+ return undefined;
75
+ }
76
+ return isolationRegs[1] & HV_ISOLATION_TYPE_MASK;
77
+ };
78
+ exports.parseHvIsolationType = parseHvIsolationType;
79
+ /**
80
+ * Azure confidential VMs run behind a paravisor, so the guest is given none
81
+ * of the usual TEE interfaces: no /dev/tdx_guest, no TSM provider, no
82
+ * tdx_guest CPUID flag, no TDEL ACPI table, and CPUID leaf 0x21 reads back as
83
+ * zeroes. The instance metadata service does not name the TEE either. What
84
+ * the hypervisor does report is its isolation type, which is exactly what the
85
+ * kernel itself uses to decide it is running under TDX or SEV-SNP.
86
+ */
87
+ const getHvIsolationType = () => {
88
+ const interfaceRegs = readCpuid(HV_CPUID_INTERFACE);
89
+ if (!interfaceRegs) {
90
+ return undefined;
91
+ }
92
+ return (0, exports.parseHvIsolationType)(interfaceRegs, readCpuid(HV_CPUID_ISOLATION_CONFIG));
93
+ };
94
+ exports.getHvIsolationType = getHvIsolationType;
95
+ const parseIsAzureChassisAssetTag = (tag) => tag.replace(/\0/g, '').trim() === AZURE_CHASSIS_ASSET_TAG;
96
+ exports.parseIsAzureChassisAssetTag = parseIsAzureChassisAssetTag;
97
+ const isAzureVm = () => {
98
+ try {
99
+ return (0, exports.parseIsAzureChassisAssetTag)((0, fs_1.readFileSync)(DMI_CHASSIS_ASSET_TAG, 'latin1'));
100
+ }
101
+ catch {
102
+ return false;
103
+ }
104
+ };
105
+ exports.isAzureVm = isAzureVm;
106
+ /**
107
+ * Azure confidential VM and the TEE backing it, detected offline: no
108
+ * network, no timeouts.
109
+ *
110
+ * NOT verified on a live SEV-SNP guest: the isolation type is read exactly
111
+ * like the TDX one, but only the TDX value has been confirmed against real
112
+ * hardware so far.
113
+ */
114
+ const detectAzureAttestationType = () => {
115
+ if (!(0, exports.isAzureVm)()) {
116
+ return undefined;
117
+ }
118
+ switch ((0, exports.getHvIsolationType)()) {
119
+ case HvIsolationType.TDX:
120
+ return pki_common_1.ChallengeType.TDXAZURE;
121
+ case HvIsolationType.SNP:
122
+ return pki_common_1.ChallengeType.SEVSNPAZURE;
123
+ default:
124
+ return undefined;
125
+ }
126
+ };
127
+ exports.detectAzureAttestationType = detectAzureAttestationType;
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXp1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQTJEO0FBQzNELDJCQUFpRTtBQU1qRSw0RUFBNEU7QUFDNUUsNkRBQTZEO0FBQzdELE1BQU0scUJBQXFCLEdBQUcscUNBQXFDLENBQUM7QUFDcEUsTUFBTSx1QkFBdUIsR0FBRyxrQ0FBa0MsQ0FBQztBQUVuRSwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLHVFQUF1RTtBQUN2RSxNQUFNLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztBQUN4QyxNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztBQUN0QyxNQUFNLHlCQUF5QixHQUFHLFVBQVUsQ0FBQztBQUM3QyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUM7QUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFFbkMsSUFBWSxlQUtYO0FBTEQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFRLENBQUE7SUFDUixtREFBTyxDQUFBO0lBQ1AsbURBQU8sQ0FBQTtJQUNQLG1EQUFPLENBQUE7QUFDWCxDQUFDLEVBTFcsZUFBZSwrQkFBZixlQUFlLFFBSzFCO0FBU0QsNkVBQTZFO0FBQzdFLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQThCLEVBQUU7SUFDeEUsSUFBSSxFQUFzQixDQUFDO0lBQzNCLElBQUksQ0FBQztRQUNELEVBQUUsR0FBRyxJQUFBLGFBQVEsRUFBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekQsSUFBSSxJQUFBLGFBQVEsRUFBQyxF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
@@ -62,6 +62,7 @@ const getAttestationPayloadBase64FromChallenge = (challenge) => {
62
62
  case pki_common_1.ChallengeType.TDXGOOGLE:
63
63
  case pki_common_1.ChallengeType.TDXAZURE:
64
64
  case pki_common_1.ChallengeType.SEVSNP:
65
+ case pki_common_1.ChallengeType.SEVSNPAZURE:
65
66
  return challenge.evidenceBase64;
66
67
  default:
67
68
  return;
@@ -332,4 +333,4 @@ const getParamsFromCSR = async (csrPem) => {
332
333
  };
333
334
  };
334
335
  exports.getParamsFromCSR = getParamsFromCSR;
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGVHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2VydGlmaWNhdGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBUWdDO0FBQ2hDLDJFQUs0QztBQUM1Qyw2QkFBMkI7QUFDM0IsMkRBb0JvQztBQUVwQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQUVsRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUVuRSxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FB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
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGVHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2VydGlmaWNhdGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBUWdDO0FBQ2hDLDJFQUs0QztBQUM1Qyw2QkFBMkI7QUFDM0IsMkRBb0JvQztBQUVwQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQUVsRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUVuRSxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FB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
@@ -80,12 +80,6 @@ class ChallengeNvidiaCCHelper {
80
80
  log?.debug(String(logContent));
81
81
  }
82
82
  }
83
- const message = String(error.message ?? '');
84
- if (message.includes('NvmlHelper') ||
85
- /\bNVML\b/.test(message)) {
86
- log?.info('NVIDIA NVML unavailable; continuing without GPU token');
87
- return;
88
- }
89
83
  }
90
84
  else if (error instanceof sp_nvtrust_wrapper_1.UntrustedGpusError) {
91
85
  log?.error('Untrusted GPUs detected', {
@@ -179,4 +173,4 @@ class ChallengeNvidiaCCHelper {
179
173
  }
180
174
  }
181
175
  exports.ChallengeNvidiaCCHelper = ChallengeNvidiaCCHelper;
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBTzRDO0FBRTVDLG1DQUFvQztBQUVwQyxNQUFhLHVCQUF1QjtJQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FDL0IsTUFBWTtRQUVaLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDdEIsTUFBTSxFQUFFLHlCQUF5QjtTQUNwQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1DQUFjLEVBQUUsQ0FBQztZQUNyQyxHQUFHLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFFOUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEQsR0FBRyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsRUFBRTtnQkFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUMzQixhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7YUFDeEMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2dCQUNuRCxHQUFHLEVBQUUsSUFBSSxDQUNMLDhEQUE4RCxDQUNqRSxDQUFDO2dCQUNGLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxxQkFBOEQsQ0FBQztZQUNuRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLHFC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
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlTnZpZGlhQ0NIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBTzRDO0FBRTVDLG1DQUFvQztBQUVwQyxNQUFhLHVCQUF1QjtJQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FDL0IsTUFBWTtRQUVaLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDdEIsTUFBTSxFQUFFLHlCQUF5QjtTQUNwQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG1DQUFjLEVBQUUsQ0FBQztZQUNyQyxHQUFHLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNsQyxHQUFHLEVBQUUsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFFOUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEQsR0FBRyxFQUFFLEtBQUssQ0FBQyw4QkFBOEIsRUFBRTtnQkFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUMzQixhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7YUFDeEMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2dCQUNuRCxHQUFHLEVBQUUsSUFBSSxDQUNMLDhEQUE4RCxDQUNqRSxDQUFDO2dCQUNGLE9BQU87WUFDWCxDQUFDO1lBRUQsSUFBSSxxQkFBOEQsQ0FBQztZQUNuRSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLHFC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
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, ChallengeType, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderAzure implements ChallengeProvider {
5
+ readonly logger: Log | undefined;
6
+ private readonly challengeType;
7
+ constructor(logger: Log | undefined, challengeType: ChallengeType.TDXAZURE | ChallengeType.SEVSNPAZURE);
8
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
9
+ }
@@ -0,0 +1,54 @@
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
+ constructor(logger, challengeType) {
33
+ this.logger = logger;
34
+ this.challengeType = challengeType;
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 } = await challengeNvidiaCCHelper_1.ChallengeNvidiaCCHelper.getTokenAndCombinedChallengeData(userData, this.logger);
41
+ const azureCvmService = new TeeNative.AzureCvmService();
42
+ const evidence = this.challengeType === pki_common_1.ChallengeType.TDXAZURE
43
+ ? await azureCvmService.generateSerializedTDXAzureEvidence(challengeData)
44
+ : await azureCvmService.generateSerializedAmdSevSnpAzureEvidence(challengeData);
45
+ return {
46
+ type: this.challengeType,
47
+ evidenceBase64: evidence.toString('base64'),
48
+ nvidiaTokens,
49
+ networkID,
50
+ };
51
+ }
52
+ }
53
+ exports.ChallengeProviderAzure = ChallengeProviderAzure;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJBenVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFsbGVuZ2VQcm92aWRlci9jaGFsbGVuZ2VQcm92aWRlckF6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUVBQW9FO0FBRXBFLDJEQUEyRTtBQUUzRSxNQUFhLHNCQUFzQjtJQUVYO0lBQ0M7SUFGckIsWUFDb0IsTUFBdUIsRUFDdEIsYUFFYztRQUhmLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUVDO0lBQ2hDLENBQUM7SUFFSixLQUFLLENBQUMsaUJBQWlCLENBQ25CLFFBQWdCLEVBQ2hCLFNBQWtCO1FBRWxCLDJHQUEyRztRQUMzRywyRUFBMkU7UUFDM0UsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLHdEQUFhLDRCQUE0QixHQUFDLENBQUM7UUFFakUsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FDakMsTUFBTSxpREFBdUIsQ0FBQyxnQ0FBZ0MsQ0FDMUQsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLENBQ2QsQ0FBQztRQUVOLE1BQU0sZUFBZSxHQUFHLElBQUksU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhELE1BQU0sUUFBUSxHQUNWLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxRQUFRO1lBQ3pDLENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxrQ0FBa0MsQ0FDcEQsYUFBYSxDQUNoQjtZQUNILENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyx3Q0FBd0MsQ0FDMUQsYUFBYSxDQUNoQixDQUFDO1FBRVosT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUN4QixjQUFjLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDM0MsWUFBWTtZQUNaLFNBQVM7U0FDWixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBeENELHdEQXdDQyJ9
@@ -1,6 +1,6 @@
1
1
  export * from './challengeProvider';
2
2
  export * from './challengeProviderTdx';
3
- export * from './challengeProviderTdxAzure';
3
+ export * from './challengeProviderAzure';
4
4
  export * from './challengeProviderUntrusted';
5
5
  export * from './challengeProviderSevSnp';
6
6
  export * from './challengeNvidiaCCHelper';
@@ -16,10 +16,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./challengeProvider"), exports);
18
18
  __exportStar(require("./challengeProviderTdx"), exports);
19
- __exportStar(require("./challengeProviderTdxAzure"), exports);
19
+ __exportStar(require("./challengeProviderAzure"), exports);
20
20
  __exportStar(require("./challengeProviderUntrusted"), exports);
21
21
  __exportStar(require("./challengeProviderSevSnp"), exports);
22
22
  __exportStar(require("./challengeNvidiaCCHelper"), exports);
23
23
  __exportStar(require("./challengeProviderCertificate"), exports);
24
24
  __exportStar(require("./challengeProviderToken"), exports);
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMsOERBQTRDO0FBQzVDLCtEQUE2QztBQUM3Qyw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLGlFQUErQztBQUMvQywyREFBeUMifQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMsMkRBQXlDO0FBQ3pDLCtEQUE2QztBQUM3Qyw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLGlFQUErQztBQUMvQywyREFBeUMifQ==
@@ -0,0 +1,29 @@
1
+ import { Challenge, Log, NetworkType } from '@super-protocol/pki-common';
2
+ import { ChallengeResult, ChallengeValidator } from './challengeValidator';
3
+ import { AzureValidationConfig } from './validatorConfig';
4
+ import { AttestationWasmAzure } from './wasmVerificationPolicy';
5
+ export interface ChallengeValidatorAzureOptions {
6
+ /**
7
+ * A debug VM offers no confidentiality, so it is accepted only when the
8
+ * network is explicitly untrusted.
9
+ */
10
+ networkType?: NetworkType;
11
+ config?: AzureValidationConfig;
12
+ loadAttestationModule?: () => Promise<AttestationWasmAzure>;
13
+ }
14
+ /**
15
+ * Validates Azure confidential VM evidence (Intel TDX and AMD SEV-SNP) with
16
+ * @super-protocol/attestation-wasm: the Intel / AMD signature of the hardware
17
+ * report, the Microsoft vTPM attestation key, the TPM quote and the event log.
18
+ * Microsoft Azure Attestation is always asked whether the paravisor is a
19
+ * genuine Azure one; evidence is rejected when MAA is unreachable.
20
+ *
21
+ * NOT verified on a live SEV-SNP guest yet.
22
+ */
23
+ export declare class ChallengeValidatorAzure implements ChallengeValidator {
24
+ private readonly log;
25
+ private readonly options;
26
+ constructor(log: Log, options?: ChallengeValidatorAzureOptions);
27
+ validate(challenge: Challenge): Promise<ChallengeResult>;
28
+ private validateEvidence;
29
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChallengeValidatorAzure = void 0;
4
+ const attestation_common_1 = require("@super-protocol/attestation-common");
5
+ const pki_common_1 = require("@super-protocol/pki-common");
6
+ const wasmVerificationPolicy_1 = require("./wasmVerificationPolicy");
7
+ const preservedDynamicImport = new Function('specifier', 'return import(specifier)');
8
+ const defaultLoadAttestationModule = () => preservedDynamicImport('@super-protocol/attestation-wasm/node');
9
+ const EXPECTED_EVIDENCE_TYPE = {
10
+ [pki_common_1.ChallengeType.TDXAZURE]: attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_INTEL_TDX_AZURE,
11
+ [pki_common_1.ChallengeType.SEVSNPAZURE]: attestation_common_1.TeeEvidenceType.TEE_EVIDENCE_TYPE_AMD_SEV_SNP_AZURE,
12
+ };
13
+ /**
14
+ * Validates Azure confidential VM evidence (Intel TDX and AMD SEV-SNP) with
15
+ * @super-protocol/attestation-wasm: the Intel / AMD signature of the hardware
16
+ * report, the Microsoft vTPM attestation key, the TPM quote and the event log.
17
+ * Microsoft Azure Attestation is always asked whether the paravisor is a
18
+ * genuine Azure one; evidence is rejected when MAA is unreachable.
19
+ *
20
+ * NOT verified on a live SEV-SNP guest yet.
21
+ */
22
+ class ChallengeValidatorAzure {
23
+ log;
24
+ options;
25
+ constructor(log, options = {}) {
26
+ this.log = log;
27
+ this.options = options;
28
+ }
29
+ async validate(challenge) {
30
+ switch (challenge.type) {
31
+ case pki_common_1.ChallengeType.TDXAZURE:
32
+ case pki_common_1.ChallengeType.SEVSNPAZURE:
33
+ try {
34
+ return await this.validateEvidence(challenge.type, Buffer.from(challenge.evidenceBase64, 'base64'));
35
+ }
36
+ catch (e) {
37
+ return {
38
+ success: false,
39
+ error: e.message,
40
+ };
41
+ }
42
+ }
43
+ throw new Error('Method not implemented.');
44
+ }
45
+ async validateEvidence(challengeType, evidence) {
46
+ const log = this.log.child({
47
+ validator: 'ChallengeValidatorAzure',
48
+ challengeType,
49
+ });
50
+ const attestation = await (this.options.loadAttestationModule ?? defaultLoadAttestationModule)();
51
+ const verification = await attestation.verifyTeeEvidence(evidence, (0, wasmVerificationPolicy_1.buildAzureVerifyOptions)(this.options.config));
52
+ if (verification.evidenceType !== EXPECTED_EVIDENCE_TYPE[challengeType]) {
53
+ throw new Error(`Evidence type ${verification.evidenceType} does not match challenge type ${challengeType}`);
54
+ }
55
+ const { mrEnclave, reportData } = (0, wasmVerificationPolicy_1.checkAzureVerificationResult)(verification, attestation, { networkType: this.options.networkType, log });
56
+ log.debug('Azure evidence verified', {
57
+ mrEnclaveHex: mrEnclave.toString('hex'),
58
+ });
59
+ return {
60
+ success: true,
61
+ validatedUserData: reportData,
62
+ validatedId: mrEnclave,
63
+ };
64
+ }
65
+ }
66
+ exports.ChallengeValidatorAzure = ChallengeValidatorAzure;
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlVmFsaWRhdG9yQXp1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlVmFsaWRhdG9yL2NoYWxsZW5nZVZhbGlkYXRvckF6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJFQUFxRTtBQUNyRSwyREFLb0M7QUFHcEMscUVBSWtDO0FBRWxDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxRQUFRLENBQ3ZDLFdBQVcsRUFDWCwwQkFBMEIsQ0FDVyxDQUFDO0FBRTFDLE1BQU0sNEJBQTRCLEdBQUcsR0FBa0MsRUFBRSxDQUNyRSxzQkFBc0IsQ0FDbEIsdUNBQXVDLENBQzFDLENBQUM7QUFFTixNQUFNLHNCQUFzQixHQUFHO0lBQzNCLENBQUMsMEJBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxvQ0FBZSxDQUFDLGlDQUFpQztJQUMzRSxDQUFDLDBCQUFhLENBQUMsV0FBVyxDQUFDLEVBQ3ZCLG9DQUFlLENBQUMsbUNBQW1DO0NBQ2pELENBQUM7QUFZWDs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsdUJBQXVCO0lBRVg7SUFDQTtJQUZyQixZQUNxQixHQUFRLEVBQ1IsVUFBMEMsRUFBRTtRQUQ1QyxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ1IsWUFBTyxHQUFQLE9BQU8sQ0FBcUM7SUFDOUQsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBb0I7UUFDL0IsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsS0FBSywwQkFBYSxDQUFDLFFBQVEsQ0FBQztZQUM1QixLQUFLLDBCQUFhLENBQUMsV0FBVztnQkFDMUIsSUFBSSxDQUFDO29CQUNELE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQzlCLFNBQVMsQ0FBQyxJQUFJLEVBQ2QsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUNsRCxDQUFDO2dCQUNOLENBQUM7Z0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztvQkFDZCxPQUFPO3dCQUNILE9BQU8sRUFBRSxLQUFLO3dCQUNkLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTztxQkFDbkIsQ0FBQztnQkFDTixDQUFDO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUMxQixhQUFpRSxFQUNqRSxRQUFnQjtRQUVoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUN2QixTQUFTLEVBQUUseUJBQXlCO1lBQ3BDLGFBQWE7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixJQUFJLDRCQUE0QixDQUNyRSxFQUFFLENBQUM7UUFFSixNQUFNLFlBQVksR0FBRyxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsQ0FDcEQsUUFBUSxFQUNSLElBQUEsZ0RBQXVCLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FDL0MsQ0FBQztRQUVGLElBQ0ksWUFBWSxDQUFDLFlBQVksS0FBSyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsRUFDckUsQ0FBQztZQUNDLE1BQU0sSUFBSSxLQUFLLENBQ1gsaUJBQWlCLFlBQVksQ0FBQyxZQUFZLGtDQUFrQyxhQUFhLEVBQUUsQ0FDOUYsQ0FBQztRQUNOLENBQUM7UUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUEscURBQTRCLEVBQzFELFlBQVksRUFDWixXQUFXLEVBQ1gsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQ2pELENBQUM7UUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFO1lBQ2pDLFlBQVksRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztTQUMxQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUk7WUFDYixpQkFBaUIsRUFBRSxVQUFVO1lBQzdCLFdBQVcsRUFBRSxTQUFTO1NBQ3pCLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFqRUQsMERBaUVDIn0=
@@ -1,8 +1,9 @@
1
1
  export * from './challengeValidator';
2
2
  export * from './validatorConfig';
3
+ export { ChallengeValidatorAzure, type ChallengeValidatorAzureOptions, } from './challengeValidatorAzure';
4
+ export { buildAzureVerifyOptions, checkAzureVerificationResult, checkTeeVerificationResult, isAzureEvidenceType, type AttestationWasmAzure, } from './wasmVerificationPolicy';
3
5
  export { ChallengeValidatorCertificate } from './challengeValidatorCertificate';
4
6
  export { ChallengeValidatorNvidia } from './challengeValidatorNvidia';
5
7
  export { ChallengeValidatorTdx } from './challengeValidatorTdx';
6
- export { ChallengeValidatorTdxAzure } from './challengeValidatorTdxAzure';
7
8
  export { ChallengeValidatorSevSnp } from './challengeValidatorSevSnp';
8
9
  export { ChallengeValidatorToken } from './challengeValidatorToken';
@@ -14,19 +14,24 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ChallengeValidatorToken = exports.ChallengeValidatorSevSnp = exports.ChallengeValidatorTdxAzure = exports.ChallengeValidatorTdx = exports.ChallengeValidatorNvidia = exports.ChallengeValidatorCertificate = void 0;
17
+ exports.ChallengeValidatorToken = exports.ChallengeValidatorSevSnp = exports.ChallengeValidatorTdx = exports.ChallengeValidatorNvidia = exports.ChallengeValidatorCertificate = exports.isAzureEvidenceType = exports.checkTeeVerificationResult = exports.checkAzureVerificationResult = exports.buildAzureVerifyOptions = exports.ChallengeValidatorAzure = void 0;
18
18
  __exportStar(require("./challengeValidator"), exports);
19
19
  __exportStar(require("./validatorConfig"), exports);
20
+ var challengeValidatorAzure_1 = require("./challengeValidatorAzure");
21
+ Object.defineProperty(exports, "ChallengeValidatorAzure", { enumerable: true, get: function () { return challengeValidatorAzure_1.ChallengeValidatorAzure; } });
22
+ var wasmVerificationPolicy_1 = require("./wasmVerificationPolicy");
23
+ Object.defineProperty(exports, "buildAzureVerifyOptions", { enumerable: true, get: function () { return wasmVerificationPolicy_1.buildAzureVerifyOptions; } });
24
+ Object.defineProperty(exports, "checkAzureVerificationResult", { enumerable: true, get: function () { return wasmVerificationPolicy_1.checkAzureVerificationResult; } });
25
+ Object.defineProperty(exports, "checkTeeVerificationResult", { enumerable: true, get: function () { return wasmVerificationPolicy_1.checkTeeVerificationResult; } });
26
+ Object.defineProperty(exports, "isAzureEvidenceType", { enumerable: true, get: function () { return wasmVerificationPolicy_1.isAzureEvidenceType; } });
20
27
  var challengeValidatorCertificate_1 = require("./challengeValidatorCertificate");
21
28
  Object.defineProperty(exports, "ChallengeValidatorCertificate", { enumerable: true, get: function () { return challengeValidatorCertificate_1.ChallengeValidatorCertificate; } });
22
29
  var challengeValidatorNvidia_1 = require("./challengeValidatorNvidia");
23
30
  Object.defineProperty(exports, "ChallengeValidatorNvidia", { enumerable: true, get: function () { return challengeValidatorNvidia_1.ChallengeValidatorNvidia; } });
24
31
  var challengeValidatorTdx_1 = require("./challengeValidatorTdx");
25
32
  Object.defineProperty(exports, "ChallengeValidatorTdx", { enumerable: true, get: function () { return challengeValidatorTdx_1.ChallengeValidatorTdx; } });
26
- var challengeValidatorTdxAzure_1 = require("./challengeValidatorTdxAzure");
27
- Object.defineProperty(exports, "ChallengeValidatorTdxAzure", { enumerable: true, get: function () { return challengeValidatorTdxAzure_1.ChallengeValidatorTdxAzure; } });
28
33
  var challengeValidatorSevSnp_1 = require("./challengeValidatorSevSnp");
29
34
  Object.defineProperty(exports, "ChallengeValidatorSevSnp", { enumerable: true, get: function () { return challengeValidatorSevSnp_1.ChallengeValidatorSevSnp; } });
30
35
  var challengeValidatorToken_1 = require("./challengeValidatorToken");
31
36
  Object.defineProperty(exports, "ChallengeValidatorToken", { enumerable: true, get: function () { return challengeValidatorToken_1.ChallengeValidatorToken; } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlVmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQyxpRkFBZ0Y7QUFBdkUsOElBQUEsNkJBQTZCLE9BQUE7QUFDdEMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLGlFQUFnRTtBQUF2RCw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QiwyRUFBMEU7QUFBakUsd0lBQUEsMEJBQTBCLE9BQUE7QUFDbkMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHFFQUFvRTtBQUEzRCxrSUFBQSx1QkFBdUIsT0FBQSJ9
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlVmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQyxxRUFHbUM7QUFGL0Isa0lBQUEsdUJBQXVCLE9BQUE7QUFHM0IsbUVBTWtDO0FBTDlCLGlJQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLHNJQUFBLDRCQUE0QixPQUFBO0FBQzVCLG9JQUFBLDBCQUEwQixPQUFBO0FBQzFCLDZIQUFBLG1CQUFtQixPQUFBO0FBR3ZCLGlGQUFnRjtBQUF2RSw4SUFBQSw2QkFBNkIsT0FBQTtBQUN0Qyx1RUFBc0U7QUFBN0Qsb0lBQUEsd0JBQXdCLE9BQUE7QUFDakMsaUVBQWdFO0FBQXZELDhIQUFBLHFCQUFxQixPQUFBO0FBQzlCLHVFQUFzRTtBQUE3RCxvSUFBQSx3QkFBd0IsT0FBQTtBQUNqQyxxRUFBb0U7QUFBM0Qsa0lBQUEsdUJBQXVCLE9BQUEifQ==
@@ -11,3 +11,8 @@ export interface NvtrustWrapperConfig {
11
11
  tmp?: string;
12
12
  timeout?: number;
13
13
  }
14
+ export interface AzureValidationConfig {
15
+ /** Microsoft Azure Attestation instance, https://sharedeus.eus.attest.azure.net by default. */
16
+ maaEndpoint?: string;
17
+ maaTimeoutMs?: number;
18
+ }