Fixed security key generation

This commit is contained in:
Tilen Komel
2024-08-23 23:29:52 +02:00
parent 22cd5aa88d
commit afc45588fa

View File

@@ -19,7 +19,7 @@ export const Security = (): JSX.Element => {
);
const [privateKeyVisible, setPrivateKeyVisible] = useState<boolean>(false);
const [privateKeyBitCount, setPrivateKeyBitCount] = useState<number>(
config.security?.privateKey.length ?? 16,
config.security?.privateKey.length ?? 32,
);
const [privateKeyValidationText, setPrivateKeyValidationText] =
useState<string>();
@@ -60,7 +60,11 @@ export const Security = (): JSX.Element => {
setPrivateKey(fromByteArray(privateKey));
setPublicKey(fromByteArray(publicKey));
setPrivateKeyValidationText(undefined);
validatePass(
fromByteArray(privateKey),
privateKeyBitCount,
setPrivateKeyValidationText,
);
};
const adminKeyClickEvent = () => {
@@ -82,19 +86,31 @@ export const Security = (): JSX.Element => {
value: React.SetStateAction<string | undefined>,
) => void,
) => {
if (input.length % 4 !== 0 || toByteArray(input).length !== count) {
try {
if (input.length % 4 !== 0 || toByteArray(input).length !== count) {
setValidationText(`Please enter a valid ${count * 8} bit PSK.`);
} else {
setValidationText(undefined);
}
} catch (e) {
console.error(e);
setValidationText(`Please enter a valid ${count * 8} bit PSK.`);
} else {
setValidationText(undefined);
}
};
const privateKeyInputChangeEvent = (
e: React.ChangeEvent<HTMLInputElement>,
) => {
const psk = e.currentTarget?.value;
setPrivateKey(psk);
validatePass(psk, privateKeyBitCount, setPrivateKeyValidationText);
const privateKeyB64String = e.currentTarget?.value;
setPrivateKey(privateKeyB64String);
validatePass(
privateKeyB64String,
privateKeyBitCount,
setPrivateKeyValidationText,
);
const publicKey = getX25519PublicKey(toByteArray(privateKeyB64String));
setPublicKey(fromByteArray(publicKey));
};
const adminKeyInputChangeEvent = (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -136,7 +152,7 @@ export const Security = (): JSX.Element => {
name: "privateKey",
label: "Private Key",
description: "Used to create a shared key with a remote device",
bits: [{ text: "128 bit", value: "16", key: "bit128" }],
bits: [{ text: "256 bit", value: "32", key: "bit256" }],
validationText: privateKeyValidationText,
devicePSKBitCount: privateKeyBitCount,
inputChange: privateKeyInputChangeEvent,