@super-protocol/pki-attestation-engine 5.0.7 → 5.1.0-beta2

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.
@@ -1,4 +1,4 @@
1
1
  import { ChallengeType } from '@super-protocol/pki-common';
2
- export type DetectAttestationType = ChallengeType.TDX | ChallengeType.TDXGOOGLE | ChallengeType.SEVSNP | ChallengeType.Untrusted;
2
+ export type DetectAttestationType = ChallengeType.TDX | ChallengeType.TDXGOOGLE | ChallengeType.TDXAZURE | ChallengeType.SEVSNP | ChallengeType.Untrusted;
3
3
  export declare const isGoogleCloudVm: () => Promise<boolean>;
4
4
  export declare const detectAttestationType: () => Promise<DetectAttestationType>;
@@ -3,6 +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
7
  const GCP_METADATA_URL = 'http://169.254.169.254/computeMetadata/v1/instance/id';
7
8
  const GCP_METADATA_TIMEOUT_MS = 500;
8
9
  const isGoogleCloudVm = async () => {
@@ -26,6 +27,9 @@ const isGoogleCloudVm = async () => {
26
27
  exports.isGoogleCloudVm = isGoogleCloudVm;
27
28
  const detectAttestationType = async () => {
28
29
  try {
30
+ if (await (0, detectAzureTdx_1.isAzureTdxVm)()) {
31
+ return pki_common_1.ChallengeType.TDXAZURE;
32
+ }
29
33
  const tdxPath = '/dev/tdx_guest';
30
34
  const sevPath = '/dev/sev-guest';
31
35
  if ((0, fs_1.existsSync)(tdxPath)) {
@@ -51,4 +55,4 @@ const detectAttestationType = async () => {
51
55
  return pki_common_1.ChallengeType.Untrusted;
52
56
  };
53
57
  exports.detectAttestationType = detectAttestationType;
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25UeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2F0dGVzdGF0aW9uVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBMkQ7QUFDM0QsMkJBQTBDO0FBUTFDLE1BQU0sZ0JBQWdCLEdBQ2xCLHVEQUF1RCxDQUFDO0FBQzVELE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBRTdCLE1BQU0sZUFBZSxHQUFHLEtBQUssSUFBc0IsRUFBRTtJQUN4RCxJQUFJLENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzQyxPQUFPLEVBQUU7Z0JBQ0wsaUJBQWlCLEVBQUUsUUFBUTthQUM5QjtZQUNELE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDZixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQWxCVyxRQUFBLGVBQWUsbUJBa0IxQjtBQUVLLE1BQU0scUJBQXFCLEdBQzlCLEtBQUssSUFBb0MsRUFBRTtJQUN2QyxJQUFJLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUNqQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQztRQUVqQyxJQUFJLElBQUEsZUFBVSxFQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBQSxhQUFRLEVBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO2dCQUM1QixPQUFPLENBQUMsTUFBTSxJQUFBLHVCQUFlLEdBQUUsQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLDBCQUFhLENBQUMsU0FBUztvQkFDekIsQ0FBQyxDQUFDLDBCQUFhLENBQUMsR0FBRyxDQUFDO1lBQzVCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFBLGVBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUEsYUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLE1BQU0sSUFBQSx1QkFBZSxHQUFFLENBQUM7b0JBQzVCLENBQUMsQ0FBQywwQkFBYSxDQUFDLFNBQVM7b0JBQ3pCLENBQUMsQ0FBQywwQkFBYSxDQUFDLE1BQU0sQ0FBQztZQUMvQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDTCxvREFBb0Q7SUFDeEQsQ0FBQztJQUVELE9BQU8sMEJBQWEsQ0FBQyxTQUFTLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBNUJPLFFBQUEscUJBQXFCLHlCQTRCNUIifQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb25UeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2F0dGVzdGF0aW9uVHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBMkQ7QUFDM0QsMkJBQTBDO0FBRTFDLDJEQUFzRDtBQVN0RCxNQUFNLGdCQUFnQixHQUNsQix1REFBdUQsQ0FBQztBQUM1RCxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUU3QixNQUFNLGVBQWUsR0FBRyxLQUFLLElBQXNCLEVBQUU7SUFDeEQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7WUFDM0MsT0FBTyxFQUFFO2dCQUNMLGlCQUFpQixFQUFFLFFBQVE7YUFDOUI7WUFDRCxNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztTQUN2RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFsQlcsUUFBQSxlQUFlLG1CQWtCMUI7QUFFSyxNQUFNLHFCQUFxQixHQUM5QixLQUFLLElBQW9DLEVBQUU7SUFDdkMsSUFBSSxDQUFDO1FBQ0QsSUFBSSxNQUFNLElBQUEsNkJBQVksR0FBRSxFQUFFLENBQUM7WUFDdkIsT0FBTywwQkFBYSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFFakMsSUFBSSxJQUFBLGVBQVUsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUEsYUFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLE1BQU0sSUFBQSx1QkFBZSxHQUFFLENBQUM7b0JBQzVCLENBQUMsQ0FBQywwQkFBYSxDQUFDLFNBQVM7b0JBQ3pCLENBQUMsQ0FBQywwQkFBYSxDQUFDLEdBQUcsQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBQSxlQUFVLEVBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLEtBQUssR0FBRyxJQUFBLGFBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQztZQUNoQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxNQUFNLElBQUEsdUJBQWUsR0FBRSxDQUFDO29CQUM1QixDQUFDLENBQUMsMEJBQWEsQ0FBQyxTQUFTO29CQUN6QixDQUFDLENBQUMsMEJBQWEsQ0FBQyxNQUFNLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsb0RBQW9EO0lBQ3hELENBQUM7SUFFRCxPQUFPLDBCQUFhLENBQUMsU0FBUyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQWhDTyxRQUFBLHFCQUFxQix5QkFnQzVCIn0=
@@ -0,0 +1,3 @@
1
+ export declare const isTdxGuest: () => boolean;
2
+ export declare const isAzureConfidentialVm: () => Promise<boolean>;
3
+ export declare const isAzureTdxVm: () => Promise<boolean>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAzureTdxVm = exports.isAzureConfidentialVm = exports.isTdxGuest = void 0;
4
+ const fs_1 = require("fs");
5
+ const AZURE_IMDS_COMPUTE_URL = 'http://169.254.169.254/metadata/instance/compute?api-version=2023-07-01';
6
+ const IMDS_TIMEOUT_MS = 500;
7
+ const SEV_DEVICE_PATH = '/dev/sev-guest';
8
+ const cpuinfoFlagTokens = () => {
9
+ try {
10
+ const text = (0, fs_1.readFileSync)('/proc/cpuinfo', 'utf8');
11
+ const tokens = new Set();
12
+ for (const line of text.split('\n')) {
13
+ const [key, value] = line.split(':');
14
+ if (key?.trim() === 'flags' || key?.trim() === 'Features') {
15
+ for (const token of (value ?? '').split(/\s+/)) {
16
+ if (token) {
17
+ tokens.add(token);
18
+ }
19
+ }
20
+ }
21
+ }
22
+ return tokens;
23
+ }
24
+ catch {
25
+ return new Set();
26
+ }
27
+ };
28
+ const isTdxGuest = () => {
29
+ try {
30
+ if ((0, fs_1.existsSync)(SEV_DEVICE_PATH) &&
31
+ (0, fs_1.statSync)(SEV_DEVICE_PATH).isCharacterDevice()) {
32
+ return false;
33
+ }
34
+ }
35
+ catch {
36
+ // ignore
37
+ }
38
+ if (cpuinfoFlagTokens().has('tdx_guest')) {
39
+ return true;
40
+ }
41
+ if ((0, fs_1.existsSync)('/sys/module/tdx_guest')) {
42
+ return true;
43
+ }
44
+ try {
45
+ return (0, fs_1.readFileSync)('/proc/cpuinfo', 'utf8').includes('Intel TDX');
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ };
51
+ exports.isTdxGuest = isTdxGuest;
52
+ const isAzureConfidentialVm = async () => {
53
+ try {
54
+ const response = await fetch(AZURE_IMDS_COMPUTE_URL, {
55
+ headers: { Metadata: 'true' },
56
+ signal: AbortSignal.timeout(IMDS_TIMEOUT_MS),
57
+ });
58
+ if (!response.ok) {
59
+ return false;
60
+ }
61
+ const compute = (await response.json());
62
+ return (String(compute?.securityProfile?.securityType ?? '')
63
+ .trim()
64
+ .toLowerCase() === 'confidentialvm');
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ };
70
+ exports.isAzureConfidentialVm = isAzureConfidentialVm;
71
+ const isAzureTdxVm = async () => (await (0, exports.isAzureConfidentialVm)()) && (0, exports.isTdxGuest)();
72
+ exports.isAzureTdxVm = isAzureTdxVm;
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0QXp1cmVUZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUvZGV0ZWN0QXp1cmVUZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQXdEO0FBRXhELE1BQU0sc0JBQXNCLEdBQ3hCLHlFQUF5RSxDQUFDO0FBQzlFLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUM1QixNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQztBQUV6QyxNQUFNLGlCQUFpQixHQUFHLEdBQWdCLEVBQUU7SUFDeEMsSUFBSSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBQSxpQkFBWSxFQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxPQUFPLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUN4RCxLQUFLLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUM3QyxJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3RCLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUssTUFBTSxVQUFVLEdBQUcsR0FBWSxFQUFFO0lBQ3BDLElBQUksQ0FBQztRQUNELElBQ0ksSUFBQSxlQUFVLEVBQUMsZUFBZSxDQUFDO1lBQzNCLElBQUEsYUFBUSxFQUFDLGVBQWUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEVBQy9DLENBQUM7WUFDQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLFNBQVM7SUFDYixDQUFDO0lBRUQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxJQUFJLElBQUEsZUFBVSxFQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0QsT0FBTyxJQUFBLGlCQUFZLEVBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXZCVyxRQUFBLFVBQVUsY0F1QnJCO0FBRUssTUFBTSxxQkFBcUIsR0FBRyxLQUFLLElBQXNCLEVBQUU7SUFDOUQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsc0JBQXNCLEVBQUU7WUFDakQsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRTtZQUM3QixNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7U0FDL0MsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNmLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUVyQyxDQUFDO1FBQ0YsT0FBTyxDQUNILE1BQU0sQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDL0MsSUFBSSxFQUFFO2FBQ04sV0FBVyxFQUFFLEtBQUssZ0JBQWdCLENBQzFDLENBQUM7SUFDTixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ0wsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUMsQ0FBQztBQXBCVyxRQUFBLHFCQUFxQix5QkFvQmhDO0FBRUssTUFBTSxZQUFZLEdBQUcsS0FBSyxJQUFzQixFQUFFLENBQ3JELENBQUMsTUFBTSxJQUFBLDZCQUFxQixHQUFFLENBQUMsSUFBSSxJQUFBLGtCQUFVLEdBQUUsQ0FBQztBQUR2QyxRQUFBLFlBQVksZ0JBQzJCIn0=
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ export declare const TDX_AZURE_EVIDENCE_FORMAT = "tdx-azure-maa-v1";
3
+ export interface TdxAzureEvidenceV1 {
4
+ format: typeof TDX_AZURE_EVIDENCE_FORMAT;
5
+ token: string;
6
+ }
7
+ export declare const encodeTdxAzureEvidence: (token: string) => Buffer;
8
+ export declare const parseTdxAzureEvidence: (evidence: Buffer) => TdxAzureEvidenceV1;
9
+ /** vTPM SHA-256 PCRs mixed into Azure TDX mrEnclave. PCR[6] is omitted: Azure logs vmUniqueId there. */
10
+ export declare const AZURE_TDX_MR_ENCLAVE_PCR_INDEXES: readonly [0, 1, 2, 3, 4, 5, 7];
11
+ export declare const computeAzureTdxMrEnclave: (tdAttributesHex: string, mrtdHex: string, pcrSha256Hex: string[]) => Buffer;
12
+ export declare const verifyMaaJwt: (token: string) => Promise<Record<string, unknown>>;
13
+ export declare const validateAzureTdxClaims: (claims: Record<string, unknown>) => {
14
+ userData: Buffer;
15
+ mrenclave: Buffer;
16
+ };
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAzureTdxClaims = exports.verifyMaaJwt = exports.computeAzureTdxMrEnclave = exports.AZURE_TDX_MR_ENCLAVE_PCR_INDEXES = exports.parseTdxAzureEvidence = exports.encodeTdxAzureEvidence = exports.TDX_AZURE_EVIDENCE_FORMAT = void 0;
4
+ const crypto_1 = require("crypto");
5
+ exports.TDX_AZURE_EVIDENCE_FORMAT = 'tdx-azure-maa-v1';
6
+ const encodeTdxAzureEvidence = (token) => Buffer.from(JSON.stringify({
7
+ format: exports.TDX_AZURE_EVIDENCE_FORMAT,
8
+ token,
9
+ }), 'utf8');
10
+ exports.encodeTdxAzureEvidence = encodeTdxAzureEvidence;
11
+ const parseTdxAzureEvidence = (evidence) => {
12
+ const parsed = JSON.parse(evidence.toString('utf8'));
13
+ if (parsed.format !== exports.TDX_AZURE_EVIDENCE_FORMAT || typeof parsed.token !== 'string') {
14
+ throw new Error('Invalid tdx-azure evidence format');
15
+ }
16
+ return parsed;
17
+ };
18
+ exports.parseTdxAzureEvidence = parseTdxAzureEvidence;
19
+ const hexToBuffer = (hex, expectedBytes) => {
20
+ const normalized = hex.trim().toLowerCase().replace(/^0x/, '');
21
+ if (!/^[0-9a-f]*$/.test(normalized) || normalized.length % 2 !== 0) {
22
+ throw new Error(`Invalid hex value: ${hex}`);
23
+ }
24
+ const buffer = Buffer.from(normalized, 'hex');
25
+ if (expectedBytes !== undefined && buffer.length !== expectedBytes) {
26
+ throw new Error(`Expected ${expectedBytes} bytes, got ${buffer.length} from hex ${hex}`);
27
+ }
28
+ return buffer;
29
+ };
30
+ const decodeJwtPart = (part) => JSON.parse(Buffer.from(part, 'base64url').toString('utf8'));
31
+ /** vTPM SHA-256 PCRs mixed into Azure TDX mrEnclave. PCR[6] is omitted: Azure logs vmUniqueId there. */
32
+ exports.AZURE_TDX_MR_ENCLAVE_PCR_INDEXES = [
33
+ 0, 1, 2, 3, 4, 5, 7,
34
+ ];
35
+ const computeAzureTdxMrEnclave = (tdAttributesHex, mrtdHex, pcrSha256Hex) => {
36
+ const lastIndex = exports.AZURE_TDX_MR_ENCLAVE_PCR_INDEXES[exports.AZURE_TDX_MR_ENCLAVE_PCR_INDEXES.length - 1];
37
+ if (pcrSha256Hex.length <= lastIndex) {
38
+ throw new Error(`tdx-azure mrEnclave requires SHA-256 PCR[0]..PCR[${lastIndex}] (PCR[6] is not mixed in)`);
39
+ }
40
+ const parts = [
41
+ hexToBuffer(tdAttributesHex, 8),
42
+ hexToBuffer(mrtdHex, 48),
43
+ ...exports.AZURE_TDX_MR_ENCLAVE_PCR_INDEXES.map((index) => hexToBuffer(pcrSha256Hex[index], 32)),
44
+ ];
45
+ return (0, crypto_1.createHash)('sha256').update(Buffer.concat(parts)).digest();
46
+ };
47
+ exports.computeAzureTdxMrEnclave = computeAzureTdxMrEnclave;
48
+ const extractPcrSha256Hex = (claims) => {
49
+ const values = claims['x-ms-azurevm-attested-pcr-values'];
50
+ if (Array.isArray(values) && values.every((item) => typeof item === 'string')) {
51
+ return values;
52
+ }
53
+ if (values && typeof values === 'object') {
54
+ const sha256 = values.sha256;
55
+ if (Array.isArray(sha256) && sha256.every((item) => typeof item === 'string')) {
56
+ return sha256;
57
+ }
58
+ }
59
+ throw new Error('MAA token is missing SHA-256 PCR values');
60
+ };
61
+ const isolationTee = (claims) => {
62
+ const nested = claims['x-ms-isolation-tee'];
63
+ if (nested && typeof nested === 'object') {
64
+ return nested;
65
+ }
66
+ return claims;
67
+ };
68
+ const fetchJwks = async (url) => {
69
+ const response = await fetch(url, { signal: AbortSignal.timeout(5000) });
70
+ if (!response.ok) {
71
+ throw new Error(`Failed to fetch MAA JWKS: ${response.status}`);
72
+ }
73
+ return (await response.json());
74
+ };
75
+ const verifyMaaJwt = async (token) => {
76
+ const parts = token.split('.');
77
+ if (parts.length !== 3) {
78
+ throw new Error('MAA token is not a JWT');
79
+ }
80
+ const header = decodeJwtPart(parts[0]);
81
+ const payload = decodeJwtPart(parts[1]);
82
+ if (header.alg !== 'RS256') {
83
+ throw new Error(`Unsupported MAA JWT alg: ${header.alg}`);
84
+ }
85
+ const iss = payload.iss;
86
+ if (typeof iss !== 'string' || !/^https:\/\/[^/]+\.attest\.azure\.net\/?$/.test(iss)) {
87
+ throw new Error(`Unexpected MAA issuer: ${String(iss)}`);
88
+ }
89
+ const jwksUrl = header.jku ?? `${iss.replace(/\/$/, '')}/certs`;
90
+ if (typeof jwksUrl !== 'string' || !jwksUrl.startsWith(iss.replace(/\/$/, ''))) {
91
+ throw new Error('MAA JWT jku is not on the issuer host');
92
+ }
93
+ const jwks = await fetchJwks(jwksUrl);
94
+ const jwk = jwks.keys?.find((key) => key.kid === header.kid) ?? jwks.keys?.[0];
95
+ if (!jwk) {
96
+ throw new Error('MAA JWKS does not contain a verification key');
97
+ }
98
+ const key = (0, crypto_1.createPublicKey)({
99
+ key: jwk,
100
+ format: 'jwk',
101
+ });
102
+ const ok = (0, crypto_1.verify)('RSA-SHA256', Buffer.from(`${parts[0]}.${parts[1]}`), key, Buffer.from(parts[2], 'base64url'));
103
+ if (!ok) {
104
+ throw new Error('MAA JWT signature verification failed');
105
+ }
106
+ return payload;
107
+ };
108
+ exports.verifyMaaJwt = verifyMaaJwt;
109
+ const validateAzureTdxClaims = (claims) => {
110
+ const tee = isolationTee(claims);
111
+ if (tee['tdx_td_attributes_debug'] === true) {
112
+ throw new Error('Azure TDX debug attribute is enabled');
113
+ }
114
+ if (tee['x-ms-compliance-status'] !== 'azure-compliant-cvm') {
115
+ throw new Error(`Azure TDX compliance status is ${String(tee['x-ms-compliance-status'])}`);
116
+ }
117
+ const tcbStatus = tee['attester_tcb_status'] ?? claims['attester_tcb_status'];
118
+ if (tcbStatus && tcbStatus !== 'UpToDate') {
119
+ throw new Error(`Azure TDX TCB is ${String(tcbStatus)}`);
120
+ }
121
+ const runtime = (tee['x-ms-runtime'] ?? claims['x-ms-runtime']);
122
+ const userDataHex = runtime?.['user-data'];
123
+ if (typeof userDataHex !== 'string') {
124
+ throw new Error('MAA token is missing runtime user-data');
125
+ }
126
+ const userData = hexToBuffer(userDataHex);
127
+ if (userData.length < 64) {
128
+ throw new Error('MAA user-data is shorter than 64 bytes');
129
+ }
130
+ const tdAttributes = String(tee['tdx_td_attributes'] ?? '');
131
+ const mrtd = String(tee['tdx_mrtd'] ?? '');
132
+ const pcrs = extractPcrSha256Hex(claims);
133
+ const mrenclave = (0, exports.computeAzureTdxMrEnclave)(tdAttributes, mrtd, pcrs);
134
+ return {
135
+ userData: userData.subarray(0, 64),
136
+ mrenclave,
137
+ };
138
+ };
139
+ exports.validateAzureTdxClaims = validateAzureTdxClaims;
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGR4QXp1cmVFdmlkZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9henVyZS90ZHhBenVyZUV2aWRlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFnRztBQUVuRixRQUFBLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBT3JELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRSxDQUM1RCxNQUFNLENBQUMsSUFBSSxDQUNQLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDWCxNQUFNLEVBQUUsaUNBQXlCO0lBQ2pDLEtBQUs7Q0FDcUIsQ0FBQyxFQUMvQixNQUFNLENBQ1QsQ0FBQztBQVBPLFFBQUEsc0JBQXNCLDBCQU83QjtBQUVDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFnQixFQUFzQixFQUFFO0lBQzFFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBZ0MsQ0FBQztJQUNwRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssaUNBQXlCLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xGLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsT0FBTyxNQUE0QixDQUFDO0FBQ3hDLENBQUMsQ0FBQztBQU5XLFFBQUEscUJBQXFCLHlCQU1oQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLGFBQXNCLEVBQVUsRUFBRTtJQUNoRSxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFH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
@@ -60,6 +60,7 @@ const getAttestationPayloadBase64FromChallenge = (challenge) => {
60
60
  switch (challenge.type) {
61
61
  case pki_common_1.ChallengeType.TDX:
62
62
  case pki_common_1.ChallengeType.TDXGOOGLE:
63
+ case pki_common_1.ChallengeType.TDXAZURE:
63
64
  case pki_common_1.ChallengeType.SEVSNP:
64
65
  return challenge.evidenceBase64;
65
66
  default:
@@ -331,4 +332,4 @@ const getParamsFromCSR = async (csrPem) => {
331
332
  };
332
333
  };
333
334
  exports.getParamsFromCSR = getParamsFromCSR;
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGVHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2VydGlmaWNhdGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBUWdDO0FBQ2hDLDJFQUs0QztBQUM1Qyw2QkFBMkI7QUFDM0IsMkRBb0JvQztBQUVwQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQUVsRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUVuRSxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FB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
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGVHZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2VydGlmaWNhdGVHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBUWdDO0FBQ2hDLDJFQUs0QztBQUM1Qyw2QkFBMkI7QUFDM0IsMkRBb0JvQztBQUVwQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUNyQyxNQUFNLGVBQWUsR0FBRyx5Q0FBeUMsQ0FBQztBQUVsRSxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBYSxFQUFXLEVBQUU7SUFDakQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xDLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUVuRSxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pFLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FB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
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ import { ChallengeProvider } from './challengeProvider';
3
+ import { Challenge, Log } from '@super-protocol/pki-common';
4
+ export declare class ChallengeProviderTdxAzure implements ChallengeProvider {
5
+ readonly logger?: Log | undefined;
6
+ constructor(logger?: Log | undefined);
7
+ generateChallenge(userData: Buffer, networkID?: string): Promise<Challenge>;
8
+ }
@@ -0,0 +1,54 @@
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 args = [
19
+ 'guest-attest',
20
+ '--provider',
21
+ 'maa',
22
+ '--json',
23
+ '--user-data',
24
+ `hex:${challengeData.toString('hex')}`,
25
+ ];
26
+ let stdout;
27
+ try {
28
+ const result = await execFileAsync(bin, args, {
29
+ timeout: 30000,
30
+ maxBuffer: 4 * 1024 * 1024,
31
+ });
32
+ stdout = result.stdout;
33
+ }
34
+ catch (error) {
35
+ throw new Error(`azure-guest-attest failed (${bin}): ${error.stderr || error.message}`);
36
+ }
37
+ const jsonStart = stdout.indexOf('{');
38
+ if (jsonStart < 0) {
39
+ throw new Error('azure-guest-attest returned no JSON');
40
+ }
41
+ const parsed = JSON.parse(stdout.slice(jsonStart));
42
+ if (!parsed.passed || typeof parsed.token !== 'string') {
43
+ throw new Error(`Azure MAA guest attestation failed: ${parsed.error || 'no token'}`);
44
+ }
45
+ return {
46
+ type: pki_common_1.ChallengeType.TDXAZURE,
47
+ evidenceBase64: (0, tdxAzureEvidence_1.encodeTdxAzureEvidence)(parsed.token).toString('base64'),
48
+ nvidiaTokens,
49
+ networkID,
50
+ };
51
+ }
52
+ }
53
+ exports.ChallengeProviderTdxAzure = ChallengeProviderTdxAzure;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJUZHhBenVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jaGFsbGVuZ2VQcm92aWRlci9jaGFsbGVuZ2VQcm92aWRlclRkeEF6dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUF5QztBQUN6QywrQkFBaUM7QUFDakMsdUVBQW9FO0FBRXBFLDJEQUEyRTtBQUMzRSxnRUFBbUU7QUFFbkUsTUFBTSxhQUFhLEdBQUcsSUFBQSxnQkFBUyxFQUFDLHdCQUFRLENBQUMsQ0FBQztBQUUxQyxNQUFhLHlCQUF5QjtJQUNOO0lBQTVCLFlBQTRCLE1BQVk7UUFBWixXQUFNLEdBQU4sTUFBTSxDQUFNO0lBQUcsQ0FBQztJQUU1QyxLQUFLLENBQUMsaUJBQWlCLENBQ25CLFFBQWdCLEVBQ2hCLFNBQWtCO1FBRWxCLE1BQU0sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQ2pDLE1BQU0saURBQXVCLENBQUMsZ0NBQWdDLENBQzFELFFBQVEsRUFDUixJQUFJLENBQUMsTUFBTSxDQUNkLENBQUM7UUFFTixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLG9CQUFvQixDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHO1lBQ1QsY0FBYztZQUNkLFlBQVk7WUFDWixLQUFLO1lBQ0wsUUFBUTtZQUNSLGFBQWE7WUFDYixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7U0FDekMsQ0FBQztRQUVGLElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUU7Z0JBQzFDLE9BQU8sRUFBRSxLQUFNO2dCQUNmLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUk7YUFDN0IsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDM0IsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEtBQUssQ0FDWCw4QkFBOEIsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUN6RSxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBSWhELENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FDWCx1Q0FBdUMsTUFBTSxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FDdEUsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPO1lBQ0gsSUFBSSxFQUFFLDBCQUFhLENBQUMsUUFBUTtZQUM1QixjQUFjLEVBQUUsSUFBQSx5Q0FBc0IsRUFBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUN6RCxRQUFRLENBQ1g7WUFDRCxZQUFZO1lBQ1osU0FBUztTQUNaLENBQUM7SUFDTixDQUFDO0NBQ0o7QUE1REQsOERBNERDIn0=
@@ -1,5 +1,6 @@
1
1
  export * from './challengeProvider';
2
2
  export * from './challengeProviderTdx';
3
+ export * from './challengeProviderTdxAzure';
3
4
  export * from './challengeProviderUntrusted';
4
5
  export * from './challengeProviderSevSnp';
5
6
  export * from './challengeNvidiaCCHelper';
@@ -16,9 +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
20
  __exportStar(require("./challengeProviderUntrusted"), exports);
20
21
  __exportStar(require("./challengeProviderSevSnp"), exports);
21
22
  __exportStar(require("./challengeNvidiaCCHelper"), exports);
22
23
  __exportStar(require("./challengeProviderCertificate"), exports);
23
24
  __exportStar(require("./challengeProviderToken"), exports);
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMsK0RBQTZDO0FBQzdDLDREQUEwQztBQUMxQyw0REFBMEM7QUFDMUMsaUVBQStDO0FBQy9DLDJEQUF5QyJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMsOERBQTRDO0FBQzVDLCtEQUE2QztBQUM3Qyw0REFBMEM7QUFDMUMsNERBQTBDO0FBQzFDLGlFQUErQztBQUMvQywyREFBeUMifQ==
@@ -0,0 +1,7 @@
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
+ }
@@ -0,0 +1,37 @@
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
@@ -3,5 +3,6 @@ export * from './validatorConfig';
3
3
  export { ChallengeValidatorCertificate } from './challengeValidatorCertificate';
4
4
  export { ChallengeValidatorNvidia } from './challengeValidatorNvidia';
5
5
  export { ChallengeValidatorTdx } from './challengeValidatorTdx';
6
+ export { ChallengeValidatorTdxAzure } from './challengeValidatorTdxAzure';
6
7
  export { ChallengeValidatorSevSnp } from './challengeValidatorSevSnp';
7
8
  export { ChallengeValidatorToken } from './challengeValidatorToken';
@@ -14,7 +14,7 @@ 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.ChallengeValidatorTdx = exports.ChallengeValidatorNvidia = exports.ChallengeValidatorCertificate = void 0;
17
+ exports.ChallengeValidatorToken = exports.ChallengeValidatorSevSnp = exports.ChallengeValidatorTdxAzure = exports.ChallengeValidatorTdx = exports.ChallengeValidatorNvidia = exports.ChallengeValidatorCertificate = void 0;
18
18
  __exportStar(require("./challengeValidator"), exports);
19
19
  __exportStar(require("./validatorConfig"), exports);
20
20
  var challengeValidatorCertificate_1 = require("./challengeValidatorCertificate");
@@ -23,8 +23,10 @@ var challengeValidatorNvidia_1 = require("./challengeValidatorNvidia");
23
23
  Object.defineProperty(exports, "ChallengeValidatorNvidia", { enumerable: true, get: function () { return challengeValidatorNvidia_1.ChallengeValidatorNvidia; } });
24
24
  var challengeValidatorTdx_1 = require("./challengeValidatorTdx");
25
25
  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; } });
26
28
  var challengeValidatorSevSnp_1 = require("./challengeValidatorSevSnp");
27
29
  Object.defineProperty(exports, "ChallengeValidatorSevSnp", { enumerable: true, get: function () { return challengeValidatorSevSnp_1.ChallengeValidatorSevSnp; } });
28
30
  var challengeValidatorToken_1 = require("./challengeValidatorToken");
29
31
  Object.defineProperty(exports, "ChallengeValidatorToken", { enumerable: true, get: function () { return challengeValidatorToken_1.ChallengeValidatorToken; } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlVmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQyxpRkFBZ0Y7QUFBdkUsOElBQUEsNkJBQTZCLE9BQUE7QUFDdEMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLGlFQUFnRTtBQUF2RCw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5Qix1RUFBc0U7QUFBN0Qsb0lBQUEsd0JBQXdCLE9BQUE7QUFDakMscUVBQW9FO0FBQTNELGtJQUFBLHVCQUF1QixPQUFBIn0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlVmFsaWRhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQXFDO0FBQ3JDLG9EQUFrQztBQUNsQyxpRkFBZ0Y7QUFBdkUsOElBQUEsNkJBQTZCLE9BQUE7QUFDdEMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLGlFQUFnRTtBQUF2RCw4SEFBQSxxQkFBcUIsT0FBQTtBQUM5QiwyRUFBMEU7QUFBakUsd0lBQUEsMEJBQTBCLE9BQUE7QUFDbkMsdUVBQXNFO0FBQTdELG9JQUFBLHdCQUF3QixPQUFBO0FBQ2pDLHFFQUFvRTtBQUEzRCxrSUFBQSx1QkFBdUIsT0FBQSJ9
package/dist/index.d.ts CHANGED
@@ -3,3 +3,5 @@ export * from './challengeProvider';
3
3
  export * from './challengeValidator';
4
4
  export * from './swarmCertValidation';
5
5
  export * from './attestationType';
6
+ export * from './azure/detectAzureTdx';
7
+ export * from './azure/tdxAzureEvidence';
package/dist/index.js CHANGED
@@ -19,4 +19,6 @@ __exportStar(require("./challengeProvider"), exports);
19
19
  __exportStar(require("./challengeValidator"), exports);
20
20
  __exportStar(require("./swarmCertValidation"), exports);
21
21
  __exportStar(require("./attestationType"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUF1QztBQUN2QyxzREFBb0M7QUFDcEMsdURBQXFDO0FBQ3JDLHdEQUFzQztBQUN0QyxvREFBa0MifQ==
22
+ __exportStar(require("./azure/detectAzureTdx"), exports);
23
+ __exportStar(require("./azure/tdxAzureEvidence"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUF1QztBQUN2QyxzREFBb0M7QUFDcEMsdURBQXFDO0FBQ3JDLHdEQUFzQztBQUN0QyxvREFBa0M7QUFDbEMseURBQXVDO0FBQ3ZDLDJEQUF5QyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@super-protocol/pki-attestation-engine",
3
- "version": "5.0.7",
3
+ "version": "5.1.0-beta2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -21,7 +21,7 @@
21
21
  "dependencies": {
22
22
  "@sinclair/typebox": "0.33.22",
23
23
  "@super-protocol/addons-tee": "^4.1.0",
24
- "@super-protocol/pki-common": "^5.0.2",
24
+ "@super-protocol/pki-common": "5.1.0-beta1",
25
25
  "@super-protocol/sp-nvtrust-wrapper": "^2.6.0"
26
26
  },
27
27
  "peerDependencies": {