@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.
- package/dist/cjs/{certification_request-cde57123.js → certification_request-e1997ebf.js} +563 -133
- package/dist/cjs/crl-f1ee43bc.js +312 -0
- package/dist/cjs/{index-ff818d4d.js → download-a97f4cb2.js} +106 -2
- package/dist/cjs/index.cjs.js +1 -3
- package/dist/cjs/l10n-638a7577.js +167 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{peculiar-attribute-certificate-viewer_2.cjs.entry.js → peculiar-attribute-certificate-viewer_3.cjs.entry.js} +123 -21
- package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +25 -15
- package/dist/cjs/peculiar-certificate-summary_3.cjs.entry.js +2 -2
- package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +6 -25
- package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +6 -8
- package/dist/cjs/peculiar.cjs.js +1 -1
- package/dist/cjs/{public_key-e56dbe52.js → public_key-ba538d77.js} +80 -40
- package/dist/cjs/{x509_certificate-51a97033.js → x509_certificate-42b478d2.js} +13 -7
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/certificate-decoder/certificate-decoder.js +19 -6
- package/dist/collection/components/certificate-viewer/attributes/type_relationship_attribute.js +2 -1
- package/dist/collection/components/certificate-viewer/basic_information.js +3 -1
- package/dist/collection/components/certificate-viewer/extensions/basic_constraints_extension.js +2 -1
- package/dist/collection/components/certificate-viewer/extensions/basic_extension.js +2 -1
- package/dist/collection/components/certificate-viewer/extensions/crl_number_extension.js +19 -0
- package/dist/collection/components/certificate-viewer/extensions/index.js +9 -1
- package/dist/collection/components/certificate-viewer/extensions/issuing_distribution_point_extension.js +27 -0
- package/dist/collection/components/certificate-viewer/extensions/timestamp_extension.js +2 -1
- package/dist/collection/components/certificate-viewer/miscellaneous.js +2 -20
- package/dist/collection/components/certificates-viewer/certificates-viewer.js +2 -3
- package/dist/collection/components/crl-viewer/crl-viewer.js +234 -0
- package/dist/collection/components/crl-viewer/revoked_certificates.js +27 -0
- package/dist/collection/crypto/crl.js +82 -0
- package/dist/collection/crypto/csr.js +7 -0
- package/dist/collection/crypto/extension.js +10 -1
- package/dist/collection/crypto/index.js +1 -0
- package/dist/collection/crypto/x509_attribute_certificate.js +7 -1
- package/dist/collection/crypto/x509_certificate.js +7 -1
- package/dist/collection/locales/en.json +12 -1
- package/dist/collection/utils/download.js +18 -2
- package/dist/collection/utils/index.js +1 -0
- package/dist/collection/utils/validator.js +2 -0
- package/dist/esm/{certification_request-c0674647.js → certification_request-5d982d92.js} +493 -66
- package/dist/esm/crl-f2110716.js +308 -0
- package/dist/esm/{index-0ba131b0.js → download-67ac9120.js} +102 -2
- package/dist/esm/index.js +1 -3
- package/dist/esm/{l10n-ac28fa92.js → l10n-da0dd100.js} +24 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{peculiar-attribute-certificate-viewer_2.entry.js → peculiar-attribute-certificate-viewer_3.entry.js} +113 -12
- package/dist/esm/peculiar-certificate-decoder.entry.js +21 -11
- package/dist/esm/peculiar-certificate-summary_3.entry.js +2 -2
- package/dist/esm/peculiar-certificate-viewer.entry.js +6 -25
- package/dist/esm/peculiar-certificates-viewer.entry.js +6 -8
- package/dist/esm/peculiar.js +1 -1
- package/dist/esm/{public_key-43b2cbf0.js → public_key-0a3091a5.js} +67 -28
- package/dist/esm/{x509_certificate-12f6d344.js → x509_certificate-6b243207.js} +9 -3
- package/dist/peculiar/index.esm.js +1 -1
- package/dist/peculiar/locales/en.json +12 -1
- package/dist/peculiar/p-34e2d6be.entry.js +11 -0
- package/dist/peculiar/p-35e7a514.js +12 -0
- package/dist/peculiar/p-3aea9dde.js +32 -0
- package/dist/peculiar/{p-38635919.entry.js → p-49ab6f8c.entry.js} +1 -1
- package/dist/peculiar/p-86116b1f.entry.js +4 -0
- package/dist/peculiar/{p-464e0943.js → p-bce2bbe0.js} +9 -9
- package/dist/peculiar/p-ca0c34ca.entry.js +26 -0
- package/dist/peculiar/p-cff9655c.js +18 -0
- package/dist/peculiar/{p-17c4da7b.js → p-db6e24c6.js} +2 -2
- package/dist/peculiar/p-e535a666.entry.js +4 -0
- package/dist/peculiar/p-f8dc3232.js +63 -0
- package/dist/peculiar/peculiar.esm.js +1 -1
- package/dist/types/components/certificate-decoder/certificate-decoder.d.ts +3 -3
- package/dist/types/components/certificate-viewer/basic_information.d.ts +2 -0
- package/dist/types/components/certificate-viewer/extensions/crl_number_extension.d.ts +15 -0
- package/dist/types/components/certificate-viewer/extensions/issuing_distribution_point_extension.d.ts +15 -0
- package/dist/types/components/certificate-viewer/miscellaneous.d.ts +2 -2
- package/dist/types/components/certificate-viewer/row.d.ts +1 -1
- package/dist/types/components/crl-viewer/crl-viewer.d.ts +59 -0
- package/dist/types/components/crl-viewer/revoked_certificates.d.ts +14 -0
- package/dist/types/components.d.ts +66 -0
- package/dist/types/crypto/crl.d.ts +28 -0
- package/dist/types/crypto/csr.d.ts +2 -0
- package/dist/types/crypto/extension.d.ts +2 -2
- package/dist/types/crypto/index.d.ts +1 -0
- package/dist/types/crypto/x509_attribute_certificate.d.ts +2 -0
- package/dist/types/crypto/x509_certificate.d.ts +2 -0
- package/dist/types/utils/download.d.ts +10 -2
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/l10n.d.ts +11 -0
- package/dist/types/utils/validator.d.ts +1 -0
- package/package.json +19 -19
- package/dist/cjs/_commonjsHelpers-cb1f949a.js +0 -23
- package/dist/cjs/csr-78378ed0.js +0 -150
- package/dist/cjs/download-6724f3a7.js +0 -79
- package/dist/cjs/l10n-a048a686.js +0 -145
- package/dist/cjs/x509_attribute_certificate-cc325b70.js +0 -87
- package/dist/esm/_commonjsHelpers-bfbd2ad8.js +0 -20
- package/dist/esm/csr-c1b6a176.js +0 -147
- package/dist/esm/download-735fb2eb.js +0 -76
- package/dist/esm/x509_attribute_certificate-a6d4aa15.js +0 -85
- package/dist/peculiar/p-006865d7.js +0 -4
- package/dist/peculiar/p-1ebab45c.js +0 -78
- package/dist/peculiar/p-3f8d1008.entry.js +0 -4
- package/dist/peculiar/p-42da7f97.js +0 -11
- package/dist/peculiar/p-4f4c1d30.js +0 -12
- package/dist/peculiar/p-530afe84.entry.js +0 -11
- package/dist/peculiar/p-6011646e.entry.js +0 -11
- package/dist/peculiar/p-6c510523.js +0 -18
- package/dist/peculiar/p-d0b55fbb.js +0 -4
- package/dist/peculiar/p-d7a13cb4.js +0 -18
- 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 {
|
|
6
|
-
import { b as build } from './
|
|
7
|
-
import { l as l10n } from './l10n-
|
|
8
|
-
import { X as X509AttributeCertificate } from './
|
|
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-
|
|
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() ? '
|
|
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$
|
|
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$
|
|
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-
|
|
6
|
-
import './l10n-
|
|
7
|
-
import
|
|
8
|
-
import { X as
|
|
9
|
-
import { C as CSR } from './
|
|
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-
|
|
6
|
-
import './
|
|
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 {
|
|
5
|
-
import { X as X509Certificate } from './x509_certificate-
|
|
6
|
-
import './certification_request-
|
|
7
|
-
import './
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
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-
|
|
6
|
-
import {
|
|
7
|
-
import './
|
|
8
|
-
import { l as l10n } from './l10n-
|
|
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
|
-
|
|
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
|
-
|
|
109
|
+
certificate.body.downloadAsDER(certificate.name || certificate.body.commonName);
|
|
112
110
|
}
|
|
113
111
|
handleClickRow(index) {
|
|
114
112
|
const isExpandedRowClicked = this.expandedRow === index;
|
package/dist/esm/peculiar.js
CHANGED
|
@@ -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-
|
|
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 './
|
|
6
|
-
import { l as l10n, a as dateShort } from './l10n-
|
|
7
|
-
import {
|
|
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 ? '
|
|
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 ? '
|
|
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 ? '
|
|
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:
|
|
1036
|
+
h("peculiar-button-split", { onClick: () => certificate.downloadAsPEM(), actions: [{
|
|
1014
1037
|
text: l10n.getString('download.der'),
|
|
1015
|
-
onClick:
|
|
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,
|
|
5
|
-
import { b as build } from './
|
|
6
|
-
import { d as dateDiff } from './l10n-
|
|
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 };
|
|
@@ -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}
|