From 7d5950d6cc127237a637bd550c1ba3b1589d9615 Mon Sep 17 00:00:00 2001 From: Tilen Komel Date: Tue, 20 Aug 2024 17:23:42 +0200 Subject: [PATCH] Add SecurityValidation to security channel --- .../PageComponents/Config/Security.tsx | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/src/components/PageComponents/Config/Security.tsx b/src/components/PageComponents/Config/Security.tsx index b2f7d5f5..8553cf33 100644 --- a/src/components/PageComponents/Config/Security.tsx +++ b/src/components/PageComponents/Config/Security.tsx @@ -1,12 +1,47 @@ +import type { SecurityValidation } from "@app/validation/config/security.js" import { DynamicForm } from "@app/components/Form/DynamicForm.js"; +import { useDevice } from "@core/stores/deviceStore.js"; +import { Protobuf } from "@meshtastic/js"; +import { fromByteArray, toByteArray } from "base64-js"; +import { useState } from "react"; export const Security = (): JSX.Element => { - const onSubmit = (data: any) => { - console.log(data); + const { config, nodes, hardware, setWorkingConfig } = useDevice(); + + const [adminKey, setAdminKey] = useState( + fromByteArray(config.security?.adminKey ?? new Uint8Array(0)) + ); + const [privateKey, setPrivateKey] = useState( + fromByteArray(config.security?.privateKey ?? new Uint8Array(0)) + ); + const [publicKey, setPublicKey] = useState( + fromByteArray(config.security?.publicKey ?? new Uint8Array(0)) + ); + + const onSubmit = (data: SecurityValidation) => { + setWorkingConfig( + new Protobuf.Config.Config({ + payloadVariant: { + case: "security", + value: { + ...data, + adminKey: toByteArray(adminKey), + privateKey: toByteArray(privateKey), + publicKey: toByteArray(publicKey), + } + }, + }) + ) }; return ( - onSubmit={onSubmit} + defaultValues={{ + ...config.security, + adminKey: adminKey, + privateKey: privateKey, + publicKey: publicKey + }} fieldGroups={[ { label: "Security Settings", @@ -77,4 +112,4 @@ export const Security = (): JSX.Element => { ]} /> ) -}; \ No newline at end of file +};