@peculiar/certificates-viewer 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/cjs/{certification_request-cde57123.js → certification_request-e1997ebf.js} +563 -133
  2. package/dist/cjs/crl-f1ee43bc.js +312 -0
  3. package/dist/cjs/{index-ff818d4d.js → download-a97f4cb2.js} +106 -2
  4. package/dist/cjs/index.cjs.js +1 -3
  5. package/dist/cjs/l10n-638a7577.js +167 -0
  6. package/dist/cjs/loader.cjs.js +1 -1
  7. package/dist/cjs/{peculiar-attribute-certificate-viewer_2.cjs.entry.js → peculiar-attribute-certificate-viewer_3.cjs.entry.js} +123 -21
  8. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +25 -15
  9. package/dist/cjs/peculiar-certificate-summary_3.cjs.entry.js +2 -2
  10. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +6 -25
  11. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +6 -8
  12. package/dist/cjs/peculiar.cjs.js +1 -1
  13. package/dist/cjs/{public_key-e56dbe52.js → public_key-ba538d77.js} +80 -40
  14. package/dist/cjs/{x509_certificate-51a97033.js → x509_certificate-42b478d2.js} +13 -7
  15. package/dist/collection/collection-manifest.json +1 -0
  16. package/dist/collection/components/certificate-decoder/certificate-decoder.js +19 -6
  17. package/dist/collection/components/certificate-viewer/attributes/type_relationship_attribute.js +2 -1
  18. package/dist/collection/components/certificate-viewer/basic_information.js +3 -1
  19. package/dist/collection/components/certificate-viewer/extensions/basic_constraints_extension.js +2 -1
  20. package/dist/collection/components/certificate-viewer/extensions/basic_extension.js +2 -1
  21. package/dist/collection/components/certificate-viewer/extensions/crl_number_extension.js +19 -0
  22. package/dist/collection/components/certificate-viewer/extensions/index.js +9 -1
  23. package/dist/collection/components/certificate-viewer/extensions/issuing_distribution_point_extension.js +27 -0
  24. package/dist/collection/components/certificate-viewer/extensions/timestamp_extension.js +2 -1
  25. package/dist/collection/components/certificate-viewer/miscellaneous.js +2 -20
  26. package/dist/collection/components/certificates-viewer/certificates-viewer.js +2 -3
  27. package/dist/collection/components/crl-viewer/crl-viewer.js +234 -0
  28. package/dist/collection/components/crl-viewer/revoked_certificates.js +27 -0
  29. package/dist/collection/crypto/crl.js +82 -0
  30. package/dist/collection/crypto/csr.js +7 -0
  31. package/dist/collection/crypto/extension.js +10 -1
  32. package/dist/collection/crypto/index.js +1 -0
  33. package/dist/collection/crypto/x509_attribute_certificate.js +7 -1
  34. package/dist/collection/crypto/x509_certificate.js +7 -1
  35. package/dist/collection/locales/en.json +12 -1
  36. package/dist/collection/utils/download.js +18 -2
  37. package/dist/collection/utils/index.js +1 -0
  38. package/dist/collection/utils/validator.js +2 -0
  39. package/dist/esm/{certification_request-c0674647.js → certification_request-5d982d92.js} +493 -66
  40. package/dist/esm/crl-f2110716.js +308 -0
  41. package/dist/esm/{index-0ba131b0.js → download-67ac9120.js} +102 -2
  42. package/dist/esm/index.js +1 -3
  43. package/dist/esm/{l10n-ac28fa92.js → l10n-da0dd100.js} +24 -2
  44. package/dist/esm/loader.js +1 -1
  45. package/dist/esm/{peculiar-attribute-certificate-viewer_2.entry.js → peculiar-attribute-certificate-viewer_3.entry.js} +113 -12
  46. package/dist/esm/peculiar-certificate-decoder.entry.js +21 -11
  47. package/dist/esm/peculiar-certificate-summary_3.entry.js +2 -2
  48. package/dist/esm/peculiar-certificate-viewer.entry.js +6 -25
  49. package/dist/esm/peculiar-certificates-viewer.entry.js +6 -8
  50. package/dist/esm/peculiar.js +1 -1
  51. package/dist/esm/{public_key-43b2cbf0.js → public_key-0a3091a5.js} +67 -28
  52. package/dist/esm/{x509_certificate-12f6d344.js → x509_certificate-6b243207.js} +9 -3
  53. package/dist/peculiar/index.esm.js +1 -1
  54. package/dist/peculiar/locales/en.json +12 -1
  55. package/dist/peculiar/p-34e2d6be.entry.js +11 -0
  56. package/dist/peculiar/p-35e7a514.js +12 -0
  57. package/dist/peculiar/p-3aea9dde.js +32 -0
  58. package/dist/peculiar/{p-38635919.entry.js → p-49ab6f8c.entry.js} +1 -1
  59. package/dist/peculiar/p-86116b1f.entry.js +4 -0
  60. package/dist/peculiar/{p-464e0943.js → p-bce2bbe0.js} +9 -9
  61. package/dist/peculiar/p-ca0c34ca.entry.js +26 -0
  62. package/dist/peculiar/p-cff9655c.js +18 -0
  63. package/dist/peculiar/{p-17c4da7b.js → p-db6e24c6.js} +2 -2
  64. package/dist/peculiar/p-e535a666.entry.js +4 -0
  65. package/dist/peculiar/p-f8dc3232.js +63 -0
  66. package/dist/peculiar/peculiar.esm.js +1 -1
  67. package/dist/types/components/certificate-decoder/certificate-decoder.d.ts +3 -3
  68. package/dist/types/components/certificate-viewer/basic_information.d.ts +2 -0
  69. package/dist/types/components/certificate-viewer/extensions/crl_number_extension.d.ts +15 -0
  70. package/dist/types/components/certificate-viewer/extensions/issuing_distribution_point_extension.d.ts +15 -0
  71. package/dist/types/components/certificate-viewer/miscellaneous.d.ts +2 -2
  72. package/dist/types/components/certificate-viewer/row.d.ts +1 -1
  73. package/dist/types/components/crl-viewer/crl-viewer.d.ts +59 -0
  74. package/dist/types/components/crl-viewer/revoked_certificates.d.ts +14 -0
  75. package/dist/types/components.d.ts +66 -0
  76. package/dist/types/crypto/crl.d.ts +28 -0
  77. package/dist/types/crypto/csr.d.ts +2 -0
  78. package/dist/types/crypto/extension.d.ts +2 -2
  79. package/dist/types/crypto/index.d.ts +1 -0
  80. package/dist/types/crypto/x509_attribute_certificate.d.ts +2 -0
  81. package/dist/types/crypto/x509_certificate.d.ts +2 -0
  82. package/dist/types/utils/download.d.ts +10 -2
  83. package/dist/types/utils/index.d.ts +1 -0
  84. package/dist/types/utils/l10n.d.ts +11 -0
  85. package/dist/types/utils/validator.d.ts +1 -0
  86. package/package.json +19 -19
  87. package/dist/cjs/_commonjsHelpers-cb1f949a.js +0 -23
  88. package/dist/cjs/csr-78378ed0.js +0 -150
  89. package/dist/cjs/download-6724f3a7.js +0 -79
  90. package/dist/cjs/l10n-a048a686.js +0 -145
  91. package/dist/cjs/x509_attribute_certificate-cc325b70.js +0 -87
  92. package/dist/esm/_commonjsHelpers-bfbd2ad8.js +0 -20
  93. package/dist/esm/csr-c1b6a176.js +0 -147
  94. package/dist/esm/download-735fb2eb.js +0 -76
  95. package/dist/esm/x509_attribute_certificate-a6d4aa15.js +0 -85
  96. package/dist/peculiar/p-006865d7.js +0 -4
  97. package/dist/peculiar/p-1ebab45c.js +0 -78
  98. package/dist/peculiar/p-3f8d1008.entry.js +0 -4
  99. package/dist/peculiar/p-42da7f97.js +0 -11
  100. package/dist/peculiar/p-4f4c1d30.js +0 -12
  101. package/dist/peculiar/p-530afe84.entry.js +0 -11
  102. package/dist/peculiar/p-6011646e.entry.js +0 -11
  103. package/dist/peculiar/p-6c510523.js +0 -18
  104. package/dist/peculiar/p-d0b55fbb.js +0 -4
  105. package/dist/peculiar/p-d7a13cb4.js +0 -18
  106. package/dist/peculiar/p-e77d0ccc.entry.js +0 -18
@@ -2,14 +2,11 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { h, r as registerInstance, H as Host } from './index-bbd484d9.js';
5
- import { O as OIDs, P as Name, y as ActivityDescription, W as WebGDPR, I as InsuranceValue, T as TypeRelationship, V as ValuationRanking, U as UnstructuredName, t as ChallengePassword } from './certification_request-c0674647.js';
6
- import { b as build } from './index-0ba131b0.js';
7
- import { l as l10n } from './l10n-ac28fa92.js';
8
- import { X as X509AttributeCertificate } from './x509_attribute_certificate-a6d4aa15.js';
9
- import { g as getStringByOID, R as RowValue, G as GeneralNamePart, a as RowTitle, B as BasicInformation, S as Signature, T as Thumbprints, b as getLEILink, c as getDNSNameLink, d as getIPAddressLink, E as Extensions, M as Miscellaneous, e as SubjectName, P as PublicKey } from './public_key-43b2cbf0.js';
10
- import { C as CSR } from './csr-c1b6a176.js';
11
- import './_commonjsHelpers-bfbd2ad8.js';
12
- import './download-735fb2eb.js';
5
+ import { Q as OIDs, S as Name, y as ActivityDescription, W as WebGDPR, I as InsuranceValue, T as TypeRelationship, V as ValuationRanking, U as UnstructuredName, t as ChallengePassword } from './certification_request-5d982d92.js';
6
+ import { b as build } from './download-67ac9120.js';
7
+ import { l as l10n, a as dateShort } from './l10n-da0dd100.js';
8
+ import { X as X509AttributeCertificate, a as CRL, C as CSR } from './crl-f2110716.js';
9
+ import { g as getStringByOID, R as RowValue, G as GeneralNamePart, a as RowTitle, B as BasicInformation, S as Signature, T as Thumbprints, b as getLEILink, c as getDNSNameLink, d as getIPAddressLink, E as Extensions, M as Miscellaneous, I as IssuerName, e as SubjectName, P as PublicKey } from './public_key-0a3091a5.js';
13
10
 
14
11
  /**
15
12
  * @license
@@ -118,7 +115,7 @@ const InsuranceValueAttribute = (props) => {
118
115
  */
119
116
  const TypeRelationshipAttribute = (props) => {
120
117
  const { attribute } = props;
121
- return (h(BasicAttribute, { attribute: attribute }, Object.keys(attribute.value).map((keyName) => (h(RowValue, { name: keyName, value: attribute.value[keyName].toNumber() ? 'YES' : 'NO' })))));
118
+ return (h(BasicAttribute, { attribute: attribute }, Object.keys(attribute.value).map((keyName) => (h(RowValue, { name: keyName, value: attribute.value[keyName].toNumber() ? l10n.getString('yes') : l10n.getString('no') })))));
122
119
  };
123
120
 
124
121
  /**
@@ -292,7 +289,7 @@ const Holder = (props) => {
292
289
  ];
293
290
  };
294
291
 
295
- const certificateViewerCss$1 = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;position:relative;min-width:280px;min-height:300px;background:white;background:rgba(var(--pv-color-light-rgb), 1)}th,td{border:none}table{width:100%;margin-bottom:30px;border-spacing:0;border-collapse:collapse}table .title td{border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5);padding-top:60px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid}table td:first-child{padding-left:30px;width:130px;padding-right:10px}table td:last-child{padding-right:30px;width:calc(100% - 130px)}table td{vertical-align:top;padding-top:5px;padding-bottom:5px}table td.vertical_align_middle{vertical-align:middle}table .title:first-child td{padding-top:15px}table .title+tr td{padding-top:15px}table td.monospace{max-width:0}table .divider{padding-top:15px;padding-bottom:15px}.divider .bg_fill{background-color:rgba(209, 213, 217, 0.5);background-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr:last-child .divider{padding-top:0;opacity:0}.divider span{display:block;height:1px}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.interaction_text{padding:15px 0;width:300px;margin:auto;text-align:center}@media (max-width: 900px){table,tr,td{display:block}table td:last-child,table td:first-child{padding-right:15px;padding-left:15px;width:100%}table .title+tr td{padding-top:5px}table .title+tr td:first-child{padding-top:15px}table td.monospace{width:100%;max-width:none}}:host([data-view=mobile]) table,:host([data-view=mobile]) tr,:host([data-view=mobile]) td{display:block}:host([data-view=mobile]) table td:last-child,:host([data-view=mobile]) table td:first-child{padding-right:15px;padding-left:15px;width:100%}:host([data-view=mobile]) table .title+tr td{padding-top:5px}:host([data-view=mobile]) table .title+tr td:first-child{padding-top:15px}:host([data-view=mobile]) table td.monospace{width:100%;max-width:none}";
292
+ const certificateViewerCss$2 = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;position:relative;min-width:280px;min-height:300px;background:white;background:rgba(var(--pv-color-light-rgb), 1)}th,td{border:none}table{width:100%;margin-bottom:30px;border-spacing:0;border-collapse:collapse}table .title td{border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5);padding-top:60px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid}table td:first-child{padding-left:30px;width:130px;padding-right:10px}table td:last-child{padding-right:30px;width:calc(100% - 130px)}table td{vertical-align:top;padding-top:5px;padding-bottom:5px}table td.vertical_align_middle{vertical-align:middle}table .title:first-child td{padding-top:15px}table .title+tr td{padding-top:15px}table td.monospace{max-width:0}table .divider{padding-top:15px;padding-bottom:15px}.divider .bg_fill{background-color:rgba(209, 213, 217, 0.5);background-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr:last-child .divider{padding-top:0;opacity:0}.divider span{display:block;height:1px}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.interaction_text{padding:15px 0;width:300px;margin:auto;text-align:center}@media (max-width: 900px){table,tr,td{display:block}table td:last-child,table td:first-child{padding-right:15px;padding-left:15px;width:100%}table .title+tr td{padding-top:5px}table .title+tr td:first-child{padding-top:15px}table td.monospace{width:100%;max-width:none}}:host([data-view=mobile]) table,:host([data-view=mobile]) tr,:host([data-view=mobile]) td{display:block}:host([data-view=mobile]) table td:last-child,:host([data-view=mobile]) table td:first-child{padding-right:15px;padding-left:15px;width:100%}:host([data-view=mobile]) table .title+tr td{padding-top:5px}:host([data-view=mobile]) table .title+tr td:first-child{padding-top:15px}:host([data-view=mobile]) table td.monospace{width:100%;max-width:none}";
296
293
 
297
294
  const AttributeCertificateViewer = class {
298
295
  constructor(hostRef) {
@@ -379,7 +376,111 @@ const AttributeCertificateViewer = class {
379
376
  "certificate": ["watchCertificateAndDecode"]
380
377
  }; }
381
378
  };
382
- AttributeCertificateViewer.style = certificateViewerCss$1;
379
+ AttributeCertificateViewer.style = certificateViewerCss$2;
380
+
381
+ /**
382
+ * @license
383
+ * Copyright (c) Peculiar Ventures, LLC.
384
+ *
385
+ * This source code is licensed under the MIT license found in the
386
+ * LICENSE file in the root directory of this source tree.
387
+ */
388
+ const RevokedCertificates = (props) => {
389
+ const { certificates, } = props;
390
+ return [
391
+ h(RowTitle, { value: l10n.getString('revokedCertificates') }),
392
+ certificates.map((certificate) => ([
393
+ h(RowValue, { name: l10n.getString('serialNumber'), value: build.Convert.ToHex(certificate.userCertificate), monospace: true }),
394
+ h(RowValue, { name: l10n.getString('revocation'), value: dateShort(certificate.revocationDate.getTime()) }),
395
+ h("tr", null,
396
+ h("td", { colSpan: 2, class: "divider" },
397
+ h("span", { class: "bg_fill" }))),
398
+ ])),
399
+ ];
400
+ };
401
+
402
+ const certificateViewerCss$1 = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;position:relative;min-width:280px;min-height:300px;background:white;background:rgba(var(--pv-color-light-rgb), 1)}th,td{border:none}table{width:100%;margin-bottom:30px;border-spacing:0;border-collapse:collapse}table .title td{border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5);padding-top:60px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid}table td:first-child{padding-left:30px;width:130px;padding-right:10px}table td:last-child{padding-right:30px;width:calc(100% - 130px)}table td{vertical-align:top;padding-top:5px;padding-bottom:5px}table td.vertical_align_middle{vertical-align:middle}table .title:first-child td{padding-top:15px}table .title+tr td{padding-top:15px}table td.monospace{max-width:0}table .divider{padding-top:15px;padding-bottom:15px}.divider .bg_fill{background-color:rgba(209, 213, 217, 0.5);background-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr:last-child .divider{padding-top:0;opacity:0}.divider span{display:block;height:1px}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.interaction_text{padding:15px 0;width:300px;margin:auto;text-align:center}@media (max-width: 900px){table,tr,td{display:block}table td:last-child,table td:first-child{padding-right:15px;padding-left:15px;width:100%}table .title+tr td{padding-top:5px}table .title+tr td:first-child{padding-top:15px}table td.monospace{width:100%;max-width:none}}:host([data-view=mobile]) table,:host([data-view=mobile]) tr,:host([data-view=mobile]) td{display:block}:host([data-view=mobile]) table td:last-child,:host([data-view=mobile]) table td:first-child{padding-right:15px;padding-left:15px;width:100%}:host([data-view=mobile]) table .title+tr td{padding-top:5px}:host([data-view=mobile]) table .title+tr td:first-child{padding-top:15px}:host([data-view=mobile]) table td.monospace{width:100%;max-width:none}";
403
+
404
+ const CrlViewer = class {
405
+ constructor(hostRef) {
406
+ registerInstance(this, hostRef);
407
+ this.isDecodeInProcess = true;
408
+ this.getAuthKeyIdParentLink = (value) => {
409
+ var _a;
410
+ return (_a = this.authKeyIdParentLink) === null || _a === void 0 ? void 0 : _a.replace('{{authKeyId}}', value);
411
+ };
412
+ this.getAuthKeyIdSiblingsLink = (value) => {
413
+ var _a;
414
+ return (_a = this.authKeyIdSiblingsLink) === null || _a === void 0 ? void 0 : _a.replace('{{authKeyId}}', value);
415
+ };
416
+ }
417
+ componentWillLoad() {
418
+ this.decodeCertificate(this.certificate);
419
+ }
420
+ async decodeCertificate(certificate) {
421
+ this.isDecodeInProcess = true;
422
+ try {
423
+ if (certificate instanceof CRL) {
424
+ this.certificateDecoded = certificate;
425
+ }
426
+ else if (typeof certificate === 'string') {
427
+ this.certificateDecoded = new CRL(certificate);
428
+ }
429
+ else {
430
+ return;
431
+ }
432
+ this.certificateDecoded.parseExtensions();
433
+ await this.certificateDecoded.getThumbprint('SHA-1');
434
+ await this.certificateDecoded.getThumbprint('SHA-256');
435
+ }
436
+ catch (error) {
437
+ this.certificateDecodeError = error;
438
+ console.error('Error certificate parse:', error);
439
+ }
440
+ this.isDecodeInProcess = false;
441
+ }
442
+ getIssuerDnLink() {
443
+ return this.issuerDnLink;
444
+ }
445
+ /**
446
+ * Rerun decodeCertificate if previuos value not equal current value
447
+ */
448
+ watchCertificateAndDecode(newValue, oldValue) {
449
+ if (typeof newValue === 'string' && typeof oldValue === 'string') {
450
+ if (newValue !== oldValue) {
451
+ this.decodeCertificate(newValue);
452
+ }
453
+ return;
454
+ }
455
+ if (newValue instanceof CRL
456
+ && oldValue instanceof CRL) {
457
+ if (newValue.commonName !== oldValue.commonName) {
458
+ this.decodeCertificate(newValue);
459
+ }
460
+ }
461
+ }
462
+ // eslint-disable-next-line class-methods-use-this
463
+ renderErrorState() {
464
+ return (h("div", { class: "status_wrapper" }, h("peculiar-typography", { type: "b1", class: "interaction_text" }, "There was an error decoding this certificate revocation list.")));
465
+ }
466
+ // eslint-disable-next-line class-methods-use-this
467
+ renderEmptyState() {
468
+ return (h("div", { class: "status_wrapper" }, h("peculiar-typography", { type: "b1", class: "interaction_text" }, "There is no certificate revocation list available.")));
469
+ }
470
+ render() {
471
+ if (this.certificateDecodeError) {
472
+ return this.renderErrorState();
473
+ }
474
+ if (!this.certificateDecoded) {
475
+ return this.renderEmptyState();
476
+ }
477
+ return (h(Host, { "data-view": this.view }, h("table", null, h(BasicInformation, Object.assign({}, this.certificateDecoded)), h(IssuerName, { name: this.certificateDecoded.issuer, issuerDnLink: this.getIssuerDnLink() }), h(Signature, { signature: this.certificateDecoded.signature }), h(Thumbprints, { thumbprints: this.certificateDecoded.thumbprints }), h(Extensions, { extensions: this.certificateDecoded.extensions, getLEILink: getLEILink, getDNSNameLink: getDNSNameLink, getIPAddressLink: getIPAddressLink, getAuthKeyIdParentLink: this.getAuthKeyIdParentLink, getAuthKeyIdSiblingsLink: this.getAuthKeyIdSiblingsLink }), this.certificateDecoded.asn.tbsCertList.revokedCertificates && (h(RevokedCertificates, { certificates: this.certificateDecoded.asn.tbsCertList.revokedCertificates })), this.download && (h(Miscellaneous, { certificate: this.certificateDecoded })))));
478
+ }
479
+ static get watchers() { return {
480
+ "certificate": ["watchCertificateAndDecode"]
481
+ }; }
482
+ };
483
+ CrlViewer.style = certificateViewerCss$1;
383
484
 
384
485
  const certificateViewerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;position:relative;min-width:280px;min-height:300px;background:white;background:rgba(var(--pv-color-light-rgb), 1)}th,td{border:none}table{width:100%;margin-bottom:30px;border-spacing:0;border-collapse:collapse}table .title td{border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5);padding-top:60px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid}table td:first-child{padding-left:30px;width:130px;padding-right:10px}table td:last-child{padding-right:30px;width:calc(100% - 130px)}table td{vertical-align:top;padding-top:5px;padding-bottom:5px}table td.vertical_align_middle{vertical-align:middle}table .title:first-child td{padding-top:15px}table .title+tr td{padding-top:15px}table td.monospace{max-width:0}table .divider{padding-top:15px;padding-bottom:15px}.divider .bg_fill{background-color:rgba(209, 213, 217, 0.5);background-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr:last-child .divider{padding-top:0;opacity:0}.divider span{display:block;height:1px}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.interaction_text{padding:15px 0;width:300px;margin:auto;text-align:center}@media (max-width: 900px){table,tr,td{display:block}table td:last-child,table td:first-child{padding-right:15px;padding-left:15px;width:100%}table .title+tr td{padding-top:5px}table .title+tr td:first-child{padding-top:15px}table td.monospace{width:100%;max-width:none}}:host([data-view=mobile]) table,:host([data-view=mobile]) tr,:host([data-view=mobile]) td{display:block}:host([data-view=mobile]) table td:last-child,:host([data-view=mobile]) table td:first-child{padding-right:15px;padding-left:15px;width:100%}:host([data-view=mobile]) table .title+tr td{padding-top:5px}:host([data-view=mobile]) table .title+tr td:first-child{padding-top:15px}:host([data-view=mobile]) table td.monospace{width:100%;max-width:none}";
385
486
 
@@ -471,4 +572,4 @@ const CsrViewer = class {
471
572
  };
472
573
  CsrViewer.style = certificateViewerCss;
473
574
 
474
- export { AttributeCertificateViewer as peculiar_attribute_certificate_viewer, CsrViewer as peculiar_csr_viewer };
575
+ export { AttributeCertificateViewer as peculiar_attribute_certificate_viewer, CrlViewer as peculiar_crl_viewer, CsrViewer as peculiar_csr_viewer };
@@ -2,13 +2,11 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-bbd484d9.js';
5
- import { i as isPem, a as isX509Pem, b as isPkcs10Pem, c as isX509AttributePem } from './certification_request-c0674647.js';
6
- import './l10n-ac28fa92.js';
7
- import { X as X509Certificate } from './x509_certificate-12f6d344.js';
8
- import { X as X509AttributeCertificate } from './x509_attribute_certificate-a6d4aa15.js';
9
- import { C as CSR } from './csr-c1b6a176.js';
10
- import './index-0ba131b0.js';
11
- import './_commonjsHelpers-bfbd2ad8.js';
5
+ import { i as isPem, a as isX509Pem, b as isPkcs10Pem, c as isX509AttributePem, d as isX509CRLPem } from './certification_request-5d982d92.js';
6
+ import './l10n-da0dd100.js';
7
+ import './download-67ac9120.js';
8
+ import { X as X509Certificate } from './x509_certificate-6b243207.js';
9
+ import { X as X509AttributeCertificate, C as CSR, a as CRL } from './crl-f2110716.js';
12
10
 
13
11
  /**
14
12
  * @license
@@ -106,11 +104,12 @@ const CertificateDecoder = class {
106
104
  const isX509Pem$1 = isX509Pem(certificate);
107
105
  const isPkcs10Pem$1 = isPkcs10Pem(certificate);
108
106
  const isX509AttributePem$1 = isX509AttributePem(certificate);
107
+ const isX509CRLPem$1 = isX509CRLPem(certificate);
109
108
  let decoded;
110
109
  let decodeError;
111
- if (isPem$1 && !(isX509Pem$1 || isX509AttributePem$1 || isPkcs10Pem$1)) {
110
+ if (isPem$1 && !(isX509Pem$1 || isX509AttributePem$1 || isPkcs10Pem$1 || isX509CRLPem$1)) {
112
111
  this.clearValue();
113
- alert('Unsupported file type. Please try to use Certificate/AttributeCertificate/CertificateRequest.');
112
+ alert('Unsupported file type. Please try to use Certificate/AttributeCertificate/CertificateRequest/CRL.');
114
113
  return;
115
114
  }
116
115
  try {
@@ -123,6 +122,9 @@ const CertificateDecoder = class {
123
122
  if (isPkcs10Pem$1) {
124
123
  decoded = new CSR(certificate);
125
124
  }
125
+ if (isX509CRLPem$1) {
126
+ decoded = new CRL(certificate);
127
+ }
126
128
  }
127
129
  catch (error) {
128
130
  decodeError = error;
@@ -151,17 +153,25 @@ const CertificateDecoder = class {
151
153
  decodeError = error;
152
154
  }
153
155
  }
156
+ if (!decoded) {
157
+ try {
158
+ decoded = new CRL(certificate);
159
+ }
160
+ catch (error) {
161
+ decodeError = error;
162
+ }
163
+ }
154
164
  if (!decoded) {
155
165
  this.clearValue();
156
166
  console.log(decodeError);
157
- alert('Error decoding file. Please try to use Certificate/AttributeCertificate/CertificateRequest.');
167
+ alert('Error decoding file. Please try to use Certificate/AttributeCertificate/CertificateRequest/CRL.');
158
168
  }
159
169
  else {
160
170
  this.setValue(decoded);
161
171
  }
162
172
  }
163
173
  render() {
164
- return (h(Host, null, h("textarea", { placeholder: "Certificate DER or PEM", class: "textarea", ref: (el) => { this.inputPaste = el; }, onDrop: this.onDropFile }), h("div", { class: "controls" }, h("peculiar-button", { fill: "fill", class: "button", onClick: this.onClickDecode }, "Decode"), h("peculiar-button", { class: "button" }, "Choose file", h("input", { type: "file", class: "input_file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,.csr,.req", onChange: this.onChangeInputFile, value: "" })), h("peculiar-button", { class: "button", onClick: this.onClickClear }, "Clear"), this.certificateExample && (h("peculiar-button", { class: "button", onClick: this.onClickExample }, "Example"))), this.certificateDecoded instanceof X509Certificate && (h("peculiar-certificate-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true })), this.certificateDecoded instanceof X509AttributeCertificate && (h("peculiar-attribute-certificate-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true })), this.certificateDecoded instanceof CSR && (h("peculiar-csr-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true }))));
174
+ return (h(Host, null, h("textarea", { placeholder: "Certificate DER or PEM", class: "textarea", ref: (el) => { this.inputPaste = el; }, onDrop: this.onDropFile }), h("div", { class: "controls" }, h("peculiar-button", { fill: "fill", class: "button", onClick: this.onClickDecode }, "Decode"), h("peculiar-button", { class: "button" }, "Choose file", h("input", { type: "file", class: "input_file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl", onChange: this.onChangeInputFile, value: "" })), h("peculiar-button", { class: "button", onClick: this.onClickClear }, "Clear"), this.certificateExample && (h("peculiar-button", { class: "button", onClick: this.onClickExample }, "Example"))), this.certificateDecoded instanceof X509Certificate && (h("peculiar-certificate-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true })), this.certificateDecoded instanceof X509AttributeCertificate && (h("peculiar-attribute-certificate-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true })), this.certificateDecoded instanceof CSR && (h("peculiar-csr-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true })), this.certificateDecoded instanceof CRL && (h("peculiar-crl-viewer", { certificate: this.certificateDecoded, class: "viewer", download: true }))));
165
175
  }
166
176
  };
167
177
  CertificateDecoder.style = certificateDecoderCss;
@@ -2,8 +2,8 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { r as registerInstance, h, H as Host, g as getElement } from './index-bbd484d9.js';
5
- import { l as l10n, a as dateShort } from './l10n-ac28fa92.js';
6
- import './_commonjsHelpers-bfbd2ad8.js';
5
+ import { l as l10n, a as dateShort } from './l10n-da0dd100.js';
6
+ import './download-67ac9120.js';
7
7
 
8
8
  const certificateSummaryCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%}td{border:none;padding:0}table{width:100%;border-spacing:0;border-collapse:collapse}td{vertical-align:top;padding-top:5px;padding-bottom:5px}table td:first-child{width:130px;padding-right:10px}table td:last-child{width:calc(100% - 130px)}@media (max-width: 900px){table,tr,td{display:block}table td:last-child,table td:first-child{width:100%}}";
9
9
 
@@ -1,31 +1,12 @@
1
1
  /*!
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
- import { h, r as registerInstance, H as Host } from './index-bbd484d9.js';
5
- import { X as X509Certificate } from './x509_certificate-12f6d344.js';
6
- import './certification_request-c0674647.js';
7
- import './index-0ba131b0.js';
8
- import { l as l10n } from './l10n-ac28fa92.js';
9
- import { a as RowTitle, R as RowValue, B as BasicInformation, e as SubjectName, P as PublicKey, S as Signature, T as Thumbprints, E as Extensions, b as getLEILink, c as getDNSNameLink, d as getIPAddressLink, M as Miscellaneous } from './public_key-43b2cbf0.js';
10
- import './_commonjsHelpers-bfbd2ad8.js';
11
- import './csr-c1b6a176.js';
12
- import './download-735fb2eb.js';
13
-
14
- /**
15
- * @license
16
- * Copyright (c) Peculiar Ventures, LLC.
17
- *
18
- * This source code is licensed under the MIT license found in the
19
- * LICENSE file in the root directory of this source tree.
20
- */
21
- const IssuerName = (props) => {
22
- const { name, issuerDnLink } = props;
23
- const title = l10n.getString('issuerName');
24
- return [
25
- h(RowTitle, { value: issuerDnLink ? (h("peculiar-link", { href: issuerDnLink, type: "h6" }, title)) : title }),
26
- name.map((n) => (h(RowValue, { name: n.name || n.type, value: n.value }))),
27
- ];
28
- };
4
+ import { r as registerInstance, h, H as Host } from './index-bbd484d9.js';
5
+ import { X as X509Certificate } from './x509_certificate-6b243207.js';
6
+ import './certification_request-5d982d92.js';
7
+ import './download-67ac9120.js';
8
+ import './l10n-da0dd100.js';
9
+ import { B as BasicInformation, e as SubjectName, I as IssuerName, P as PublicKey, S as Signature, T as Thumbprints, E as Extensions, b as getLEILink, c as getDNSNameLink, d as getIPAddressLink, M as Miscellaneous } from './public_key-0a3091a5.js';
29
10
 
30
11
  const certificateViewerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;position:relative;min-width:280px;min-height:300px;background:white;background:rgba(var(--pv-color-light-rgb), 1)}th,td{border:none}table{width:100%;margin-bottom:30px;border-spacing:0;border-collapse:collapse}table .title td{border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5);padding-top:60px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid}table td:first-child{padding-left:30px;width:130px;padding-right:10px}table td:last-child{padding-right:30px;width:calc(100% - 130px)}table td{vertical-align:top;padding-top:5px;padding-bottom:5px}table td.vertical_align_middle{vertical-align:middle}table .title:first-child td{padding-top:15px}table .title+tr td{padding-top:15px}table td.monospace{max-width:0}table .divider{padding-top:15px;padding-bottom:15px}.divider .bg_fill{background-color:rgba(209, 213, 217, 0.5);background-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr:last-child .divider{padding-top:0;opacity:0}.divider span{display:block;height:1px}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.interaction_text{padding:15px 0;width:300px;margin:auto;text-align:center}@media (max-width: 900px){table,tr,td{display:block}table td:last-child,table td:first-child{padding-right:15px;padding-left:15px;width:100%}table .title+tr td{padding-top:5px}table .title+tr td:first-child{padding-top:15px}table td.monospace{width:100%;max-width:none}}:host([data-view=mobile]) table,:host([data-view=mobile]) tr,:host([data-view=mobile]) td{display:block}:host([data-view=mobile]) table td:last-child,:host([data-view=mobile]) table td:first-child{padding-right:15px;padding-left:15px;width:100%}:host([data-view=mobile]) table .title+tr td{padding-top:5px}:host([data-view=mobile]) table .title+tr td:first-child{padding-top:15px}:host([data-view=mobile]) table td.monospace{width:100%;max-width:none}";
31
12
 
@@ -2,12 +2,10 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-bbd484d9.js';
5
- import { X as X509Certificate } from './x509_certificate-12f6d344.js';
6
- import { O as OIDs } from './certification_request-c0674647.js';
7
- import './index-0ba131b0.js';
8
- import { l as l10n } from './l10n-ac28fa92.js';
9
- import { D as Download } from './download-735fb2eb.js';
10
- import './_commonjsHelpers-bfbd2ad8.js';
5
+ import { X as X509Certificate } from './x509_certificate-6b243207.js';
6
+ import { Q as OIDs } from './certification_request-5d982d92.js';
7
+ import './download-67ac9120.js';
8
+ import { l as l10n } from './l10n-da0dd100.js';
11
9
 
12
10
  const certificatesViewerCss = ":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{display:block;width:100%;word-wrap:break-word;min-width:280px;overflow:auto;position:relative;background:white;background:rgba(var(--pv-color-light-rgb), 1)}table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}table thead{background-color:rgba(53, 132, 247, 0.07);background-color:rgba(var(--pv-color-primary-rgb), 0.07)}table tr td{vertical-align:middle}table tbody tr:not(.expanded_summary){cursor:pointer}table tr{border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1)}table th{padding:15px 10px;border-width:1px;border-style:solid;border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1)}table td{padding:8px 10px;border-width:1px;border-style:solid;border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1)}table .col_issuer,table .col_name,table .col_public_key{width:16%}table .col_actions,table .col_tests{width:18%}table.m_extra .col_issuer,table.m_extra .col_name,table.m_extra .col_public_key{width:12%}table.m_extra .col_actions,table.m_extra .col_tests{width:17%}table tr.expanded td:not(:last-child){border-right-color:transparent}table tr.expanded td{border-bottom-color:transparent}.expanded{border-bottom-color:transparent;background-color:rgba(53, 132, 247, 0.04);background-color:rgba(var(--pv-color-primary-rgb), 0.04)}table tr.expanded_summary{background-color:rgba(53, 132, 247, 0.04);background-color:rgba(var(--pv-color-primary-rgb), 0.04)}table tr.expanded_summary td{vertical-align:top;padding:10px 20px 26px}@-webkit-keyframes fadeIn{0%{opacity:0.001}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0.001}100%{opacity:1}}.modal_wrapper{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1;overflow:auto;text-align:center;-webkit-animation:fadeIn 200ms;animation:fadeIn 200ms;padding:30px 10px}.modal_wrapper:before{display:inline-block;vertical-align:middle;width:0;height:100%;content:\"\"}.modal_backdrop{background:rgba(42, 49, 52, 0.5);background:rgba(var(--pv-color-dark-rgb), 0.5);z-index:-1;position:fixed;top:0;right:0;bottom:0;left:0}.modal_container{position:relative;display:inline-block;vertical-align:middle;width:100%;max-width:900px;text-align:left;border-radius:3px;overflow:hidden;background-color:white;background-color:rgba(var(--pv-color-light-rgb), 1);height:100%}.modal_title{background-color:rgba(53, 132, 247, 0.07);background-color:rgba(var(--pv-color-primary-rgb), 0.07);border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);border-bottom-width:1px;border-bottom-style:solid;padding:20px 60px 16px 20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:60px}.modal_content{height:calc(100% - 60px);overflow-y:auto}.modal_close{cursor:pointer;border:none;background-color:transparent;position:absolute;top:0;bottom:0;right:0;padding:0 12px;-webkit-transition:opacity 100ms;transition:opacity 100ms;outline:none}.modal_close:hover{opacity:0.6}.modal_close svg{fill:#2a3134;fill:rgba(var(--pv-color-dark-rgb), 1)}.button_table_action{margin:2px}.mobile_title{display:none}.status_wrapper{height:85px;text-align:center;pointer-events:none}.search_section{background-color:rgba(53, 132, 247, 0.07);background-color:rgba(var(--pv-color-primary-rgb), 0.07);border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);height:50px;padding:10px;border-width:1px 1px 0 1px;border-style:solid}.input_search{height:100%;width:100%;border-radius:3px;border-width:1px;border-style:solid;padding:0 14px;font-size:12px;outline:none;border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);color:#2a3134;color:rgba(var(--pv-color-dark-rgb), 1)}.input_search::-webkit-input-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search::-moz-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search:-ms-input-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search::-ms-input-placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.input_search::placeholder{color:#d1d5d9;color:rgba(var(--pv-color-grey_3-rgb), 1)}.loading_container{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(42, 49, 52, 0.3);background:rgba(var(--pv-color-dark-rgb), 0.3);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.align_center{text-align:center}@media (hover: hover){table tbody tr:not(.expanded_summary):hover{background-color:rgba(53, 132, 247, 0.04);background-color:rgba(var(--pv-color-primary-rgb), 0.04)}}@media (max-width: 900px){table,tbody,tr,td{display:block}thead{display:none}tr{padding:0 15px;border-width:1px;border-style:solid}tr:not(:first-child){margin-top:-1px}tr:not(.expanded_summary) td:first-child{border:none !important}table td{padding-left:0;padding-right:0;border-width:1px 0 0 0 !important;border-color:rgba(209, 213, 217, 0.5);border-color:rgba(var(--pv-color-grey_3-rgb), 0.5)}table tr.expanded_summary td{padding:15px 0}.mobile_title{display:inline-block;width:90px;vertical-align:middle}.modal_title{padding:17px 60px 17px 15px}.content{display:inline-block;width:calc(100% - 90px);vertical-align:middle;text-align:left}.expanded_summary{border-top-color:transparent;padding-bottom:10px}.expanded_summary td:before{content:none}.status_wrapper{height:266px;display:table-cell}.search_section{height:60px;padding:15px}.align_center{text-align:inherit}}";
13
11
 
@@ -103,12 +101,12 @@ const CertificatesViewer = class {
103
101
  // eslint-disable-next-line class-methods-use-this
104
102
  handleClickDownloadAsPem(certificate, e) {
105
103
  e.stopPropagation();
106
- Download.x509.asPEM(certificate.body.exportAsPemFormatted(), certificate.name || certificate.body.commonName);
104
+ certificate.body.downloadAsPEM(certificate.name || certificate.body.commonName);
107
105
  }
108
106
  // eslint-disable-next-line class-methods-use-this
109
107
  handleClickDownloadAsDer(certificate, e) {
110
108
  e.stopPropagation();
111
- Download.x509.asPEM(certificate.body.exportAsHexFormatted(), certificate.name || certificate.body.commonName);
109
+ certificate.body.downloadAsDER(certificate.name || certificate.body.commonName);
112
110
  }
113
111
  handleClickRow(index) {
114
112
  const isExpandedRowClicked = this.expandedRow === index;
@@ -69,5 +69,5 @@ const patchDynamicImport = (base, orgScriptElm) => {
69
69
  };
70
70
 
71
71
  patchBrowser().then(options => {
72
- return bootstrapLazy([["peculiar-button_5",[[1,"peculiar-button-split",{"onClick":[16],"fill":[1],"actions":[16],"open":[32]}],[1,"peculiar-text-hider",{"opened":[1540]},[[0,"textExpand","textExpandHandler"]]],[1,"peculiar-link",{"href":[513],"type":[513]}],[1,"peculiar-typography",{"type":[513],"color":[1],"align":[1],"ellipsis":[4],"monospace":[4]}],[1,"peculiar-button",{"fill":[1],"disabled":[516],"href":[1],"target":[1],"onClick":[16]}]]],["peculiar-certificates-viewer",[[1,"peculiar-certificates-viewer",{"certificates":[16],"filterWithSearch":[4,"filter-with-search"],"highlightWithSearch":[4,"highlight-with-search"],"search":[32],"certificatesDecoded":[32],"expandedRow":[32],"certificateSelectedForDetails":[32],"isDecodeInProcess":[32]}]]],["peculiar-attribute-certificate-viewer_2",[[1,"peculiar-attribute-certificate-viewer",{"certificate":[1],"download":[4],"authKeyIdParentLink":[513,"auth-key-id-parent-link"],"authKeyIdSiblingsLink":[513,"auth-key-id-siblings-link"],"subjectKeyIdChildrenLink":[513,"subject-key-id-children-link"],"subjectKeyIdSiblingsLink":[513,"subject-key-id-siblings-link"],"isDecodeInProcess":[32]}],[1,"peculiar-csr-viewer",{"certificate":[513],"download":[4],"subjectKeyIdChildrenLink":[513,"subject-key-id-children-link"],"subjectKeyIdSiblingsLink":[513,"subject-key-id-siblings-link"],"view":[513],"isDecodeInProcess":[32]}]]],["peculiar-certificate-viewer",[[1,"peculiar-certificate-viewer",{"certificate":[513],"download":[516],"authKeyIdParentLink":[513,"auth-key-id-parent-link"],"authKeyIdSiblingsLink":[513,"auth-key-id-siblings-link"],"subjectKeyIdChildrenLink":[513,"subject-key-id-children-link"],"subjectKeyIdSiblingsLink":[513,"subject-key-id-siblings-link"],"issuerDnLink":[513,"issuer-dn-link"],"view":[513],"isDecodeInProcess":[32]}]]],["peculiar-certificate-decoder",[[1,"peculiar-certificate-decoder",{"certificateExample":[1,"certificate-example"],"defaultCertificate":[1,"default-certificate"],"certificateDecoded":[32]}]]],["peculiar-certificate-summary_3",[[1,"peculiar-certificate-summary",{"certificate":[16],"showIssuer":[4,"show-issuer"]}],[1,"peculiar-circular-progress",{"size":[2],"width":[2]}],[1,"peculiar-highlight-words",{"search":[1]}]]]], options);
72
+ return bootstrapLazy([["peculiar-button_5",[[1,"peculiar-button-split",{"onClick":[16],"fill":[1],"actions":[16],"open":[32]}],[1,"peculiar-text-hider",{"opened":[1540]},[[0,"textExpand","textExpandHandler"]]],[1,"peculiar-link",{"href":[513],"type":[513]}],[1,"peculiar-typography",{"type":[513],"color":[1],"align":[1],"ellipsis":[4],"monospace":[4]}],[1,"peculiar-button",{"fill":[1],"disabled":[516],"href":[1],"target":[1],"onClick":[16]}]]],["peculiar-certificate-viewer",[[1,"peculiar-certificate-viewer",{"certificate":[513],"download":[516],"authKeyIdParentLink":[513,"auth-key-id-parent-link"],"authKeyIdSiblingsLink":[513,"auth-key-id-siblings-link"],"subjectKeyIdChildrenLink":[513,"subject-key-id-children-link"],"subjectKeyIdSiblingsLink":[513,"subject-key-id-siblings-link"],"issuerDnLink":[513,"issuer-dn-link"],"view":[513],"isDecodeInProcess":[32]}]]],["peculiar-certificate-decoder",[[1,"peculiar-certificate-decoder",{"certificateExample":[1,"certificate-example"],"defaultCertificate":[1,"default-certificate"],"certificateDecoded":[32]}]]],["peculiar-certificates-viewer",[[1,"peculiar-certificates-viewer",{"certificates":[16],"filterWithSearch":[4,"filter-with-search"],"highlightWithSearch":[4,"highlight-with-search"],"search":[32],"certificatesDecoded":[32],"expandedRow":[32],"certificateSelectedForDetails":[32],"isDecodeInProcess":[32]}]]],["peculiar-attribute-certificate-viewer_3",[[1,"peculiar-attribute-certificate-viewer",{"certificate":[1],"download":[4],"authKeyIdParentLink":[513,"auth-key-id-parent-link"],"authKeyIdSiblingsLink":[513,"auth-key-id-siblings-link"],"subjectKeyIdChildrenLink":[513,"subject-key-id-children-link"],"subjectKeyIdSiblingsLink":[513,"subject-key-id-siblings-link"],"isDecodeInProcess":[32]}],[1,"peculiar-crl-viewer",{"certificate":[513],"download":[4],"authKeyIdParentLink":[513,"auth-key-id-parent-link"],"authKeyIdSiblingsLink":[513,"auth-key-id-siblings-link"],"issuerDnLink":[513,"issuer-dn-link"],"view":[513],"isDecodeInProcess":[32]}],[1,"peculiar-csr-viewer",{"certificate":[513],"download":[4],"subjectKeyIdChildrenLink":[513,"subject-key-id-children-link"],"subjectKeyIdSiblingsLink":[513,"subject-key-id-siblings-link"],"view":[513],"isDecodeInProcess":[32]}]]],["peculiar-certificate-summary_3",[[1,"peculiar-certificate-summary",{"certificate":[16],"showIssuer":[4,"show-issuer"]}],[1,"peculiar-circular-progress",{"size":[2],"width":[2]}],[1,"peculiar-highlight-words",{"search":[1]}]]]], options);
73
73
  });
@@ -2,11 +2,9 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { h } from './index-bbd484d9.js';
5
- import { b as build } from './index-0ba131b0.js';
6
- import { l as l10n, a as dateShort } from './l10n-ac28fa92.js';
7
- import { O as OIDs, P as Name, Q as OtherName, p as AsnParser, S as DisplayText, X as UserNotice, Y as EDIPartyName, Z as AsnIntegerArrayBufferConverter, _ as KeyUsage, $ as BasicConstraints, a0 as ExtendedKeyUsage, a1 as SubjectKeyIdentifier, a2 as AuthorityKeyIdentifier, a3 as CRLDistributionPoints, a4 as AuthorityInfoAccessSyntax, a5 as SubjectInfoAccessSyntax, a6 as SubjectAlternativeName, a7 as CertificatePolicies, a8 as CertificateTransparency, a9 as NameConstraints, aa as CertificateTemplate, ab as EnrollCertTypeChoice, ac as CaVersion, ad as QCStatements, ae as NetscapeComment, af as NetscapeCertType, ag as LeiRole, ah as LeiChoice, ai as Timestamp, aj as ArchiveRevInfo, ak as CRLReason, al as SubjectDirectoryAttributes, am as PrivateKeyUsagePeriod, an as EntrustVersionInfo, ao as BiometricSyntax, ap as LogotypeExtn, aq as TNAuthorizationList, ar as PolicyConstraints, as as PolicyMappings } from './certification_request-c0674647.js';
8
- import { C as CSR } from './csr-c1b6a176.js';
9
- import { D as Download } from './download-735fb2eb.js';
5
+ import { b as build } from './download-67ac9120.js';
6
+ import { l as l10n, a as dateShort } from './l10n-da0dd100.js';
7
+ import { Q as OIDs, S as Name, X as OtherName, p as AsnParser, Y as DisplayText, Z as UserNotice, _ as EDIPartyName, $ as AsnIntegerArrayBufferConverter, a0 as KeyUsage, a1 as BasicConstraints, a2 as ExtendedKeyUsage, a3 as SubjectKeyIdentifier, a4 as AuthorityKeyIdentifier, a5 as CRLDistributionPoints, a6 as AuthorityInfoAccessSyntax, a7 as SubjectInfoAccessSyntax, a8 as SubjectAlternativeName, a9 as CertificatePolicies, aa as CertificateTransparency, ab as NameConstraints, ac as CertificateTemplate, ad as EnrollCertTypeChoice, ae as CaVersion, af as QCStatements, ag as NetscapeComment, ah as NetscapeCertType, ai as LeiRole, aj as LeiChoice, ak as Timestamp, al as ArchiveRevInfo, am as CRLReason, an as SubjectDirectoryAttributes, ao as PrivateKeyUsagePeriod, ap as EntrustVersionInfo, aq as BiometricSyntax, ar as LogotypeExtn, as as TNAuthorizationList, at as PolicyConstraints, au as PolicyMappings, av as CRLNumber, aw as IssuingDistributionPoint } from './certification_request-5d982d92.js';
10
8
 
11
9
  /**
12
10
  * @license
@@ -196,7 +194,7 @@ const BasicExtension = (props, children) => {
196
194
  const { extension } = props;
197
195
  return ([
198
196
  h(RowValue, { name: "Name", value: getStringByOID(extension.asn.extnID) }),
199
- h(RowValue, { name: "Critical", value: extension.asn.critical ? 'YES' : 'NO' }),
197
+ h(RowValue, { name: "Critical", value: extension.asn.critical ? l10n.getString('yes') : l10n.getString('no') }),
200
198
  children,
201
199
  h("tr", null,
202
200
  h("td", { colSpan: 2, class: "divider" },
@@ -227,7 +225,7 @@ const KeyUsageExtension = (props) => {
227
225
  const BasicConstraintsExtension = (props) => {
228
226
  const { extension } = props;
229
227
  return (h(BasicExtension, { extension: extension },
230
- h(RowValue, { name: "Certificate Authority", value: extension.value.cA ? 'YES' : 'NO' }),
228
+ h(RowValue, { name: "Certificate Authority", value: extension.value.cA ? l10n.getString('yes') : l10n.getString('no') }),
231
229
  h(RowValue, { name: "Path Length Constraint", value: extension.value.pathLenConstraint })));
232
230
  };
233
231
 
@@ -618,7 +616,7 @@ const TimestampExtension = (props) => {
618
616
  return (h(BasicExtension, { extension: extension },
619
617
  h(RowValue, { name: "Version", value: extension.value.version }),
620
618
  h(GeneralNamePart, Object.assign({ generalName: extension.value.location }, props)),
621
- h(RowValue, { name: "Requires Auth", value: extension.value.requiresAuth ? 'YES' : 'NO' })));
619
+ h(RowValue, { name: "Requires Auth", value: extension.value.requiresAuth ? l10n.getString('yes') : l10n.getString('no') })));
622
620
  };
623
621
 
624
622
  /**
@@ -837,6 +835,39 @@ const PolicyMappingsExtension = (props) => {
837
835
  ]))));
838
836
  };
839
837
 
838
+ /**
839
+ * @license
840
+ * Copyright (c) Peculiar Ventures, LLC.
841
+ *
842
+ * This source code is licensed under the MIT license found in the
843
+ * LICENSE file in the root directory of this source tree.
844
+ */
845
+ const CRLNumberExtension = (props) => {
846
+ const { extension } = props;
847
+ return (h(BasicExtension, { extension: extension },
848
+ h(RowValue, { name: l10n.getString('value'), value: extension.value.value })));
849
+ };
850
+
851
+ /**
852
+ * @license
853
+ * Copyright (c) Peculiar Ventures, LLC.
854
+ *
855
+ * This source code is licensed under the MIT license found in the
856
+ * LICENSE file in the root directory of this source tree.
857
+ */
858
+ // eslint-disable-next-line max-len
859
+ const IssuingDistributionPointExtension = (props) => {
860
+ var _a;
861
+ const { extension } = props;
862
+ return (h(BasicExtension, { extension: extension }, (_a = extension.value.distributionPoint) === null || _a === void 0 ? void 0 :
863
+ _a.fullName.map((gn) => (h(GeneralNamePart, Object.assign({ generalName: gn }, props)))),
864
+ extension.value.onlySomeReasons && (h(RowValue, { name: l10n.getString('onlyReasons'), value: extension.value.onlySomeReasons.toJSON().join(', ') })),
865
+ extension.value.indirectCRL && (h(RowValue, { name: l10n.getString('indirectCRL'), value: l10n.getString('yes') })),
866
+ extension.value.onlyContainsUserCerts && (h(RowValue, { name: l10n.getString('onlyUserCertificates'), value: l10n.getString('yes') })),
867
+ extension.value.onlyContainsAttributeCerts && (h(RowValue, { name: l10n.getString('onlyAttributeCertificates'), value: l10n.getString('yes') })),
868
+ extension.value.onlyContainsCACerts && (h(RowValue, { name: l10n.getString('onlyCACertificates'), value: l10n.getString('yes') }))));
869
+ };
870
+
840
871
  /**
841
872
  * @license
842
873
  * Copyright (c) Peculiar Ventures, LLC.
@@ -944,6 +975,12 @@ const Extensions = (props) => {
944
975
  if (extension.value instanceof PolicyMappings) {
945
976
  return (h(PolicyMappingsExtension, { extension: extension }));
946
977
  }
978
+ if (extension.value instanceof CRLNumber) {
979
+ return (h(CRLNumberExtension, { extension: extension }));
980
+ }
981
+ if (extension.value instanceof IssuingDistributionPoint) {
982
+ return (h(IssuingDistributionPointExtension, Object.assign({ extension: extension }, props)));
983
+ }
947
984
  if (typeof extension.value === 'string') {
948
985
  return (h(AsStringExtension, { extension: extension }));
949
986
  }
@@ -965,7 +1002,7 @@ const Extensions = (props) => {
965
1002
  * LICENSE file in the root directory of this source tree.
966
1003
  */
967
1004
  const BasicInformation = (props) => {
968
- const { serialNumber, version, validity, notBefore, notAfter, type, } = props;
1005
+ const { serialNumber, version, validity, notBefore, notAfter, lastUpdate, nextUpdate, type, } = props;
969
1006
  return [
970
1007
  h(RowTitle, { value: l10n.getString('basicInformation') }),
971
1008
  h(RowValue, { name: l10n.getString('type'), value: type }),
@@ -974,6 +1011,8 @@ const BasicInformation = (props) => {
974
1011
  h(RowValue, { name: l10n.getString('validity'), value: validity }),
975
1012
  h(RowValue, { name: l10n.getString('issued'), value: notBefore ? dateShort(notBefore) : undefined }),
976
1013
  h(RowValue, { name: l10n.getString('expired'), value: notAfter ? dateShort(notAfter) : undefined }),
1014
+ h(RowValue, { name: l10n.getString('lastUpdate'), value: lastUpdate ? dateShort(lastUpdate) : undefined }),
1015
+ h(RowValue, { name: l10n.getString('nextUpdate'), value: nextUpdate ? dateShort(nextUpdate) : undefined }),
977
1016
  ];
978
1017
  };
979
1018
 
@@ -984,22 +1023,6 @@ const BasicInformation = (props) => {
984
1023
  * This source code is licensed under the MIT license found in the
985
1024
  * LICENSE file in the root directory of this source tree.
986
1025
  */
987
- function downloadCertificateAsPem(certificate) {
988
- if (certificate instanceof CSR) {
989
- Download.pkcs10.asPEM(certificate.exportAsPemFormatted(), certificate.commonName);
990
- }
991
- else {
992
- Download.x509.asPEM(certificate.exportAsPemFormatted(), certificate.commonName);
993
- }
994
- }
995
- function downloadCertificateAsDer(certificate) {
996
- if (certificate instanceof CSR) {
997
- Download.pkcs10.asDER(certificate.exportAsHexFormatted(), certificate.commonName);
998
- }
999
- else {
1000
- Download.x509.asDER(certificate.exportAsHexFormatted(), certificate.commonName);
1001
- }
1002
- }
1003
1026
  const Miscellaneous = (props) => {
1004
1027
  const { certificate } = props;
1005
1028
  return [
@@ -1010,9 +1033,9 @@ const Miscellaneous = (props) => {
1010
1033
  l10n.getString('download'),
1011
1034
  ":")),
1012
1035
  h("td", null,
1013
- h("peculiar-button-split", { onClick: downloadCertificateAsPem.bind(undefined, certificate), actions: [{
1036
+ h("peculiar-button-split", { onClick: () => certificate.downloadAsPEM(), actions: [{
1014
1037
  text: l10n.getString('download.der'),
1015
- onClick: downloadCertificateAsDer.bind(undefined, certificate),
1038
+ onClick: () => certificate.downloadAsDER(),
1016
1039
  }] }, l10n.getString('download.pem')))),
1017
1040
  ];
1018
1041
  };
@@ -1028,6 +1051,22 @@ const getLEILink = (lei) => `https://search.gleif.org/#/record/${lei}`;
1028
1051
  const getDNSNameLink = (dnsName) => `https://search.censys.io/search?resource=hosts&q=dns.names%3A${dnsName}`;
1029
1052
  const getIPAddressLink = (ipAddress) => `https://search.censys.io/search?resource=hosts&q=ip%3A${ipAddress}`;
1030
1053
 
1054
+ /**
1055
+ * @license
1056
+ * Copyright (c) Peculiar Ventures, LLC.
1057
+ *
1058
+ * This source code is licensed under the MIT license found in the
1059
+ * LICENSE file in the root directory of this source tree.
1060
+ */
1061
+ const IssuerName = (props) => {
1062
+ const { name, issuerDnLink } = props;
1063
+ const title = l10n.getString('issuerName');
1064
+ return [
1065
+ h(RowTitle, { value: issuerDnLink ? (h("peculiar-link", { href: issuerDnLink, type: "h6" }, title)) : title }),
1066
+ name.map((n) => (h(RowValue, { name: n.name || n.type, value: n.value }))),
1067
+ ];
1068
+ };
1069
+
1031
1070
  /**
1032
1071
  * @license
1033
1072
  * Copyright (c) Peculiar Ventures, LLC.
@@ -1086,4 +1125,4 @@ const PublicKey = (props) => {
1086
1125
  ];
1087
1126
  };
1088
1127
 
1089
- export { BasicInformation as B, Extensions as E, GeneralNamePart as G, Miscellaneous as M, PublicKey as P, RowValue as R, Signature as S, Thumbprints as T, RowTitle as a, getLEILink as b, getDNSNameLink as c, getIPAddressLink as d, SubjectName as e, getStringByOID as g };
1128
+ export { BasicInformation as B, Extensions as E, GeneralNamePart as G, IssuerName as I, Miscellaneous as M, PublicKey as P, RowValue as R, Signature as S, Thumbprints as T, RowTitle as a, getLEILink as b, getDNSNameLink as c, getIPAddressLink as d, SubjectName as e, getStringByOID as g };
@@ -1,9 +1,9 @@
1
1
  /*!
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
- import { A as AsnData, d as certificateRawToBuffer, C as Certificate, N as Name, E as Extension, e as AsnConvert, f as id_ecPublicKey, g as ECParameters, h as id_rsaEncryption, R as RSAPublicKey, j as hexFormat, k as base64Format, l as getCertificateThumbprint } from './certification_request-c0674647.js';
5
- import { b as build } from './index-0ba131b0.js';
6
- import { d as dateDiff } from './l10n-ac28fa92.js';
4
+ import { A as AsnData, e as certificateRawToBuffer, C as Certificate, N as Name, E as Extension, f as AsnConvert, g as id_ecPublicKey, h as ECParameters, j as id_rsaEncryption, R as RSAPublicKey, k as hexFormat, l as base64Format, m as getCertificateThumbprint } from './certification_request-5d982d92.js';
5
+ import { b as build, D as Download } from './download-67ac9120.js';
6
+ import { d as dateDiff } from './l10n-da0dd100.js';
7
7
 
8
8
  /**
9
9
  * @license
@@ -132,6 +132,12 @@ class X509Certificate extends AsnData {
132
132
  .map((name) => (`${name.shortName}=${name.value}`))
133
133
  .join(', ');
134
134
  }
135
+ downloadAsPEM(name) {
136
+ Download.cert.asPEM(this.exportAsPemFormatted(), name || this.commonName);
137
+ }
138
+ downloadAsDER(name) {
139
+ Download.cert.asDER(this.exportAsHexFormatted(), name || this.commonName);
140
+ }
135
141
  }
136
142
 
137
143
  export { X509Certificate as X };
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
- export{D as Download,d as downloadFromBuffer}from"./p-d7a13cb4.js";import"./p-006865d7.js";import"./p-d0b55fbb.js";
4
+ export{D as Download,d as downloadFromBuffer}from"./p-cff9655c.js";
@@ -14,6 +14,8 @@
14
14
  "validity": "Validity",
15
15
  "issued": "Issued",
16
16
  "expired": "Expired",
17
+ "lastUpdate": "Last Update",
18
+ "nextUpdate": "Next Update",
17
19
  "algorithm": "Algorithm",
18
20
  "namedCurve": "Named Curve",
19
21
  "exponent": "Exponent",
@@ -32,5 +34,14 @@
32
34
  "certificateDetails": "Certificate Details",
33
35
  "holder": "Holder",
34
36
  "digestInfo": "Digest Info",
35
- "type": "Type"
37
+ "type": "Type",
38
+ "revokedCertificates": "Revoked Certificates",
39
+ "revocation": "Revocation",
40
+ "yes": "Yes",
41
+ "no": "No",
42
+ "onlyUserCertificates": "Only User Certificates",
43
+ "onlyAttributeCertificates": "Only Attribute Certificates",
44
+ "onlyCACertificates": "Only CA Certificates",
45
+ "indirectCRL": "Indirect CRL",
46
+ "onlyReasons": "Only Reasons"
36
47
  }
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
+ */
4
+ import{r as t,c as i,h as e,H as s}from"./p-f7683ba5.js";import{i as o,a as r,b as a,c,d as n}from"./p-bce2bbe0.js";import"./p-35e7a514.js";import"./p-cff9655c.js";import{X as l}from"./p-db6e24c6.js";import{X as p,C as h,a as d}from"./p-3aea9dde.js";
5
+ /**
6
+ * @license
7
+ * Copyright (c) Peculiar Ventures, LLC.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */function f(t){return new Promise(((i,e)=>{const s=new FileReader;s.onload=()=>i({value:s.result,fileName:t.name,fileSize:t.size,sourceMime:t.type}),s.onerror=()=>e(s.error),s.readAsBinaryString(t)}))}const u=class{constructor(e){t(this,e),this.successParse=i(this,"successParse",7),this.clearCertificate=i(this,"clearCertificate",7),this.onClickDecode=()=>{const{value:t}=this.inputPaste;t&&this.decode(t)},this.onClickExample=()=>{this.decode(this.certificateExample)},this.onClickClear=()=>{this.clearValue()},this.onChangeInputFile=async t=>{const i=t.target;if(i.files){const t=await f(i.files[0]);"string"==typeof t.value&&this.decode(t.value),i.value=""}},this.onDropFile=async t=>{t.stopPropagation(),t.preventDefault();const i=t.dataTransfer;if(i.files){const t=await f(i.files[0]);"string"==typeof t.value&&this.decode(t.value)}}}componentDidLoad(){this.defaultCertificate&&setTimeout((()=>this.decode(this.defaultCertificate)),100)}clearValue(){this.inputPaste.value="",this.certificateDecoded=null,this.clearCertificate.emit()}setValue(t){this.certificateDecoded=t,this.inputPaste.value=t.exportAsPemFormatted(),this.successParse.emit(t.exportAsBase64())}decode(t){const i=o(t),e=r(t),s=a(t),f=c(t),u=n(t);let b,w;if(i&&!(e||f||s||u))return this.clearValue(),void alert("Unsupported file type. Please try to use Certificate/AttributeCertificate/CertificateRequest/CRL.");try{e&&(b=new l(t)),f&&(b=new p(t)),s&&(b=new h(t)),u&&(b=new d(t))}catch(t){w=t}if(!b)try{b=new l(t)}catch(t){w=t}if(!b)try{b=new p(t)}catch(t){w=t}if(!b)try{b=new h(t)}catch(t){w=t}if(!b)try{b=new d(t)}catch(t){w=t}b?this.setValue(b):(this.clearValue(),console.log(w),alert("Error decoding file. Please try to use Certificate/AttributeCertificate/CertificateRequest/CRL."))}render(){return e(s,null,e("textarea",{placeholder:"Certificate DER or PEM",class:"textarea",ref:t=>{this.inputPaste=t},onDrop:this.onDropFile}),e("div",{class:"controls"},e("peculiar-button",{fill:"fill",class:"button",onClick:this.onClickDecode},"Decode"),e("peculiar-button",{class:"button"},"Choose file",e("input",{type:"file",class:"input_file",accept:"application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl",onChange:this.onChangeInputFile,value:""})),e("peculiar-button",{class:"button",onClick:this.onClickClear},"Clear"),this.certificateExample&&e("peculiar-button",{class:"button",onClick:this.onClickExample},"Example")),this.certificateDecoded instanceof l&&e("peculiar-certificate-viewer",{certificate:this.certificateDecoded,class:"viewer",download:!0}),this.certificateDecoded instanceof p&&e("peculiar-attribute-certificate-viewer",{certificate:this.certificateDecoded,class:"viewer",download:!0}),this.certificateDecoded instanceof h&&e("peculiar-csr-viewer",{certificate:this.certificateDecoded,class:"viewer",download:!0}),this.certificateDecoded instanceof d&&e("peculiar-crl-viewer",{certificate:this.certificateDecoded,class:"viewer",download:!0}))}};u.style=":host{-webkit-box-sizing:border-box;box-sizing:border-box}:host *,:host *:before,:host *:after{-webkit-box-sizing:inherit;box-sizing:inherit}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-ms-touch-action:manipulation;touch-action:manipulation;-webkit-user-drag:none;-ms-content-zooming:none;word-wrap:break-word;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;display:block;width:100%;font-size:0}.textarea{min-height:300px;width:100%;border-radius:3px;border-width:1px;border-style:solid;padding:14px;font-family:monospace;resize:vertical;background-color:white;background-color:rgba(var(--pv-color-light-rgb), 1);border-color:#d1d5d9;border-color:rgba(var(--pv-color-grey_3-rgb), 1);color:#2a3134;color:rgba(var(--pv-color-dark-rgb), 1);letter-spacing:0.03em;letter-spacing:var(--pv-letter-spacing-normal);font-size:14px;font-size:var(--pv-font-size-h7)}.controls{margin-top:10px}.button{position:relative}.button:not(:first-child){margin-left:10px}.viewer{margin-top:64px}.input_file{opacity:0;width:100%;height:100%;top:0;left:0;display:block;position:absolute}";export{u as peculiar_certificate_decoder}