@peculiar/fortify-webcomponents
Version:
Web-components for creating CSR or Certificate and viewing certificates list using Fortify
128 lines (122 loc) • 6.81 kB
JavaScript
/*!
* © Peculiar Ventures https://peculiarventures.com/ - BSD 3-Clause License
*/
import { O as OctetString, _ as ByteStream, $ as SignedCertificateTimestamp, e as AsnData, a0 as Extension$1, p as AsnParser, C as Convert_1, a1 as id_pe_authorityInfoAccess, a2 as AuthorityInfoAccessSyntax, a3 as id_ce_authorityKeyIdentifier, a4 as AuthorityKeyIdentifier, a5 as id_ce_basicConstraints, a6 as BasicConstraints, a7 as id_ce_certificateIssuer, a8 as CertificateIssuer, a9 as id_ce_certificatePolicies, aa as CertificatePolicies, ab as id_ce_cRLDistributionPoints, ac as CRLDistributionPoints, ad as id_ce_issuingDistributionPoint, ae as IssuingDistributionPoint, af as id_ce_cRLReasons, ag as CRLReason, ah as id_ce_extKeyUsage, ai as ExtendedKeyUsage, aj as id_ce_inhibitAnyPolicy, ak as InhibitAnyPolicy, al as id_ce_invalidityDate, am as InvalidityDate, an as id_ce_issuerAltName, ao as IssueAlternativeName, ap as id_ce_keyUsage, aq as KeyUsage, ar as id_ce_nameConstraints, as as NameConstraints, at as id_ce_policyConstraints, au as PolicyConstraints, av as id_ce_policyMappings, aw as PolicyMappings, ax as id_ce_subjectAltName, ay as SubjectAlternativeName, az as id_ce_subjectDirectoryAttributes, aA as SubjectDirectoryAttributes, aB as id_ce_subjectKeyIdentifier, aC as SubjectKeyIdentifier, aD as id_pe_qcStatements, aE as QCStatements, aF as id_certificateTemplate, aG as CertificateTemplate, aH as id_enrollCertType, aI as EnrollCertTypeChoice, aJ as id_netscapeComment, aK as NetscapeComment, aL as id_netscapeCertType, aM as NetscapeCertType, aN as id_caVersion, aO as CaVersion, aP as id_lei, aQ as LeiChoice, aR as id_role, aS as LeiRole, aT as id_adbe_timestamp, aU as Timestamp, aV as id_adbe_archiveRevInfo, aW as ArchiveRevInfo, aX as id_ce_privateKeyUsagePeriod, aY as PrivateKeyUsagePeriod, aZ as id_entrust_entrustVersInfo, a_ as EntrustVersionInfo, a$ as BiometricSyntax, b0 as id_pe_biometricInfo, b1 as LogotypeExtn, b2 as id_pe_TNAuthList, b3 as TNAuthorizationList, b4 as id_pe_subjectInfoAccess, b5 as SubjectInfoAccessSyntax, b6 as id_ce_cRLNumber, b7 as CRLNumber, b8 as id_ce_deltaCRLIndicator, b9 as BaseCRLNumber, ba as id_ce_keyDescription, bb as NonStandardKeyDescription, bc as id_cabforganizationIdentifier, bd as CabforganizationIdentifier, P as PemConverter, be as cryptoProvider } from './certification_request-0b43f1e5.js';
const id_certificateTransparency = "1.3.6.1.4.1.11129.2.4.2";
class CertificateTransparency extends OctetString {
constructor() {
super(...arguments);
this.items = [];
}
fromASN(asn) {
super.fromASN(asn);
const stream = new ByteStream(this.buffer);
const len = stream.readNumber(2);
this.items = [];
while (stream.position < len) {
this.items.push(new 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 = {
[id_pe_authorityInfoAccess]: AuthorityInfoAccessSyntax,
[id_ce_authorityKeyIdentifier]: AuthorityKeyIdentifier,
[id_ce_basicConstraints]: BasicConstraints,
[id_ce_certificateIssuer]: CertificateIssuer,
[id_ce_certificatePolicies]: CertificatePolicies,
[id_ce_cRLDistributionPoints]: CRLDistributionPoints,
'2.5.29.46': CRLDistributionPoints,
[id_ce_issuingDistributionPoint]: IssuingDistributionPoint,
[id_ce_cRLReasons]: CRLReason,
[id_ce_extKeyUsage]: ExtendedKeyUsage,
[id_ce_inhibitAnyPolicy]: InhibitAnyPolicy,
[id_ce_invalidityDate]: InvalidityDate,
[id_ce_issuerAltName]: IssueAlternativeName,
[id_ce_keyUsage]: KeyUsage,
[id_ce_nameConstraints]: NameConstraints,
[id_ce_policyConstraints]: PolicyConstraints,
[id_ce_policyMappings]: PolicyMappings,
[id_ce_subjectAltName]: SubjectAlternativeName,
[id_ce_subjectDirectoryAttributes]: SubjectDirectoryAttributes,
[id_ce_subjectKeyIdentifier]: SubjectKeyIdentifier,
[id_pe_qcStatements]: QCStatements,
[id_certificateTemplate]: CertificateTemplate,
[id_enrollCertType]: EnrollCertTypeChoice,
[id_netscapeComment]: NetscapeComment,
[id_netscapeCertType]: NetscapeCertType,
[id_caVersion]: CaVersion,
[id_certificateTransparency]: CertificateTransparency,
[id_lei]: LeiChoice,
[id_role]: LeiRole,
[id_adbe_timestamp]: Timestamp,
[id_adbe_archiveRevInfo]: ArchiveRevInfo,
[id_ce_privateKeyUsagePeriod]: PrivateKeyUsagePeriod,
[id_entrust_entrustVersInfo]: EntrustVersionInfo,
'2.16.724.1.2.2.4.1': BiometricSyntax,
[id_pe_biometricInfo]: BiometricSyntax,
[id_pe_logotype]: LogotypeExtn,
[id_pe_TNAuthList]: TNAuthorizationList,
[id_pe_subjectInfoAccess]: SubjectInfoAccessSyntax,
[id_ce_cRLNumber]: CRLNumber,
[id_ce_deltaCRLIndicator]: BaseCRLNumber,
[id_ce_keyDescription]: NonStandardKeyDescription,
[id_cabforganizationIdentifier]: CabforganizationIdentifier,
};
class Extension extends AsnData {
getAsnExtnValue() {
return this.asn.extnValue.buffer;
}
constructor(raw) {
super(raw, Extension$1);
const asnExtnValue = this.getAsnExtnValue();
try {
const target = extensionParsers[this.asn.extnID];
if (target) {
this.value = AsnParser.parse(asnExtnValue, target);
}
else {
console.warn(`Didn't detect parser for "${this.asn.extnID}" extension.`);
this.value = Convert_1.ToHex(asnExtnValue);
}
}
catch (error) {
console.error(`Error parse "${this.asn.extnID}" extension:`, error.message);
this.value = Convert_1.ToHex(asnExtnValue);
}
}
}
/*!
* © Peculiar Ventures https://peculiarventures.com/ - MIT License
*/
const certificateRawToBuffer = (raw) => {
if (PemConverter.isPem(raw)) {
return PemConverter.decode(raw)[0];
}
if (Convert_1.isHex(raw)) {
return Convert_1.FromHex(raw);
}
if (Convert_1.isBase64(raw)) {
return Convert_1.FromBase64(raw);
}
if (Convert_1.isBase64Url(raw)) {
return 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 = cryptoProvider.get();
if (crypto.subtle) {
return crypto.subtle.digest(algorithm, data);
}
return undefined;
};
export { CertificateTransparency as C, Extension as E, certificateRawToBuffer as c, getCertificateThumbprint as g };
//# sourceMappingURL=utils-75993c76.js.map