@peculiar/certificates-viewer 4.9.1 → 4.9.2
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/components/attribute-certificate-viewer.js +1 -1
- package/components/attribute-certificate-viewer.js.map +1 -1
- package/components/certificate-chain-viewer.js +1 -1
- package/components/certificate-viewer.js +1 -1
- package/components/certificate-viewer.js.map +1 -1
- package/components/circular-progress.js +2 -2
- package/components/crl-viewer.js +2 -2
- package/components/crl-viewer.js.map +1 -1
- package/components/csr-viewer.js +1 -1
- package/components/csr-viewer.js.map +1 -1
- package/components/download.js +83 -12
- package/components/download.js.map +1 -1
- package/components/highlight-words.js +1 -1
- package/components/miscellaneous.js +17 -1
- package/components/miscellaneous.js.map +1 -1
- package/components/peculiar-certificate-decoder.js +51 -53
- package/components/peculiar-certificate-decoder.js.map +1 -1
- package/components/peculiar-certificates-viewer.js +1 -1
- package/components/ssh-certificate-viewer.js +2 -2
- package/components/ssh-certificate-viewer.js.map +1 -1
- package/components/text-hider.js +1 -1
- package/dist/cjs/{extension-BDpdRJkE.js → extension-Ba-KQhu5.js} +4 -3
- package/dist/cjs/extension-Ba-KQhu5.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{miscellaneous-DmTT_MGG.js → miscellaneous-CtuYfnBB.js} +19 -4
- package/dist/cjs/miscellaneous-CtuYfnBB.js.map +1 -0
- package/dist/cjs/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.peculiar-ssh-certificate-viewer.entry.cjs.js.map +1 -1
- package/dist/cjs/peculiar-attribute-certificate-viewer_5.cjs.entry.js +10 -10
- package/dist/cjs/peculiar-button-menu_3.cjs.entry.js +3 -3
- package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +54 -55
- package/dist/cjs/peculiar-certificate-decoder.entry.cjs.js.map +1 -1
- package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +5 -5
- package/dist/cjs/peculiar-certificate-viewer.entry.cjs.js.map +1 -1
- package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +3 -3
- package/dist/cjs/peculiar-text-hider.cjs.entry.js +1 -1
- package/dist/cjs/peculiar.cjs.js +1 -1
- package/dist/cjs/{pkcs10_certificate_request-DZLiHGCV.js → pkcs10_certificate_request-BDLZWqTP.js} +3 -3
- package/dist/cjs/{pkcs10_certificate_request-DZLiHGCV.js.map → pkcs10_certificate_request-BDLZWqTP.js.map} +1 -1
- package/dist/cjs/{ssh_certificate-Bh14rhzR.js → ssh_certificate-Gu4FwsRk.js} +86 -13
- package/dist/cjs/ssh_certificate-Gu4FwsRk.js.map +1 -0
- package/dist/cjs/{x509_certificate-p8RMn7Hw.js → x509_certificate-BSOf2t9Y.js} +4 -4
- package/dist/cjs/{x509_certificate-p8RMn7Hw.js.map → x509_certificate-BSOf2t9Y.js.map} +1 -1
- package/dist/cjs/{x509_crl-tjmX6l3R.js → x509_crl-BgUtqkpv.js} +5 -5
- package/dist/cjs/{x509_crl-tjmX6l3R.js.map → x509_crl-BgUtqkpv.js.map} +1 -1
- package/dist/collection/components/attribute-certificate-viewer/attribute-certificate-viewer.js +1 -1
- package/dist/collection/components/button-menu/button-menu.js +1 -1
- package/dist/collection/components/certificate-chain-viewer/certificate-chain-viewer.css +3 -3
- package/dist/collection/components/certificate-decoder/certificate-decoder.js +53 -63
- package/dist/collection/components/certificate-decoder/certificate-decoder.js.map +1 -1
- package/dist/collection/components/certificate-details-parts/extensions/apple_developer_id_date_extension.js +19 -0
- package/dist/collection/components/certificate-details-parts/extensions/apple_developer_id_date_extension.js.map +1 -0
- package/dist/collection/components/certificate-details-parts/extensions/index.js +5 -1
- package/dist/collection/components/certificate-details-parts/extensions/index.js.map +1 -1
- package/dist/collection/components/certificate-viewer/certificate-viewer.css +3 -3
- package/dist/collection/components/certificate-viewer/certificate-viewer.js +1 -1
- package/dist/collection/components/certificates-viewer/certificates-viewer.js +1 -1
- package/dist/collection/components/circular-progress/circular-progress.js +2 -2
- package/dist/collection/components/crl-viewer/crl-viewer.js +1 -1
- package/dist/collection/components/csr-viewer/csr-viewer.js +1 -1
- package/dist/collection/components/highlight-words/highlight-words.js +1 -1
- package/dist/collection/components/ssh-certificate-viewer/ssh-certificate-viewer.js +1 -1
- package/dist/collection/components/text-hider/text-hider.js +1 -1
- package/dist/collection/constants/oids.js +27 -6
- package/dist/collection/constants/oids.js.map +1 -1
- package/dist/collection/crypto/extension.js +2 -1
- package/dist/collection/crypto/extension.js.map +1 -1
- package/dist/collection/crypto/extensions/apple_developer_id_date.js +53 -0
- package/dist/collection/crypto/extensions/apple_developer_id_date.js.map +1 -0
- package/dist/collection/crypto/extensions/index.js +1 -0
- package/dist/collection/crypto/extensions/index.js.map +1 -1
- package/dist/collection/www-copy/favicon.svg +1 -0
- package/dist/collection/www-copy/index.js +5 -10
- package/dist/esm/{extension-xW03sQxn.js → extension-8GydD2wh.js} +4 -3
- package/dist/esm/extension-8GydD2wh.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{miscellaneous-D-Qxv14j.js → miscellaneous-Bxm6kKwP.js} +19 -4
- package/dist/esm/miscellaneous-Bxm6kKwP.js.map +1 -0
- package/dist/esm/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.peculiar-ssh-certificate-viewer.entry.js.map +1 -1
- package/dist/esm/peculiar-attribute-certificate-viewer_5.entry.js +10 -10
- package/dist/esm/peculiar-button-menu_3.entry.js +3 -3
- package/dist/esm/peculiar-certificate-decoder.entry.js +54 -55
- package/dist/esm/peculiar-certificate-decoder.entry.js.map +1 -1
- package/dist/esm/peculiar-certificate-viewer.entry.js +5 -5
- package/dist/esm/peculiar-certificate-viewer.entry.js.map +1 -1
- package/dist/esm/peculiar-certificates-viewer.entry.js +3 -3
- package/dist/esm/peculiar-text-hider.entry.js +1 -1
- package/dist/esm/peculiar.js +1 -1
- package/dist/esm/{pkcs10_certificate_request-Crr9FABo.js → pkcs10_certificate_request-B_lMfAi8.js} +3 -3
- package/dist/esm/{pkcs10_certificate_request-Crr9FABo.js.map → pkcs10_certificate_request-B_lMfAi8.js.map} +1 -1
- package/dist/esm/{ssh_certificate-CmOVFH_Z.js → ssh_certificate-Del2D5s9.js} +85 -14
- package/dist/esm/ssh_certificate-Del2D5s9.js.map +1 -0
- package/dist/esm/{x509_certificate-C2EVTspY.js → x509_certificate-DRGTrdPm.js} +4 -4
- package/dist/{esm-es5/x509_certificate-C2EVTspY.js.map → esm/x509_certificate-DRGTrdPm.js.map} +1 -1
- package/dist/esm/{x509_crl-Bdnys_YT.js → x509_crl-rO-rdi1G.js} +5 -5
- package/dist/{esm-es5/x509_crl-Bdnys_YT.js.map → esm/x509_crl-rO-rdi1G.js.map} +1 -1
- package/dist/esm-es5/extension-8GydD2wh.js +12 -0
- package/dist/esm-es5/extension-8GydD2wh.js.map +1 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/{miscellaneous-D-Qxv14j.js → miscellaneous-Bxm6kKwP.js} +10 -3
- package/dist/esm-es5/miscellaneous-Bxm6kKwP.js.map +1 -0
- package/dist/esm-es5/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.peculiar-ssh-certificate-viewer.entry.js.map +1 -1
- package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js +3 -3
- package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js.map +1 -1
- package/dist/esm-es5/peculiar-button-menu_3.entry.js +1 -1
- package/dist/esm-es5/peculiar-certificate-decoder.entry.js +2 -2
- package/dist/esm-es5/peculiar-certificate-decoder.entry.js.map +1 -1
- package/dist/esm-es5/peculiar-certificate-viewer.entry.js +1 -1
- package/dist/esm-es5/peculiar-certificate-viewer.entry.js.map +1 -1
- package/dist/esm-es5/peculiar-certificates-viewer.entry.js +1 -1
- package/dist/esm-es5/peculiar-text-hider.entry.js +1 -1
- package/dist/esm-es5/peculiar.js +1 -1
- package/dist/esm-es5/{pkcs10_certificate_request-Crr9FABo.js → pkcs10_certificate_request-B_lMfAi8.js} +2 -2
- package/dist/esm-es5/{pkcs10_certificate_request-Crr9FABo.js.map → pkcs10_certificate_request-B_lMfAi8.js.map} +1 -1
- package/dist/esm-es5/{ssh_certificate-CmOVFH_Z.js → ssh_certificate-Del2D5s9.js} +5 -5
- package/dist/esm-es5/ssh_certificate-Del2D5s9.js.map +1 -0
- package/dist/esm-es5/{x509_certificate-C2EVTspY.js → x509_certificate-DRGTrdPm.js} +2 -2
- package/dist/{esm/x509_certificate-C2EVTspY.js.map → esm-es5/x509_certificate-DRGTrdPm.js.map} +1 -1
- package/dist/esm-es5/{x509_crl-Bdnys_YT.js → x509_crl-rO-rdi1G.js} +2 -2
- package/dist/{esm/x509_crl-Bdnys_YT.js.map → esm-es5/x509_crl-rO-rdi1G.js.map} +1 -1
- package/dist/peculiar/index.esm.js +1 -1
- package/dist/peculiar/p-1fb833f3.entry.js +5 -0
- package/dist/peculiar/{p-3424de20.system.entry.js → p-64cc6da1.system.entry.js} +2 -2
- package/dist/peculiar/{p-007b79ff.entry.js → p-76472b19.entry.js} +2 -2
- package/dist/peculiar/{p-0ef9c56c.entry.js → p-7b83898f.entry.js} +21 -21
- package/dist/peculiar/{p-0ef9c56c.entry.js.map → p-7b83898f.entry.js.map} +1 -1
- package/dist/peculiar/{p-f7ee4d56.entry.js → p-7c5aa1f5.entry.js} +2 -2
- package/dist/peculiar/{p-f7ee4d56.entry.js.map → p-7c5aa1f5.entry.js.map} +1 -1
- package/dist/peculiar/p-8d36d2f8.system.entry.js +5 -0
- package/dist/peculiar/p-8d36d2f8.system.entry.js.map +1 -0
- package/dist/peculiar/{p-3a493e87.entry.js → p-95f81b6d.entry.js} +2 -2
- package/dist/peculiar/p-9ab5fa9f.entry.js +5 -0
- package/dist/peculiar/p-9ab5fa9f.entry.js.map +1 -0
- package/dist/peculiar/{p-DberG072.system.js → p-B5d7q9FD.system.js} +4 -4
- package/dist/peculiar/{p-DberG072.system.js.map → p-B5d7q9FD.system.js.map} +1 -1
- package/dist/peculiar/{p-B7cL9SBA.js → p-BAnW9WLg.js} +4 -4
- package/dist/peculiar/{p-B7cL9SBA.js.map → p-BAnW9WLg.js.map} +1 -1
- package/dist/peculiar/p-BKLsbktK.system.js +135 -0
- package/dist/peculiar/p-BKLsbktK.system.js.map +1 -0
- package/dist/peculiar/{p-vXPL1mjI.system.js.map → p-BQoMhw1w.system.js.map} +1 -1
- package/dist/peculiar/{p-1yfbC8AM.js → p-Ba1oqaJ3.js} +61 -54
- package/dist/peculiar/p-Ba1oqaJ3.js.map +1 -0
- package/dist/peculiar/{p-CGipIfjs.system.js → p-BakSwSe7.system.js} +2 -2
- package/dist/peculiar/{p-CGipIfjs.system.js.map → p-BakSwSe7.system.js.map} +1 -1
- package/dist/peculiar/{p-Bwp7g8Ef.system.js.map → p-Blt9UUmt.system.js.map} +1 -1
- package/dist/peculiar/{p-w85NrMQC.system.js.map → p-BpRY-zq0.system.js.map} +1 -1
- package/dist/peculiar/p-CDZsc_KS.system.js.map +1 -0
- package/dist/peculiar/{p-B4vvBwd6.js → p-CH0mNFdH.js} +3 -3
- package/dist/peculiar/{p-B4vvBwd6.js.map → p-CH0mNFdH.js.map} +1 -1
- package/dist/peculiar/{p-Bfl7RVFY.system.js → p-CTj-Drej.system.js} +4 -4
- package/dist/peculiar/{p-Bfl7RVFY.system.js.map → p-CTj-Drej.system.js.map} +1 -1
- package/dist/peculiar/{p-BvX2AYI4.system.js.map → p-CgXNYogJ.system.js.map} +1 -1
- package/dist/peculiar/p-Cp20xosi.js +12 -0
- package/dist/peculiar/p-Cp20xosi.js.map +1 -0
- package/dist/peculiar/{p-Cq11_gqW.system.js → p-DPnMJlS4.system.js} +2 -2
- package/dist/peculiar/p-DPnMJlS4.system.js.map +1 -0
- package/dist/peculiar/{p-tkt_tT15.system.js → p-DcqxnCVz.system.js} +61 -54
- package/dist/peculiar/p-DcqxnCVz.system.js.map +1 -0
- package/dist/peculiar/{p-CmOVFH_Z.js → p-Del2D5s9.js} +8 -8
- package/dist/peculiar/p-Del2D5s9.js.map +1 -0
- package/dist/peculiar/{p-BxiR02Uf.js → p-DrLCyy39.js} +4 -4
- package/dist/peculiar/{p-BxiR02Uf.js.map → p-DrLCyy39.js.map} +1 -1
- package/dist/peculiar/{p-7HEye5oH.system.js.map → p-MyCIZClD.system.js.map} +1 -1
- package/dist/peculiar/p-b8bb96f4.system.entry.js +5 -0
- package/dist/peculiar/{p-c17b79cf.system.entry.js → p-d2b87ce5.system.entry.js} +2 -2
- package/dist/peculiar/{p-b955360e.system.entry.js → p-da018463.system.entry.js} +18 -18
- package/dist/peculiar/p-da018463.system.entry.js.map +1 -0
- package/dist/peculiar/{p-4ff3d82a.system.entry.js → p-f30eb78c.system.entry.js} +2 -2
- package/dist/peculiar/p-f30eb78c.system.entry.js.map +1 -0
- package/dist/peculiar/p-hEr9Uo3G.system.js +1 -1
- package/dist/peculiar/p-itJt0J5g.system.js +12 -0
- package/dist/peculiar/p-itJt0J5g.system.js.map +1 -0
- package/dist/peculiar/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.peculiar-ssh-certificate-viewer.entry.esm.js.map +1 -1
- package/dist/peculiar/peculiar-certificate-decoder.entry.esm.js.map +1 -1
- package/dist/peculiar/peculiar-certificate-viewer.entry.esm.js.map +1 -1
- package/dist/peculiar/peculiar.esm.js +1 -1
- package/dist/types/components/certificate-decoder/certificate-decoder.d.ts +8 -10
- package/dist/types/components/certificate-details-parts/extensions/apple_developer_id_date_extension.d.ts +15 -0
- package/dist/types/components.d.ts +6 -6
- package/dist/types/constants/oids.d.ts +23 -2
- package/dist/types/crypto/extension.d.ts +2 -1
- package/dist/types/crypto/extensions/apple_developer_id_date.d.ts +19 -0
- package/dist/types/crypto/extensions/index.d.ts +1 -0
- package/hydrate/index.js +158 -71
- package/hydrate/index.mjs +158 -71
- package/package.json +31 -30
- package/dist/cjs/extension-BDpdRJkE.js.map +0 -1
- package/dist/cjs/miscellaneous-DmTT_MGG.js.map +0 -1
- package/dist/cjs/ssh_certificate-Bh14rhzR.js.map +0 -1
- package/dist/collection/components/certificate-decoder/certificate-decoder.css +0 -475
- package/dist/esm/extension-xW03sQxn.js.map +0 -1
- package/dist/esm/miscellaneous-D-Qxv14j.js.map +0 -1
- package/dist/esm/ssh_certificate-CmOVFH_Z.js.map +0 -1
- package/dist/esm-es5/extension-xW03sQxn.js +0 -12
- package/dist/esm-es5/extension-xW03sQxn.js.map +0 -1
- package/dist/esm-es5/miscellaneous-D-Qxv14j.js.map +0 -1
- package/dist/esm-es5/ssh_certificate-CmOVFH_Z.js.map +0 -1
- package/dist/peculiar/p-1yfbC8AM.js.map +0 -1
- package/dist/peculiar/p-342e499f.system.entry.js +0 -5
- package/dist/peculiar/p-4ff3d82a.system.entry.js.map +0 -1
- package/dist/peculiar/p-64517c6e.system.entry.js +0 -5
- package/dist/peculiar/p-64517c6e.system.entry.js.map +0 -1
- package/dist/peculiar/p-7777c7dc.entry.js +0 -5
- package/dist/peculiar/p-7777c7dc.entry.js.map +0 -1
- package/dist/peculiar/p-CLcRtCZ9.system.js +0 -135
- package/dist/peculiar/p-CLcRtCZ9.system.js.map +0 -1
- package/dist/peculiar/p-Ckf8xErP.system.js +0 -12
- package/dist/peculiar/p-Ckf8xErP.system.js.map +0 -1
- package/dist/peculiar/p-CmOVFH_Z.js.map +0 -1
- package/dist/peculiar/p-Cq11_gqW.system.js.map +0 -1
- package/dist/peculiar/p-DXA1451q.js +0 -12
- package/dist/peculiar/p-DXA1451q.js.map +0 -1
- package/dist/peculiar/p-Drk9aw2j.system.js.map +0 -1
- package/dist/peculiar/p-b955360e.system.entry.js.map +0 -1
- package/dist/peculiar/p-ce08fab1.entry.js +0 -5
- package/dist/peculiar/p-tkt_tT15.system.js.map +0 -1
- /package/dist/peculiar/{p-ce08fab1.entry.js.map → p-1fb833f3.entry.js.map} +0 -0
- /package/dist/peculiar/{p-3424de20.system.entry.js.map → p-64cc6da1.system.entry.js.map} +0 -0
- /package/dist/peculiar/{p-007b79ff.entry.js.map → p-76472b19.entry.js.map} +0 -0
- /package/dist/peculiar/{p-3a493e87.entry.js.map → p-95f81b6d.entry.js.map} +0 -0
- /package/dist/peculiar/{p-342e499f.system.entry.js.map → p-b8bb96f4.system.entry.js.map} +0 -0
- /package/dist/peculiar/{p-c17b79cf.system.entry.js.map → p-d2b87ce5.system.entry.js.map} +0 -0
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var ssh_certificate = require('./ssh_certificate-
|
|
7
|
-
var extension = require('./extension-
|
|
6
|
+
var ssh_certificate = require('./ssh_certificate-Gu4FwsRk.js');
|
|
7
|
+
var extension = require('./extension-Ba-KQhu5.js');
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @license
|
|
@@ -155,6 +155,6 @@ class X509Certificate extends ssh_certificate.AsnData {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
exports.X509Certificate = X509Certificate;
|
|
158
|
-
//# sourceMappingURL=x509_certificate-
|
|
158
|
+
//# sourceMappingURL=x509_certificate-BSOf2t9Y.js.map
|
|
159
159
|
|
|
160
|
-
//# sourceMappingURL=x509_certificate-
|
|
160
|
+
//# sourceMappingURL=x509_certificate-BSOf2t9Y.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x509_certificate-p8RMn7Hw.js","sources":["src/crypto/x509_certificate.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { ECParameters, id_ecPublicKey } from '@peculiar/asn1-ecc';\nimport { id_rsaEncryption, RSAPublicKey } from '@peculiar/asn1-rsa';\nimport {\n id_composite_key,\n id_alg_composite,\n CompositePublicKey,\n CompositeSignatureValue,\n CompositeParams,\n} from '@peculiar/asn1-x509-post-quantum';\nimport { Certificate, SubjectPublicKeyInfo } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { Name, INameJSON } from './name';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\nexport interface ISignature {\n algorithm: string;\n value: BufferSource;\n params?: {\n algorithm: string;\n value: BufferSource;\n }[];\n}\n\nexport interface IPublicKey {\n algorithm: string;\n value: BufferSource;\n params?: ECParameters | RSAPublicKey | IPublicKey[];\n}\n\nexport class X509Certificate extends AsnData<Certificate> {\n public readonly serialNumber: string;\n\n public readonly subject: INameJSON[];\n\n public readonly issuer: INameJSON[];\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public readonly version: number;\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate';\n\n public readonly tag = PemConverter.CertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), Certificate);\n\n const { tbsCertificate } = this.asn;\n\n this.serialNumber = Convert.ToHex(tbsCertificate.serialNumber);\n this.subject = new Name(tbsCertificate.subject).toJSON();\n this.issuer = new Name(tbsCertificate.issuer).toJSON();\n this.version = tbsCertificate.version + 1;\n\n const notBefore = tbsCertificate.validity.notBefore.utcTime\n || tbsCertificate.validity.notBefore.generalTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = tbsCertificate.validity.notAfter.utcTime\n || tbsCertificate.validity.notAfter.generalTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n }\n\n public parseExtensions() {\n const { tbsCertificate } = this.asn;\n\n if (tbsCertificate.extensions) {\n this.extensions = tbsCertificate.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n private getPublicKeyInfo(publicKeyInfo: SubjectPublicKeyInfo) {\n const { subjectPublicKey, algorithm } = publicKeyInfo;\n let params;\n\n if (algorithm.algorithm === id_ecPublicKey && algorithm.parameters) {\n params = AsnConvert.parse(algorithm.parameters, ECParameters);\n }\n\n if (algorithm.algorithm === id_rsaEncryption) {\n params = AsnConvert.parse(subjectPublicKey, RSAPublicKey);\n }\n\n if (algorithm.algorithm === id_composite_key) {\n params = AsnConvert.parse(subjectPublicKey, CompositePublicKey);\n\n params = params.map((param) => this.getPublicKeyInfo(param));\n }\n\n const spki = AsnConvert.serialize(publicKeyInfo);\n\n return {\n params,\n value: spki,\n algorithm: algorithm.algorithm,\n };\n }\n\n public get publicKey(): IPublicKey {\n return this.getPublicKeyInfo(this.asn.tbsCertificate.subjectPublicKeyInfo);\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n let params;\n\n if (signatureAlgorithm.algorithm === id_alg_composite) {\n const compositeSignatureValues = AsnConvert.parse(signatureValue, CompositeSignatureValue);\n const compositeParams = AsnConvert.parse(signatureAlgorithm.parameters, CompositeParams);\n\n params = compositeParams.map((param, index) => ({\n ...param,\n value: compositeSignatureValues[index],\n }));\n }\n\n return {\n params,\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n if (!this.subject) {\n return '';\n }\n\n for (let i = 0; i < this.subject.length; i += 1) {\n const name = this.subject[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get issuerCommonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get isRoot(): boolean {\n return JSON.stringify(this.issuer) === JSON.stringify(this.subject);\n }\n\n public subjectToString() {\n if (!this.subject) {\n return '';\n }\n\n return this.subject\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public issuerToString() {\n if (!this.issuer) {\n return '';\n }\n\n return this.issuer\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.cert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.cert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","Certificate","PemConverter","Convert","Name","dateDiff","Extension","AsnConvert","id_ecPublicKey","ECParameters","id_rsaEncryption","RSAPublicKey","id_composite_key","CompositePublicKey","id_alg_composite","CompositeSignatureValue","CompositeParams","getCertificateThumbprint","Download"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"x509_certificate-BSOf2t9Y.js","sources":["src/crypto/x509_certificate.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { ECParameters, id_ecPublicKey } from '@peculiar/asn1-ecc';\nimport { id_rsaEncryption, RSAPublicKey } from '@peculiar/asn1-rsa';\nimport {\n id_composite_key,\n id_alg_composite,\n CompositePublicKey,\n CompositeSignatureValue,\n CompositeParams,\n} from '@peculiar/asn1-x509-post-quantum';\nimport { Certificate, SubjectPublicKeyInfo } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { Name, INameJSON } from './name';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\nexport interface ISignature {\n algorithm: string;\n value: BufferSource;\n params?: {\n algorithm: string;\n value: BufferSource;\n }[];\n}\n\nexport interface IPublicKey {\n algorithm: string;\n value: BufferSource;\n params?: ECParameters | RSAPublicKey | IPublicKey[];\n}\n\nexport class X509Certificate extends AsnData<Certificate> {\n public readonly serialNumber: string;\n\n public readonly subject: INameJSON[];\n\n public readonly issuer: INameJSON[];\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public readonly version: number;\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate';\n\n public readonly tag = PemConverter.CertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), Certificate);\n\n const { tbsCertificate } = this.asn;\n\n this.serialNumber = Convert.ToHex(tbsCertificate.serialNumber);\n this.subject = new Name(tbsCertificate.subject).toJSON();\n this.issuer = new Name(tbsCertificate.issuer).toJSON();\n this.version = tbsCertificate.version + 1;\n\n const notBefore = tbsCertificate.validity.notBefore.utcTime\n || tbsCertificate.validity.notBefore.generalTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = tbsCertificate.validity.notAfter.utcTime\n || tbsCertificate.validity.notAfter.generalTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n }\n\n public parseExtensions() {\n const { tbsCertificate } = this.asn;\n\n if (tbsCertificate.extensions) {\n this.extensions = tbsCertificate.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n private getPublicKeyInfo(publicKeyInfo: SubjectPublicKeyInfo) {\n const { subjectPublicKey, algorithm } = publicKeyInfo;\n let params;\n\n if (algorithm.algorithm === id_ecPublicKey && algorithm.parameters) {\n params = AsnConvert.parse(algorithm.parameters, ECParameters);\n }\n\n if (algorithm.algorithm === id_rsaEncryption) {\n params = AsnConvert.parse(subjectPublicKey, RSAPublicKey);\n }\n\n if (algorithm.algorithm === id_composite_key) {\n params = AsnConvert.parse(subjectPublicKey, CompositePublicKey);\n\n params = params.map((param) => this.getPublicKeyInfo(param));\n }\n\n const spki = AsnConvert.serialize(publicKeyInfo);\n\n return {\n params,\n value: spki,\n algorithm: algorithm.algorithm,\n };\n }\n\n public get publicKey(): IPublicKey {\n return this.getPublicKeyInfo(this.asn.tbsCertificate.subjectPublicKeyInfo);\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n let params;\n\n if (signatureAlgorithm.algorithm === id_alg_composite) {\n const compositeSignatureValues = AsnConvert.parse(signatureValue, CompositeSignatureValue);\n const compositeParams = AsnConvert.parse(signatureAlgorithm.parameters, CompositeParams);\n\n params = compositeParams.map((param, index) => ({\n ...param,\n value: compositeSignatureValues[index],\n }));\n }\n\n return {\n params,\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n if (!this.subject) {\n return '';\n }\n\n for (let i = 0; i < this.subject.length; i += 1) {\n const name = this.subject[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get issuerCommonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get isRoot(): boolean {\n return JSON.stringify(this.issuer) === JSON.stringify(this.subject);\n }\n\n public subjectToString() {\n if (!this.subject) {\n return '';\n }\n\n return this.subject\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public issuerToString() {\n if (!this.issuer) {\n return '';\n }\n\n return this.issuer\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.cert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.cert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","Certificate","PemConverter","Convert","Name","dateDiff","Extension","AsnConvert","id_ecPublicKey","ECParameters","id_rsaEncryption","RSAPublicKey","id_composite_key","CompositePublicKey","id_alg_composite","CompositeSignatureValue","CompositeParams","getCertificateThumbprint","Download"],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*/
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
|
-
var ssh_certificate = require('./ssh_certificate-
|
|
7
|
-
var extension = require('./extension-
|
|
8
|
-
var pkcs10_certificate_request = require('./pkcs10_certificate_request-
|
|
6
|
+
var ssh_certificate = require('./ssh_certificate-Gu4FwsRk.js');
|
|
7
|
+
var extension = require('./extension-Ba-KQhu5.js');
|
|
8
|
+
var pkcs10_certificate_request = require('./pkcs10_certificate_request-BDLZWqTP.js');
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* @license
|
|
@@ -176,6 +176,6 @@ class X509Crl extends ssh_certificate.AsnData {
|
|
|
176
176
|
|
|
177
177
|
exports.X509AttributeCertificate = X509AttributeCertificate;
|
|
178
178
|
exports.X509Crl = X509Crl;
|
|
179
|
-
//# sourceMappingURL=x509_crl-
|
|
179
|
+
//# sourceMappingURL=x509_crl-BgUtqkpv.js.map
|
|
180
180
|
|
|
181
|
-
//# sourceMappingURL=x509_crl-
|
|
181
|
+
//# sourceMappingURL=x509_crl-BgUtqkpv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x509_crl-tjmX6l3R.js","sources":["src/crypto/x509_attribute_certificate.ts","src/crypto/x509_crl.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport type { GeneralName } from '@peculiar/asn1-x509';\nimport { AttributeCertificate, Holder } from '@peculiar/asn1-x509-attr';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { AsnData } from './asn_data';\nimport { Extension, TExtensionValue } from './extension';\nimport { Attribute, TAttributeValue } from './attribute';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport class X509AttributeCertificate extends AsnData<AttributeCertificate> {\n public readonly serialNumber: string;\n\n public readonly version: number;\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public attributes: Attribute<TAttributeValue>[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly issuer: GeneralName[];\n\n public holder: Holder;\n\n public readonly type = 'X.509 Attribute Certificate';\n\n public readonly tag = PemConverter.AttributeCertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), AttributeCertificate);\n\n const { acinfo } = this.asn;\n\n this.serialNumber = Convert.ToHex(acinfo.serialNumber);\n this.version = acinfo.version;\n\n const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = acinfo.attrCertValidityPeriod.notAfterTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n this.issuer = acinfo.issuer.v1Form || acinfo.issuer.v2Form?.issuerName;\n this.holder = acinfo.holder;\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n\n return {\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public parseExtensions() {\n const { acinfo } = this.asn;\n\n if (acinfo.extensions) {\n this.extensions = acinfo.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public parseAttributes() {\n const { acinfo } = this.asn;\n\n if (acinfo.attributes) {\n this.attributes = acinfo.attributes\n .map((e) => new Attribute(AsnConvert.serialize(e)));\n }\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n return `attribute-certificate-${this.thumbprints['SHA-1']}`;\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.attrCert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.attrCert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n","/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { CertificateList, Time } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { Download } from '../utils';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { Name, INameJSON } from './name';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport interface IRevokedCertificate {\n userCertificate: ArrayBuffer;\n revocationDate: Time;\n crlEntryExtensions?: Extension<TExtensionValue>[];\n}\n\nexport class X509Crl extends AsnData<CertificateList> {\n public readonly issuer: INameJSON[];\n\n public readonly version: number;\n\n public readonly lastUpdate: Date;\n\n public readonly nextUpdate: Date;\n\n public extensions: Extension<TExtensionValue>[];\n\n public revokedCertificates: IRevokedCertificate[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate Revocation List';\n\n public readonly tag = PemConverter.CrlTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), CertificateList);\n\n const { tbsCertList } = this.asn;\n\n this.issuer = new Name(tbsCertList.issuer).toJSON();\n this.version = tbsCertList.version + 1;\n this.lastUpdate = tbsCertList.thisUpdate.getTime();\n this.nextUpdate = tbsCertList.nextUpdate.getTime();\n\n this.revokedCertificates = (tbsCertList.revokedCertificates || [])\n .map((revokedCertificate) => ({\n revocationDate: revokedCertificate.revocationDate,\n userCertificate: revokedCertificate.userCertificate,\n crlEntryExtensions: revokedCertificate.crlEntryExtensions\n ?.map((e) => new Extension(AsnConvert.serialize(e))),\n }));\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get signature(): ISignature {\n const { signature, signatureAlgorithm } = this.asn;\n\n return {\n value: signature,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public get commonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public parseExtensions() {\n const { tbsCertList } = this.asn;\n\n if (tbsCertList.crlExtensions) {\n this.extensions = tbsCertList.crlExtensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.crl.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.crl.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","AttributeCertificate","PemConverter","Convert","dateDiff","Extension","AsnConvert","Attribute","getCertificateThumbprint","Download","CertificateList","Name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"x509_crl-BgUtqkpv.js","sources":["src/crypto/x509_attribute_certificate.ts","src/crypto/x509_crl.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport type { GeneralName } from '@peculiar/asn1-x509';\nimport { AttributeCertificate, Holder } from '@peculiar/asn1-x509-attr';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { AsnData } from './asn_data';\nimport { Extension, TExtensionValue } from './extension';\nimport { Attribute, TAttributeValue } from './attribute';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport class X509AttributeCertificate extends AsnData<AttributeCertificate> {\n public readonly serialNumber: string;\n\n public readonly version: number;\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public attributes: Attribute<TAttributeValue>[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly issuer: GeneralName[];\n\n public holder: Holder;\n\n public readonly type = 'X.509 Attribute Certificate';\n\n public readonly tag = PemConverter.AttributeCertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), AttributeCertificate);\n\n const { acinfo } = this.asn;\n\n this.serialNumber = Convert.ToHex(acinfo.serialNumber);\n this.version = acinfo.version;\n\n const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = acinfo.attrCertValidityPeriod.notAfterTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n this.issuer = acinfo.issuer.v1Form || acinfo.issuer.v2Form?.issuerName;\n this.holder = acinfo.holder;\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n\n return {\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public parseExtensions() {\n const { acinfo } = this.asn;\n\n if (acinfo.extensions) {\n this.extensions = acinfo.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public parseAttributes() {\n const { acinfo } = this.asn;\n\n if (acinfo.attributes) {\n this.attributes = acinfo.attributes\n .map((e) => new Attribute(AsnConvert.serialize(e)));\n }\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n return `attribute-certificate-${this.thumbprints['SHA-1']}`;\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.attrCert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.attrCert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n","/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { CertificateList, Time } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { Download } from '../utils';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { Name, INameJSON } from './name';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport interface IRevokedCertificate {\n userCertificate: ArrayBuffer;\n revocationDate: Time;\n crlEntryExtensions?: Extension<TExtensionValue>[];\n}\n\nexport class X509Crl extends AsnData<CertificateList> {\n public readonly issuer: INameJSON[];\n\n public readonly version: number;\n\n public readonly lastUpdate: Date;\n\n public readonly nextUpdate: Date;\n\n public extensions: Extension<TExtensionValue>[];\n\n public revokedCertificates: IRevokedCertificate[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate Revocation List';\n\n public readonly tag = PemConverter.CrlTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), CertificateList);\n\n const { tbsCertList } = this.asn;\n\n this.issuer = new Name(tbsCertList.issuer).toJSON();\n this.version = tbsCertList.version + 1;\n this.lastUpdate = tbsCertList.thisUpdate.getTime();\n this.nextUpdate = tbsCertList.nextUpdate.getTime();\n\n this.revokedCertificates = (tbsCertList.revokedCertificates || [])\n .map((revokedCertificate) => ({\n revocationDate: revokedCertificate.revocationDate,\n userCertificate: revokedCertificate.userCertificate,\n crlEntryExtensions: revokedCertificate.crlEntryExtensions\n ?.map((e) => new Extension(AsnConvert.serialize(e))),\n }));\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get signature(): ISignature {\n const { signature, signatureAlgorithm } = this.asn;\n\n return {\n value: signature,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public get commonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public parseExtensions() {\n const { tbsCertList } = this.asn;\n\n if (tbsCertList.crlExtensions) {\n this.extensions = tbsCertList.crlExtensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.crl.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.crl.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","AttributeCertificate","PemConverter","Convert","dateDiff","Extension","AsnConvert","Attribute","getCertificateThumbprint","Download","CertificateList","Name"],"mappings":"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"}
|
package/dist/collection/components/attribute-certificate-viewer/attribute-certificate-viewer.js
CHANGED
|
@@ -134,7 +134,7 @@ export class AttributeCertificateViewer {
|
|
|
134
134
|
"references": {
|
|
135
135
|
"TAttributeCertificateProp": {
|
|
136
136
|
"location": "local",
|
|
137
|
-
"path": "/
|
|
137
|
+
"path": "/home/runner/work/pv-certificates-viewer/pv-certificates-viewer/packages/webcomponents/src/components/attribute-certificate-viewer/attribute-certificate-viewer.tsx",
|
|
138
138
|
"id": "src/components/attribute-certificate-viewer/attribute-certificate-viewer.tsx::TAttributeCertificateProp"
|
|
139
139
|
}
|
|
140
140
|
}
|
|
@@ -52,7 +52,7 @@ export class ButtonMenu {
|
|
|
52
52
|
"references": {
|
|
53
53
|
"IButtonMenuGroup": {
|
|
54
54
|
"location": "local",
|
|
55
|
-
"path": "/
|
|
55
|
+
"path": "/home/runner/work/pv-certificates-viewer/pv-certificates-viewer/packages/webcomponents/src/components/button-menu/button-menu.tsx",
|
|
56
56
|
"id": "src/components/button-menu/button-menu.tsx::IButtonMenuGroup"
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -469,7 +469,7 @@ table tr:last-child .divider {
|
|
|
469
469
|
display: none;
|
|
470
470
|
}
|
|
471
471
|
table td {
|
|
472
|
-
padding: calc(var(--pv-size-base) *
|
|
472
|
+
padding: calc(var(--pv-size-base) * 1) var(--pv-certificate-viewer-td-horizontal-padding);
|
|
473
473
|
vertical-align: top;
|
|
474
474
|
}
|
|
475
475
|
table td:first-child {
|
|
@@ -482,7 +482,7 @@ table td.monospace {
|
|
|
482
482
|
max-width: 0;
|
|
483
483
|
}
|
|
484
484
|
table td.divider {
|
|
485
|
-
padding: calc(var(--pv-size-base) *
|
|
485
|
+
padding: calc(var(--pv-size-base) * 1) 0;
|
|
486
486
|
}
|
|
487
487
|
table td.divider span {
|
|
488
488
|
height: 1px;
|
|
@@ -491,7 +491,7 @@ table td.divider span {
|
|
|
491
491
|
}
|
|
492
492
|
table .title td {
|
|
493
493
|
padding-top: calc(var(--pv-size-base) * 6);
|
|
494
|
-
padding-bottom: calc(var(--pv-size-base) *
|
|
494
|
+
padding-bottom: calc(var(--pv-size-base) * 1);
|
|
495
495
|
}
|
|
496
496
|
table table {
|
|
497
497
|
border-left: 1px solid var(--pv-color-gray-5);
|
|
@@ -11,60 +11,54 @@
|
|
|
11
11
|
import { Host, h, } from "@stencil/core";
|
|
12
12
|
import { readAsBinaryString } from "../../utils";
|
|
13
13
|
import { X509Certificate, X509AttributeCertificate, Pkcs10CertificateRequest, X509Crl, X509Certificates, SshCertificate, } from "../../crypto";
|
|
14
|
-
import { Button } from "../button";
|
|
15
|
-
import { Typography } from "../typography";
|
|
16
14
|
export class CertificateDecoder {
|
|
17
15
|
constructor() {
|
|
16
|
+
// ─── Handlers ──────────────────────────────────────────────────────────────
|
|
18
17
|
this.handleClickDecode = () => {
|
|
19
18
|
const { value } = this.inputPaste;
|
|
20
|
-
if (value)
|
|
19
|
+
if (value)
|
|
21
20
|
this.decode(value);
|
|
22
|
-
}
|
|
23
21
|
};
|
|
24
22
|
this.handleClickClear = () => {
|
|
25
23
|
this.clearValue();
|
|
26
24
|
};
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
25
|
this.handleChangeInputFile = async (event) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
var _a;
|
|
27
|
+
const el = event.target;
|
|
28
|
+
if ((_a = el.files) === null || _a === void 0 ? void 0 : _a.length) {
|
|
29
|
+
const file = await readAsBinaryString(el.files[0]);
|
|
30
|
+
if (typeof file.value === 'string')
|
|
33
31
|
this.decode(file.value);
|
|
34
|
-
|
|
35
|
-
element.value = '';
|
|
32
|
+
el.value = '';
|
|
36
33
|
}
|
|
37
34
|
};
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
35
|
this.handleChangeExample = (event) => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
else
|
|
36
|
+
const val = event.target.value;
|
|
37
|
+
if (val)
|
|
38
|
+
this.decode(val);
|
|
39
|
+
else
|
|
44
40
|
this.clearValue();
|
|
45
|
-
}
|
|
46
41
|
};
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
this.handleDrop = async (event) => {
|
|
43
|
+
var _a;
|
|
49
44
|
event.stopPropagation();
|
|
50
45
|
event.preventDefault();
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
53
|
-
const file = await readAsBinaryString(
|
|
54
|
-
if (typeof file.value === 'string')
|
|
46
|
+
const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
|
|
47
|
+
if (files === null || files === void 0 ? void 0 : files.length) {
|
|
48
|
+
const file = await readAsBinaryString(files[0]);
|
|
49
|
+
if (typeof file.value === 'string')
|
|
55
50
|
this.decode(file.value);
|
|
56
|
-
}
|
|
57
51
|
}
|
|
58
52
|
};
|
|
59
53
|
}
|
|
54
|
+
// ─── Lifecycle ─────────────────────────────────────────────────────────────
|
|
60
55
|
componentDidLoad() {
|
|
61
56
|
if (this.certificateToDecode) {
|
|
62
|
-
|
|
63
|
-
* Prevent Stencil warning about re-render
|
|
64
|
-
*/
|
|
57
|
+
// Defer one tick to avoid Stencil re-render warning
|
|
65
58
|
setTimeout(() => this.decode(this.certificateToDecode), 100);
|
|
66
59
|
}
|
|
67
60
|
}
|
|
61
|
+
// ─── Core operations ───────────────────────────────────────────────────────
|
|
68
62
|
clearValue() {
|
|
69
63
|
this.inputPaste.value = '';
|
|
70
64
|
this.certificateDecoded = null;
|
|
@@ -76,57 +70,53 @@ export class CertificateDecoder {
|
|
|
76
70
|
this.successParse.emit(await value.toString('base64url'));
|
|
77
71
|
}
|
|
78
72
|
async decode(value) {
|
|
79
|
-
new Promise((resolve) =>
|
|
80
|
-
resolve(new X509Certificates(value));
|
|
81
|
-
})
|
|
73
|
+
new Promise((resolve) => resolve(new X509Certificates(value)))
|
|
82
74
|
.catch(() => new X509Certificate(value))
|
|
83
75
|
.catch(() => new X509AttributeCertificate(value))
|
|
84
76
|
.catch(() => new Pkcs10CertificateRequest(value))
|
|
85
77
|
.catch(() => new X509Crl(value))
|
|
86
78
|
.catch(() => new SshCertificate(value))
|
|
87
79
|
.then((res) => this.setValue(res))
|
|
88
|
-
.catch((
|
|
89
|
-
console.
|
|
90
|
-
alert(`Error decoding certificate
|
|
80
|
+
.catch((err) => {
|
|
81
|
+
console.error(err);
|
|
82
|
+
alert(`Error decoding certificate.\n\nSupported formats: X.509 Certificate, Attribute Certificate, PKCS#10 CSR, CRL, SSH Certificate.`);
|
|
91
83
|
});
|
|
92
84
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
// ─── Render helpers ────────────────────────────────────────────────────────
|
|
86
|
+
renderDecodedComponent() {
|
|
87
|
+
const cert = this.certificateDecoded;
|
|
88
|
+
if (cert instanceof X509Certificates) {
|
|
89
|
+
return h("peculiar-certificate-chain-viewer", { certificates: cert, download: true });
|
|
96
90
|
}
|
|
97
|
-
if (
|
|
98
|
-
return
|
|
91
|
+
if (cert instanceof X509Certificate) {
|
|
92
|
+
return h("peculiar-certificate-viewer", { certificate: cert, download: true });
|
|
99
93
|
}
|
|
100
|
-
if (
|
|
101
|
-
return
|
|
94
|
+
if (cert instanceof X509AttributeCertificate) {
|
|
95
|
+
return h("peculiar-attribute-certificate-viewer", { certificate: cert, download: true });
|
|
102
96
|
}
|
|
103
|
-
if (
|
|
104
|
-
return
|
|
97
|
+
if (cert instanceof Pkcs10CertificateRequest) {
|
|
98
|
+
return h("peculiar-csr-viewer", { certificate: cert, download: true });
|
|
105
99
|
}
|
|
106
|
-
if (
|
|
107
|
-
return
|
|
100
|
+
if (cert instanceof X509Crl) {
|
|
101
|
+
return h("peculiar-crl-viewer", { certificate: cert, download: true });
|
|
108
102
|
}
|
|
109
|
-
if (
|
|
110
|
-
return
|
|
103
|
+
if (cert instanceof SshCertificate) {
|
|
104
|
+
return h("peculiar-ssh-certificate-viewer", { certificate: cert, download: true });
|
|
111
105
|
}
|
|
112
106
|
return null;
|
|
113
107
|
}
|
|
108
|
+
// ─── Render ────────────────────────────────────────────────────────────────
|
|
114
109
|
render() {
|
|
115
|
-
var _a;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
static get originalStyleUrls() {
|
|
121
|
-
return {
|
|
122
|
-
"$": ["certificate-decoder.scss"]
|
|
123
|
-
};
|
|
110
|
+
var _a, _b, _c;
|
|
111
|
+
const hasDecoded = !!this.certificateDecoded;
|
|
112
|
+
return (h(Host, { key: 'b10a85e97ef69c8a604bbd25505f7479b6653fd5', class: "relative grid h-full min-h-0 w-full grid-cols-1 overflow-hidden bg-gray-100 font-sans min-[821px]:grid-cols-2 max-[820px]:h-auto" }, h("div", { key: 'a1c72b0fe3f7d9fcba8c99e70d03941402dd63e9', class: "pointer-events-none absolute inset-y-0 left-1/2 hidden w-px -translate-x-1/2 bg-gray-200 min-[821px]:block", "aria-hidden": "true" }), h("div", { key: '1132570fba04a4fd2d7d987aa4e4125293647831', class: "flex min-h-0 flex-col overflow-hidden bg-white max-[820px]:min-h-64 max-[820px]:border-b max-[820px]:border-gray-200" }, h("div", { key: '68777e441ca9dc8436aaa740568591bd32fbd1c1', class: "flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2" }, h("span", { key: '73c91874a01ffd1e71730fa6baa6fc39dfdbad48', class: "flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500" }, h("svg", { key: 'b941fb650a45a4bf343cc78fc8d67be95a953db8', width: "12", height: "12", class: "shrink-0 text-blue-600 opacity-80", fill: "none", stroke: "currentColor", "stroke-width": "2", viewBox: "0 0 24 24" }, h("path", { key: 'aedddea976fb561a484c2215554d0c51955230e7', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" })), "Encoded Input"), h("div", { key: '9de9c3455df6a6d8f3508c9a2281d7de3a777b60', class: "flex shrink-0 items-center gap-1" }, h("label", { key: '86c37fb19f443162ae90c0d5c5e606c4b2277a2c', class: "inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40", title: "Load from file" }, h("svg", { key: '1361245e162d9c6489d8c56f5e96ea2c86911586', width: "11", height: "11", fill: "none", stroke: "currentColor", "stroke-width": "2", viewBox: "0 0 24 24" }, h("path", { key: 'd5695c059e93ef1c678e4aa399073bf8b3b7a0d0', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })), "Upload", h("input", { key: '2433c5574069a6af91817e665aa4a1cbf8714202', type: "file", accept: ".pem,.crt,.cer,.der,.csr,.req,.crl,.pub,application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl", class: "hidden", onChange: this.handleChangeInputFile })), h("button", { key: '1d01d274731fd905d2486cb032134d273e158c09', type: "button", class: "inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40", disabled: !hasDecoded && !((_a = this.inputPaste) === null || _a === void 0 ? void 0 : _a.value), onClick: this.handleClickClear }, "Clear"), h("button", { key: '2a61f7389e33af5d8d40f37dfb7d64e4fe35fd11', type: "button", class: "inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md bg-blue-600 px-2.5 py-1 font-mono text-xs tracking-wide text-white transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40", disabled: !hasDecoded && !((_b = this.inputPaste) === null || _b === void 0 ? void 0 : _b.value), onClick: this.handleClickDecode }, "Decode \u2192"))), h("textarea", { key: '5cbe9f954a48172b6864caa79e03bdb6f6013d2e', class: "min-h-0 w-full flex-1 resize-none border-0 bg-gray-100 px-4 py-4 font-mono text-xs leading-snug tracking-wide text-blue-800 caret-blue-600 outline-none transition-colors duration-150 placeholder:italic placeholder:text-gray-400 focus:bg-white", placeholder: 'Paste a PEM or Base64 DER certificate here,\nor drag & drop a .pem / .crt file…\n\n-----BEGIN CERTIFICATE-----\nMIIFaz…\n-----END CERTIFICATE-----', ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDrop })), h("div", { key: '36eaa346ed4141aeb99edf33c246b9de9f7b9c84', class: "flex min-h-0 flex-col overflow-hidden bg-white" }, h("div", { key: 'a813ddd50b1c9a6a9a058151b4c20d40a8cced7f', class: "flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2" }, h("span", { key: 'fc0af480d3429cc2f962d978d016cbe0e7ec3908', class: "flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500" }, h("svg", { key: '499d2bdf5850dde73561d92d7dada39aedf105a4', width: "12", height: "12", class: "shrink-0 text-blue-600 opacity-80", fill: "none", stroke: "currentColor", "stroke-width": "2", viewBox: "0 0 24 24" }, h("path", { key: '2fce5fabcdb01f44a67f2a6d137c1af93ef249c7', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" })), "Decoded Output"), ((_c = this.certificateExamples) === null || _c === void 0 ? void 0 : _c.length) > 0 && (h("div", { key: 'bfc616a607db1a50924941f4fa0c66d43da22bfd', class: "relative max-w-xs shrink" }, h("select", { key: 'e4c9df4dade5107f303212a73a187d45db9499e5', class: "w-full max-w-xs cursor-pointer appearance-none rounded-md border border-gray-300 bg-white py-1 pl-2 pr-8 font-mono text-xs text-gray-700 transition-colors hover:border-blue-600 focus:border-blue-600 focus:outline-none", onChange: this.handleChangeExample }, h("option", { key: '4a67fce0e2e1a2a7d4c54049eaa399205bc2e3bf', value: "" }, "Load example\u2026"), this.certificateExamples.map((ex) => (h("option", { value: ex.value }, ex.title)))), h("svg", { key: '676e9637a861bbf70c8c9959b6405a7aec1a6956', class: "pointer-events-none absolute right-2 top-1/2 size-2.5 -translate-y-1/2 text-gray-500", fill: "none", stroke: "currentColor", "stroke-width": "1.5", viewBox: "0 0 10 6", "aria-hidden": "true" }, h("path", { key: 'b25127cda325d4efef2254310ac78a27d2af7f38', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M1 1l4 4 4-4" }))))), h("div", { key: 'b803678828c280c0463ccb1080ac67a5634c29af', class: "min-h-0 flex-1 overflow-y-auto bg-white [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:rounded-md [&::-webkit-scrollbar-thumb]:bg-gray-300 hover:[&::-webkit-scrollbar-thumb]:bg-gray-400" }, !hasDecoded
|
|
113
|
+
? this.renderPlaceholder()
|
|
114
|
+
: this.renderDecodedComponent()))));
|
|
124
115
|
}
|
|
125
|
-
|
|
126
|
-
return {
|
|
127
|
-
"$": ["certificate-decoder.css"]
|
|
128
|
-
};
|
|
116
|
+
renderPlaceholder() {
|
|
117
|
+
return (h("div", { class: "flex h-full flex-col items-center justify-center gap-3 p-10" }, h("div", { class: "flex size-12 items-center justify-center rounded-full border border-gray-200 bg-gray-100 text-gray-400" }, h("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", viewBox: "0 0 24 24" }, h("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }))), h("p", { class: "text-center font-mono text-xs leading-relaxed text-gray-400" }, "Paste a certificate on the left", h("br", null), "and click", ' ', h("strong", { class: "font-semibold text-blue-600" }, "Decode"), ' ', "\u2014 or load an example.")));
|
|
129
118
|
}
|
|
119
|
+
static get is() { return "peculiar-certificate-decoder"; }
|
|
130
120
|
static get properties() {
|
|
131
121
|
return {
|
|
132
122
|
"certificateExamples": {
|
|
@@ -141,7 +131,7 @@ export class CertificateDecoder {
|
|
|
141
131
|
"optional": true,
|
|
142
132
|
"docs": {
|
|
143
133
|
"tags": [],
|
|
144
|
-
"text": "
|
|
134
|
+
"text": "Pre-loaded example certificates available in the \"Load example\" dropdown."
|
|
145
135
|
},
|
|
146
136
|
"getter": false,
|
|
147
137
|
"setter": false
|
|
@@ -158,7 +148,7 @@ export class CertificateDecoder {
|
|
|
158
148
|
"optional": true,
|
|
159
149
|
"docs": {
|
|
160
150
|
"tags": [],
|
|
161
|
-
"text": "
|
|
151
|
+
"text": "A certificate to decode on first load (PEM or Base64 DER)."
|
|
162
152
|
},
|
|
163
153
|
"getter": false,
|
|
164
154
|
"setter": false,
|
|
@@ -181,7 +171,7 @@ export class CertificateDecoder {
|
|
|
181
171
|
"composed": true,
|
|
182
172
|
"docs": {
|
|
183
173
|
"tags": [],
|
|
184
|
-
"text": "Emitted when
|
|
174
|
+
"text": "Emitted when a certificate has been successfully parsed."
|
|
185
175
|
},
|
|
186
176
|
"complexType": {
|
|
187
177
|
"original": "string",
|
|
@@ -196,7 +186,7 @@ export class CertificateDecoder {
|
|
|
196
186
|
"composed": true,
|
|
197
187
|
"docs": {
|
|
198
188
|
"tags": [],
|
|
199
|
-
"text": "Emitted when the
|
|
189
|
+
"text": "Emitted when the input has been cleared."
|
|
200
190
|
},
|
|
201
191
|
"complexType": {
|
|
202
192
|
"original": "void",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificate-decoder.js","sourceRoot":"","sources":["../../../src/components/certificate-decoder/certificate-decoder.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Host,\n h,\n State,\n Prop,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { readAsBinaryString } from '../../utils';\nimport {\n X509Certificate,\n X509AttributeCertificate,\n Pkcs10CertificateRequest,\n X509Crl,\n X509Certificates,\n SshCertificate,\n} from '../../crypto';\nimport { Button } from '../button';\nimport { Typography } from '../typography';\n\n@Component({\n tag: 'peculiar-certificate-decoder',\n styleUrl: 'certificate-decoder.scss',\n shadow: true,\n})\nexport class CertificateDecoder {\n private inputPaste?: HTMLTextAreaElement;\n\n /**\n * The example certificate value for decode and show details. Use PEM or DER.\n */\n @Prop() certificateExamples?: {\n title: string;\n value: string;\n }[];\n\n /**\n * The default certificate value for decode and show details. Use PEM or DER.\n */\n @Prop() certificateToDecode?: string;\n\n @State() certificateDecoded: X509Certificates\n | X509Certificate\n | X509AttributeCertificate\n | Pkcs10CertificateRequest\n | X509Crl\n | SshCertificate;\n\n /**\n * Emitted when the certificate has been successfully parsed.\n */\n @Event() successParse!: EventEmitter<string>;\n\n /**\n * Emitted when the certificate has been removed.\n */\n @Event() clearCertificate!: EventEmitter<void>;\n\n componentDidLoad() {\n if (this.certificateToDecode) {\n /**\n * Prevent Stencil warning about re-render\n */\n setTimeout(() => this.decode(this.certificateToDecode), 100);\n }\n }\n\n private handleClickDecode = () => {\n const { value } = this.inputPaste;\n\n if (value) {\n this.decode(value);\n }\n };\n\n private handleClickClear = () => {\n this.clearValue();\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleChangeInputFile = async (event: any) => {\n const element = event.target;\n\n if (element.files) {\n const file = await readAsBinaryString(element.files[0]);\n\n if (typeof file.value === 'string') {\n this.decode(file.value);\n }\n\n element.value = '';\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleChangeExample = (event: any) => {\n if (event.target.value) {\n this.decode(event.target.value);\n } else {\n this.clearValue();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleDropFile = async (event: any) => {\n event.stopPropagation();\n event.preventDefault();\n\n const element = event.dataTransfer;\n\n if (element.files) {\n const file = await readAsBinaryString(element.files[0]);\n\n if (typeof file.value === 'string') {\n this.decode(file.value);\n }\n }\n };\n\n clearValue() {\n this.inputPaste.value = '';\n this.certificateDecoded = null;\n this.clearCertificate.emit();\n }\n\n async setValue(value: typeof this.certificateDecoded) {\n this.certificateDecoded = value;\n\n this.inputPaste.value = await value.toString('pem');\n this.successParse.emit(await value.toString('base64url'));\n }\n\n async decode(value: string) {\n new Promise<X509Certificates>((resolve) => {\n resolve(new X509Certificates(value));\n })\n .catch(() => new X509Certificate(value))\n .catch(() => new X509AttributeCertificate(value))\n .catch(() => new Pkcs10CertificateRequest(value))\n .catch(() => new X509Crl(value))\n .catch(() => new SshCertificate(value))\n .then((res: typeof this.certificateDecoded) => this.setValue(res))\n .catch((error) => {\n console.log(error);\n\n alert(`Error decoding certificate:\\n\"${value}\"\\n\\nPlease try to use Certificate/AttributeCertificate/CertificateRequest/CRL.`);\n });\n }\n\n renderCertificate() {\n if (this.certificateDecoded instanceof X509Certificates) {\n return (\n <peculiar-certificate-chain-viewer\n certificates={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof X509Certificate) {\n return (\n <peculiar-certificate-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof X509AttributeCertificate) {\n return (\n <peculiar-attribute-certificate-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof Pkcs10CertificateRequest) {\n return (\n <peculiar-csr-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof X509Crl) {\n return (\n <peculiar-crl-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof SshCertificate) {\n return (\n <peculiar-ssh-certificate-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n return null;\n }\n\n render() {\n return (\n <Host>\n <textarea\n placeholder=\"Certificate DER or PEM\"\n class=\"textarea t-b2 c-black\"\n ref={(el) => { this.inputPaste = el; }}\n onDrop={this.handleDropFile}\n />\n <div class=\"controls\">\n <div class=\"control_row\">\n <Typography\n variant=\"b3\"\n color=\"secondary-tint-2\"\n >\n Drag or load file:\n </Typography>\n <input\n type=\"file\"\n accept=\"application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl,.pub\"\n value=\"\"\n onChange={this.handleChangeInputFile}\n />\n </div>\n {this.certificateExamples?.length && (\n <div class=\"control_row\">\n <Typography\n variant=\"b3\"\n color=\"secondary-tint-2\"\n >\n Load examples:\n </Typography>\n <select onChange={this.handleChangeExample}>\n <option value=\"\">None</option>\n {this.certificateExamples.map((example) => (\n <option value={example.value}>\n {example.title}\n </option>\n ))}\n </select>\n </div>\n )}\n <div class=\"control_row\">\n <Button\n onClick={this.handleClickDecode}\n >\n Decode\n </Button>\n <Button\n onClick={this.handleClickClear}\n >\n Clear\n </Button>\n </div>\n </div>\n {this.renderCertificate()}\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"certificate-decoder.js","sourceRoot":"","sources":["../../../src/components/certificate-decoder/certificate-decoder.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Host,\n h,\n State,\n Prop,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { readAsBinaryString } from '../../utils';\nimport {\n X509Certificate,\n X509AttributeCertificate,\n Pkcs10CertificateRequest,\n X509Crl,\n X509Certificates,\n SshCertificate,\n} from '../../crypto';\n\n@Component({\n tag: 'peculiar-certificate-decoder',\n shadow: false,\n})\nexport class CertificateDecoder {\n private inputPaste?: HTMLTextAreaElement;\n\n /**\n * Pre-loaded example certificates available in the \"Load example\" dropdown.\n */\n @Prop() certificateExamples?: {\n title: string;\n value: string;\n }[];\n\n /**\n * A certificate to decode on first load (PEM or Base64 DER).\n */\n @Prop() certificateToDecode?: string;\n\n /** The decoded certificate object; null while empty. */\n @State() certificateDecoded: X509Certificates\n | X509Certificate\n | X509AttributeCertificate\n | Pkcs10CertificateRequest\n | X509Crl\n | SshCertificate;\n\n /** Emitted when a certificate has been successfully parsed. */\n @Event() successParse!: EventEmitter<string>;\n\n /** Emitted when the input has been cleared. */\n @Event() clearCertificate!: EventEmitter<void>;\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n componentDidLoad() {\n if (this.certificateToDecode) {\n // Defer one tick to avoid Stencil re-render warning\n setTimeout(() => this.decode(this.certificateToDecode), 100);\n }\n }\n\n // ─── Handlers ──────────────────────────────────────────────────────────────\n\n private handleClickDecode = () => {\n const { value } = this.inputPaste;\n\n if (value) this.decode(value);\n };\n\n private handleClickClear = () => {\n this.clearValue();\n };\n\n private handleChangeInputFile = async (event: Event) => {\n const el = event.target as HTMLInputElement;\n\n if (el.files?.length) {\n const file = await readAsBinaryString(el.files[0]);\n\n if (typeof file.value === 'string') this.decode(file.value);\n el.value = '';\n }\n };\n\n private handleChangeExample = (event: Event) => {\n const val = (event.target as HTMLSelectElement).value;\n\n if (val) this.decode(val);\n else this.clearValue();\n };\n\n private handleDrop = async (event: DragEvent) => {\n event.stopPropagation();\n event.preventDefault();\n const files = event.dataTransfer?.files;\n\n if (files?.length) {\n const file = await readAsBinaryString(files[0]);\n\n if (typeof file.value === 'string') this.decode(file.value);\n }\n };\n\n // ─── Core operations ───────────────────────────────────────────────────────\n\n clearValue() {\n this.inputPaste.value = '';\n this.certificateDecoded = null;\n this.clearCertificate.emit();\n }\n\n async setValue(value: typeof this.certificateDecoded) {\n this.certificateDecoded = value;\n this.inputPaste.value = await value.toString('pem');\n this.successParse.emit(await value.toString('base64url'));\n }\n\n async decode(value: string) {\n new Promise<X509Certificates>((resolve) => resolve(new X509Certificates(value)))\n .catch(() => new X509Certificate(value))\n .catch(() => new X509AttributeCertificate(value))\n .catch(() => new Pkcs10CertificateRequest(value))\n .catch(() => new X509Crl(value))\n .catch(() => new SshCertificate(value))\n .then((res: typeof this.certificateDecoded) => this.setValue(res))\n .catch((err) => {\n console.error(err);\n alert(`Error decoding certificate.\\n\\nSupported formats: X.509 Certificate, Attribute Certificate, PKCS#10 CSR, CRL, SSH Certificate.`);\n });\n }\n\n // ─── Render helpers ────────────────────────────────────────────────────────\n\n private renderDecodedComponent() {\n const cert = this.certificateDecoded;\n\n if (cert instanceof X509Certificates) {\n return <peculiar-certificate-chain-viewer certificates={cert} download />;\n }\n\n if (cert instanceof X509Certificate) {\n return <peculiar-certificate-viewer certificate={cert} download />;\n }\n\n if (cert instanceof X509AttributeCertificate) {\n return <peculiar-attribute-certificate-viewer certificate={cert} download />;\n }\n\n if (cert instanceof Pkcs10CertificateRequest) {\n return <peculiar-csr-viewer certificate={cert} download />;\n }\n\n if (cert instanceof X509Crl) {\n return <peculiar-crl-viewer certificate={cert} download />;\n }\n\n if (cert instanceof SshCertificate) {\n return <peculiar-ssh-certificate-viewer certificate={cert} download />;\n }\n\n return null;\n }\n\n // ─── Render ────────────────────────────────────────────────────────────────\n\n render() {\n const hasDecoded = !!this.certificateDecoded;\n\n return (\n <Host class=\"relative grid h-full min-h-0 w-full grid-cols-1 overflow-hidden bg-gray-100 font-sans min-[821px]:grid-cols-2 max-[820px]:h-auto\">\n <div\n class=\"pointer-events-none absolute inset-y-0 left-1/2 hidden w-px -translate-x-1/2 bg-gray-200 min-[821px]:block\"\n aria-hidden=\"true\"\n />\n\n {/* ══════════════════════ LEFT PANE — INPUT ══════════════════════ */}\n <div class=\"flex min-h-0 flex-col overflow-hidden bg-white max-[820px]:min-h-64 max-[820px]:border-b max-[820px]:border-gray-200\">\n\n <div class=\"flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2\">\n <span class=\"flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500\">\n <svg\n width=\"12\" height=\"12\"\n class=\"shrink-0 text-blue-600 opacity-80\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\n />\n </svg>\n Encoded Input\n </span>\n\n <div class=\"flex shrink-0 items-center gap-1\">\n <label\n class=\"inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40\"\n title=\"Load from file\"\n >\n <svg\n width=\"11\" height=\"11\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12\"\n />\n </svg>\n Upload\n <input\n type=\"file\"\n accept=\".pem,.crt,.cer,.der,.csr,.req,.crl,.pub,application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl\"\n class=\"hidden\"\n onChange={this.handleChangeInputFile}\n />\n </label>\n\n <button\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40\"\n disabled={!hasDecoded && !this.inputPaste?.value}\n onClick={this.handleClickClear}\n >\n Clear\n </button>\n\n <button\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md bg-blue-600 px-2.5 py-1 font-mono text-xs tracking-wide text-white transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40\"\n disabled={!hasDecoded && !this.inputPaste?.value}\n onClick={this.handleClickDecode}\n >\n Decode →\n </button>\n </div>\n </div>\n\n <textarea\n class=\"min-h-0 w-full flex-1 resize-none border-0 bg-gray-100 px-4 py-4 font-mono text-xs leading-snug tracking-wide text-blue-800 caret-blue-600 outline-none transition-colors duration-150 placeholder:italic placeholder:text-gray-400 focus:bg-white\"\n placeholder={'Paste a PEM or Base64 DER certificate here,\\nor drag & drop a .pem / .crt file…\\n\\n-----BEGIN CERTIFICATE-----\\nMIIFaz…\\n-----END CERTIFICATE-----'}\n ref={(el) => { this.inputPaste = el as HTMLTextAreaElement; }}\n onDrop={this.handleDrop}\n />\n </div>\n\n {/* ══════════════════════ RIGHT PANE — OUTPUT ══════════════════════ */}\n <div class=\"flex min-h-0 flex-col overflow-hidden bg-white\">\n <div class=\"flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2\">\n <span class=\"flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500\">\n <svg\n width=\"12\" height=\"12\"\n class=\"shrink-0 text-blue-600 opacity-80\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"\n />\n </svg>\n Decoded Output\n </span>\n\n {this.certificateExamples?.length > 0 && (\n <div class=\"relative max-w-xs shrink\">\n <select\n class=\"w-full max-w-xs cursor-pointer appearance-none rounded-md border border-gray-300 bg-white py-1 pl-2 pr-8 font-mono text-xs text-gray-700 transition-colors hover:border-blue-600 focus:border-blue-600 focus:outline-none\"\n onChange={this.handleChangeExample}\n >\n <option value=\"\">Load example…</option>\n {this.certificateExamples.map((ex) => (\n <option value={ex.value}>{ex.title}</option>\n ))}\n </select>\n <svg\n class=\"pointer-events-none absolute right-2 top-1/2 size-2.5 -translate-y-1/2 text-gray-500\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\"\n viewBox=\"0 0 10 6\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M1 1l4 4 4-4\"\n />\n </svg>\n </div>\n )}\n </div>\n\n <div class=\"min-h-0 flex-1 overflow-y-auto bg-white [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:rounded-md [&::-webkit-scrollbar-thumb]:bg-gray-300 hover:[&::-webkit-scrollbar-thumb]:bg-gray-400\">\n {!hasDecoded\n ? this.renderPlaceholder()\n : this.renderDecodedComponent()}\n </div>\n </div>\n\n </Host>\n );\n }\n\n private renderPlaceholder() {\n return (\n <div class=\"flex h-full flex-col items-center justify-center gap-3 p-10\">\n <div class=\"flex size-12 items-center justify-center rounded-full border border-gray-200 bg-gray-100 text-gray-400\">\n <svg\n width=\"24\" height=\"24\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\n />\n </svg>\n </div>\n <p class=\"text-center font-mono text-xs leading-relaxed text-gray-400\">\n Paste a certificate on the left\n <br />\n and click\n {' '}\n <strong class=\"font-semibold text-blue-600\">Decode</strong>\n {' '}\n — or load an example.\n </p>\n </div>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* © Peculiar Ventures https://peculiarventures.com/ - MIT License
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright (c) Peculiar Ventures, LLC.
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the MIT license found in the
|
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/
|
|
11
|
+
import { h } from "@stencil/core";
|
|
12
|
+
import { RowValue } from "../row";
|
|
13
|
+
import { dateShort } from "../../../utils";
|
|
14
|
+
import { BasicExtension } from "./basic_extension";
|
|
15
|
+
export const AppleDeveloperIdDateExtension = (props) => {
|
|
16
|
+
const { extension } = props;
|
|
17
|
+
return (h(BasicExtension, { extension: extension }, h(RowValue, { name: "Date", value: dateShort(extension.value.date) })));
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=apple_developer_id_date_extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apple_developer_id_date_extension.js","sourceRoot":"","sources":["../../../../src/components/certificate-details-parts/extensions/apple_developer_id_date_extension.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAuB,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,MAAM,CAAC,MAAM,6BAA6B,GACiB,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAE5B,OAAO,CACL,EAAC,cAAc,IACb,SAAS,EAAE,SAAS;QAEpB,EAAC,QAAQ,IACP,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GACtC,CACa,CAClB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { h, FunctionalComponent } from '@stencil/core';\nimport { Extension } from '../../../crypto/extension';\nimport { AppleDeveloperIdDate } from '../../../crypto/extensions';\nimport { RowValue } from '../row';\nimport { dateShort } from '../../../utils';\nimport { BasicExtension } from './basic_extension';\n\ninterface IAppleDeveloperIdDateExtensionProps {\n extension: Extension<AppleDeveloperIdDate>;\n}\n\nexport const AppleDeveloperIdDateExtension:\nFunctionalComponent<IAppleDeveloperIdDateExtensionProps> = (props) => {\n const { extension } = props;\n\n return (\n <BasicExtension\n extension={extension}\n >\n <RowValue\n name=\"Date\"\n value={dateShort(extension.value.date)}\n />\n </BasicExtension>\n );\n};\n"]}
|
|
@@ -20,7 +20,7 @@ import { LogotypeExtn } from "@peculiar/asn1-x509-logotype";
|
|
|
20
20
|
import { TNAuthorizationList } from "@peculiar/asn1-rfc8226";
|
|
21
21
|
import { NonStandardKeyDescription } from "@peculiar/asn1-android";
|
|
22
22
|
import { RowTitle } from "../row";
|
|
23
|
-
import { CabforganizationIdentifier } from "../../../crypto/extensions";
|
|
23
|
+
import { AppleDeveloperIdDate, CabforganizationIdentifier, } from "../../../crypto/extensions";
|
|
24
24
|
import { KeyUsageExtension } from "./key_usage_extension";
|
|
25
25
|
import { BasicConstraintsExtension } from "./basic_constraints_extension";
|
|
26
26
|
import { ExtendedKeyUsageExtension } from "./extended_key_usage_extension";
|
|
@@ -57,6 +57,7 @@ import { CRLNumberExtension } from "./crl_number_extension";
|
|
|
57
57
|
import { IssuingDistributionPointExtension } from "./issuing_distribution_point_extension";
|
|
58
58
|
import { KeyDescriptionExtension } from "./key_description_extension";
|
|
59
59
|
import { CabforganizationIdentifierExtension } from "./cabforganization_identifier_extension";
|
|
60
|
+
import { AppleDeveloperIdDateExtension } from "./apple_developer_id_date_extension";
|
|
60
61
|
export const Extensions = (props) => {
|
|
61
62
|
const { extensions, title } = props;
|
|
62
63
|
if (!extensions || !extensions.length) {
|
|
@@ -169,6 +170,9 @@ export const Extensions = (props) => {
|
|
|
169
170
|
if (extension.value instanceof CabforganizationIdentifier) {
|
|
170
171
|
return (h(CabforganizationIdentifierExtension, Object.assign({ extension: extension }, props)));
|
|
171
172
|
}
|
|
173
|
+
if (extension.value instanceof AppleDeveloperIdDate) {
|
|
174
|
+
return (h(AppleDeveloperIdDateExtension, { extension: extension }));
|
|
175
|
+
}
|
|
172
176
|
if (typeof extension.value === 'string') {
|
|
173
177
|
return (h(AsStringExtension, { extension: extension }));
|
|
174
178
|
}
|