From ce8199e33848f0c8c608680f71e5a7aa017912db Mon Sep 17 00:00:00 2001 From: sharevb Date: Sun, 3 Mar 2024 10:08:44 +0100 Subject: [PATCH] feat(new tool): Certificate/Key Parser and infos Parse Certificate and Keys (Public, Private, Signature, Fingerprint...) and displays infos Fix #671 --- package.json | 1 + pnpm-lock.yaml | 19 +- src/components/InputCopyable.vue | 14 +- src/composable/downloadBase64.ts | 91 ++++- .../certificate-key-parser.vue | 354 ++++++++++++++++++ src/tools/certificate-key-parser/index.ts | 12 + src/tools/index.ts | 16 +- 7 files changed, 479 insertions(+), 28 deletions(-) create mode 100644 src/tools/certificate-key-parser/certificate-key-parser.vue create mode 100644 src/tools/certificate-key-parser/index.ts diff --git a/package.json b/package.json index 7c1bd24a..bf001b4a 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "highlight.js": "^11.7.0", "iarna-toml-esm": "^3.0.5", "ibantools": "^4.3.3", + "js-base64": "^3.7.7", "json5": "^2.2.3", "jwt-decode": "^3.1.2", "libphonenumber-js": "^1.10.28", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f774d0d..af0bb1f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,6 +86,9 @@ dependencies: ibantools: specifier: ^4.3.3 version: 4.3.3 + js-base64: + specifier: ^3.7.7 + version: 3.7.7 json5: specifier: ^2.2.3 version: 2.2.3 @@ -3378,7 +3381,7 @@ packages: dependencies: '@unhead/dom': 0.5.1 '@unhead/schema': 0.5.1 - '@vueuse/shared': 10.7.2(vue@3.3.4) + '@vueuse/shared': 10.9.0(vue@3.3.4) unhead: 0.5.1 vue: 3.3.4 transitivePeerDependencies: @@ -4020,10 +4023,10 @@ packages: - vue dev: false - /@vueuse/shared@10.7.2(vue@3.3.4): - resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==} + /@vueuse/shared@10.9.0(vue@3.3.4): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} dependencies: - vue-demi: 0.14.6(vue@3.3.4) + vue-demi: 0.14.7(vue@3.3.4) transitivePeerDependencies: - '@vue/composition-api' - vue @@ -6795,6 +6798,10 @@ packages: hasBin: true dev: true + /js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + dev: false + /js-beautify@1.14.6: resolution: {integrity: sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==} engines: {node: '>=10'} @@ -9752,8 +9759,8 @@ packages: vue: 3.3.4 dev: false - /vue-demi@0.14.6(vue@3.3.4): - resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + /vue-demi@0.14.7(vue@3.3.4): + resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} engines: {node: '>=12'} hasBin: true requiresBuild: true diff --git a/src/components/InputCopyable.vue b/src/components/InputCopyable.vue index a69a039a..d4d650c9 100644 --- a/src/components/InputCopyable.vue +++ b/src/components/InputCopyable.vue @@ -2,7 +2,12 @@ import { useVModel } from '@vueuse/core'; import { useCopy } from '@/composable/copy'; -const props = defineProps<{ value: string }>(); +const props = defineProps<{ + value: string + multiline?: boolean + rows?: number | string + autosize?: boolean +}>(); const emit = defineEmits(['update:value']); const value = useVModel(props, 'value', emit); @@ -11,7 +16,12 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : 'Copy to cli