blob: 4238bc2b296a438876ed1a74746265c0b75e8e29 (
plain)
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
|
import jsrsasign from 'jsrsasign';
import { CertificateInfo } from '@webauthntine/typescript-types';
/**
* Extract PEM certificate info
*
* @param pemCertificate Result from call to `convertASN1toPEM(x5c[0])`
*/
export default function getCertificateInfo(pemCertificate: string): CertificateInfo {
const subjectCert = new jsrsasign.X509();
subjectCert.readCertPEM(pemCertificate);
const subjectString = subjectCert.getSubjectString();
const subjectParts = subjectString.slice(1).split('/');
const subject: { [key: string]: string } = {};
subjectParts.forEach((field) => {
const [key, val] = field.split('=');
subject[key] = val;
});
const { getVersion } = subjectCert;
const basicConstraintsCA = !!subjectCert.getExtBasicConstraints().cA;
return {
subject,
version: getVersion(),
basicConstraintsCA,
};
}
|