@peculiar/certificates-viewer 4.7.1-alpha.4 → 4.7.1-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/components/download.js +4 -5
  2. package/components/download.js.map +1 -1
  3. package/components/peculiar-certificate-decoder.js +1 -1
  4. package/components/peculiar-certificate-decoder.js.map +1 -1
  5. package/components/ssh-certificate-viewer.js +1 -1
  6. package/components/ssh-certificate-viewer.js.map +1 -1
  7. package/dist/cjs/{extension-DTtJlxk8.js → extension-CjXYQXbF.js} +3 -3
  8. package/dist/cjs/{extension-DTtJlxk8.js.map → extension-CjXYQXbF.js.map} +1 -1
  9. package/dist/cjs/index.cjs.js +2 -2
  10. package/dist/cjs/{miscellaneous-DCeacaAw.js → miscellaneous-7gtHz795.js} +4 -4
  11. package/dist/cjs/{miscellaneous-DCeacaAw.js.map → miscellaneous-7gtHz795.js.map} +1 -1
  12. 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
  13. package/dist/cjs/peculiar-attribute-certificate-viewer_5.cjs.entry.js +6 -6
  14. package/dist/cjs/peculiar-attribute-certificate-viewer_5.cjs.entry.js.map +1 -1
  15. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +6 -6
  16. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js.map +1 -1
  17. package/dist/cjs/peculiar-certificate-decoder.entry.cjs.js.map +1 -1
  18. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +4 -4
  19. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +3 -3
  20. package/dist/cjs/{pkcs10_certificate_request-DE-0eDXE.js → pkcs10_certificate_request-CIOxDu_Z.js} +3 -3
  21. package/dist/cjs/{pkcs10_certificate_request-DE-0eDXE.js.map → pkcs10_certificate_request-CIOxDu_Z.js.map} +1 -1
  22. package/dist/cjs/{ssh_certificate-D2q_p49O.js → ssh_certificate-DnXj2sM0.js} +6 -7
  23. package/dist/cjs/ssh_certificate-DnXj2sM0.js.map +1 -0
  24. package/dist/cjs/{x509_certificate-Cto1q-eu.js → x509_certificate-DPgu-mwG.js} +4 -4
  25. package/dist/cjs/{x509_certificate-Cto1q-eu.js.map → x509_certificate-DPgu-mwG.js.map} +1 -1
  26. package/dist/cjs/{x509_crl-CgixMZrh.js → x509_crl-D_DKkGcn.js} +5 -5
  27. package/dist/cjs/{x509_crl-CgixMZrh.js.map → x509_crl-D_DKkGcn.js.map} +1 -1
  28. package/dist/collection/components/certificate-decoder/certificate-decoder.js +1 -1
  29. package/dist/collection/components/certificate-decoder/certificate-decoder.js.map +1 -1
  30. package/dist/collection/components/ssh-certificate-viewer/-components/miscellaneous.js +1 -1
  31. package/dist/collection/components/ssh-certificate-viewer/-components/miscellaneous.js.map +1 -1
  32. package/dist/collection/crypto/ssh_certificate.js +2 -2
  33. package/dist/collection/crypto/ssh_certificate.js.map +1 -1
  34. package/dist/collection/locales/en.json +0 -1
  35. package/dist/collection/utils/download.js +2 -2
  36. package/dist/collection/utils/download.js.map +1 -1
  37. package/dist/esm/{extension-DmlhftES.js → extension-B3br1_Py.js} +3 -3
  38. package/dist/esm/{extension-DmlhftES.js.map → extension-B3br1_Py.js.map} +1 -1
  39. package/dist/esm/index.js +2 -2
  40. package/dist/esm/{miscellaneous-BTlqwN5_.js → miscellaneous-phHcBJWR.js} +4 -4
  41. package/dist/esm/{miscellaneous-BTlqwN5_.js.map → miscellaneous-phHcBJWR.js.map} +1 -1
  42. 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
  43. package/dist/esm/peculiar-attribute-certificate-viewer_5.entry.js +6 -6
  44. package/dist/esm/peculiar-attribute-certificate-viewer_5.entry.js.map +1 -1
  45. package/dist/esm/peculiar-certificate-decoder.entry.js +6 -6
  46. package/dist/esm/peculiar-certificate-decoder.entry.js.map +1 -1
  47. package/dist/esm/peculiar-certificate-viewer.entry.js +4 -4
  48. package/dist/esm/peculiar-certificates-viewer.entry.js +3 -3
  49. package/dist/esm/{pkcs10_certificate_request-B5C1NYFc.js → pkcs10_certificate_request-HIoLPXGQ.js} +3 -3
  50. package/dist/esm/{pkcs10_certificate_request-B5C1NYFc.js.map → pkcs10_certificate_request-HIoLPXGQ.js.map} +1 -1
  51. package/dist/esm/{ssh_certificate-PCn0WXhQ.js → ssh_certificate-rmToyzuK.js} +6 -7
  52. package/dist/esm/ssh_certificate-rmToyzuK.js.map +1 -0
  53. package/dist/esm/{x509_certificate-BiAmXJ4S.js → x509_certificate-C1VvfHQ5.js} +4 -4
  54. package/dist/{esm-es5/x509_certificate-BiAmXJ4S.js.map → esm/x509_certificate-C1VvfHQ5.js.map} +1 -1
  55. package/dist/esm/{x509_crl-CCeoLLUZ.js → x509_crl-rfnWQkGD.js} +5 -5
  56. package/dist/esm/{x509_crl-CCeoLLUZ.js.map → x509_crl-rfnWQkGD.js.map} +1 -1
  57. package/dist/esm-es5/{extension-DmlhftES.js → extension-B3br1_Py.js} +2 -2
  58. package/dist/esm-es5/{extension-DmlhftES.js.map → extension-B3br1_Py.js.map} +1 -1
  59. package/dist/esm-es5/index.js +1 -1
  60. package/dist/esm-es5/{miscellaneous-BTlqwN5_.js → miscellaneous-phHcBJWR.js} +2 -2
  61. package/dist/esm-es5/{miscellaneous-BTlqwN5_.js.map → miscellaneous-phHcBJWR.js.map} +1 -1
  62. 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
  63. package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js +2 -2
  64. package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js.map +1 -1
  65. package/dist/esm-es5/peculiar-certificate-decoder.entry.js +1 -1
  66. package/dist/esm-es5/peculiar-certificate-decoder.entry.js.map +1 -1
  67. package/dist/esm-es5/peculiar-certificate-viewer.entry.js +1 -1
  68. package/dist/esm-es5/peculiar-certificates-viewer.entry.js +1 -1
  69. package/dist/esm-es5/{pkcs10_certificate_request-B5C1NYFc.js → pkcs10_certificate_request-HIoLPXGQ.js} +2 -2
  70. package/dist/esm-es5/{pkcs10_certificate_request-B5C1NYFc.js.map → pkcs10_certificate_request-HIoLPXGQ.js.map} +1 -1
  71. package/dist/esm-es5/{ssh_certificate-PCn0WXhQ.js → ssh_certificate-rmToyzuK.js} +4 -4
  72. package/dist/esm-es5/ssh_certificate-rmToyzuK.js.map +1 -0
  73. package/dist/esm-es5/{x509_certificate-BiAmXJ4S.js → x509_certificate-C1VvfHQ5.js} +4 -4
  74. package/dist/{esm/x509_certificate-BiAmXJ4S.js.map → esm-es5/x509_certificate-C1VvfHQ5.js.map} +1 -1
  75. package/dist/esm-es5/{x509_crl-CCeoLLUZ.js → x509_crl-rfnWQkGD.js} +2 -2
  76. package/dist/esm-es5/{x509_crl-CCeoLLUZ.js.map → x509_crl-rfnWQkGD.js.map} +1 -1
  77. package/dist/peculiar/index.esm.js +1 -1
  78. package/dist/peculiar/locales/en.json +0 -1
  79. package/dist/peculiar/{p-98219569.entry.js → p-019339d6.entry.js} +2 -2
  80. package/dist/peculiar/{p-71eab586.entry.js → p-04422929.entry.js} +2 -2
  81. package/dist/peculiar/{p-7273601a.entry.js → p-154dd0da.entry.js} +2 -2
  82. package/dist/peculiar/{p-7273601a.entry.js.map → p-154dd0da.entry.js.map} +1 -1
  83. package/dist/peculiar/{p-46c17c8d.system.entry.js → p-3685975d.system.entry.js} +2 -2
  84. package/dist/peculiar/{p-83bfd8e5.system.entry.js → p-6f0f2749.system.entry.js} +3 -3
  85. package/dist/peculiar/{p-83bfd8e5.system.entry.js.map → p-6f0f2749.system.entry.js.map} +1 -1
  86. package/dist/peculiar/{p-71cb31c6.entry.js → p-7385d0bb.entry.js} +11 -11
  87. package/dist/peculiar/{p-71cb31c6.entry.js.map → p-7385d0bb.entry.js.map} +1 -1
  88. package/dist/peculiar/{p-cc01a2da.system.entry.js → p-872f7312.system.entry.js} +18 -18
  89. package/dist/peculiar/{p-cc01a2da.system.entry.js.map → p-872f7312.system.entry.js.map} +1 -1
  90. package/dist/peculiar/{p-h7XP7otl.js → p-B1eGYq5U.js} +3 -3
  91. package/dist/peculiar/{p-h7XP7otl.js.map → p-B1eGYq5U.js.map} +1 -1
  92. package/dist/peculiar/{p-dOkqMp-O.system.js → p-B2GW-g6v.system.js} +2 -2
  93. package/dist/peculiar/p-B2GW-g6v.system.js.map +1 -0
  94. package/dist/peculiar/{p-DnOLjFJP.js → p-B8_0p5ke.js} +5 -5
  95. package/dist/peculiar/{p-DnOLjFJP.js.map → p-B8_0p5ke.js.map} +1 -1
  96. package/dist/peculiar/p-BGASC3UX.system.js +1 -1
  97. package/dist/peculiar/{p-CSz5liuX.system.js.map → p-BdfvItQB.system.js.map} +1 -1
  98. package/dist/peculiar/p-BtqN4pgo.js +12 -0
  99. package/dist/peculiar/{p-BwlcJAh0.js.map → p-BtqN4pgo.js.map} +1 -1
  100. package/dist/peculiar/{p-DPbpwYQ8.system.js → p-CTksa0ml.system.js} +3 -3
  101. package/dist/peculiar/{p-DPbpwYQ8.system.js.map → p-CTksa0ml.system.js.map} +1 -1
  102. package/dist/peculiar/{p-Db41gPxb.js → p-CYFfXlCT.js} +4 -4
  103. package/dist/peculiar/{p-Db41gPxb.js.map → p-CYFfXlCT.js.map} +1 -1
  104. package/dist/peculiar/{p-CstRxc9v.js → p-CkePJXWQ.js} +4 -4
  105. package/dist/peculiar/{p-CstRxc9v.js.map → p-CkePJXWQ.js.map} +1 -1
  106. package/dist/peculiar/{p-9MJeDspO.system.js.map → p-CuX3t1Hg.system.js.map} +1 -1
  107. package/dist/peculiar/{p-B82-c-xr.system.js.map → p-Cv-b9S6H.system.js.map} +1 -1
  108. package/dist/peculiar/{p-AjXipXSl.system.js → p-D0w6miI2.system.js} +3 -3
  109. package/dist/peculiar/{p-AjXipXSl.system.js.map → p-D0w6miI2.system.js.map} +1 -1
  110. package/dist/peculiar/{p-BHpSDBz_.system.js.map → p-DOFJd-ye.system.js.map} +1 -1
  111. package/dist/peculiar/{p-SjVQtfgD.system.js → p-DkshB-5z.system.js} +4 -4
  112. package/dist/peculiar/{p-SjVQtfgD.system.js.map → p-DkshB-5z.system.js.map} +1 -1
  113. package/dist/peculiar/{p-B5GO6_Ut.system.js → p-DorRvFf7.system.js} +18 -18
  114. package/dist/peculiar/{p-B5GO6_Ut.system.js.map → p-DorRvFf7.system.js.map} +1 -1
  115. package/dist/peculiar/{p-B2FH4Pv2.system.js → p-ZxTK29QB.system.js} +4 -4
  116. package/dist/peculiar/{p-B2FH4Pv2.system.js.map → p-ZxTK29QB.system.js.map} +1 -1
  117. package/dist/peculiar/{p-24861cf6.system.entry.js → p-a4454e2d.system.entry.js} +2 -2
  118. package/dist/peculiar/{p-DMDALRLP.system.js → p-kq9wAWxW.system.js} +4 -4
  119. package/dist/peculiar/p-kq9wAWxW.system.js.map +1 -0
  120. package/dist/peculiar/{p-PCn0WXhQ.js → p-rmToyzuK.js} +4 -4
  121. package/dist/peculiar/p-rmToyzuK.js.map +1 -0
  122. 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
  123. package/dist/peculiar/peculiar-certificate-decoder.entry.esm.js.map +1 -1
  124. package/dist/peculiar/peculiar.esm.js +1 -1
  125. package/dist/types/crypto/ssh_certificate.d.ts +1 -1
  126. package/dist/types/utils/download.d.ts +1 -1
  127. package/dist/types/utils/l10n.d.ts +0 -1
  128. package/hydrate/index.js +6 -7
  129. package/hydrate/index.mjs +6 -7
  130. package/package.json +2 -2
  131. package/dist/cjs/ssh_certificate-D2q_p49O.js.map +0 -1
  132. package/dist/esm/ssh_certificate-PCn0WXhQ.js.map +0 -1
  133. package/dist/esm-es5/ssh_certificate-PCn0WXhQ.js.map +0 -1
  134. package/dist/peculiar/p-BwlcJAh0.js +0 -12
  135. package/dist/peculiar/p-DMDALRLP.system.js.map +0 -1
  136. package/dist/peculiar/p-PCn0WXhQ.js.map +0 -1
  137. package/dist/peculiar/p-dOkqMp-O.system.js.map +0 -1
  138. /package/dist/peculiar/{p-98219569.entry.js.map → p-019339d6.entry.js.map} +0 -0
  139. /package/dist/peculiar/{p-71eab586.entry.js.map → p-04422929.entry.js.map} +0 -0
  140. /package/dist/peculiar/{p-46c17c8d.system.entry.js.map → p-3685975d.system.entry.js.map} +0 -0
  141. /package/dist/peculiar/{p-24861cf6.system.entry.js.map → p-a4454e2d.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-D2q_p49O.js');
7
- var extension = require('./extension-DTtJlxk8.js');
6
+ var ssh_certificate = require('./ssh_certificate-DnXj2sM0.js');
7
+ var extension = require('./extension-CjXYQXbF.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-Cto1q-eu.js.map
158
+ //# sourceMappingURL=x509_certificate-DPgu-mwG.js.map
159
159
 
160
- //# sourceMappingURL=x509_certificate-Cto1q-eu.js.map
160
+ //# sourceMappingURL=x509_certificate-DPgu-mwG.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x509_certificate-Cto1q-eu.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-DPgu-mwG.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-D2q_p49O.js');
7
- var extension = require('./extension-DTtJlxk8.js');
8
- var pkcs10_certificate_request = require('./pkcs10_certificate_request-DE-0eDXE.js');
6
+ var ssh_certificate = require('./ssh_certificate-DnXj2sM0.js');
7
+ var extension = require('./extension-CjXYQXbF.js');
8
+ var pkcs10_certificate_request = require('./pkcs10_certificate_request-CIOxDu_Z.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-CgixMZrh.js.map
179
+ //# sourceMappingURL=x509_crl-D_DKkGcn.js.map
180
180
 
181
- //# sourceMappingURL=x509_crl-CgixMZrh.js.map
181
+ //# sourceMappingURL=x509_crl-D_DKkGcn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x509_crl-CgixMZrh.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-D_DKkGcn.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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"}
@@ -113,7 +113,7 @@ export class CertificateDecoder {
113
113
  }
114
114
  render() {
115
115
  var _a;
116
- return (h(Host, { key: '9067f2d7f33a40b3ad0ba03c7338a6f800100dab' }, h("textarea", { key: '9e8962631c259fd5e144a1397d8591dde46d032f', placeholder: "Certificate DER or PEM", class: "textarea t-b2 c-black", ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDropFile }), h("div", { key: '9be2b1e6c9b3de94c9d5e1e6cf31d9fb487960d8', class: "controls" }, h("div", { key: '3959b89ab5c5654a3c10a1166743c056c0340e2e', class: "control_row" }, h(Typography, { key: '3c03f42d14ff5a485264523bab40765bb4f89a8f', variant: "b3", color: "secondary-tint-2" }, "Drag or load file:"), h("input", { key: '3c8682f5de0b0e2f84e37a8a05882ebcf331daef', type: "file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl,.cert", value: "", onChange: this.handleChangeInputFile })), ((_a = this.certificateExamples) === null || _a === void 0 ? void 0 : _a.length) && (h("div", { key: '7c38788ccf4b038126ddf6909ec1d3de76325660', class: "control_row" }, h(Typography, { key: 'c1c13aaad3d1df51465c6c51ee24f45313de8f1c', variant: "b3", color: "secondary-tint-2" }, "Load examples:"), h("select", { key: '811c4440269bb0a0a55f488e10dfa12093b18d7b', onChange: this.handleChangeExample }, h("option", { key: 'd2e30396fe3a59d5c46c83c6cd1e5b5a58f15f73', value: "" }, "None"), this.certificateExamples.map((example) => (h("option", { value: example.value }, example.title)))))), h("div", { key: '58daae2b9d8e2dd4c698ec9ad6e7f0d8b2500883', class: "control_row" }, h(Button, { key: 'd7f813370ace60deaad975622cc26b9a497ce9d2', onClick: this.handleClickDecode }, "Decode"), h(Button, { key: 'ec2fbeb6283ffd17c7328ee78c9464926b0bbb6b', onClick: this.handleClickClear }, "Clear"))), this.renderCertificate()));
116
+ return (h(Host, { key: '9067f2d7f33a40b3ad0ba03c7338a6f800100dab' }, h("textarea", { key: '9e8962631c259fd5e144a1397d8591dde46d032f', placeholder: "Certificate DER or PEM", class: "textarea t-b2 c-black", ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDropFile }), h("div", { key: '9be2b1e6c9b3de94c9d5e1e6cf31d9fb487960d8', class: "controls" }, h("div", { key: '3959b89ab5c5654a3c10a1166743c056c0340e2e', class: "control_row" }, h(Typography, { key: '3c03f42d14ff5a485264523bab40765bb4f89a8f', variant: "b3", color: "secondary-tint-2" }, "Drag or load file:"), h("input", { key: '29845cfd11955ded4b43d19be3ede89d77b71fef', type: "file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl,.pub", value: "", onChange: this.handleChangeInputFile })), ((_a = this.certificateExamples) === null || _a === void 0 ? void 0 : _a.length) && (h("div", { key: 'ec2e21cdcda421bd046d42607569e90eb0a96589', class: "control_row" }, h(Typography, { key: '17850c755e70545949be4f772ec67f02eae829af', variant: "b3", color: "secondary-tint-2" }, "Load examples:"), h("select", { key: '4431af8f0dcc97fd8e26637cef8a9524a83e9519', onChange: this.handleChangeExample }, h("option", { key: 'c08edb4c2faf0f640e100cf62ae7ad07f0714cc3', value: "" }, "None"), this.certificateExamples.map((example) => (h("option", { value: example.value }, example.title)))))), h("div", { key: 'e7f7a693ef5f72ce739fe6a42d8c87345d23a743', class: "control_row" }, h(Button, { key: '7448517bf7f76af06f8a7f60d1e40360613d3acd', onClick: this.handleClickDecode }, "Decode"), h(Button, { key: 'b831592de27a3b292b2d81a19400216fbce7e797', onClick: this.handleClickClear }, "Clear"))), this.renderCertificate()));
117
117
  }
118
118
  static get is() { return "peculiar-certificate-decoder"; }
119
119
  static get encapsulation() { return "shadow"; }
@@ -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,.cert\"\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":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,SAAS,EACT,IAAI,EACJ,CAAC,EACD,KAAK,EACL,IAAI,EACJ,KAAK,GAEN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,OAAO,EACP,gBAAgB,EAChB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,MAAM,OAAO,kBAAkB;IAL/B;QA+CU,sBAAiB,GAAG,GAAG,EAAE;YAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAElC,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEM,qBAAgB,GAAG,GAAG,EAAE;YAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC;QAEF,8DAA8D;QACtD,0BAAqB,GAAG,KAAK,EAAE,KAAU,EAAE,EAAE;YACnD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;YAE7B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;gBAED,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC;QAEF,8DAA8D;QACtD,wBAAmB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC3C,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEF,8DAA8D;QACtD,mBAAc,GAAG,KAAK,EAAE,KAAU,EAAE,EAAE;YAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;YAEnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;KAqJH;IAhNC,gBAAgB;QACd,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B;;eAEG;YACH,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAsDD,UAAU;QACR,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAqC;QAClD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEhC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,EAAE;YACxC,OAAO,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC;aACC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;aACvC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;aAChD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;aAChD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;aAC/B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;aACtC,IAAI,CAAC,CAAC,GAAmC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACjE,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEnB,KAAK,CAAC,iCAAiC,KAAK,iFAAiF,CAAC,CAAC;QACjI,CAAC,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,kBAAkB,YAAY,gBAAgB,EAAE,CAAC;YACxD,OAAO,CACL,yCACE,YAAY,EAAE,IAAI,CAAC,kBAAkB,EACrC,QAAQ,SACR,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,YAAY,eAAe,EAAE,CAAC;YACvD,OAAO,CACL,mCACE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EACpC,QAAQ,SACR,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,YAAY,wBAAwB,EAAE,CAAC;YAChE,OAAO,CACL,6CACE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EACpC,QAAQ,SACR,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,YAAY,wBAAwB,EAAE,CAAC;YAChE,OAAO,CACL,2BACE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EACpC,QAAQ,SACR,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,YAAY,OAAO,EAAE,CAAC;YAC/C,OAAO,CACL,2BACE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EACpC,QAAQ,SACR,CACH,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,YAAY,cAAc,EAAE,CAAC;YACtD,OAAO,CACL,uCACE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EACpC,QAAQ,SACR,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM;;QACJ,OAAO,CACL,EAAC,IAAI;YACH,iEACE,WAAW,EAAC,wBAAwB,EACpC,KAAK,EAAC,uBAAuB,EAC7B,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,EACtC,MAAM,EAAE,IAAI,CAAC,cAAc,GAC3B;YACF,4DAAK,KAAK,EAAC,UAAU;gBACnB,4DAAK,KAAK,EAAC,aAAa;oBACtB,EAAC,UAAU,qDACT,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,kBAAkB,yBAGb;oBACb,8DACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,2IAA2I,EAClJ,KAAK,EAAC,EAAE,EACR,QAAQ,EAAE,IAAI,CAAC,qBAAqB,GACpC,CACE;gBACL,CAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAE,MAAM,KAAI,CACnC,4DAAK,KAAK,EAAC,aAAa;oBACtB,EAAC,UAAU,qDACT,OAAO,EAAC,IAAI,EACZ,KAAK,EAAC,kBAAkB,qBAGb;oBACb,+DAAQ,QAAQ,EAAE,IAAI,CAAC,mBAAmB;wBACxC,+DAAQ,KAAK,EAAC,EAAE,WAAc;wBAC7B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzC,cAAQ,KAAK,EAAE,OAAO,CAAC,KAAK,IACzB,OAAO,CAAC,KAAK,CACP,CACV,CAAC,CACK,CACL,CACP;gBACD,4DAAK,KAAK,EAAC,aAAa;oBACtB,EAAC,MAAM,qDACL,OAAO,EAAE,IAAI,CAAC,iBAAiB,aAGxB;oBACT,EAAC,MAAM,qDACL,OAAO,EAAE,IAAI,CAAC,gBAAgB,YAGvB,CACL,CACF;YACL,IAAI,CAAC,iBAAiB,EAAE,CACpB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","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"]}
@@ -17,7 +17,7 @@ export const SshMiscellaneous = (props) => {
17
17
  const { certificate } = props;
18
18
  return [
19
19
  h(RowTitle, { value: l10n.getString('miscellaneous') }),
20
- h("tr", null, h("td", null, h(Button, { startIcon: h(DownloadIcon, null), onClick: () => certificate.downloadAsSSH() }, l10n.getString('download.ssh')))),
20
+ h("tr", null, h("td", null, h(Button, { startIcon: h(DownloadIcon, null), onClick: () => certificate.downloadAsPub() }, l10n.getString('download')))),
21
21
  ];
22
22
  };
23
23
  //# sourceMappingURL=miscellaneous.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"miscellaneous.js","sourceRoot":"","sources":["../../../../src/components/ssh-certificate-viewer/-components/miscellaneous.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAuB,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAM/D,MAAM,CAAC,MAAM,gBAAgB,GAAgD,CAAC,KAAK,EAAE,EAAE;IACrF,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9B,OAAO;QACL,EAAC,QAAQ,IACP,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GACtC;QACF;YACE;gBACE,EAAC,MAAM,IACL,SAAS,EAAE,EAAC,YAAY,OAAG,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,IAEzC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CACxB,CACN,CACF;KACN,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 { SshCertificate } from '../../../crypto';\nimport { l10n } from '../../../utils';\nimport { Button } from '../../button';\nimport { DownloadIcon } from '../../icons';\nimport { RowTitle } from '../../certificate-details-parts/row';\n\ninterface ISshMiscellaneousProps {\n certificate: SshCertificate;\n}\n\nexport const SshMiscellaneous: FunctionalComponent<ISshMiscellaneousProps> = (props) => {\n const { certificate } = props;\n\n return [\n <RowTitle\n value={l10n.getString('miscellaneous')}\n />,\n <tr>\n <td>\n <Button\n startIcon={<DownloadIcon />}\n onClick={() => certificate.downloadAsSSH()}\n >\n {l10n.getString('download.ssh')}\n </Button>\n </td>\n </tr>,\n ];\n};\n"]}
1
+ {"version":3,"file":"miscellaneous.js","sourceRoot":"","sources":["../../../../src/components/ssh-certificate-viewer/-components/miscellaneous.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAuB,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAM/D,MAAM,CAAC,MAAM,gBAAgB,GAAgD,CAAC,KAAK,EAAE,EAAE;IACrF,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE9B,OAAO;QACL,EAAC,QAAQ,IACP,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,GACtC;QACF;YACE;gBACE,EAAC,MAAM,IACL,SAAS,EAAE,EAAC,YAAY,OAAG,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,IAEzC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CACpB,CACN,CACF;KACN,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 { SshCertificate } from '../../../crypto';\nimport { l10n } from '../../../utils';\nimport { Button } from '../../button';\nimport { DownloadIcon } from '../../icons';\nimport { RowTitle } from '../../certificate-details-parts/row';\n\ninterface ISshMiscellaneousProps {\n certificate: SshCertificate;\n}\n\nexport const SshMiscellaneous: FunctionalComponent<ISshMiscellaneousProps> = (props) => {\n const { certificate } = props;\n\n return [\n <RowTitle\n value={l10n.getString('miscellaneous')}\n />,\n <tr>\n <td>\n <Button\n startIcon={<DownloadIcon />}\n onClick={() => certificate.downloadAsPub()}\n >\n {l10n.getString('download')}\n </Button>\n </td>\n </tr>,\n ];\n};\n"]}
@@ -66,8 +66,8 @@ export class SshCertificate {
66
66
  get commonName() {
67
67
  return __classPrivateFieldGet(this, _SshCertificate_cert, "f").principals.join('_') || __classPrivateFieldGet(this, _SshCertificate_cert, "f").keyId || __classPrivateFieldGet(this, _SshCertificate_cert, "f").certType;
68
68
  }
69
- async downloadAsSSH(name) {
70
- Download.certSSH.asSSH(await this.toString(), name || this.commonName);
69
+ async downloadAsPub(name) {
70
+ Download.certSSH.asPub(await this.toString(), name || [this.commonName, 'cert'].join('-'));
71
71
  }
72
72
  }
73
73
  _SshCertificate_cert = new WeakMap();
@@ -1 +1 @@
1
- {"version":3,"file":"ssh_certificate.js","sourceRoot":"","sources":["../../src/crypto/ssh_certificate.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,OAAO,cAAc;IAmCzB,YAAY,GAAW;QAFvB,uCAA0B;QAGxB,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1C,6DAA6D;QAC7D,uBAAA,IAAI,wBAAS,IAAI,kBAAkB,CAAC,IAAI,CAAuB,MAAA,CAAC;QAEhE,IAAI,CAAC,SAAS,GAAG,uBAAA,IAAI,4BAAM,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,uBAAA,IAAI,4BAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,CAAC,uBAAA,IAAI,4BAAM,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAA,IAAI,4BAAM,CAAC,QAAQ,EAAE,uBAAA,IAAI,4BAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,GAAG,uBAAA,IAAI,4BAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,uBAAA,IAAI,4BAAM,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,uBAAA,IAAI,4BAAM,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,uBAAA,IAAI,4BAAM,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,uBAAA,IAAI,4BAAM,CAAC,eAAe,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC5B,MAAM,GAAG,GAAG,MAAM,uBAAA,IAAI,4BAAM,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,uBAAA,IAAI,4BAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,uBAAA,IAAI,4BAAM,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEtE,IAAI,CAAC,YAAY,GAAG;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,uBAAA,IAAI,4BAAM,CAAC,YAAY,CAAC,KAAK,EAAE;YAC5C,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;SACzC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,GAAG,GAAG,MAAM,uBAAA,IAAI,4BAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,uBAAA,IAAI,4BAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,uBAAA,IAAI,4BAAM,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEnE,IAAI,CAAC,SAAS,GAAG;YACf,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,MAAM,uBAAA,IAAI,4BAAM,CAAC,SAAS,CAAC,KAAK,EAAE;YACzC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,6DAA6D;IACtD,KAAK,CAAC,QAAQ,CAAC,UAA0C,KAAK;QACnE,OAAO,uBAAA,IAAI,4BAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,uBAAA,IAAI,4BAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,uBAAA,IAAI,4BAAM,CAAC,KAAK,IAAI,uBAAA,IAAI,4BAAM,CAAC,QAAQ,CAAC;IACpF,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAAa;QACtC,QAAQ,CAAC,OAAO,CAAC,KAAK,CACpB,MAAM,IAAI,CAAC,QAAQ,EAAE,EACrB,IAAI,IAAI,IAAI,CAAC,UAAU,CACxB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { SshCertificate as SshCertificateType, parseCertificate } from '@peculiar/ssh';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\n\nexport class SshCertificate {\n public readonly serialNumber: string;\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public readonly type: string;\n\n public readonly keyId: string;\n\n public readonly principals: string[];\n\n public readonly extensions: Record<string, string>;\n\n public readonly criticalOptions: Record<string, string>;\n\n public signatureKey: {\n algorithm: string;\n type: string;\n value: string;\n thumbprint: string;\n };\n\n public publicKey: {\n algorithm: string;\n type: string;\n value: string;\n thumbprint: string;\n };\n\n #cert: SshCertificateType;\n\n constructor(raw: string) {\n const blob = parseCertificate(raw.trim());\n\n // @ts-expect-error - SshCertificateType is not a constructor\n this.#cert = new SshCertificateType(blob) as SshCertificateType;\n\n this.notBefore = this.#cert.validAfter;\n this.notAfter = this.#cert.validBefore;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n this.type = [this.#cert.blob.type, this.#cert.certType, this.#cert.type].join(' ');\n this.serialNumber = this.#cert.serial.toString();\n this.keyId = this.#cert.keyId;\n this.principals = this.#cert.principals;\n this.extensions = this.#cert.extensions;\n this.criticalOptions = this.#cert.criticalOptions;\n }\n\n public async parseSignatureKey() {\n const key = await this.#cert.signatureKey.toWebCrypto();\n const blob = this.#cert.signatureKey.getBlob();\n const thumbprint = await this.#cert.signatureKey.thumbprint('sha256');\n\n this.signatureKey = {\n algorithm: key.algorithm.name,\n type: blob.type,\n value: await this.#cert.signatureKey.toSSH(),\n thumbprint: Convert.ToBase64(thumbprint),\n };\n }\n\n public async parsePublicKey() {\n const key = await this.#cert.publicKey.toWebCrypto();\n const blob = this.#cert.publicKey.getBlob();\n const thumbprint = await this.#cert.publicKey.thumbprint('sha256');\n\n this.publicKey = {\n algorithm: key.algorithm.name,\n type: blob.type,\n value: await this.#cert.publicKey.toSSH(),\n thumbprint: Convert.ToBase64(thumbprint),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public async toString(_format: 'pem' | 'base64' | 'base64url' = 'pem') {\n return this.#cert.toSSH();\n }\n\n public get commonName(): string {\n return this.#cert.principals.join('_') || this.#cert.keyId || this.#cert.certType;\n }\n\n public async downloadAsSSH(name?: string) {\n Download.certSSH.asSSH(\n await this.toString(),\n name || this.commonName,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ssh_certificate.js","sourceRoot":"","sources":["../../src/crypto/ssh_certificate.ts"],"names":[],"mappings":"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","sourcesContent":["import { SshCertificate as SshCertificateType, parseCertificate } from '@peculiar/ssh';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\n\nexport class SshCertificate {\n public readonly serialNumber: string;\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public readonly type: string;\n\n public readonly keyId: string;\n\n public readonly principals: string[];\n\n public readonly extensions: Record<string, string>;\n\n public readonly criticalOptions: Record<string, string>;\n\n public signatureKey: {\n algorithm: string;\n type: string;\n value: string;\n thumbprint: string;\n };\n\n public publicKey: {\n algorithm: string;\n type: string;\n value: string;\n thumbprint: string;\n };\n\n #cert: SshCertificateType;\n\n constructor(raw: string) {\n const blob = parseCertificate(raw.trim());\n\n // @ts-expect-error - SshCertificateType is not a constructor\n this.#cert = new SshCertificateType(blob) as SshCertificateType;\n\n this.notBefore = this.#cert.validAfter;\n this.notAfter = this.#cert.validBefore;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n this.type = [this.#cert.blob.type, this.#cert.certType, this.#cert.type].join(' ');\n this.serialNumber = this.#cert.serial.toString();\n this.keyId = this.#cert.keyId;\n this.principals = this.#cert.principals;\n this.extensions = this.#cert.extensions;\n this.criticalOptions = this.#cert.criticalOptions;\n }\n\n public async parseSignatureKey() {\n const key = await this.#cert.signatureKey.toWebCrypto();\n const blob = this.#cert.signatureKey.getBlob();\n const thumbprint = await this.#cert.signatureKey.thumbprint('sha256');\n\n this.signatureKey = {\n algorithm: key.algorithm.name,\n type: blob.type,\n value: await this.#cert.signatureKey.toSSH(),\n thumbprint: Convert.ToBase64(thumbprint),\n };\n }\n\n public async parsePublicKey() {\n const key = await this.#cert.publicKey.toWebCrypto();\n const blob = this.#cert.publicKey.getBlob();\n const thumbprint = await this.#cert.publicKey.thumbprint('sha256');\n\n this.publicKey = {\n algorithm: key.algorithm.name,\n type: blob.type,\n value: await this.#cert.publicKey.toSSH(),\n thumbprint: Convert.ToBase64(thumbprint),\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public async toString(_format: 'pem' | 'base64' | 'base64url' = 'pem') {\n return this.#cert.toSSH();\n }\n\n public get commonName(): string {\n return this.#cert.principals.join('_') || this.#cert.keyId || this.#cert.certType;\n }\n\n public async downloadAsPub(name?: string) {\n Download.certSSH.asPub(\n await this.toString(),\n name || [this.commonName, 'cert'].join('-'),\n );\n }\n}\n"]}
@@ -9,7 +9,6 @@
9
9
  "download": "Download",
10
10
  "download.pem": "Download PEM",
11
11
  "download.der": "Download DER",
12
- "download.ssh": "Download SSH",
13
12
  "serialNumber": "Serial Number",
14
13
  "version": "Version",
15
14
  "validity": "Validity",
@@ -46,8 +46,8 @@ Download.crl = {
46
46
  },
47
47
  };
48
48
  Download.certSSH = {
49
- asSSH: (value, name) => {
50
- downloadFromBuffer(Convert.FromString(value), name, 'cert', 'application/ssh-cert');
49
+ asPub: (value, name) => {
50
+ downloadFromBuffer(Convert.FromString(value), name, 'pub', 'text/plain');
51
51
  },
52
52
  };
53
53
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/utils/download.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,kEAAkE;AAClE,MAAM,OAAO,QAAQ;;AACL,aAAI,GAAG;IACnB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,uBAAuB,CACxB,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,iBAAQ,GAAG;IACvB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,4BAA4B,CAC7B,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,YAAG,GAAG;IAClB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,oBAAoB,CACrB,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,YAAG,GAAG;IAClB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,sBAAsB,CACvB,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,gBAAO,GAAG;IACtB,KAAK,EAAE,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QACrC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EACzB,IAAI,EACJ,MAAM,EACN,sBAAsB,CACvB,CAAC;IACJ,CAAC;CACF,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 { Convert } from 'pvtsutils';\nimport { downloadFromBuffer } from './download_from_buffer';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class Download {\n public static cert = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'cer',\n 'application/pkix-cert',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'cer',\n 'application/pkix-cert',\n );\n },\n };\n\n public static attrCert = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'cer',\n 'application/pkix-attr-cert',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'cer',\n 'application/pkix-attr-cert',\n );\n },\n };\n\n public static csr = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'csr',\n 'application/pkcs10',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'csr',\n 'application/pkcs10',\n );\n },\n };\n\n public static crl = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'crl',\n 'application/pkix-crl',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'crl',\n 'application/pkix-crl',\n );\n },\n };\n\n public static certSSH = {\n asSSH: (value: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(value),\n name,\n 'cert',\n 'application/ssh-cert',\n );\n },\n };\n}\n"]}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/utils/download.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,kEAAkE;AAClE,MAAM,OAAO,QAAQ;;AACL,aAAI,GAAG;IACnB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,uBAAuB,CACxB,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,iBAAQ,GAAG;IACvB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,4BAA4B,CAC7B,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,YAAG,GAAG;IAClB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,oBAAoB,CACrB,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,YAAG,GAAG;IAClB,KAAK,EAAE,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;QACnC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,EAAE,CAAC,GAAgB,EAAE,IAAY,EAAE,EAAE;QACxC,kBAAkB,CAChB,GAAG,EACH,IAAI,EACJ,KAAK,EACL,sBAAsB,CACvB,CAAC;IACJ,CAAC;CACF,CAAC;AAEY,gBAAO,GAAG;IACtB,KAAK,EAAE,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QACrC,kBAAkB,CAChB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,YAAY,CACb,CAAC;IACJ,CAAC;CACF,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 { Convert } from 'pvtsutils';\nimport { downloadFromBuffer } from './download_from_buffer';\n\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class Download {\n public static cert = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'cer',\n 'application/pkix-cert',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'cer',\n 'application/pkix-cert',\n );\n },\n };\n\n public static attrCert = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'cer',\n 'application/pkix-attr-cert',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'cer',\n 'application/pkix-attr-cert',\n );\n },\n };\n\n public static csr = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'csr',\n 'application/pkcs10',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'csr',\n 'application/pkcs10',\n );\n },\n };\n\n public static crl = {\n asPEM: (pem: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(pem),\n name,\n 'crl',\n 'application/pkix-crl',\n );\n },\n\n asDER: (raw: ArrayBuffer, name: string) => {\n downloadFromBuffer(\n raw,\n name,\n 'crl',\n 'application/pkix-crl',\n );\n },\n };\n\n public static certSSH = {\n asPub: (value: string, name: string) => {\n downloadFromBuffer(\n Convert.FromString(value),\n name,\n 'pub',\n 'text/plain',\n );\n },\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
- import { a0 as OctetString, a1 as ByteStream, a2 as SignedCertificateTimestamp, A as AsnData, a3 as Extension$1, q as AsnParser, a4 as CabforganizationIdentifier, a5 as NonStandardKeyDescription, a6 as BaseCRLNumber, a7 as CRLNumber, a8 as SubjectInfoAccessSyntax, a9 as TNAuthorizationList, aa as LogotypeExtn, ab as BiometricSyntax, ac as EntrustVersionInfo, ad as PrivateKeyUsagePeriod, ae as ArchiveRevInfo, af as Timestamp, ag as LeiRole, ah as LeiChoice, ai as CaVersion, aj as NetscapeCertType, ak as NetscapeComment, al as EnrollCertTypeChoice, am as CertificateTemplate, an as QCStatements, ao as SubjectKeyIdentifier, ap as SubjectDirectoryAttributes, aq as SubjectAlternativeName, ar as PolicyMappings, as as PolicyConstraints, at as NameConstraints, au as KeyUsage, av as IssueAlternativeName, aw as InvalidityDate, ax as InhibitAnyPolicy, ay as ExtendedKeyUsage, az as CRLReason, aA as IssuingDistributionPoint, aB as CRLDistributionPoints, aC as CertificatePolicies, aD as CertificateIssuer, aE as BasicConstraints, aF as AuthorityKeyIdentifier, aG as AuthorityInfoAccessSyntax, b as buildExports, aH as id_cabforganizationIdentifier, aI as id_ce_keyDescription, aJ as id_ce_deltaCRLIndicator, aK as id_ce_cRLNumber, aL as id_pe_subjectInfoAccess, aM as id_pe_TNAuthList, aN as id_pe_biometricInfo, aO as id_entrust_entrustVersInfo, aP as id_ce_privateKeyUsagePeriod, aQ as id_adbe_archiveRevInfo, aR as id_adbe_timestamp, aS as id_role, aT as id_lei, aU as id_caVersion, aV as id_netscapeCertType, aW as id_netscapeComment, aX as id_enrollCertType, aY as id_certificateTemplate, aZ as id_pe_qcStatements, a_ as id_ce_subjectKeyIdentifier, a$ as id_ce_subjectDirectoryAttributes, b0 as id_ce_subjectAltName, b1 as id_ce_policyMappings, b2 as id_ce_policyConstraints, b3 as id_ce_nameConstraints, b4 as id_ce_keyUsage, b5 as id_ce_issuerAltName, b6 as id_ce_invalidityDate, b7 as id_ce_inhibitAnyPolicy, b8 as id_ce_extKeyUsage, b9 as id_ce_cRLReasons, ba as id_ce_issuingDistributionPoint, bb as id_ce_cRLDistributionPoints, bc as id_ce_certificatePolicies, bd as id_ce_certificateIssuer, be as id_ce_basicConstraints, bf as id_ce_authorityKeyIdentifier, bg as id_pe_authorityInfoAccess } from './ssh_certificate-PCn0WXhQ.js';
4
+ import { a0 as OctetString, a1 as ByteStream, a2 as SignedCertificateTimestamp, A as AsnData, a3 as Extension$1, q as AsnParser, a4 as CabforganizationIdentifier, a5 as NonStandardKeyDescription, a6 as BaseCRLNumber, a7 as CRLNumber, a8 as SubjectInfoAccessSyntax, a9 as TNAuthorizationList, aa as LogotypeExtn, ab as BiometricSyntax, ac as EntrustVersionInfo, ad as PrivateKeyUsagePeriod, ae as ArchiveRevInfo, af as Timestamp, ag as LeiRole, ah as LeiChoice, ai as CaVersion, aj as NetscapeCertType, ak as NetscapeComment, al as EnrollCertTypeChoice, am as CertificateTemplate, an as QCStatements, ao as SubjectKeyIdentifier, ap as SubjectDirectoryAttributes, aq as SubjectAlternativeName, ar as PolicyMappings, as as PolicyConstraints, at as NameConstraints, au as KeyUsage, av as IssueAlternativeName, aw as InvalidityDate, ax as InhibitAnyPolicy, ay as ExtendedKeyUsage, az as CRLReason, aA as IssuingDistributionPoint, aB as CRLDistributionPoints, aC as CertificatePolicies, aD as CertificateIssuer, aE as BasicConstraints, aF as AuthorityKeyIdentifier, aG as AuthorityInfoAccessSyntax, b as buildExports, aH as id_cabforganizationIdentifier, aI as id_ce_keyDescription, aJ as id_ce_deltaCRLIndicator, aK as id_ce_cRLNumber, aL as id_pe_subjectInfoAccess, aM as id_pe_TNAuthList, aN as id_pe_biometricInfo, aO as id_entrust_entrustVersInfo, aP as id_ce_privateKeyUsagePeriod, aQ as id_adbe_archiveRevInfo, aR as id_adbe_timestamp, aS as id_role, aT as id_lei, aU as id_caVersion, aV as id_netscapeCertType, aW as id_netscapeComment, aX as id_enrollCertType, aY as id_certificateTemplate, aZ as id_pe_qcStatements, a_ as id_ce_subjectKeyIdentifier, a$ as id_ce_subjectDirectoryAttributes, b0 as id_ce_subjectAltName, b1 as id_ce_policyMappings, b2 as id_ce_policyConstraints, b3 as id_ce_nameConstraints, b4 as id_ce_keyUsage, b5 as id_ce_issuerAltName, b6 as id_ce_invalidityDate, b7 as id_ce_inhibitAnyPolicy, b8 as id_ce_extKeyUsage, b9 as id_ce_cRLReasons, ba as id_ce_issuingDistributionPoint, bb as id_ce_cRLDistributionPoints, bc as id_ce_certificatePolicies, bd as id_ce_certificateIssuer, be as id_ce_basicConstraints, bf as id_ce_authorityKeyIdentifier, bg as id_pe_authorityInfoAccess } from './ssh_certificate-rmToyzuK.js';
5
5
 
6
6
  const id_certificateTransparency = "1.3.6.1.4.1.11129.2.4.2";
7
7
  class CertificateTransparency extends OctetString {
@@ -102,6 +102,6 @@ class Extension extends AsnData {
102
102
  }
103
103
 
104
104
  export { CertificateTransparency as C, Extension as E };
105
- //# sourceMappingURL=extension-DmlhftES.js.map
105
+ //# sourceMappingURL=extension-B3br1_Py.js.map
106
106
 
107
- //# sourceMappingURL=extension-DmlhftES.js.map
107
+ //# sourceMappingURL=extension-B3br1_Py.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-DmlhftES.js","sources":["../../node_modules/.pnpm/@peculiar+asn1-cert-transparency@2.4.0/node_modules/@peculiar/asn1-cert-transparency/build/es2015/cert_transparency.js","../../node_modules/.pnpm/@peculiar+asn1-x509-logotype@2.4.0/node_modules/@peculiar/asn1-x509-logotype/build/es2015/object_identifiers.js","src/crypto/extension.ts"],"sourcesContent":["import { OctetString } from \"@peculiar/asn1-schema\";\nimport { SignedCertificateTimestamp } from \"./timestamp\";\nimport { ByteStream } from \"./byte_stream\";\nexport const id_certificateTransparency = \"1.3.6.1.4.1.11129.2.4.2\";\nexport class CertificateTransparency extends OctetString {\n constructor() {\n super(...arguments);\n this.items = [];\n }\n fromASN(asn) {\n super.fromASN(asn);\n const stream = new ByteStream(this.buffer);\n const len = stream.readNumber(2);\n this.items = [];\n while (stream.position < len) {\n this.items.push(new SignedCertificateTimestamp(stream));\n }\n return this;\n }\n toJSON() {\n return this.items.map((o) => o.toJSON());\n }\n}\n","import { id_pkix } from \"@peculiar/asn1-x509\";\nexport const id_pe_logotype = \"1.3.6.1.5.5.7.1.12\";\nexport const id_logo = `${id_pkix}.20`;\nexport const id_logo_loyalty = `${id_logo}.1`;\nexport const id_logo_background = `${id_logo}.2`;\nexport const id_logo_certImage = `${id_logo}.3`;\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 */\n\nimport { Convert } from 'pvtsutils';\nimport {\n Extension as AsnExtension,\n\n id_pe_authorityInfoAccess,\n AuthorityInfoAccessSyntax,\n\n id_ce_authorityKeyIdentifier,\n AuthorityKeyIdentifier,\n\n id_ce_basicConstraints,\n BasicConstraints,\n\n id_ce_certificateIssuer,\n CertificateIssuer,\n\n id_ce_certificatePolicies,\n CertificatePolicies,\n\n id_ce_cRLDistributionPoints,\n CRLDistributionPoints,\n\n id_ce_issuingDistributionPoint,\n IssuingDistributionPoint,\n\n id_ce_cRLReasons,\n CRLReason,\n\n id_ce_extKeyUsage,\n ExtendedKeyUsage,\n\n id_ce_inhibitAnyPolicy,\n InhibitAnyPolicy,\n\n id_ce_invalidityDate,\n InvalidityDate,\n\n id_ce_issuerAltName,\n IssueAlternativeName,\n\n id_ce_keyUsage,\n KeyUsage,\n\n id_ce_nameConstraints,\n NameConstraints,\n\n id_ce_policyConstraints,\n PolicyConstraints,\n\n id_ce_policyMappings,\n PolicyMappings,\n\n id_ce_subjectAltName,\n SubjectAlternativeName,\n\n id_ce_subjectDirectoryAttributes,\n SubjectDirectoryAttributes,\n\n id_ce_subjectKeyIdentifier,\n SubjectKeyIdentifier,\n\n id_ce_privateKeyUsagePeriod,\n PrivateKeyUsagePeriod,\n\n id_entrust_entrustVersInfo,\n EntrustVersionInfo,\n\n id_pe_subjectInfoAccess,\n SubjectInfoAccessSyntax,\n\n id_ce_cRLNumber,\n CRLNumber,\n\n id_ce_deltaCRLIndicator,\n BaseCRLNumber,\n} from '@peculiar/asn1-x509';\nimport {\n id_pe_qcStatements,\n QCStatements,\n\n id_pe_biometricInfo,\n BiometricSyntax,\n} from '@peculiar/asn1-x509-qualified';\nimport {\n id_certificateTemplate,\n CertificateTemplate,\n\n id_enrollCertType,\n EnrollCertTypeChoice,\n\n id_caVersion,\n CaVersion,\n} from '@peculiar/asn1-x509-microsoft';\nimport {\n id_netscapeComment,\n NetscapeComment,\n\n id_netscapeCertType,\n NetscapeCertType,\n} from '@peculiar/asn1-x509-netscape';\nimport { AsnParser } from '@peculiar/asn1-schema';\nimport {\n id_lei,\n LeiChoice,\n\n id_role,\n LeiRole,\n} from '@peculiar/asn1-lei';\nimport {\n id_certificateTransparency,\n CertificateTransparency,\n} from '@peculiar/asn1-cert-transparency';\nimport {\n id_adbe_timestamp,\n Timestamp,\n\n id_adbe_archiveRevInfo,\n ArchiveRevInfo,\n} from '@peculiar/asn1-adobe-acrobat';\nimport {\n id_pe_logotype,\n LogotypeExtn,\n} from '@peculiar/asn1-x509-logotype';\nimport {\n id_pe_TNAuthList,\n TNAuthorizationList,\n} from '@peculiar/asn1-rfc8226';\nimport {\n id_ce_keyDescription,\n NonStandardKeyDescription,\n} from '@peculiar/asn1-android';\nimport {\n id_cabforganizationIdentifier,\n CabforganizationIdentifier,\n} from './extensions';\nimport { AsnData } from './asn_data';\n\nconst extensionParsers = {\n [id_pe_authorityInfoAccess]: AuthorityInfoAccessSyntax,\n [id_ce_authorityKeyIdentifier]: AuthorityKeyIdentifier,\n [id_ce_basicConstraints]: BasicConstraints,\n [id_ce_certificateIssuer]: CertificateIssuer,\n [id_ce_certificatePolicies]: CertificatePolicies,\n [id_ce_cRLDistributionPoints]: CRLDistributionPoints,\n '2.5.29.46': CRLDistributionPoints,\n [id_ce_issuingDistributionPoint]: IssuingDistributionPoint,\n [id_ce_cRLReasons]: CRLReason,\n [id_ce_extKeyUsage]: ExtendedKeyUsage,\n [id_ce_inhibitAnyPolicy]: InhibitAnyPolicy,\n [id_ce_invalidityDate]: InvalidityDate,\n [id_ce_issuerAltName]: IssueAlternativeName,\n [id_ce_keyUsage]: KeyUsage,\n [id_ce_nameConstraints]: NameConstraints,\n [id_ce_policyConstraints]: PolicyConstraints,\n [id_ce_policyMappings]: PolicyMappings,\n [id_ce_subjectAltName]: SubjectAlternativeName,\n [id_ce_subjectDirectoryAttributes]: SubjectDirectoryAttributes,\n [id_ce_subjectKeyIdentifier]: SubjectKeyIdentifier,\n [id_pe_qcStatements]: QCStatements,\n [id_certificateTemplate]: CertificateTemplate,\n [id_enrollCertType]: EnrollCertTypeChoice,\n [id_netscapeComment]: NetscapeComment,\n [id_netscapeCertType]: NetscapeCertType,\n [id_caVersion]: CaVersion,\n [id_certificateTransparency]: CertificateTransparency,\n [id_lei]: LeiChoice,\n [id_role]: LeiRole,\n [id_adbe_timestamp]: Timestamp,\n [id_adbe_archiveRevInfo]: ArchiveRevInfo,\n [id_ce_privateKeyUsagePeriod]: PrivateKeyUsagePeriod,\n [id_entrust_entrustVersInfo]: EntrustVersionInfo,\n '2.16.724.1.2.2.4.1': BiometricSyntax,\n [id_pe_biometricInfo]: BiometricSyntax,\n [id_pe_logotype]: LogotypeExtn,\n [id_pe_TNAuthList]: TNAuthorizationList,\n [id_pe_subjectInfoAccess]: SubjectInfoAccessSyntax,\n [id_ce_cRLNumber]: CRLNumber,\n [id_ce_deltaCRLIndicator]: BaseCRLNumber,\n [id_ce_keyDescription]: NonStandardKeyDescription,\n [id_cabforganizationIdentifier]: CabforganizationIdentifier,\n};\n\ntype TExtensionKeys = keyof typeof extensionParsers;\n\nexport type TExtensionValue = InstanceType<typeof extensionParsers[TExtensionKeys]> | string;\n\nexport class Extension<T extends TExtensionValue> extends AsnData<AsnExtension> {\n public readonly value: T;\n\n private getAsnExtnValue() {\n return this.asn.extnValue.buffer;\n }\n\n constructor(raw: BufferSource) {\n super(raw, AsnExtension);\n\n const asnExtnValue = this.getAsnExtnValue();\n\n try {\n const target = extensionParsers[this.asn.extnID];\n\n if (target) {\n this.value = AsnParser.parse<T>(asnExtnValue, target);\n } else {\n console.warn(`Didn't detect parser for \"${this.asn.extnID}\" extension.`);\n\n this.value = Convert.ToHex(asnExtnValue) as T;\n }\n } catch (error) {\n console.error(`Error parse \"${this.asn.extnID}\" extension:`, error.message);\n\n this.value = Convert.ToHex(asnExtnValue) as T;\n }\n }\n}\n"],"names":["AsnExtension","Convert"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"extension-B3br1_Py.js","sources":["../../node_modules/.pnpm/@peculiar+asn1-cert-transparency@2.4.0/node_modules/@peculiar/asn1-cert-transparency/build/es2015/cert_transparency.js","../../node_modules/.pnpm/@peculiar+asn1-x509-logotype@2.4.0/node_modules/@peculiar/asn1-x509-logotype/build/es2015/object_identifiers.js","src/crypto/extension.ts"],"sourcesContent":["import { OctetString } from \"@peculiar/asn1-schema\";\nimport { SignedCertificateTimestamp } from \"./timestamp\";\nimport { ByteStream } from \"./byte_stream\";\nexport const id_certificateTransparency = \"1.3.6.1.4.1.11129.2.4.2\";\nexport class CertificateTransparency extends OctetString {\n constructor() {\n super(...arguments);\n this.items = [];\n }\n fromASN(asn) {\n super.fromASN(asn);\n const stream = new ByteStream(this.buffer);\n const len = stream.readNumber(2);\n this.items = [];\n while (stream.position < len) {\n this.items.push(new SignedCertificateTimestamp(stream));\n }\n return this;\n }\n toJSON() {\n return this.items.map((o) => o.toJSON());\n }\n}\n","import { id_pkix } from \"@peculiar/asn1-x509\";\nexport const id_pe_logotype = \"1.3.6.1.5.5.7.1.12\";\nexport const id_logo = `${id_pkix}.20`;\nexport const id_logo_loyalty = `${id_logo}.1`;\nexport const id_logo_background = `${id_logo}.2`;\nexport const id_logo_certImage = `${id_logo}.3`;\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 */\n\nimport { Convert } from 'pvtsutils';\nimport {\n Extension as AsnExtension,\n\n id_pe_authorityInfoAccess,\n AuthorityInfoAccessSyntax,\n\n id_ce_authorityKeyIdentifier,\n AuthorityKeyIdentifier,\n\n id_ce_basicConstraints,\n BasicConstraints,\n\n id_ce_certificateIssuer,\n CertificateIssuer,\n\n id_ce_certificatePolicies,\n CertificatePolicies,\n\n id_ce_cRLDistributionPoints,\n CRLDistributionPoints,\n\n id_ce_issuingDistributionPoint,\n IssuingDistributionPoint,\n\n id_ce_cRLReasons,\n CRLReason,\n\n id_ce_extKeyUsage,\n ExtendedKeyUsage,\n\n id_ce_inhibitAnyPolicy,\n InhibitAnyPolicy,\n\n id_ce_invalidityDate,\n InvalidityDate,\n\n id_ce_issuerAltName,\n IssueAlternativeName,\n\n id_ce_keyUsage,\n KeyUsage,\n\n id_ce_nameConstraints,\n NameConstraints,\n\n id_ce_policyConstraints,\n PolicyConstraints,\n\n id_ce_policyMappings,\n PolicyMappings,\n\n id_ce_subjectAltName,\n SubjectAlternativeName,\n\n id_ce_subjectDirectoryAttributes,\n SubjectDirectoryAttributes,\n\n id_ce_subjectKeyIdentifier,\n SubjectKeyIdentifier,\n\n id_ce_privateKeyUsagePeriod,\n PrivateKeyUsagePeriod,\n\n id_entrust_entrustVersInfo,\n EntrustVersionInfo,\n\n id_pe_subjectInfoAccess,\n SubjectInfoAccessSyntax,\n\n id_ce_cRLNumber,\n CRLNumber,\n\n id_ce_deltaCRLIndicator,\n BaseCRLNumber,\n} from '@peculiar/asn1-x509';\nimport {\n id_pe_qcStatements,\n QCStatements,\n\n id_pe_biometricInfo,\n BiometricSyntax,\n} from '@peculiar/asn1-x509-qualified';\nimport {\n id_certificateTemplate,\n CertificateTemplate,\n\n id_enrollCertType,\n EnrollCertTypeChoice,\n\n id_caVersion,\n CaVersion,\n} from '@peculiar/asn1-x509-microsoft';\nimport {\n id_netscapeComment,\n NetscapeComment,\n\n id_netscapeCertType,\n NetscapeCertType,\n} from '@peculiar/asn1-x509-netscape';\nimport { AsnParser } from '@peculiar/asn1-schema';\nimport {\n id_lei,\n LeiChoice,\n\n id_role,\n LeiRole,\n} from '@peculiar/asn1-lei';\nimport {\n id_certificateTransparency,\n CertificateTransparency,\n} from '@peculiar/asn1-cert-transparency';\nimport {\n id_adbe_timestamp,\n Timestamp,\n\n id_adbe_archiveRevInfo,\n ArchiveRevInfo,\n} from '@peculiar/asn1-adobe-acrobat';\nimport {\n id_pe_logotype,\n LogotypeExtn,\n} from '@peculiar/asn1-x509-logotype';\nimport {\n id_pe_TNAuthList,\n TNAuthorizationList,\n} from '@peculiar/asn1-rfc8226';\nimport {\n id_ce_keyDescription,\n NonStandardKeyDescription,\n} from '@peculiar/asn1-android';\nimport {\n id_cabforganizationIdentifier,\n CabforganizationIdentifier,\n} from './extensions';\nimport { AsnData } from './asn_data';\n\nconst extensionParsers = {\n [id_pe_authorityInfoAccess]: AuthorityInfoAccessSyntax,\n [id_ce_authorityKeyIdentifier]: AuthorityKeyIdentifier,\n [id_ce_basicConstraints]: BasicConstraints,\n [id_ce_certificateIssuer]: CertificateIssuer,\n [id_ce_certificatePolicies]: CertificatePolicies,\n [id_ce_cRLDistributionPoints]: CRLDistributionPoints,\n '2.5.29.46': CRLDistributionPoints,\n [id_ce_issuingDistributionPoint]: IssuingDistributionPoint,\n [id_ce_cRLReasons]: CRLReason,\n [id_ce_extKeyUsage]: ExtendedKeyUsage,\n [id_ce_inhibitAnyPolicy]: InhibitAnyPolicy,\n [id_ce_invalidityDate]: InvalidityDate,\n [id_ce_issuerAltName]: IssueAlternativeName,\n [id_ce_keyUsage]: KeyUsage,\n [id_ce_nameConstraints]: NameConstraints,\n [id_ce_policyConstraints]: PolicyConstraints,\n [id_ce_policyMappings]: PolicyMappings,\n [id_ce_subjectAltName]: SubjectAlternativeName,\n [id_ce_subjectDirectoryAttributes]: SubjectDirectoryAttributes,\n [id_ce_subjectKeyIdentifier]: SubjectKeyIdentifier,\n [id_pe_qcStatements]: QCStatements,\n [id_certificateTemplate]: CertificateTemplate,\n [id_enrollCertType]: EnrollCertTypeChoice,\n [id_netscapeComment]: NetscapeComment,\n [id_netscapeCertType]: NetscapeCertType,\n [id_caVersion]: CaVersion,\n [id_certificateTransparency]: CertificateTransparency,\n [id_lei]: LeiChoice,\n [id_role]: LeiRole,\n [id_adbe_timestamp]: Timestamp,\n [id_adbe_archiveRevInfo]: ArchiveRevInfo,\n [id_ce_privateKeyUsagePeriod]: PrivateKeyUsagePeriod,\n [id_entrust_entrustVersInfo]: EntrustVersionInfo,\n '2.16.724.1.2.2.4.1': BiometricSyntax,\n [id_pe_biometricInfo]: BiometricSyntax,\n [id_pe_logotype]: LogotypeExtn,\n [id_pe_TNAuthList]: TNAuthorizationList,\n [id_pe_subjectInfoAccess]: SubjectInfoAccessSyntax,\n [id_ce_cRLNumber]: CRLNumber,\n [id_ce_deltaCRLIndicator]: BaseCRLNumber,\n [id_ce_keyDescription]: NonStandardKeyDescription,\n [id_cabforganizationIdentifier]: CabforganizationIdentifier,\n};\n\ntype TExtensionKeys = keyof typeof extensionParsers;\n\nexport type TExtensionValue = InstanceType<typeof extensionParsers[TExtensionKeys]> | string;\n\nexport class Extension<T extends TExtensionValue> extends AsnData<AsnExtension> {\n public readonly value: T;\n\n private getAsnExtnValue() {\n return this.asn.extnValue.buffer;\n }\n\n constructor(raw: BufferSource) {\n super(raw, AsnExtension);\n\n const asnExtnValue = this.getAsnExtnValue();\n\n try {\n const target = extensionParsers[this.asn.extnID];\n\n if (target) {\n this.value = AsnParser.parse<T>(asnExtnValue, target);\n } else {\n console.warn(`Didn't detect parser for \"${this.asn.extnID}\" extension.`);\n\n this.value = Convert.ToHex(asnExtnValue) as T;\n }\n } catch (error) {\n console.error(`Error parse \"${this.asn.extnID}\" extension:`, error.message);\n\n this.value = Convert.ToHex(asnExtnValue) as T;\n }\n }\n}\n"],"names":["AsnExtension","Convert"],"mappings":"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","x_google_ignoreList":[0,1]}
package/dist/esm/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /*!
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
- export { D as Download, d as downloadFromBuffer } from './ssh_certificate-PCn0WXhQ.js';
4
+ export { D as Download, d as downloadFromBuffer } from './ssh_certificate-rmToyzuK.js';
5
5
  export { r as readAsArrayBuffer, a as readAsBinaryString, b as readAsDataUrl, c as readAsText } from './read_file-F2F0McJX.js';
6
- export { P as Pkcs10CertificateRequest } from './pkcs10_certificate_request-B5C1NYFc.js';
6
+ export { P as Pkcs10CertificateRequest } from './pkcs10_certificate_request-HIoLPXGQ.js';
7
7
  export { B as Button, T as Typography } from './button-Bbh7MwG6.js';
8
8
  export { L as Link } from './link-CGURvKy1.js';
9
9
  export { C as CrossIcon, D as DetailsIcon, L as LinkIcon } from './cross-G84H_-QL.js';
@@ -2,9 +2,9 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { h } from './index-CwgZaF40.js';
5
- import { $ as OIDs, Z as l10n, _ as dateShort, b as buildExports, bn as Name$1, bo as OtherName, q as AsnParser, bp as DisplayText, bq as UserNotice, br as EDIPartyName, bs as __decorate, bt as AsnProp, bu as AsnPropTypes, bv as AsnType, bw as AsnTypeTypes, bx as AsnArray, by as id_qcs_pkixQCSyntax_v2, bz as SemanticsInformation, bA as AsnIntegerArrayBufferConverter, bB as AttestationApplicationId, bC as RootOfTrust, bD as IntegerSet, au as KeyUsage, aE as BasicConstraints, ay as ExtendedKeyUsage, ao as SubjectKeyIdentifier, aF as AuthorityKeyIdentifier, aB as CRLDistributionPoints, aG as AuthorityInfoAccessSyntax, a8 as SubjectInfoAccessSyntax, aq as SubjectAlternativeName, aC as CertificatePolicies, at as NameConstraints, am as CertificateTemplate, al as EnrollCertTypeChoice, ai as CaVersion, an as QCStatements, ak as NetscapeComment, aj as NetscapeCertType, ag as LeiRole, ah as LeiChoice, af as Timestamp, ae as ArchiveRevInfo, az as CRLReason, ap as SubjectDirectoryAttributes, ad as PrivateKeyUsagePeriod, ac as EntrustVersionInfo, ab as BiometricSyntax, aa as LogotypeExtn, a9 as TNAuthorizationList, as as PolicyConstraints, ar as PolicyMappings, a7 as CRLNumber, aA as IssuingDistributionPoint, a5 as NonStandardKeyDescription, a4 as CabforganizationIdentifier } from './ssh_certificate-PCn0WXhQ.js';
5
+ import { $ as OIDs, Z as l10n, _ as dateShort, b as buildExports, bn as Name$1, bo as OtherName, q as AsnParser, bp as DisplayText, bq as UserNotice, br as EDIPartyName, bs as __decorate, bt as AsnProp, bu as AsnPropTypes, bv as AsnType, bw as AsnTypeTypes, bx as AsnArray, by as id_qcs_pkixQCSyntax_v2, bz as SemanticsInformation, bA as AsnIntegerArrayBufferConverter, bB as AttestationApplicationId, bC as RootOfTrust, bD as IntegerSet, au as KeyUsage, aE as BasicConstraints, ay as ExtendedKeyUsage, ao as SubjectKeyIdentifier, aF as AuthorityKeyIdentifier, aB as CRLDistributionPoints, aG as AuthorityInfoAccessSyntax, a8 as SubjectInfoAccessSyntax, aq as SubjectAlternativeName, aC as CertificatePolicies, at as NameConstraints, am as CertificateTemplate, al as EnrollCertTypeChoice, ai as CaVersion, an as QCStatements, ak as NetscapeComment, aj as NetscapeCertType, ag as LeiRole, ah as LeiChoice, af as Timestamp, ae as ArchiveRevInfo, az as CRLReason, ap as SubjectDirectoryAttributes, ad as PrivateKeyUsagePeriod, ac as EntrustVersionInfo, ab as BiometricSyntax, aa as LogotypeExtn, a9 as TNAuthorizationList, as as PolicyConstraints, ar as PolicyMappings, a7 as CRLNumber, aA as IssuingDistributionPoint, a5 as NonStandardKeyDescription, a4 as CabforganizationIdentifier } from './ssh_certificate-rmToyzuK.js';
6
6
  import { L as Link } from './link-CGURvKy1.js';
7
- import { C as CertificateTransparency } from './extension-DmlhftES.js';
7
+ import { C as CertificateTransparency } from './extension-B3br1_Py.js';
8
8
  import { T as Typography, B as Button } from './button-Bbh7MwG6.js';
9
9
  import { D as DownloadIcon } from './download-ykcxSgxU.js';
10
10
 
@@ -1398,6 +1398,6 @@ const Miscellaneous = (props) => {
1398
1398
  };
1399
1399
 
1400
1400
  export { BasicInformation as B, Extensions as E, GeneralNamePart as G, IssuerName as I, Miscellaneous as M, PublicKey as P, RowValue as R, SubjectName as S, Thumbprints as T, Signature as a, getDNSNameLink as b, getLEILink as c, getStringByOID as d, camelCaseToWords as e, TableRowTable as f, getIPAddressLink as g, RowTitle as h };
1401
- //# sourceMappingURL=miscellaneous-BTlqwN5_.js.map
1401
+ //# sourceMappingURL=miscellaneous-phHcBJWR.js.map
1402
1402
 
1403
- //# sourceMappingURL=miscellaneous-BTlqwN5_.js.map
1403
+ //# sourceMappingURL=miscellaneous-phHcBJWR.js.map