Skip to content
This repository has been archived by the owner on Oct 19, 2022. It is now read-only.

Commit

Permalink
Better random number and refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Levminer committed Sep 24, 2022
1 parent 7f8368b commit b53725f
Show file tree
Hide file tree
Showing 27 changed files with 49 additions and 33 deletions.
1 change: 1 addition & 0 deletions core/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ magic-crypt = "3.1.10"
keyring = "1.2.0"
once_cell = "1.14.0"
tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/tauri-plugin-single-instance" }
rand = "0.8.5"

[features]
# by default Tauri runs in production mode
Expand Down
7 changes: 4 additions & 3 deletions core/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use window_vibrancy::{apply_mica, apply_vibrancy, NSVisualEffectMaterial};

mod auto_launch;
mod encryption;
mod libraries;
mod utils;
mod system_info;

#[derive(Clone, serde::Serialize)]
Expand Down Expand Up @@ -98,8 +98,9 @@ fn main() {
encryption::receive_encryption_key,
encryption::set_encryption_key,
encryption::delete_entry,
libraries::get_args,
libraries::update_tray,
utils::get_args,
utils::update_tray,
utils::random_values,
])
.plugin(tauri_plugin_single_instance::init(|app, argv, cwd| {
println!("{}, {argv:?}, {cwd}", app.package_info().name);
Expand Down
13 changes: 13 additions & 0 deletions core/src/libraries.rs → core/src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use rand::distributions::Alphanumeric;
use rand::{thread_rng, Rng};
use std::env;
use tauri::{GlobalShortcutManager, Manager};

Expand All @@ -19,3 +21,14 @@ pub fn update_tray(app: tauri::AppHandle) {
menu_item.set_title("Hide Authme").unwrap();
}
}

#[tauri::command]
pub fn random_values(length: usize) -> String {
let rand_string: String = thread_rng()
.sample_iter(&Alphanumeric)
.take(length)
.map(char::from)
.collect();

rand_string.into()
}
2 changes: 1 addition & 1 deletion interface/components/updateAlert.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
</div>

<script>
import { installUpdate, showReleaseNotes } from "interface/libraries/update"
import { installUpdate, showReleaseNotes } from "interface/utils/update"
const hidePopup = () => {
document.querySelector(".updateAlert").style.display = "none"
Expand Down
6 changes: 3 additions & 3 deletions interface/layout/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import App from "./app.svelte"
import "../styles/index.css"
import { os, event, window, invoke } from "@tauri-apps/api"
import { getSettings } from "../stores/settings"
import { navigate } from "../libraries/navigate"
import { navigate } from "../utils/navigate"
import { getState } from "interface/stores/state"
import { dev } from "../../build.json"
import { optionalAnalyticsPayload } from "interface/libraries/analytics"
import { checkForUpdate } from "interface/libraries/update"
import { optionalAnalyticsPayload } from "interface/utils/analytics"
import { checkForUpdate } from "interface/utils/update"

const settings = getSettings()
const state = getState()
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ const settings = getSettings()
/**
* Generates random key
*/
export const generateRandomKey = async (): Promise<Buffer> => {
return Buffer.from(window.crypto.getRandomValues(new Uint8Array(32)))
export const generateRandomKey = async (length: number): Promise<Buffer> => {
return Buffer.from(await invoke("random_values", { length }))
}

/**
Expand Down Expand Up @@ -102,7 +102,7 @@ export const createWebAuthnLogin = async () => {

timeout: 60000,

challenge: window.crypto.getRandomValues(new Uint8Array(64)),
challenge: await generateRandomKey(64),
},
})

Expand All @@ -126,7 +126,7 @@ export const verifyWebAuthnLogin = async () => {
const res = await navigator.credentials.get({
publicKey: {
timeout: 60000,
challenge: window.crypto.getRandomValues(new Uint8Array(64)),
challenge: await generateRandomKey(64),
userVerification: "discouraged",
},
})
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion interface/windows/codes/codes.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
<script lang="ts">
import { onMount, onDestroy } from "svelte"
import { stopCodesRefresher, search, chooseImportFile, loadCodes } from "./index"
import { navigate, open } from "../../libraries/navigate"
import { navigate, open } from "../../utils/navigate"
import SearchFilter from "../../components/searchFilter.svelte"
onMount(() => {
Expand Down
4 changes: 2 additions & 2 deletions interface/windows/codes/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { textConverter } from "../../libraries/convert"
import { textConverter } from "../../utils/convert"
import { TOTP } from "otpauth"
import { dialog, fs } from "@tauri-apps/api"
import { getSettings, setSettings } from "../../stores/settings"
import { getState, setState } from "../../stores/state"
import { decryptData, encryptData } from "interface/libraries/encryption"
import { decryptData, encryptData } from "interface/utils/encryption"

const settings = getSettings()
const state = getState()
Expand Down
4 changes: 2 additions & 2 deletions interface/windows/confirm/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { navigate } from "../../libraries/navigate"
import { navigate } from "../../utils/navigate"
import { getSettings } from "../../stores/settings"
import { dialog, invoke } from "@tauri-apps/api"
import { getState, setState } from "../../stores/state"
import { sendEncryptionKey, verifyWebAuthnLogin } from "interface/libraries/encryption"
import { sendEncryptionKey, verifyWebAuthnLogin } from "interface/utils/encryption"

export const confirmPassword = async () => {
const settings = getSettings()
Expand Down
6 changes: 3 additions & 3 deletions interface/windows/edit/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { textConverter } from "../../libraries/convert"
import { textConverter } from "../../utils/convert"
import { dialog, fs, path } from "@tauri-apps/api"
import { getSettings, setSettings } from "../../stores/settings"
import { navigate } from "../../libraries/navigate"
import { decryptData, encryptData } from "interface/libraries/encryption"
import { navigate } from "../../utils/navigate"
import { decryptData, encryptData } from "interface/utils/encryption"

const settings = getSettings()
let names: string[] = []
Expand Down
6 changes: 3 additions & 3 deletions interface/windows/export/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { fs, dialog } from "@tauri-apps/api"
import { generateTimestamp } from "../../libraries/time"
import { textConverter } from "../../libraries/convert"
import { generateTimestamp } from "../../utils/time"
import { textConverter } from "../../utils/convert"
import { getSettings } from "../../stores/settings"
import qrcode from "qrcode-generator"
import { decryptData, verifyWebAuthnLogin } from "interface/libraries/encryption"
import { decryptData, verifyWebAuthnLogin } from "interface/utils/encryption"

let codesArray: LibImportFile
let codesText: string
Expand Down
4 changes: 2 additions & 2 deletions interface/windows/import/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import QrcodeDecoder from "qrcode-decoder"
import { fs, dialog } from "@tauri-apps/api"
import { getState, setState } from "../../stores/state"
import { totpImageConverter, migrationImageConverter } from "../../libraries/convert"
import { navigate } from "../../libraries/navigate"
import { totpImageConverter, migrationImageConverter } from "../../utils/convert"
import { navigate } from "../../utils/navigate"

/**
* Choose images, then read QR codes
Expand Down
8 changes: 4 additions & 4 deletions interface/windows/landing/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { navigate } from "../../libraries/navigate"
import { navigate } from "../../utils/navigate"
import { getSettings, setSettings } from "../../stores/settings"
import { getState, setState } from "../../stores/state"
import { dialog, invoke } from "@tauri-apps/api"
import { setEntry, generateRandomKey, setEncryptionKey, createWebAuthnLogin, verifyWebAuthnLogin } from "interface/libraries/encryption"
import { search } from "interface/libraries/password"
import { setEntry, generateRandomKey, setEncryptionKey, createWebAuthnLogin, verifyWebAuthnLogin } from "interface/utils/encryption"
import { search } from "interface/utils/password"

export const noPassword = async () => {
const settings = getSettings()
Expand All @@ -23,7 +23,7 @@ export const noPassword = async () => {
}
}

const key = await generateRandomKey()
const key = await generateRandomKey(32)

await setEntry("encryptionKey", key.toString("base64"))
await setEncryptionKey()
Expand Down
4 changes: 2 additions & 2 deletions interface/windows/settings/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import build from "../../../build.json"
import { path, invoke, os, dialog, app } from "@tauri-apps/api"
import { UAParser } from "ua-parser-js"
import { navigate, open } from "../../libraries/navigate"
import { deleteEncryptionKey } from "interface/libraries/encryption"
import { navigate, open } from "../../utils/navigate"
import { deleteEncryptionKey } from "interface/utils/encryption"

export const about = async () => {
const appVersion = await app.getVersion()
Expand Down
4 changes: 2 additions & 2 deletions interface/windows/settings/settings.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,6 @@
import Toggle from "../../components/toggle.svelte"
import { about, clearData, showLogs, launchOnStartup } from "./index"
import { settings } from "../../stores/settings"
import { open } from "../../libraries/navigate"
import { deleteShortcut, editShortcut, resetShortcut, shortcuts } from "../../libraries/shortcuts"
import { open } from "../../utils/navigate"
import { deleteShortcut, editShortcut, resetShortcut, shortcuts } from "../../utils/shortcuts"
</script>
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"compilerOptions": {
"lib": ["ESNext"],
"lib": ["ESNext", "DOM"],
"target": "es2017",
"useDefineForClassFields": true,
"module": "esnext",
Expand Down

0 comments on commit b53725f

Please sign in to comment.