mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-29 17:38:04 +01:00
081fe83d83
* [PM-10395] Add new item type ssh key (#10360) * Implement ssh-key cipher type * Fix linting * Fix edit and view components for ssh-keys on desktop * Fix tests * Remove ssh key type references * Remove add ssh key option * Fix typo * Add tests * [PM-10399] Add ssh key import export for bitwarden json (#10529) * Add ssh key import export for bitwarden json * Remove key type from ssh key export * [PM-10406] Add privatekey publickey and fingerprint to both add-edit and view co… (#11046) * Add privatekey publickey and fingerprint to both add-edit and view components * Remove wrong a11y title * Fix testid * [PM-10098] SSH Agent & SSH Key creation for Bitwarden Desktop (#10293) * Add ssh agent, generator & import * Move ssh agent code to bitwarden-russh crate * Remove generator component * Cleanup * Cleanup * Remove left over sshGenerator reference * Cleanup * Add documentation to sshkeyimportstatus * Fix outdated variable name * Update apps/desktop/src/platform/preload.ts Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com> * Rename renderersshagent * Rename MainSshAgentService * Improve clarity of 'id' variables being used * Improve clarity of 'id' variables being used * Update apps/desktop/src/vault/app/vault/add-edit.component.html Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com> * Fix outdated cipher/messageid names * Rename SSH to Ssh * Make agent syncing more reactive * Move constants to top of class * Make sshkey cipher filtering clearer * Add stricter equality check on ssh key unlock * Fix build and messages * Fix incorrect featureflag name * Replace anonymous async function with switchmap pipe * Fix build * Update apps/desktop/desktop_native/napi/src/lib.rs Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com> * Revert incorrectly renamed 'Ssh' usages to SSH * Run cargo fmt * Clean up ssh agent sock path logic * Cleanup and split to platform specific files * Small cleanup * Pull out generator and importer into core * Rename renderersshagentservice to sshagentservice * Rename cipheruuid to cipher_id * Drop ssh dependencies from napi crate * Clean up windows build * Small cleanup * Small cleanup * Cleanup * Add rxjs pipeline for agent services * [PM-12555] Pkcs8 sshkey import & general ssh key import tests (#11048) * Add pkcs8 import and tests * Add key type unsupported error * Remove unsupported formats * Remove code for unsupported formats * Fix encrypted pkcs8 import * Add ed25519 pkcs8 unencrypted test file * SSH agent rxjs tweaks (#11148) * feat: rewrite sshagent.signrequest as purely observable * feat: fail the request when unlock times out * chore: clean up, add some clarifying comments * chore: remove unused dependency * fix: result `undefined` crashing in NAPI -> Rust * Allow concurrent SSH requests in rust * Remove unwraps * Cleanup and add init service init call * Fix windows * Fix timeout behavior on locked vault --------- Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com> * Fix libc dependency being duplicated * fix SSH casing (#11840) * Move ssh agent behind feature flag (#11841) * Move ssh agent behind feature flag * Add separate flag for ssh agent * [PM-14215] fix unsupported key type error message (#11788) * Fix error message for import of unsupported ssh keys * Use triple equals in add-edit component for ssh keys --------- Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com> Co-authored-by: aj-bw <81774843+aj-bw@users.noreply.github.com>
123 lines
5.1 KiB
TypeScript
123 lines
5.1 KiB
TypeScript
/* tslint:disable */
|
|
/* eslint-disable */
|
|
|
|
/* auto-generated by NAPI-RS */
|
|
|
|
export declare namespace passwords {
|
|
/** Fetch the stored password from the keychain. */
|
|
export function getPassword(service: string, account: string): Promise<string>
|
|
/** Fetch the stored password from the keychain that was stored with Keytar. */
|
|
export function getPasswordKeytar(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. */
|
|
export function deletePassword(service: string, account: string): Promise<void>
|
|
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>
|
|
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 const enum SshKeyImportStatus {
|
|
/** ssh key was parsed correctly and will be returned in the result */
|
|
Success = 0,
|
|
/** ssh key was parsed correctly but is encrypted and requires a password */
|
|
PasswordRequired = 1,
|
|
/** ssh key was parsed correctly, and a password was provided when calling the import, but it was incorrect */
|
|
WrongPassword = 2,
|
|
/** ssh key could not be parsed, either due to an incorrect / unsupported format (pkcs#8) or key type (ecdsa), or because the input is not an ssh key */
|
|
ParsingError = 3,
|
|
/** ssh key type is not supported (e.g. ecdsa) */
|
|
UnsupportedKeyType = 4
|
|
}
|
|
export interface SshKeyImportResult {
|
|
status: SshKeyImportStatus
|
|
sshKey?: SshKey
|
|
}
|
|
export function serve(callback: (err: Error | null, arg: string) => any): Promise<SshAgentState>
|
|
export function stop(agentState: SshAgentState): void
|
|
export function setKeys(agentState: SshAgentState, newKeys: Array<PrivateKey>): void
|
|
export function lock(agentState: SshAgentState): void
|
|
export function importKey(encodedKey: string, password: string): SshKeyImportResult
|
|
export function generateKeypair(keyAlgorithm: string): Promise<SshKey>
|
|
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>
|
|
/** 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
|
|
}
|
|
}
|