@super-protocol/sdk-js 3.12.1-beta.2 → 3.13.0-beta.2
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/cjs/certificates/binary-splitter.d.ts +26 -0
- package/dist/cjs/certificates/binary-splitter.js +269 -0
- package/dist/cjs/certificates/generator.d.ts +38 -0
- package/dist/cjs/certificates/generator.js +248 -0
- package/dist/cjs/certificates/helper.d.ts +8 -4
- package/dist/cjs/certificates/helper.js +45 -17
- package/dist/cjs/certificates/index.d.ts +1 -0
- package/dist/cjs/certificates/index.js +2 -1
- package/dist/cjs/certificates/ocsp.d.ts +6 -1
- package/dist/cjs/certificates/ocsp.js +179 -23
- package/dist/cjs/certificates/serializer.d.ts +5 -0
- package/dist/cjs/certificates/serializer.js +98 -2
- package/dist/cjs/certificates/setup-crypto.d.ts +3 -0
- package/dist/cjs/certificates/setup-crypto.js +51 -0
- package/dist/cjs/certificates/testing-generate.d.ts +1 -0
- package/dist/cjs/certificates/testing-generate.js +115 -0
- package/dist/cjs/certificates/types.d.ts +107 -0
- package/dist/cjs/certificates/types.js +8 -1
- package/dist/cjs/connectors/BlockchainConnector.js +11 -8
- package/dist/cjs/connectors/BlockchainEventsListener.d.ts +4 -4
- package/dist/cjs/connectors/BlockchainEventsListener.js +9 -8
- package/dist/cjs/constants.d.ts +6 -1
- package/dist/cjs/constants.js +13 -5
- package/dist/cjs/index.d.ts +0 -2
- package/dist/cjs/index.js +3 -6
- package/dist/cjs/models/Offer.d.ts +1 -1
- package/dist/cjs/models/Offer.js +10 -3
- package/dist/cjs/models/Order.d.ts +1 -1
- package/dist/cjs/models/Order.js +21 -20
- package/dist/cjs/models/TeeOffer.d.ts +2 -2
- package/dist/cjs/models/TeeOffer.js +18 -3
- package/dist/cjs/proto/OrderReport.d.ts +206 -15
- package/dist/cjs/proto/OrderReport.js +169 -3
- package/dist/cjs/staticModels/ActiveOrders.d.ts +1 -1
- package/dist/cjs/staticModels/ActiveOrders.js +1 -1
- package/dist/cjs/staticModels/OfferResources.js +3 -4
- package/dist/cjs/staticModels/Offers.d.ts +3 -4
- package/dist/cjs/staticModels/Offers.js +16 -17
- package/dist/cjs/staticModels/OffersCommon.d.ts +18 -0
- package/dist/cjs/staticModels/OffersCommon.js +79 -0
- package/dist/cjs/staticModels/Orders.d.ts +6 -5
- package/dist/cjs/staticModels/Orders.js +96 -5
- package/dist/cjs/staticModels/SecretRequests.js +2 -3
- package/dist/cjs/staticModels/StaticModel.d.ts +14 -2
- package/dist/cjs/staticModels/StaticModel.js +90 -2
- package/dist/cjs/staticModels/SuperproToken.d.ts +26 -1
- package/dist/cjs/staticModels/SuperproToken.js +40 -1
- package/dist/cjs/staticModels/TeeOffers.d.ts +4 -4
- package/dist/cjs/staticModels/TeeOffers.js +17 -16
- package/dist/cjs/tee/OrderReportService.js +4 -2
- package/dist/cjs/tee/QuoteValidator.d.ts +3 -2
- package/dist/cjs/tee/QuoteValidator.js +5 -4
- package/dist/cjs/tee/TeeCertificateService.d.ts +1 -1
- package/dist/cjs/tee/TeeCertificateService.js +11 -14
- package/dist/cjs/tee/TeeSignatureVerifier.d.ts +6 -4
- package/dist/cjs/tee/TeeSignatureVerifier.js +60 -32
- package/dist/cjs/tee/types.d.ts +1 -1
- package/dist/cjs/types/Order.d.ts +28 -2
- package/dist/cjs/types/Order.js +23 -2
- package/dist/cjs/types/index.d.ts +0 -1
- package/dist/cjs/types/index.js +1 -2
- package/dist/cjs/utils/CryptoKeysTransformer.d.ts +4 -0
- package/dist/cjs/utils/CryptoKeysTransformer.js +50 -1
- package/dist/cjs/utils/NonceTracker.d.ts +1 -0
- package/dist/cjs/utils/NonceTracker.js +6 -2
- package/dist/cjs/utils/TxManager.d.ts +3 -0
- package/dist/cjs/utils/TxManager.js +88 -35
- package/dist/cjs/utils/helper.d.ts +11 -3
- package/dist/cjs/utils/helper.js +56 -12
- package/dist/cjs/utils/helpers/getRawRpc.d.ts +2 -0
- package/dist/cjs/utils/helpers/getRawRpc.js +19 -0
- package/dist/cjs/utils/helpers/index.d.ts +1 -0
- package/dist/cjs/utils/helpers/index.js +2 -1
- package/dist/cjs/utils/types.d.ts +14 -0
- package/dist/cjs/utils/types.js +3 -0
- package/dist/mjs/certificates/binary-splitter.d.ts +26 -0
- package/dist/mjs/certificates/binary-splitter.js +265 -0
- package/dist/mjs/certificates/generator.d.ts +38 -0
- package/dist/mjs/certificates/generator.js +241 -0
- package/dist/mjs/certificates/helper.d.ts +8 -4
- package/dist/mjs/certificates/helper.js +45 -17
- package/dist/mjs/certificates/index.d.ts +1 -0
- package/dist/mjs/certificates/index.js +2 -1
- package/dist/mjs/certificates/ocsp.d.ts +6 -1
- package/dist/mjs/certificates/ocsp.js +180 -24
- package/dist/mjs/certificates/serializer.d.ts +5 -0
- package/dist/mjs/certificates/serializer.js +94 -1
- package/dist/mjs/certificates/setup-crypto.d.ts +3 -0
- package/dist/mjs/certificates/setup-crypto.js +22 -0
- package/dist/mjs/certificates/testing-generate.d.ts +1 -0
- package/dist/mjs/certificates/testing-generate.js +110 -0
- package/dist/mjs/certificates/types.d.ts +107 -0
- package/dist/mjs/certificates/types.js +7 -2
- package/dist/mjs/connectors/BlockchainConnector.js +11 -8
- package/dist/mjs/connectors/BlockchainEventsListener.d.ts +4 -4
- package/dist/mjs/connectors/BlockchainEventsListener.js +9 -8
- package/dist/mjs/constants.d.ts +6 -1
- package/dist/mjs/constants.js +12 -4
- package/dist/mjs/index.d.ts +0 -2
- package/dist/mjs/index.js +1 -3
- package/dist/mjs/models/Offer.d.ts +1 -1
- package/dist/mjs/models/Offer.js +10 -3
- package/dist/mjs/models/Order.d.ts +1 -1
- package/dist/mjs/models/Order.js +22 -21
- package/dist/mjs/models/TeeOffer.d.ts +2 -2
- package/dist/mjs/models/TeeOffer.js +18 -3
- package/dist/mjs/proto/OrderReport.d.ts +206 -15
- package/dist/mjs/proto/OrderReport.js +168 -2
- package/dist/mjs/staticModels/ActiveOrders.d.ts +1 -1
- package/dist/mjs/staticModels/ActiveOrders.js +1 -1
- package/dist/mjs/staticModels/OfferResources.js +4 -5
- package/dist/mjs/staticModels/Offers.d.ts +3 -4
- package/dist/mjs/staticModels/Offers.js +16 -17
- package/dist/mjs/staticModels/OffersCommon.d.ts +18 -0
- package/dist/mjs/staticModels/OffersCommon.js +73 -0
- package/dist/mjs/staticModels/Orders.d.ts +6 -5
- package/dist/mjs/staticModels/Orders.js +98 -7
- package/dist/mjs/staticModels/SecretRequests.js +3 -4
- package/dist/mjs/staticModels/StaticModel.d.ts +14 -2
- package/dist/mjs/staticModels/StaticModel.js +90 -2
- package/dist/mjs/staticModels/SuperproToken.d.ts +26 -1
- package/dist/mjs/staticModels/SuperproToken.js +40 -1
- package/dist/mjs/staticModels/TeeOffers.d.ts +4 -4
- package/dist/mjs/staticModels/TeeOffers.js +17 -16
- package/dist/mjs/tee/OrderReportService.js +4 -2
- package/dist/mjs/tee/QuoteValidator.d.ts +3 -2
- package/dist/mjs/tee/QuoteValidator.js +5 -4
- package/dist/mjs/tee/TeeCertificateService.d.ts +1 -1
- package/dist/mjs/tee/TeeCertificateService.js +12 -15
- package/dist/mjs/tee/TeeSignatureVerifier.d.ts +6 -4
- package/dist/mjs/tee/TeeSignatureVerifier.js +59 -31
- package/dist/mjs/tee/types.d.ts +1 -1
- package/dist/mjs/types/Order.d.ts +28 -2
- package/dist/mjs/types/Order.js +21 -1
- package/dist/mjs/types/index.d.ts +0 -1
- package/dist/mjs/types/index.js +1 -2
- package/dist/mjs/utils/CryptoKeysTransformer.d.ts +4 -0
- package/dist/mjs/utils/CryptoKeysTransformer.js +50 -1
- package/dist/mjs/utils/NonceTracker.d.ts +1 -0
- package/dist/mjs/utils/NonceTracker.js +6 -2
- package/dist/mjs/utils/TxManager.d.ts +3 -0
- package/dist/mjs/utils/TxManager.js +89 -36
- package/dist/mjs/utils/helper.d.ts +11 -3
- package/dist/mjs/utils/helper.js +54 -12
- package/dist/mjs/utils/helpers/getRawRpc.d.ts +2 -0
- package/dist/mjs/utils/helpers/getRawRpc.js +15 -0
- package/dist/mjs/utils/helpers/index.d.ts +1 -0
- package/dist/mjs/utils/helpers/index.js +2 -1
- package/dist/mjs/utils/types.d.ts +14 -0
- package/dist/mjs/utils/types.js +2 -0
- package/package.json +7 -4
- package/readme.md +11 -0
- package/dist/cjs/contracts/Campaign.d.ts +0 -1036
- package/dist/cjs/contracts/Campaign.js +0 -1347
- package/dist/cjs/staticModels/Campaign.d.ts +0 -59
- package/dist/cjs/staticModels/Campaign.js +0 -248
- package/dist/cjs/types/Campaign.d.ts +0 -57
- package/dist/cjs/types/Campaign.js +0 -11
- package/dist/mjs/contracts/Campaign.d.ts +0 -1036
- package/dist/mjs/contracts/Campaign.js +0 -1344
- package/dist/mjs/staticModels/Campaign.d.ts +0 -59
- package/dist/mjs/staticModels/Campaign.js +0 -243
- package/dist/mjs/types/Campaign.d.ts +0 -57
- package/dist/mjs/types/Campaign.js +0 -8
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { randomUUID } from 'crypto';
|
|
3
|
+
import forge from 'node-forge';
|
|
4
|
+
import { X509CertificateGenerator, BasicConstraintsExtension, ExtendedKeyUsageExtension, Extension, SubjectAlternativeNameExtension, ExtendedKeyUsage, KeyUsageFlags, KeyUsagesExtension, Pkcs10CertificateRequestGenerator, Pkcs10CertificateRequest, X509Certificate, AuthorityInfoAccessExtension, } from '@peculiar/x509';
|
|
5
|
+
import { cryptoProvider } from './setup-crypto.js';
|
|
6
|
+
import { CryptoKeysTransformer } from '../utils/CryptoKeysTransformer.js';
|
|
7
|
+
import { isIpAddress } from '../utils/helper.js';
|
|
8
|
+
const MAX_X509_SERIAL = BigInt('0x' + 'F'.repeat(40));
|
|
9
|
+
const principalAttributeMap = {
|
|
10
|
+
commonName: 'CN',
|
|
11
|
+
country: 'C',
|
|
12
|
+
localityName: 'L',
|
|
13
|
+
stateName: 'ST',
|
|
14
|
+
organization: 'O',
|
|
15
|
+
organizationalUnit: 'OU',
|
|
16
|
+
};
|
|
17
|
+
const notAllowedCertificateCustomExtensions = [...Object.values(forge.pki.oids)];
|
|
18
|
+
export class CertificateGenerator {
|
|
19
|
+
/**
|
|
20
|
+
* Generates certificate based on the provided parameters.
|
|
21
|
+
* @param params - Parameters for generating the certificate.
|
|
22
|
+
* @returns The generated certificate in PEM format.
|
|
23
|
+
*/
|
|
24
|
+
static async generateCert(params) {
|
|
25
|
+
const ca = Boolean(params.ca);
|
|
26
|
+
const { publicKey, privateKey } = await CertificateGenerator.getCryptoKeys(params);
|
|
27
|
+
const signingAlgorithm = publicKey.algorithm;
|
|
28
|
+
const extensions = [new BasicConstraintsExtension(ca, undefined, true)];
|
|
29
|
+
const extendedKeyUsageItems = [];
|
|
30
|
+
if (signingAlgorithm.namedCurve !== 'K-256' && params.dnsNames?.length) {
|
|
31
|
+
const generalNames = params.dnsNames.map((dnsName) => ({
|
|
32
|
+
type: (isIpAddress(dnsName) ? 'ip' : 'dns'),
|
|
33
|
+
value: dnsName,
|
|
34
|
+
}));
|
|
35
|
+
extensions.push(new SubjectAlternativeNameExtension(generalNames));
|
|
36
|
+
extendedKeyUsageItems.push(...[ExtendedKeyUsage.serverAuth, ExtendedKeyUsage.clientAuth]);
|
|
37
|
+
}
|
|
38
|
+
if (params.ocspSigning) {
|
|
39
|
+
extendedKeyUsageItems.push(ExtendedKeyUsage.ocspSigning);
|
|
40
|
+
}
|
|
41
|
+
if (params.ocspExtension) {
|
|
42
|
+
const { ocspUrl, issuerCertUrl } = params.ocspExtension;
|
|
43
|
+
extensions.push(new AuthorityInfoAccessExtension({
|
|
44
|
+
ocsp: [ocspUrl],
|
|
45
|
+
...(issuerCertUrl ? { caIssuers: [issuerCertUrl] } : {}),
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
if (extendedKeyUsageItems.length) {
|
|
49
|
+
extensions.push(new ExtendedKeyUsageExtension(extendedKeyUsageItems, false));
|
|
50
|
+
}
|
|
51
|
+
let keyUsageFlags = KeyUsageFlags.digitalSignature | KeyUsageFlags.keyEncipherment;
|
|
52
|
+
if (params.ca) {
|
|
53
|
+
keyUsageFlags |= KeyUsageFlags.keyCertSign;
|
|
54
|
+
}
|
|
55
|
+
extensions.push(new KeyUsagesExtension(keyUsageFlags, true));
|
|
56
|
+
if (params.customExtensions?.length) {
|
|
57
|
+
const filteredExtensions = params.customExtensions.filter((ext) => !notAllowedCertificateCustomExtensions.includes(ext.oid));
|
|
58
|
+
for (const customExtension of filteredExtensions) {
|
|
59
|
+
if (!customExtension.oid || !customExtension.value) {
|
|
60
|
+
throw new Error('Custom extension OID and value are required');
|
|
61
|
+
}
|
|
62
|
+
extensions.push(new Extension(customExtension.oid, false, customExtension.value));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const createCertificateParams = {
|
|
66
|
+
serialNumber: CertificateGenerator.generateSerialNumber(),
|
|
67
|
+
issuer: CertificateGenerator.getPrincipalInfo(params.issuer),
|
|
68
|
+
subject: CertificateGenerator.getPrincipalInfo(params.subject),
|
|
69
|
+
notBefore: new Date(),
|
|
70
|
+
notAfter: params.notAfter,
|
|
71
|
+
publicKey,
|
|
72
|
+
signingKey: privateKey,
|
|
73
|
+
signingAlgorithm,
|
|
74
|
+
extensions,
|
|
75
|
+
};
|
|
76
|
+
const cert = await X509CertificateGenerator.create(createCertificateParams);
|
|
77
|
+
return cert.toString('pem');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Generates a pair of cryptographic keys based on the specified signature algorithm.
|
|
81
|
+
* @param signatureAlgorithm - The algorithm to use for key generation.
|
|
82
|
+
* @returns A promise that resolves to a CryptoKeyPair containing the public and private keys.
|
|
83
|
+
*/
|
|
84
|
+
static generateKeys(signatureAlgorithm) {
|
|
85
|
+
const algorithm = CertificateGenerator.getAlgorithm(signatureAlgorithm);
|
|
86
|
+
return cryptoProvider.subtle.generateKey(algorithm, true, ['sign', 'verify']);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Generates a Certificate Signing Request (CSR) based on the provided parameters.
|
|
90
|
+
* @param params - Parameters for generating the CSR.
|
|
91
|
+
* @returns The generated CSR in PEM format.
|
|
92
|
+
*/
|
|
93
|
+
static async generateCsr(params) {
|
|
94
|
+
const keys = await CertificateGenerator.getCryptoKeys(params);
|
|
95
|
+
const signingAlgorithm = keys.publicKey.algorithm;
|
|
96
|
+
signingAlgorithm.hash = { name: 'SHA-256' };
|
|
97
|
+
const extensions = [];
|
|
98
|
+
if (signingAlgorithm.namedCurve !== 'K-256' && params.dnsNames?.length) {
|
|
99
|
+
const generalNames = params.dnsNames.map((dnsName) => ({
|
|
100
|
+
type: (isIpAddress(dnsName) ? 'ip' : 'dns'),
|
|
101
|
+
value: dnsName,
|
|
102
|
+
}));
|
|
103
|
+
extensions.push(new SubjectAlternativeNameExtension(generalNames));
|
|
104
|
+
}
|
|
105
|
+
if (params.customExtensions?.length) {
|
|
106
|
+
for (const customExtension of params.customExtensions) {
|
|
107
|
+
if (!customExtension.oid || !customExtension.value) {
|
|
108
|
+
throw new Error(`Some custom extension missed OID or value`);
|
|
109
|
+
}
|
|
110
|
+
extensions.push(new Extension(customExtension.oid, false, customExtension.value));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const createCsrParams = {
|
|
114
|
+
name: CertificateGenerator.getPrincipalInfo(params.subject),
|
|
115
|
+
keys,
|
|
116
|
+
signingAlgorithm,
|
|
117
|
+
extensions,
|
|
118
|
+
};
|
|
119
|
+
const csr = await Pkcs10CertificateRequestGenerator.create(createCsrParams);
|
|
120
|
+
return csr.toString('pem');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Checks and parses a certificate in PEM format.
|
|
124
|
+
* @param certPem - The certificate in PEM format.
|
|
125
|
+
* @returns An object containing the parsed certificate details.
|
|
126
|
+
*/
|
|
127
|
+
static async checkAndParseCert(certPem) {
|
|
128
|
+
const cert = new X509Certificate(certPem);
|
|
129
|
+
if (cert.issuer === cert.subject) {
|
|
130
|
+
const isValid = await cert.verify();
|
|
131
|
+
if (!isValid) {
|
|
132
|
+
throw new Error('Self-signed certificate signature verification failed');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const publicKey = await cryptoProvider.subtle.importKey('spki', cert.publicKey.rawData, Object.assign(cert.signatureAlgorithm, cert.publicKey.algorithm), true, ['verify']);
|
|
136
|
+
return {
|
|
137
|
+
serialNumberHex: cert.serialNumber,
|
|
138
|
+
publicKey,
|
|
139
|
+
subject: cert.subject,
|
|
140
|
+
issuer: cert.issuer,
|
|
141
|
+
notBefore: cert.notBefore,
|
|
142
|
+
notAfter: cert.notAfter,
|
|
143
|
+
dnsNames: CertificateGenerator.extractDnsNamesFromExtensions(cert.extensions),
|
|
144
|
+
extensions: cert.extensions
|
|
145
|
+
.filter((ext) => ext.type !== forge.pki.oids['subjectAltName'])
|
|
146
|
+
.map((ext) => ({
|
|
147
|
+
oid: ext.type,
|
|
148
|
+
value: Buffer.from(ext.value),
|
|
149
|
+
})),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Checks and parses a Certificate Signing Request (CSR) in PEM format.
|
|
154
|
+
* @param csrPem - The CSR in PEM format.
|
|
155
|
+
* @returns An object containing the parsed CSR details.
|
|
156
|
+
*/
|
|
157
|
+
static async checkAndParseCsr(csrPem) {
|
|
158
|
+
const csr = new Pkcs10CertificateRequest(csrPem);
|
|
159
|
+
const isValid = await csr.verify();
|
|
160
|
+
if (!isValid) {
|
|
161
|
+
throw new Error('CSR signature verification failed');
|
|
162
|
+
}
|
|
163
|
+
const publicKey = await cryptoProvider.subtle.importKey('spki', csr.publicKey.rawData, Object.assign(csr.signatureAlgorithm, csr.publicKey.algorithm), true, ['verify']);
|
|
164
|
+
const parsedCsr = {
|
|
165
|
+
subject: csr.subject,
|
|
166
|
+
publicKey,
|
|
167
|
+
dnsNames: CertificateGenerator.extractDnsNamesFromExtensions(csr.extensions),
|
|
168
|
+
extensions: csr.extensions
|
|
169
|
+
.filter((ext) => ext.type !== forge.pki.oids['subjectAltName'])
|
|
170
|
+
.map((ext) => ({
|
|
171
|
+
oid: ext.type,
|
|
172
|
+
value: Buffer.from(ext.value),
|
|
173
|
+
})),
|
|
174
|
+
};
|
|
175
|
+
return parsedCsr;
|
|
176
|
+
}
|
|
177
|
+
static async getCryptoKeys({ privateKey, publicKey }) {
|
|
178
|
+
const [pubKey, privKey] = await Promise.all([
|
|
179
|
+
typeof publicKey === 'string'
|
|
180
|
+
? CryptoKeysTransformer.spkiPemToCryptoKey(publicKey)
|
|
181
|
+
: publicKey,
|
|
182
|
+
typeof privateKey === 'string'
|
|
183
|
+
? CryptoKeysTransformer.pkcs8PemToCryptoKey(privateKey)
|
|
184
|
+
: privateKey,
|
|
185
|
+
]);
|
|
186
|
+
assert.deepEqual(pubKey.algorithm, privKey.algorithm, 'Both keys must have same algorithm defined');
|
|
187
|
+
return { publicKey: pubKey, privateKey: privKey };
|
|
188
|
+
}
|
|
189
|
+
static generateSerialNumber() {
|
|
190
|
+
const uuid = randomUUID().replace(/-/g, '');
|
|
191
|
+
let serial = BigInt('0x' + uuid) % MAX_X509_SERIAL;
|
|
192
|
+
// Ensure the serial number is positive in ASN1
|
|
193
|
+
if (serial.toString(2)[0] === '1') {
|
|
194
|
+
serial = serial >> 1n;
|
|
195
|
+
}
|
|
196
|
+
return serial.toString(16);
|
|
197
|
+
}
|
|
198
|
+
static getPrincipalInfo(principal) {
|
|
199
|
+
if (typeof principal === 'string') {
|
|
200
|
+
return principal;
|
|
201
|
+
}
|
|
202
|
+
if (!principal.commonName) {
|
|
203
|
+
throw new Error('Common name is required');
|
|
204
|
+
}
|
|
205
|
+
return Object.entries(principal)
|
|
206
|
+
.map(([key, value]) => `${principalAttributeMap[key] || key}=${value}`)
|
|
207
|
+
.join(',');
|
|
208
|
+
}
|
|
209
|
+
static getAlgorithm(signatureAlgorithm) {
|
|
210
|
+
switch (signatureAlgorithm) {
|
|
211
|
+
case 'RSASSA-PKCS1-SHA256':
|
|
212
|
+
return {
|
|
213
|
+
name: 'RSASSA-PKCS1-v1_5',
|
|
214
|
+
hash: 'SHA-256',
|
|
215
|
+
publicExponent: new Uint8Array([1, 0, 1]), // 65537
|
|
216
|
+
modulusLength: 2048,
|
|
217
|
+
};
|
|
218
|
+
case 'ECDSA-P-256-SHA256':
|
|
219
|
+
return {
|
|
220
|
+
name: 'ECDSA',
|
|
221
|
+
namedCurve: 'P-256',
|
|
222
|
+
};
|
|
223
|
+
case 'ECDSA-secp256k1-SHA256':
|
|
224
|
+
return {
|
|
225
|
+
name: 'ECDSA',
|
|
226
|
+
namedCurve: 'K-256',
|
|
227
|
+
};
|
|
228
|
+
default:
|
|
229
|
+
throw new Error(`Unsupported signature algorithm: ${signatureAlgorithm}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
static extractDnsNamesFromExtensions(extensions) {
|
|
233
|
+
const subjectAltNameExt = extensions.find((ext) => ext.type === forge.pki.oids['subjectAltName']);
|
|
234
|
+
if (!subjectAltNameExt) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const dnsNames = subjectAltNameExt.names.items.map((item) => item.value);
|
|
238
|
+
return dnsNames;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NlcnRpZmljYXRlcy9nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixTQUFTLEVBQ1QsK0JBQStCLEVBRy9CLGdCQUFnQixFQUNoQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGlDQUFpQyxFQUVqQyx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLDRCQUE0QixHQUM3QixNQUFNLGdCQUFnQixDQUFDO0FBV3hCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFdEQsTUFBTSxxQkFBcUIsR0FBMkI7SUFDcEQsVUFBVSxFQUFFLElBQUk7SUFDaEIsT0FBTyxFQUFFLEdBQUc7SUFDWixZQUFZLEVBQUUsR0FBRztJQUNqQixTQUFTLEVBQUUsSUFBSTtJQUNmLFlBQVksRUFBRSxHQUFHO0lBQ2pCLGtCQUFrQixFQUFFLElBQUk7Q0FDekIsQ0FBQztBQUVGLE1BQU0scUNBQXFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sT0FBTyxvQkFBb0I7SUFD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
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import * as pkijs from 'pkijs';
|
|
3
|
-
import { ValidateCertChainResult } from './types.js';
|
|
3
|
+
import { AlgorithmObj, ValidateCertChainResult } from './types.js';
|
|
4
|
+
import './setup-crypto.js';
|
|
4
5
|
export declare class CertificatesHelper {
|
|
5
6
|
private static downloadedCertificateCache;
|
|
6
|
-
static derToPem(data: ArrayBuffer): string;
|
|
7
|
+
static derToPem(data: ArrayBuffer, type?: string): string;
|
|
7
8
|
static pemToDer(certPem: string): Uint8Array;
|
|
8
9
|
static splitPemCerts(certs: string): string[];
|
|
9
10
|
static getDomain(certPem: string): string | undefined;
|
|
@@ -12,12 +13,15 @@ export declare class CertificatesHelper {
|
|
|
12
13
|
certs: string;
|
|
13
14
|
ca: string;
|
|
14
15
|
};
|
|
16
|
+
static getIssuerBySubject(cert: pkijs.Certificate, certs: pkijs.Certificate[]): pkijs.Certificate | undefined;
|
|
15
17
|
static pemChainToDer(certsPem: string): Uint8Array[];
|
|
16
18
|
static derChainToPem(certsDer: Uint8Array[]): string;
|
|
17
19
|
static downloadCertWithCache(url: string): Promise<Buffer>;
|
|
18
|
-
static sortCertsFromLeafToRoot(certsPem: string | string[]): pkijs.Certificate[];
|
|
20
|
+
static sortCertsFromLeafToRoot(certsPem: string | string[] | pkijs.Certificate[]): pkijs.Certificate[];
|
|
21
|
+
static getCertPublicKeyAlgorithm(certPem: string): AlgorithmObj;
|
|
22
|
+
static getCsrPublicKeyAlgorithm(csrPem: string): AlgorithmObj;
|
|
19
23
|
static validateCertChain(certsPem: string | string[], caPem: string | string[], options?: {
|
|
20
24
|
offline?: boolean;
|
|
21
25
|
}): Promise<ValidateCertChainResult>;
|
|
22
|
-
|
|
26
|
+
static toPkiCerts(certs: string | string[]): pkijs.Certificate[];
|
|
23
27
|
}
|
|
@@ -2,29 +2,27 @@ import _ from 'lodash';
|
|
|
2
2
|
import axios from 'axios';
|
|
3
3
|
import forge from 'node-forge';
|
|
4
4
|
import * as pkijs from 'pkijs';
|
|
5
|
+
import { Pkcs10CertificateRequest, X509Certificate } from '@peculiar/x509';
|
|
5
6
|
import { createMemoryCache } from '../utils/cache/memory.js';
|
|
6
7
|
import { OCSPHelper } from './ocsp.js';
|
|
7
8
|
import { CRLHelper } from './crl.js';
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
pkijs.setEngine('Node', new pkijs.CryptoEngine({ name: 'Node', crypto: webcrypto }));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
9
|
+
import './setup-crypto.js';
|
|
10
|
+
import { OID_CUSTOM_EXTENSION_CHALLENGE_CERTIFICATE_ID, OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID, OID_CUSTOM_EXTENSION_CHALLENGE_ID, OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU, } from '@super-protocol/pki-common';
|
|
11
|
+
const oidsForOcspCheck = [
|
|
12
|
+
OID_CUSTOM_EXTENSION_CHALLENGE_ID,
|
|
13
|
+
OID_CUSTOM_EXTENSION_CHALLENGE_COMMON_ID,
|
|
14
|
+
OID_CUSTOM_EXTENSION_NVIDIA_INFO_GPU,
|
|
15
|
+
OID_CUSTOM_EXTENSION_CHALLENGE_CERTIFICATE_ID,
|
|
16
|
+
];
|
|
19
17
|
export class CertificatesHelper {
|
|
20
18
|
static downloadedCertificateCache = createMemoryCache();
|
|
21
|
-
static derToPem(data) {
|
|
19
|
+
static derToPem(data, type = 'CERTIFICATE') {
|
|
22
20
|
return forge.pem.encode({
|
|
23
21
|
contentDomain: null,
|
|
24
22
|
dekInfo: null,
|
|
25
23
|
headers: [],
|
|
26
24
|
procType: null,
|
|
27
|
-
type
|
|
25
|
+
type,
|
|
28
26
|
body: Buffer.from(data).toString('binary'),
|
|
29
27
|
});
|
|
30
28
|
}
|
|
@@ -56,12 +54,18 @@ export class CertificatesHelper {
|
|
|
56
54
|
ca: toPemChain(splitCerts[1]),
|
|
57
55
|
};
|
|
58
56
|
}
|
|
57
|
+
static getIssuerBySubject(cert, certs) {
|
|
58
|
+
return certs.find((potentialIssuer) => cert.issuer.isEqual(potentialIssuer.subject));
|
|
59
|
+
}
|
|
59
60
|
static pemChainToDer(certsPem) {
|
|
60
61
|
const certs = CertificatesHelper.splitPemCerts(certsPem);
|
|
61
62
|
return certs.map((certPem) => CertificatesHelper.pemToDer(certPem));
|
|
62
63
|
}
|
|
63
64
|
static derChainToPem(certsDer) {
|
|
64
|
-
return certsDer
|
|
65
|
+
return certsDer
|
|
66
|
+
.map((cert) => CertificatesHelper.derToPem(cert))
|
|
67
|
+
.join('')
|
|
68
|
+
.trim();
|
|
65
69
|
}
|
|
66
70
|
static async downloadCertWithCache(url) {
|
|
67
71
|
const responseData = await CertificatesHelper.downloadedCertificateCache.wrap(url, async () => {
|
|
@@ -75,7 +79,9 @@ export class CertificatesHelper {
|
|
|
75
79
|
return responseData;
|
|
76
80
|
}
|
|
77
81
|
static sortCertsFromLeafToRoot(certsPem) {
|
|
78
|
-
const allCerts =
|
|
82
|
+
const allCerts = typeof certsPem === 'string' || certsPem.every((cert) => typeof cert === 'string')
|
|
83
|
+
? CertificatesHelper.toPkiCerts(certsPem)
|
|
84
|
+
: certsPem;
|
|
79
85
|
const leafs = allCerts.filter((certToCheck) => !allCerts.some((certsToCheckWith) => certToCheck.subject.isEqual(certsToCheckWith.issuer)));
|
|
80
86
|
const buildChain = (leaf) => {
|
|
81
87
|
const chain = [leaf];
|
|
@@ -92,6 +98,16 @@ export class CertificatesHelper {
|
|
|
92
98
|
const chains = leafs.map(buildChain).sort((one, two) => two.length - one.length);
|
|
93
99
|
return chains.flat();
|
|
94
100
|
}
|
|
101
|
+
static getCertPublicKeyAlgorithm(certPem) {
|
|
102
|
+
const cert = new X509Certificate(certPem);
|
|
103
|
+
const publicKey = cert.publicKey;
|
|
104
|
+
return publicKey.algorithm;
|
|
105
|
+
}
|
|
106
|
+
static getCsrPublicKeyAlgorithm(csrPem) {
|
|
107
|
+
const csr = new Pkcs10CertificateRequest(csrPem);
|
|
108
|
+
const publicKey = csr.publicKey;
|
|
109
|
+
return publicKey.algorithm;
|
|
110
|
+
}
|
|
95
111
|
static async validateCertChain(certsPem, caPem, options = {}) {
|
|
96
112
|
const { offline } = options;
|
|
97
113
|
// reverse() is needed because pkijs expects certificates to be ordered from root to leaf
|
|
@@ -101,7 +117,19 @@ export class CertificatesHelper {
|
|
|
101
117
|
const crls = offline ? [] : await CRLHelper.getCRLFromCerts(sortedCerts);
|
|
102
118
|
const ocspBaseResponses = offline
|
|
103
119
|
? []
|
|
104
|
-
: await OCSPHelper.getOCSPResponseFromCerts(sortedCerts, ca);
|
|
120
|
+
: await OCSPHelper.getOCSPResponseFromCerts(sortedCerts, ca, oidsForOcspCheck);
|
|
121
|
+
if (ocspBaseResponses.length) {
|
|
122
|
+
ocspBaseResponses.forEach((ocspResponse) => {
|
|
123
|
+
if (!ocspResponse.certs) {
|
|
124
|
+
throw new Error('OCSP response does not contain certs');
|
|
125
|
+
}
|
|
126
|
+
const ocspSigner = CertificatesHelper.sortCertsFromLeafToRoot(ocspResponse.certs)[0];
|
|
127
|
+
const isSignerValid = OCSPHelper.canCertSignOCSPResponse(ocspSigner);
|
|
128
|
+
if (!isSignerValid) {
|
|
129
|
+
throw new Error('OCSP signer certificate does not have the OCSP signing extended key usage');
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
105
133
|
const chainEngine = new pkijs.CertificateChainValidationEngine({
|
|
106
134
|
certs: sortedCerts,
|
|
107
135
|
trustedCerts: ca,
|
|
@@ -144,4 +172,4 @@ export class CertificatesHelper {
|
|
|
144
172
|
return certsArray.map((certPem) => pkijs.Certificate.fromBER(CertificatesHelper.pemToDer(certPem)));
|
|
145
173
|
}
|
|
146
174
|
}
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NlcnRpZmljYXRlcy9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFDL0IsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDL0IsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNyQyxPQUFPLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTCw2Q0FBNkMsRUFDN0Msd0NBQXdDLEVBQ3hDLGlDQUFpQyxFQUNqQyxvQ0FBb0MsR0FDckMsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLGlDQUFpQztJQUNqQyx3Q0FBd0M7SUFDeEMsb0NBQW9DO0lBQ3BDLDZDQUE2QztDQUM5QyxDQUFDO0FBRUYsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQUMsMEJBQTBCLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztJQUVoRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQWlCLEVBQUUsT0FBZSxhQUFhO1FBQzdELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDdEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLFFBQVEsRUFBRSxJQUFJO1lBQ2QsSUFBSTtZQUNKLElBQUksRUFBRSxNQUFNLENBQUMsSUFB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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './helper.js';
|
|
2
2
|
export * from './types.js';
|
|
3
3
|
export * from './serializer.js';
|
|
4
|
-
|
|
4
|
+
export * from './generator.js';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2VydGlmaWNhdGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxnQkFBZ0IsQ0FBQyJ9
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import * as pkijs from 'pkijs';
|
|
2
|
+
import { GenerateOcspResponseParams, ParsedOcspRequest } from '../index.js';
|
|
2
3
|
export declare class OCSPHelper {
|
|
3
|
-
static getOCSPResponseFromCerts(certs: pkijs.Certificate[], ca: pkijs.Certificate[]): Promise<pkijs.BasicOCSPResponse[]>;
|
|
4
|
+
static getOCSPResponseFromCerts(certs: pkijs.Certificate[], ca: pkijs.Certificate[], oidsToCheck?: string[]): Promise<pkijs.BasicOCSPResponse[]>;
|
|
5
|
+
static generateOCSPResponse(params: GenerateOcspResponseParams): Promise<ArrayBuffer>;
|
|
6
|
+
static parseOCSPRequest(ocspRequestBinary: ArrayBuffer): ParsedOcspRequest;
|
|
7
|
+
static canCertSignOCSPResponse(cert: pkijs.Certificate): boolean;
|
|
4
8
|
private static getOCSPRequestData;
|
|
5
9
|
private static getOCSPResponse;
|
|
6
10
|
private static sendOCSPRequest;
|
|
7
11
|
private static getNonceForRequest;
|
|
8
12
|
private static getNonceFromResponse;
|
|
13
|
+
private static getCertExtensionsToCheck;
|
|
9
14
|
}
|