@peculiar/fortify-webcomponents
Version:
Web-components for creating CSR or Certificate and viewing certificates list using Fortify
133 lines (126 loc) • 6.82 kB
JavaScript
/*!
* © Peculiar Ventures https://peculiarventures.com/ - BSD 3-Clause License
*/
;
const certification_request = require('./certification_request-89396ee6.js');
const id_certificateTransparency = "1.3.6.1.4.1.11129.2.4.2";
class CertificateTransparency extends certification_request.OctetString {
constructor() {
super(...arguments);
this.items = [];
}
fromASN(asn) {
super.fromASN(asn);
const stream = new certification_request.ByteStream(this.buffer);
const len = stream.readNumber(2);
this.items = [];
while (stream.position < len) {
this.items.push(new certification_request.SignedCertificateTimestamp(stream));
}
return this;
}
toJSON() {
return this.items.map(o => o.toJSON());
}
}
const id_pe_logotype = "1.3.6.1.5.5.7.1.12";
/*!
* © Peculiar Ventures https://peculiarventures.com/ - MIT License
*/
const extensionParsers = {
[certification_request.id_pe_authorityInfoAccess]: certification_request.AuthorityInfoAccessSyntax,
[certification_request.id_ce_authorityKeyIdentifier]: certification_request.AuthorityKeyIdentifier,
[certification_request.id_ce_basicConstraints]: certification_request.BasicConstraints,
[certification_request.id_ce_certificateIssuer]: certification_request.CertificateIssuer,
[certification_request.id_ce_certificatePolicies]: certification_request.CertificatePolicies,
[certification_request.id_ce_cRLDistributionPoints]: certification_request.CRLDistributionPoints,
'2.5.29.46': certification_request.CRLDistributionPoints,
[certification_request.id_ce_issuingDistributionPoint]: certification_request.IssuingDistributionPoint,
[certification_request.id_ce_cRLReasons]: certification_request.CRLReason,
[certification_request.id_ce_extKeyUsage]: certification_request.ExtendedKeyUsage,
[certification_request.id_ce_inhibitAnyPolicy]: certification_request.InhibitAnyPolicy,
[certification_request.id_ce_invalidityDate]: certification_request.InvalidityDate,
[certification_request.id_ce_issuerAltName]: certification_request.IssueAlternativeName,
[certification_request.id_ce_keyUsage]: certification_request.KeyUsage,
[certification_request.id_ce_nameConstraints]: certification_request.NameConstraints,
[certification_request.id_ce_policyConstraints]: certification_request.PolicyConstraints,
[certification_request.id_ce_policyMappings]: certification_request.PolicyMappings,
[certification_request.id_ce_subjectAltName]: certification_request.SubjectAlternativeName,
[certification_request.id_ce_subjectDirectoryAttributes]: certification_request.SubjectDirectoryAttributes,
[certification_request.id_ce_subjectKeyIdentifier]: certification_request.SubjectKeyIdentifier,
[certification_request.id_pe_qcStatements]: certification_request.QCStatements,
[certification_request.id_certificateTemplate]: certification_request.CertificateTemplate,
[certification_request.id_enrollCertType]: certification_request.EnrollCertTypeChoice,
[certification_request.id_netscapeComment]: certification_request.NetscapeComment,
[certification_request.id_netscapeCertType]: certification_request.NetscapeCertType,
[certification_request.id_caVersion]: certification_request.CaVersion,
[id_certificateTransparency]: CertificateTransparency,
[certification_request.id_lei]: certification_request.LeiChoice,
[certification_request.id_role]: certification_request.LeiRole,
[certification_request.id_adbe_timestamp]: certification_request.Timestamp,
[certification_request.id_adbe_archiveRevInfo]: certification_request.ArchiveRevInfo,
[certification_request.id_ce_privateKeyUsagePeriod]: certification_request.PrivateKeyUsagePeriod,
[certification_request.id_entrust_entrustVersInfo]: certification_request.EntrustVersionInfo,
'2.16.724.1.2.2.4.1': certification_request.BiometricSyntax,
[certification_request.id_pe_biometricInfo]: certification_request.BiometricSyntax,
[id_pe_logotype]: certification_request.LogotypeExtn,
[certification_request.id_pe_TNAuthList]: certification_request.TNAuthorizationList,
[certification_request.id_pe_subjectInfoAccess]: certification_request.SubjectInfoAccessSyntax,
[certification_request.id_ce_cRLNumber]: certification_request.CRLNumber,
[certification_request.id_ce_deltaCRLIndicator]: certification_request.BaseCRLNumber,
[certification_request.id_ce_keyDescription]: certification_request.NonStandardKeyDescription,
[certification_request.id_cabforganizationIdentifier]: certification_request.CabforganizationIdentifier,
};
class Extension extends certification_request.AsnData {
getAsnExtnValue() {
return this.asn.extnValue.buffer;
}
constructor(raw) {
super(raw, certification_request.Extension);
const asnExtnValue = this.getAsnExtnValue();
try {
const target = extensionParsers[this.asn.extnID];
if (target) {
this.value = certification_request.AsnParser.parse(asnExtnValue, target);
}
else {
console.warn(`Didn't detect parser for "${this.asn.extnID}" extension.`);
this.value = certification_request.Convert_1.ToHex(asnExtnValue);
}
}
catch (error) {
console.error(`Error parse "${this.asn.extnID}" extension:`, error.message);
this.value = certification_request.Convert_1.ToHex(asnExtnValue);
}
}
}
/*!
* © Peculiar Ventures https://peculiarventures.com/ - MIT License
*/
const certificateRawToBuffer = (raw) => {
if (certification_request.PemConverter.isPem(raw)) {
return certification_request.PemConverter.decode(raw)[0];
}
if (certification_request.Convert_1.isHex(raw)) {
return certification_request.Convert_1.FromHex(raw);
}
if (certification_request.Convert_1.isBase64(raw)) {
return certification_request.Convert_1.FromBase64(raw);
}
if (certification_request.Convert_1.isBase64Url(raw)) {
return certification_request.Convert_1.FromBase64Url(raw);
}
throw new TypeError("Unsupported format of 'raw' argument. Must be one of DER, PEM, HEX, Base64, or Base4Url");
};
const getCertificateThumbprint = async (algorithm, data) => {
const crypto = certification_request.cryptoProvider.get();
if (crypto.subtle) {
return crypto.subtle.digest(algorithm, data);
}
return undefined;
};
exports.CertificateTransparency = CertificateTransparency;
exports.Extension = Extension;
exports.certificateRawToBuffer = certificateRawToBuffer;
exports.getCertificateThumbprint = getCertificateThumbprint;
//# sourceMappingURL=utils-10d69476.js.map