This repository was archived by the owner on Sep 19, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcertificates.js
59 lines (53 loc) · 1.72 KB
/
certificates.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import {
cadesplugin,
CADESCOM_CURRENT_USER_STORE,
} from './constants';
import {
convertStringToObj,
extractAlgorithmOfCertificate,
} from './utils';
/**
* @function
* @name certificates
* @description Provides access to loaded certificates for browser (Async)
* @return {array} list of certificates
*/
const certificates = async () => {
const store = await cadesplugin.CreateObjectAsync('CAPICOM.Store');
await store.Open(CADESCOM_CURRENT_USER_STORE);
const availableCertificates = await store.Certificates;
const amountOfCertificates = await availableCertificates.Count;
const arrayOfCertificates = collectListOfCertificats(
availableCertificates,
amountOfCertificates,
1,
);
return arrayOfCertificates;
};
const collectListOfCertificats =
async (certificates, amountOfCertificates, i, result = []) =>
(i > amountOfCertificates
? result
: collectListOfCertificats(
certificates,
amountOfCertificates,
i + 1,
result.concat(await objectifyCertificate(await certificates.Item(i))),
)
);
const objectifyCertificate = async (certificate) => {
const isValid = await certificate.IsValid();
return {
issuerName: convertStringToObj(await certificate.IssuerName),
serialNumber: await certificate.SerialNumber,
subjectName: convertStringToObj(await certificate.SubjectName),
thumbprint: await certificate.Thumbprint,
privateKey: await certificate.PrivateKey,
validFromDate: await certificate.ValidFromDate,
validToDate: await certificate.ValidToDate,
isValid: await isValid.Result,
version: await certificate.Version,
algorithm: await extractAlgorithmOfCertificate(certificate),
};
};
export default certificates;