@super-protocol/addons-tee 1.0.0 → 2.0.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 (116) hide show
  1. package/bindings/nvidia-native/README.md +174 -0
  2. package/bindings/nvidia-native/package.json +26 -0
  3. package/bindings/nvidia-native/postinstall.js +40 -0
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -28
  6. package/package.json +4 -2
  7. package/.editorconfig +0 -15
  8. package/.eslintrc.json +0 -61
  9. package/.prettierignore +0 -3
  10. package/.prettierrc +0 -15
  11. package/bindings/amd-sev-snp-napi-rs/amd-sev-snp-napi-rs.linux-x64-gnu.node +0 -0
  12. package/bindings/amd-sev-snp-napi-rs/index.d.ts +0 -51
  13. package/bindings/amd-sev-snp-napi-rs/index.js +0 -339
  14. package/bindings/amd-sev-snp-napi-rs/package-lock.json +0 -40
  15. package/bindings/sgx-native/build/Release/libmbedcrypto_gramine.so.15 +0 -0
  16. package/bindings/sgx-native/build/Release/libmbedx509_gramine.so.6 +0 -0
  17. package/bindings/sgx-native/build/Release/libsgx_dcap_quoteverify.so.1 +0 -0
  18. package/bindings/sgx-native/build/Release/libtdx_attest.so.1 +0 -0
  19. package/bindings/sgx-native/build/Release/sgx_native.node +0 -0
  20. package/bindings/sgx-native/package-lock.json +0 -23
  21. package/bindings/sp-sev/.github/auto_assign-issues.yml +0 -5
  22. package/bindings/sp-sev/.github/auto_assign.yml +0 -21
  23. package/bindings/sp-sev/.github/dependabot.yml +0 -6
  24. package/bindings/sp-sev/.github/workflows/dco.yml +0 -10
  25. package/bindings/sp-sev/.github/workflows/lint.yml +0 -56
  26. package/bindings/sp-sev/.github/workflows/test.yml +0 -215
  27. package/bindings/sp-sev/.rustfmt.toml +0 -2
  28. package/bindings/sp-sev/CODEOWNERS +0 -1
  29. package/bindings/sp-sev/Cargo.lock +0 -2461
  30. package/bindings/sp-sev/Cargo.toml +0 -80
  31. package/bindings/sp-sev/LICENSE +0 -201
  32. package/bindings/sp-sev/README.md +0 -82
  33. package/bindings/sp-sev/build.rs +0 -17
  34. package/bindings/sp-sev/docs/attestation/README.md +0 -239
  35. package/bindings/sp-sev/docs/attestation/certchain.dot +0 -14
  36. package/bindings/sp-sev/docs/attestation/certchain.dot.png +0 -0
  37. package/bindings/sp-sev/docs/attestation/prerequisites.md +0 -6
  38. package/bindings/sp-sev/docs/attestation/process.msc +0 -60
  39. package/bindings/sp-sev/docs/attestation/process.msc.png +0 -0
  40. package/bindings/sp-sev/docs/attestation/protections.md +0 -53
  41. package/bindings/sp-sev/package-version.py +0 -11
  42. package/bindings/sp-sev/tests/api.rs +0 -194
  43. package/bindings/sp-sev/tests/certs.rs +0 -142
  44. package/bindings/sp-sev/tests/certs_data/cert_chain_milan +0 -74
  45. package/bindings/sp-sev/tests/certs_data/cert_chain_turin +0 -74
  46. package/bindings/sp-sev/tests/certs_data/report_milan.hex +0 -1
  47. package/bindings/sp-sev/tests/certs_data/vcek_milan.der +0 -0
  48. package/bindings/sp-sev/tests/certs_data/vcek_turin.der +0 -0
  49. package/bindings/sp-sev/tests/guest.rs +0 -57
  50. package/bindings/sp-sev/tests/id-block.rs +0 -172
  51. package/bindings/sp-sev/tests/measurement/ovmf_AmdSev_suffix.bin +0 -0
  52. package/bindings/sp-sev/tests/measurement/ovmf_OvmfX64_suffix.bin +0 -0
  53. package/bindings/sp-sev/tests/measurement/test_auth_block.bin +0 -0
  54. package/bindings/sp-sev/tests/measurement/test_auth_key.pem +0 -6
  55. package/bindings/sp-sev/tests/measurement/test_auth_sig.bin +0 -0
  56. package/bindings/sp-sev/tests/measurement/test_id_key.pem +0 -6
  57. package/bindings/sp-sev/tests/measurement/test_id_sig.bin +0 -0
  58. package/bindings/sp-sev/tests/measurement.rs +0 -510
  59. package/bindings/sp-sev/tests/naples/ark.cert.bad +0 -0
  60. package/bindings/sp-sev/tests/naples/ark.cert.sig +0 -0
  61. package/bindings/sp-sev/tests/naples/ark.rs +0 -38
  62. package/bindings/sp-sev/tests/naples/ask.rs +0 -29
  63. package/bindings/sp-sev/tests/naples/cek.cert +0 -0
  64. package/bindings/sp-sev/tests/naples/cek.rs +0 -30
  65. package/bindings/sp-sev/tests/naples/mod.rs +0 -20
  66. package/bindings/sp-sev/tests/naples/oca.cert +0 -0
  67. package/bindings/sp-sev/tests/naples/oca.rs +0 -45
  68. package/bindings/sp-sev/tests/naples/pdh.cert +0 -0
  69. package/bindings/sp-sev/tests/naples/pdh.rs +0 -28
  70. package/bindings/sp-sev/tests/naples/pek.cert +0 -0
  71. package/bindings/sp-sev/tests/naples/pek.rs +0 -32
  72. package/bindings/sp-sev/tests/rome/ark.rs +0 -33
  73. package/bindings/sp-sev/tests/rome/ask.rs +0 -29
  74. package/bindings/sp-sev/tests/rome/cek.cert +0 -0
  75. package/bindings/sp-sev/tests/rome/cek.rs +0 -29
  76. package/bindings/sp-sev/tests/rome/mod.rs +0 -16
  77. package/bindings/sp-sev/tests/rome/oca.cert +0 -0
  78. package/bindings/sp-sev/tests/rome/oca.rs +0 -45
  79. package/bindings/sp-sev/tests/rome/pdh.cert +0 -0
  80. package/bindings/sp-sev/tests/rome/pdh.rs +0 -28
  81. package/bindings/sp-sev/tests/rome/pek.cert +0 -0
  82. package/bindings/sp-sev/tests/rome/pek.rs +0 -32
  83. package/bindings/sp-sev/tests/session.rs +0 -39
  84. package/bindings/sp-sev/tests/sev_launch.rs +0 -120
  85. package/bindings/sp-sev/tests/snp_launch.rs +0 -108
  86. package/bindings/utils/virtee/LICENSE +0 -201
  87. package/bindings/utils/virtee/libsev.so +0 -0
  88. package/bindings/utils/virtee/snpguest +0 -0
  89. package/dist/proto/AmdSevSnp.d.ts +0 -194
  90. package/dist/proto/AmdSevSnp.js +0 -363
  91. package/dist/sgx-native-module/consts.d.ts +0 -24
  92. package/dist/sgx-native-module/consts.js +0 -38
  93. package/dist/sgx-native-module/dcap-quote-verify.service.d.ts +0 -12
  94. package/dist/sgx-native-module/dcap-quote-verify.service.js +0 -84
  95. package/dist/sgx-native-module/enclave.service.d.ts +0 -93
  96. package/dist/sgx-native-module/enclave.service.js +0 -211
  97. package/dist/sgx-native-module/errors.d.ts +0 -19
  98. package/dist/sgx-native-module/errors.js +0 -69
  99. package/dist/sgx-native-module/helpers.d.ts +0 -1
  100. package/dist/sgx-native-module/helpers.js +0 -50
  101. package/dist/sgx-native-module/index.d.ts +0 -9
  102. package/dist/sgx-native-module/index.js +0 -26
  103. package/dist/sgx-native-module/pki.service.d.ts +0 -50
  104. package/dist/sgx-native-module/pki.service.js +0 -74
  105. package/dist/sgx-native-module/sev-snp-mrenclave.d.ts +0 -59
  106. package/dist/sgx-native-module/sev-snp-mrenclave.js +0 -322
  107. package/dist/sgx-native-module/sev-snp-schema.d.ts +0 -22
  108. package/dist/sgx-native-module/sev-snp-schema.js +0 -24
  109. package/dist/sgx-native-module/sev-snp.d.ts +0 -127
  110. package/dist/sgx-native-module/sev-snp.js +0 -513
  111. package/dto/src/AmdSevSnp.proto +0 -31
  112. package/dto/src/Compression.proto +0 -11
  113. package/dto/src/Hash.proto +0 -6
  114. package/dto/src/OrderReport.proto +0 -21
  115. package/dto/src/TRI.proto +0 -22
  116. package/dto/src/TeeDeviceInfo.proto +0 -46
@@ -1,363 +0,0 @@
1
- "use strict";
2
- // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
- // versions:
4
- // protoc-gen-ts_proto v1.181.2
5
- // protoc v6.30.1
6
- // source: AmdSevSnp.proto
7
- var __importDefault = (this && this.__importDefault) || function (mod) {
8
- return (mod && mod.__esModule) ? mod : { "default": mod };
9
- };
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.SNPReportWithChain = exports.SNPReport = exports.SnpCert = exports.sevSnpCertificateFormatToJSON = exports.sevSnpCertificateFormatFromJSON = exports.SevSnpCertificateFormat = exports.sevSNPCertTypeToJSON = exports.sevSNPCertTypeFromJSON = exports.SevSNPCertType = exports.protobufPackage = void 0;
12
- /* eslint-disable */
13
- const minimal_js_1 = __importDefault(require("protobufjs/minimal.js"));
14
- exports.protobufPackage = "";
15
- var SevSNPCertType;
16
- (function (SevSNPCertType) {
17
- SevSNPCertType[SevSNPCertType["ARK"] = 0] = "ARK";
18
- SevSNPCertType[SevSNPCertType["ASK"] = 1] = "ASK";
19
- SevSNPCertType[SevSNPCertType["VCEK"] = 2] = "VCEK";
20
- })(SevSNPCertType || (exports.SevSNPCertType = SevSNPCertType = {}));
21
- function sevSNPCertTypeFromJSON(object) {
22
- switch (object) {
23
- case 0:
24
- case "ARK":
25
- return SevSNPCertType.ARK;
26
- case 1:
27
- case "ASK":
28
- return SevSNPCertType.ASK;
29
- case 2:
30
- case "VCEK":
31
- return SevSNPCertType.VCEK;
32
- default:
33
- throw new globalThis.Error("Unrecognized enum value " + object + " for enum SevSNPCertType");
34
- }
35
- }
36
- exports.sevSNPCertTypeFromJSON = sevSNPCertTypeFromJSON;
37
- function sevSNPCertTypeToJSON(object) {
38
- switch (object) {
39
- case SevSNPCertType.ARK:
40
- return "ARK";
41
- case SevSNPCertType.ASK:
42
- return "ASK";
43
- case SevSNPCertType.VCEK:
44
- return "VCEK";
45
- default:
46
- throw new globalThis.Error("Unrecognized enum value " + object + " for enum SevSNPCertType");
47
- }
48
- }
49
- exports.sevSNPCertTypeToJSON = sevSNPCertTypeToJSON;
50
- var SevSnpCertificateFormat;
51
- (function (SevSnpCertificateFormat) {
52
- SevSnpCertificateFormat[SevSnpCertificateFormat["PEM"] = 0] = "PEM";
53
- SevSnpCertificateFormat[SevSnpCertificateFormat["DER"] = 1] = "DER";
54
- })(SevSnpCertificateFormat || (exports.SevSnpCertificateFormat = SevSnpCertificateFormat = {}));
55
- function sevSnpCertificateFormatFromJSON(object) {
56
- switch (object) {
57
- case 0:
58
- case "PEM":
59
- return SevSnpCertificateFormat.PEM;
60
- case 1:
61
- case "DER":
62
- return SevSnpCertificateFormat.DER;
63
- default:
64
- throw new globalThis.Error("Unrecognized enum value " + object + " for enum SevSnpCertificateFormat");
65
- }
66
- }
67
- exports.sevSnpCertificateFormatFromJSON = sevSnpCertificateFormatFromJSON;
68
- function sevSnpCertificateFormatToJSON(object) {
69
- switch (object) {
70
- case SevSnpCertificateFormat.PEM:
71
- return "PEM";
72
- case SevSnpCertificateFormat.DER:
73
- return "DER";
74
- default:
75
- throw new globalThis.Error("Unrecognized enum value " + object + " for enum SevSnpCertificateFormat");
76
- }
77
- }
78
- exports.sevSnpCertificateFormatToJSON = sevSnpCertificateFormatToJSON;
79
- function createBaseSnpCert() {
80
- return { type: 0, cert: new Uint8Array(0), format: 0 };
81
- }
82
- exports.SnpCert = {
83
- encode(message, writer = minimal_js_1.default.Writer.create()) {
84
- if (message.type !== 0) {
85
- writer.uint32(8).int32(message.type);
86
- }
87
- if (message.cert.length !== 0) {
88
- writer.uint32(18).bytes(message.cert);
89
- }
90
- if (message.format !== 0) {
91
- writer.uint32(24).int32(message.format);
92
- }
93
- return writer;
94
- },
95
- decode(input, length) {
96
- const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
97
- let end = length === undefined ? reader.len : reader.pos + length;
98
- const message = createBaseSnpCert();
99
- while (reader.pos < end) {
100
- const tag = reader.uint32();
101
- switch (tag >>> 3) {
102
- case 1:
103
- if (tag !== 8) {
104
- break;
105
- }
106
- message.type = reader.int32();
107
- continue;
108
- case 2:
109
- if (tag !== 18) {
110
- break;
111
- }
112
- message.cert = reader.bytes();
113
- continue;
114
- case 3:
115
- if (tag !== 24) {
116
- break;
117
- }
118
- message.format = reader.int32();
119
- continue;
120
- }
121
- if ((tag & 7) === 4 || tag === 0) {
122
- break;
123
- }
124
- reader.skipType(tag & 7);
125
- }
126
- return message;
127
- },
128
- fromJSON(object) {
129
- return {
130
- type: isSet(object.type) ? sevSNPCertTypeFromJSON(object.type) : 0,
131
- cert: isSet(object.cert) ? bytesFromBase64(object.cert) : new Uint8Array(0),
132
- format: isSet(object.format) ? sevSnpCertificateFormatFromJSON(object.format) : 0,
133
- };
134
- },
135
- toJSON(message) {
136
- const obj = {};
137
- if (message.type !== 0) {
138
- obj.type = sevSNPCertTypeToJSON(message.type);
139
- }
140
- if (message.cert.length !== 0) {
141
- obj.cert = base64FromBytes(message.cert);
142
- }
143
- if (message.format !== 0) {
144
- obj.format = sevSnpCertificateFormatToJSON(message.format);
145
- }
146
- return obj;
147
- },
148
- create(base) {
149
- return exports.SnpCert.fromPartial(base ?? {});
150
- },
151
- fromPartial(object) {
152
- const message = createBaseSnpCert();
153
- message.type = object.type ?? 0;
154
- message.cert = object.cert ?? new Uint8Array(0);
155
- message.format = object.format ?? 0;
156
- return message;
157
- },
158
- };
159
- function createBaseSNPReport() {
160
- return { rawReport: new Uint8Array(0), cpuSig: 0, cores: 0, cmdLineHash: new Uint8Array(0), build: "" };
161
- }
162
- exports.SNPReport = {
163
- encode(message, writer = minimal_js_1.default.Writer.create()) {
164
- if (message.rawReport.length !== 0) {
165
- writer.uint32(10).bytes(message.rawReport);
166
- }
167
- if (message.cpuSig !== 0) {
168
- writer.uint32(16).uint32(message.cpuSig);
169
- }
170
- if (message.cores !== 0) {
171
- writer.uint32(24).uint32(message.cores);
172
- }
173
- if (message.cmdLineHash.length !== 0) {
174
- writer.uint32(34).bytes(message.cmdLineHash);
175
- }
176
- if (message.build !== "") {
177
- writer.uint32(42).string(message.build);
178
- }
179
- return writer;
180
- },
181
- decode(input, length) {
182
- const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
183
- let end = length === undefined ? reader.len : reader.pos + length;
184
- const message = createBaseSNPReport();
185
- while (reader.pos < end) {
186
- const tag = reader.uint32();
187
- switch (tag >>> 3) {
188
- case 1:
189
- if (tag !== 10) {
190
- break;
191
- }
192
- message.rawReport = reader.bytes();
193
- continue;
194
- case 2:
195
- if (tag !== 16) {
196
- break;
197
- }
198
- message.cpuSig = reader.uint32();
199
- continue;
200
- case 3:
201
- if (tag !== 24) {
202
- break;
203
- }
204
- message.cores = reader.uint32();
205
- continue;
206
- case 4:
207
- if (tag !== 34) {
208
- break;
209
- }
210
- message.cmdLineHash = reader.bytes();
211
- continue;
212
- case 5:
213
- if (tag !== 42) {
214
- break;
215
- }
216
- message.build = reader.string();
217
- continue;
218
- }
219
- if ((tag & 7) === 4 || tag === 0) {
220
- break;
221
- }
222
- reader.skipType(tag & 7);
223
- }
224
- return message;
225
- },
226
- fromJSON(object) {
227
- return {
228
- rawReport: isSet(object.rawReport) ? bytesFromBase64(object.rawReport) : new Uint8Array(0),
229
- cpuSig: isSet(object.cpuSig) ? globalThis.Number(object.cpuSig) : 0,
230
- cores: isSet(object.cores) ? globalThis.Number(object.cores) : 0,
231
- cmdLineHash: isSet(object.cmdLineHash) ? bytesFromBase64(object.cmdLineHash) : new Uint8Array(0),
232
- build: isSet(object.build) ? globalThis.String(object.build) : "",
233
- };
234
- },
235
- toJSON(message) {
236
- const obj = {};
237
- if (message.rawReport.length !== 0) {
238
- obj.rawReport = base64FromBytes(message.rawReport);
239
- }
240
- if (message.cpuSig !== 0) {
241
- obj.cpuSig = Math.round(message.cpuSig);
242
- }
243
- if (message.cores !== 0) {
244
- obj.cores = Math.round(message.cores);
245
- }
246
- if (message.cmdLineHash.length !== 0) {
247
- obj.cmdLineHash = base64FromBytes(message.cmdLineHash);
248
- }
249
- if (message.build !== "") {
250
- obj.build = message.build;
251
- }
252
- return obj;
253
- },
254
- create(base) {
255
- return exports.SNPReport.fromPartial(base ?? {});
256
- },
257
- fromPartial(object) {
258
- const message = createBaseSNPReport();
259
- message.rawReport = object.rawReport ?? new Uint8Array(0);
260
- message.cpuSig = object.cpuSig ?? 0;
261
- message.cores = object.cores ?? 0;
262
- message.cmdLineHash = object.cmdLineHash ?? new Uint8Array(0);
263
- message.build = object.build ?? "";
264
- return message;
265
- },
266
- };
267
- function createBaseSNPReportWithChain() {
268
- return { snpReport: undefined, certs: [] };
269
- }
270
- exports.SNPReportWithChain = {
271
- encode(message, writer = minimal_js_1.default.Writer.create()) {
272
- if (message.snpReport !== undefined) {
273
- exports.SNPReport.encode(message.snpReport, writer.uint32(10).fork()).ldelim();
274
- }
275
- for (const v of message.certs) {
276
- exports.SnpCert.encode(v, writer.uint32(18).fork()).ldelim();
277
- }
278
- return writer;
279
- },
280
- decode(input, length) {
281
- const reader = input instanceof minimal_js_1.default.Reader ? input : minimal_js_1.default.Reader.create(input);
282
- let end = length === undefined ? reader.len : reader.pos + length;
283
- const message = createBaseSNPReportWithChain();
284
- while (reader.pos < end) {
285
- const tag = reader.uint32();
286
- switch (tag >>> 3) {
287
- case 1:
288
- if (tag !== 10) {
289
- break;
290
- }
291
- message.snpReport = exports.SNPReport.decode(reader, reader.uint32());
292
- continue;
293
- case 2:
294
- if (tag !== 18) {
295
- break;
296
- }
297
- message.certs.push(exports.SnpCert.decode(reader, reader.uint32()));
298
- continue;
299
- }
300
- if ((tag & 7) === 4 || tag === 0) {
301
- break;
302
- }
303
- reader.skipType(tag & 7);
304
- }
305
- return message;
306
- },
307
- fromJSON(object) {
308
- return {
309
- snpReport: isSet(object.snpReport) ? exports.SNPReport.fromJSON(object.snpReport) : undefined,
310
- certs: globalThis.Array.isArray(object?.certs) ? object.certs.map((e) => exports.SnpCert.fromJSON(e)) : [],
311
- };
312
- },
313
- toJSON(message) {
314
- const obj = {};
315
- if (message.snpReport !== undefined) {
316
- obj.snpReport = exports.SNPReport.toJSON(message.snpReport);
317
- }
318
- if (message.certs?.length) {
319
- obj.certs = message.certs.map((e) => exports.SnpCert.toJSON(e));
320
- }
321
- return obj;
322
- },
323
- create(base) {
324
- return exports.SNPReportWithChain.fromPartial(base ?? {});
325
- },
326
- fromPartial(object) {
327
- const message = createBaseSNPReportWithChain();
328
- message.snpReport = (object.snpReport !== undefined && object.snpReport !== null)
329
- ? exports.SNPReport.fromPartial(object.snpReport)
330
- : undefined;
331
- message.certs = object.certs?.map((e) => exports.SnpCert.fromPartial(e)) || [];
332
- return message;
333
- },
334
- };
335
- function bytesFromBase64(b64) {
336
- if (globalThis.Buffer) {
337
- return Uint8Array.from(globalThis.Buffer.from(b64, "base64"));
338
- }
339
- else {
340
- const bin = globalThis.atob(b64);
341
- const arr = new Uint8Array(bin.length);
342
- for (let i = 0; i < bin.length; ++i) {
343
- arr[i] = bin.charCodeAt(i);
344
- }
345
- return arr;
346
- }
347
- }
348
- function base64FromBytes(arr) {
349
- if (globalThis.Buffer) {
350
- return globalThis.Buffer.from(arr).toString("base64");
351
- }
352
- else {
353
- const bin = [];
354
- arr.forEach((byte) => {
355
- bin.push(globalThis.String.fromCharCode(byte));
356
- });
357
- return globalThis.btoa(bin.join(""));
358
- }
359
- }
360
- function isSet(value) {
361
- return value !== null && value !== undefined;
362
- }
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQW1kU2V2U25wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3RvL0FtZFNldlNucC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEO0FBQ3RELFlBQVk7QUFDWixrQ0FBa0M7QUFDbEMsaUNBQWlDO0FBQ2pDLDBCQUEwQjs7Ozs7O0FBRTFCLG9CQUFvQjtBQUNwQix1RUFBd0M7QUFFM0IsUUFBQSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBRWxDLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN4QixpREFBTyxDQUFBO0lBQ1AsaURBQU8sQ0FBQTtJQUNQLG1EQUFRLENBQUE7QUFDVixDQUFDLEVBSlcsY0FBYyw4QkFBZCxjQUFjLFFBSXpCO0FBRUQsU0FBZ0Isc0JBQXNCLENBQUMsTUFBVztJQUNoRCxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLEtBQUs7WUFDUixPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFDNUIsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLEtBQUs7WUFDUixPQUFPLGNBQWMsQ0FBQyxHQUFHLENBQUM7UUFDNUIsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLE1BQU07WUFDVCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDN0I7WUFDRSxNQUFNLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsQ0FBQztJQUNqRyxDQUFDO0FBQ0gsQ0FBQztBQWRELHdEQWNDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsTUFBc0I7SUFDekQsUUFBUSxNQUFNLEVBQUUsQ0FBQztRQUNmLEtBQUssY0FBYyxDQUFDLEdBQUc7WUFDckIsT0FBTyxLQUFLLENBQUM7UUFDZixLQUFLLGNBQWMsQ0FBQyxHQUFHO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxjQUFjLENBQUMsSUFBSTtZQUN0QixP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
@@ -1,24 +0,0 @@
1
- export declare enum KeyType {
2
- SGX_KEYSELECT_EINITTOKEN = 0,
3
- SGX_KEYSELECT_PROVISION = 1,
4
- SGX_KEYSELECT_PROVISION_SEAL = 2,
5
- SGX_KEYSELECT_REPORT = 3,
6
- SGX_KEYSELECT_SEAL = 4
7
- }
8
- export declare enum KeyPolicy {
9
- SGX_KEYPOLICY_MRENCLAVE = 1,
10
- SGX_KEYPOLICY_MRSIGNER = 2,
11
- SGX_KEYPOLICY_NOISVPRODID = 4,
12
- SGX_KEYPOLICY_CONFIGID = 8,
13
- SGX_KEYPOLICY_ISVFAMILYID = 16,
14
- SGX_KEYPOLICY_ISVEXTPRODID = 32
15
- }
16
- export declare enum PckFlag {
17
- PCK_FLAG_FALSE = 0,
18
- PCK_FLAG_TRUE = 1,
19
- PCK_FLAG_UNDEFINED = 2
20
- }
21
- export type QuoteVerificationResultType = {
22
- verificationResult: number;
23
- smtEnabled: PckFlag;
24
- };
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PckFlag = exports.KeyPolicy = exports.KeyType = void 0;
4
- var KeyType;
5
- (function (KeyType) {
6
- // Launch key
7
- KeyType[KeyType["SGX_KEYSELECT_EINITTOKEN"] = 0] = "SGX_KEYSELECT_EINITTOKEN";
8
- // Provisioning key
9
- KeyType[KeyType["SGX_KEYSELECT_PROVISION"] = 1] = "SGX_KEYSELECT_PROVISION";
10
- // Provisioning seal key
11
- KeyType[KeyType["SGX_KEYSELECT_PROVISION_SEAL"] = 2] = "SGX_KEYSELECT_PROVISION_SEAL";
12
- // Report key
13
- KeyType[KeyType["SGX_KEYSELECT_REPORT"] = 3] = "SGX_KEYSELECT_REPORT";
14
- // Seal key
15
- KeyType[KeyType["SGX_KEYSELECT_SEAL"] = 4] = "SGX_KEYSELECT_SEAL";
16
- })(KeyType || (exports.KeyType = KeyType = {}));
17
- var KeyPolicy;
18
- (function (KeyPolicy) {
19
- // Derive key using the enclave’s ENCLAVE measurement register
20
- KeyPolicy[KeyPolicy["SGX_KEYPOLICY_MRENCLAVE"] = 1] = "SGX_KEYPOLICY_MRENCLAVE";
21
- // Derive key using the enclave’s SIGNER measurement register
22
- KeyPolicy[KeyPolicy["SGX_KEYPOLICY_MRSIGNER"] = 2] = "SGX_KEYPOLICY_MRSIGNER";
23
- // Derive key without the enclave's ISVPRODID
24
- KeyPolicy[KeyPolicy["SGX_KEYPOLICY_NOISVPRODID"] = 4] = "SGX_KEYPOLICY_NOISVPRODID";
25
- // Derive key with the enclave's CONFIGID
26
- KeyPolicy[KeyPolicy["SGX_KEYPOLICY_CONFIGID"] = 8] = "SGX_KEYPOLICY_CONFIGID";
27
- // Derive key with the enclave's ISVFAMILYID
28
- KeyPolicy[KeyPolicy["SGX_KEYPOLICY_ISVFAMILYID"] = 16] = "SGX_KEYPOLICY_ISVFAMILYID";
29
- // Derive key with the enclave's ISVEXTPRODID
30
- KeyPolicy[KeyPolicy["SGX_KEYPOLICY_ISVEXTPRODID"] = 32] = "SGX_KEYPOLICY_ISVEXTPRODID";
31
- })(KeyPolicy || (exports.KeyPolicy = KeyPolicy = {}));
32
- var PckFlag;
33
- (function (PckFlag) {
34
- PckFlag[PckFlag["PCK_FLAG_FALSE"] = 0] = "PCK_FLAG_FALSE";
35
- PckFlag[PckFlag["PCK_FLAG_TRUE"] = 1] = "PCK_FLAG_TRUE";
36
- PckFlag[PckFlag["PCK_FLAG_UNDEFINED"] = 2] = "PCK_FLAG_UNDEFINED";
37
- })(PckFlag || (exports.PckFlag = PckFlag = {}));
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NneC1uYXRpdmUtbW9kdWxlL2NvbnN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLE9BZVg7QUFmRCxXQUFZLE9BQU87SUFDZixhQUFhO0lBQ2IsNkVBQWlDLENBQUE7SUFFakMsbUJBQW1CO0lBQ25CLDJFQUFnQyxDQUFBO0lBRWhDLHdCQUF3QjtJQUN4QixxRkFBcUMsQ0FBQTtJQUVyQyxhQUFhO0lBQ2IscUVBQTZCLENBQUE7SUFFN0IsV0FBVztJQUNYLGlFQUEyQixDQUFBO0FBQy9CLENBQUMsRUFmVyxPQUFPLHVCQUFQLE9BQU8sUUFlbEI7QUFFRCxJQUFZLFNBa0JYO0FBbEJELFdBQVksU0FBUztJQUNqQiw4REFBOEQ7SUFDOUQsK0VBQWdDLENBQUE7SUFFaEMsNkRBQTZEO0lBQzdELDZFQUErQixDQUFBO0lBRS9CLDZDQUE2QztJQUM3QyxtRkFBa0MsQ0FBQTtJQUVsQyx5Q0FBeUM7SUFDekMsNkVBQStCLENBQUE7SUFFL0IsNENBQTRDO0lBQzVDLG9GQUFrQyxDQUFBO0lBRWxDLDZDQUE2QztJQUM3QyxzRkFBbUMsQ0FBQTtBQUN2QyxDQUFDLEVBbEJXLFNBQVMseUJBQVQsU0FBUyxRQWtCcEI7QUFFRCxJQUFZLE9BSVg7QUFKRCxXQUFZLE9BQU87SUFDZix5REFBa0IsQ0FBQTtJQUNsQix1REFBYSxDQUFBO0lBQ2IsaUVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQUpXLE9BQU8sdUJBQVAsT0FBTyxRQUlsQiJ9
@@ -1,12 +0,0 @@
1
- /// <reference types="node" />
2
- export declare class DcapQuoteVerifyService {
3
- private readonly quoteVerifier;
4
- private static isInGramineMode;
5
- private static executeLikeWithMutex;
6
- constructor();
7
- extractQuoteFromCert(pemOrDerCert: Buffer): Promise<Buffer>;
8
- validateQuoteVerifierEnclave(quote: Buffer, checkSecurity?: boolean): Promise<void>;
9
- generateTDXQuote(userData: Buffer): Promise<Buffer>;
10
- private validateMode;
11
- generateSGXQuote(userData: Buffer): Promise<Buffer>;
12
- }
@@ -1,84 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DcapQuoteVerifyService = void 0;
7
- const { SgxAttestationVerifier } = require("../../bindings/sgx-native/build/Release/sgx_native.node");
8
- const consts_1 = require("./consts");
9
- const errors_1 = require("./errors");
10
- const p_queue_1 = __importDefault(require("p-queue"));
11
- const fs_1 = require("fs");
12
- class DcapQuoteVerifyService {
13
- constructor() {
14
- this.quoteVerifier = new SgxAttestationVerifier();
15
- }
16
- async extractQuoteFromCert(pemOrDerCert) {
17
- if (!pemOrDerCert?.length) {
18
- throw new errors_1.AttestationDcapQuoteVerifyEnclaveError("empty certificate");
19
- }
20
- return this.quoteVerifier.extractQuoteFromCert(pemOrDerCert);
21
- }
22
- async validateQuoteVerifierEnclave(quote, checkSecurity) {
23
- checkSecurity = checkSecurity ?? false;
24
- if (!quote?.length) {
25
- throw new errors_1.AttestationDcapQuoteVerifyEnclaveError("empty quote");
26
- }
27
- const verifyResult = this.quoteVerifier.verifyQuoteDcap(quote);
28
- if (checkSecurity && verifyResult.smtEnabled === consts_1.PckFlag.PCK_FLAG_TRUE) {
29
- throw new errors_1.QuoteSecurityValidationError(verifyResult);
30
- }
31
- if (verifyResult.verificationResult !== 0) {
32
- throw new errors_1.QuoteValidationError(verifyResult.verificationResult);
33
- }
34
- }
35
- async generateTDXQuote(userData) {
36
- return this.quoteVerifier.generateTDXQuote(userData);
37
- }
38
- async validateMode() {
39
- if (DcapQuoteVerifyService.isInGramineMode) {
40
- return;
41
- }
42
- try {
43
- await DcapQuoteVerifyService.executeLikeWithMutex.add(async () => {
44
- await fs_1.promises.access("/dev/attestation/quote");
45
- DcapQuoteVerifyService.isInGramineMode = true;
46
- });
47
- }
48
- catch (error) {
49
- throw new errors_1.QuoteGenerationError(`invalid running mode, is it run in gramine / gramine? - ${error}`);
50
- }
51
- }
52
- async generateSGXQuote(userData) {
53
- if (!Buffer.isBuffer(userData)) {
54
- throw new Error("userData must be a Buffer");
55
- }
56
- if (userData.length === 0) {
57
- throw new Error("userData cannot be empty");
58
- }
59
- await this.validateMode();
60
- let result = Buffer.alloc(0);
61
- await DcapQuoteVerifyService.executeLikeWithMutex.add(async () => {
62
- try {
63
- await fs_1.promises.writeFile("/dev/attestation/user_report_data", Buffer.concat([userData, Buffer.alloc(64)]).slice(0, 64));
64
- result = await fs_1.promises.readFile("/dev/attestation/quote");
65
- if (result.length === 0) {
66
- throw new errors_1.QuoteGenerationError("Generated quote is empty");
67
- }
68
- }
69
- catch (error) {
70
- if (error instanceof Error) {
71
- throw new errors_1.QuoteGenerationError(`Failed to generate quote: ${error.message}`);
72
- }
73
- else {
74
- throw new errors_1.QuoteGenerationError("Failed to generate quote: unknown error");
75
- }
76
- }
77
- });
78
- return result;
79
- }
80
- }
81
- exports.DcapQuoteVerifyService = DcapQuoteVerifyService;
82
- DcapQuoteVerifyService.isInGramineMode = false;
83
- DcapQuoteVerifyService.executeLikeWithMutex = new p_queue_1.default({ concurrency: 1 });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGNhcC1xdW90ZS12ZXJpZnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZ3gtbmF0aXZlLW1vZHVsZS9kY2FwLXF1b3RlLXZlcmlmeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0FBQ3RHLHFDQUFnRTtBQUNoRSxxQ0FLa0I7QUFDbEIsc0RBQTRCO0FBQzVCLDJCQUE4QjtBQVE5QixNQUFhLHNCQUFzQjtJQUsvQjtRQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBb0I7UUFDM0MsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksK0NBQXNDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsS0FBYSxFQUFFLGFBQXVCO1FBQ3JFLGFBQWEsR0FBRyxhQUFhLElBQUksS0FBSyxDQUFDO1FBRXZDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLCtDQUFzQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxJQUFJLGFBQWEsSUFBSSxZQUFZLENBQUMsVUFBVSxLQUFLLGdCQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckUsTUFBTSxJQUFJLHFDQUE0QixDQUFDLFlBQVksQ0FB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
@@ -1,93 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { Readable } from "stream";
4
- import { KeyType, KeyPolicy } from "./consts";
5
- export type TeeDeviceInfoType = {
6
- cpus: Array<{
7
- vendorId: string;
8
- cpuFamily: number;
9
- model: number;
10
- modelName: string;
11
- physicalCores: number;
12
- logicalCores: number;
13
- baseFreq: number;
14
- maxFreq: number;
15
- }>;
16
- memSize: number;
17
- totalPhysicalCores: number;
18
- totalLogicalCores: number;
19
- };
20
- export type TeeRunCpuBenchmarkType = {
21
- cpuScore: number;
22
- cpuBenchmark: string;
23
- cpuCoresCount: number;
24
- };
25
- export type TeeRunMemoryBenchmarkType = {
26
- memBandwidth: number;
27
- memСonfirmedSize: number;
28
- };
29
- export type TeeGetKeyResult = {
30
- key: Buffer;
31
- request: Buffer;
32
- };
33
- export declare class EnclaveService {
34
- private readonly tmpFolder;
35
- private readonly sgx;
36
- constructor(tmpFolder?: string);
37
- /**
38
- * Requests secret keys from cpu.
39
- * @param type Value from enum @type KeyType
40
- * @param policy Value from enum @type KeyPolicy
41
- * @param previousRequest Request, for example received in a previous call to this method,
42
- * can be undefined - this way a new request will be generated
43
- * @returns Key and request, generated by method.
44
- */
45
- getSecretKey(type: KeyType, policy: KeyPolicy, previousRequest?: Buffer): Promise<TeeGetKeyResult>;
46
- /**
47
- * Determines whether the request to obtain the key is outdated, for example, cpu_svn or isv_svn were updated
48
- * @param previousRequest - Key Request
49
- * @returns True if the request is outdated, false - the request is up to date
50
- */
51
- isOutdatedRequest(previousRequest: Buffer): Promise<boolean>;
52
- /**
53
- * Returns TEE device information.
54
- * @returns
55
- */
56
- getTeeDeviceInfo(): Promise<TeeDeviceInfoType>;
57
- /**
58
- * Returns TEE cpu benchmark.
59
- * @param deviceInfoMemSize
60
- * @returns
61
- */
62
- getTeeDeviceCpuBenchmark(deviceInfoMemSize: number): Promise<TeeRunCpuBenchmarkType>;
63
- /**
64
- * Returns TEE memory benchmark.
65
- * @param deviceInfoTotalPhysicalCores
66
- * @returns
67
- */
68
- getTeeDeviceMemoryBenchmark(deviceInfoTotalPhysicalCores: number): Promise<TeeRunMemoryBenchmarkType>;
69
- /**
70
- * Writes input stream to the protected file.
71
- * @param inputStream
72
- * @param outputStream
73
- * @param filepath
74
- * @param secretKey
75
- */
76
- writeGramineProtectedFile(filepath: string, inputStream: Readable, secretKey: Buffer): Promise<{
77
- writtenSize: number;
78
- filesize: number;
79
- filepath: string;
80
- }>;
81
- /**
82
- * Reads protected file and write to output stream.
83
- * @param filepath
84
- * @param inputStream
85
- * @param outputStream
86
- * @param secretKey
87
- */
88
- readGramineProtectedFile(filepath: string, inputStream: Readable, secretKey: Buffer): Promise<{
89
- fileStream: Readable;
90
- filesize: number;
91
- filepath: string;
92
- }>;
93
- }