@peculiar/fortify-webcomponents
Version:
Web-components for creating CSR or Certificate and viewing certificates list using Fortify
148 lines (141 loc) • 6.69 kB
JavaScript
/*!
* © Peculiar Ventures https://peculiarventures.com/ - BSD 3-Clause License
*/
;
var ssh_certificate = require('./ssh_certificate-ClDh-FAQ.js');
const id_certificateTransparency = "1.3.6.1.4.1.11129.2.4.2";
class CertificateTransparency extends ssh_certificate.OctetString {
constructor() {
super(...arguments);
this.items = [];
}
fromASN(asn) {
super.fromASN(asn);
const stream = new ssh_certificate.ByteStream(this.buffer);
const len = stream.readNumber(2);
this.items = [];
while (stream.position < len) {
this.items.push(new ssh_certificate.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
*/
/**
* @license
* Copyright (c) Peculiar Ventures, LLC.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const extensionParsers = {
[ssh_certificate.id_pe_authorityInfoAccess]: ssh_certificate.AuthorityInfoAccessSyntax,
[ssh_certificate.id_ce_authorityKeyIdentifier]: ssh_certificate.AuthorityKeyIdentifier,
[ssh_certificate.id_ce_basicConstraints]: ssh_certificate.BasicConstraints,
[ssh_certificate.id_ce_certificateIssuer]: ssh_certificate.CertificateIssuer,
[ssh_certificate.id_ce_certificatePolicies]: ssh_certificate.CertificatePolicies,
[ssh_certificate.id_ce_cRLDistributionPoints]: ssh_certificate.CRLDistributionPoints,
'2.5.29.46': ssh_certificate.CRLDistributionPoints,
[ssh_certificate.id_ce_issuingDistributionPoint]: ssh_certificate.IssuingDistributionPoint,
[ssh_certificate.id_ce_cRLReasons]: ssh_certificate.CRLReason,
[ssh_certificate.id_ce_extKeyUsage]: ssh_certificate.ExtendedKeyUsage,
[ssh_certificate.id_ce_inhibitAnyPolicy]: ssh_certificate.InhibitAnyPolicy,
[ssh_certificate.id_ce_invalidityDate]: ssh_certificate.InvalidityDate,
[ssh_certificate.id_ce_issuerAltName]: ssh_certificate.IssueAlternativeName,
[ssh_certificate.id_ce_keyUsage]: ssh_certificate.KeyUsage,
[ssh_certificate.id_ce_nameConstraints]: ssh_certificate.NameConstraints,
[ssh_certificate.id_ce_policyConstraints]: ssh_certificate.PolicyConstraints,
[ssh_certificate.id_ce_policyMappings]: ssh_certificate.PolicyMappings,
[ssh_certificate.id_ce_subjectAltName]: ssh_certificate.SubjectAlternativeName,
[ssh_certificate.id_ce_subjectDirectoryAttributes]: ssh_certificate.SubjectDirectoryAttributes,
[ssh_certificate.id_ce_subjectKeyIdentifier]: ssh_certificate.SubjectKeyIdentifier,
[ssh_certificate.id_pe_qcStatements]: ssh_certificate.QCStatements,
[ssh_certificate.id_certificateTemplate]: ssh_certificate.CertificateTemplate,
[ssh_certificate.id_enrollCertType]: ssh_certificate.EnrollCertTypeChoice,
[ssh_certificate.id_netscapeComment]: ssh_certificate.NetscapeComment,
[ssh_certificate.id_netscapeCertType]: ssh_certificate.NetscapeCertType,
[ssh_certificate.id_caVersion]: ssh_certificate.CaVersion,
[id_certificateTransparency]: CertificateTransparency,
[ssh_certificate.id_lei]: ssh_certificate.LeiChoice,
[ssh_certificate.id_role]: ssh_certificate.LeiRole,
[ssh_certificate.id_adbe_timestamp]: ssh_certificate.Timestamp,
[ssh_certificate.id_adbe_archiveRevInfo]: ssh_certificate.ArchiveRevInfo,
[ssh_certificate.id_ce_privateKeyUsagePeriod]: ssh_certificate.PrivateKeyUsagePeriod,
[ssh_certificate.id_entrust_entrustVersInfo]: ssh_certificate.EntrustVersionInfo,
'2.16.724.1.2.2.4.1': ssh_certificate.BiometricSyntax,
[ssh_certificate.id_pe_biometricInfo]: ssh_certificate.BiometricSyntax,
[id_pe_logotype]: ssh_certificate.LogotypeExtn,
[ssh_certificate.id_pe_TNAuthList]: ssh_certificate.TNAuthorizationList,
[ssh_certificate.id_pe_subjectInfoAccess]: ssh_certificate.SubjectInfoAccessSyntax,
[ssh_certificate.id_ce_cRLNumber]: ssh_certificate.CRLNumber,
[ssh_certificate.id_ce_deltaCRLIndicator]: ssh_certificate.BaseCRLNumber,
[ssh_certificate.id_ce_keyDescription]: ssh_certificate.NonStandardKeyDescription,
[ssh_certificate.id_cabforganizationIdentifier]: ssh_certificate.CabforganizationIdentifier,
};
class Extension extends ssh_certificate.AsnData {
getAsnExtnValue() {
return this.asn.extnValue.buffer;
}
constructor(raw) {
super(raw, ssh_certificate.Extension);
const asnExtnValue = this.getAsnExtnValue();
try {
const target = extensionParsers[this.asn.extnID];
if (target) {
this.value = ssh_certificate.AsnParser.parse(asnExtnValue, target);
}
else {
console.warn(`Didn't detect parser for "${this.asn.extnID}" extension.`);
this.value = ssh_certificate.buildExports.Convert.ToHex(asnExtnValue);
}
}
catch (error) {
console.error(`Error parse "${this.asn.extnID}" extension:`, error.message);
this.value = ssh_certificate.buildExports.Convert.ToHex(asnExtnValue);
}
}
}
/*!
* © Peculiar Ventures https://peculiarventures.com/ - MIT License
*/
/**
* @license
* Copyright (c) Peculiar Ventures, LLC.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const certificateRawToBuffer = (raw) => {
if (ssh_certificate.PemConverter.isPem(raw)) {
return ssh_certificate.PemConverter.decode(raw)[0];
}
if (ssh_certificate.buildExports.Convert.isHex(raw)) {
return ssh_certificate.buildExports.Convert.FromHex(raw);
}
if (ssh_certificate.buildExports.Convert.isBase64(raw)) {
return ssh_certificate.buildExports.Convert.FromBase64(raw);
}
if (ssh_certificate.buildExports.Convert.isBase64Url(raw)) {
return ssh_certificate.buildExports.Convert.FromBase64Url(raw);
}
return ssh_certificate.buildExports.Convert.FromBinary(raw);
};
const getCertificateThumbprint = async (algorithm, data) => {
const crypto = ssh_certificate.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-DSHncyfG.js.map
//# sourceMappingURL=utils-DSHncyfG.js.map