mirror of
https://github.com/bitwarden/browser
synced 2025-12-22 11:13:46 +00:00
* Add importer dummy lib, add cargo deps for win/mac * Add Chromium importer source from bitwarden/password-access * Mod crypto is no more * Expose some Chromium importer functions via NAPI, replace home with home_dir crate * Add Chromium importer to the main <-> renderer IPC, export all functions from Rust * Add password and notes fields to the imported logins * Fix windows to use homedir instead of home * Return success/failure results * Import from account logins and join * Linux v10 support * Use mod util on Windows * Use mod util on macOS * Refactor to move shared code into chromium.rs * Fix windows * Fix Linux as well * Linux v11 support for Chrome/Gnome, everything is async now * Support multiple browsers on Linux v11 * Move oo7 to Linux * Fix Windows * Fix macOS * Add support for Brave browser in Linux configuration * Add support for Opera browser in Linux configuration * Fix Edge and add Arc on macOS * Add Opera on macOS * Add support for Vivaldi browser in macOS configuration * Add support for Chromium browser in macOS configuration * Fix Edge on Windows * Add Opera on Windows * Add Vivaldi on windows * Add Chromium to supported browsers on Windows * stub out UI options for chromium direct import * call IPC funcs from import-desktop * add notes to chrome csv importer * remove (csv) from import tool names and format item names as hostnames * Add ABE/v20 encryption support * ABE/v20 architecture description * Add a build step to produce admin.exe and service.exe * Add Windows v20/ABE configuration functionality to specify the full path to the admin.exe and service.exe. Use ipc.platform.chromiumImporter.configureWindowsCryptoService to configure the Chromium importer on Windows. * rename ARCHITECTURE.md to README.md * aligns with guidance from architecture re: in-repository documentation. * also fixes a failing lint. * cargo fmt * cargo clippy fix * Declare feature flag for using chromium importer * Linter fix after executing npm run prettier * Use feature flag to guard the use of the chromium importer * Added temporary logging to further debug, why the Angular change detection isn't working as expected * introduce importer metadata; host metadata from service; includes tests * fix cli build * Register autotype module in lib.rs introduce by a bad merge * Fix web build * Fix issue with loaders being undefined and the feature flag turned off * Add missing Chromium support when selecting chromecsv * debugging * remove chromium support from chromecsv metadata * fix default loader selection * [PM-24753] cargo lib file (#16090) * Add new modules * Fix chromium importer * Fix compile bugs for toolchain * remove importer folder * remove IPC code * undo setting change * clippy fixes * cargo fmt * clippy fixes * clippy fixes * clippy fixes * clippy fixes * lint fix * fix release build * Add files in CODEOWNERS * Create tools owned preload.ts * Move chromium-importer.service under tools-ownership * Fix typeError When accessing the Chromium direct import options the file button is hidden, so trying to access it's values will fail * Fix tools owned preload * Remove dead code and redundant truncation * Remove configureWindowsCryptoService function/methods * Clean up cargo files * Fix unused async * Update apps/desktop/desktop_native/bitwarden_chromium_importer/Cargo.toml Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Fix napi deps * fix lints * format * fix linux lint * fix windows lints * format * fix missing `?` * fix a different missing `?` --------- Co-authored-by: Dmitry Yakimenko <detunized@gmail.com> Co-authored-by: Kyle Spearrin <kyle.spearrin@gmail.com> Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com> Co-authored-by: ✨ Audrey ✨ <ajensen@bitwarden.com> Co-authored-by: ✨ Audrey ✨ <audrey@audreyality.com> Co-authored-by: adudek-bw <adudek@bitwarden.com> Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
239 lines
8.9 KiB
TypeScript
239 lines
8.9 KiB
TypeScript
/* tslint:disable */
|
|
/* eslint-disable */
|
|
|
|
/* auto-generated by NAPI-RS */
|
|
|
|
export declare namespace passwords {
|
|
/** The error message returned when a password is not found during retrieval or deletion. */
|
|
export const PASSWORD_NOT_FOUND: string
|
|
/**
|
|
* Fetch the stored password from the keychain.
|
|
* Throws {@link Error} with message {@link PASSWORD_NOT_FOUND} if the password does not exist.
|
|
*/
|
|
export function getPassword(service: string, account: string): Promise<string>
|
|
/** Save the password to the keychain. Adds an entry if none exists otherwise updates the existing entry. */
|
|
export function setPassword(service: string, account: string, password: string): Promise<void>
|
|
/**
|
|
* Delete the stored password from the keychain.
|
|
* Throws {@link Error} with message {@link PASSWORD_NOT_FOUND} if the password does not exist.
|
|
*/
|
|
export function deletePassword(service: string, account: string): Promise<void>
|
|
/** Checks if the os secure storage is available */
|
|
export function isAvailable(): Promise<boolean>
|
|
}
|
|
export declare namespace biometrics {
|
|
export function prompt(hwnd: Buffer, message: string): Promise<boolean>
|
|
export function available(): Promise<boolean>
|
|
export function setBiometricSecret(service: string, account: string, secret: string, keyMaterial: KeyMaterial | undefined | null, ivB64: string): Promise<string>
|
|
/**
|
|
* Retrieves the biometric secret for the given service and account.
|
|
* Throws Error with message [`passwords::PASSWORD_NOT_FOUND`] if the secret does not exist.
|
|
*/
|
|
export function getBiometricSecret(service: string, account: string, keyMaterial?: KeyMaterial | undefined | null): Promise<string>
|
|
/**
|
|
* Derives key material from biometric data. Returns a string encoded with a
|
|
* base64 encoded key and the base64 encoded challenge used to create it
|
|
* separated by a `|` character.
|
|
*
|
|
* If the iv is provided, it will be used as the challenge. Otherwise a random challenge will be generated.
|
|
*
|
|
* `format!("<key_base64>|<iv_base64>")`
|
|
*/
|
|
export function deriveKeyMaterial(iv?: string | undefined | null): Promise<OsDerivedKey>
|
|
export interface KeyMaterial {
|
|
osKeyPartB64: string
|
|
clientKeyPartB64?: string
|
|
}
|
|
export interface OsDerivedKey {
|
|
keyB64: string
|
|
ivB64: string
|
|
}
|
|
}
|
|
export declare namespace clipboards {
|
|
export function read(): Promise<string>
|
|
export function write(text: string, password: boolean): Promise<void>
|
|
}
|
|
export declare namespace sshagent {
|
|
export interface PrivateKey {
|
|
privateKey: string
|
|
name: string
|
|
cipherId: string
|
|
}
|
|
export interface SshKey {
|
|
privateKey: string
|
|
publicKey: string
|
|
keyFingerprint: string
|
|
}
|
|
export interface SshUiRequest {
|
|
cipherId?: string
|
|
isList: boolean
|
|
processName: string
|
|
isForwarding: boolean
|
|
namespace?: string
|
|
}
|
|
export function serve(callback: (err: Error | null, arg: SshUiRequest) => any): Promise<SshAgentState>
|
|
export function stop(agentState: SshAgentState): void
|
|
export function isRunning(agentState: SshAgentState): boolean
|
|
export function setKeys(agentState: SshAgentState, newKeys: Array<PrivateKey>): void
|
|
export function lock(agentState: SshAgentState): void
|
|
export function clearKeys(agentState: SshAgentState): void
|
|
export class SshAgentState { }
|
|
}
|
|
export declare namespace processisolations {
|
|
export function disableCoredumps(): Promise<void>
|
|
export function isCoreDumpingDisabled(): Promise<boolean>
|
|
export function disableMemoryAccess(): Promise<void>
|
|
}
|
|
export declare namespace powermonitors {
|
|
export function onLock(callback: (err: Error | null, ) => any): Promise<void>
|
|
export function isLockMonitorAvailable(): Promise<boolean>
|
|
}
|
|
export declare namespace windows_registry {
|
|
export function createKey(key: string, subkey: string, value: string): Promise<void>
|
|
export function deleteKey(key: string, subkey: string): Promise<void>
|
|
}
|
|
export declare namespace ipc {
|
|
export interface IpcMessage {
|
|
clientId: number
|
|
kind: IpcMessageType
|
|
message?: string
|
|
}
|
|
export const enum IpcMessageType {
|
|
Connected = 0,
|
|
Disconnected = 1,
|
|
Message = 2
|
|
}
|
|
export class IpcServer {
|
|
/**
|
|
* Create and start the IPC server without blocking.
|
|
*
|
|
* @param name The endpoint name to listen on. This name uniquely identifies the IPC connection and must be the same for both the server and client.
|
|
* @param callback This function will be called whenever a message is received from a client.
|
|
*/
|
|
static listen(name: string, callback: (error: null | Error, message: IpcMessage) => void): Promise<IpcServer>
|
|
/** Return the path to the IPC server. */
|
|
getPath(): string
|
|
/** Stop the IPC server. */
|
|
stop(): void
|
|
/**
|
|
* Send a message over the IPC server to all the connected clients
|
|
*
|
|
* @return The number of clients that the message was sent to. Note that the number of messages
|
|
* actually received may be less, as some clients could disconnect before receiving the message.
|
|
*/
|
|
send(message: string): number
|
|
}
|
|
}
|
|
export declare namespace autostart {
|
|
export function setAutostart(autostart: boolean, params: Array<string>): Promise<void>
|
|
}
|
|
export declare namespace autofill {
|
|
export function runCommand(value: string): Promise<string>
|
|
export const enum UserVerification {
|
|
Preferred = 'preferred',
|
|
Required = 'required',
|
|
Discouraged = 'discouraged'
|
|
}
|
|
export interface Position {
|
|
x: number
|
|
y: number
|
|
}
|
|
export interface PasskeyRegistrationRequest {
|
|
rpId: string
|
|
userName: string
|
|
userHandle: Array<number>
|
|
clientDataHash: Array<number>
|
|
userVerification: UserVerification
|
|
supportedAlgorithms: Array<number>
|
|
windowXy: Position
|
|
}
|
|
export interface PasskeyRegistrationResponse {
|
|
rpId: string
|
|
clientDataHash: Array<number>
|
|
credentialId: Array<number>
|
|
attestationObject: Array<number>
|
|
}
|
|
export interface PasskeyAssertionRequest {
|
|
rpId: string
|
|
clientDataHash: Array<number>
|
|
userVerification: UserVerification
|
|
allowedCredentials: Array<Array<number>>
|
|
windowXy: Position
|
|
}
|
|
export interface PasskeyAssertionWithoutUserInterfaceRequest {
|
|
rpId: string
|
|
credentialId: Array<number>
|
|
userName: string
|
|
userHandle: Array<number>
|
|
recordIdentifier?: string
|
|
clientDataHash: Array<number>
|
|
userVerification: UserVerification
|
|
windowXy: Position
|
|
}
|
|
export interface PasskeyAssertionResponse {
|
|
rpId: string
|
|
userHandle: Array<number>
|
|
signature: Array<number>
|
|
clientDataHash: Array<number>
|
|
authenticatorData: Array<number>
|
|
credentialId: Array<number>
|
|
}
|
|
export class IpcServer {
|
|
/**
|
|
* Create and start the IPC server without blocking.
|
|
*
|
|
* @param name The endpoint name to listen on. This name uniquely identifies the IPC connection and must be the same for both the server and client.
|
|
* @param callback This function will be called whenever a message is received from a client.
|
|
*/
|
|
static listen(name: string, registrationCallback: (error: null | Error, clientId: number, sequenceNumber: number, message: PasskeyRegistrationRequest) => void, assertionCallback: (error: null | Error, clientId: number, sequenceNumber: number, message: PasskeyAssertionRequest) => void, assertionWithoutUserInterfaceCallback: (error: null | Error, clientId: number, sequenceNumber: number, message: PasskeyAssertionWithoutUserInterfaceRequest) => void): Promise<IpcServer>
|
|
/** Return the path to the IPC server. */
|
|
getPath(): string
|
|
/** Stop the IPC server. */
|
|
stop(): void
|
|
completeRegistration(clientId: number, sequenceNumber: number, response: PasskeyRegistrationResponse): number
|
|
completeAssertion(clientId: number, sequenceNumber: number, response: PasskeyAssertionResponse): number
|
|
completeError(clientId: number, sequenceNumber: number, error: string): number
|
|
}
|
|
}
|
|
export declare namespace passkey_authenticator {
|
|
export function register(): void
|
|
}
|
|
export declare namespace logging {
|
|
export const enum LogLevel {
|
|
Trace = 0,
|
|
Debug = 1,
|
|
Info = 2,
|
|
Warn = 3,
|
|
Error = 4
|
|
}
|
|
export function initNapiLog(jsLogFn: (err: Error | null, arg0: LogLevel, arg1: string) => any): void
|
|
}
|
|
export declare namespace chromium_importer {
|
|
export interface ProfileInfo {
|
|
id: string
|
|
name: string
|
|
}
|
|
export interface Login {
|
|
url: string
|
|
username: string
|
|
password: string
|
|
note: string
|
|
}
|
|
export interface LoginImportFailure {
|
|
url: string
|
|
username: string
|
|
error: string
|
|
}
|
|
export interface LoginImportResult {
|
|
login?: Login
|
|
failure?: LoginImportFailure
|
|
}
|
|
export function getInstalledBrowsers(): Promise<Array<string>>
|
|
export function getAvailableProfiles(browser: string): Promise<Array<ProfileInfo>>
|
|
export function importLogins(browser: string, profileId: string): Promise<Array<LoginImportResult>>
|
|
}
|
|
export declare namespace autotype {
|
|
export function getForegroundWindowTitle(): string
|
|
export function typeInput(input: Array<number>): void
|
|
}
|