UNPKG

@peculiar/fortify-webcomponents

Version:

Web-components for creating CSR or Certificate and viewing certificates list using Fortify

1,025 lines (972 loc) 60.1 kB
/*! * © Peculiar Ventures https://peculiarventures.com/ - BSD 3-Clause License */ import { O as OIDs, c as OctetString, B as ByteStream, S as SignedCertificateTimestamp, A as AsnData, E as Extension$1, e as AsnParser, C as Convert_1, i as id_pe_authorityInfoAccess, f as AuthorityInfoAccessSyntax, g as id_ce_authorityKeyIdentifier, h as AuthorityKeyIdentifier, j as id_ce_basicConstraints, k as BasicConstraints, m as id_ce_certificateIssuer, n as CertificateIssuer, o as id_ce_certificatePolicies, p as CertificatePolicies, q as id_ce_cRLDistributionPoints, r as CRLDistributionPoints, s as id_ce_issuingDistributionPoint, I as IssuingDistributionPoint, t as id_ce_cRLReasons, u as CRLReason, v as id_ce_extKeyUsage, w as ExtendedKeyUsage, x as id_ce_inhibitAnyPolicy, y as InhibitAnyPolicy, z as id_ce_invalidityDate, F as InvalidityDate, G as id_ce_issuerAltName, H as IssueAlternativeName, J as id_ce_keyUsage, K as KeyUsage, L as id_ce_nameConstraints, N as NameConstraints, M as id_ce_policyConstraints, Q as PolicyConstraints, R as id_ce_policyMappings, T as PolicyMappings, U as id_ce_subjectAltName, V as SubjectAlternativeName, W as id_ce_subjectDirectoryAttributes, X as SubjectDirectoryAttributes, Y as id_ce_subjectKeyIdentifier, Z as SubjectKeyIdentifier, _ as id_pe_qcStatements, $ as QCStatements, a0 as id_certificateTemplate, a1 as CertificateTemplate, a2 as id_enrollCertType, a3 as EnrollCertTypeChoice, a4 as id_netscapeComment, a5 as NetscapeComment, a6 as id_netscapeCertType, a7 as NetscapeCertType, a8 as id_caVersion, a9 as CaVersion, aa as id_lei, ab as LeiChoice, ac as id_role, ad as LeiRole, ae as id_adbe_timestamp, af as Timestamp, ag as id_adbe_archiveRevInfo, ah as ArchiveRevInfo, ai as id_ce_privateKeyUsagePeriod, aj as PrivateKeyUsagePeriod, ak as id_entrust_entrustVersInfo, al as EntrustVersionInfo, am as BiometricSyntax, an as id_pe_biometricInfo, ao as LogotypeExtn, ap as id_pe_TNAuthList, aq as TNAuthorizationList, ar as id_pe_subjectInfoAccess, as as SubjectInfoAccessSyntax, at as id_ce_cRLNumber, au as CRLNumber, av as id_ce_deltaCRLIndicator, aw as BaseCRLNumber, ax as id_ce_keyDescription, ay as NonStandardKeyDescription, az as id_cabforganizationIdentifier, aA as CabforganizationIdentifier, P as PemConverter, aB as cryptoProvider, l as l10n, aC as dateShort, aD as Name, aE as OtherName, aF as DisplayText, aG as UserNotice, aH as BufferSourceConverter_1, aI as EDIPartyName, aJ as __decorate, aK as AsnProp, aL as AsnPropTypes, aM as AsnType, aN as AsnTypeTypes, aO as AsnArray, aP as id_qcs_pkixQCSyntax_v2, aQ as SemanticsInformation, aR as AsnIntegerArrayBufferConverter, aS as AttestationApplicationId, aT as RootOfTrust, aU as IntegerSet } from './certification_request.js'; import { h } from '@stencil/core/internal/client'; import { B as Button } from './button.js'; import { T as Typography } from './typography.js'; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ function getStringByOID(value) { const oid = OIDs[value]; if (oid) { return `${oid} (${value})`; } return value; } /*! * © 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. */ function camelCaseToWords(value) { const result = value.replace(/([A-Z])/g, ' $1'); return result.charAt(0).toUpperCase() + result.slice(1); } 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; }; /*! * © 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 getLEILink = (lei) => `https://search.gleif.org/#/record/${lei}`; const getDNSNameLink = (dnsName) => `https://search.censys.io/search?resource=hosts&q=dns.names%3A${dnsName}`; const getIPAddressLink = (ipAddress) => `https://search.censys.io/search?resource=hosts&q=ip%3A${ipAddress}`; /*! * © 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. */ function isLink(value) { return value.indexOf('http') === 0; } /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const Link = (props, children) => { const { href, variant, } = props; return (h(Typography, { component: "a", variant: variant, color: "secondary", // @ts-ignore href: href, target: "_blank", rel: "noreferrer noopener" }, children)); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const TableRowTable = (_, children) => (h("tr", null, h("td", { colSpan: 2 }, h("table", null, children)))); const RowTitle = (props) => { const { value } = props; if (!value) { return null; } return [ h("tr", { class: "title" }, h("td", { colSpan: 2 }, h(Typography, { variant: "s1", color: "black" }, value))), h("tr", null, h("td", { colSpan: 2, class: "divider" }, h("span", null))), ]; }; const RowValue = (props) => { const { name, value, monospace, collapse, href, extraValue, } = props; if (!name) { return null; } if (value === undefined || value === null) { return null; } let elementValue; if (collapse) { elementValue = (h("peculiar-text-hider", null, value)); } else { elementValue = value; } const hasValue = !!value.toString(); return (h("tr", null, h("td", { colSpan: hasValue ? 1 : 2 }, h(Typography, { variant: "b2", color: "gray-9" }, name)), hasValue && (h("td", { class: { monospace, } }, (isLink(value.toString()) || href) ? (h(Link, { variant: "b2", href: href || value.toString() }, value)) : (h(Typography, { variant: "b2", color: "black" }, elementValue, extraValue)))))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const BasicInformation = (props) => { const { serialNumber, version, validity, notBefore, notAfter, lastUpdate, nextUpdate, type, } = props; return [ h(RowTitle, { value: l10n.getString('basicInformation') }), h(RowValue, { name: l10n.getString('type'), value: type }), h(RowValue, { name: l10n.getString('serialNumber'), value: serialNumber, monospace: true }), h(RowValue, { name: l10n.getString('version'), value: version }), h(RowValue, { name: l10n.getString('validity'), value: validity }), h(RowValue, { name: l10n.getString('issued'), value: notBefore ? dateShort(notBefore) : undefined }), h(RowValue, { name: l10n.getString('expired'), value: notAfter ? dateShort(notAfter) : undefined }), h(RowValue, { name: l10n.getString('lastUpdate'), value: lastUpdate ? dateShort(lastUpdate) : undefined }), h(RowValue, { name: l10n.getString('nextUpdate'), value: nextUpdate ? dateShort(nextUpdate) : undefined }), ]; }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const Signature = (props) => { const { signature } = props; if (!signature) { return null; } function renderSignatureDetails(data) { return [ h(RowValue, { name: l10n.getString('algorithm'), value: getStringByOID(data.algorithm) }), h(RowValue, { name: l10n.getString('value'), value: Convert_1.ToHex(data.value), monospace: true, collapse: true }), ]; } return [ h(RowTitle, { value: l10n.getString('signature') }), renderSignatureDetails(signature), (signature.params && signature.params.length && signature.params.map((param) => (h(TableRowTable, null, renderSignatureDetails(param))))), ]; }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const Thumbprints = (props) => { const { thumbprints } = props; if (!thumbprints) { return null; } const keys = Object.keys(thumbprints); if (!keys.length) { return null; } return [ h(RowTitle, { value: l10n.getString('fingerprints') }), keys.map((name) => (h(RowValue, { name: name, value: thumbprints[name], monospace: true }))), ]; }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const BasicExtension = (props, children) => { const { extension } = props; return ([ h(RowValue, { name: "Name", value: getStringByOID(extension.asn.extnID) }), h(RowValue, { name: "Critical", value: extension.asn.critical ? l10n.getString('yes') : l10n.getString('no') }), children, h("tr", null, h("td", { colSpan: 2, class: "divider" }, h("span", null))), ]); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const KeyUsageExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Usage", value: extension.value.toJSON().join(', ') }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const BasicConstraintsExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Certificate Authority", value: extension.value.cA ? l10n.getString('yes') : l10n.getString('no') }), h(RowValue, { name: "Path Length Constraint", value: extension.value.pathLenConstraint }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const ExtendedKeyUsageExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, Boolean(extension.value.length) && ([ h(RowValue, { name: "Purposes", value: "" }), extension.value.map((usage) => (h(TableRowTable, null, h(RowValue, { name: "Purpose", value: getStringByOID(usage) })))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const SubjectKeyIdentifierExtension = (props) => { const { extension, getSubjectKeyIdChildrenLink, getSubjectKeyIdSiblingsLink } = props; const keyId = Convert_1.ToHex(extension.value.buffer); const childrenLink = getSubjectKeyIdChildrenLink(keyId); const siblingsLink = getSubjectKeyIdSiblingsLink(keyId); return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Key ID", value: keyId, monospace: true, extraValue: [ childrenLink && (h("span", null, "\u00A0[", h(Link, { href: childrenLink }, "children"), "]")), siblingsLink && (h("span", null, "\u00A0[", h(Link, { href: siblingsLink }, "siblings"), "]")), ] }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const AuthorityKeyIdentifierExtension = (props) => { const { extension, getAuthKeyIdParentLink, getAuthKeyIdSiblingsLink } = props; const keyId = Convert_1.ToHex(extension.value.keyIdentifier.buffer); const parentLink = getAuthKeyIdParentLink(keyId); const siblingsLink = getAuthKeyIdSiblingsLink(keyId); return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Key ID", value: keyId, monospace: true, extraValue: [ parentLink && (h("span", null, "\u00A0[", h(Link, { href: parentLink }, "parents"), "]")), siblingsLink && (h("span", null, "\u00A0[", h(Link, { href: siblingsLink }, "siblings"), "]")), ] }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const names = { otherName: 'Other Name', rfc822Name: 'RFC 822 Name', dNSName: 'DNS Name', x400Address: 'X400 Address', directoryName: 'Directory Name', ediPartyName: 'Edi Party Name ', uniformResourceIdentifier: 'URI', iPAddress: 'IP Address', registeredID: 'Registered ID', }; const GeneralNamePart = (props) => { const { generalName, getDNSNameLink, getIPAddressLink } = props; if (!generalName) { return null; } return Object.keys(generalName).map((name) => { const value = generalName[name]; if (value instanceof Name) { return [ h(RowValue, { name: names[name] || name, value: "" }), h(TableRowTable, null, value.map((relativeDistinguishedName) => (relativeDistinguishedName.map((attributeTypeAndValue) => (h(RowValue, { name: OIDs[attributeTypeAndValue.type] || attributeTypeAndValue.type, value: attributeTypeAndValue.value.toString() })))))), ]; } if (value instanceof OtherName) { try { const text = AsnParser.parse(value.value, DisplayText); return (h(RowValue, { name: OIDs[value.typeId] || value.typeId, value: text.toString() })); } catch (error) { // } try { const text = AsnParser.parse(value.value, UserNotice); if (text.explicitText) { return (h(RowValue, { name: OIDs[value.typeId] || value.typeId, value: text.explicitText.toString() })); } } catch (error) { // } return (h(RowValue, { name: OIDs[value.typeId] || value.typeId, value: Convert_1.ToHex(value.value), monospace: true })); } if (BufferSourceConverter_1.isBufferSource(value)) { return (h(RowValue, { name: names[name] || name, value: Convert_1.ToString(value) })); } if (value instanceof EDIPartyName) { return (h(RowValue, { name: names[name] || name, value: value.partyName.toString() })); } if (name === 'dNSName') { return (h(RowValue, { name: names[name] || name, value: value, href: getDNSNameLink(value) })); } if (name === 'iPAddress') { return (h(RowValue, { name: names[name] || name, value: value, href: getIPAddressLink(value) })); } return (h(RowValue, { name: names[name] || name, value: value })); }); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CRLDistributionPointsExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, extension.value.map((point) => { var _a, _b; return ([ (_a = point.distributionPoint) === null || _a === void 0 ? void 0 : _a.fullName.map((gn) => (h(GeneralNamePart, Object.assign({ generalName: gn }, props)))), (_b = point.cRLIssuer) === null || _b === void 0 ? void 0 : _b.map((gn) => (h(GeneralNamePart, Object.assign({ generalName: gn }, props)))), ]); }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const InfoAccessSyntaxExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, Boolean(extension.value.length) && ([ h(RowValue, { name: "Descriptions", value: "" }), extension.value.map((description) => (h(TableRowTable, null, h(RowValue, { name: "Method", value: getStringByOID(description.accessMethod) }), h(GeneralNamePart, Object.assign({ generalName: description.accessLocation }, props))))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const SubjectAlternativeNameExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, extension.value.map((gn) => (h(GeneralNamePart, Object.assign({ generalName: gn }, props)))))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CertificatePoliciesExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, Boolean(extension.value.length) && ([ h(RowValue, { name: "Policies", value: "" }), extension.value.map((policy) => (h(TableRowTable, null, h(RowValue, { name: "Policy ID", value: getStringByOID(policy.policyIdentifier) }), policy.policyQualifiers && Boolean(policy.policyQualifiers.length) && ([ h(RowValue, { name: "Qualifiers", value: "" }), policy.policyQualifiers.map((qualifierInfo) => { const data = [ h(RowValue, { name: "Qualifier ID", value: getStringByOID(qualifierInfo.policyQualifierId) }), ]; if (qualifierInfo.policyQualifierId === '1.3.6.1.5.5.7.2.1') { const value = AsnParser.parse(qualifierInfo.qualifier, DisplayText); data.push(h(RowValue, { name: "Value", value: value.toString() })); } if (qualifierInfo.policyQualifierId === '1.3.6.1.5.5.7.2.2') { const value = AsnParser.parse(qualifierInfo.qualifier, UserNotice); if (value.explicitText) { data.push(h(RowValue, { name: "Value", value: value.explicitText.toString() })); } } return (h(TableRowTable, null, data)); }), ])))), ]))); }; /*! * © 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 logs = { '9606c02c690033aa1d145f59c6e2648d0549f0df96aab8db915a70d8ecf390a5': 'Akamai CT', '39376f545f7b4607f59742d768cd5d2437bf3473b6534a4834bcf72e681c83c9': 'Alpha CT', a577ac9ced7548dd8f025b67a241089df86e0f476ec203c2ecbedb185f282638: 'CNNIC CT', cdb5179b7fc1c046feea31136a3f8f002e6182faf8896fecc8b2f5b5ab604900: 'Certly.IO', '1fbc36e002ede97f40199e86b3573b8a4217d80187746ad0da03a06054d20df4': 'Cloudflare “Nimbus2017”', db74afeecb29ecb1feca3e716d2ce5b9aabb36f7847183c75d9d4f37b61fbf64: 'Cloudflare “Nimbus2018”', '747eda8331ad331091219cce254f4270c2bffd5e422008c6373579e6107bcc56': 'Cloudflare “Nimbus2019”', '5ea773f9df56c0e7b536487dd049e0327a919a0c84a112128418759681714558': 'Cloudflare “Nimbus2020”', '4494652eb0eeceafc44007d8a8fe28c0dae682bed8cb31b53fd33396b5b681a8': 'Cloudflare “Nimbus2021”', '41c8cab1df22464a10c6a13a0942875e4e318b1b03ebeb4bc768f090629606f6': 'Cloudflare “Nimbus2022”', '7a328c54d8b72db620ea38e0521ee98416703213854d3bd22bc13a57a352eb52': 'Cloudflare “Nimbus2023”', '6ff141b5647e4222f7ef052cefae7c21fd608e27d2af5a6e9f4b8a37d6633ee5': 'DigiCert Nessie2018', fe446108b1d01ab78a62ccfeab6ab2b2babff3abdad80a4d8b30df2d0008830c: 'DigiCert Nessie2019', c652a0ec48ceb3fcab170992c43a87413309e80065a26252401ba3362a17c565: 'DigiCert Nessie2020', eec095ee8d72640f92e3c3b91bc712a3696a097b4b6a1a1438e647b2cbedc5f9: 'DigiCert Nessie2021', '51a3b0f5fd01799c566db837788f0ca47acc1b27cbf79e88429a0dfed48b05e5': 'DigiCert Nessie2022', b3737707e18450f86386d605a9dc11094a792db1670c0b87dcf0030e7936a59a: 'DigiCert Nessie2023', '5614069a2fd7c2ecd3f5e1bd44b23ec74676b9bc99115cc0ef949855d689d0dd': 'DigiCert Server', '8775bfe7597cf88c43995fbdf36eff568d475636ff4ab560c1b4eaff5ea0830f': 'DigiCert Server 2', c1164ae0a772d2d4392dc80ac10770d4f0c49bde991a4840c1fa075164f63360: 'DigiCert Yeti2018', e2694bae26e8e94009e8861bb63b83d43ee7fe7488fba48f2893019dddf1dbfe: 'DigiCert Yeti2019', f095a459f200d18240102d2f93888ead4bfe1d47e399e1d034a6b0a8aa8eb273: 'DigiCert Yeti2020', '5cdc4392fee6ab4544b15e9ad456e61037fbd5fa47dca17394b25ee6f6c70eca': 'DigiCert Yeti2021', '2245450759552456963fa12ff1f76d86e0232663adc04b7f5dc6835c6ee20f02': 'DigiCert Yeti2022', '35cf191bbfb16c57bf0fad4c6d42cbbbb627202651ea3fe12aefa803c33bd64c': 'DigiCert Yeti2023', '717ea7420975be84a2723553f1777c26dd51af4e102144094d9019b462fb6668': 'GDCA 1', '14308d90ccd030135005c01ca526d81e84e87624e39b6248e08f724aea3bb42a': 'GDCA 2', c9cf890a21109c666cc17a3ed065c930d0e0135a9feba85af14210b8072421aa: 'GDCA CT #1', '924a30f909336ff435d6993a10ac75a2c641728e7fc2d659ae6188ffad40ce01': 'GDCA CT #2', fad4c97cc49ee2f8ac85c5ea5cea09d0220dbbf4e49c6b50662ff868f86b8c28: 'Google “Argon2017”', a4501269055a15545e6211ab37bc103f62ae5576a45e4b1714453e1b22106a25: 'Google “Argon2018”', '63f2dbcde83bcc2ccf0b728427576b33a48d61778fbd75a638b1c768544bd88d': 'Google “Argon2019”', b21e05cc8ba2cd8a204e8766f92bb98a2520676bdafa70e7b249532def8b905e: 'Google “Argon2020”', f65c942fd1773022145418083094568ee34d131933bfdf0c2f200bcc4ef164e3: 'Google “Argon2021”', '2979bef09e393921f056739f63a577e5be577d9c600af8f94d5d265c255dc784': 'Google “Argon2022”', e83ed0da3ef5063532e75728bc896bc903d3cbd1116beceb69e1777d6d06bd6e: 'Google “Argon2023”', '68f698f81f6482be3a8ceeb9281d4cfc71515d6793d444d10a67acbb4f4ffbc4': 'Google “Aviator”', c3bf03a7e1ca8841c607bae3ff4270fca5ec45b186ebbe4e2cf3fc778630f5f6: 'Google “Crucible”', '1d024b8eb1498b344dfd87ea3efc0996f7506f235d1d497061a4773c439c25fb': 'Google “Daedalus”', '293c519654c83965baaa50fc5807d4b76fbf587a2972dca4c30cf4e54547f478': 'Google “Icarus”', a4b90990b418581487bb13a2cc67700a3c359804f91bdfb8e377cd0ec80ddc10: 'Google “Pilot”', ee4bbdb775ce60bae142691fabe19e66a30f7e5fb072d88300c47b897aa8fdcb: 'Google “Rocketeer”', bbd9dfbc1f8a71b593942397aa927b473857950aab52e81a909664368e1ed185: 'Google “Skydiver”', '52eb4b225ec896974850675f23e43bc1d021e3214ce52ecd5fa87c203cdfca03': 'Google “Solera2018”', '0b760e9a8b9a682f88985b15e947501a56446bba8830785c3842994386450c00': 'Google “Solera2019”', '1fc72ce5a1b799f400c359bff96ca3913548e8644220610952e9ba1774f7bac7': 'Google “Solera2020”', a3c99845e80ab7ce00157b3742df0207dd272b2b602ecf98ee2c12db9c5ae7e7: 'Google “Solera2021”', '697aafca1a6b536fae21205046debad7e0eaea13d2432e6e9d8fb379f2b9aaf3': 'Google “Solera2022”', a899d8780c9290aaf462f31880ccfbd52451e970d0fbf591ef75b0d99b645681: 'Google “Submariner”', b0cc83e5a5f97d6baf7c09cc284904872ac7e88b132c6350b7c6fd26e16c6c77: 'Google “Testtube”', b10cd559a6d67846811f7df9a51532739ac48d703bea0323da5d38755bc0ad4e: 'Google “Xenon2018”', '084114980071532c16190460bcfc47fdc2653afa292c72b37ff863ae29ccc9f0': 'Google “Xenon2019”', '07b75c1be57d68fff1b0c61d2315c7bae6577c5794b76aeebc613a1a69d3a21c': 'Google “Xenon2020”', '7d3ef2f88fff88556824c2c0ca9e5289792bc50e78097f2e6a9768997e22f0d7': 'Google “Xenon2021”', '46a555eb75fa912030b5a28969f4f37d112c4174befd49b885abf2fc70fe6d47': 'Google “Xenon2022”', '7461b4a09cfb3d41d75159575b2e7649a445a8d27709b0cc564a6482b7eb41a3': 'Izenpe', '8941449c70742e06b9fc9ce7b116ba0024aa36d59af44f0204404f00f7ea8566': 'Izenpe “Argi”', '296afa2d568bca0d2ea844956ae9721fc35fa355ecda99693aafd458a71aefdd': 'Let“s Encrypt ”Clicky”', '537b69a3564335a9c04904e39593b2c298eb8d7a6e83023635c627248cd6b440': 'Nordu “flimsy”', aae70b7f3cb8d566c86c2f16979c9f445f69ab0eb4535589b2f77a030104f3cd: 'Nordu “plausible”', e0127629e90496564e3d0147984498aa48f8adb16600eb7902a1ef9909906273: 'PuChuangSiDa CT', cf55e28923497c340d5206d05353aeb25834b52f1f8dc9526809f212efdd7ca6: 'SHECA CT 1', '32dc59c2d4c41968d56e14bc61ac8f0e45db39faf3c155aa4252f5001fa0c623': 'SHECA CT 2', db76fdadac65e7d09508886e2159bd8b90352f5fead3e3dc5e22eb350acc7b98: 'Sectigo (Comodo) “Dodo” CT', '6f5376ac31f03119d89900a45115ff77151c11d902c10029068db2089a37d913': 'Sectigo (Comodo) “Mammoth” CT', '5581d4c2169036014aea0b9b573c53f0c0e43878702508172fa3aa1d0713d30c': 'Sectigo (Comodo) “Sabre” CT', '34bb6ad6c3df9c03eea8a499ff7891486c9d5e5cac92d01f7bfd1bce19db48ef': 'StartCom', ddeb1d2b7a0d4fa6208b81ad8168707e2e8e9d01d55c888d3d11c4cdb6ecbecc: 'Symantec', a7ce4a4e6207e0addee5fdaa4b1f86768767b5d002a55d47310e7e670a95eab2: 'Symantec Deneb', '15970488d7b997a05beb52512adee8d2e8b4a3165264121a9fabfbd5f85ad93f': 'Symantec “Sirius”', bc78e1dfc5f63c684649334da10fa15f0979692009c081b4f3f6917f3ed9b8a5: 'Symantec “Vega”', b0b784bc81c0ddc47544e883f05985bb9077d134d8ab88b2b2e533980b8e508b: 'Up In The Air “Behind the Sofa”', ac3b9aed7fa9674757159e6d7d575672f9d98100941e9bdeffeca1313b75782d: 'Venafi', '03019df3fd85a69a8ebd1facc6da9ba73e469774fe77f579fc5a08b8328c1d6b': 'Venafi Gen2 CT', '41b2dc2e89e63ce4af1ba7bb29bf68c6dee6f9f1cc047e30dffae3b3ba259263': 'WoSign', '63d0006026dde10bb0601f452446965ee2b6ea2cd4fbc95ac866a550af9075b7': 'WoSign 2', '9e4ff73dc3ce220b69217c899e468076abf8d78636d5ccfc85a31a75628ba88b': 'WoSign CT #1', }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CertificateTransparencyExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, Boolean(extension.value.items.length) && ([ h(RowValue, { name: "Signed Certificate Timestamps", value: "" }), extension.value.toJSON().map((signedCertificateTimestamp) => (h(TableRowTable, null, h(RowValue, { name: "Version", value: signedCertificateTimestamp.version + 1 }), h(RowValue, { name: "Log Operator", value: logs[signedCertificateTimestamp.logId] || signedCertificateTimestamp.logId }), h(RowValue, { name: "Log Key ID", value: signedCertificateTimestamp.logId, monospace: true }), h(RowValue, { name: "Timestamp", value: dateShort(signedCertificateTimestamp.timestamp) }), h(RowValue, { name: "Signature Algorithm", value: `${signedCertificateTimestamp.hashAlgorithm} ${signedCertificateTimestamp.signatureAlgorithm}`.toUpperCase() }), h(RowValue, { name: "Signature", value: signedCertificateTimestamp.signature, monospace: true })))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const NameConstraintsExtension = (props) => { var _a, _b; const { extension } = props; return (h(BasicExtension, { extension: extension }, (_a = extension.value.excludedSubtrees) === null || _a === void 0 ? void 0 : _a.map((generalSubtree) => (h(GeneralNamePart, Object.assign({ generalName: generalSubtree.base }, props)))), (_b = extension.value.permittedSubtrees) === null || _b === void 0 ? void 0 : _b.map((generalSubtree) => (h(GeneralNamePart, Object.assign({ generalName: generalSubtree.base }, props)))))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CertificateTemplateExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Template ID", value: extension.value.templateID }), h(RowValue, { name: "Template Major Version", value: extension.value.templateMajorVersion }), h(RowValue, { name: "Template Minor Version", value: extension.value.templateMinorVersion }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const EnrollCertTypeChoiceExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Name", value: extension.value.toString() }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CaVersionExtension = (props) => { const { extension } = props; const version = extension.value.getVersion(); return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Certificate Index", value: version.certificateIndex }), h(RowValue, { name: "Key Index", value: version.keyIndex }))); }; var PdsLocations_1, QcEuPDS_1, QcType_1, QcCClegislation_1; let Iso4217CurrencyCode = class Iso4217CurrencyCode { constructor(value) { if (typeof value === "string") { this.alphabetic = value; } else if (typeof value === "number") { this.numeric = value; } } }; __decorate([ AsnProp({ type: AsnPropTypes.PrintableString }) ], Iso4217CurrencyCode.prototype, "alphabetic", void 0); __decorate([ AsnProp({ type: AsnPropTypes.PrintableString }) ], Iso4217CurrencyCode.prototype, "numeric", void 0); Iso4217CurrencyCode = __decorate([ AsnType({ type: AsnTypeTypes.Choice }) ], Iso4217CurrencyCode); class MonetaryValue { constructor(params = {}) { this.currency = new Iso4217CurrencyCode(); this.amount = 0; this.exponent = 0; Object.assign(this, params); } } __decorate([ AsnProp({ type: Iso4217CurrencyCode }) ], MonetaryValue.prototype, "currency", void 0); __decorate([ AsnProp({ type: AsnPropTypes.Integer }) ], MonetaryValue.prototype, "amount", void 0); __decorate([ AsnProp({ type: AsnPropTypes.Integer }) ], MonetaryValue.prototype, "exponent", void 0); let QcEuLimitValue = class QcEuLimitValue extends MonetaryValue { }; QcEuLimitValue = __decorate([ AsnType({ type: AsnTypeTypes.Sequence }) ], QcEuLimitValue); let QcEuRetentionPeriod = class QcEuRetentionPeriod { constructor(value = 0) { this.value = value; } }; __decorate([ AsnProp({ type: AsnPropTypes.Integer }) ], QcEuRetentionPeriod.prototype, "value", void 0); QcEuRetentionPeriod = __decorate([ AsnType({ type: AsnTypeTypes.Choice }) ], QcEuRetentionPeriod); let PdsLocation = class PdsLocation { constructor(params = {}) { this.url = ""; this.language = ""; Object.assign(this, params); } }; __decorate([ AsnProp({ type: AsnPropTypes.IA5String }) ], PdsLocation.prototype, "url", void 0); __decorate([ AsnProp({ type: AsnPropTypes.PrintableString }) ], PdsLocation.prototype, "language", void 0); PdsLocation = __decorate([ AsnType({ type: AsnTypeTypes.Sequence }) ], PdsLocation); let PdsLocations = PdsLocations_1 = class PdsLocations extends AsnArray { constructor(items) { super(items); Object.setPrototypeOf(this, PdsLocations_1.prototype); } }; PdsLocations = PdsLocations_1 = __decorate([ AsnType({ type: AsnTypeTypes.Sequence, itemType: PdsLocation }) ], PdsLocations); let QcEuPDS = QcEuPDS_1 = class QcEuPDS extends PdsLocations { constructor(items) { super(items); Object.setPrototypeOf(this, QcEuPDS_1.prototype); } }; QcEuPDS = QcEuPDS_1 = __decorate([ AsnType({ type: AsnTypeTypes.Sequence, itemType: PdsLocation }) ], QcEuPDS); let QcType = QcType_1 = class QcType extends AsnArray { constructor(items) { super(items); Object.setPrototypeOf(this, QcType_1.prototype); } }; QcType = QcType_1 = __decorate([ AsnType({ type: AsnTypeTypes.Sequence, itemType: AsnPropTypes.ObjectIdentifier }) ], QcType); let QcCClegislation = QcCClegislation_1 = class QcCClegislation extends AsnArray { constructor(items) { super(items); Object.setPrototypeOf(this, QcCClegislation_1.prototype); } }; QcCClegislation = QcCClegislation_1 = __decorate([ AsnType({ type: AsnTypeTypes.Sequence, itemType: AsnPropTypes.PrintableString }) ], QcCClegislation); const id_etsi_qcs = "0.4.0.1862.1"; const id_etsi_qcs_qcRetentionPeriod = `${id_etsi_qcs}.3`; const id_etsi_qcs_qcPDS = `${id_etsi_qcs}.5`; const id_etsi_qcs_qcType = `${id_etsi_qcs}.6`; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const QCStatementsExtension = (props) => { const { extension } = props; function renderStatementInfo(statementId, statementInfo) { if (!statementInfo.byteLength) { return null; } if (statementId === id_qcs_pkixQCSyntax_v2) { const semanticsInformation = AsnParser.parse(statementInfo, SemanticsInformation); return (h(RowValue, { name: "Semantics Identifier", value: getStringByOID(semanticsInformation.semanticsIdentifier) })); } if (statementId === id_etsi_qcs_qcType) { const qcTypes = AsnParser.parse(statementInfo, QcType); return (h(RowValue, { name: "QC Types", value: qcTypes.map((type) => getStringByOID(type)).join(', ') })); } if (statementId === id_etsi_qcs_qcRetentionPeriod) { const retentionPeriod = AsnParser.parse(statementInfo, QcEuRetentionPeriod); return (h(RowValue, { name: "Retention Period", value: `${retentionPeriod.value} years` })); } if (statementId === id_etsi_qcs_qcPDS) { const pdsLocations = AsnParser.parse(statementInfo, PdsLocations); return ([ h(RowValue, { name: "PDS Locations", value: "" }), pdsLocations.map((location) => (h(TableRowTable, null, h(RowValue, { name: "URL", value: location.url }), h(RowValue, { name: "Language", value: location.language })))), ]); } return (h(RowValue, { name: "Info", value: Convert_1.ToHex(statementInfo), monospace: true })); } return (h(BasicExtension, { extension: extension }, Boolean(extension.value.length) && ([ h(RowValue, { name: "Statements", value: "" }), extension.value.map((statement) => (h(TableRowTable, null, h(RowValue, { name: "Statement ID", value: getStringByOID(statement.statementId) }), renderStatementInfo(statement.statementId, statement.statementInfo)))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const NetscapeCommentExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Comment", value: extension.value.value }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const NetscapeCertTypeExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Type", value: extension.value.toJSON().join(', ') }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const LeiRoleExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Role", value: extension.value.text }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const LeiExtension = (props) => { const { extension, getLEILink } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Identifier", value: extension.value.text, href: getLEILink(extension.value.text) }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const TimestampExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Version", value: extension.value.version }), h(GeneralNamePart, Object.assign({ generalName: extension.value.location }, props)), h(RowValue, { name: "Requires Auth", value: extension.value.requiresAuth ? l10n.getString('yes') : l10n.getString('no') }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const ArchiveRevInfoExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Version", value: extension.value.version }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CRLReasonExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Reason", value: extension.value.toJSON() }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ function getAttributeValue(attribute) { return Convert_1.ToString(attribute.values[0]); } /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const SubjectDirectoryAttributesExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, Boolean(extension.value.length) && ([ h(RowValue, { name: "Attributes", value: "" }), extension.value.map((attribute) => (h(TableRowTable, null, h(RowValue, { name: "Type", value: getStringByOID(attribute.type) }), h(RowValue, { name: "Value", value: getAttributeValue(attribute) })))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const AsStringExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Value", value: extension.value, monospace: true }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const PrivateKeyUsagePeriodExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Not Before", value: dateShort(extension.value.notBefore) }), h(RowValue, { name: "Not After", value: dateShort(extension.value.notAfter) }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const EntrustVersionInfoExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Version", value: extension.value.entrustVers }), h(RowValue, { name: "Info Flags", value: extension.value.entrustInfoFlags.toJSON().join(', ') }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const BiometricSyntaxExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, Boolean(extension.value.length) && ([ h(RowValue, { name: "Biometrics", value: "" }), extension.value.map((data) => (h(TableRowTable, null, h(RowValue, { name: "OID", value: getStringByOID(data.typeOfBiometricData.biometricDataOid) }), h(RowValue, { name: "Type", value: data.typeOfBiometricData.predefinedBiometricType }), h(RowValue, { name: "Algorithm", value: getStringByOID(data.hashAlgorithm.algorithm) }), h(RowValue, { name: "Hash", value: Convert_1.ToHex(data.biometricDataHash.buffer), monospace: true }), h(RowValue, { name: "Source Uri", value: data.sourceDataUri })))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const LogotypeExtension = (props) => { const { extension } = props; const renderImage = (image) => { if (!image) { return null; } return image.map((img) => { const { imageDetails } = img; return [ h(RowValue, { name: "Image Type", value: imageDetails.mediaType }), h(RowValue, { name: "Image Hash", value: Convert_1.ToHex(imageDetails.logotypeHash[0].hashValue), monospace: true }), h(RowValue, { name: "Image URL", value: imageDetails.logotypeURI[0], monospace: true, collapse: true }), h(RowValue, { name: "Image Hash Algorithm", value: getStringByOID(imageDetails.logotypeHash[0].hashAlg.algorithm) }), ]; }); }; const renderAudio = (audio) => { if (!audio) { return null; } return audio.map((aud) => { const { audioDetails } = aud; return [ h(RowValue, { name: "Audio Type", value: audioDetails.mediaType }), h(RowValue, { name: "Audio Hash", value: Convert_1.ToHex(audioDetails.logotypeHash[0].hashValue), monospace: true }), h(RowValue, { name: "Audio URL", value: audioDetails.logotypeURI[0], monospace: true, collapse: true }), h(RowValue, { name: "Audio Hash Algorithm", value: getStringByOID(audioDetails.logotypeHash[0].hashAlg.algorithm) }), ]; }); }; const renderLogo = (title, info) => { if (!info || !info.direct) { return null; } const { image, audio } = info.direct; return [ h(RowValue, { name: "Type", value: title }), renderImage(image), renderAudio(audio), h("tr", null, h("td", null), h("td", null)), ]; }; return (h(BasicExtension, { extension: extension }, renderLogo('Subject', extension.value.subjectLogo), renderLogo('Issuer', extension.value.issuerLogo))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const TNAuthListExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, extension.value.length > 0 && ([ h(RowValue, { name: "Entries", value: "" }), extension.value.map((entry) => (h(TableRowTable, null, h(RowValue, { name: "SPC", value: entry.spc }), h(RowValue, { name: "Range", value: entry.range ? `start=${entry.range.start} count==${entry.range.count}` : null }), h(RowValue, { name: "One", value: entry.one })))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const PolicyConstraintsExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, extension.value.requireExplicitPolicy && (h(RowValue, { name: "Require Explicit Policy", value: AsnIntegerArrayBufferConverter.toASN(extension.value.requireExplicitPolicy).valueBlock.toString() })), extension.value.inhibitPolicyMapping && (h(RowValue, { name: "Inhibit Policy Mapping", value: AsnIntegerArrayBufferConverter.toASN(extension.value.inhibitPolicyMapping).valueBlock.toString() })))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const PolicyMappingsExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, extension.value.length > 0 && ([ h(RowValue, { name: "Policies", value: "" }), extension.value.map((policy) => (h(TableRowTable, null, h(RowValue, { name: "Issuer Domain", value: getStringByOID(policy.issuerDomainPolicy) }), h(RowValue, { name: "Subject Domain", value: getStringByOID(policy.subjectDomainPolicy) })))), ]))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const CRLNumberExtension = (props) => { const { extension } = props; return (h(BasicExtension, { extension: extension }, h(RowValue, { name: l10n.getString('value'), value: extension.value.value }))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ // eslint-disable-next-line max-len const IssuingDistributionPointExtension = (props) => { var _a; const { extension } = props; return (h(BasicExtension, { extension: extension }, (_a = extension.value.distributionPoint) === null || _a === void 0 ? void 0 : _a.fullName.map((gn) => (h(GeneralNamePart, Object.assign({ generalName: gn }, props)))), extension.value.onlySomeReasons && (h(RowValue, { name: l10n.getString('onlyReasons'), value: extension.value.onlySomeReasons.toJSON().join(', ') })), extension.value.indirectCRL && (h(RowValue, { name: l10n.getString('indirectCRL'), value: l10n.getString('yes') })), extension.value.onlyContainsUserCerts && (h(RowValue, { name: l10n.getString('onlyUserCertificates'), value: l10n.getString('yes') })), extension.value.onlyContainsAttributeCerts && (h(RowValue, { name: l10n.getString('onlyAttributeCertificates'), value: l10n.getString('yes') })), extension.value.onlyContainsCACerts && (h(RowValue, { name: l10n.getString('onlyCACertificates'), value: l10n.getString('yes') })))); }; /*! * © Peculiar Ventures https://peculiarventures.com/ - MIT License */ const KeyDescriptionExtension = (props) => { const { extension } = props; const renderRowValue = (data) => Object.keys(data).map((keyName) => { const keyValue = data[keyName]; let value = ''; switch (true) { case typeof keyValue === 'string' || typeof keyValue === 'number': value = keyValue; break; case keyValue instanceof IntegerSet: value = keyValue.join(', '); break; case typeof keyValue === 'boolean': value = keyValue ? l10n.getString('yes') : l10n.getString('no'); break; case Object.is(keyValue, null): value = 'NULL'; break; case keyValue instanceof RootOfTrust: return [ h(RowValue, { name: camelCaseToWords(keyName), value: "" }), h(TableRowTable, null, renderRowValue(keyValue)), ]; case BufferSourceConverter_1.isBufferSource(keyValue): if (keyName === 'attestationApplicationId') { try { const parsed = AsnParser.parse(keyValue, AttestationApplicationId); if (parsed.packageInfos.length || parsed.signatureDigests.length) { return [ h(RowValue, { name: camelCaseToWords(keyName), value: "" }), Boolean(parsed.packageInfos) && (h(TableRowTable, null, h(RowValue, { name: camelCaseToWords('packageInfos'), value: "" }), parsed.packageInfos.map((attestationPackageInfo) => (h(TableRowTable, null, renderRowValue(attestationPackageInfo)))))), ]; } } catch (error) { // } } try { value = Convert_1.ToString(keyValue); } catch (error) { value = Convert_1.ToHex(keyValue); } break; } return (h(RowValue, { name: camelCaseToWords(keyName), value: value })); }); const renderAuthorizationList = (title, authorizationList) => { if (authorizationList.length === 0) { return null; } return [ h(RowValue, { name: title, value: "" }),