1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-27 21:53:25 +00:00

Merge branch 'master' into browser-ext-ui-update-test

This commit is contained in:
DanHillesheim
2022-10-20 09:45:18 -06:00
1044 changed files with 12295 additions and 6393 deletions

View File

@@ -1,21 +0,0 @@
Bitwarden believes that working with security researchers across the globe is crucial to keeping our users safe. If you believe you've found a security issue in our product or service, we encourage you to please submit a report through our [HackerOne Program](https://hackerone.com/bitwarden/). We welcome working with you to resolve the issue promptly. Thanks in advance!
# Disclosure Policy
- Let us know as soon as possible upon discovery of a potential security issue, and we'll make every effort to quickly resolve the issue.
- Provide us a reasonable amount of time to resolve the issue before any disclosure to the public or a third-party. We may publicly disclose the issue before resolving it, if appropriate.
- Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our service. Only interact with accounts you own or with explicit permission of the account holder.
- If you would like to encrypt your report, please use the PGP key with long ID `0xDE6887086F892325FEC04CC0D847525B6931381F` (available in the public keyserver pool).
While researching, we'd like to ask you to refrain from:
- Denial of service
- Spamming
- Social engineering (including phishing) of Bitwarden staff or contractors
- Any physical attempts against Bitwarden property or data centers
# We want to help you!
If you have something that you feel is close to exploitation, or if you'd like some information regarding the internal API, or generally have any questions regarding the app that would help in your efforts, please email us at https://bitwarden.com/contact and ask for that information. As stated above, Bitwarden wants to help you find issues, and is more than willing to help.
Thank you for helping keep Bitwarden and our users safe!

View File

@@ -1,7 +1,22 @@
function load(envName) {
const base = loadConfig("base");
const env = loadConfig(envName);
const local = loadConfig("local");
return {
...loadConfig(envName),
...loadConfig("local"),
...base,
...env,
...local,
flags: {
...base.flags,
...env.flags,
...local.flags,
},
devFlags: {
...base.devFlags,
...env.devFlags,
...local.devFlags,
},
};
}

View File

@@ -3,8 +3,8 @@ import "module-alias/register";
import { v4 as uuidv4 } from "uuid";
import { Utils } from "@bitwarden/common/misc/utils";
import { EncString } from "@bitwarden/common/models/domain/encString";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service";
import { EncryptService } from "@bitwarden/common/services/encrypt.service";
import { NodeCryptoFunctionService } from "@bitwarden/node/services/nodeCryptoFunction.service";

View File

@@ -1,7 +1,7 @@
{
"name": "@bitwarden/desktop",
"description": "A secure and free password manager for all of your devices.",
"version": "2022.9.2",
"version": "2022.10.1",
"keywords": [
"bitwarden",
"password",

View File

@@ -1,7 +1,7 @@
import { Component } from "@angular/core";
import { FormBuilder } from "@angular/forms";
import { AccountService } from "@bitwarden/common/abstractions/account/account.service.abstraction";
import { AccountApiService } from "@bitwarden/common/abstractions/account/account-api.service";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
@@ -23,7 +23,7 @@ export class DeleteAccountComponent {
private i18nService: I18nService,
private platformUtilsService: PlatformUtilsService,
private formBuilder: FormBuilder,
private accountService: AccountService,
private accountApiService: AccountApiService,
private logService: LogService
) {}
@@ -34,7 +34,7 @@ export class DeleteAccountComponent {
async submit() {
try {
const verification = this.deleteForm.get("verification").value;
this.formPromise = this.accountService.delete(verification);
this.formPromise = this.accountApiService.deleteAccount(verification);
await this.formPromise;
this.platformUtilsService.showToast(
"success",

View File

@@ -13,7 +13,6 @@ import { LogService } from "@bitwarden/common/abstractions/log.service";
import { MessagingService } from "@bitwarden/common/abstractions/messaging.service";
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction";
import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service";
import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service";
@@ -25,8 +24,6 @@ const BroadcasterSubscriptionId = "LockComponent";
})
export class LockComponent extends BaseLockComponent {
private deferFocus: boolean = null;
authenicatedUrl = "vault";
unAuthenicatedUrl = "update-temp-password";
constructor(
router: Router,
@@ -43,8 +40,7 @@ export class LockComponent extends BaseLockComponent {
private broadcasterService: BroadcasterService,
ngZone: NgZone,
logService: LogService,
keyConnectorService: KeyConnectorService,
private syncService: SyncService
keyConnectorService: KeyConnectorService
) {
super(
router,
@@ -67,11 +63,6 @@ export class LockComponent extends BaseLockComponent {
await super.ngOnInit();
const autoPromptBiometric = !(await this.stateService.getNoAutoPromptBiometrics());
await this.syncService.fullSync(true);
const forcePasswordReset = await this.stateService.getForcePasswordReset();
this.successRoute = forcePasswordReset === true ? this.unAuthenicatedUrl : this.authenicatedUrl;
// eslint-disable-next-line rxjs-angular/prefer-takeuntil
this.route.queryParams.subscribe((params) => {
if (this.supportsBiometric && params.promptBiometric && autoPromptBiometric) {

View File

@@ -9,7 +9,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti
import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction";
import { SearchService } from "@bitwarden/common/abstractions/search.service";
import { SendService } from "@bitwarden/common/abstractions/send.service";
import { SendView } from "@bitwarden/common/models/view/sendView";
import { SendView } from "@bitwarden/common/models/view/send.view";
import { invokeMenu, RendererMenuItem } from "@bitwarden/electron/utils";
import { SearchBarService } from "../layout/search/search-bar.service";

View File

@@ -34,7 +34,7 @@ import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.s
import { SystemService as SystemServiceAbstraction } from "@bitwarden/common/abstractions/system.service";
import { ClientType } from "@bitwarden/common/enums/clientType";
import { StateFactory } from "@bitwarden/common/factories/stateFactory";
import { GlobalState } from "@bitwarden/common/models/domain/globalState";
import { GlobalState } from "@bitwarden/common/models/domain/global-state";
import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service";
import { SystemService } from "@bitwarden/common/services/system.service";
import { ElectronCryptoService } from "@bitwarden/electron/services/electronCrypto.service";

View File

@@ -24,23 +24,25 @@
<app-vault-icon [cipher]="c"></app-vault-icon>
<div class="flex-cipher-list-item">
<span class="text">
{{ c.name | ellipsis }}
<ng-container *ngIf="c.organizationId">
<i
class="bwi bwi-collection text-muted"
title="{{ 'shared' | i18n }}"
aria-hidden="true"
></i>
<span class="sr-only">{{ "shared" | i18n }}</span>
</ng-container>
<ng-container *ngIf="c.hasAttachments">
<i
class="bwi bwi-paperclip text-muted"
title="{{ 'attachments' | i18n }}"
aria-hidden="true"
></i>
<span class="sr-only">{{ "attachments" | i18n }}</span>
</ng-container>
<span class="truncate-box">
<span class="truncate">{{ c.name }}</span>
<ng-container *ngIf="c.organizationId">
<i
class="bwi bwi-collection text-muted"
title="{{ 'shared' | i18n }}"
aria-hidden="true"
></i>
<span class="sr-only">{{ "shared" | i18n }}</span>
</ng-container>
<ng-container *ngIf="c.hasAttachments">
<i
class="bwi bwi-paperclip text-muted"
title="{{ 'attachments' | i18n }}"
aria-hidden="true"
></i>
<span class="sr-only">{{ "attachments" | i18n }}</span>
</ng-container>
</span>
</span>
<span *ngIf="c.subTitle" class="detail">{{ c.subTitle }}</span>
</div>

View File

@@ -2,7 +2,7 @@ import { Component } from "@angular/core";
import { CiphersComponent as BaseCiphersComponent } from "@bitwarden/angular/components/ciphers.component";
import { SearchService } from "@bitwarden/common/abstractions/search.service";
import { CipherView } from "@bitwarden/common/models/view/cipherView";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
import { SearchBarService } from "../layout/search/search-bar.service";

View File

@@ -1,6 +1,7 @@
import { NO_ERRORS_SCHEMA } from "@angular/core";
import { ComponentFixture, TestBed } from "@angular/core/testing";
import { ActivatedRoute } from "@angular/router";
// eslint-disable-next-line no-restricted-imports
import { Substitute } from "@fluffy-spoon/substitute";
import { mock, MockProxy } from "jest-mock-extended";

View File

@@ -25,8 +25,8 @@ import { TotpService } from "@bitwarden/common/abstractions/totp.service";
import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType";
import { CipherType } from "@bitwarden/common/enums/cipherType";
import { EventType } from "@bitwarden/common/enums/eventType";
import { CipherView } from "@bitwarden/common/models/view/cipherView";
import { FolderView } from "@bitwarden/common/models/view/folderView";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
import { FolderView } from "@bitwarden/common/models/view/folder.view";
import { invokeMenu, RendererMenuItem } from "@bitwarden/electron/utils";
import { SearchBarService } from "../layout/search/search-bar.service";

View File

@@ -422,6 +422,20 @@
</div>
</div>
</div>
<div class="box" *ngIf="cipher.folderId">
<div class="box-content">
<div class="box-content-row">
<label
for="folderName"
class="draggable"
draggable="true"
(dragstart)="setTextDataOnDrag($event, folder.name)"
>{{ "folder" | i18n }}</label
>
<input id="folderName" type="text" name="folderName" [value]="folder.name" readonly />
</div>
</div>
</div>
<div class="box" *ngIf="cipher.notes">
<h2 class="box-header">
<span
@@ -475,6 +489,10 @@
<b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b>
{{ cipher.revisionDate | date: "medium" }}
</div>
<div *ngIf="cipher.creationDate">
<b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b>
{{ cipher.creationDate | date: "medium" }}
</div>
<div *ngIf="cipher.passwordRevisionDisplayDate">
<b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b>
{{ cipher.passwordRevisionDisplayDate | date: "medium" }}

View File

@@ -15,6 +15,7 @@ import { CipherService } from "@bitwarden/common/abstractions/cipher.service";
import { CryptoService } from "@bitwarden/common/abstractions/crypto.service";
import { EventService } from "@bitwarden/common/abstractions/event.service";
import { FileDownloadService } from "@bitwarden/common/abstractions/fileDownload/fileDownload.service";
import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction";
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/abstractions/log.service";
import { MessagingService } from "@bitwarden/common/abstractions/messaging.service";
@@ -23,7 +24,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { TokenService } from "@bitwarden/common/abstractions/token.service";
import { TotpService } from "@bitwarden/common/abstractions/totp.service";
import { CipherView } from "@bitwarden/common/models/view/cipherView";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
const BroadcasterSubscriptionId = "ViewComponent";
@@ -36,6 +37,7 @@ export class ViewComponent extends BaseViewComponent implements OnChanges {
constructor(
cipherService: CipherService,
folderService: FolderService,
totpService: TotpService,
tokenService: TokenService,
i18nService: I18nService,
@@ -55,6 +57,7 @@ export class ViewComponent extends BaseViewComponent implements OnChanges {
) {
super(
cipherService,
folderService,
totpService,
tokenService,
i18nService,

View File

@@ -1266,6 +1266,10 @@
"message": "Bygewerk",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Wagwoord bygewerk",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "Blaaierintegrasie word gebruik vir biometrie in blaaier."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Staan DuckDuckGo-blaaierintegrasie toe"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Gebruik u Bitwarden-kluis wanneer u met DuckDuckGo blaai."
},
"browserIntegrationUnsupportedTitle": {
"message": "Blaaierintegrasie word nie ondersteun nie"
@@ -1604,7 +1608,7 @@
"message": "Maak seker dat die getoonde vingerafdruk identies is aan dié wat in die blaaieruitbreiding vertoon word."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ wil aan Bitwarden koppel",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Wil u hierdie versoek goedkeur?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Indien u nie hierdie versoek geïnisieer het nie, moet dit dan nie goedkeur nie."
},
"biometricsNotEnabledTitle": {
"message": "Biometrie is geaktiveer"
@@ -2016,6 +2020,6 @@
"message": "Mir"
},
"vault": {
"message": "Vault"
"message": "Kluis"
}
}

View File

@@ -1266,6 +1266,10 @@
"message": "تم التحديث",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "تم تحديث كلمة المرور",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Güncəlləndi",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Yaradıldı",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Parol güncəlləndi",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Абноўлена",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Створана",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Пароль абноўлены",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Обновено",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Създадено",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Обновена парола",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "হালনাগাদকৃত",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "পাসওয়ার্ড হালনাগাদকৃত",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Ažurirano",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Lozinka ažurirana",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Actualitzat",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Contrasenya actualitzada",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Změněno",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Heslo bylo změněno",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Opdateret",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Adgangskode opdateret",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "Bruges til biometri i browser."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Tillad DuckDuckGo browserintegration"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Brug din Bitwarden-boks, når du browser med DuckDuckGo."
},
"browserIntegrationUnsupportedTitle": {
"message": "Browserintegration understøttes ikke"
@@ -1604,7 +1608,7 @@
"message": "Sørg for, at det viste fingeraftryk er identisk med det fingeraftryk, der vises i browserudvidelsen."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ ønsker at oprette forbindelse til Bitwarden",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Vil du godkende denne anmodning?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Hvis du ikke indledte denne anmodning, skal du ikke godkende den."
},
"biometricsNotEnabledTitle": {
"message": "Biometri ikke aktiveret"

View File

@@ -1266,6 +1266,10 @@
"message": "Aktualisiert",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Erstellt",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Passwort aktualisiert",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Ενημερώθηκε",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Ο Κωδικός Ενημερώθηκε",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Actualizada",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Creado",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Contraseña actualizada",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Uuendatud",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Parool on uuendatud",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Eguneratua",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Pasahitza eguneratu da",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "Nabigatzailean biometria erabiltzen da."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Baimendu DuckDuckGo nabigatzailearekin integratzea"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Erabili zure Bitwarden kutxa gotorra, DuckDuckGo-rekin nabigatzean."
},
"browserIntegrationUnsupportedTitle": {
"message": "Ez da nabigatzailearen integrazioa onartzen"
@@ -1604,7 +1608,7 @@
"message": "Ziurtatu bistaratutako hatz-marka digitala nabigatzailearen gehigarrian agertzen den hatz-marka digitalaren berdina dela."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$-ek Bitwardenekin konektatu nahi du",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Eskaera hau onartu nahi duzu?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Eskaera hasi ez baduzu, ez onartu."
},
"biometricsNotEnabledTitle": {
"message": "Biometria desgaitua"

View File

@@ -1266,6 +1266,10 @@
"message": "بروزرسانی شد",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "کلمه عبور بروزرسانی شد",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "یکپارچه سازی مرورگر برای بیومتریک در مرورگر استفاده می شود."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "اجازه ادغام مرورگر DuckDuckGo را بدهید"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "هنگام مرور با DuckDuckGo از گاوصندوق Bitwarden خود استفاده کنید."
},
"browserIntegrationUnsupportedTitle": {
"message": "ادغام مرورگر پشتیبانی نمی شود"
@@ -1604,7 +1608,7 @@
"message": "لطفاً اطمینان حاصل کنید که اثر انگشت نشان داده شده با اثر انگشت نشان داده شده در افزونه مرورگر یکسان است."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ می‌خواهد به Bitwarden متصل شود",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "آیا می‌خواهید این درخواست را تأیید کنید؟"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "اگر شما این درخواست را آغاز نکرده اید، آن را تأیید نکنید."
},
"biometricsNotEnabledTitle": {
"message": "بیومتریک فعال نیست"
@@ -2016,6 +2020,6 @@
"message": "میر"
},
"vault": {
"message": "Vault"
"message": "گاوصندوق"
}
}

View File

@@ -346,7 +346,7 @@
"message": "Nimi vaaditaan."
},
"addedItem": {
"message": "Kohde lisätty"
"message": "Kohde lisättiin"
},
"editedItem": {
"message": "Kohdetta muokattu"
@@ -764,7 +764,7 @@
"message": "Hanki apua"
},
"fileBugReport": {
"message": "tä virheilmoitus"
"message": "Lähetä virheilmoitus"
},
"blog": {
"message": "Blogi"
@@ -1266,6 +1266,10 @@
"message": "Päivitetty",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Luotu",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Salasana päivitetty",
"description": "ex. Date this password was updated"
@@ -1364,7 +1368,7 @@
"message": "Avaa PIN-koodilla"
},
"setYourPinCode": {
"message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos sovelluksesta."
"message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut sovelluksesta kokonaan ulos."
},
"pinRequired": {
"message": "PIN-koodi vaaditaan."
@@ -1568,10 +1572,10 @@
"message": "Salli selainintegraatio"
},
"enableBrowserIntegrationDesc": {
"message": "Käytetään selainten biometriatukeen."
"message": "Käytetään verkkoselainten biometriatukeen."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Salli integrointi DuckDuckGo-selaimeen"
"message": "Salli integraatio DuckDuckGo-selaimeen"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Käytä Bitwardenin holvia DuckDuckGo-selaimessa."
@@ -1580,10 +1584,10 @@
"message": "Selainintegraatiota ei tueta"
},
"browserIntegrationMasOnlyDesc": {
"message": "Valitettavasti selainintegraatiota tukee toistaiseksi vain Mac App Store -versio."
"message": "Valitettavasti selainintegraatiota tuetaan toistaiseksi vain Mac App Store -versiossa."
},
"browserIntegrationWindowsStoreDesc": {
"message": "Valitettavasti selainintegraatiota ei toistaiseksi tueta sovelluksen Microsoft Store -versiossa."
"message": "Valitettavasti selainintegraatiota ei toistaiseksi tueta Microsoft Store -versiossa."
},
"browserIntegrationLinuxDesc": {
"message": "Valitettavasti selainintegraatiota ei toistaiseksi tueta Linux-versiossa."
@@ -1616,7 +1620,7 @@
"message": "Haluatko hyväksyä pyynnön?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "Älä hyväksy pyyntöä, jollet itse aiheuttanut sitä."
"message": "Älä hyväksy pyyntöä, jos et tunnista sitä."
},
"biometricsNotEnabledTitle": {
"message": "Biometria ei ole käytössä"
@@ -1680,7 +1684,7 @@
"description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated."
},
"currentAccessCount": {
"message": "Nykyinen käyttökertojen määrä"
"message": "Käyttökertojen nykyinen määrä"
},
"disableSend": {
"message": "Poista Send käytöstä, jottei kukaan voi avata sitä.",

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Mis à jour ",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Mot de passe mis à jour",
"description": "ex. Date this password was updated"
@@ -1385,10 +1389,10 @@
"message": "déverouiller votre coffre"
},
"autoPromptWindowsHello": {
"message": "Ask for Windows Hello on launch"
"message": "Demander à Windows Hello au démarrage"
},
"autoPromptTouchId": {
"message": "Ask for Touch ID on launch"
"message": "Demander à Touch ID au démarrage"
},
"lockWithMasterPassOnRestart": {
"message": "Verrouiller avec le mot de passe maître lors du redémarrage"
@@ -1571,10 +1575,10 @@
"message": "L'intégration avec le navigateur est utilisée pour le déverrouillage biométrique dans le navigateur."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Autoriser l'intégration DuckDuckGo au navigateur"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Utiliser votre coffre Bitwarden quand vous naviguez avec DuckDuckGo."
},
"browserIntegrationUnsupportedTitle": {
"message": "Intégration dans le navigateur non supportée"
@@ -1604,7 +1608,7 @@
"message": "Veuillez vous assurer que la phrase d'empreinte affichée est identique à celle affichée dans l'extension de navigateur."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ souhaite se connecter à Bitwarden",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Voulez-vous approuver cette demande ?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Si vous n'avez pas initié cette demande, ne l'approuverez pas."
},
"biometricsNotEnabledTitle": {
"message": "Le déverrouillage biométrique n'est pas activé"
@@ -2016,6 +2020,6 @@
"message": "Mir"
},
"vault": {
"message": "Vault"
"message": "Coffre"
}
}

View File

@@ -1266,6 +1266,10 @@
"message": "עודכן",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "הסיסמה עודכנה",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Ažurirano",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Lozinka ažurirana",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "A frissítés megtörtént.",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Létrehozva",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "A jelszó frissítésre került.",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Di perbarui",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Kata Sandi telah Diperbarui",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Aggiornato",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Creato",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password aggiornata",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "L'integrazione del browser è utilizzata per l'autenticazione biometrica."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Consenti l'integrazione del browser DuckDuckGo"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Usa la tua cassaforte Bitwarden quando navighi con DuckDuckGo."
},
"browserIntegrationUnsupportedTitle": {
"message": "L'integrazione del browser non è supportata"
@@ -1604,7 +1608,7 @@
"message": "Assicurati che l'impronta digitale mostrata sia identica all'impronta digitale mostrata nell'estensione del browser."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ vuole connettersi a Bitwarden",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Vuoi approvare questa richiesta?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Se la richiesta non è stata fatta da te, non approvarla."
},
"biometricsNotEnabledTitle": {
"message": "Autenticazione biometrica non abilitata"

View File

@@ -1266,6 +1266,10 @@
"message": "更新日",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "作成日",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "パスワード更新日",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "ಅಪ್‌ಡೇಟ್",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "업데이트됨",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "비밀번호 업데이트됨",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Atjaunināts",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Izveidots",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Parole atjaunināta",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Ažurirano",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Lozinka ažurirana",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "പുതുക്കിയത്",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "പാസ്‍വേഡ് പുതുക്കി",
"description": "ex. Date this password was updated"

View File

@@ -36,7 +36,7 @@
"message": "Søk i hvelvet"
},
"addItem": {
"message": "Legg til objekt"
"message": "Legg til element"
},
"shared": {
"message": "Delt"
@@ -1266,6 +1266,10 @@
"message": "Oppdatert den",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Passordet ble oppdatert den",
"description": "ex. Date this password was updated"
@@ -1397,16 +1401,16 @@
"message": "Slett konto"
},
"deleteAccountDesc": {
"message": "Proceed below to delete your account and all vault data."
"message": "Fortsett nedenfor for å slette kontoen din og alle hvelvdataene."
},
"deleteAccountWarning": {
"message": "Deleting your account is permanent. It cannot be undone."
"message": "Å slette kontoen din er permanent. Det kan ikke reverseres."
},
"accountDeleted": {
"message": "Konto slettet"
},
"accountDeletedDesc": {
"message": "Your account has been closed and all associated data has been deleted."
"message": "Kontoen din har blitt avsluttet og all relatert data har blitt slettet."
},
"preferences": {
"message": "Innstillinger"
@@ -1571,10 +1575,10 @@
"message": "Nettleserintegrasjon brukes til biometri i nettleseren."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Tillat integrering av DuckDuckGo"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Bruk Bitwarden-hvelvet ditt når du surfer med DuckDuckGo."
},
"browserIntegrationUnsupportedTitle": {
"message": "Nettleserintegrasjon støttes ikke"
@@ -1604,7 +1608,7 @@
"message": "Kontroller at vist fingeravtrykk er identisk med fingeravtrykket som vises i nettleserutvidelsen."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ ønsker å koble til Bitwarden",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Ønsker du å godkjenne denne forespørselen?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Ikke godkjenn denne forespørselen dersom du ikke initierte den."
},
"biometricsNotEnabledTitle": {
"message": "Biometri er ikke aktivert"
@@ -2001,13 +2005,13 @@
"message": "API-nøkkel"
},
"premiumSubcriptionRequired": {
"message": "Premium subscription required"
"message": "Premium abonnement kreves"
},
"organizationIsDisabled": {
"message": "Organisasjonen er deaktivert."
},
"disabledOrganizationFilterError": {
"message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance."
"message": "Elementer i deaktiverte organisasjoner kan ikke aksesseres. Kontakt organisasjonseier for hjelp."
},
"neverLockWarning": {
"message": "Er du sikker på at du vil bruke alternativet «Aldri»? Ved å angi låsemulighetene til «Aldri» lagres hvelvets krypteringsnøkkel på enheten. Hvis du bruker dette alternativet, bør du sørge for at du holder enheten forsvarlig beskyttet."
@@ -2016,6 +2020,6 @@
"message": "Mir"
},
"vault": {
"message": "Vault"
"message": "Hvelv"
}
}

View File

@@ -1266,6 +1266,10 @@
"message": "Bijgewerkt",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Aangemaakt",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Wachtwoord bijgewerkt",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Retta",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Zaktualizowano",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Utworzono",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Aktualizacja hasła",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Atualizado",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Senha Atualizada",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Atualizado",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Criado",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Palavra-passe atualizada",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "S-a actualizat",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Creată",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Parola s-a actualizat",
"description": "ex. Date this password was updated"

View File

@@ -1239,7 +1239,7 @@
"description": "Default URI match detection for auto-fill."
},
"toggleOptions": {
"message": "Переключить настройки"
"message": "Настройки перебора"
},
"organization": {
"message": "Организация",
@@ -1266,6 +1266,10 @@
"message": "Обновлено",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Создан",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Пароль обновлен",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "Используется для биометрии в браузере."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Разрешить интеграцию в браузер DuckDuckGo"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Использовать хранилище Bitwarden совместно с браузером DuckDuckGo."
},
"browserIntegrationUnsupportedTitle": {
"message": "Интеграция с браузером не поддерживается"
@@ -1604,7 +1608,7 @@
"message": "Пожалуйста, убедитесь, что отображаемый отпечаток идентичен отпечатку, отображаемому в расширении браузера."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ хочет подключиться к Bitwarden",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Вы хотите одобрить этот запрос?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Если запрос инициировали не вы, не одобряйте его."
},
"biometricsNotEnabledTitle": {
"message": "Биометрия не включена"

View File

@@ -1266,6 +1266,10 @@
"message": "Updated",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Aktualizované",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Vytvorené",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Heslo bolo aktualizované",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Posodobljeno",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Geslo je bilo posodobljeno",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Промењено",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Лозинка ажурирана",
"description": "ex. Date this password was updated"
@@ -1571,10 +1575,10 @@
"message": "Интеграција прегледача се користи за биометрију у прегледачу."
},
"enableDuckDuckGoBrowserIntegration": {
"message": "Allow DuckDuckGo browser integration"
"message": "Дозволи DuckDuckGo интерграцију претраживача"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "Use your Bitwarden vault when browsing with DuckDuckGo."
"message": "Употребити Bitwarden сеф када користите DuckDuckGo."
},
"browserIntegrationUnsupportedTitle": {
"message": "Интеграција са претраживачем није подржана"
@@ -1604,7 +1608,7 @@
"message": "Уверите се да је приказани отисак идентичан отиску приказаном у додатку прегледача."
},
"verifyNativeMessagingConnectionTitle": {
"message": "$APPID$ wants to connect to Bitwarden",
"message": "$APPID$ жели да се повеже са Bitwarden",
"placeholders": {
"appid": {
"content": "$1",
@@ -1613,10 +1617,10 @@
}
},
"verifyNativeMessagingConnectionDesc": {
"message": "Would you like to approve this request?"
"message": "Да ли желите да одобрите овај захтев?"
},
"verifyNativeMessagingConnectionWarning": {
"message": "If you did not initiate this request, do not approve it."
"message": "Ако нисте ви покренули овај захтев, немојте га одобрити."
},
"biometricsNotEnabledTitle": {
"message": "Биометрија није омогућена"

View File

@@ -1266,6 +1266,10 @@
"message": "Uppdaterades",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Lösenordet uppdaterades",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "อัปเดตแล้ว",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Güncelleme",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Oluşturma",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Parola güncelleme",
"description": "ex. Date this password was updated"

View File

@@ -175,10 +175,10 @@
"message": "Адреса"
},
"premiumRequired": {
"message": "Необхідний преміум статус"
"message": "Необхідна передплата преміум"
},
"premiumRequiredDesc": {
"message": "Для використання цієї функції необхідний преміум статус."
"message": "Для використання цієї функції необхідна передплата преміум."
},
"errorOccurred": {
"message": "Сталася помилка."
@@ -364,7 +364,7 @@
"message": "Ви дійсно хочете перенести до смітника?"
},
"deletedItem": {
"message": "Запис перенесено до смітника"
"message": "Запис переміщено до смітника"
},
"overwritePasswordConfirmation": {
"message": "Ви дійсно хочете перезаписати поточний пароль?"
@@ -479,7 +479,7 @@
"message": "Тека відредагована"
},
"addedFolder": {
"message": "Додано теку"
"message": "Теку додано"
},
"deleteFolderConfirmation": {
"message": "Ви дійсно хочете видалити цю теку?"
@@ -1047,19 +1047,19 @@
"message": "Преміум статус"
},
"premiumManage": {
"message": "Керувати статусом"
"message": "Керувати передплатою"
},
"premiumManageAlert": {
"message": "Ви можете керувати своїм статусом у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?"
},
"premiumRefresh": {
"message": "Оновити статус"
"message": "Оновити стан передплати"
},
"premiumNotCurrentMember": {
"message": "Зараз у вас немає преміум-статусу."
"message": "Зараз у вас немає передплати преміум."
},
"premiumSignUpAndGet": {
"message": ідпишіться на преміум-статус і отримайте:"
"message": ередплатіть преміум і отримайте:"
},
"premiumSignUpStorage": {
"message": "1 ГБ зашифрованого сховища для файлів."
@@ -1077,16 +1077,16 @@
"message": "Пріоритетну технічну підтримку."
},
"premiumSignUpFuture": {
"message": "Всі майбутні функції преміум статусу. Їх буде більше!"
"message": "Усі майбутні преміумфункції. Їх буде більше!"
},
"premiumPurchase": {
"message": "Придбати преміум"
},
"premiumPurchaseAlert": {
"message": "Ви можете придбати преміум статус у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?"
"message": "Ви можете передплатити преміум у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?"
},
"premiumCurrentMember": {
"message": "У вас преміум статус!"
"message": "Ви користуєтеся передплатою преміум!"
},
"premiumCurrentMemberThanks": {
"message": "Дякуємо за підтримку Bitwarden."
@@ -1266,6 +1266,10 @@
"message": "Оновлено",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Створено",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Пароль оновлено",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "Ngày cập nhật",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "Created",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "Password Updated",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "更新于",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "创建于",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "密码更新于",
"description": "ex. Date this password was updated"

View File

@@ -1266,6 +1266,10 @@
"message": "更新於",
"description": "ex. Date this item was updated"
},
"dateCreated": {
"message": "建立於",
"description": "ex. Date this item was created"
},
"datePasswordUpdated": {
"message": "密碼更新於",
"description": "ex. Date this password was updated"
@@ -1574,7 +1578,7 @@
"message": "允許 DuckDuckGo 瀏覽器整合"
},
"enableDuckDuckGoBrowserIntegrationDesc": {
"message": "使用 DuckDuckGo 瀏覽時,使用您的 Bitwarden 密碼庫。"
"message": "使用 DuckDuckGo 瀏覽時,使用您的 Bitwarden 密碼庫。"
},
"browserIntegrationUnsupportedTitle": {
"message": "不支援瀏覽器整合"

View File

@@ -3,7 +3,7 @@ import * as path from "path";
import { app } from "electron";
import { StateFactory } from "@bitwarden/common/factories/stateFactory";
import { GlobalState } from "@bitwarden/common/models/domain/globalState";
import { GlobalState } from "@bitwarden/common/models/domain/global-state";
import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service";
import { StateService } from "@bitwarden/common/services/state.service";
import { ElectronLogService } from "@bitwarden/electron/services/electronLog.service";

View File

@@ -1,4 +1,4 @@
import { EncString } from "@bitwarden/common/models/domain/encString";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { MessageCommon } from "./messageCommon";

View File

@@ -1,4 +1,4 @@
import { EncString } from "@bitwarden/common/models/domain/encString";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { MessageCommon } from "./messageCommon";

View File

@@ -1,4 +1,4 @@
import { EncString } from "@bitwarden/common/models/domain/encString";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { LegacyMessage } from "./legacyMessage";

View File

@@ -1,12 +1,12 @@
{
"name": "@bitwarden/desktop",
"version": "2022.9.2",
"version": "2022.10.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@bitwarden/desktop",
"version": "2022.9.2",
"version": "2022.10.1",
"license": "GPL-3.0",
"dependencies": {
"@bitwarden/desktop-native": "file:../desktop_native"

View File

@@ -2,7 +2,7 @@
"name": "@bitwarden/desktop",
"productName": "Bitwarden",
"description": "A secure and free password manager for all of your devices.",
"version": "2022.9.2",
"version": "2022.10.1",
"author": "Bitwarden Inc. <hello@bitwarden.com> (https://bitwarden.com)",
"homepage": "https://bitwarden.com",
"license": "GPL-3.0",

View File

@@ -81,6 +81,11 @@ button {
line-height: $line-height-base;
}
select {
width: 100%;
padding: 0.35rem;
}
button {
border: none;
background: transparent;

View File

@@ -152,3 +152,16 @@
height: 100%;
overflow-y: auto;
}
.truncate-box {
display: flex;
align-items: center;
gap: 5px;
}
.truncate {
display: inline-block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}

View File

@@ -266,7 +266,7 @@ p.lead {
form,
.form {
.form-group {
margin-bottom: 10px;
margin-bottom: 1.25rem;
&:last-child {
margin-bottom: 0;
@@ -492,6 +492,18 @@ app-root > #loading,
border-radius: 50% !important;
}
// Text selection styles
// Set explicit selection styles (assumes primary accent color has sufficient
// contrast against the background, so its inversion is also still readable)
// and suppress user selection for most elements (to make it more app-like)
::selection {
@include themify($themes) {
color: themed("backgroundColor");
background-color: themed("primaryAccentColor");
}
}
h1,
h2,
h3,

View File

@@ -6,9 +6,9 @@ import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.serv
import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus";
import { CipherType } from "@bitwarden/common/enums/cipherType";
import { PolicyType } from "@bitwarden/common/enums/policyType";
import { CipherView } from "@bitwarden/common/models/view/cipherView";
import { LoginUriView } from "@bitwarden/common/models/view/loginUriView";
import { LoginView } from "@bitwarden/common/models/view/loginView";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view";
import { LoginView } from "@bitwarden/common/models/view/login.view";
import { DecryptedCommandData } from "../models/nativeMessaging/decryptedCommandData";
import { CredentialCreatePayload } from "../models/nativeMessaging/encryptedMessagePayloads/credentialCreatePayload";

View File

@@ -8,8 +8,8 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
import { MessagingService } from "@bitwarden/common/abstractions/messaging.service";
import { NativeMessagingVersion } from "@bitwarden/common/enums/nativeMessagingVersion";
import { Utils } from "@bitwarden/common/misc/utils";
import { EncString } from "@bitwarden/common/models/domain/encString";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { StateService } from "@bitwarden/common/services/state.service";
import { DecryptedCommandData } from "../models/nativeMessaging/decryptedCommandData";
@@ -182,12 +182,25 @@ export class NativeMessageHandlerService {
this.ddgSharedSecret = SymmetricCryptoKey.fromJSON({ keyB64: storedKey });
}
return JSON.parse(
await this.cryptoService.decryptToUtf8(
try {
let decryptedResult = await this.cryptoService.decryptToUtf8(
message.encryptedCommand as EncString,
this.ddgSharedSecret
)
);
);
decryptedResult = this.trimNullCharsFromMessage(decryptedResult);
return JSON.parse(decryptedResult);
} catch {
this.sendResponse({
messageId: message.messageId,
version: NativeMessagingVersion.Latest,
payload: {
error: "cannot-decrypt",
},
});
return;
}
}
private async sendEncryptedResponse(
@@ -218,4 +231,23 @@ export class NativeMessageHandlerService {
private sendResponse(response: EncryptedMessageResponse | UnencryptedMessageResponse) {
ipcRenderer.send("nativeMessagingReply", response);
}
// Trim all null bytes padded at the end of messages. This happens with C encryption libraries.
private trimNullCharsFromMessage(message: string): string {
const charNull = 0;
const charRightCurlyBrace = 125;
const charRightBracket = 93;
for (let i = message.length - 1; i >= 0; i--) {
if (message.charCodeAt(i) === charNull) {
message = message.substring(0, message.length - 1);
} else if (
message.charCodeAt(i) === charRightCurlyBrace ||
message.charCodeAt(i) === charRightBracket
) {
break;
}
}
return message;
}
}

View File

@@ -11,8 +11,8 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { KeySuffixOptions } from "@bitwarden/common/enums/keySuffixOptions";
import { Utils } from "@bitwarden/common/misc/utils";
import { EncString } from "@bitwarden/common/models/domain/encString";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey";
import { EncString } from "@bitwarden/common/models/domain/enc-string";
import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key";
import { LegacyMessage } from "../models/nativeMessaging/legacyMessage";
import { LegacyMessageWrapper } from "../models/nativeMessaging/legacyMessageWrapper";

View File

@@ -1,5 +1,5 @@
import { StateService as StateServiceAbstraction } from "@bitwarden/common/abstractions/state.service";
import { GlobalState } from "@bitwarden/common/models/domain/globalState";
import { GlobalState } from "@bitwarden/common/models/domain/global-state";
import { StateService as BaseStateService } from "@bitwarden/common/services/state.service";
import { Account } from "../models/account";