mirror of
https://github.com/bitwarden/browser
synced 2025-12-13 14:53:33 +00:00
[SG-520] Native messaging handler (#3566)
* [SG-523] Base test runner app for native messages (#3269) * Base test runner app for native messages * Remove default test script * Add case for canceled status * Modify to allow usage of libs crypto services and functions * Small adjustments * Handshake request (#3277) * Handshake request * Fix capitalization * Update info text * lock node-ipc to 9.2.1 * [SG-569] Native Messaging settings bug (#3285) * Fix bug where updating setting wasn't starting the native messaging listener * Update test runner error message * [SG-532] Implement Status command in Native Messaging Service (#3310) * Status command start * Refactor ipc test service and add status command * fixed linter errors * Move types into a model file * Cleanup and comments * Fix auth status condition * Remove .vscode settings file. Fix this in a separate work item * Add active field to status response * Extract native messaging types into their own files * Remove experimental decorators * Turn off no console lint rule for the test runner * Casing fix * Models import casing fixes * Remove in progress file (merge error) * Move models to their own folder and add index.ts * Remove file that got un-deleted * Remove file that will be added in separate command * Fix imports that got borked * [SG-533] Implement bw-credential-retrieval (#3334) * Status command start * Refactor ipc test service and add status command * fixed linter errors * Move types into a model file * Cleanup and comments * Fix auth status condition * Remove .vscode settings file. Fix this in a separate work item * Implement bw-credential-retrieval * Add active field to status response * Extract native messaging types into their own files * Remove experimental decorators * Turn off no console lint rule for the test runner * Casing fix * Models import casing fixes * Add error handling for passing a bad public key to handshake * [SG-534] and [SG-535] Implement Credential Create and Update commands (#3342) * Status command start * Refactor ipc test service and add status command * fixed linter errors * Move types into a model file * Cleanup and comments * Fix auth status condition * Remove .vscode settings file. Fix this in a separate work item * Implement bw-credential-retrieval * Add active field to status response * Add bw-credential-create * Better response handling in test runner * Extract native messaging types into their own files * Remove experimental decorators * Turn off no console lint rule for the test runner * Casing fix * Models import casing fixes * bw-cipher-create move type into its own file * Use LogUtils for all logging * Implement bw-credential-update * Give naming conventions for types * Rename file correctly * Update handleEncyptedMessage with EncString changes * [SG-626] Fix Desktop app not showing updated credentials from native messages (#3380) * Add MessagingService to send messages on login create and update * Add `not-active-user` error to create and update and other refactors * [SG-536] Implement bw-generate-password (#3370) * implement bw-generate-password * Fix merge conflict resolution errors * Update apps/desktop/native-messaging-test-runner/src/bw-generate-password.ts Co-authored-by: Addison Beck <addisonbeck1@gmail.com> * Logging improvements * Add NativeMessagingVersion enum * Add version check in NativeMessagingHandler Co-authored-by: Addison Beck <addisonbeck1@gmail.com> * Refactor account status checks and check for locked state in generate command (#3461) * Add feawture flag to show/hide ddg setting (#3506) * [SG-649] Add confirmation dialog and tweak shared key retrieval (#3451) * Add confirmation dialog when completing handshake * Copy updates for dialog * HandshakeResponse type fixes * Add longer timeout for handshake command * [SG-663] RefactorNativeMessagingHandlerService and strengthen typing (#3551) * NativeMessageHandlerService refactor and additional types * Return empty array if no uri to retrieve command * Move commands from test runner into a separate folder * Fix bug where confirmation dialog messes with styling * Enable DDG feature * Fix generated password not saving to history * Take credentialId as parameter to update * Add applicationName to handshake payload * Add warning text to confirmation modal Co-authored-by: Addison Beck <addisonbeck1@gmail.com>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import "module-alias/register";
|
||||
|
||||
import yargs from "yargs";
|
||||
import { hideBin } from "yargs/helpers";
|
||||
|
||||
import { NativeMessagingVersion } from "@bitwarden/common/enums/nativeMessagingVersion";
|
||||
|
||||
import { CredentialCreatePayload } from "../../../src/models/nativeMessaging/encryptedMessagePayloads/credentialCreatePayload";
|
||||
import { LogUtils } from "../logUtils";
|
||||
import NativeMessageService from "../nativeMessageService";
|
||||
import * as config from "../variables";
|
||||
|
||||
const argv: any = yargs(hideBin(process.argv)).option("name", {
|
||||
alias: "n",
|
||||
demand: true,
|
||||
describe: "Name that the created login will be given",
|
||||
type: "string",
|
||||
}).argv;
|
||||
|
||||
const { name } = argv;
|
||||
|
||||
(async () => {
|
||||
const nativeMessageService = new NativeMessageService(NativeMessagingVersion.One);
|
||||
// Handshake
|
||||
LogUtils.logInfo("Sending Handshake");
|
||||
const handshakeResponse = await nativeMessageService.sendHandshake(
|
||||
config.testRsaPublicKey,
|
||||
config.applicationName
|
||||
);
|
||||
|
||||
if (!handshakeResponse.status) {
|
||||
LogUtils.logError(" Handshake failed. Error was: " + handshakeResponse.error);
|
||||
nativeMessageService.disconnect();
|
||||
return;
|
||||
}
|
||||
|
||||
// Get active account userId
|
||||
const status = await nativeMessageService.checkStatus(handshakeResponse.sharedKey);
|
||||
|
||||
const activeUser = status.payload.filter((a) => a.active === true && a.status === "unlocked")[0];
|
||||
if (activeUser === undefined) {
|
||||
LogUtils.logError("No active or unlocked user");
|
||||
}
|
||||
LogUtils.logInfo("Active userId: " + activeUser.id);
|
||||
|
||||
LogUtils.logSuccess("Handshake success response");
|
||||
const response = await nativeMessageService.credentialCreation(handshakeResponse.sharedKey, {
|
||||
name: name,
|
||||
userName: "SuperAwesomeUser",
|
||||
password: "dolhpin",
|
||||
uri: "google.com",
|
||||
userId: activeUser.id,
|
||||
} as CredentialCreatePayload);
|
||||
|
||||
if (response.payload.status === "failure") {
|
||||
LogUtils.logError("Failure response returned ");
|
||||
} else if (response.payload.status === "success") {
|
||||
LogUtils.logSuccess("Success response returned ");
|
||||
} else if (response.payload.error === "locked") {
|
||||
LogUtils.logError("Error: vault is locked");
|
||||
} else {
|
||||
LogUtils.logWarning("Other response: ", response);
|
||||
}
|
||||
|
||||
nativeMessageService.disconnect();
|
||||
})();
|
||||
Reference in New Issue
Block a user