@peculiar/certificates-viewer 4.6.1 → 4.7.1-alpha.1

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 (252) hide show
  1. package/components/attribute-certificate-viewer.js +4 -2
  2. package/components/attribute-certificate-viewer.js.map +1 -1
  3. package/components/attribute.js +2 -1
  4. package/components/attribute.js.map +1 -1
  5. package/components/certificate-chain-viewer.js +1 -1
  6. package/components/certificate-viewer.js +3 -2
  7. package/components/certificate-viewer.js.map +1 -1
  8. package/components/crl-viewer.js +4 -2
  9. package/components/crl-viewer.js.map +1 -1
  10. package/components/csr-viewer.js +3 -3
  11. package/components/csr-viewer.js.map +1 -1
  12. package/components/download.js +2 -12760
  13. package/components/download.js.map +1 -1
  14. package/components/index.js +2 -1
  15. package/components/index.js.map +1 -1
  16. package/components/index2.js +51 -2
  17. package/components/index2.js.map +1 -1
  18. package/components/issuer_name.js +2 -2
  19. package/components/link.js +14335 -0
  20. package/components/link.js.map +1 -0
  21. package/components/miscellaneous.js +96 -72
  22. package/components/miscellaneous.js.map +1 -1
  23. package/components/peculiar-certificate-decoder.js +32 -16
  24. package/components/peculiar-certificate-decoder.js.map +1 -1
  25. package/components/peculiar-certificates-viewer.js +2 -1
  26. package/components/peculiar-certificates-viewer.js.map +1 -1
  27. package/components/peculiar-ssh-certificate-viewer.d.ts +11 -0
  28. package/components/peculiar-ssh-certificate-viewer.js +12 -0
  29. package/components/peculiar-ssh-certificate-viewer.js.map +1 -0
  30. package/components/peculiar-text-hider.js +1 -32
  31. package/components/peculiar-text-hider.js.map +1 -1
  32. package/components/pkcs10_certificate_request.js +2 -6
  33. package/components/pkcs10_certificate_request.js.map +1 -1
  34. package/components/row.js +87 -0
  35. package/components/row.js.map +1 -0
  36. package/components/ssh-certificate-viewer.js +193 -0
  37. package/components/ssh-certificate-viewer.js.map +1 -0
  38. package/components/subject_name.js +2 -2
  39. package/components/text-hider.js +40 -0
  40. package/components/text-hider.js.map +1 -0
  41. package/dist/cjs/extension-D8YKlAu4.js +110 -0
  42. package/dist/cjs/extension-D8YKlAu4.js.map +1 -0
  43. package/dist/cjs/index.cjs.js +4 -4
  44. package/dist/cjs/loader.cjs.js +1 -1
  45. package/dist/cjs/{miscellaneous-DeBEwLDy.js → miscellaneous-DvVSM5KJ.js} +187 -186
  46. package/dist/cjs/{miscellaneous-DeBEwLDy.js.map → miscellaneous-DvVSM5KJ.js.map} +1 -1
  47. 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 -0
  48. package/dist/cjs/{peculiar-attribute-certificate-viewer_4.cjs.entry.js → peculiar-attribute-certificate-viewer_5.cjs.entry.js} +240 -38
  49. package/dist/cjs/peculiar-attribute-certificate-viewer_5.cjs.entry.js.map +1 -0
  50. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js +25 -20
  51. package/dist/cjs/peculiar-certificate-decoder.cjs.entry.js.map +1 -1
  52. package/dist/cjs/peculiar-certificate-decoder.entry.cjs.js.map +1 -1
  53. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js +4 -3
  54. package/dist/cjs/peculiar-certificate-viewer.cjs.entry.js.map +1 -1
  55. package/dist/cjs/peculiar-certificate-viewer.entry.cjs.js.map +1 -1
  56. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js +23 -22
  57. package/dist/cjs/peculiar-certificates-viewer.cjs.entry.js.map +1 -1
  58. package/dist/cjs/peculiar-certificates-viewer.entry.cjs.js.map +1 -1
  59. package/dist/cjs/peculiar.cjs.js +1 -1
  60. package/dist/cjs/pkcs10_certificate_request-BoHhadiA.js +146 -0
  61. package/dist/cjs/pkcs10_certificate_request-BoHhadiA.js.map +1 -0
  62. package/dist/cjs/{certification_request-CxHe71zR.js → ssh_certificate-s3-rwdMT.js} +1734 -126
  63. package/dist/cjs/ssh_certificate-s3-rwdMT.js.map +1 -0
  64. package/dist/cjs/{x509_certificate-CzplJQ0X.js → x509_certificate-DfXuxxZp.js} +29 -28
  65. package/dist/cjs/{x509_certificate-CzplJQ0X.js.map → x509_certificate-DfXuxxZp.js.map} +1 -1
  66. package/dist/cjs/{x509_crl-B7kFbLDV.js → x509_crl-CxJ2lyGX.js} +32 -31
  67. package/dist/cjs/{x509_crl-B7kFbLDV.js.map → x509_crl-CxJ2lyGX.js.map} +1 -1
  68. package/dist/collection/collection-manifest.json +1 -0
  69. package/dist/collection/components/certificate-decoder/certificate-decoder.js +10 -6
  70. package/dist/collection/components/certificate-decoder/certificate-decoder.js.map +1 -1
  71. package/dist/collection/components/certificate-details-parts/attributes/extension_request_attribute.js +25 -0
  72. package/dist/collection/components/certificate-details-parts/attributes/extension_request_attribute.js.map +1 -0
  73. package/dist/collection/components/certificate-details-parts/attributes/index.js +10 -1
  74. package/dist/collection/components/certificate-details-parts/attributes/index.js.map +1 -1
  75. package/dist/collection/components/certificate-details-parts/attributes/private_key_possession_statement_attribute.js +27 -0
  76. package/dist/collection/components/certificate-details-parts/attributes/private_key_possession_statement_attribute.js.map +1 -0
  77. package/dist/collection/components/csr-viewer/csr-viewer.js +2 -2
  78. package/dist/collection/components/csr-viewer/csr-viewer.js.map +1 -1
  79. package/dist/collection/components/ssh-certificate-viewer/-components/basic_information.js +29 -0
  80. package/dist/collection/components/ssh-certificate-viewer/-components/basic_information.js.map +1 -0
  81. package/dist/collection/components/ssh-certificate-viewer/-components/public_key.js +26 -0
  82. package/dist/collection/components/ssh-certificate-viewer/-components/public_key.js.map +1 -0
  83. package/dist/collection/components/ssh-certificate-viewer/-components/signature_key.js +26 -0
  84. package/dist/collection/components/ssh-certificate-viewer/-components/signature_key.js.map +1 -0
  85. package/dist/collection/components/ssh-certificate-viewer/ssh-certificate-viewer.js +193 -0
  86. package/dist/collection/components/ssh-certificate-viewer/ssh-certificate-viewer.js.map +1 -0
  87. package/dist/collection/constants/oids.js +2 -0
  88. package/dist/collection/constants/oids.js.map +1 -1
  89. package/dist/collection/crypto/attribute.js +2 -0
  90. package/dist/collection/crypto/attribute.js.map +1 -1
  91. package/dist/collection/crypto/index.js +1 -0
  92. package/dist/collection/crypto/index.js.map +1 -1
  93. package/dist/collection/crypto/pkcs10_certificate_request.js +0 -7
  94. package/dist/collection/crypto/pkcs10_certificate_request.js.map +1 -1
  95. package/dist/collection/crypto/ssh_certificate.js +68 -0
  96. package/dist/collection/crypto/ssh_certificate.js.map +1 -0
  97. package/dist/collection/locales/en.json +5 -1
  98. package/dist/esm/extension-oK2qpCU6.js +107 -0
  99. package/dist/esm/extension-oK2qpCU6.js.map +1 -0
  100. package/dist/esm/index.js +2 -2
  101. package/dist/esm/loader.js +1 -1
  102. package/dist/esm/{miscellaneous-bVeJt-6m.js → miscellaneous-DrmTXljc.js} +4 -3
  103. package/dist/{esm-es5/miscellaneous-bVeJt-6m.js.map → esm/miscellaneous-DrmTXljc.js.map} +1 -1
  104. 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 -0
  105. package/dist/esm/{peculiar-attribute-certificate-viewer_4.entry.js → peculiar-attribute-certificate-viewer_5.entry.js} +215 -14
  106. package/dist/esm/peculiar-attribute-certificate-viewer_5.entry.js.map +1 -0
  107. package/dist/esm/peculiar-certificate-decoder.entry.js +14 -9
  108. package/dist/esm/peculiar-certificate-decoder.entry.js.map +1 -1
  109. package/dist/esm/peculiar-certificate-viewer.entry.js +4 -3
  110. package/dist/esm/peculiar-certificate-viewer.entry.js.map +1 -1
  111. package/dist/esm/peculiar-certificates-viewer.entry.js +3 -2
  112. package/dist/esm/peculiar-certificates-viewer.entry.js.map +1 -1
  113. package/dist/esm/peculiar.js +1 -1
  114. package/dist/esm/{pkcs10_certificate_request-CK8FH47X.js → pkcs10_certificate_request-Bdt_qA_g.js} +4 -8
  115. package/dist/esm/pkcs10_certificate_request-Bdt_qA_g.js.map +1 -0
  116. package/dist/esm/{certification_request-PeMaLTUD.js → ssh_certificate-Ct-r021h.js} +1682 -115
  117. package/dist/esm/ssh_certificate-Ct-r021h.js.map +1 -0
  118. package/dist/esm/{x509_certificate-CEEWtU_T.js → x509_certificate-5DEbrOA7.js} +4 -3
  119. package/dist/{esm-es5/x509_certificate-CEEWtU_T.js.map → esm/x509_certificate-5DEbrOA7.js.map} +1 -1
  120. package/dist/esm/{x509_crl-BcZd9KVn.js → x509_crl-CPgNUkh7.js} +5 -4
  121. package/dist/{esm-es5/x509_crl-BcZd9KVn.js.map → esm/x509_crl-CPgNUkh7.js.map} +1 -1
  122. package/dist/esm-es5/extension-oK2qpCU6.js +12 -0
  123. package/dist/esm-es5/extension-oK2qpCU6.js.map +1 -0
  124. package/dist/esm-es5/index.js +1 -1
  125. package/dist/esm-es5/loader.js +2 -2
  126. package/dist/esm-es5/{miscellaneous-bVeJt-6m.js → miscellaneous-DrmTXljc.js} +2 -2
  127. package/dist/{esm/miscellaneous-bVeJt-6m.js.map → esm-es5/miscellaneous-DrmTXljc.js.map} +1 -1
  128. 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 -0
  129. package/dist/esm-es5/{peculiar-attribute-certificate-viewer_4.entry.js → peculiar-attribute-certificate-viewer_5.entry.js} +39 -4
  130. package/dist/esm-es5/peculiar-attribute-certificate-viewer_5.entry.js.map +1 -0
  131. package/dist/esm-es5/peculiar-certificate-decoder.entry.js +1 -1
  132. package/dist/esm-es5/peculiar-certificate-decoder.entry.js.map +1 -1
  133. package/dist/esm-es5/peculiar-certificate-viewer.entry.js +1 -1
  134. package/dist/esm-es5/peculiar-certificate-viewer.entry.js.map +1 -1
  135. package/dist/esm-es5/peculiar-certificates-viewer.entry.js +1 -1
  136. package/dist/esm-es5/peculiar-certificates-viewer.entry.js.map +1 -1
  137. package/dist/esm-es5/peculiar.js +1 -1
  138. package/dist/esm-es5/pkcs10_certificate_request-Bdt_qA_g.js +19 -0
  139. package/dist/esm-es5/pkcs10_certificate_request-Bdt_qA_g.js.map +1 -0
  140. package/dist/esm-es5/{certification_request-PeMaLTUD.js → ssh_certificate-Ct-r021h.js} +7 -14
  141. package/dist/esm-es5/ssh_certificate-Ct-r021h.js.map +1 -0
  142. package/dist/esm-es5/{x509_certificate-CEEWtU_T.js → x509_certificate-5DEbrOA7.js} +4 -4
  143. package/dist/{esm/x509_certificate-CEEWtU_T.js.map → esm-es5/x509_certificate-5DEbrOA7.js.map} +1 -1
  144. package/dist/esm-es5/{x509_crl-BcZd9KVn.js → x509_crl-CPgNUkh7.js} +2 -2
  145. package/dist/{esm/x509_crl-BcZd9KVn.js.map → esm-es5/x509_crl-CPgNUkh7.js.map} +1 -1
  146. package/dist/peculiar/index.esm.js +1 -1
  147. package/dist/peculiar/locales/en.json +5 -1
  148. package/dist/peculiar/{p-5479a530.entry.js → p-0b895a8e.entry.js} +2 -2
  149. package/dist/peculiar/{p-84f69023.system.entry.js → p-11434880.system.entry.js} +2 -2
  150. package/dist/peculiar/{p-C9sY8yng.system.js → p-2GQYAR0v.system.js} +3 -3
  151. package/dist/peculiar/{p-C9sY8yng.system.js.map → p-2GQYAR0v.system.js.map} +1 -1
  152. package/dist/peculiar/p-364fd32b.system.entry.js +5 -0
  153. package/dist/peculiar/{p-14fcbc5c.system.entry.js.map → p-364fd32b.system.entry.js.map} +1 -1
  154. package/dist/peculiar/p-5df0f22b.system.entry.js +146 -0
  155. package/dist/peculiar/p-5df0f22b.system.entry.js.map +1 -0
  156. package/dist/peculiar/p-62b723f6.entry.js +145 -0
  157. package/dist/peculiar/p-62b723f6.entry.js.map +1 -0
  158. package/dist/peculiar/p-83a53b4f.entry.js +5 -0
  159. package/dist/peculiar/{p-0de4837d.entry.js.map → p-83a53b4f.entry.js.map} +1 -1
  160. package/dist/peculiar/p-B2G7qjfV.js +369 -0
  161. package/dist/peculiar/{p-CGRNSrHk.js.map → p-B2G7qjfV.js.map} +1 -1
  162. package/dist/peculiar/{p-BypepohK.system.js.map → p-BCsPspKr.system.js.map} +1 -1
  163. package/dist/peculiar/p-BGASC3UX.system.js +1 -1
  164. package/dist/peculiar/p-BGIWeG8l.js +12 -0
  165. package/dist/peculiar/p-BGIWeG8l.js.map +1 -0
  166. package/dist/peculiar/{p-DRvp86xt.system.js → p-BQiABBi1.system.js} +5 -5
  167. package/dist/peculiar/{p-DRvp86xt.system.js.map → p-BQiABBi1.system.js.map} +1 -1
  168. package/dist/peculiar/{p-CezfC5i1.system.js → p-BeVuAzsd.system.js} +42 -42
  169. package/dist/peculiar/{p-CezfC5i1.system.js.map → p-BeVuAzsd.system.js.map} +1 -1
  170. package/dist/peculiar/{p-CZwhKPgb.system.js → p-C31rbtuG.system.js} +2 -2
  171. package/dist/peculiar/p-C31rbtuG.system.js.map +1 -0
  172. package/dist/peculiar/p-Ce-IF7_R.system.js.map +1 -0
  173. package/dist/peculiar/p-ClkgAXnd.system.js +135 -0
  174. package/dist/peculiar/p-ClkgAXnd.system.js.map +1 -0
  175. package/dist/peculiar/p-Ct-r021h.js +135 -0
  176. package/dist/peculiar/p-Ct-r021h.js.map +1 -0
  177. package/dist/peculiar/{p-BaebEpW0.system.js.map → p-CxtUQdcj.system.js.map} +1 -1
  178. package/dist/peculiar/{p-DrmgUhyv.js → p-D9qq15zG.js} +4 -4
  179. package/dist/peculiar/{p-DrmgUhyv.js.map → p-D9qq15zG.js.map} +1 -1
  180. package/dist/peculiar/{p-CjWRKsN-.js → p-DOpiv0-8.js} +3 -3
  181. package/dist/peculiar/{p-CjWRKsN-.js.map → p-DOpiv0-8.js.map} +1 -1
  182. package/dist/peculiar/p-IOtHTzYC.system.js +12 -0
  183. package/dist/peculiar/p-IOtHTzYC.system.js.map +1 -0
  184. package/dist/peculiar/p-LmKU8Smy.system.js.map +1 -0
  185. package/dist/peculiar/p-RWPI76Dh.js +19 -0
  186. package/dist/peculiar/p-RWPI76Dh.js.map +1 -0
  187. package/dist/peculiar/p-da9eb1e7.entry.js +5 -0
  188. package/dist/peculiar/p-da9eb1e7.entry.js.map +1 -0
  189. package/dist/peculiar/p-fd98bb82.system.entry.js +5 -0
  190. package/dist/peculiar/p-fd98bb82.system.entry.js.map +1 -0
  191. package/dist/peculiar/{p-J1t5v5N3.system.js → p-zQwWLfga.system.js} +4 -4
  192. package/dist/peculiar/p-zQwWLfga.system.js.map +1 -0
  193. 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 -0
  194. package/dist/peculiar/peculiar-certificate-decoder.entry.esm.js.map +1 -1
  195. package/dist/peculiar/peculiar-certificate-viewer.entry.esm.js.map +1 -1
  196. package/dist/peculiar/peculiar-certificates-viewer.entry.esm.js.map +1 -1
  197. package/dist/peculiar/peculiar.esm.js +1 -1
  198. package/dist/types/components/certificate-decoder/certificate-decoder.d.ts +4 -4
  199. package/dist/types/components/certificate-details-parts/attributes/extension_request_attribute.d.ts +15 -0
  200. package/dist/types/components/certificate-details-parts/attributes/private_key_possession_statement_attribute.d.ts +15 -0
  201. package/dist/types/components/ssh-certificate-viewer/-components/basic_information.d.ts +21 -0
  202. package/dist/types/components/ssh-certificate-viewer/-components/public_key.d.ts +14 -0
  203. package/dist/types/components/ssh-certificate-viewer/-components/signature_key.d.ts +14 -0
  204. package/dist/types/components/ssh-certificate-viewer/ssh-certificate-viewer.d.ts +43 -0
  205. package/dist/types/components.d.ts +43 -0
  206. package/dist/types/constants/oids.d.ts +2 -0
  207. package/dist/types/crypto/attribute.d.ts +2 -0
  208. package/dist/types/crypto/index.d.ts +1 -0
  209. package/dist/types/crypto/pkcs10_certificate_request.d.ts +0 -2
  210. package/dist/types/crypto/ssh_certificate.d.ts +28 -0
  211. package/dist/types/utils/l10n.d.ts +4 -0
  212. package/hydrate/index.js +1908 -33
  213. package/hydrate/index.mjs +1908 -33
  214. package/package.json +4 -2
  215. package/dist/cjs/certification_request-CxHe71zR.js.map +0 -1
  216. package/dist/cjs/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.cjs.js.map +0 -1
  217. package/dist/cjs/peculiar-attribute-certificate-viewer_4.cjs.entry.js.map +0 -1
  218. package/dist/cjs/pkcs10_certificate_request-CHMDxe2Z.js +0 -150
  219. package/dist/cjs/pkcs10_certificate_request-CHMDxe2Z.js.map +0 -1
  220. package/dist/esm/certification_request-PeMaLTUD.js.map +0 -1
  221. package/dist/esm/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.js.map +0 -1
  222. package/dist/esm/peculiar-attribute-certificate-viewer_4.entry.js.map +0 -1
  223. package/dist/esm/pkcs10_certificate_request-CK8FH47X.js.map +0 -1
  224. package/dist/esm-es5/certification_request-PeMaLTUD.js.map +0 -1
  225. package/dist/esm-es5/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.js.map +0 -1
  226. package/dist/esm-es5/peculiar-attribute-certificate-viewer_4.entry.js.map +0 -1
  227. package/dist/esm-es5/pkcs10_certificate_request-CK8FH47X.js +0 -19
  228. package/dist/esm-es5/pkcs10_certificate_request-CK8FH47X.js.map +0 -1
  229. package/dist/peculiar/p-00d6f11f.system.entry.js +0 -111
  230. package/dist/peculiar/p-00d6f11f.system.entry.js.map +0 -1
  231. package/dist/peculiar/p-0de4837d.entry.js +0 -5
  232. package/dist/peculiar/p-14fcbc5c.system.entry.js +0 -5
  233. package/dist/peculiar/p-315805ce.entry.js +0 -5
  234. package/dist/peculiar/p-315805ce.entry.js.map +0 -1
  235. package/dist/peculiar/p-591a9019.system.entry.js +0 -5
  236. package/dist/peculiar/p-591a9019.system.entry.js.map +0 -1
  237. package/dist/peculiar/p-BipKYW6e.system.js +0 -142
  238. package/dist/peculiar/p-BipKYW6e.system.js.map +0 -1
  239. package/dist/peculiar/p-BloT0Xj9.system.js.map +0 -1
  240. package/dist/peculiar/p-CGRNSrHk.js +0 -369
  241. package/dist/peculiar/p-CZwhKPgb.system.js.map +0 -1
  242. package/dist/peculiar/p-D1eNnGDF.js +0 -19
  243. package/dist/peculiar/p-D1eNnGDF.js.map +0 -1
  244. package/dist/peculiar/p-ITVWR0oT.system.js.map +0 -1
  245. package/dist/peculiar/p-J1t5v5N3.system.js.map +0 -1
  246. package/dist/peculiar/p-PeMaLTUD.js +0 -142
  247. package/dist/peculiar/p-PeMaLTUD.js.map +0 -1
  248. package/dist/peculiar/p-c8b3766a.entry.js +0 -110
  249. package/dist/peculiar/p-c8b3766a.entry.js.map +0 -1
  250. package/dist/peculiar/peculiar-attribute-certificate-viewer.peculiar-certificate-chain-viewer.peculiar-crl-viewer.peculiar-csr-viewer.entry.esm.js.map +0 -1
  251. /package/dist/peculiar/{p-5479a530.entry.js.map → p-0b895a8e.entry.js.map} +0 -0
  252. /package/dist/peculiar/{p-84f69023.system.entry.js.map → p-11434880.system.entry.js.map} +0 -0
@@ -3,7 +3,8 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var certification_request = require('./certification_request-CxHe71zR.js');
6
+ var ssh_certificate = require('./ssh_certificate-s3-rwdMT.js');
7
+ var extension = require('./extension-D8YKlAu4.js');
7
8
 
8
9
  /**
9
10
  * @license
@@ -12,16 +13,16 @@ var certification_request = require('./certification_request-CxHe71zR.js');
12
13
  * This source code is licensed under the MIT license found in the
13
14
  * LICENSE file in the root directory of this source tree.
14
15
  */
15
- class X509Certificate extends certification_request.AsnData {
16
+ class X509Certificate extends ssh_certificate.AsnData {
16
17
  constructor(raw) {
17
- super(certification_request.certificateRawToBuffer(raw), certification_request.Certificate);
18
+ super(ssh_certificate.certificateRawToBuffer(raw), ssh_certificate.Certificate);
18
19
  this.thumbprints = {};
19
20
  this.type = 'X.509 Certificate';
20
- this.tag = certification_request.PemConverter.CertificateTag;
21
+ this.tag = ssh_certificate.PemConverter.CertificateTag;
21
22
  const { tbsCertificate } = this.asn;
22
- this.serialNumber = certification_request.buildExports.Convert.ToHex(tbsCertificate.serialNumber);
23
- this.subject = new certification_request.Name(tbsCertificate.subject).toJSON();
24
- this.issuer = new certification_request.Name(tbsCertificate.issuer).toJSON();
23
+ this.serialNumber = ssh_certificate.buildExports.Convert.ToHex(tbsCertificate.serialNumber);
24
+ this.subject = new ssh_certificate.Name(tbsCertificate.subject).toJSON();
25
+ this.issuer = new ssh_certificate.Name(tbsCertificate.issuer).toJSON();
25
26
  this.version = tbsCertificate.version + 1;
26
27
  const notBefore = tbsCertificate.validity.notBefore.utcTime
27
28
  || tbsCertificate.validity.notBefore.generalTime;
@@ -35,29 +36,29 @@ class X509Certificate extends certification_request.AsnData {
35
36
  throw new Error('Cannot get \'notAfter\' value');
36
37
  }
37
38
  this.notAfter = notAfter;
38
- this.validity = certification_request.dateDiff(this.notBefore, this.notAfter);
39
+ this.validity = ssh_certificate.dateDiff(this.notBefore, this.notAfter);
39
40
  }
40
41
  parseExtensions() {
41
42
  const { tbsCertificate } = this.asn;
42
43
  if (tbsCertificate.extensions) {
43
44
  this.extensions = tbsCertificate.extensions
44
- .map((e) => new certification_request.Extension(certification_request.AsnConvert.serialize(e)));
45
+ .map((e) => new extension.Extension(ssh_certificate.AsnConvert.serialize(e)));
45
46
  }
46
47
  }
47
48
  getPublicKeyInfo(publicKeyInfo) {
48
49
  const { subjectPublicKey, algorithm } = publicKeyInfo;
49
50
  let params;
50
- if (algorithm.algorithm === certification_request.id_ecPublicKey && algorithm.parameters) {
51
- params = certification_request.AsnConvert.parse(algorithm.parameters, certification_request.ECParameters);
51
+ if (algorithm.algorithm === ssh_certificate.id_ecPublicKey && algorithm.parameters) {
52
+ params = ssh_certificate.AsnConvert.parse(algorithm.parameters, ssh_certificate.ECParameters);
52
53
  }
53
- if (algorithm.algorithm === certification_request.id_rsaEncryption) {
54
- params = certification_request.AsnConvert.parse(subjectPublicKey, certification_request.RSAPublicKey);
54
+ if (algorithm.algorithm === ssh_certificate.id_rsaEncryption) {
55
+ params = ssh_certificate.AsnConvert.parse(subjectPublicKey, ssh_certificate.RSAPublicKey);
55
56
  }
56
- if (algorithm.algorithm === certification_request.id_composite_key) {
57
- params = certification_request.AsnConvert.parse(subjectPublicKey, certification_request.CompositePublicKey);
57
+ if (algorithm.algorithm === ssh_certificate.id_composite_key) {
58
+ params = ssh_certificate.AsnConvert.parse(subjectPublicKey, ssh_certificate.CompositePublicKey);
58
59
  params = params.map((param) => this.getPublicKeyInfo(param));
59
60
  }
60
- const spki = certification_request.AsnConvert.serialize(publicKeyInfo);
61
+ const spki = ssh_certificate.AsnConvert.serialize(publicKeyInfo);
61
62
  return {
62
63
  params,
63
64
  value: spki,
@@ -70,9 +71,9 @@ class X509Certificate extends certification_request.AsnData {
70
71
  get signature() {
71
72
  const { signatureValue, signatureAlgorithm } = this.asn;
72
73
  let params;
73
- if (signatureAlgorithm.algorithm === certification_request.id_alg_composite) {
74
- const compositeSignatureValues = certification_request.AsnConvert.parse(signatureValue, certification_request.CompositeSignatureValue);
75
- const compositeParams = certification_request.AsnConvert.parse(signatureAlgorithm.parameters, certification_request.CompositeParams);
74
+ if (signatureAlgorithm.algorithm === ssh_certificate.id_alg_composite) {
75
+ const compositeSignatureValues = ssh_certificate.AsnConvert.parse(signatureValue, ssh_certificate.CompositeSignatureValue);
76
+ const compositeParams = ssh_certificate.AsnConvert.parse(signatureAlgorithm.parameters, ssh_certificate.CompositeParams);
76
77
  params = compositeParams.map((param, index) => (Object.assign(Object.assign({}, param), { value: compositeSignatureValues[index] })));
77
78
  }
78
79
  return {
@@ -83,9 +84,9 @@ class X509Certificate extends certification_request.AsnData {
83
84
  }
84
85
  async getThumbprint(algorithm = 'SHA-1') {
85
86
  try {
86
- const thumbprint = await certification_request.getCertificateThumbprint(algorithm, this.raw);
87
+ const thumbprint = await ssh_certificate.getCertificateThumbprint(algorithm, this.raw);
87
88
  if (thumbprint) {
88
- this.thumbprints[algorithm] = certification_request.buildExports.Convert.ToHex(thumbprint);
89
+ this.thumbprints[algorithm] = ssh_certificate.buildExports.Convert.ToHex(thumbprint);
89
90
  }
90
91
  }
91
92
  catch (error) {
@@ -138,22 +139,22 @@ class X509Certificate extends certification_request.AsnData {
138
139
  toString(format = 'pem') {
139
140
  switch (format) {
140
141
  case 'pem':
141
- return certification_request.PemConverter.encode(this.raw, this.tag);
142
+ return ssh_certificate.PemConverter.encode(this.raw, this.tag);
142
143
  case 'base64url':
143
- return certification_request.buildExports.Convert.ToBase64Url(this.raw);
144
+ return ssh_certificate.buildExports.Convert.ToBase64Url(this.raw);
144
145
  default:
145
- return certification_request.buildExports.Convert.ToBase64(this.raw);
146
+ return ssh_certificate.buildExports.Convert.ToBase64(this.raw);
146
147
  }
147
148
  }
148
149
  downloadAsPEM(name) {
149
- certification_request.Download.cert.asPEM(this.toString('pem'), name || this.commonName);
150
+ ssh_certificate.Download.cert.asPEM(this.toString('pem'), name || this.commonName);
150
151
  }
151
152
  downloadAsDER(name) {
152
- certification_request.Download.cert.asDER(this.raw, name || this.commonName);
153
+ ssh_certificate.Download.cert.asDER(this.raw, name || this.commonName);
153
154
  }
154
155
  }
155
156
 
156
157
  exports.X509Certificate = X509Certificate;
157
- //# sourceMappingURL=x509_certificate-CzplJQ0X.js.map
158
+ //# sourceMappingURL=x509_certificate-DfXuxxZp.js.map
158
159
 
159
- //# sourceMappingURL=x509_certificate-CzplJQ0X.js.map
160
+ //# sourceMappingURL=x509_certificate-DfXuxxZp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x509_certificate-CzplJQ0X.js","sources":["src/crypto/x509_certificate.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { ECParameters, id_ecPublicKey } from '@peculiar/asn1-ecc';\nimport { id_rsaEncryption, RSAPublicKey } from '@peculiar/asn1-rsa';\nimport {\n id_composite_key,\n id_alg_composite,\n CompositePublicKey,\n CompositeSignatureValue,\n CompositeParams,\n} from '@peculiar/asn1-x509-post-quantum';\nimport { Certificate, SubjectPublicKeyInfo } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { Name, INameJSON } from './name';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\nexport interface ISignature {\n algorithm: string;\n value: BufferSource;\n params?: {\n algorithm: string;\n value: BufferSource;\n }[];\n}\n\nexport interface IPublicKey {\n algorithm: string;\n value: BufferSource;\n params?: ECParameters | RSAPublicKey | IPublicKey[];\n}\n\nexport class X509Certificate extends AsnData<Certificate> {\n public readonly serialNumber: string;\n\n public readonly subject: INameJSON[];\n\n public readonly issuer: INameJSON[];\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public readonly version: number;\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate';\n\n public readonly tag = PemConverter.CertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), Certificate);\n\n const { tbsCertificate } = this.asn;\n\n this.serialNumber = Convert.ToHex(tbsCertificate.serialNumber);\n this.subject = new Name(tbsCertificate.subject).toJSON();\n this.issuer = new Name(tbsCertificate.issuer).toJSON();\n this.version = tbsCertificate.version + 1;\n\n const notBefore = tbsCertificate.validity.notBefore.utcTime\n || tbsCertificate.validity.notBefore.generalTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = tbsCertificate.validity.notAfter.utcTime\n || tbsCertificate.validity.notAfter.generalTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n }\n\n public parseExtensions() {\n const { tbsCertificate } = this.asn;\n\n if (tbsCertificate.extensions) {\n this.extensions = tbsCertificate.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n private getPublicKeyInfo(publicKeyInfo: SubjectPublicKeyInfo) {\n const { subjectPublicKey, algorithm } = publicKeyInfo;\n let params;\n\n if (algorithm.algorithm === id_ecPublicKey && algorithm.parameters) {\n params = AsnConvert.parse(algorithm.parameters, ECParameters);\n }\n\n if (algorithm.algorithm === id_rsaEncryption) {\n params = AsnConvert.parse(subjectPublicKey, RSAPublicKey);\n }\n\n if (algorithm.algorithm === id_composite_key) {\n params = AsnConvert.parse(subjectPublicKey, CompositePublicKey);\n\n params = params.map((param) => this.getPublicKeyInfo(param));\n }\n\n const spki = AsnConvert.serialize(publicKeyInfo);\n\n return {\n params,\n value: spki,\n algorithm: algorithm.algorithm,\n };\n }\n\n public get publicKey(): IPublicKey {\n return this.getPublicKeyInfo(this.asn.tbsCertificate.subjectPublicKeyInfo);\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n let params;\n\n if (signatureAlgorithm.algorithm === id_alg_composite) {\n const compositeSignatureValues = AsnConvert.parse(signatureValue, CompositeSignatureValue);\n const compositeParams = AsnConvert.parse(signatureAlgorithm.parameters, CompositeParams);\n\n params = compositeParams.map((param, index) => ({\n ...param,\n value: compositeSignatureValues[index],\n }));\n }\n\n return {\n params,\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n if (!this.subject) {\n return '';\n }\n\n for (let i = 0; i < this.subject.length; i += 1) {\n const name = this.subject[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get issuerCommonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get isRoot(): boolean {\n return JSON.stringify(this.issuer) === JSON.stringify(this.subject);\n }\n\n public subjectToString() {\n if (!this.subject) {\n return '';\n }\n\n return this.subject\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public issuerToString() {\n if (!this.issuer) {\n return '';\n }\n\n return this.issuer\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.cert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.cert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","Certificate","PemConverter","Convert","Name","dateDiff","Extension","AsnConvert","id_ecPublicKey","ECParameters","id_rsaEncryption","RSAPublicKey","id_composite_key","CompositePublicKey","id_alg_composite","CompositeSignatureValue","CompositeParams","getCertificateThumbprint","Download"],"mappings":"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"}
1
+ {"version":3,"file":"x509_certificate-DfXuxxZp.js","sources":["src/crypto/x509_certificate.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { ECParameters, id_ecPublicKey } from '@peculiar/asn1-ecc';\nimport { id_rsaEncryption, RSAPublicKey } from '@peculiar/asn1-rsa';\nimport {\n id_composite_key,\n id_alg_composite,\n CompositePublicKey,\n CompositeSignatureValue,\n CompositeParams,\n} from '@peculiar/asn1-x509-post-quantum';\nimport { Certificate, SubjectPublicKeyInfo } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { Name, INameJSON } from './name';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\nexport interface ISignature {\n algorithm: string;\n value: BufferSource;\n params?: {\n algorithm: string;\n value: BufferSource;\n }[];\n}\n\nexport interface IPublicKey {\n algorithm: string;\n value: BufferSource;\n params?: ECParameters | RSAPublicKey | IPublicKey[];\n}\n\nexport class X509Certificate extends AsnData<Certificate> {\n public readonly serialNumber: string;\n\n public readonly subject: INameJSON[];\n\n public readonly issuer: INameJSON[];\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public readonly version: number;\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate';\n\n public readonly tag = PemConverter.CertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), Certificate);\n\n const { tbsCertificate } = this.asn;\n\n this.serialNumber = Convert.ToHex(tbsCertificate.serialNumber);\n this.subject = new Name(tbsCertificate.subject).toJSON();\n this.issuer = new Name(tbsCertificate.issuer).toJSON();\n this.version = tbsCertificate.version + 1;\n\n const notBefore = tbsCertificate.validity.notBefore.utcTime\n || tbsCertificate.validity.notBefore.generalTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = tbsCertificate.validity.notAfter.utcTime\n || tbsCertificate.validity.notAfter.generalTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n }\n\n public parseExtensions() {\n const { tbsCertificate } = this.asn;\n\n if (tbsCertificate.extensions) {\n this.extensions = tbsCertificate.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n private getPublicKeyInfo(publicKeyInfo: SubjectPublicKeyInfo) {\n const { subjectPublicKey, algorithm } = publicKeyInfo;\n let params;\n\n if (algorithm.algorithm === id_ecPublicKey && algorithm.parameters) {\n params = AsnConvert.parse(algorithm.parameters, ECParameters);\n }\n\n if (algorithm.algorithm === id_rsaEncryption) {\n params = AsnConvert.parse(subjectPublicKey, RSAPublicKey);\n }\n\n if (algorithm.algorithm === id_composite_key) {\n params = AsnConvert.parse(subjectPublicKey, CompositePublicKey);\n\n params = params.map((param) => this.getPublicKeyInfo(param));\n }\n\n const spki = AsnConvert.serialize(publicKeyInfo);\n\n return {\n params,\n value: spki,\n algorithm: algorithm.algorithm,\n };\n }\n\n public get publicKey(): IPublicKey {\n return this.getPublicKeyInfo(this.asn.tbsCertificate.subjectPublicKeyInfo);\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n let params;\n\n if (signatureAlgorithm.algorithm === id_alg_composite) {\n const compositeSignatureValues = AsnConvert.parse(signatureValue, CompositeSignatureValue);\n const compositeParams = AsnConvert.parse(signatureAlgorithm.parameters, CompositeParams);\n\n params = compositeParams.map((param, index) => ({\n ...param,\n value: compositeSignatureValues[index],\n }));\n }\n\n return {\n params,\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n if (!this.subject) {\n return '';\n }\n\n for (let i = 0; i < this.subject.length; i += 1) {\n const name = this.subject[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get issuerCommonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public get isRoot(): boolean {\n return JSON.stringify(this.issuer) === JSON.stringify(this.subject);\n }\n\n public subjectToString() {\n if (!this.subject) {\n return '';\n }\n\n return this.subject\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public issuerToString() {\n if (!this.issuer) {\n return '';\n }\n\n return this.issuer\n .map((name) => (\n `${name.shortName}=${name.value}`\n ))\n .join(', ');\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.cert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.cert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","Certificate","PemConverter","Convert","Name","dateDiff","Extension","AsnConvert","id_ecPublicKey","ECParameters","id_rsaEncryption","RSAPublicKey","id_composite_key","CompositePublicKey","id_alg_composite","CompositeSignatureValue","CompositeParams","getCertificateThumbprint","Download"],"mappings":"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"}
@@ -3,8 +3,9 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var certification_request = require('./certification_request-CxHe71zR.js');
7
- var pkcs10_certificate_request = require('./pkcs10_certificate_request-CHMDxe2Z.js');
6
+ var ssh_certificate = require('./ssh_certificate-s3-rwdMT.js');
7
+ var extension = require('./extension-D8YKlAu4.js');
8
+ var pkcs10_certificate_request = require('./pkcs10_certificate_request-BoHhadiA.js');
8
9
 
9
10
  /**
10
11
  * @license
@@ -13,15 +14,15 @@ var pkcs10_certificate_request = require('./pkcs10_certificate_request-CHMDxe2Z.
13
14
  * This source code is licensed under the MIT license found in the
14
15
  * LICENSE file in the root directory of this source tree.
15
16
  */
16
- class X509AttributeCertificate extends certification_request.AsnData {
17
+ class X509AttributeCertificate extends ssh_certificate.AsnData {
17
18
  constructor(raw) {
18
19
  var _a;
19
- super(certification_request.certificateRawToBuffer(raw), certification_request.AttributeCertificate);
20
+ super(ssh_certificate.certificateRawToBuffer(raw), ssh_certificate.AttributeCertificate);
20
21
  this.thumbprints = {};
21
22
  this.type = 'X.509 Attribute Certificate';
22
- this.tag = certification_request.PemConverter.AttributeCertificateTag;
23
+ this.tag = ssh_certificate.PemConverter.AttributeCertificateTag;
23
24
  const { acinfo } = this.asn;
24
- this.serialNumber = certification_request.buildExports.Convert.ToHex(acinfo.serialNumber);
25
+ this.serialNumber = ssh_certificate.buildExports.Convert.ToHex(acinfo.serialNumber);
25
26
  this.version = acinfo.version;
26
27
  const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;
27
28
  if (!notBefore) {
@@ -33,7 +34,7 @@ class X509AttributeCertificate extends certification_request.AsnData {
33
34
  throw new Error('Cannot get \'notAfter\' value');
34
35
  }
35
36
  this.notAfter = notAfter;
36
- this.validity = certification_request.dateDiff(this.notBefore, this.notAfter);
37
+ this.validity = ssh_certificate.dateDiff(this.notBefore, this.notAfter);
37
38
  this.issuer = acinfo.issuer.v1Form || ((_a = acinfo.issuer.v2Form) === null || _a === void 0 ? void 0 : _a.issuerName);
38
39
  this.holder = acinfo.holder;
39
40
  }
@@ -48,21 +49,21 @@ class X509AttributeCertificate extends certification_request.AsnData {
48
49
  const { acinfo } = this.asn;
49
50
  if (acinfo.extensions) {
50
51
  this.extensions = acinfo.extensions
51
- .map((e) => new certification_request.Extension(certification_request.AsnConvert.serialize(e)));
52
+ .map((e) => new extension.Extension(ssh_certificate.AsnConvert.serialize(e)));
52
53
  }
53
54
  }
54
55
  parseAttributes() {
55
56
  const { acinfo } = this.asn;
56
57
  if (acinfo.attributes) {
57
58
  this.attributes = acinfo.attributes
58
- .map((e) => new pkcs10_certificate_request.Attribute(certification_request.AsnConvert.serialize(e)));
59
+ .map((e) => new pkcs10_certificate_request.Attribute(ssh_certificate.AsnConvert.serialize(e)));
59
60
  }
60
61
  }
61
62
  async getThumbprint(algorithm = 'SHA-1') {
62
63
  try {
63
- const thumbprint = await certification_request.getCertificateThumbprint(algorithm, this.raw);
64
+ const thumbprint = await ssh_certificate.getCertificateThumbprint(algorithm, this.raw);
64
65
  if (thumbprint) {
65
- this.thumbprints[algorithm] = certification_request.buildExports.Convert.ToHex(thumbprint);
66
+ this.thumbprints[algorithm] = ssh_certificate.buildExports.Convert.ToHex(thumbprint);
66
67
  }
67
68
  }
68
69
  catch (error) {
@@ -75,18 +76,18 @@ class X509AttributeCertificate extends certification_request.AsnData {
75
76
  toString(format = 'pem') {
76
77
  switch (format) {
77
78
  case 'pem':
78
- return certification_request.PemConverter.encode(this.raw, this.tag);
79
+ return ssh_certificate.PemConverter.encode(this.raw, this.tag);
79
80
  case 'base64url':
80
- return certification_request.buildExports.Convert.ToBase64Url(this.raw);
81
+ return ssh_certificate.buildExports.Convert.ToBase64Url(this.raw);
81
82
  default:
82
- return certification_request.buildExports.Convert.ToBase64(this.raw);
83
+ return ssh_certificate.buildExports.Convert.ToBase64(this.raw);
83
84
  }
84
85
  }
85
86
  downloadAsPEM(name) {
86
- certification_request.Download.attrCert.asPEM(this.toString('pem'), name || this.commonName);
87
+ ssh_certificate.Download.attrCert.asPEM(this.toString('pem'), name || this.commonName);
87
88
  }
88
89
  downloadAsDER(name) {
89
- certification_request.Download.attrCert.asDER(this.raw, name || this.commonName);
90
+ ssh_certificate.Download.attrCert.asDER(this.raw, name || this.commonName);
90
91
  }
91
92
  }
92
93
 
@@ -97,14 +98,14 @@ class X509AttributeCertificate extends certification_request.AsnData {
97
98
  * This source code is licensed under the MIT license found in the
98
99
  * LICENSE file in the root directory of this source tree.
99
100
  */
100
- class X509Crl extends certification_request.AsnData {
101
+ class X509Crl extends ssh_certificate.AsnData {
101
102
  constructor(raw) {
102
- super(certification_request.certificateRawToBuffer(raw), certification_request.CertificateList);
103
+ super(ssh_certificate.certificateRawToBuffer(raw), ssh_certificate.CertificateList);
103
104
  this.thumbprints = {};
104
105
  this.type = 'X.509 Certificate Revocation List';
105
- this.tag = certification_request.PemConverter.CrlTag;
106
+ this.tag = ssh_certificate.PemConverter.CrlTag;
106
107
  const { tbsCertList } = this.asn;
107
- this.issuer = new certification_request.Name(tbsCertList.issuer).toJSON();
108
+ this.issuer = new ssh_certificate.Name(tbsCertList.issuer).toJSON();
108
109
  this.version = tbsCertList.version + 1;
109
110
  this.lastUpdate = tbsCertList.thisUpdate.getTime();
110
111
  this.nextUpdate = tbsCertList.nextUpdate.getTime();
@@ -114,15 +115,15 @@ class X509Crl extends certification_request.AsnData {
114
115
  return ({
115
116
  revocationDate: revokedCertificate.revocationDate,
116
117
  userCertificate: revokedCertificate.userCertificate,
117
- crlEntryExtensions: (_a = revokedCertificate.crlEntryExtensions) === null || _a === void 0 ? void 0 : _a.map((e) => new certification_request.Extension(certification_request.AsnConvert.serialize(e))),
118
+ crlEntryExtensions: (_a = revokedCertificate.crlEntryExtensions) === null || _a === void 0 ? void 0 : _a.map((e) => new extension.Extension(ssh_certificate.AsnConvert.serialize(e))),
118
119
  });
119
120
  });
120
121
  }
121
122
  async getThumbprint(algorithm = 'SHA-1') {
122
123
  try {
123
- const thumbprint = await certification_request.getCertificateThumbprint(algorithm, this.raw);
124
+ const thumbprint = await ssh_certificate.getCertificateThumbprint(algorithm, this.raw);
124
125
  if (thumbprint) {
125
- this.thumbprints[algorithm] = certification_request.buildExports.Convert.ToHex(thumbprint);
126
+ this.thumbprints[algorithm] = ssh_certificate.buildExports.Convert.ToHex(thumbprint);
126
127
  }
127
128
  }
128
129
  catch (error) {
@@ -152,29 +153,29 @@ class X509Crl extends certification_request.AsnData {
152
153
  const { tbsCertList } = this.asn;
153
154
  if (tbsCertList.crlExtensions) {
154
155
  this.extensions = tbsCertList.crlExtensions
155
- .map((e) => new certification_request.Extension(certification_request.AsnConvert.serialize(e)));
156
+ .map((e) => new extension.Extension(ssh_certificate.AsnConvert.serialize(e)));
156
157
  }
157
158
  }
158
159
  toString(format = 'pem') {
159
160
  switch (format) {
160
161
  case 'pem':
161
- return certification_request.PemConverter.encode(this.raw, this.tag);
162
+ return ssh_certificate.PemConverter.encode(this.raw, this.tag);
162
163
  case 'base64url':
163
- return certification_request.buildExports.Convert.ToBase64Url(this.raw);
164
+ return ssh_certificate.buildExports.Convert.ToBase64Url(this.raw);
164
165
  default:
165
- return certification_request.buildExports.Convert.ToBase64(this.raw);
166
+ return ssh_certificate.buildExports.Convert.ToBase64(this.raw);
166
167
  }
167
168
  }
168
169
  downloadAsPEM(name) {
169
- certification_request.Download.crl.asPEM(this.toString('pem'), name || this.commonName);
170
+ ssh_certificate.Download.crl.asPEM(this.toString('pem'), name || this.commonName);
170
171
  }
171
172
  downloadAsDER(name) {
172
- certification_request.Download.crl.asDER(this.raw, name || this.commonName);
173
+ ssh_certificate.Download.crl.asDER(this.raw, name || this.commonName);
173
174
  }
174
175
  }
175
176
 
176
177
  exports.X509AttributeCertificate = X509AttributeCertificate;
177
178
  exports.X509Crl = X509Crl;
178
- //# sourceMappingURL=x509_crl-B7kFbLDV.js.map
179
+ //# sourceMappingURL=x509_crl-CxJ2lyGX.js.map
179
180
 
180
- //# sourceMappingURL=x509_crl-B7kFbLDV.js.map
181
+ //# sourceMappingURL=x509_crl-CxJ2lyGX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x509_crl-B7kFbLDV.js","sources":["src/crypto/x509_attribute_certificate.ts","src/crypto/x509_crl.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport type { GeneralName } from '@peculiar/asn1-x509';\nimport { AttributeCertificate, Holder } from '@peculiar/asn1-x509-attr';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { AsnData } from './asn_data';\nimport { Extension, TExtensionValue } from './extension';\nimport { Attribute, TAttributeValue } from './attribute';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport class X509AttributeCertificate extends AsnData<AttributeCertificate> {\n public readonly serialNumber: string;\n\n public readonly version: number;\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public attributes: Attribute<TAttributeValue>[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly issuer: GeneralName[];\n\n public holder: Holder;\n\n public readonly type = 'X.509 Attribute Certificate';\n\n public readonly tag = PemConverter.AttributeCertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), AttributeCertificate);\n\n const { acinfo } = this.asn;\n\n this.serialNumber = Convert.ToHex(acinfo.serialNumber);\n this.version = acinfo.version;\n\n const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = acinfo.attrCertValidityPeriod.notAfterTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n this.issuer = acinfo.issuer.v1Form || acinfo.issuer.v2Form?.issuerName;\n this.holder = acinfo.holder;\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n\n return {\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public parseExtensions() {\n const { acinfo } = this.asn;\n\n if (acinfo.extensions) {\n this.extensions = acinfo.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public parseAttributes() {\n const { acinfo } = this.asn;\n\n if (acinfo.attributes) {\n this.attributes = acinfo.attributes\n .map((e) => new Attribute(AsnConvert.serialize(e)));\n }\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n return `attribute-certificate-${this.thumbprints['SHA-1']}`;\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.attrCert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.attrCert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n","/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { CertificateList, Time } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { Download } from '../utils';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { Name, INameJSON } from './name';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport interface IRevokedCertificate {\n userCertificate: ArrayBuffer;\n revocationDate: Time;\n crlEntryExtensions?: Extension<TExtensionValue>[];\n}\n\nexport class X509Crl extends AsnData<CertificateList> {\n public readonly issuer: INameJSON[];\n\n public readonly version: number;\n\n public readonly lastUpdate: Date;\n\n public readonly nextUpdate: Date;\n\n public extensions: Extension<TExtensionValue>[];\n\n public revokedCertificates: IRevokedCertificate[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate Revocation List';\n\n public readonly tag = PemConverter.CrlTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), CertificateList);\n\n const { tbsCertList } = this.asn;\n\n this.issuer = new Name(tbsCertList.issuer).toJSON();\n this.version = tbsCertList.version + 1;\n this.lastUpdate = tbsCertList.thisUpdate.getTime();\n this.nextUpdate = tbsCertList.nextUpdate.getTime();\n\n this.revokedCertificates = (tbsCertList.revokedCertificates || [])\n .map((revokedCertificate) => ({\n revocationDate: revokedCertificate.revocationDate,\n userCertificate: revokedCertificate.userCertificate,\n crlEntryExtensions: revokedCertificate.crlEntryExtensions\n ?.map((e) => new Extension(AsnConvert.serialize(e))),\n }));\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get signature(): ISignature {\n const { signature, signatureAlgorithm } = this.asn;\n\n return {\n value: signature,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public get commonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public parseExtensions() {\n const { tbsCertList } = this.asn;\n\n if (tbsCertList.crlExtensions) {\n this.extensions = tbsCertList.crlExtensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.crl.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.crl.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","AttributeCertificate","PemConverter","Convert","dateDiff","Extension","AsnConvert","Attribute","getCertificateThumbprint","Download","CertificateList","Name"],"mappings":"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"}
1
+ {"version":3,"file":"x509_crl-CxJ2lyGX.js","sources":["src/crypto/x509_attribute_certificate.ts","src/crypto/x509_crl.ts"],"sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport type { GeneralName } from '@peculiar/asn1-x509';\nimport { AttributeCertificate, Holder } from '@peculiar/asn1-x509-attr';\nimport { Convert } from 'pvtsutils';\nimport { dateDiff, Download } from '../utils';\nimport { AsnData } from './asn_data';\nimport { Extension, TExtensionValue } from './extension';\nimport { Attribute, TAttributeValue } from './attribute';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport class X509AttributeCertificate extends AsnData<AttributeCertificate> {\n public readonly serialNumber: string;\n\n public readonly version: number;\n\n public readonly notBefore: Date;\n\n public readonly notAfter: Date;\n\n public readonly validity: string;\n\n public extensions: Extension<TExtensionValue>[];\n\n public attributes: Attribute<TAttributeValue>[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly issuer: GeneralName[];\n\n public holder: Holder;\n\n public readonly type = 'X.509 Attribute Certificate';\n\n public readonly tag = PemConverter.AttributeCertificateTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), AttributeCertificate);\n\n const { acinfo } = this.asn;\n\n this.serialNumber = Convert.ToHex(acinfo.serialNumber);\n this.version = acinfo.version;\n\n const notBefore = acinfo.attrCertValidityPeriod.notBeforeTime;\n\n if (!notBefore) {\n throw new Error('Cannot get \\'notBefore\\' value');\n }\n\n this.notBefore = notBefore;\n\n const notAfter = acinfo.attrCertValidityPeriod.notAfterTime;\n\n if (!notAfter) {\n throw new Error('Cannot get \\'notAfter\\' value');\n }\n\n this.notAfter = notAfter;\n this.validity = dateDiff(this.notBefore, this.notAfter);\n this.issuer = acinfo.issuer.v1Form || acinfo.issuer.v2Form?.issuerName;\n this.holder = acinfo.holder;\n }\n\n public get signature(): ISignature {\n const { signatureValue, signatureAlgorithm } = this.asn;\n\n return {\n value: signatureValue,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public parseExtensions() {\n const { acinfo } = this.asn;\n\n if (acinfo.extensions) {\n this.extensions = acinfo.extensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public parseAttributes() {\n const { acinfo } = this.asn;\n\n if (acinfo.attributes) {\n this.attributes = acinfo.attributes\n .map((e) => new Attribute(AsnConvert.serialize(e)));\n }\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get commonName(): string {\n return `attribute-certificate-${this.thumbprints['SHA-1']}`;\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.attrCert.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.attrCert.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n","/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { CertificateList, Time } from '@peculiar/asn1-x509';\nimport { Convert } from 'pvtsutils';\nimport { Download } from '../utils';\nimport { Extension, TExtensionValue } from './extension';\nimport { AsnData } from './asn_data';\nimport { Name, INameJSON } from './name';\nimport { PemConverter } from './pem_converter';\nimport {\n certificateRawToBuffer,\n getCertificateThumbprint,\n} from './utils';\n\ninterface ISignature {\n algorithm: string;\n value: BufferSource;\n}\n\nexport interface IRevokedCertificate {\n userCertificate: ArrayBuffer;\n revocationDate: Time;\n crlEntryExtensions?: Extension<TExtensionValue>[];\n}\n\nexport class X509Crl extends AsnData<CertificateList> {\n public readonly issuer: INameJSON[];\n\n public readonly version: number;\n\n public readonly lastUpdate: Date;\n\n public readonly nextUpdate: Date;\n\n public extensions: Extension<TExtensionValue>[];\n\n public revokedCertificates: IRevokedCertificate[];\n\n public thumbprints: Record<string, string> = {};\n\n public readonly type = 'X.509 Certificate Revocation List';\n\n public readonly tag = PemConverter.CrlTag;\n\n constructor(raw: string) {\n super(certificateRawToBuffer(raw), CertificateList);\n\n const { tbsCertList } = this.asn;\n\n this.issuer = new Name(tbsCertList.issuer).toJSON();\n this.version = tbsCertList.version + 1;\n this.lastUpdate = tbsCertList.thisUpdate.getTime();\n this.nextUpdate = tbsCertList.nextUpdate.getTime();\n\n this.revokedCertificates = (tbsCertList.revokedCertificates || [])\n .map((revokedCertificate) => ({\n revocationDate: revokedCertificate.revocationDate,\n userCertificate: revokedCertificate.userCertificate,\n crlEntryExtensions: revokedCertificate.crlEntryExtensions\n ?.map((e) => new Extension(AsnConvert.serialize(e))),\n }));\n }\n\n public async getThumbprint(\n algorithm = 'SHA-1',\n ): Promise<void> {\n try {\n const thumbprint = await getCertificateThumbprint(algorithm, this.raw);\n\n if (thumbprint) {\n this.thumbprints[algorithm] = Convert.ToHex(thumbprint);\n }\n } catch (error) {\n console.error('Error thumbprint get:', error);\n }\n }\n\n public get signature(): ISignature {\n const { signature, signatureAlgorithm } = this.asn;\n\n return {\n value: signature,\n algorithm: signatureAlgorithm.algorithm,\n };\n }\n\n public get commonName(): string {\n if (!this.issuer) {\n return '';\n }\n\n for (let i = 0; i < this.issuer.length; i += 1) {\n const name = this.issuer[i];\n\n if (name.shortName === 'CN' || name.shortName === 'E' || name.shortName === 'O') {\n return name.value;\n }\n }\n\n return '';\n }\n\n public parseExtensions() {\n const { tbsCertList } = this.asn;\n\n if (tbsCertList.crlExtensions) {\n this.extensions = tbsCertList.crlExtensions\n .map((e) => new Extension(AsnConvert.serialize(e)));\n }\n }\n\n public toString(format: 'pem' | 'base64' | 'base64url' = 'pem'): string {\n switch (format) {\n case 'pem':\n return PemConverter.encode(this.raw, this.tag);\n case 'base64url':\n return Convert.ToBase64Url(this.raw);\n default:\n return Convert.ToBase64(this.raw);\n }\n }\n\n public downloadAsPEM(name?: string) {\n Download.crl.asPEM(\n this.toString('pem'),\n name || this.commonName,\n );\n }\n\n public downloadAsDER(name?: string) {\n Download.crl.asDER(\n this.raw,\n name || this.commonName,\n );\n }\n}\n"],"names":["AsnData","certificateRawToBuffer","AttributeCertificate","PemConverter","Convert","dateDiff","Extension","AsnConvert","Attribute","getCertificateThumbprint","Download","CertificateList","Name"],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  "components/certificates-viewer/certificates-viewer.js",
7
7
  "components/crl-viewer/crl-viewer.js",
8
8
  "components/csr-viewer/csr-viewer.js",
9
+ "components/ssh-certificate-viewer/ssh-certificate-viewer.js",
9
10
  "components/certificate-chain-viewer/certificate-chain-viewer.js",
10
11
  "components/certificate-decoder/certificate-decoder.js",
11
12
  "components/circular-progress/circular-progress.js",
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { Host, h, } from "@stencil/core";
12
12
  import { readAsBinaryString } from "../../utils";
13
- import { X509Certificate, X509AttributeCertificate, Pkcs10CertificateRequest, X509Crl, X509Certificates, } from "../../crypto";
13
+ import { X509Certificate, X509AttributeCertificate, Pkcs10CertificateRequest, X509Crl, X509Certificates, SshCertificate, } from "../../crypto";
14
14
  import { Button } from "../button";
15
15
  import { Typography } from "../typography";
16
16
  export class CertificateDecoder {
@@ -70,12 +70,12 @@ export class CertificateDecoder {
70
70
  this.certificateDecoded = null;
71
71
  this.clearCertificate.emit();
72
72
  }
73
- setValue(value) {
73
+ async setValue(value) {
74
74
  this.certificateDecoded = value;
75
- this.inputPaste.value = value.toString('pem');
76
- this.successParse.emit(value.toString('base64url'));
75
+ this.inputPaste.value = await value.toString('pem');
76
+ this.successParse.emit(await value.toString('base64url'));
77
77
  }
78
- decode(value) {
78
+ async decode(value) {
79
79
  new Promise((resolve) => {
80
80
  resolve(new X509Certificates(value));
81
81
  })
@@ -83,6 +83,7 @@ export class CertificateDecoder {
83
83
  .catch(() => new X509AttributeCertificate(value))
84
84
  .catch(() => new Pkcs10CertificateRequest(value))
85
85
  .catch(() => new X509Crl(value))
86
+ .catch(() => new SshCertificate(value))
86
87
  .then((res) => this.setValue(res))
87
88
  .catch((error) => {
88
89
  console.log(error);
@@ -105,11 +106,14 @@ export class CertificateDecoder {
105
106
  if (this.certificateDecoded instanceof X509Crl) {
106
107
  return (h("peculiar-crl-viewer", { certificate: this.certificateDecoded, download: true }));
107
108
  }
109
+ if (this.certificateDecoded instanceof SshCertificate) {
110
+ return (h("peculiar-ssh-certificate-viewer", { certificate: this.certificateDecoded, download: true }));
111
+ }
108
112
  return null;
109
113
  }
110
114
  render() {
111
115
  var _a;
112
- return (h(Host, { key: '2c4ec8c59145c494dee26f7e6eae99b10481f091' }, h("textarea", { key: '88129c0b5c56b2458c4af2df6d746c25d4252fd2', placeholder: "Certificate DER or PEM", class: "textarea t-b2 c-black", ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDropFile }), h("div", { key: '3730b1bade8d27bb9bc1617018dc5bf01f9277ef', class: "controls" }, h("div", { key: 'b803986ab6d5bfaf5e61cd9df57428e6bff6bb55', class: "control_row" }, h(Typography, { key: 'e6ed2ea27f11d0957da4109e19483cd040febb01', variant: "b3", color: "secondary-tint-2" }, "Drag or load file:"), h("input", { key: '898d0fdd1de5f204337ab8bf77ad1dafd25da882', type: "file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl", value: "", onChange: this.handleChangeInputFile })), ((_a = this.certificateExamples) === null || _a === void 0 ? void 0 : _a.length) && (h("div", { key: 'd6cf99bfc145f44fdfef32e52eb6afa8ec3836cf', class: "control_row" }, h(Typography, { key: '4f7ff1b34fe34837909e328afdf401a5826d89f5', variant: "b3", color: "secondary-tint-2" }, "Load examples:"), h("select", { key: '47c7433eefc2e82fb5dd9a30f062cc71104f7f5b', onChange: this.handleChangeExample }, h("option", { key: '667a68723f7a22b954c1c89e1e86b85ddc6b4fd5', value: "" }, "None"), this.certificateExamples.map((example) => (h("option", { value: example.value }, example.title)))))), h("div", { key: 'e1fc1f00e7bb998d26a818fee955df9561f8e6c0', class: "control_row" }, h(Button, { key: '254fdd5ff25e644ba5d233d9cec2508a28e023c9', onClick: this.handleClickDecode }, "Decode"), h(Button, { key: '594d6e51c56a1b51440f6495eb85af0eda75bcef', onClick: this.handleClickClear }, "Clear"))), this.renderCertificate()));
116
+ return (h(Host, { key: '9067f2d7f33a40b3ad0ba03c7338a6f800100dab' }, h("textarea", { key: '9e8962631c259fd5e144a1397d8591dde46d032f', placeholder: "Certificate DER or PEM", class: "textarea t-b2 c-black", ref: (el) => { this.inputPaste = el; }, onDrop: this.handleDropFile }), h("div", { key: '9be2b1e6c9b3de94c9d5e1e6cf31d9fb487960d8', class: "controls" }, h("div", { key: '3959b89ab5c5654a3c10a1166743c056c0340e2e', class: "control_row" }, h(Typography, { key: '3c03f42d14ff5a485264523bab40765bb4f89a8f', variant: "b3", color: "secondary-tint-2" }, "Drag or load file:"), h("input", { key: '3c8682f5de0b0e2f84e37a8a05882ebcf331daef', type: "file", accept: "application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl,.cert", value: "", onChange: this.handleChangeInputFile })), ((_a = this.certificateExamples) === null || _a === void 0 ? void 0 : _a.length) && (h("div", { key: '7c38788ccf4b038126ddf6909ec1d3de76325660', class: "control_row" }, h(Typography, { key: 'c1c13aaad3d1df51465c6c51ee24f45313de8f1c', variant: "b3", color: "secondary-tint-2" }, "Load examples:"), h("select", { key: '811c4440269bb0a0a55f488e10dfa12093b18d7b', onChange: this.handleChangeExample }, h("option", { key: 'd2e30396fe3a59d5c46c83c6cd1e5b5a58f15f73', value: "" }, "None"), this.certificateExamples.map((example) => (h("option", { value: example.value }, example.title)))))), h("div", { key: '58daae2b9d8e2dd4c698ec9ad6e7f0d8b2500883', class: "control_row" }, h(Button, { key: 'd7f813370ace60deaad975622cc26b9a497ce9d2', onClick: this.handleClickDecode }, "Decode"), h(Button, { key: 'ec2fbeb6283ffd17c7328ee78c9464926b0bbb6b', onClick: this.handleClickClear }, "Clear"))), this.renderCertificate()));
113
117
  }
114
118
  static get is() { return "peculiar-certificate-decoder"; }
115
119
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"certificate-decoder.js","sourceRoot":"","sources":["../../../src/components/certificate-decoder/certificate-decoder.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Host,\n h,\n State,\n Prop,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { readAsBinaryString } from '../../utils';\nimport {\n X509Certificate,\n X509AttributeCertificate,\n Pkcs10CertificateRequest,\n X509Crl,\n X509Certificates,\n} 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\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 setValue(value: typeof this.certificateDecoded) {\n this.certificateDecoded = value;\n this.inputPaste.value = value.toString('pem');\n this.successParse.emit(value.toString('base64url'));\n }\n\n 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 .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 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\"\n value=\"\"\n onChange={this.handleChangeInputFile}\n />\n </div>\n {this.certificateExamples?.length && (\n <div class=\"control_row\">\n <Typography\n variant=\"b3\"\n color=\"secondary-tint-2\"\n >\n Load examples:\n </Typography>\n <select onChange={this.handleChangeExample}>\n <option value=\"\">None</option>\n {this.certificateExamples.map((example) => (\n <option value={example.value}>\n {example.title}\n </option>\n ))}\n </select>\n </div>\n )}\n <div class=\"control_row\">\n <Button\n onClick={this.handleClickDecode}\n >\n Decode\n </Button>\n <Button\n onClick={this.handleClickClear}\n >\n Clear\n </Button>\n </div>\n </div>\n {this.renderCertificate()}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"certificate-decoder.js","sourceRoot":"","sources":["../../../src/components/certificate-decoder/certificate-decoder.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Host,\n h,\n State,\n Prop,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { readAsBinaryString } from '../../utils';\nimport {\n X509Certificate,\n X509AttributeCertificate,\n Pkcs10CertificateRequest,\n X509Crl,\n X509Certificates,\n SshCertificate,\n} from '../../crypto';\nimport { Button } from '../button';\nimport { Typography } from '../typography';\n\n@Component({\n tag: 'peculiar-certificate-decoder',\n styleUrl: 'certificate-decoder.scss',\n shadow: true,\n})\nexport class CertificateDecoder {\n private inputPaste?: HTMLTextAreaElement;\n\n /**\n * The example certificate value for decode and show details. Use PEM or DER.\n */\n @Prop() certificateExamples?: {\n title: string;\n value: string;\n }[];\n\n /**\n * The default certificate value for decode and show details. Use PEM or DER.\n */\n @Prop() certificateToDecode?: string;\n\n @State() certificateDecoded: X509Certificates\n | X509Certificate\n | X509AttributeCertificate\n | Pkcs10CertificateRequest\n | X509Crl\n | SshCertificate;\n\n /**\n * Emitted when the certificate has been successfully parsed.\n */\n @Event() successParse!: EventEmitter<string>;\n\n /**\n * Emitted when the certificate has been removed.\n */\n @Event() clearCertificate!: EventEmitter<void>;\n\n componentDidLoad() {\n if (this.certificateToDecode) {\n /**\n * Prevent Stencil warning about re-render\n */\n setTimeout(() => this.decode(this.certificateToDecode), 100);\n }\n }\n\n private handleClickDecode = () => {\n const { value } = this.inputPaste;\n\n if (value) {\n this.decode(value);\n }\n };\n\n private handleClickClear = () => {\n this.clearValue();\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleChangeInputFile = async (event: any) => {\n const element = event.target;\n\n if (element.files) {\n const file = await readAsBinaryString(element.files[0]);\n\n if (typeof file.value === 'string') {\n this.decode(file.value);\n }\n\n element.value = '';\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleChangeExample = (event: any) => {\n if (event.target.value) {\n this.decode(event.target.value);\n } else {\n this.clearValue();\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private handleDropFile = async (event: any) => {\n event.stopPropagation();\n event.preventDefault();\n\n const element = event.dataTransfer;\n\n if (element.files) {\n const file = await readAsBinaryString(element.files[0]);\n\n if (typeof file.value === 'string') {\n this.decode(file.value);\n }\n }\n };\n\n clearValue() {\n this.inputPaste.value = '';\n this.certificateDecoded = null;\n this.clearCertificate.emit();\n }\n\n async setValue(value: typeof this.certificateDecoded) {\n this.certificateDecoded = value;\n\n this.inputPaste.value = await value.toString('pem');\n this.successParse.emit(await value.toString('base64url'));\n }\n\n async decode(value: string) {\n new Promise<X509Certificates>((resolve) => {\n resolve(new X509Certificates(value));\n })\n .catch(() => new X509Certificate(value))\n .catch(() => new X509AttributeCertificate(value))\n .catch(() => new Pkcs10CertificateRequest(value))\n .catch(() => new X509Crl(value))\n .catch(() => new SshCertificate(value))\n .then((res: typeof this.certificateDecoded) => this.setValue(res))\n .catch((error) => {\n console.log(error);\n\n alert(`Error decoding certificate:\\n\"${value}\"\\n\\nPlease try to use Certificate/AttributeCertificate/CertificateRequest/CRL.`);\n });\n }\n\n renderCertificate() {\n if (this.certificateDecoded instanceof X509Certificates) {\n return (\n <peculiar-certificate-chain-viewer\n certificates={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof X509Certificate) {\n return (\n <peculiar-certificate-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof X509AttributeCertificate) {\n return (\n <peculiar-attribute-certificate-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof Pkcs10CertificateRequest) {\n return (\n <peculiar-csr-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof X509Crl) {\n return (\n <peculiar-crl-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n if (this.certificateDecoded instanceof SshCertificate) {\n return (\n <peculiar-ssh-certificate-viewer\n certificate={this.certificateDecoded}\n download\n />\n );\n }\n\n return null;\n }\n\n render() {\n return (\n <Host>\n <textarea\n placeholder=\"Certificate DER or PEM\"\n class=\"textarea t-b2 c-black\"\n ref={(el) => { this.inputPaste = el; }}\n onDrop={this.handleDropFile}\n />\n <div class=\"controls\">\n <div class=\"control_row\">\n <Typography\n variant=\"b3\"\n color=\"secondary-tint-2\"\n >\n Drag or load file:\n </Typography>\n <input\n type=\"file\"\n accept=\"application/pkix-cert,application/x-x509-ca-cert,application/x-x509-user-cert,application/pkcs10,application/pkix-crl,.csr,.req,.crl,.cert\"\n value=\"\"\n onChange={this.handleChangeInputFile}\n />\n </div>\n {this.certificateExamples?.length && (\n <div class=\"control_row\">\n <Typography\n variant=\"b3\"\n color=\"secondary-tint-2\"\n >\n Load examples:\n </Typography>\n <select onChange={this.handleChangeExample}>\n <option value=\"\">None</option>\n {this.certificateExamples.map((example) => (\n <option value={example.value}>\n {example.title}\n </option>\n ))}\n </select>\n </div>\n )}\n <div class=\"control_row\">\n <Button\n onClick={this.handleClickDecode}\n >\n Decode\n </Button>\n <Button\n onClick={this.handleClickClear}\n >\n Clear\n </Button>\n </div>\n </div>\n {this.renderCertificate()}\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * © Peculiar Ventures https://peculiarventures.com/ - MIT License
3
+ */
4
+ /**
5
+ * @license
6
+ * Copyright (c) Peculiar Ventures, LLC.
7
+ *
8
+ * This source code is licensed under the MIT license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ */
11
+ import { h } from "@stencil/core";
12
+ import { AsnConvert } from "@peculiar/asn1-schema";
13
+ import { Extension } from "../../../crypto/extension";
14
+ import { Extensions } from "../../certificate-details-parts";
15
+ import { TableRowTable } from "../row";
16
+ import { BasicAttribute } from "./basic_attribute";
17
+ export const ExtensionRequestAttribute = (props) => {
18
+ const { attribute } = props;
19
+ let extensions;
20
+ if (attribute.value) {
21
+ extensions = attribute.value.map((e) => new Extension(AsnConvert.serialize(e)));
22
+ }
23
+ return (h(BasicAttribute, { attribute: attribute }, h(TableRowTable, null, h(Extensions, { extensions: extensions, getDNSNameLink: () => '', getIPAddressLink: () => '', getLEILink: () => '' }))));
24
+ };
25
+ //# sourceMappingURL=extension_request_attribute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension_request_attribute.js","sourceRoot":"","sources":["../../../../src/components/certificate-details-parts/attributes/extension_request_attribute.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAuB,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAmB,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,MAAM,CAAC,MAAM,yBAAyB,GACiB,CAAC,KAAK,EAAE,EAAE;IAC/D,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,UAAwC,CAAC;IAE7C,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CACL,EAAC,cAAc,IACb,SAAS,EAAE,SAAS;QAEpB,EAAC,aAAa;YACZ,EAAC,UAAU,IACT,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,EACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,EAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,GACpB,CACY,CACD,CAClB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright (c) Peculiar Ventures, LLC.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { h, FunctionalComponent } from '@stencil/core';\nimport { ExtensionRequest } from '@peculiar/asn1-pkcs9';\nimport { AsnConvert } from '@peculiar/asn1-schema';\nimport { Extension, TExtensionValue } from '../../../crypto/extension';\nimport { Attribute } from '../../../crypto/attribute';\nimport { Extensions } from '../../certificate-details-parts';\nimport { TableRowTable } from '../row';\nimport { BasicAttribute } from './basic_attribute';\n\ninterface IExtensionRequestAttributeProps {\n attribute: Attribute<ExtensionRequest>;\n}\n\nexport const ExtensionRequestAttribute:\nFunctionalComponent<IExtensionRequestAttributeProps> = (props) => {\n const { attribute } = props;\n let extensions: Extension<TExtensionValue>[];\n\n if (attribute.value) {\n extensions = attribute.value.map((e) => new Extension(AsnConvert.serialize(e)));\n }\n\n return (\n <BasicAttribute\n attribute={attribute}\n >\n <TableRowTable>\n <Extensions\n extensions={extensions}\n getDNSNameLink={() => ''}\n getIPAddressLink={() => ''}\n getLEILink={() => ''}\n />\n </TableRowTable>\n </BasicAttribute>\n );\n};\n"]}