@peculiar/certificates-viewer 4.9.1 → 4.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/components/attribute-certificate-viewer.js +1 -1
  2. package/components/attribute-certificate-viewer.js.map +1 -1
  3. package/components/certificate-chain-viewer.js +1 -1
  4. package/components/certificate-viewer.js +1 -1
  5. package/components/certificate-viewer.js.map +1 -1
  6. package/components/circular-progress.js +2 -2
  7. package/components/crl-viewer.js +2 -2
  8. package/components/crl-viewer.js.map +1 -1
  9. package/components/csr-viewer.js +1 -1
  10. package/components/csr-viewer.js.map +1 -1
  11. package/components/download.js +83 -12
  12. package/components/download.js.map +1 -1
  13. package/components/highlight-words.js +1 -1
  14. package/components/miscellaneous.js +17 -1
  15. package/components/miscellaneous.js.map +1 -1
  16. package/components/peculiar-certificate-decoder.js +51 -53
  17. package/components/peculiar-certificate-decoder.js.map +1 -1
  18. package/components/peculiar-certificates-viewer.js +1 -1
  19. package/components/ssh-certificate-viewer.js +2 -2
  20. package/components/ssh-certificate-viewer.js.map +1 -1
  21. package/components/text-hider.js +1 -1
  22. package/dist/cjs/{extension-BDpdRJkE.js → extension-Ba-KQhu5.js} +4 -3
  23. package/dist/cjs/extension-Ba-KQhu5.js.map +1 -0
  24. package/dist/cjs/index.cjs.js +2 -2
  25. package/dist/cjs/loader.cjs.js +1 -1
  26. package/dist/cjs/{miscellaneous-DmTT_MGG.js → miscellaneous-CtuYfnBB.js} +19 -4
  27. package/dist/cjs/miscellaneous-CtuYfnBB.js.map +1 -0
  28. 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
  29. package/dist/cjs/peculiar-attribute-certificate-viewer_5.cjs.entry.js +10 -10
  30. package/dist/cjs/peculiar-button-menu_3.cjs.entry.js +3 -3
  31. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +54 -55
  32. package/dist/cjs/peculiar-certificate-decoder.entry.cjs.js.map +1 -1
  33. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +5 -5
  34. package/dist/cjs/peculiar-certificate-viewer.entry.cjs.js.map +1 -1
  35. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +3 -3
  36. package/dist/cjs/peculiar-text-hider.cjs.entry.js +1 -1
  37. package/dist/cjs/peculiar.cjs.js +1 -1
  38. package/dist/cjs/{pkcs10_certificate_request-DZLiHGCV.js → pkcs10_certificate_request-BDLZWqTP.js} +3 -3
  39. package/dist/cjs/{pkcs10_certificate_request-DZLiHGCV.js.map → pkcs10_certificate_request-BDLZWqTP.js.map} +1 -1
  40. package/dist/cjs/{ssh_certificate-Bh14rhzR.js → ssh_certificate-Gu4FwsRk.js} +86 -13
  41. package/dist/cjs/ssh_certificate-Gu4FwsRk.js.map +1 -0
  42. package/dist/cjs/{x509_certificate-p8RMn7Hw.js → x509_certificate-BSOf2t9Y.js} +4 -4
  43. package/dist/cjs/{x509_certificate-p8RMn7Hw.js.map → x509_certificate-BSOf2t9Y.js.map} +1 -1
  44. package/dist/cjs/{x509_crl-tjmX6l3R.js → x509_crl-BgUtqkpv.js} +5 -5
  45. package/dist/cjs/{x509_crl-tjmX6l3R.js.map → x509_crl-BgUtqkpv.js.map} +1 -1
  46. package/dist/collection/components/attribute-certificate-viewer/attribute-certificate-viewer.js +1 -1
  47. package/dist/collection/components/button-menu/button-menu.js +1 -1
  48. package/dist/collection/components/certificate-chain-viewer/certificate-chain-viewer.css +3 -3
  49. package/dist/collection/components/certificate-decoder/certificate-decoder.js +53 -63
  50. package/dist/collection/components/certificate-decoder/certificate-decoder.js.map +1 -1
  51. package/dist/collection/components/certificate-details-parts/extensions/apple_developer_id_date_extension.js +19 -0
  52. package/dist/collection/components/certificate-details-parts/extensions/apple_developer_id_date_extension.js.map +1 -0
  53. package/dist/collection/components/certificate-details-parts/extensions/index.js +5 -1
  54. package/dist/collection/components/certificate-details-parts/extensions/index.js.map +1 -1
  55. package/dist/collection/components/certificate-viewer/certificate-viewer.css +3 -3
  56. package/dist/collection/components/certificate-viewer/certificate-viewer.js +1 -1
  57. package/dist/collection/components/certificates-viewer/certificates-viewer.js +1 -1
  58. package/dist/collection/components/circular-progress/circular-progress.js +2 -2
  59. package/dist/collection/components/crl-viewer/crl-viewer.js +1 -1
  60. package/dist/collection/components/csr-viewer/csr-viewer.js +1 -1
  61. package/dist/collection/components/highlight-words/highlight-words.js +1 -1
  62. package/dist/collection/components/ssh-certificate-viewer/ssh-certificate-viewer.js +1 -1
  63. package/dist/collection/components/text-hider/text-hider.js +1 -1
  64. package/dist/collection/constants/oids.js +27 -6
  65. package/dist/collection/constants/oids.js.map +1 -1
  66. package/dist/collection/crypto/extension.js +2 -1
  67. package/dist/collection/crypto/extension.js.map +1 -1
  68. package/dist/collection/crypto/extensions/apple_developer_id_date.js +53 -0
  69. package/dist/collection/crypto/extensions/apple_developer_id_date.js.map +1 -0
  70. package/dist/collection/crypto/extensions/index.js +1 -0
  71. package/dist/collection/crypto/extensions/index.js.map +1 -1
  72. package/dist/collection/www-copy/favicon.svg +1 -0
  73. package/dist/collection/www-copy/index.js +5 -10
  74. package/dist/esm/{extension-xW03sQxn.js → extension-8GydD2wh.js} +4 -3
  75. package/dist/esm/extension-8GydD2wh.js.map +1 -0
  76. package/dist/esm/index.js +2 -2
  77. package/dist/esm/loader.js +1 -1
  78. package/dist/esm/{miscellaneous-D-Qxv14j.js → miscellaneous-Bxm6kKwP.js} +19 -4
  79. package/dist/esm/miscellaneous-Bxm6kKwP.js.map +1 -0
  80. 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
  81. package/dist/esm/peculiar-attribute-certificate-viewer_5.entry.js +10 -10
  82. package/dist/esm/peculiar-button-menu_3.entry.js +3 -3
  83. package/dist/esm/peculiar-certificate-decoder.entry.js +54 -55
  84. package/dist/esm/peculiar-certificate-decoder.entry.js.map +1 -1
  85. package/dist/esm/peculiar-certificate-viewer.entry.js +5 -5
  86. package/dist/esm/peculiar-certificate-viewer.entry.js.map +1 -1
  87. package/dist/esm/peculiar-certificates-viewer.entry.js +3 -3
  88. package/dist/esm/peculiar-text-hider.entry.js +1 -1
  89. package/dist/esm/peculiar.js +1 -1
  90. package/dist/esm/{pkcs10_certificate_request-Crr9FABo.js → pkcs10_certificate_request-B_lMfAi8.js} +3 -3
  91. package/dist/esm/{pkcs10_certificate_request-Crr9FABo.js.map → pkcs10_certificate_request-B_lMfAi8.js.map} +1 -1
  92. package/dist/esm/{ssh_certificate-CmOVFH_Z.js → ssh_certificate-Del2D5s9.js} +85 -14
  93. package/dist/esm/ssh_certificate-Del2D5s9.js.map +1 -0
  94. package/dist/esm/{x509_certificate-C2EVTspY.js → x509_certificate-DRGTrdPm.js} +4 -4
  95. package/dist/{esm-es5/x509_certificate-C2EVTspY.js.map → esm/x509_certificate-DRGTrdPm.js.map} +1 -1
  96. package/dist/esm/{x509_crl-Bdnys_YT.js → x509_crl-rO-rdi1G.js} +5 -5
  97. package/dist/{esm-es5/x509_crl-Bdnys_YT.js.map → esm/x509_crl-rO-rdi1G.js.map} +1 -1
  98. package/dist/esm-es5/extension-8GydD2wh.js +12 -0
  99. package/dist/esm-es5/extension-8GydD2wh.js.map +1 -0
  100. package/dist/esm-es5/index.js +1 -1
  101. package/dist/esm-es5/loader.js +1 -1
  102. package/dist/esm-es5/{miscellaneous-D-Qxv14j.js → miscellaneous-Bxm6kKwP.js} +10 -3
  103. package/dist/esm-es5/miscellaneous-Bxm6kKwP.js.map +1 -0
  104. 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
  105. package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js +3 -3
  106. package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js.map +1 -1
  107. package/dist/esm-es5/peculiar-button-menu_3.entry.js +1 -1
  108. package/dist/esm-es5/peculiar-certificate-decoder.entry.js +2 -2
  109. package/dist/esm-es5/peculiar-certificate-decoder.entry.js.map +1 -1
  110. package/dist/esm-es5/peculiar-certificate-viewer.entry.js +1 -1
  111. package/dist/esm-es5/peculiar-certificate-viewer.entry.js.map +1 -1
  112. package/dist/esm-es5/peculiar-certificates-viewer.entry.js +1 -1
  113. package/dist/esm-es5/peculiar-text-hider.entry.js +1 -1
  114. package/dist/esm-es5/peculiar.js +1 -1
  115. package/dist/esm-es5/{pkcs10_certificate_request-Crr9FABo.js → pkcs10_certificate_request-B_lMfAi8.js} +2 -2
  116. package/dist/esm-es5/{pkcs10_certificate_request-Crr9FABo.js.map → pkcs10_certificate_request-B_lMfAi8.js.map} +1 -1
  117. package/dist/esm-es5/{ssh_certificate-CmOVFH_Z.js → ssh_certificate-Del2D5s9.js} +5 -5
  118. package/dist/esm-es5/ssh_certificate-Del2D5s9.js.map +1 -0
  119. package/dist/esm-es5/{x509_certificate-C2EVTspY.js → x509_certificate-DRGTrdPm.js} +2 -2
  120. package/dist/{esm/x509_certificate-C2EVTspY.js.map → esm-es5/x509_certificate-DRGTrdPm.js.map} +1 -1
  121. package/dist/esm-es5/{x509_crl-Bdnys_YT.js → x509_crl-rO-rdi1G.js} +2 -2
  122. package/dist/{esm/x509_crl-Bdnys_YT.js.map → esm-es5/x509_crl-rO-rdi1G.js.map} +1 -1
  123. package/dist/peculiar/index.esm.js +1 -1
  124. package/dist/peculiar/p-1fb833f3.entry.js +5 -0
  125. package/dist/peculiar/{p-3424de20.system.entry.js → p-64cc6da1.system.entry.js} +2 -2
  126. package/dist/peculiar/{p-007b79ff.entry.js → p-76472b19.entry.js} +2 -2
  127. package/dist/peculiar/{p-0ef9c56c.entry.js → p-7b83898f.entry.js} +21 -21
  128. package/dist/peculiar/{p-0ef9c56c.entry.js.map → p-7b83898f.entry.js.map} +1 -1
  129. package/dist/peculiar/{p-f7ee4d56.entry.js → p-7c5aa1f5.entry.js} +2 -2
  130. package/dist/peculiar/{p-f7ee4d56.entry.js.map → p-7c5aa1f5.entry.js.map} +1 -1
  131. package/dist/peculiar/p-8d36d2f8.system.entry.js +5 -0
  132. package/dist/peculiar/p-8d36d2f8.system.entry.js.map +1 -0
  133. package/dist/peculiar/{p-3a493e87.entry.js → p-95f81b6d.entry.js} +2 -2
  134. package/dist/peculiar/p-9ab5fa9f.entry.js +5 -0
  135. package/dist/peculiar/p-9ab5fa9f.entry.js.map +1 -0
  136. package/dist/peculiar/{p-DberG072.system.js → p-B5d7q9FD.system.js} +4 -4
  137. package/dist/peculiar/{p-DberG072.system.js.map → p-B5d7q9FD.system.js.map} +1 -1
  138. package/dist/peculiar/{p-B7cL9SBA.js → p-BAnW9WLg.js} +4 -4
  139. package/dist/peculiar/{p-B7cL9SBA.js.map → p-BAnW9WLg.js.map} +1 -1
  140. package/dist/peculiar/p-BKLsbktK.system.js +135 -0
  141. package/dist/peculiar/p-BKLsbktK.system.js.map +1 -0
  142. package/dist/peculiar/{p-vXPL1mjI.system.js.map → p-BQoMhw1w.system.js.map} +1 -1
  143. package/dist/peculiar/{p-1yfbC8AM.js → p-Ba1oqaJ3.js} +61 -54
  144. package/dist/peculiar/p-Ba1oqaJ3.js.map +1 -0
  145. package/dist/peculiar/{p-CGipIfjs.system.js → p-BakSwSe7.system.js} +2 -2
  146. package/dist/peculiar/{p-CGipIfjs.system.js.map → p-BakSwSe7.system.js.map} +1 -1
  147. package/dist/peculiar/{p-Bwp7g8Ef.system.js.map → p-Blt9UUmt.system.js.map} +1 -1
  148. package/dist/peculiar/{p-w85NrMQC.system.js.map → p-BpRY-zq0.system.js.map} +1 -1
  149. package/dist/peculiar/p-CDZsc_KS.system.js.map +1 -0
  150. package/dist/peculiar/{p-B4vvBwd6.js → p-CH0mNFdH.js} +3 -3
  151. package/dist/peculiar/{p-B4vvBwd6.js.map → p-CH0mNFdH.js.map} +1 -1
  152. package/dist/peculiar/{p-Bfl7RVFY.system.js → p-CTj-Drej.system.js} +4 -4
  153. package/dist/peculiar/{p-Bfl7RVFY.system.js.map → p-CTj-Drej.system.js.map} +1 -1
  154. package/dist/peculiar/{p-BvX2AYI4.system.js.map → p-CgXNYogJ.system.js.map} +1 -1
  155. package/dist/peculiar/p-Cp20xosi.js +12 -0
  156. package/dist/peculiar/p-Cp20xosi.js.map +1 -0
  157. package/dist/peculiar/{p-Cq11_gqW.system.js → p-DPnMJlS4.system.js} +2 -2
  158. package/dist/peculiar/p-DPnMJlS4.system.js.map +1 -0
  159. package/dist/peculiar/{p-tkt_tT15.system.js → p-DcqxnCVz.system.js} +61 -54
  160. package/dist/peculiar/p-DcqxnCVz.system.js.map +1 -0
  161. package/dist/peculiar/{p-CmOVFH_Z.js → p-Del2D5s9.js} +8 -8
  162. package/dist/peculiar/p-Del2D5s9.js.map +1 -0
  163. package/dist/peculiar/{p-BxiR02Uf.js → p-DrLCyy39.js} +4 -4
  164. package/dist/peculiar/{p-BxiR02Uf.js.map → p-DrLCyy39.js.map} +1 -1
  165. package/dist/peculiar/{p-7HEye5oH.system.js.map → p-MyCIZClD.system.js.map} +1 -1
  166. package/dist/peculiar/p-b8bb96f4.system.entry.js +5 -0
  167. package/dist/peculiar/{p-c17b79cf.system.entry.js → p-d2b87ce5.system.entry.js} +2 -2
  168. package/dist/peculiar/{p-b955360e.system.entry.js → p-da018463.system.entry.js} +18 -18
  169. package/dist/peculiar/p-da018463.system.entry.js.map +1 -0
  170. package/dist/peculiar/{p-4ff3d82a.system.entry.js → p-f30eb78c.system.entry.js} +2 -2
  171. package/dist/peculiar/p-f30eb78c.system.entry.js.map +1 -0
  172. package/dist/peculiar/p-hEr9Uo3G.system.js +1 -1
  173. package/dist/peculiar/p-itJt0J5g.system.js +12 -0
  174. package/dist/peculiar/p-itJt0J5g.system.js.map +1 -0
  175. 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
  176. package/dist/peculiar/peculiar-certificate-decoder.entry.esm.js.map +1 -1
  177. package/dist/peculiar/peculiar-certificate-viewer.entry.esm.js.map +1 -1
  178. package/dist/peculiar/peculiar.esm.js +1 -1
  179. package/dist/types/components/certificate-decoder/certificate-decoder.d.ts +8 -10
  180. package/dist/types/components/certificate-details-parts/extensions/apple_developer_id_date_extension.d.ts +15 -0
  181. package/dist/types/components.d.ts +6 -6
  182. package/dist/types/constants/oids.d.ts +23 -2
  183. package/dist/types/crypto/extension.d.ts +2 -1
  184. package/dist/types/crypto/extensions/apple_developer_id_date.d.ts +19 -0
  185. package/dist/types/crypto/extensions/index.d.ts +1 -0
  186. package/hydrate/index.js +158 -71
  187. package/hydrate/index.mjs +158 -71
  188. package/package.json +31 -30
  189. package/dist/cjs/extension-BDpdRJkE.js.map +0 -1
  190. package/dist/cjs/miscellaneous-DmTT_MGG.js.map +0 -1
  191. package/dist/cjs/ssh_certificate-Bh14rhzR.js.map +0 -1
  192. package/dist/collection/components/certificate-decoder/certificate-decoder.css +0 -475
  193. package/dist/esm/extension-xW03sQxn.js.map +0 -1
  194. package/dist/esm/miscellaneous-D-Qxv14j.js.map +0 -1
  195. package/dist/esm/ssh_certificate-CmOVFH_Z.js.map +0 -1
  196. package/dist/esm-es5/extension-xW03sQxn.js +0 -12
  197. package/dist/esm-es5/extension-xW03sQxn.js.map +0 -1
  198. package/dist/esm-es5/miscellaneous-D-Qxv14j.js.map +0 -1
  199. package/dist/esm-es5/ssh_certificate-CmOVFH_Z.js.map +0 -1
  200. package/dist/peculiar/p-1yfbC8AM.js.map +0 -1
  201. package/dist/peculiar/p-342e499f.system.entry.js +0 -5
  202. package/dist/peculiar/p-4ff3d82a.system.entry.js.map +0 -1
  203. package/dist/peculiar/p-64517c6e.system.entry.js +0 -5
  204. package/dist/peculiar/p-64517c6e.system.entry.js.map +0 -1
  205. package/dist/peculiar/p-7777c7dc.entry.js +0 -5
  206. package/dist/peculiar/p-7777c7dc.entry.js.map +0 -1
  207. package/dist/peculiar/p-CLcRtCZ9.system.js +0 -135
  208. package/dist/peculiar/p-CLcRtCZ9.system.js.map +0 -1
  209. package/dist/peculiar/p-Ckf8xErP.system.js +0 -12
  210. package/dist/peculiar/p-Ckf8xErP.system.js.map +0 -1
  211. package/dist/peculiar/p-CmOVFH_Z.js.map +0 -1
  212. package/dist/peculiar/p-Cq11_gqW.system.js.map +0 -1
  213. package/dist/peculiar/p-DXA1451q.js +0 -12
  214. package/dist/peculiar/p-DXA1451q.js.map +0 -1
  215. package/dist/peculiar/p-Drk9aw2j.system.js.map +0 -1
  216. package/dist/peculiar/p-b955360e.system.entry.js.map +0 -1
  217. package/dist/peculiar/p-ce08fab1.entry.js +0 -5
  218. package/dist/peculiar/p-tkt_tT15.system.js.map +0 -1
  219. /package/dist/peculiar/{p-ce08fab1.entry.js.map → p-1fb833f3.entry.js.map} +0 -0
  220. /package/dist/peculiar/{p-3424de20.system.entry.js.map → p-64cc6da1.system.entry.js.map} +0 -0
  221. /package/dist/peculiar/{p-007b79ff.entry.js.map → p-76472b19.entry.js.map} +0 -0
  222. /package/dist/peculiar/{p-3a493e87.entry.js.map → p-95f81b6d.entry.js.map} +0 -0
  223. /package/dist/peculiar/{p-342e499f.system.entry.js.map → p-b8bb96f4.system.entry.js.map} +0 -0
  224. /package/dist/peculiar/{p-c17b79cf.system.entry.js.map → p-d2b87ce5.system.entry.js.map} +0 -0
@@ -3,12 +3,11 @@
3
3
  */
4
4
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
5
5
  import { a as readAsBinaryString } from './read_file.js';
6
- import { P as PemConverter, e as buildExports, a3 as SignedData, a4 as EncapsulatedContent, a5 as OctetString, a6 as CertificateSet, a7 as CertificateChoices, b as AsnConvert, K as Certificate, a8 as ContentInfo, D as Download, a9 as SshCertificate } from './download.js';
6
+ import { P as PemConverter, e as buildExports, _ as SignedData, $ as EncapsulatedContent, a0 as OctetString, a1 as CertificateSet, a2 as CertificateChoices, b as AsnConvert, K as Certificate, a3 as ContentInfo, D as Download, a4 as SshCertificate } from './download.js';
7
7
  import { X as X509Certificate, d as defineCustomElement$6 } from './certificate-viewer.js';
8
8
  import { X as X509AttributeCertificate, d as defineCustomElement$8 } from './attribute-certificate-viewer.js';
9
9
  import { P as Pkcs10CertificateRequest } from './pkcs10_certificate_request.js';
10
10
  import { X as X509Crl, d as defineCustomElement$5 } from './crl-viewer.js';
11
- import { T as Typography, B as Button } from './button.js';
12
11
  import { d as defineCustomElement$7 } from './certificate-chain-viewer.js';
13
12
  import { d as defineCustomElement$4 } from './csr-viewer.js';
14
13
  import { d as defineCustomElement$3 } from './ssh-certificate-viewer.js';
@@ -72,67 +71,60 @@ class X509Certificates extends Array {
72
71
  }
73
72
  }
74
73
 
75
- const certificateDecoderCss = "*{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:transparent;font-family:var(--pv-font-family, inherit)}.t-h1{font-weight:var(--pv-text-h1-weight);font-size:var(--pv-text-h1-size);line-height:var(--pv-text-h1-height);letter-spacing:var(--pv-text-h1-spacing)}.t-h2{font-weight:var(--pv-text-h2-weight);font-size:var(--pv-text-h2-size);line-height:var(--pv-text-h2-height);letter-spacing:var(--pv-text-h2-spacing)}.t-h3{font-weight:var(--pv-text-h3-weight);font-size:var(--pv-text-h3-size);line-height:var(--pv-text-h3-height);letter-spacing:var(--pv-text-h3-spacing)}.t-h4{font-weight:var(--pv-text-h4-weight);font-size:var(--pv-text-h4-size);line-height:var(--pv-text-h4-height);letter-spacing:var(--pv-text-h4-spacing)}.t-h5{font-weight:var(--pv-text-h5-weight);font-size:var(--pv-text-h5-size);line-height:var(--pv-text-h5-height);letter-spacing:var(--pv-text-h5-spacing)}.t-s1{font-weight:var(--pv-text-s1-weight);font-size:var(--pv-text-s1-size);line-height:var(--pv-text-s1-height);letter-spacing:var(--pv-text-s1-spacing)}.t-s2{font-weight:var(--pv-text-s2-weight);font-size:var(--pv-text-s2-size);line-height:var(--pv-text-s2-height);letter-spacing:var(--pv-text-s2-spacing)}.t-b1{font-weight:var(--pv-text-b1-weight);font-size:var(--pv-text-b1-size);line-height:var(--pv-text-b1-height);letter-spacing:var(--pv-text-b1-spacing)}.t-b2{font-weight:var(--pv-text-b2-weight);font-size:var(--pv-text-b2-size);line-height:var(--pv-text-b2-height);letter-spacing:var(--pv-text-b2-spacing)}.t-b3{font-weight:var(--pv-text-b3-weight);font-size:var(--pv-text-b3-size);line-height:var(--pv-text-b3-height);letter-spacing:var(--pv-text-b3-spacing)}.t-btn1{font-weight:var(--pv-text-btn1-weight);font-size:var(--pv-text-btn1-size);line-height:var(--pv-text-btn1-height);letter-spacing:var(--pv-text-btn1-spacing)}.t-btn2{font-weight:var(--pv-text-btn2-weight);font-size:var(--pv-text-btn2-size);line-height:var(--pv-text-btn2-height);letter-spacing:var(--pv-text-btn2-spacing)}.t-c1{font-weight:var(--pv-text-c1-weight);font-size:var(--pv-text-c1-size);line-height:var(--pv-text-c1-height);letter-spacing:var(--pv-text-c1-spacing)}.t-c2{font-weight:var(--pv-text-c2-weight);font-size:var(--pv-text-c2-size);line-height:var(--pv-text-c2-height);letter-spacing:var(--pv-text-c2-spacing)}.c-primary-tint-5{--pv-color-base:var(--pv-color-primary-tint-5)}.c-primary-tint-4{--pv-color-base:var(--pv-color-primary-tint-4)}.c-primary-tint-3{--pv-color-base:var(--pv-color-primary-tint-3)}.c-primary-tint-2{--pv-color-base:var(--pv-color-primary-tint-2)}.c-primary-tint-1{--pv-color-base:var(--pv-color-primary-tint-1)}.c-primary{--pv-color-base:var(--pv-color-primary)}.c-primary-shade-1{--pv-color-base:var(--pv-color-primary-shade-1)}.c-primary-shade-2{--pv-color-base:var(--pv-color-primary-shade-2)}.c-primary-shade-3{--pv-color-base:var(--pv-color-primary-shade-3)}.c-primary-shade-4{--pv-color-base:var(--pv-color-primary-shade-4)}.c-primary-shade-5{--pv-color-base:var(--pv-color-primary-shade-5)}.c-primary-contrast{--pv-color-base:var(--pv-color-primary-contrast)}.c-secondary-tint-5{--pv-color-base:var(--pv-color-secondary-tint-5)}.c-secondary-tint-4{--pv-color-base:var(--pv-color-secondary-tint-4)}.c-secondary-tint-3{--pv-color-base:var(--pv-color-secondary-tint-3)}.c-secondary-tint-2{--pv-color-base:var(--pv-color-secondary-tint-2)}.c-secondary-tint-1{--pv-color-base:var(--pv-color-secondary-tint-1)}.c-secondary{--pv-color-base:var(--pv-color-secondary)}.c-secondary-shade-1{--pv-color-base:var(--pv-color-secondary-shade-1)}.c-secondary-shade-2{--pv-color-base:var(--pv-color-secondary-shade-2)}.c-secondary-shade-3{--pv-color-base:var(--pv-color-secondary-shade-3)}.c-secondary-shade-4{--pv-color-base:var(--pv-color-secondary-shade-4)}.c-secondary-shade-5{--pv-color-base:var(--pv-color-secondary-shade-5)}.c-secondary-contrast{--pv-color-base:var(--pv-color-secondary-contrast)}.c-wrong-tint-5{--pv-color-base:var(--pv-color-wrong-tint-5)}.c-wrong-tint-4{--pv-color-base:var(--pv-color-wrong-tint-4)}.c-wrong-tint-3{--pv-color-base:var(--pv-color-wrong-tint-3)}.c-wrong-tint-2{--pv-color-base:var(--pv-color-wrong-tint-2)}.c-wrong-tint-1{--pv-color-base:var(--pv-color-wrong-tint-1)}.c-wrong{--pv-color-base:var(--pv-color-wrong)}.c-wrong-shade-1{--pv-color-base:var(--pv-color-wrong-shade-1)}.c-wrong-shade-2{--pv-color-base:var(--pv-color-wrong-shade-2)}.c-wrong-shade-3{--pv-color-base:var(--pv-color-wrong-shade-3)}.c-wrong-shade-4{--pv-color-base:var(--pv-color-wrong-shade-4)}.c-wrong-shade-5{--pv-color-base:var(--pv-color-wrong-shade-5)}.c-wrong-contrast{--pv-color-base:var(--pv-color-wrong-contrast)}.c-attention-tint-5{--pv-color-base:var(--pv-color-attention-tint-5)}.c-attention-tint-4{--pv-color-base:var(--pv-color-attention-tint-4)}.c-attention-tint-3{--pv-color-base:var(--pv-color-attention-tint-3)}.c-attention-tint-2{--pv-color-base:var(--pv-color-attention-tint-2)}.c-attention-tint-1{--pv-color-base:var(--pv-color-attention-tint-1)}.c-attention{--pv-color-base:var(--pv-color-attention)}.c-attention-shade-1{--pv-color-base:var(--pv-color-attention-shade-1)}.c-attention-shade-2{--pv-color-base:var(--pv-color-attention-shade-2)}.c-attention-shade-3{--pv-color-base:var(--pv-color-attention-shade-3)}.c-attention-shade-4{--pv-color-base:var(--pv-color-attention-shade-4)}.c-attention-shade-5{--pv-color-base:var(--pv-color-attention-shade-5)}.c-success-tint-5{--pv-color-base:var(--pv-color-success-tint-5)}.c-success-tint-4{--pv-color-base:var(--pv-color-success-tint-4)}.c-success-tint-3{--pv-color-base:var(--pv-color-success-tint-3)}.c-success-tint-2{--pv-color-base:var(--pv-color-success-tint-2)}.c-success-tint-1{--pv-color-base:var(--pv-color-success-tint-1)}.c-success{--pv-color-base:var(--pv-color-success)}.c-success-shade-1{--pv-color-base:var(--pv-color-success-shade-1)}.c-success-shade-2{--pv-color-base:var(--pv-color-success-shade-2)}.c-success-shade-3{--pv-color-base:var(--pv-color-success-shade-3)}.c-success-shade-4{--pv-color-base:var(--pv-color-success-shade-4)}.c-success-shade-5{--pv-color-base:var(--pv-color-success-shade-5)}.c-black{--pv-color-base:var(--pv-color-black)}.c-gray-10{--pv-color-base:var(--pv-color-gray-10)}.c-gray-9{--pv-color-base:var(--pv-color-gray-9)}.c-gray-8{--pv-color-base:var(--pv-color-gray-8)}.c-gray-7{--pv-color-base:var(--pv-color-gray-7)}.c-gray-6{--pv-color-base:var(--pv-color-gray-6)}.c-gray-5{--pv-color-base:var(--pv-color-gray-5)}.c-gray-4{--pv-color-base:var(--pv-color-gray-4)}.c-gray-3{--pv-color-base:var(--pv-color-gray-3)}.c-gray-2{--pv-color-base:var(--pv-color-gray-2)}.c-gray-1{--pv-color-base:var(--pv-color-gray-1)}.c-white{--pv-color-base:var(--pv-color-white)}.c-extra-1{--pv-color-base:var(--pv-color-extra-1)}.c-extra-2{--pv-color-base:var(--pv-color-extra-2)}.typography{color:var(--pv-color-base)}.button{display:-ms-inline-flexbox;display:inline-flex;cursor:pointer;background:transparent;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;outline:none;font-family:inherit;border-radius:4px;height:calc(var(--pv-size-base) * 6);min-width:calc(var(--pv-size-base) * 6);padding:0 calc(var(--pv-size-base) * 2);-webkit-transition:background-color 200ms ease 0s;transition:background-color 200ms ease 0s;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;gap:calc(var(--pv-size-base) * 2);font-size:0}.button.m_no_padding{padding:0}.button:hover{background-color:var(--pv-color-gray-3)}.button:focus{background-color:var(--pv-color-gray-4)}.button:active{background-color:var(--pv-color-gray-5)}:host{display:block;width:100%}.textarea{min-height:300px;width:100%;border-radius:4px;border:1px solid var(--pv-color-gray-5);padding:14px;font-family:monospace;resize:vertical}.controls{margin-top:calc(var(--pv-size-base) * 2);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:calc(var(--pv-size-base) * 2);margin-bottom:calc(var(--pv-size-base) * 12)}.control_row{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:var(--pv-size-base)}";
76
-
77
74
  const CertificateDecoder = /*@__PURE__*/ proxyCustomElement(class CertificateDecoder extends HTMLElement {
78
75
  constructor(registerHost) {
79
76
  super();
80
77
  if (registerHost !== false) {
81
78
  this.__registerHost();
82
79
  }
83
- this.__attachShadow();
84
80
  this.successParse = createEvent(this, "successParse", 7);
85
81
  this.clearCertificate = createEvent(this, "clearCertificate", 7);
82
+ // ─── Handlers ──────────────────────────────────────────────────────────────
86
83
  this.handleClickDecode = () => {
87
84
  const { value } = this.inputPaste;
88
- if (value) {
85
+ if (value)
89
86
  this.decode(value);
90
- }
91
87
  };
92
88
  this.handleClickClear = () => {
93
89
  this.clearValue();
94
90
  };
95
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
91
  this.handleChangeInputFile = async (event) => {
97
- const element = event.target;
98
- if (element.files) {
99
- const file = await readAsBinaryString(element.files[0]);
100
- if (typeof file.value === 'string') {
92
+ var _a;
93
+ const el = event.target;
94
+ if ((_a = el.files) === null || _a === void 0 ? void 0 : _a.length) {
95
+ const file = await readAsBinaryString(el.files[0]);
96
+ if (typeof file.value === 'string')
101
97
  this.decode(file.value);
102
- }
103
- element.value = '';
98
+ el.value = '';
104
99
  }
105
100
  };
106
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
107
101
  this.handleChangeExample = (event) => {
108
- if (event.target.value) {
109
- this.decode(event.target.value);
110
- }
111
- else {
102
+ const val = event.target.value;
103
+ if (val)
104
+ this.decode(val);
105
+ else
112
106
  this.clearValue();
113
- }
114
107
  };
115
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
- this.handleDropFile = async (event) => {
108
+ this.handleDrop = async (event) => {
109
+ var _a;
117
110
  event.stopPropagation();
118
111
  event.preventDefault();
119
- const element = event.dataTransfer;
120
- if (element.files) {
121
- const file = await readAsBinaryString(element.files[0]);
122
- if (typeof file.value === 'string') {
112
+ const files = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files;
113
+ if (files === null || files === void 0 ? void 0 : files.length) {
114
+ const file = await readAsBinaryString(files[0]);
115
+ if (typeof file.value === 'string')
123
116
  this.decode(file.value);
124
- }
125
117
  }
126
118
  };
127
119
  }
120
+ // ─── Lifecycle ─────────────────────────────────────────────────────────────
128
121
  componentDidLoad() {
129
122
  if (this.certificateToDecode) {
130
- /**
131
- * Prevent Stencil warning about re-render
132
- */
123
+ // Defer one tick to avoid Stencil re-render warning
133
124
  setTimeout(() => this.decode(this.certificateToDecode), 100);
134
125
  }
135
126
  }
127
+ // ─── Core operations ───────────────────────────────────────────────────────
136
128
  clearValue() {
137
129
  this.inputPaste.value = '';
138
130
  this.certificateDecoded = null;
@@ -144,47 +136,53 @@ const CertificateDecoder = /*@__PURE__*/ proxyCustomElement(class CertificateDec
144
136
  this.successParse.emit(await value.toString('base64url'));
145
137
  }
146
138
  async decode(value) {
147
- new Promise((resolve) => {
148
- resolve(new X509Certificates(value));
149
- })
139
+ new Promise((resolve) => resolve(new X509Certificates(value)))
150
140
  .catch(() => new X509Certificate(value))
151
141
  .catch(() => new X509AttributeCertificate(value))
152
142
  .catch(() => new Pkcs10CertificateRequest(value))
153
143
  .catch(() => new X509Crl(value))
154
144
  .catch(() => new SshCertificate(value))
155
145
  .then((res) => this.setValue(res))
156
- .catch((error) => {
157
- console.log(error);
158
- alert(`Error decoding certificate:\n"${value}"\n\nPlease try to use Certificate/AttributeCertificate/CertificateRequest/CRL.`);
146
+ .catch((err) => {
147
+ console.error(err);
148
+ alert(`Error decoding certificate.\n\nSupported formats: X.509 Certificate, Attribute Certificate, PKCS#10 CSR, CRL, SSH Certificate.`);
159
149
  });
160
150
  }
161
- renderCertificate() {
162
- if (this.certificateDecoded instanceof X509Certificates) {
163
- return (h("peculiar-certificate-chain-viewer", { certificates: this.certificateDecoded, download: true }));
151
+ // ─── Render helpers ────────────────────────────────────────────────────────
152
+ renderDecodedComponent() {
153
+ const cert = this.certificateDecoded;
154
+ if (cert instanceof X509Certificates) {
155
+ return h("peculiar-certificate-chain-viewer", { certificates: cert, download: true });
164
156
  }
165
- if (this.certificateDecoded instanceof X509Certificate) {
166
- return (h("peculiar-certificate-viewer", { certificate: this.certificateDecoded, download: true }));
157
+ if (cert instanceof X509Certificate) {
158
+ return h("peculiar-certificate-viewer", { certificate: cert, download: true });
167
159
  }
168
- if (this.certificateDecoded instanceof X509AttributeCertificate) {
169
- return (h("peculiar-attribute-certificate-viewer", { certificate: this.certificateDecoded, download: true }));
160
+ if (cert instanceof X509AttributeCertificate) {
161
+ return h("peculiar-attribute-certificate-viewer", { certificate: cert, download: true });
170
162
  }
171
- if (this.certificateDecoded instanceof Pkcs10CertificateRequest) {
172
- return (h("peculiar-csr-viewer", { certificate: this.certificateDecoded, download: true }));
163
+ if (cert instanceof Pkcs10CertificateRequest) {
164
+ return h("peculiar-csr-viewer", { certificate: cert, download: true });
173
165
  }
174
- if (this.certificateDecoded instanceof X509Crl) {
175
- return (h("peculiar-crl-viewer", { certificate: this.certificateDecoded, download: true }));
166
+ if (cert instanceof X509Crl) {
167
+ return h("peculiar-crl-viewer", { certificate: cert, download: true });
176
168
  }
177
- if (this.certificateDecoded instanceof SshCertificate) {
178
- return (h("peculiar-ssh-certificate-viewer", { certificate: this.certificateDecoded, download: true }));
169
+ if (cert instanceof SshCertificate) {
170
+ return h("peculiar-ssh-certificate-viewer", { certificate: cert, download: true });
179
171
  }
180
172
  return null;
181
173
  }
174
+ // ─── Render ────────────────────────────────────────────────────────────────
182
175
  render() {
183
- var _a;
184
- 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()));
176
+ var _a, _b, _c;
177
+ const hasDecoded = !!this.certificateDecoded;
178
+ return (h(Host, { key: 'b10a85e97ef69c8a604bbd25505f7479b6653fd5', class: "relative grid h-full min-h-0 w-full grid-cols-1 overflow-hidden bg-gray-100 font-sans min-[821px]:grid-cols-2 max-[820px]:h-auto" }, h("div", { key: 'a1c72b0fe3f7d9fcba8c99e70d03941402dd63e9', class: "pointer-events-none absolute inset-y-0 left-1/2 hidden w-px -translate-x-1/2 bg-gray-200 min-[821px]:block", "aria-hidden": "true" }), h("div", { key: '1132570fba04a4fd2d7d987aa4e4125293647831', class: "flex min-h-0 flex-col overflow-hidden bg-white max-[820px]:min-h-64 max-[820px]:border-b max-[820px]:border-gray-200" }, h("div", { key: '68777e441ca9dc8436aaa740568591bd32fbd1c1', class: "flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2" }, h("span", { key: '73c91874a01ffd1e71730fa6baa6fc39dfdbad48', class: "flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500" }, h("svg", { key: 'b941fb650a45a4bf343cc78fc8d67be95a953db8', width: "12", height: "12", class: "shrink-0 text-blue-600 opacity-80", fill: "none", stroke: "currentColor", "stroke-width": "2", viewBox: "0 0 24 24" }, h("path", { key: 'aedddea976fb561a484c2215554d0c51955230e7', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" })), "Encoded Input"), h("div", { key: '9de9c3455df6a6d8f3508c9a2281d7de3a777b60', class: "flex shrink-0 items-center gap-1" }, h("label", { key: '86c37fb19f443162ae90c0d5c5e606c4b2277a2c', class: "inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40", title: "Load from file" }, h("svg", { key: '1361245e162d9c6489d8c56f5e96ea2c86911586', width: "11", height: "11", fill: "none", stroke: "currentColor", "stroke-width": "2", viewBox: "0 0 24 24" }, h("path", { key: 'd5695c059e93ef1c678e4aa399073bf8b3b7a0d0', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" })), "Upload", h("input", { key: '2433c5574069a6af91817e665aa4a1cbf8714202', type: "file", accept: ".pem,.crt,.cer,.der,.csr,.req,.crl,.pub,application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl", class: "hidden", onChange: this.handleChangeInputFile })), h("button", { key: '1d01d274731fd905d2486cb032134d273e158c09', type: "button", class: "inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40", disabled: !hasDecoded && !((_a = this.inputPaste) === null || _a === void 0 ? void 0 : _a.value), onClick: this.handleClickClear }, "Clear"), h("button", { key: '2a61f7389e33af5d8d40f37dfb7d64e4fe35fd11', type: "button", class: "inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md bg-blue-600 px-2.5 py-1 font-mono text-xs tracking-wide text-white transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40", disabled: !hasDecoded && !((_b = this.inputPaste) === null || _b === void 0 ? void 0 : _b.value), onClick: this.handleClickDecode }, "Decode \u2192"))), h("textarea", { key: '5cbe9f954a48172b6864caa79e03bdb6f6013d2e', class: "min-h-0 w-full flex-1 resize-none border-0 bg-gray-100 px-4 py-4 font-mono text-xs leading-snug tracking-wide text-blue-800 caret-blue-600 outline-none transition-colors duration-150 placeholder:italic placeholder:text-gray-400 focus:bg-white", placeholder: 'Paste a PEM or Base64 DER certificate here,\nor drag & drop a .pem / .crt file…\n\n-----BEGIN CERTIFICATE-----\nMIIFaz…\n-----END CERTIFICATE-----', ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDrop })), h("div", { key: '36eaa346ed4141aeb99edf33c246b9de9f7b9c84', class: "flex min-h-0 flex-col overflow-hidden bg-white" }, h("div", { key: 'a813ddd50b1c9a6a9a058151b4c20d40a8cced7f', class: "flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2" }, h("span", { key: 'fc0af480d3429cc2f962d978d016cbe0e7ec3908', class: "flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500" }, h("svg", { key: '499d2bdf5850dde73561d92d7dada39aedf105a4', width: "12", height: "12", class: "shrink-0 text-blue-600 opacity-80", fill: "none", stroke: "currentColor", "stroke-width": "2", viewBox: "0 0 24 24" }, h("path", { key: '2fce5fabcdb01f44a67f2a6d137c1af93ef249c7', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" })), "Decoded Output"), ((_c = this.certificateExamples) === null || _c === void 0 ? void 0 : _c.length) > 0 && (h("div", { key: 'bfc616a607db1a50924941f4fa0c66d43da22bfd', class: "relative max-w-xs shrink" }, h("select", { key: 'e4c9df4dade5107f303212a73a187d45db9499e5', class: "w-full max-w-xs cursor-pointer appearance-none rounded-md border border-gray-300 bg-white py-1 pl-2 pr-8 font-mono text-xs text-gray-700 transition-colors hover:border-blue-600 focus:border-blue-600 focus:outline-none", onChange: this.handleChangeExample }, h("option", { key: '4a67fce0e2e1a2a7d4c54049eaa399205bc2e3bf', value: "" }, "Load example\u2026"), this.certificateExamples.map((ex) => (h("option", { value: ex.value }, ex.title)))), h("svg", { key: '676e9637a861bbf70c8c9959b6405a7aec1a6956', class: "pointer-events-none absolute right-2 top-1/2 size-2.5 -translate-y-1/2 text-gray-500", fill: "none", stroke: "currentColor", "stroke-width": "1.5", viewBox: "0 0 10 6", "aria-hidden": "true" }, h("path", { key: 'b25127cda325d4efef2254310ac78a27d2af7f38', "stroke-linecap": "round", "stroke-linejoin": "round", d: "M1 1l4 4 4-4" }))))), h("div", { key: 'b803678828c280c0463ccb1080ac67a5634c29af', class: "min-h-0 flex-1 overflow-y-auto bg-white [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:rounded-md [&::-webkit-scrollbar-thumb]:bg-gray-300 hover:[&::-webkit-scrollbar-thumb]:bg-gray-400" }, !hasDecoded
179
+ ? this.renderPlaceholder()
180
+ : this.renderDecodedComponent()))));
181
+ }
182
+ renderPlaceholder() {
183
+ return (h("div", { class: "flex h-full flex-col items-center justify-center gap-3 p-10" }, h("div", { class: "flex size-12 items-center justify-center rounded-full border border-gray-200 bg-gray-100 text-gray-400" }, h("svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", viewBox: "0 0 24 24" }, h("path", { "stroke-linecap": "round", "stroke-linejoin": "round", d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }))), h("p", { class: "text-center font-mono text-xs leading-relaxed text-gray-400" }, "Paste a certificate on the left", h("br", null), "and click", ' ', h("strong", { class: "font-semibold text-blue-600" }, "Decode"), ' ', "\u2014 or load an example.")));
185
184
  }
186
- static get style() { return certificateDecoderCss; }
187
- }, [257, "peculiar-certificate-decoder", {
185
+ }, [256, "peculiar-certificate-decoder", {
188
186
  "certificateExamples": [16],
189
187
  "certificateToDecode": [1, "certificate-to-decode"],
190
188
  "certificateDecoded": [32]
@@ -1 +1 @@
1
- {"file":"peculiar-certificate-decoder.js","mappings":"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","names":["Convert","__stencil_proxyCustomElement"],"sources":["../../node_modules/@peculiar/asn1-cms/build/es2015/object_identifiers.js","src/crypto/x509_certificates.ts","src/components/certificate-decoder/certificate-decoder.scss?tag=peculiar-certificate-decoder&encapsulation=shadow","src/components/certificate-decoder/certificate-decoder.tsx"],"sourcesContent":["export const id_ct_contentInfo = \"1.2.840.113549.1.9.16.1.6\";\nexport const id_data = \"1.2.840.113549.1.7.1\";\nexport const id_signedData = \"1.2.840.113549.1.7.2\";\nexport const id_envelopedData = \"1.2.840.113549.1.7.3\";\nexport const id_digestedData = \"1.2.840.113549.1.7.5\";\nexport const id_encryptedData = \"1.2.840.113549.1.7.6\";\nexport const id_authData = \"1.2.840.113549.1.9.16.1.2\";\n","import { Convert } from 'pvtsutils';\nimport {\n SignedData,\n id_data,\n EncapsulatedContent,\n CertificateSet,\n CertificateChoices,\n ContentInfo,\n id_signedData,\n} from '@peculiar/asn1-cms';\nimport { Certificate } from '@peculiar/asn1-x509';\nimport { AsnConvert, OctetString } from '@peculiar/asn1-schema';\nimport { Download } from '../utils';\nimport { PemConverter } from './pem_converter';\nimport { X509Certificate } from './x509_certificate';\n\nexport class X509Certificates extends Array<X509Certificate> {\n constructor(raw: string) {\n super();\n\n const rawItems = PemConverter.isPem(raw)\n ? PemConverter.decode(raw).map((value) => Convert.ToBase64Url(value))\n : raw.split(',');\n\n if (rawItems.length < 2) {\n throw new Error('Unable to parse string. The array of elements is less than 2');\n }\n\n for (const item of rawItems) {\n this.push(new X509Certificate(item));\n }\n }\n\n public get commonName(): string {\n return Array.from(this)\n .map((o) => o.commonName)\n .join('_');\n }\n\n public get raw(): ArrayBuffer {\n const signedData = new SignedData();\n\n signedData.version = 1;\n signedData.encapContentInfo.eContentType = id_data;\n signedData.encapContentInfo.eContent = new EncapsulatedContent({ single: new OctetString() });\n signedData.certificates = new CertificateSet(\n Array.from(this)\n .map((o) => new CertificateChoices({ certificate: AsnConvert.parse(o.raw, Certificate) })),\n );\n\n const cms = new ContentInfo({\n contentType: id_signedData,\n content: AsnConvert.serialize(signedData),\n });\n\n return AsnConvert.serialize(cms);\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return Array.from(this)\n .map((o) => o.toString('pem'))\n .join('\\n');\n case 'base64url':\n return Array.from(this)\n .map((o) => o.toString('base64url'))\n .join(',');\n default:\n return Array.from(this)\n .map((o) => o.toString('base64'))\n .join(',');\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","@use '../../css/base.scss';\n\n:host {\n display: block;\n width: 100%;\n}\n\n.textarea {\n min-height: 300px;\n width: 100%;\n border-radius: 4px;\n border: 1px solid var(--pv-color-gray-5);;\n padding: 14px;\n font-family: monospace;\n resize: vertical;\n}\n\n.controls {\n margin-top: calc(var(--pv-size-base) * 2);\n display: flex;\n flex-direction: column;\n gap: calc(var(--pv-size-base) * 2);\n margin-bottom: calc(var(--pv-size-base) * 12);\n}\n\n.control_row {\n display: flex;\n align-items: center;\n gap: var(--pv-size-base);\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 */\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"],"version":3}
1
+ {"file":"peculiar-certificate-decoder.js","mappings":"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","names":["Convert","__stencil_proxyCustomElement"],"sources":["../../node_modules/@peculiar/asn1-cms/build/es2015/object_identifiers.js","src/crypto/x509_certificates.ts","src/components/certificate-decoder/certificate-decoder.tsx"],"sourcesContent":["export const id_ct_contentInfo = \"1.2.840.113549.1.9.16.1.6\";\nexport const id_data = \"1.2.840.113549.1.7.1\";\nexport const id_signedData = \"1.2.840.113549.1.7.2\";\nexport const id_envelopedData = \"1.2.840.113549.1.7.3\";\nexport const id_digestedData = \"1.2.840.113549.1.7.5\";\nexport const id_encryptedData = \"1.2.840.113549.1.7.6\";\nexport const id_authData = \"1.2.840.113549.1.9.16.1.2\";\n","import { Convert } from 'pvtsutils';\nimport {\n SignedData,\n id_data,\n EncapsulatedContent,\n CertificateSet,\n CertificateChoices,\n ContentInfo,\n id_signedData,\n} from '@peculiar/asn1-cms';\nimport { Certificate } from '@peculiar/asn1-x509';\nimport { AsnConvert, OctetString } from '@peculiar/asn1-schema';\nimport { Download } from '../utils';\nimport { PemConverter } from './pem_converter';\nimport { X509Certificate } from './x509_certificate';\n\nexport class X509Certificates extends Array<X509Certificate> {\n constructor(raw: string) {\n super();\n\n const rawItems = PemConverter.isPem(raw)\n ? PemConverter.decode(raw).map((value) => Convert.ToBase64Url(value))\n : raw.split(',');\n\n if (rawItems.length < 2) {\n throw new Error('Unable to parse string. The array of elements is less than 2');\n }\n\n for (const item of rawItems) {\n this.push(new X509Certificate(item));\n }\n }\n\n public get commonName(): string {\n return Array.from(this)\n .map((o) => o.commonName)\n .join('_');\n }\n\n public get raw(): ArrayBuffer {\n const signedData = new SignedData();\n\n signedData.version = 1;\n signedData.encapContentInfo.eContentType = id_data;\n signedData.encapContentInfo.eContent = new EncapsulatedContent({ single: new OctetString() });\n signedData.certificates = new CertificateSet(\n Array.from(this)\n .map((o) => new CertificateChoices({ certificate: AsnConvert.parse(o.raw, Certificate) })),\n );\n\n const cms = new ContentInfo({\n contentType: id_signedData,\n content: AsnConvert.serialize(signedData),\n });\n\n return AsnConvert.serialize(cms);\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return Array.from(this)\n .map((o) => o.toString('pem'))\n .join('\\n');\n case 'base64url':\n return Array.from(this)\n .map((o) => o.toString('base64url'))\n .join(',');\n default:\n return Array.from(this)\n .map((o) => o.toString('base64'))\n .join(',');\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","/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Host,\n h,\n State,\n Prop,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { readAsBinaryString } from '../../utils';\nimport {\n X509Certificate,\n X509AttributeCertificate,\n Pkcs10CertificateRequest,\n X509Crl,\n X509Certificates,\n SshCertificate,\n} from '../../crypto';\n\n@Component({\n tag: 'peculiar-certificate-decoder',\n shadow: false,\n})\nexport class CertificateDecoder {\n private inputPaste?: HTMLTextAreaElement;\n\n /**\n * Pre-loaded example certificates available in the \"Load example\" dropdown.\n */\n @Prop() certificateExamples?: {\n title: string;\n value: string;\n }[];\n\n /**\n * A certificate to decode on first load (PEM or Base64 DER).\n */\n @Prop() certificateToDecode?: string;\n\n /** The decoded certificate object; null while empty. */\n @State() certificateDecoded: X509Certificates\n | X509Certificate\n | X509AttributeCertificate\n | Pkcs10CertificateRequest\n | X509Crl\n | SshCertificate;\n\n /** Emitted when a certificate has been successfully parsed. */\n @Event() successParse!: EventEmitter<string>;\n\n /** Emitted when the input has been cleared. */\n @Event() clearCertificate!: EventEmitter<void>;\n\n // ─── Lifecycle ─────────────────────────────────────────────────────────────\n\n componentDidLoad() {\n if (this.certificateToDecode) {\n // Defer one tick to avoid Stencil re-render warning\n setTimeout(() => this.decode(this.certificateToDecode), 100);\n }\n }\n\n // ─── Handlers ──────────────────────────────────────────────────────────────\n\n private handleClickDecode = () => {\n const { value } = this.inputPaste;\n\n if (value) this.decode(value);\n };\n\n private handleClickClear = () => {\n this.clearValue();\n };\n\n private handleChangeInputFile = async (event: Event) => {\n const el = event.target as HTMLInputElement;\n\n if (el.files?.length) {\n const file = await readAsBinaryString(el.files[0]);\n\n if (typeof file.value === 'string') this.decode(file.value);\n el.value = '';\n }\n };\n\n private handleChangeExample = (event: Event) => {\n const val = (event.target as HTMLSelectElement).value;\n\n if (val) this.decode(val);\n else this.clearValue();\n };\n\n private handleDrop = async (event: DragEvent) => {\n event.stopPropagation();\n event.preventDefault();\n const files = event.dataTransfer?.files;\n\n if (files?.length) {\n const file = await readAsBinaryString(files[0]);\n\n if (typeof file.value === 'string') this.decode(file.value);\n }\n };\n\n // ─── Core operations ───────────────────────────────────────────────────────\n\n clearValue() {\n this.inputPaste.value = '';\n this.certificateDecoded = null;\n this.clearCertificate.emit();\n }\n\n async setValue(value: typeof this.certificateDecoded) {\n this.certificateDecoded = value;\n this.inputPaste.value = await value.toString('pem');\n this.successParse.emit(await value.toString('base64url'));\n }\n\n async decode(value: string) {\n new Promise<X509Certificates>((resolve) => resolve(new X509Certificates(value)))\n .catch(() => new X509Certificate(value))\n .catch(() => new X509AttributeCertificate(value))\n .catch(() => new Pkcs10CertificateRequest(value))\n .catch(() => new X509Crl(value))\n .catch(() => new SshCertificate(value))\n .then((res: typeof this.certificateDecoded) => this.setValue(res))\n .catch((err) => {\n console.error(err);\n alert(`Error decoding certificate.\\n\\nSupported formats: X.509 Certificate, Attribute Certificate, PKCS#10 CSR, CRL, SSH Certificate.`);\n });\n }\n\n // ─── Render helpers ────────────────────────────────────────────────────────\n\n private renderDecodedComponent() {\n const cert = this.certificateDecoded;\n\n if (cert instanceof X509Certificates) {\n return <peculiar-certificate-chain-viewer certificates={cert} download />;\n }\n\n if (cert instanceof X509Certificate) {\n return <peculiar-certificate-viewer certificate={cert} download />;\n }\n\n if (cert instanceof X509AttributeCertificate) {\n return <peculiar-attribute-certificate-viewer certificate={cert} download />;\n }\n\n if (cert instanceof Pkcs10CertificateRequest) {\n return <peculiar-csr-viewer certificate={cert} download />;\n }\n\n if (cert instanceof X509Crl) {\n return <peculiar-crl-viewer certificate={cert} download />;\n }\n\n if (cert instanceof SshCertificate) {\n return <peculiar-ssh-certificate-viewer certificate={cert} download />;\n }\n\n return null;\n }\n\n // ─── Render ────────────────────────────────────────────────────────────────\n\n render() {\n const hasDecoded = !!this.certificateDecoded;\n\n return (\n <Host class=\"relative grid h-full min-h-0 w-full grid-cols-1 overflow-hidden bg-gray-100 font-sans min-[821px]:grid-cols-2 max-[820px]:h-auto\">\n <div\n class=\"pointer-events-none absolute inset-y-0 left-1/2 hidden w-px -translate-x-1/2 bg-gray-200 min-[821px]:block\"\n aria-hidden=\"true\"\n />\n\n {/* ══════════════════════ LEFT PANE — INPUT ══════════════════════ */}\n <div class=\"flex min-h-0 flex-col overflow-hidden bg-white max-[820px]:min-h-64 max-[820px]:border-b max-[820px]:border-gray-200\">\n\n <div class=\"flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2\">\n <span class=\"flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500\">\n <svg\n width=\"12\" height=\"12\"\n class=\"shrink-0 text-blue-600 opacity-80\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\n />\n </svg>\n Encoded Input\n </span>\n\n <div class=\"flex shrink-0 items-center gap-1\">\n <label\n class=\"inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40\"\n title=\"Load from file\"\n >\n <svg\n width=\"11\" height=\"11\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12\"\n />\n </svg>\n Upload\n <input\n type=\"file\"\n accept=\".pem,.crt,.cer,.der,.csr,.req,.crl,.pub,application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl\"\n class=\"hidden\"\n onChange={this.handleChangeInputFile}\n />\n </label>\n\n <button\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md border border-gray-300 bg-white px-2.5 py-1 font-mono text-xs tracking-wide text-gray-700 transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40\"\n disabled={!hasDecoded && !this.inputPaste?.value}\n onClick={this.handleClickClear}\n >\n Clear\n </button>\n\n <button\n type=\"button\"\n class=\"inline-flex cursor-pointer items-center gap-1.5 whitespace-nowrap rounded-md bg-blue-600 px-2.5 py-1 font-mono text-xs tracking-wide text-white transition-all duration-150 hover:opacity-80 disabled:pointer-events-none disabled:cursor-default disabled:opacity-40\"\n disabled={!hasDecoded && !this.inputPaste?.value}\n onClick={this.handleClickDecode}\n >\n Decode →\n </button>\n </div>\n </div>\n\n <textarea\n class=\"min-h-0 w-full flex-1 resize-none border-0 bg-gray-100 px-4 py-4 font-mono text-xs leading-snug tracking-wide text-blue-800 caret-blue-600 outline-none transition-colors duration-150 placeholder:italic placeholder:text-gray-400 focus:bg-white\"\n placeholder={'Paste a PEM or Base64 DER certificate here,\\nor drag & drop a .pem / .crt file…\\n\\n-----BEGIN CERTIFICATE-----\\nMIIFaz…\\n-----END CERTIFICATE-----'}\n ref={(el) => { this.inputPaste = el as HTMLTextAreaElement; }}\n onDrop={this.handleDrop}\n />\n </div>\n\n {/* ══════════════════════ RIGHT PANE — OUTPUT ══════════════════════ */}\n <div class=\"flex min-h-0 flex-col overflow-hidden bg-white\">\n <div class=\"flex shrink-0 items-center justify-between gap-2 border-b border-gray-200 bg-gray-100 px-4 py-2\">\n <span class=\"flex items-center gap-1.5 font-mono text-xs uppercase tracking-widest text-gray-500\">\n <svg\n width=\"12\" height=\"12\"\n class=\"shrink-0 text-blue-600 opacity-80\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"2\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z\"\n />\n </svg>\n Decoded Output\n </span>\n\n {this.certificateExamples?.length > 0 && (\n <div class=\"relative max-w-xs shrink\">\n <select\n class=\"w-full max-w-xs cursor-pointer appearance-none rounded-md border border-gray-300 bg-white py-1 pl-2 pr-8 font-mono text-xs text-gray-700 transition-colors hover:border-blue-600 focus:border-blue-600 focus:outline-none\"\n onChange={this.handleChangeExample}\n >\n <option value=\"\">Load example…</option>\n {this.certificateExamples.map((ex) => (\n <option value={ex.value}>{ex.title}</option>\n ))}\n </select>\n <svg\n class=\"pointer-events-none absolute right-2 top-1/2 size-2.5 -translate-y-1/2 text-gray-500\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\"\n viewBox=\"0 0 10 6\"\n aria-hidden=\"true\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M1 1l4 4 4-4\"\n />\n </svg>\n </div>\n )}\n </div>\n\n <div class=\"min-h-0 flex-1 overflow-y-auto bg-white [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:rounded-md [&::-webkit-scrollbar-thumb]:bg-gray-300 hover:[&::-webkit-scrollbar-thumb]:bg-gray-400\">\n {!hasDecoded\n ? this.renderPlaceholder()\n : this.renderDecodedComponent()}\n </div>\n </div>\n\n </Host>\n );\n }\n\n private renderPlaceholder() {\n return (\n <div class=\"flex h-full flex-col items-center justify-center gap-3 p-10\">\n <div class=\"flex size-12 items-center justify-center rounded-full border border-gray-200 bg-gray-100 text-gray-400\">\n <svg\n width=\"24\" height=\"24\"\n fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1.5\" viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\"\n />\n </svg>\n </div>\n <p class=\"text-center font-mono text-xs leading-relaxed text-gray-400\">\n Paste a certificate on the left\n <br />\n and click\n {' '}\n <strong class=\"font-semibold text-blue-600\">Decode</strong>\n {' '}\n — or load an example.\n </p>\n </div>\n );\n }\n}\n"],"version":3}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { h, proxyCustomElement, HTMLElement, createEvent, Build, Host } from '@stencil/core/internal/client';
5
5
  import { X as X509Certificate, d as defineCustomElement$4 } from './certificate-viewer.js';
6
- import { l as l10n, _ as dateShort, a as DownloadIcon, Z as OIDs } from './download.js';
6
+ import { l as l10n, a5 as dateShort, a as DownloadIcon, Z as OIDs } from './download.js';
7
7
  import { T as Typography, B as Button } from './button.js';
8
8
  import { D as DetailsIcon, L as LinkIcon, C as CrossIcon } from './cross.js';
9
9
  import { a as ArrowTopIcon, A as ArrowBottomIcon } from './arrow_top.js';
@@ -2,7 +2,7 @@
2
2
  * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
3
  */
4
4
  import { h, proxyCustomElement, HTMLElement, Build, Host } from '@stencil/core/internal/client';
5
- import { l as l10n, _ as dateShort, a as DownloadIcon, a9 as SshCertificate } from './download.js';
5
+ import { l as l10n, a5 as dateShort, a as DownloadIcon, a4 as SshCertificate } from './download.js';
6
6
  import { B as Button, T as Typography } from './button.js';
7
7
  import { R as RowTitle, a as RowValue, g as getStringByOID } from './row.js';
8
8
  import { d as defineCustomElement$1 } from './text-hider.js';
@@ -85,7 +85,7 @@ const SshMiscellaneous = (props) => {
85
85
  ];
86
86
  };
87
87
 
88
- const certificateViewerCss = "*{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:transparent;font-family:var(--pv-font-family, inherit)}.t-h1{font-weight:var(--pv-text-h1-weight);font-size:var(--pv-text-h1-size);line-height:var(--pv-text-h1-height);letter-spacing:var(--pv-text-h1-spacing)}.t-h2{font-weight:var(--pv-text-h2-weight);font-size:var(--pv-text-h2-size);line-height:var(--pv-text-h2-height);letter-spacing:var(--pv-text-h2-spacing)}.t-h3{font-weight:var(--pv-text-h3-weight);font-size:var(--pv-text-h3-size);line-height:var(--pv-text-h3-height);letter-spacing:var(--pv-text-h3-spacing)}.t-h4{font-weight:var(--pv-text-h4-weight);font-size:var(--pv-text-h4-size);line-height:var(--pv-text-h4-height);letter-spacing:var(--pv-text-h4-spacing)}.t-h5{font-weight:var(--pv-text-h5-weight);font-size:var(--pv-text-h5-size);line-height:var(--pv-text-h5-height);letter-spacing:var(--pv-text-h5-spacing)}.t-s1{font-weight:var(--pv-text-s1-weight);font-size:var(--pv-text-s1-size);line-height:var(--pv-text-s1-height);letter-spacing:var(--pv-text-s1-spacing)}.t-s2{font-weight:var(--pv-text-s2-weight);font-size:var(--pv-text-s2-size);line-height:var(--pv-text-s2-height);letter-spacing:var(--pv-text-s2-spacing)}.t-b1{font-weight:var(--pv-text-b1-weight);font-size:var(--pv-text-b1-size);line-height:var(--pv-text-b1-height);letter-spacing:var(--pv-text-b1-spacing)}.t-b2{font-weight:var(--pv-text-b2-weight);font-size:var(--pv-text-b2-size);line-height:var(--pv-text-b2-height);letter-spacing:var(--pv-text-b2-spacing)}.t-b3{font-weight:var(--pv-text-b3-weight);font-size:var(--pv-text-b3-size);line-height:var(--pv-text-b3-height);letter-spacing:var(--pv-text-b3-spacing)}.t-btn1{font-weight:var(--pv-text-btn1-weight);font-size:var(--pv-text-btn1-size);line-height:var(--pv-text-btn1-height);letter-spacing:var(--pv-text-btn1-spacing)}.t-btn2{font-weight:var(--pv-text-btn2-weight);font-size:var(--pv-text-btn2-size);line-height:var(--pv-text-btn2-height);letter-spacing:var(--pv-text-btn2-spacing)}.t-c1{font-weight:var(--pv-text-c1-weight);font-size:var(--pv-text-c1-size);line-height:var(--pv-text-c1-height);letter-spacing:var(--pv-text-c1-spacing)}.t-c2{font-weight:var(--pv-text-c2-weight);font-size:var(--pv-text-c2-size);line-height:var(--pv-text-c2-height);letter-spacing:var(--pv-text-c2-spacing)}.c-primary-tint-5{--pv-color-base:var(--pv-color-primary-tint-5)}.c-primary-tint-4{--pv-color-base:var(--pv-color-primary-tint-4)}.c-primary-tint-3{--pv-color-base:var(--pv-color-primary-tint-3)}.c-primary-tint-2{--pv-color-base:var(--pv-color-primary-tint-2)}.c-primary-tint-1{--pv-color-base:var(--pv-color-primary-tint-1)}.c-primary{--pv-color-base:var(--pv-color-primary)}.c-primary-shade-1{--pv-color-base:var(--pv-color-primary-shade-1)}.c-primary-shade-2{--pv-color-base:var(--pv-color-primary-shade-2)}.c-primary-shade-3{--pv-color-base:var(--pv-color-primary-shade-3)}.c-primary-shade-4{--pv-color-base:var(--pv-color-primary-shade-4)}.c-primary-shade-5{--pv-color-base:var(--pv-color-primary-shade-5)}.c-primary-contrast{--pv-color-base:var(--pv-color-primary-contrast)}.c-secondary-tint-5{--pv-color-base:var(--pv-color-secondary-tint-5)}.c-secondary-tint-4{--pv-color-base:var(--pv-color-secondary-tint-4)}.c-secondary-tint-3{--pv-color-base:var(--pv-color-secondary-tint-3)}.c-secondary-tint-2{--pv-color-base:var(--pv-color-secondary-tint-2)}.c-secondary-tint-1{--pv-color-base:var(--pv-color-secondary-tint-1)}.c-secondary{--pv-color-base:var(--pv-color-secondary)}.c-secondary-shade-1{--pv-color-base:var(--pv-color-secondary-shade-1)}.c-secondary-shade-2{--pv-color-base:var(--pv-color-secondary-shade-2)}.c-secondary-shade-3{--pv-color-base:var(--pv-color-secondary-shade-3)}.c-secondary-shade-4{--pv-color-base:var(--pv-color-secondary-shade-4)}.c-secondary-shade-5{--pv-color-base:var(--pv-color-secondary-shade-5)}.c-secondary-contrast{--pv-color-base:var(--pv-color-secondary-contrast)}.c-wrong-tint-5{--pv-color-base:var(--pv-color-wrong-tint-5)}.c-wrong-tint-4{--pv-color-base:var(--pv-color-wrong-tint-4)}.c-wrong-tint-3{--pv-color-base:var(--pv-color-wrong-tint-3)}.c-wrong-tint-2{--pv-color-base:var(--pv-color-wrong-tint-2)}.c-wrong-tint-1{--pv-color-base:var(--pv-color-wrong-tint-1)}.c-wrong{--pv-color-base:var(--pv-color-wrong)}.c-wrong-shade-1{--pv-color-base:var(--pv-color-wrong-shade-1)}.c-wrong-shade-2{--pv-color-base:var(--pv-color-wrong-shade-2)}.c-wrong-shade-3{--pv-color-base:var(--pv-color-wrong-shade-3)}.c-wrong-shade-4{--pv-color-base:var(--pv-color-wrong-shade-4)}.c-wrong-shade-5{--pv-color-base:var(--pv-color-wrong-shade-5)}.c-wrong-contrast{--pv-color-base:var(--pv-color-wrong-contrast)}.c-attention-tint-5{--pv-color-base:var(--pv-color-attention-tint-5)}.c-attention-tint-4{--pv-color-base:var(--pv-color-attention-tint-4)}.c-attention-tint-3{--pv-color-base:var(--pv-color-attention-tint-3)}.c-attention-tint-2{--pv-color-base:var(--pv-color-attention-tint-2)}.c-attention-tint-1{--pv-color-base:var(--pv-color-attention-tint-1)}.c-attention{--pv-color-base:var(--pv-color-attention)}.c-attention-shade-1{--pv-color-base:var(--pv-color-attention-shade-1)}.c-attention-shade-2{--pv-color-base:var(--pv-color-attention-shade-2)}.c-attention-shade-3{--pv-color-base:var(--pv-color-attention-shade-3)}.c-attention-shade-4{--pv-color-base:var(--pv-color-attention-shade-4)}.c-attention-shade-5{--pv-color-base:var(--pv-color-attention-shade-5)}.c-success-tint-5{--pv-color-base:var(--pv-color-success-tint-5)}.c-success-tint-4{--pv-color-base:var(--pv-color-success-tint-4)}.c-success-tint-3{--pv-color-base:var(--pv-color-success-tint-3)}.c-success-tint-2{--pv-color-base:var(--pv-color-success-tint-2)}.c-success-tint-1{--pv-color-base:var(--pv-color-success-tint-1)}.c-success{--pv-color-base:var(--pv-color-success)}.c-success-shade-1{--pv-color-base:var(--pv-color-success-shade-1)}.c-success-shade-2{--pv-color-base:var(--pv-color-success-shade-2)}.c-success-shade-3{--pv-color-base:var(--pv-color-success-shade-3)}.c-success-shade-4{--pv-color-base:var(--pv-color-success-shade-4)}.c-success-shade-5{--pv-color-base:var(--pv-color-success-shade-5)}.c-black{--pv-color-base:var(--pv-color-black)}.c-gray-10{--pv-color-base:var(--pv-color-gray-10)}.c-gray-9{--pv-color-base:var(--pv-color-gray-9)}.c-gray-8{--pv-color-base:var(--pv-color-gray-8)}.c-gray-7{--pv-color-base:var(--pv-color-gray-7)}.c-gray-6{--pv-color-base:var(--pv-color-gray-6)}.c-gray-5{--pv-color-base:var(--pv-color-gray-5)}.c-gray-4{--pv-color-base:var(--pv-color-gray-4)}.c-gray-3{--pv-color-base:var(--pv-color-gray-3)}.c-gray-2{--pv-color-base:var(--pv-color-gray-2)}.c-gray-1{--pv-color-base:var(--pv-color-gray-1)}.c-white{--pv-color-base:var(--pv-color-white)}.c-extra-1{--pv-color-base:var(--pv-color-extra-1)}.c-extra-2{--pv-color-base:var(--pv-color-extra-2)}.typography{color:var(--pv-color-base)}.button{display:-ms-inline-flexbox;display:inline-flex;cursor:pointer;background:transparent;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;outline:none;font-family:inherit;border-radius:4px;height:calc(var(--pv-size-base) * 6);min-width:calc(var(--pv-size-base) * 6);padding:0 calc(var(--pv-size-base) * 2);-webkit-transition:background-color 200ms ease 0s;transition:background-color 200ms ease 0s;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;gap:calc(var(--pv-size-base) * 2);font-size:0}.button.m_no_padding{padding:0}.button:hover{background-color:var(--pv-color-gray-3)}.button:focus{background-color:var(--pv-color-gray-4)}.button:active{background-color:var(--pv-color-gray-5)}:host{display:block;width:100%;position:relative;min-width:280px;min-height:300px;word-wrap:break-word;word-break:break-word;--pv-certificate-viewer-td-horizontal-padding:calc(var(--pv-size-base) * 4)}th,td{border:none}table{width:100%;border-spacing:0;border-collapse:collapse}table tr:last-child .divider{display:none}table td{padding:calc(var(--pv-size-base) * 2) var(--pv-certificate-viewer-td-horizontal-padding);vertical-align:top}table td:first-child{width:220px}table td:last-child{width:calc(100% - 220px)}table td.monospace{max-width:0}table td.divider{padding:calc(var(--pv-size-base) * 2) 0}table td.divider span{height:1px;display:block;background-color:var(--pv-color-gray-4)}table .title td{padding-top:calc(var(--pv-size-base) * 6);padding-bottom:calc(var(--pv-size-base) * 2)}table table{border-left:1px solid var(--pv-color-gray-5)}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}:host([data-mobile-screen-view=true]) table,:host([data-mobile-screen-view=true]) tr,:host([data-mobile-screen-view=true]) td{display:block}:host([data-mobile-screen-view=true]) table tr{padding:calc(var(--pv-size-base) * 2) 0}:host([data-mobile-screen-view=true]) table tr.title{padding-top:calc(var(--pv-size-base) * 6)}:host([data-mobile-screen-view=true]) table tr.title td{padding:0 var(--pv-certificate-viewer-td-horizontal-padding)}:host([data-mobile-screen-view=true]) table td{padding:0 var(--pv-certificate-viewer-td-horizontal-padding);width:100% !important;max-width:100% !important}:host([data-mobile-screen-view=true]) table td.divider{padding:0}";
88
+ const certificateViewerCss = "*{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:transparent;font-family:var(--pv-font-family, inherit)}.t-h1{font-weight:var(--pv-text-h1-weight);font-size:var(--pv-text-h1-size);line-height:var(--pv-text-h1-height);letter-spacing:var(--pv-text-h1-spacing)}.t-h2{font-weight:var(--pv-text-h2-weight);font-size:var(--pv-text-h2-size);line-height:var(--pv-text-h2-height);letter-spacing:var(--pv-text-h2-spacing)}.t-h3{font-weight:var(--pv-text-h3-weight);font-size:var(--pv-text-h3-size);line-height:var(--pv-text-h3-height);letter-spacing:var(--pv-text-h3-spacing)}.t-h4{font-weight:var(--pv-text-h4-weight);font-size:var(--pv-text-h4-size);line-height:var(--pv-text-h4-height);letter-spacing:var(--pv-text-h4-spacing)}.t-h5{font-weight:var(--pv-text-h5-weight);font-size:var(--pv-text-h5-size);line-height:var(--pv-text-h5-height);letter-spacing:var(--pv-text-h5-spacing)}.t-s1{font-weight:var(--pv-text-s1-weight);font-size:var(--pv-text-s1-size);line-height:var(--pv-text-s1-height);letter-spacing:var(--pv-text-s1-spacing)}.t-s2{font-weight:var(--pv-text-s2-weight);font-size:var(--pv-text-s2-size);line-height:var(--pv-text-s2-height);letter-spacing:var(--pv-text-s2-spacing)}.t-b1{font-weight:var(--pv-text-b1-weight);font-size:var(--pv-text-b1-size);line-height:var(--pv-text-b1-height);letter-spacing:var(--pv-text-b1-spacing)}.t-b2{font-weight:var(--pv-text-b2-weight);font-size:var(--pv-text-b2-size);line-height:var(--pv-text-b2-height);letter-spacing:var(--pv-text-b2-spacing)}.t-b3{font-weight:var(--pv-text-b3-weight);font-size:var(--pv-text-b3-size);line-height:var(--pv-text-b3-height);letter-spacing:var(--pv-text-b3-spacing)}.t-btn1{font-weight:var(--pv-text-btn1-weight);font-size:var(--pv-text-btn1-size);line-height:var(--pv-text-btn1-height);letter-spacing:var(--pv-text-btn1-spacing)}.t-btn2{font-weight:var(--pv-text-btn2-weight);font-size:var(--pv-text-btn2-size);line-height:var(--pv-text-btn2-height);letter-spacing:var(--pv-text-btn2-spacing)}.t-c1{font-weight:var(--pv-text-c1-weight);font-size:var(--pv-text-c1-size);line-height:var(--pv-text-c1-height);letter-spacing:var(--pv-text-c1-spacing)}.t-c2{font-weight:var(--pv-text-c2-weight);font-size:var(--pv-text-c2-size);line-height:var(--pv-text-c2-height);letter-spacing:var(--pv-text-c2-spacing)}.c-primary-tint-5{--pv-color-base:var(--pv-color-primary-tint-5)}.c-primary-tint-4{--pv-color-base:var(--pv-color-primary-tint-4)}.c-primary-tint-3{--pv-color-base:var(--pv-color-primary-tint-3)}.c-primary-tint-2{--pv-color-base:var(--pv-color-primary-tint-2)}.c-primary-tint-1{--pv-color-base:var(--pv-color-primary-tint-1)}.c-primary{--pv-color-base:var(--pv-color-primary)}.c-primary-shade-1{--pv-color-base:var(--pv-color-primary-shade-1)}.c-primary-shade-2{--pv-color-base:var(--pv-color-primary-shade-2)}.c-primary-shade-3{--pv-color-base:var(--pv-color-primary-shade-3)}.c-primary-shade-4{--pv-color-base:var(--pv-color-primary-shade-4)}.c-primary-shade-5{--pv-color-base:var(--pv-color-primary-shade-5)}.c-primary-contrast{--pv-color-base:var(--pv-color-primary-contrast)}.c-secondary-tint-5{--pv-color-base:var(--pv-color-secondary-tint-5)}.c-secondary-tint-4{--pv-color-base:var(--pv-color-secondary-tint-4)}.c-secondary-tint-3{--pv-color-base:var(--pv-color-secondary-tint-3)}.c-secondary-tint-2{--pv-color-base:var(--pv-color-secondary-tint-2)}.c-secondary-tint-1{--pv-color-base:var(--pv-color-secondary-tint-1)}.c-secondary{--pv-color-base:var(--pv-color-secondary)}.c-secondary-shade-1{--pv-color-base:var(--pv-color-secondary-shade-1)}.c-secondary-shade-2{--pv-color-base:var(--pv-color-secondary-shade-2)}.c-secondary-shade-3{--pv-color-base:var(--pv-color-secondary-shade-3)}.c-secondary-shade-4{--pv-color-base:var(--pv-color-secondary-shade-4)}.c-secondary-shade-5{--pv-color-base:var(--pv-color-secondary-shade-5)}.c-secondary-contrast{--pv-color-base:var(--pv-color-secondary-contrast)}.c-wrong-tint-5{--pv-color-base:var(--pv-color-wrong-tint-5)}.c-wrong-tint-4{--pv-color-base:var(--pv-color-wrong-tint-4)}.c-wrong-tint-3{--pv-color-base:var(--pv-color-wrong-tint-3)}.c-wrong-tint-2{--pv-color-base:var(--pv-color-wrong-tint-2)}.c-wrong-tint-1{--pv-color-base:var(--pv-color-wrong-tint-1)}.c-wrong{--pv-color-base:var(--pv-color-wrong)}.c-wrong-shade-1{--pv-color-base:var(--pv-color-wrong-shade-1)}.c-wrong-shade-2{--pv-color-base:var(--pv-color-wrong-shade-2)}.c-wrong-shade-3{--pv-color-base:var(--pv-color-wrong-shade-3)}.c-wrong-shade-4{--pv-color-base:var(--pv-color-wrong-shade-4)}.c-wrong-shade-5{--pv-color-base:var(--pv-color-wrong-shade-5)}.c-wrong-contrast{--pv-color-base:var(--pv-color-wrong-contrast)}.c-attention-tint-5{--pv-color-base:var(--pv-color-attention-tint-5)}.c-attention-tint-4{--pv-color-base:var(--pv-color-attention-tint-4)}.c-attention-tint-3{--pv-color-base:var(--pv-color-attention-tint-3)}.c-attention-tint-2{--pv-color-base:var(--pv-color-attention-tint-2)}.c-attention-tint-1{--pv-color-base:var(--pv-color-attention-tint-1)}.c-attention{--pv-color-base:var(--pv-color-attention)}.c-attention-shade-1{--pv-color-base:var(--pv-color-attention-shade-1)}.c-attention-shade-2{--pv-color-base:var(--pv-color-attention-shade-2)}.c-attention-shade-3{--pv-color-base:var(--pv-color-attention-shade-3)}.c-attention-shade-4{--pv-color-base:var(--pv-color-attention-shade-4)}.c-attention-shade-5{--pv-color-base:var(--pv-color-attention-shade-5)}.c-success-tint-5{--pv-color-base:var(--pv-color-success-tint-5)}.c-success-tint-4{--pv-color-base:var(--pv-color-success-tint-4)}.c-success-tint-3{--pv-color-base:var(--pv-color-success-tint-3)}.c-success-tint-2{--pv-color-base:var(--pv-color-success-tint-2)}.c-success-tint-1{--pv-color-base:var(--pv-color-success-tint-1)}.c-success{--pv-color-base:var(--pv-color-success)}.c-success-shade-1{--pv-color-base:var(--pv-color-success-shade-1)}.c-success-shade-2{--pv-color-base:var(--pv-color-success-shade-2)}.c-success-shade-3{--pv-color-base:var(--pv-color-success-shade-3)}.c-success-shade-4{--pv-color-base:var(--pv-color-success-shade-4)}.c-success-shade-5{--pv-color-base:var(--pv-color-success-shade-5)}.c-black{--pv-color-base:var(--pv-color-black)}.c-gray-10{--pv-color-base:var(--pv-color-gray-10)}.c-gray-9{--pv-color-base:var(--pv-color-gray-9)}.c-gray-8{--pv-color-base:var(--pv-color-gray-8)}.c-gray-7{--pv-color-base:var(--pv-color-gray-7)}.c-gray-6{--pv-color-base:var(--pv-color-gray-6)}.c-gray-5{--pv-color-base:var(--pv-color-gray-5)}.c-gray-4{--pv-color-base:var(--pv-color-gray-4)}.c-gray-3{--pv-color-base:var(--pv-color-gray-3)}.c-gray-2{--pv-color-base:var(--pv-color-gray-2)}.c-gray-1{--pv-color-base:var(--pv-color-gray-1)}.c-white{--pv-color-base:var(--pv-color-white)}.c-extra-1{--pv-color-base:var(--pv-color-extra-1)}.c-extra-2{--pv-color-base:var(--pv-color-extra-2)}.typography{color:var(--pv-color-base)}.button{display:-ms-inline-flexbox;display:inline-flex;cursor:pointer;background:transparent;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;outline:none;font-family:inherit;border-radius:4px;height:calc(var(--pv-size-base) * 6);min-width:calc(var(--pv-size-base) * 6);padding:0 calc(var(--pv-size-base) * 2);-webkit-transition:background-color 200ms ease 0s;transition:background-color 200ms ease 0s;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;gap:calc(var(--pv-size-base) * 2);font-size:0}.button.m_no_padding{padding:0}.button:hover{background-color:var(--pv-color-gray-3)}.button:focus{background-color:var(--pv-color-gray-4)}.button:active{background-color:var(--pv-color-gray-5)}:host{display:block;width:100%;position:relative;min-width:280px;min-height:300px;word-wrap:break-word;word-break:break-word;--pv-certificate-viewer-td-horizontal-padding:calc(var(--pv-size-base) * 4)}th,td{border:none}table{width:100%;border-spacing:0;border-collapse:collapse}table tr:last-child .divider{display:none}table td{padding:calc(var(--pv-size-base) * 1) var(--pv-certificate-viewer-td-horizontal-padding);vertical-align:top}table td:first-child{width:220px}table td:last-child{width:calc(100% - 220px)}table td.monospace{max-width:0}table td.divider{padding:calc(var(--pv-size-base) * 1) 0}table td.divider span{height:1px;display:block;background-color:var(--pv-color-gray-4)}table .title td{padding-top:calc(var(--pv-size-base) * 6);padding-bottom:calc(var(--pv-size-base) * 1)}table table{border-left:1px solid var(--pv-color-gray-5)}.status_wrapper{min-height:inherit;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}:host([data-mobile-screen-view=true]) table,:host([data-mobile-screen-view=true]) tr,:host([data-mobile-screen-view=true]) td{display:block}:host([data-mobile-screen-view=true]) table tr{padding:calc(var(--pv-size-base) * 2) 0}:host([data-mobile-screen-view=true]) table tr.title{padding-top:calc(var(--pv-size-base) * 6)}:host([data-mobile-screen-view=true]) table tr.title td{padding:0 var(--pv-certificate-viewer-td-horizontal-padding)}:host([data-mobile-screen-view=true]) table td{padding:0 var(--pv-certificate-viewer-td-horizontal-padding);width:100% !important;max-width:100% !important}:host([data-mobile-screen-view=true]) table td.divider{padding:0}";
89
89
 
90
90
  const SshCertificateViewer = /*@__PURE__*/ proxyCustomElement(class SshCertificateViewer extends HTMLElement {
91
91
  constructor(registerHost) {
@@ -1 +1 @@
1
- {"file":"ssh-certificate-viewer.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/ssh-certificate-viewer/-components/basic_information.tsx","src/components/ssh-certificate-viewer/-components/public_key.tsx","src/components/ssh-certificate-viewer/-components/signature_key.tsx","src/components/ssh-certificate-viewer/-components/miscellaneous.tsx","src/components/certificate-viewer/certificate-viewer.scss?tag=peculiar-ssh-certificate-viewer&encapsulation=shadow","src/components/ssh-certificate-viewer/ssh-certificate-viewer.tsx"],"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 { RowTitle, RowValue } from '../../certificate-details-parts/row';\nimport { dateShort, l10n } from '../../../utils';\n\ninterface ISshBasicInformationProps {\n serialNumber: string;\n validity: string;\n notBefore: Date;\n notAfter: Date;\n type: string;\n keyId: string;\n principals: string[];\n extensions: Record<string, string>;\n criticalOptions: Record<string, string>;\n}\n\nexport const SshBasicInformation: FunctionalComponent<ISshBasicInformationProps> = (props) => {\n const {\n serialNumber,\n validity,\n notBefore,\n notAfter,\n type,\n keyId,\n principals,\n extensions,\n criticalOptions,\n } = props;\n\n return [\n <RowTitle\n value={l10n.getString('basicInformation')}\n />,\n <RowValue\n name={l10n.getString('type')}\n value={type}\n />,\n <RowValue\n name={l10n.getString('serialNumber')}\n value={serialNumber}\n monospace\n />,\n <RowValue\n name={l10n.getString('validity')}\n value={validity}\n />,\n <RowValue\n name={l10n.getString('issued')}\n value={notBefore ? dateShort(notBefore) : undefined}\n />,\n <RowValue\n name={l10n.getString('expired')}\n value={notAfter ? dateShort(notAfter) : undefined}\n />,\n <RowValue\n name={l10n.getString('keyId')}\n value={keyId}\n />,\n <RowValue\n name={l10n.getString('principals')}\n value={principals.join(', ') || '(none)'}\n />,\n <RowValue\n name={l10n.getString('criticalOptions')}\n value={Object.keys(criticalOptions).join(', ') || '(none)'}\n />,\n <RowValue\n name={l10n.getString('extensions')}\n value={Object.keys(extensions).join(', ') || '(none)'}\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 */\n\nimport { h, FunctionalComponent } from '@stencil/core';\nimport { SshCertificate } from '../../../crypto';\nimport { l10n, getStringByOID } from '../../../utils';\nimport {\n RowTitle,\n RowValue,\n} from '../../certificate-details-parts/row';\n\ninterface ISshPublicKeyProps {\n key: SshCertificate['publicKey'];\n}\n\nexport const SshPublicKey: FunctionalComponent<ISshPublicKeyProps> = (props) => {\n const { key } = props;\n\n if (!key) {\n return null;\n }\n\n return [\n <RowTitle\n value={l10n.getString('publicKeyInfo')}\n />,\n <RowValue\n name={l10n.getString('algorithm')}\n value={getStringByOID(key.algorithm)}\n />,\n <RowValue\n name=\"Thumbprint (SHA-256)\"\n value={key.thumbprint}\n monospace\n />,\n <RowValue\n name={l10n.getString('value')}\n value={key.value}\n monospace\n collapse\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 */\n\nimport { h, FunctionalComponent } from '@stencil/core';\nimport { SshCertificate } from '../../../crypto';\nimport { l10n, getStringByOID } from '../../../utils';\nimport {\n RowTitle,\n RowValue,\n} from '../../certificate-details-parts/row';\n\ninterface ISshSignatureKeyProps {\n key: SshCertificate['signatureKey'];\n}\n\nexport const SshSignatureKey: FunctionalComponent<ISshSignatureKeyProps> = (props) => {\n const { key } = props;\n\n if (!key) {\n return null;\n }\n\n return [\n <RowTitle\n value={l10n.getString('signingCA')}\n />,\n <RowValue\n name={l10n.getString('algorithm')}\n value={getStringByOID(key.algorithm)}\n />,\n <RowValue\n name=\"Thumbprint (SHA-256)\"\n value={key.thumbprint}\n monospace\n />,\n <RowValue\n name={l10n.getString('value')}\n value={key.value}\n monospace\n collapse\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 */\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","@use '../../css/base.scss';\n\n:host {\n display: block;\n width: 100%;\n position: relative;\n min-width: 280px;\n min-height: 300px;\n word-wrap: break-word;\n word-break: break-word;\n\n --pv-certificate-viewer-td-horizontal-padding: calc(var(--pv-size-base) * 4);\n}\n\nth, td {\n border: none;\n}\n\ntable {\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n\n tr:last-child {\n .divider {\n display: none;\n }\n }\n\n td {\n padding: calc(var(--pv-size-base) * 2) var(--pv-certificate-viewer-td-horizontal-padding);\n vertical-align: top;\n\n &:first-child {\n width: 220px;\n }\n\n &:last-child {\n width: calc(100% - 220px)\n }\n\n &.monospace {\n max-width: 0;\n }\n\n &.divider {\n padding: calc(var(--pv-size-base) * 2) 0;\n\n span {\n height: 1px;\n display: block;\n background-color: var(--pv-color-gray-4);\n }\n }\n }\n\n .title td {\n padding-top: calc(var(--pv-size-base) * 6);\n padding-bottom: calc(var(--pv-size-base) * 2);\n }\n\n table {\n border-left: 1px solid var(--pv-color-gray-5);\n }\n}\n\n.status_wrapper {\n min-height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n:host([data-mobile-screen-view=\"true\"]) {\n table, tr, td {\n display: block;\n }\n\n table {\n tr {\n padding: calc(var(--pv-size-base) * 2) 0;\n\n &.title {\n padding-top: calc(var(--pv-size-base) * 6);\n\n td {\n padding: 0 var(--pv-certificate-viewer-td-horizontal-padding);\n }\n }\n }\n\n td {\n padding: 0 var(--pv-certificate-viewer-td-horizontal-padding);\n width: 100% !important;\n max-width: 100% !important;\n\n &.divider {\n padding: 0;\n }\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 */\n\nimport {\n Component,\n h,\n Prop,\n State,\n Watch,\n Host,\n Build,\n} from '@stencil/core';\nimport { SshCertificate } from '../../crypto';\nimport { Typography } from '../typography';\nimport { SshBasicInformation } from './-components/basic_information';\nimport { SshPublicKey } from './-components/public_key';\nimport { SshSignatureKey } from './-components/signature_key';\nimport { SshMiscellaneous } from './-components/miscellaneous';\n\nexport type TSshCertificateProp = string | SshCertificate;\n\n@Component({\n tag: 'peculiar-ssh-certificate-viewer',\n styleUrl: '../certificate-viewer/certificate-viewer.scss',\n shadow: true,\n})\nexport class SshCertificateViewer {\n private certificateDecoded: SshCertificate;\n\n private certificateDecodeError: Error;\n\n private mobileMediaQuery: MediaQueryList;\n\n /**\n * The certificate value for decode and show details. Use PEM or DER.\n */\n @Prop({ reflect: true }) certificate: TSshCertificateProp;\n\n /**\n * If `true` - component will show split-button to download certificate as PEM or DER.\n */\n @Prop({ reflect: true }) download?: boolean;\n\n /**\n * Mobile media query string to control screen view change.\n * <br />\n * **NOTE**: Based on https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia.\n * @example\n * (max-width: 900px)\n */\n @Prop({ reflect: false }) mobileMediaQueryString?: string = '(max-width: 900px)';\n\n @State() mobileScreenView = false;\n\n @State() isDecodeInProcess = true;\n\n private handleMediaQueryChange(event: MediaQueryListEvent) {\n this.mobileScreenView = event.matches;\n }\n\n componentWillLoad() {\n this.decodeCertificate(this.certificate);\n\n if (Build.isBrowser) {\n this.mobileMediaQuery = window.matchMedia(this.mobileMediaQueryString);\n this.mobileMediaQuery.addEventListener('change', this.handleMediaQueryChange.bind(this));\n this.mobileScreenView = this.mobileMediaQuery.matches;\n }\n }\n\n disconnectedCallback() {\n this.mobileMediaQuery.removeEventListener('change', this.handleMediaQueryChange.bind(this));\n }\n\n private async decodeCertificate(certificate: TSshCertificateProp) {\n this.isDecodeInProcess = true;\n\n try {\n if (certificate instanceof SshCertificate) {\n this.certificateDecoded = certificate;\n } else if (typeof certificate === 'string') {\n this.certificateDecoded = new SshCertificate(certificate);\n } else {\n return;\n }\n\n // this.certificateDecoded.parseExtensions();\n await this.certificateDecoded.parsePublicKey();\n await this.certificateDecoded.parseSignatureKey();\n } catch (error) {\n this.certificateDecodeError = error;\n\n console.error('Error certificate parse:', error);\n }\n\n this.isDecodeInProcess = false;\n }\n\n /**\n * Rerun decodeCertificate if previuos value not equal current value\n */\n @Watch('certificate')\n watchCertificateAndDecode(newValue: TSshCertificateProp, oldValue: TSshCertificateProp) {\n if (typeof newValue === 'string' && typeof oldValue === 'string') {\n if (newValue !== oldValue) {\n this.decodeCertificate(newValue);\n }\n\n return;\n }\n\n if (newValue instanceof SshCertificate && oldValue instanceof SshCertificate) {\n if (newValue.serialNumber !== oldValue.serialNumber) {\n this.decodeCertificate(newValue);\n }\n }\n }\n\n private renderErrorState() {\n return (\n <div class=\"status_wrapper\">\n <Typography>\n There was an error decoding this certificate.\n </Typography>\n </div>\n );\n }\n\n private renderEmptyState() {\n return (\n <div class=\"status_wrapper\">\n <Typography>\n There is no certificate available.\n </Typography>\n </div>\n );\n }\n\n render() {\n if (this.certificateDecodeError) {\n return this.renderErrorState();\n }\n\n if (!this.certificateDecoded) {\n return this.renderEmptyState();\n }\n\n return (\n <Host\n data-mobile-screen-view={String(this.mobileScreenView)}\n >\n <table>\n <SshBasicInformation\n {...this.certificateDecoded}\n />\n\n <SshPublicKey\n key={this.certificateDecoded.publicKey}\n />\n\n <SshSignatureKey\n key={this.certificateDecoded.signatureKey}\n />\n\n {this.download && (\n <SshMiscellaneous\n certificate={this.certificateDecoded}\n />\n )}\n </table>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"ssh-certificate-viewer.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["src/components/ssh-certificate-viewer/-components/basic_information.tsx","src/components/ssh-certificate-viewer/-components/public_key.tsx","src/components/ssh-certificate-viewer/-components/signature_key.tsx","src/components/ssh-certificate-viewer/-components/miscellaneous.tsx","src/components/certificate-viewer/certificate-viewer.scss?tag=peculiar-ssh-certificate-viewer&encapsulation=shadow","src/components/ssh-certificate-viewer/ssh-certificate-viewer.tsx"],"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 { RowTitle, RowValue } from '../../certificate-details-parts/row';\nimport { dateShort, l10n } from '../../../utils';\n\ninterface ISshBasicInformationProps {\n serialNumber: string;\n validity: string;\n notBefore: Date;\n notAfter: Date;\n type: string;\n keyId: string;\n principals: string[];\n extensions: Record<string, string>;\n criticalOptions: Record<string, string>;\n}\n\nexport const SshBasicInformation: FunctionalComponent<ISshBasicInformationProps> = (props) => {\n const {\n serialNumber,\n validity,\n notBefore,\n notAfter,\n type,\n keyId,\n principals,\n extensions,\n criticalOptions,\n } = props;\n\n return [\n <RowTitle\n value={l10n.getString('basicInformation')}\n />,\n <RowValue\n name={l10n.getString('type')}\n value={type}\n />,\n <RowValue\n name={l10n.getString('serialNumber')}\n value={serialNumber}\n monospace\n />,\n <RowValue\n name={l10n.getString('validity')}\n value={validity}\n />,\n <RowValue\n name={l10n.getString('issued')}\n value={notBefore ? dateShort(notBefore) : undefined}\n />,\n <RowValue\n name={l10n.getString('expired')}\n value={notAfter ? dateShort(notAfter) : undefined}\n />,\n <RowValue\n name={l10n.getString('keyId')}\n value={keyId}\n />,\n <RowValue\n name={l10n.getString('principals')}\n value={principals.join(', ') || '(none)'}\n />,\n <RowValue\n name={l10n.getString('criticalOptions')}\n value={Object.keys(criticalOptions).join(', ') || '(none)'}\n />,\n <RowValue\n name={l10n.getString('extensions')}\n value={Object.keys(extensions).join(', ') || '(none)'}\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 */\n\nimport { h, FunctionalComponent } from '@stencil/core';\nimport { SshCertificate } from '../../../crypto';\nimport { l10n, getStringByOID } from '../../../utils';\nimport {\n RowTitle,\n RowValue,\n} from '../../certificate-details-parts/row';\n\ninterface ISshPublicKeyProps {\n key: SshCertificate['publicKey'];\n}\n\nexport const SshPublicKey: FunctionalComponent<ISshPublicKeyProps> = (props) => {\n const { key } = props;\n\n if (!key) {\n return null;\n }\n\n return [\n <RowTitle\n value={l10n.getString('publicKeyInfo')}\n />,\n <RowValue\n name={l10n.getString('algorithm')}\n value={getStringByOID(key.algorithm)}\n />,\n <RowValue\n name=\"Thumbprint (SHA-256)\"\n value={key.thumbprint}\n monospace\n />,\n <RowValue\n name={l10n.getString('value')}\n value={key.value}\n monospace\n collapse\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 */\n\nimport { h, FunctionalComponent } from '@stencil/core';\nimport { SshCertificate } from '../../../crypto';\nimport { l10n, getStringByOID } from '../../../utils';\nimport {\n RowTitle,\n RowValue,\n} from '../../certificate-details-parts/row';\n\ninterface ISshSignatureKeyProps {\n key: SshCertificate['signatureKey'];\n}\n\nexport const SshSignatureKey: FunctionalComponent<ISshSignatureKeyProps> = (props) => {\n const { key } = props;\n\n if (!key) {\n return null;\n }\n\n return [\n <RowTitle\n value={l10n.getString('signingCA')}\n />,\n <RowValue\n name={l10n.getString('algorithm')}\n value={getStringByOID(key.algorithm)}\n />,\n <RowValue\n name=\"Thumbprint (SHA-256)\"\n value={key.thumbprint}\n monospace\n />,\n <RowValue\n name={l10n.getString('value')}\n value={key.value}\n monospace\n collapse\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 */\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","@use '../../css/base.scss';\n\n:host {\n display: block;\n width: 100%;\n position: relative;\n min-width: 280px;\n min-height: 300px;\n word-wrap: break-word;\n word-break: break-word;\n\n --pv-certificate-viewer-td-horizontal-padding: calc(var(--pv-size-base) * 4);\n}\n\nth, td {\n border: none;\n}\n\ntable {\n width: 100%;\n border-spacing: 0;\n border-collapse: collapse;\n\n tr:last-child {\n .divider {\n display: none;\n }\n }\n\n td {\n padding: calc(var(--pv-size-base) * 1) var(--pv-certificate-viewer-td-horizontal-padding);\n vertical-align: top;\n\n &:first-child {\n width: 220px;\n }\n\n &:last-child {\n width: calc(100% - 220px)\n }\n\n &.monospace {\n max-width: 0;\n }\n\n &.divider {\n padding: calc(var(--pv-size-base) * 1) 0;\n\n span {\n height: 1px;\n display: block;\n background-color: var(--pv-color-gray-4);\n }\n }\n }\n\n .title td {\n padding-top: calc(var(--pv-size-base) * 6);\n padding-bottom: calc(var(--pv-size-base) * 1);\n }\n\n table {\n border-left: 1px solid var(--pv-color-gray-5);\n }\n}\n\n.status_wrapper {\n min-height: inherit;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n:host([data-mobile-screen-view=\"true\"]) {\n table, tr, td {\n display: block;\n }\n\n table {\n tr {\n padding: calc(var(--pv-size-base) * 2) 0;\n\n &.title {\n padding-top: calc(var(--pv-size-base) * 6);\n\n td {\n padding: 0 var(--pv-certificate-viewer-td-horizontal-padding);\n }\n }\n }\n\n td {\n padding: 0 var(--pv-certificate-viewer-td-horizontal-padding);\n width: 100% !important;\n max-width: 100% !important;\n\n &.divider {\n padding: 0;\n }\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 */\n\nimport {\n Component,\n h,\n Prop,\n State,\n Watch,\n Host,\n Build,\n} from '@stencil/core';\nimport { SshCertificate } from '../../crypto';\nimport { Typography } from '../typography';\nimport { SshBasicInformation } from './-components/basic_information';\nimport { SshPublicKey } from './-components/public_key';\nimport { SshSignatureKey } from './-components/signature_key';\nimport { SshMiscellaneous } from './-components/miscellaneous';\n\nexport type TSshCertificateProp = string | SshCertificate;\n\n@Component({\n tag: 'peculiar-ssh-certificate-viewer',\n styleUrl: '../certificate-viewer/certificate-viewer.scss',\n shadow: true,\n})\nexport class SshCertificateViewer {\n private certificateDecoded: SshCertificate;\n\n private certificateDecodeError: Error;\n\n private mobileMediaQuery: MediaQueryList;\n\n /**\n * The certificate value for decode and show details. Use PEM or DER.\n */\n @Prop({ reflect: true }) certificate: TSshCertificateProp;\n\n /**\n * If `true` - component will show split-button to download certificate as PEM or DER.\n */\n @Prop({ reflect: true }) download?: boolean;\n\n /**\n * Mobile media query string to control screen view change.\n * <br />\n * **NOTE**: Based on https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia.\n * @example\n * (max-width: 900px)\n */\n @Prop({ reflect: false }) mobileMediaQueryString?: string = '(max-width: 900px)';\n\n @State() mobileScreenView = false;\n\n @State() isDecodeInProcess = true;\n\n private handleMediaQueryChange(event: MediaQueryListEvent) {\n this.mobileScreenView = event.matches;\n }\n\n componentWillLoad() {\n this.decodeCertificate(this.certificate);\n\n if (Build.isBrowser) {\n this.mobileMediaQuery = window.matchMedia(this.mobileMediaQueryString);\n this.mobileMediaQuery.addEventListener('change', this.handleMediaQueryChange.bind(this));\n this.mobileScreenView = this.mobileMediaQuery.matches;\n }\n }\n\n disconnectedCallback() {\n this.mobileMediaQuery.removeEventListener('change', this.handleMediaQueryChange.bind(this));\n }\n\n private async decodeCertificate(certificate: TSshCertificateProp) {\n this.isDecodeInProcess = true;\n\n try {\n if (certificate instanceof SshCertificate) {\n this.certificateDecoded = certificate;\n } else if (typeof certificate === 'string') {\n this.certificateDecoded = new SshCertificate(certificate);\n } else {\n return;\n }\n\n // this.certificateDecoded.parseExtensions();\n await this.certificateDecoded.parsePublicKey();\n await this.certificateDecoded.parseSignatureKey();\n } catch (error) {\n this.certificateDecodeError = error;\n\n console.error('Error certificate parse:', error);\n }\n\n this.isDecodeInProcess = false;\n }\n\n /**\n * Rerun decodeCertificate if previuos value not equal current value\n */\n @Watch('certificate')\n watchCertificateAndDecode(newValue: TSshCertificateProp, oldValue: TSshCertificateProp) {\n if (typeof newValue === 'string' && typeof oldValue === 'string') {\n if (newValue !== oldValue) {\n this.decodeCertificate(newValue);\n }\n\n return;\n }\n\n if (newValue instanceof SshCertificate && oldValue instanceof SshCertificate) {\n if (newValue.serialNumber !== oldValue.serialNumber) {\n this.decodeCertificate(newValue);\n }\n }\n }\n\n private renderErrorState() {\n return (\n <div class=\"status_wrapper\">\n <Typography>\n There was an error decoding this certificate.\n </Typography>\n </div>\n );\n }\n\n private renderEmptyState() {\n return (\n <div class=\"status_wrapper\">\n <Typography>\n There is no certificate available.\n </Typography>\n </div>\n );\n }\n\n render() {\n if (this.certificateDecodeError) {\n return this.renderErrorState();\n }\n\n if (!this.certificateDecoded) {\n return this.renderEmptyState();\n }\n\n return (\n <Host\n data-mobile-screen-view={String(this.mobileScreenView)}\n >\n <table>\n <SshBasicInformation\n {...this.certificateDecoded}\n />\n\n <SshPublicKey\n key={this.certificateDecoded.publicKey}\n />\n\n <SshSignatureKey\n key={this.certificateDecoded.signatureKey}\n />\n\n {this.download && (\n <SshMiscellaneous\n certificate={this.certificateDecoded}\n />\n )}\n </table>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -16,7 +16,7 @@ const TextHider = /*@__PURE__*/ proxyCustomElement(class TextHider extends HTMLE
16
16
  this.opened = false;
17
17
  }
18
18
  render() {
19
- return (h(Host, { key: 'e62e0ae5bad2145d9d0f8e47493d89f1c9bdd559', "aria-expanded": String(this.opened) }, h("div", { key: 'ee6a5b678e4ff568d017fde3168a37c818c241da', class: "content" }, h("slot", { key: 'b9d073a716fec21e5e9c1dadc66da3fef292d00b' })), h(Button, { key: '398b81d7ec84ccac8803f46dd4d78104a86b9be7', class: "action", startIcon: this.opened ? h(ArrowTopIcon, { color: "secondary" }) : h(ArrowBottomIcon, { color: "secondary" }), onClick: () => { this.opened = !this.opened; } })));
19
+ return (h(Host, { key: '7d39700d8d15a9fbfba418832d9545bbbc37ce29', "aria-expanded": String(this.opened) }, h("div", { key: 'cd5958a939f358a1833b5ec483ea32c8026901d6', class: "content" }, h("slot", { key: 'b93b8bef15768226ca26a0c362a1c7acdff1bf03' })), h(Button, { key: '09ae3aed45f1bf6427c15fabef07995ea3adcdb8', class: "action", startIcon: this.opened ? h(ArrowTopIcon, { color: "secondary" }) : h(ArrowBottomIcon, { color: "secondary" }), onClick: () => { this.opened = !this.opened; } })));
20
20
  }
21
21
  static get style() { return textHiderCss; }
22
22
  }, [262, "peculiar-text-hider", {
@@ -3,7 +3,7 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var ssh_certificate = require('./ssh_certificate-Bh14rhzR.js');
6
+ var ssh_certificate = require('./ssh_certificate-Gu4FwsRk.js');
7
7
 
8
8
  const id_certificateTransparency = "1.3.6.1.4.1.11129.2.4.2";
9
9
  class CertificateTransparency extends ssh_certificate.OctetString {
@@ -78,6 +78,7 @@ const extensionParsers = {
78
78
  [ssh_certificate.id_ce_deltaCRLIndicator]: ssh_certificate.BaseCRLNumber,
79
79
  [ssh_certificate.id_ce_keyDescription]: ssh_certificate.NonStandardKeyDescription,
80
80
  [ssh_certificate.id_cabforganizationIdentifier]: ssh_certificate.CabforganizationIdentifier,
81
+ [ssh_certificate.id_appleDeveloperIdDate]: ssh_certificate.AppleDeveloperIdDate,
81
82
  };
82
83
  class Extension extends ssh_certificate.AsnData {
83
84
  getAsnExtnValue() {
@@ -105,6 +106,6 @@ class Extension extends ssh_certificate.AsnData {
105
106
 
106
107
  exports.CertificateTransparency = CertificateTransparency;
107
108
  exports.Extension = Extension;
108
- //# sourceMappingURL=extension-BDpdRJkE.js.map
109
+ //# sourceMappingURL=extension-Ba-KQhu5.js.map
109
110
 
110
- //# sourceMappingURL=extension-BDpdRJkE.js.map
111
+ //# sourceMappingURL=extension-Ba-KQhu5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-Ba-KQhu5.js","sources":["../../node_modules/@peculiar/asn1-cert-transparency/build/es2015/cert_transparency.js","../../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\n id_appleDeveloperIdDate,\n AppleDeveloperIdDate,\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 [id_appleDeveloperIdDate]: AppleDeveloperIdDate,\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":["OctetString","ByteStream","SignedCertificateTimestamp","id_pe_authorityInfoAccess","AuthorityInfoAccessSyntax","id_ce_authorityKeyIdentifier","AuthorityKeyIdentifier","id_ce_basicConstraints","BasicConstraints","id_ce_certificateIssuer","CertificateIssuer","id_ce_certificatePolicies","CertificatePolicies","id_ce_cRLDistributionPoints","CRLDistributionPoints","id_ce_issuingDistributionPoint","IssuingDistributionPoint","id_ce_cRLReasons","CRLReason","id_ce_extKeyUsage","ExtendedKeyUsage","id_ce_inhibitAnyPolicy","InhibitAnyPolicy","id_ce_invalidityDate","InvalidityDate","id_ce_issuerAltName","IssueAlternativeName","id_ce_keyUsage","KeyUsage","id_ce_nameConstraints","NameConstraints","id_ce_policyConstraints","PolicyConstraints","id_ce_policyMappings","PolicyMappings","id_ce_subjectAltName","SubjectAlternativeName","id_ce_subjectDirectoryAttributes","SubjectDirectoryAttributes","id_ce_subjectKeyIdentifier","SubjectKeyIdentifier","id_pe_qcStatements","QCStatements","id_certificateTemplate","CertificateTemplate","id_enrollCertType","EnrollCertTypeChoice","id_netscapeComment","NetscapeComment","id_netscapeCertType","NetscapeCertType","id_caVersion","CaVersion","id_lei","LeiChoice","id_role","LeiRole","id_adbe_timestamp","Timestamp","id_adbe_archiveRevInfo","ArchiveRevInfo","id_ce_privateKeyUsagePeriod","PrivateKeyUsagePeriod","id_entrust_entrustVersInfo","EntrustVersionInfo","BiometricSyntax","id_pe_biometricInfo","LogotypeExtn","id_pe_TNAuthList","TNAuthorizationList","id_pe_subjectInfoAccess","SubjectInfoAccessSyntax","id_ce_cRLNumber","CRLNumber","id_ce_deltaCRLIndicator","BaseCRLNumber","id_ce_keyDescription","NonStandardKeyDescription","id_cabforganizationIdentifier","CabforganizationIdentifier","id_appleDeveloperIdDate","AppleDeveloperIdDate","AsnData","AsnExtension","AsnParser","Convert"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -3,9 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var ssh_certificate = require('./ssh_certificate-Bh14rhzR.js');
6
+ var ssh_certificate = require('./ssh_certificate-Gu4FwsRk.js');
7
7
  var read_file = require('./read_file-DWtcn3zU.js');
8
- var pkcs10_certificate_request = require('./pkcs10_certificate_request-DZLiHGCV.js');
8
+ var pkcs10_certificate_request = require('./pkcs10_certificate_request-BDLZWqTP.js');
9
9
  var button = require('./button-DsojEA1A.js');
10
10
  var link = require('./link-D9y0M_nJ.js');
11
11
  var cross = require('./cross-DrayJL9P.js');