Skip to content

Commit

Permalink
Fixed security key generation
Browse files Browse the repository at this point in the history
  • Loading branch information
KomelT committed Aug 29, 2024
1 parent 22cd5aa commit afc4558
Showing 1 changed file with 25 additions and 9 deletions.
34 changes: 25 additions & 9 deletions src/components/PageComponents/Config/Security.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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>();
Expand Down Expand Up @@ -60,7 +60,11 @@ export const Security = (): JSX.Element => {

setPrivateKey(fromByteArray(privateKey));
setPublicKey(fromByteArray(publicKey));
setPrivateKeyValidationText(undefined);
validatePass(
fromByteArray(privateKey),
privateKeyBitCount,
setPrivateKeyValidationText,
);
};

const adminKeyClickEvent = () => {
Expand All @@ -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>) => {
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit afc4558

Please sign in to comment.