@super-protocol/pki-client 1.3.9 → 1.5.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.
- package/dist/challengeProvider/challengeProviderTdx.d.ts +6 -0
- package/dist/challengeProvider/challengeProviderTdx.js +42 -0
- package/dist/challengeProvider/index.d.ts +1 -0
- package/dist/challengeProvider/index.js +2 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/pkiClient.d.ts +8 -2
- package/dist/pkiClient.js +27 -4
- package/dist/pkiClientConfig.d.ts +30 -0
- package/dist/pkiClientConfig.js +27 -0
- package/dist/pkiClientFactory.d.ts +13 -0
- package/dist/pkiClientFactory.js +106 -0
- package/package.json +5 -4
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ChallengeProvider } from './challengeProvider';
|
|
3
|
+
import { Challenge } from '@super-protocol/pki-common';
|
|
4
|
+
export declare class ChallengeProviderTdx implements ChallengeProvider {
|
|
5
|
+
generateChallenge(userData: Buffer): Promise<Challenge>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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.ChallengeProviderTdx = void 0;
|
|
27
|
+
const pki_common_1 = require("@super-protocol/pki-common");
|
|
28
|
+
class ChallengeProviderTdx {
|
|
29
|
+
async generateChallenge(userData) {
|
|
30
|
+
// This module depends on native library that cannot be compiled for all architectures / operating systems.
|
|
31
|
+
// That is why we load it dynamically and use only when it's really needed.
|
|
32
|
+
const { SgxNative } = await Promise.resolve().then(() => __importStar(require('@super-protocol/addons-tee')));
|
|
33
|
+
const dcapVerifyService = new SgxNative.DcapQuoteVerifyService();
|
|
34
|
+
const quoteData = await dcapVerifyService.generateTDXQuote(userData);
|
|
35
|
+
return {
|
|
36
|
+
type: pki_common_1.ChallengeType.TDX,
|
|
37
|
+
quoteBase64: quoteData.toString('base64'),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ChallengeProviderTdx = ChallengeProviderTdx;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbGxlbmdlUHJvdmlkZXJUZHguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvY2hhbGxlbmdlUHJvdmlkZXJUZHgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwyREFBc0U7QUFFdEUsTUFBYSxvQkFBb0I7SUFDN0IsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFFBQWdCO1FBQ3BDLDJHQUEyRztRQUMzRywyRUFBMkU7UUFDM0UsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLHdEQUFhLDRCQUE0QixHQUFDLENBQUM7UUFFakUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRWpFLE1BQU0sU0FBUyxHQUFHLE1BQU0saUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsT0FBTztZQUNILElBQUksRUFBRSwwQkFBYSxDQUFDLEdBQUc7WUFDdkIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1NBQzVDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFkRCxvREFjQyJ9
|
|
@@ -16,5 +16,6 @@ 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("./challengeProviderSgx"), exports);
|
|
19
|
+
__exportStar(require("./challengeProviderTdx"), exports);
|
|
19
20
|
__exportStar(require("./challengeProviderUntrusted"), exports);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhbGxlbmdlUHJvdmlkZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyx5REFBdUM7QUFDdkMseURBQXVDO0FBQ3ZDLCtEQUE2QyJ9
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -16,4 +16,6 @@ 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("./pkiClient"), exports);
|
|
19
|
-
|
|
19
|
+
__exportStar(require("./pkiClientConfig"), exports);
|
|
20
|
+
__exportStar(require("./pkiClientFactory"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFvQztBQUNwQyw4Q0FBNEI7QUFDNUIsb0RBQWtDO0FBQ2xDLHFEQUFtQyJ9
|
package/dist/pkiClient.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TeeSslCertificate } from '@super-protocol/pki-common';
|
|
1
|
+
import { CertificateType, TeeSslCertificate, TeeSslCertificateFromCsr } from '@super-protocol/pki-common';
|
|
2
2
|
import { ChallengeProvider } from './challengeProvider';
|
|
3
3
|
import { AttestationServiceClient } from '@super-protocol/pki-api-client';
|
|
4
4
|
export interface SgxPkiClientOptions {
|
|
@@ -6,10 +6,16 @@ export interface SgxPkiClientOptions {
|
|
|
6
6
|
challengeProvider?: ChallengeProvider;
|
|
7
7
|
attestationServiceClient?: AttestationServiceClient;
|
|
8
8
|
}
|
|
9
|
+
export interface GenerateCertificateOptions {
|
|
10
|
+
certType: CertificateType;
|
|
11
|
+
}
|
|
9
12
|
export declare class PkiClient {
|
|
10
13
|
private readonly keyPair;
|
|
11
14
|
private readonly challengeProvider;
|
|
12
15
|
private readonly attestationServiceClient;
|
|
16
|
+
private readonly defaultOptions;
|
|
13
17
|
constructor(options?: SgxPkiClientOptions);
|
|
14
|
-
generateSslCertificate(domains: string[]): Promise<TeeSslCertificate>;
|
|
18
|
+
generateSslCertificate(domains: string[], options?: GenerateCertificateOptions): Promise<TeeSslCertificate>;
|
|
19
|
+
generateSslCertificateFromCsr(csrPem: string, options?: GenerateCertificateOptions): Promise<TeeSslCertificateFromCsr>;
|
|
20
|
+
private generateChallenge;
|
|
15
21
|
}
|
package/dist/pkiClient.js
CHANGED
|
@@ -48,6 +48,9 @@ class PkiClient {
|
|
|
48
48
|
keyPair;
|
|
49
49
|
challengeProvider;
|
|
50
50
|
attestationServiceClient;
|
|
51
|
+
defaultOptions = {
|
|
52
|
+
certType: pki_common_1.CertificateType.Basic,
|
|
53
|
+
};
|
|
51
54
|
constructor(options = {}) {
|
|
52
55
|
if (options.privateKeyPem) {
|
|
53
56
|
this.keyPair = {
|
|
@@ -64,14 +67,15 @@ class PkiClient {
|
|
|
64
67
|
options.attestationServiceClient ||
|
|
65
68
|
new pki_api_client_1.StaticAttestationServiceClient(AS_BASE_URL, AS_CA);
|
|
66
69
|
}
|
|
67
|
-
async generateSslCertificate(domains) {
|
|
70
|
+
async generateSslCertificate(domains, options = this.defaultOptions) {
|
|
68
71
|
const keys = this.keyPair;
|
|
69
|
-
const
|
|
70
|
-
const challenge = await this.challengeProvider.generateChallenge(publicKeyHash);
|
|
72
|
+
const challenge = await this.generateChallenge(keys.publicKeyPem);
|
|
71
73
|
const cert = await this.attestationServiceClient.generateCertificate({
|
|
72
74
|
domains,
|
|
73
75
|
publicKeyPem: keys.publicKeyPem,
|
|
74
76
|
challenge,
|
|
77
|
+
}, {
|
|
78
|
+
type: options.certType,
|
|
75
79
|
});
|
|
76
80
|
return {
|
|
77
81
|
certPem: cert.certPem,
|
|
@@ -80,6 +84,25 @@ class PkiClient {
|
|
|
80
84
|
keyPair: keys,
|
|
81
85
|
};
|
|
82
86
|
}
|
|
87
|
+
async generateSslCertificateFromCsr(csrPem, options = this.defaultOptions) {
|
|
88
|
+
const publicKey = (0, pki_common_1.getPublicKeyFromCsr)(csrPem);
|
|
89
|
+
const challenge = await this.generateChallenge(publicKey);
|
|
90
|
+
const cert = await this.attestationServiceClient.generateCertificateFromCsr({
|
|
91
|
+
csrPem,
|
|
92
|
+
challenge,
|
|
93
|
+
}, {
|
|
94
|
+
type: options.certType,
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
certPem: cert.certPem,
|
|
98
|
+
caBundle: cert.rootCertsPem,
|
|
99
|
+
domains: cert.domains,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
generateChallenge(publicKeyPem) {
|
|
103
|
+
const publicKeyHash = (0, pki_common_1.getPublicKeyPemHash)(publicKeyPem);
|
|
104
|
+
return this.challengeProvider.generateChallenge(publicKeyHash);
|
|
105
|
+
}
|
|
83
106
|
}
|
|
84
107
|
exports.PkiClient = PkiClient;
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGtpQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BraUNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFVb0M7QUFDcEMsMkRBQThFO0FBQzlFLG1FQUd3QztBQUV4QyxNQUFNLFdBQVcsR0FBRyxnREFBZ0QsQ0FBQztBQUNyRSxNQUFNLEtBQUssR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBc0NnQixDQUFDO0FBWS9CLE1BQWEsU0FBUztJQUNELE9BQU8sQ0FBYTtJQUNwQixpQkFBaUIsQ0FBb0I7SUFDckMsd0JBQXdCLENBQTJCO0lBQ25ELGNBQWMsR0FBRztRQUM5QixRQUFRLEVBQUUsNEJBQWUsQ0FBQyxLQUFLO0tBQ2xDLENBQUM7SUFFRixZQUFZLFVBQStCLEVBQUU7UUFDekMsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDWCxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7Z0JBQ3BDLFlBQVksRUFBRSxJQUFBLG9DQUF1QixFQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7YUFDL0QsQ0FBQztRQUNOLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFBLDRCQUFlLEdBQUUsQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQjtZQUNsQixPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSx3Q0FBb0IsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyx3QkFBd0I7WUFDekIsT0FBTyxDQUFDLHdCQUF3QjtnQkFDaEMsSUFBSSwrQ0FBOEIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FDeEIsT0FBaUIsRUFDakIsVUFBc0MsSUFBSSxDQUFDLGNBQWM7UUFFekQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUMxQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsbUJBQW1CLENBQ2hFO1lBQ0ksT0FBTztZQUNQLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTO1NBQ1osRUFDRDtZQUNJLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtTQUN6QixDQUNKLENBQUM7UUFDRixPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLElBQUk7U0FDaEIsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsNkJBQTZCLENBQy9CLE1BQWMsRUFDZCxVQUFzQyxJQUFJLENBQUMsY0FBYztRQUV6RCxNQUFNLFNBQVMsR0FBRyxJQUFBLGdDQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sSUFBSSxHQUNOLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLDBCQUEwQixDQUMxRDtZQUNJLE1BQU07WUFDTixTQUFTO1NBQ1osRUFDRDtZQUNJLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUTtTQUN6QixDQUNKLENBQUM7UUFFTixPQUFPO1lBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxZQUFvQjtRQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFBLGdDQUFtQixFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDSjtBQTVFRCw4QkE0RUMifQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ChallengeType } from '@super-protocol/pki-common';
|
|
2
|
+
import { Static } from '@sinclair/typebox';
|
|
3
|
+
declare const PkiClientConfigSchema: import("@sinclair/typebox").TObject<{
|
|
4
|
+
clientCertProvider: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
5
|
+
type: import("@sinclair/typebox").TLiteral<"pki-ca">;
|
|
6
|
+
challengeType: import("@sinclair/typebox").TEnum<typeof ChallengeType>;
|
|
7
|
+
baseUrl: import("@sinclair/typebox").TString<string>;
|
|
8
|
+
caBundle: import("@sinclair/typebox").TString<string>;
|
|
9
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
10
|
+
type: import("@sinclair/typebox").TLiteral<"static">;
|
|
11
|
+
certPem: import("@sinclair/typebox").TString<string>;
|
|
12
|
+
publicKeyPem: import("@sinclair/typebox").TString<string>;
|
|
13
|
+
privateKeyPem: import("@sinclair/typebox").TString<string>;
|
|
14
|
+
}>]>;
|
|
15
|
+
}>;
|
|
16
|
+
export type PkiClientConfig = Static<typeof PkiClientConfigSchema>;
|
|
17
|
+
export declare const PkiClientConfigSchemaCompiled: import("@sinclair/typebox/compiler").TypeCheck<import("@sinclair/typebox").TObject<{
|
|
18
|
+
clientCertProvider: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
19
|
+
type: import("@sinclair/typebox").TLiteral<"pki-ca">;
|
|
20
|
+
challengeType: import("@sinclair/typebox").TEnum<typeof ChallengeType>;
|
|
21
|
+
baseUrl: import("@sinclair/typebox").TString<string>;
|
|
22
|
+
caBundle: import("@sinclair/typebox").TString<string>;
|
|
23
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
24
|
+
type: import("@sinclair/typebox").TLiteral<"static">;
|
|
25
|
+
certPem: import("@sinclair/typebox").TString<string>;
|
|
26
|
+
publicKeyPem: import("@sinclair/typebox").TString<string>;
|
|
27
|
+
privateKeyPem: import("@sinclair/typebox").TString<string>;
|
|
28
|
+
}>]>;
|
|
29
|
+
}>>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PkiClientConfigSchemaCompiled = void 0;
|
|
4
|
+
const pki_common_1 = require("@super-protocol/pki-common");
|
|
5
|
+
const typebox_1 = require("@sinclair/typebox");
|
|
6
|
+
const compiler_1 = require("@sinclair/typebox/compiler");
|
|
7
|
+
const CaTeePkiCertProviderConfigSchema = typebox_1.Type.Object({
|
|
8
|
+
type: typebox_1.Type.Literal('pki-ca'),
|
|
9
|
+
challengeType: typebox_1.Type.Enum(pki_common_1.ChallengeType),
|
|
10
|
+
baseUrl: typebox_1.Type.String({ minLength: 1 }),
|
|
11
|
+
caBundle: typebox_1.Type.String({ minLength: 1 }),
|
|
12
|
+
});
|
|
13
|
+
const StaticTeePkiCertProviderConfigSchema = typebox_1.Type.Object({
|
|
14
|
+
type: typebox_1.Type.Literal('static'),
|
|
15
|
+
certPem: typebox_1.Type.String({ minLength: 1 }),
|
|
16
|
+
publicKeyPem: typebox_1.Type.String({ minLength: 1 }),
|
|
17
|
+
privateKeyPem: typebox_1.Type.String({ minLength: 1 }),
|
|
18
|
+
});
|
|
19
|
+
const TeePkiCertProviderConfigSchema = typebox_1.Type.Union([
|
|
20
|
+
CaTeePkiCertProviderConfigSchema,
|
|
21
|
+
StaticTeePkiCertProviderConfigSchema,
|
|
22
|
+
]);
|
|
23
|
+
const PkiClientConfigSchema = typebox_1.Type.Object({
|
|
24
|
+
clientCertProvider: TeePkiCertProviderConfigSchema,
|
|
25
|
+
});
|
|
26
|
+
exports.PkiClientConfigSchemaCompiled = compiler_1.TypeCompiler.Compile(PkiClientConfigSchema);
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGtpQ2xpZW50Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BraUNsaWVudENvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyREFBMkQ7QUFDM0QsK0NBQWlEO0FBQ2pELHlEQUEwRDtBQUUxRCxNQUFNLGdDQUFnQyxHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDakQsSUFBSSxFQUFFLGNBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQzVCLGFBQWEsRUFBRSxjQUFJLENBQUMsSUFBSSxDQUFDLDBCQUFhLENBQUM7SUFDdkMsT0FBTyxFQUFFLGNBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLGNBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FDMUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxvQ0FBb0MsR0FBRyxjQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JELElBQUksRUFBRSxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUM1QixPQUFPLEVBQUUsY0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEVBQUUsY0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxhQUFhLEVBQUUsY0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUMvQyxDQUFDLENBQUM7QUFFSCxNQUFNLDhCQUE4QixHQUFHLGNBQUksQ0FBQyxLQUFLLENBQUM7SUFDOUMsZ0NBQWdDO0lBQ2hDLG9DQUFvQztDQUN2QyxDQUFDLENBQUM7QUFFSCxNQUFNLHFCQUFxQixHQUFHLGNBQUksQ0FBQyxNQUFNLENBQUM7SUFDdEMsa0JBQWtCLEVBQUUsOEJBQThCO0NBQ3JELENBQUMsQ0FBQztBQUlVLFFBQUEsNkJBQTZCLEdBQUcsdUJBQVksQ0FBQyxPQUFPLENBQzdELHFCQUFxQixDQUN4QixDQUFDIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { PkiClientConfig } from './pkiClientConfig';
|
|
3
|
+
import { TeeSslCertificate } from '@super-protocol/pki-common';
|
|
4
|
+
import https from 'node:https';
|
|
5
|
+
export declare class PkiClientFactory {
|
|
6
|
+
private readonly config;
|
|
7
|
+
private readonly certPromise;
|
|
8
|
+
static fromConfigYaml(path: string): Promise<PkiClientFactory>;
|
|
9
|
+
constructor(config: PkiClientConfig);
|
|
10
|
+
getHTTPSAgent(): Promise<https.Agent>;
|
|
11
|
+
getCert(): Promise<TeeSslCertificate>;
|
|
12
|
+
private getCertificate;
|
|
13
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.PkiClientFactory = void 0;
|
|
30
|
+
const pkiClientConfig_1 = require("./pkiClientConfig");
|
|
31
|
+
const challengeProvider_1 = require("./challengeProvider");
|
|
32
|
+
const pki_common_1 = require("@super-protocol/pki-common");
|
|
33
|
+
const pki_api_client_1 = require("@super-protocol/pki-api-client");
|
|
34
|
+
const pkiClient_1 = require("./pkiClient");
|
|
35
|
+
const node_https_1 = __importDefault(require("node:https"));
|
|
36
|
+
const fs = __importStar(require("fs"));
|
|
37
|
+
const yaml = __importStar(require("yaml"));
|
|
38
|
+
const tls = __importStar(require("tls"));
|
|
39
|
+
class PkiClientFactory {
|
|
40
|
+
config;
|
|
41
|
+
certPromise;
|
|
42
|
+
static async fromConfigYaml(path) {
|
|
43
|
+
const data = await fs.promises.readFile(path, 'utf8');
|
|
44
|
+
const config = yaml.parse(data);
|
|
45
|
+
const checkResult = pkiClientConfig_1.PkiClientConfigSchemaCompiled.Check(config);
|
|
46
|
+
if (!checkResult) {
|
|
47
|
+
const error = pkiClientConfig_1.PkiClientConfigSchemaCompiled.Errors(config).First();
|
|
48
|
+
throw new Error(JSON.stringify(error));
|
|
49
|
+
}
|
|
50
|
+
return new PkiClientFactory(config);
|
|
51
|
+
}
|
|
52
|
+
constructor(config) {
|
|
53
|
+
this.config = config;
|
|
54
|
+
this.certPromise = this.getCertificate();
|
|
55
|
+
}
|
|
56
|
+
async getHTTPSAgent() {
|
|
57
|
+
const cert = await this.certPromise;
|
|
58
|
+
const httpsAgent = new node_https_1.default.Agent({
|
|
59
|
+
ca: [...tls.rootCertificates, cert.caBundle],
|
|
60
|
+
cert: cert.certPem,
|
|
61
|
+
key: cert.keyPair.privateKeyPem,
|
|
62
|
+
});
|
|
63
|
+
return httpsAgent;
|
|
64
|
+
}
|
|
65
|
+
async getCert() {
|
|
66
|
+
const cert = await this.certPromise;
|
|
67
|
+
return cert;
|
|
68
|
+
}
|
|
69
|
+
async getCertificate() {
|
|
70
|
+
switch (this.config.clientCertProvider.type) {
|
|
71
|
+
case 'static':
|
|
72
|
+
return {
|
|
73
|
+
certPem: this.config.clientCertProvider.certPem,
|
|
74
|
+
keyPair: {
|
|
75
|
+
publicKeyPem: this.config.clientCertProvider.publicKeyPem,
|
|
76
|
+
privateKeyPem: this.config.clientCertProvider.privateKeyPem,
|
|
77
|
+
},
|
|
78
|
+
caBundle: '',
|
|
79
|
+
domains: [''],
|
|
80
|
+
};
|
|
81
|
+
case 'pki-ca':
|
|
82
|
+
let challengeProvider;
|
|
83
|
+
switch (this.config.clientCertProvider.challengeType) {
|
|
84
|
+
case pki_common_1.ChallengeType.Untrusted:
|
|
85
|
+
challengeProvider = new challengeProvider_1.ChallengeProviderUntrusted(Buffer.from('none', 'ascii'));
|
|
86
|
+
break;
|
|
87
|
+
case pki_common_1.ChallengeType.SGXDCAP:
|
|
88
|
+
challengeProvider = new challengeProvider_1.ChallengeProviderSgx();
|
|
89
|
+
break;
|
|
90
|
+
case pki_common_1.ChallengeType.TDX:
|
|
91
|
+
challengeProvider = new challengeProvider_1.ChallengeProviderTdx();
|
|
92
|
+
break;
|
|
93
|
+
default:
|
|
94
|
+
throw new Error(`Challenge type "${this.config.clientCertProvider.challengeType} is not supported yet"`);
|
|
95
|
+
}
|
|
96
|
+
const attestationServiceClient = new pki_api_client_1.StaticAttestationServiceClient(this.config.clientCertProvider.baseUrl, this.config.clientCertProvider.caBundle);
|
|
97
|
+
const pkiClient = new pkiClient_1.PkiClient({
|
|
98
|
+
challengeProvider,
|
|
99
|
+
attestationServiceClient,
|
|
100
|
+
});
|
|
101
|
+
return await pkiClient.generateSslCertificate(['localhost']);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.PkiClientFactory = PkiClientFactory;
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGtpQ2xpZW50RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wa2lDbGllbnRGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBRzJCO0FBQzNCLDJEQUs2QjtBQUM3QiwyREFBOEU7QUFDOUUsbUVBQWdGO0FBQ2hGLDJDQUF3QztBQUN4Qyw0REFBK0I7QUFDL0IsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qix5Q0FBMkI7QUFFM0IsTUFBYSxnQkFBZ0I7SUFjSTtJQWJaLFdBQVcsQ0FBNkI7SUFFbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBWTtRQUMzQyxNQUFNLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBb0IsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRywrQ0FBNkIsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2YsTUFBTSxLQUFLLEdBQUcsK0NBQTZCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25FLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxPQUFPLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQTZCLE1BQXVCO1FBQXZCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQ2hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@super-protocol/pki-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"public": true,
|
|
5
5
|
"description": "",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "tsc -b",
|
|
17
17
|
"lint": "eslint --max-warnings=0 src",
|
|
18
|
-
"lint:fix": "eslint --fix src"
|
|
19
|
-
"publish": "npm publish --access public"
|
|
18
|
+
"lint:fix": "eslint --fix src"
|
|
20
19
|
},
|
|
21
20
|
"author": "Super Protocol",
|
|
22
21
|
"license": "ISC",
|
|
23
22
|
"dependencies": {
|
|
23
|
+
"@super-protocol/addons-tee": "^0.8.16",
|
|
24
24
|
"@super-protocol/pki-api-client": "*",
|
|
25
25
|
"@super-protocol/pki-common": "*",
|
|
26
|
-
"@super-protocol/tee-lib": "^0.2.6"
|
|
26
|
+
"@super-protocol/tee-lib": "^0.2.6",
|
|
27
|
+
"yaml": "^2.6.0"
|
|
27
28
|
}
|
|
28
29
|
}
|