1
>
/*---------------------------------------------------------------------------------------------
encryptionService.ts
2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { createDecorator } from '../../instantiation/common/instantiation.js';
7
>
8
>
export const IEncryptionService = createDecorator<IEncryptionService>('encryptionService');
9
>
export interface IEncryptionService extends ICommonEncryptionService {
10
>
setUsePlainTextEncryption(): Promise<void>;
11
>
getKeyStorageProvider(): Promise<KnownStorageProvider>;
12
>
}
13
>
14
>
export const IEncryptionMainService = createDecorator<IEncryptionMainService>('encryptionMainService');
15
>
export interface IEncryptionMainService extends IEncryptionService { }
16
>
17
>
export interface ICommonEncryptionService {
18
>
19
>
readonly _serviceBrand: undefined;
20
>
21
>
encrypt(value: string): Promise<string>;
22
>
23
>
decrypt(value: string): Promise<string>;
24
>
25
>
isEncryptionAvailable(): Promise<boolean>;
26
>
}
27
>
28
>
// The values provided to the `password-store` command line switch.
29
>
// Notice that they are not the same as the values returned by
30
>
// `getSelectedStorageBackend` in the `safeStorage` API.
31
>
export const enum PasswordStoreCLIOption {
32
>
kwallet = 'kwallet',
33
>
kwallet5 = 'kwallet5',
34
>
gnomeLibsecret = 'gnome-libsecret',
35
>
basic = 'basic'
36
>
}
37
>
38
>
// The values returned by `getSelectedStorageBackend` in the `safeStorage` API.
39
>
export const enum KnownStorageProvider {
40
>
unknown = 'unknown',
41
>
basicText = 'basic_text',
42
>
43
>
// Linux
44
>
gnomeAny = 'gnome_any',
45
>
gnomeLibsecret = 'gnome_libsecret',
46
>
gnomeKeyring = 'gnome_keyring',
47
>
kwallet = 'kwallet',
48
>
kwallet5 = 'kwallet5',
49
>
kwallet6 = 'kwallet6',
50
>
51
>
// The rest of these are not returned by `getSelectedStorageBackend`
52
>
// but these were added for platform completeness.
53
>
54
>
// Windows
55
>
dplib = 'dpapi',
56
>
57
>
// macOS
58
>
keychainAccess = 'keychain_access',
59
>
}
60
>
61
>
export function isKwallet(backend: string): boolean {
62
return backend === KnownStorageProvider.kwallet
63
|| backend === KnownStorageProvider.kwallet5
64
|| backend === KnownStorageProvider.kwallet6;
65
}
67
>
export function isGnome(backend: string): boolean {
68
return backend === KnownStorageProvider.gnomeAny
69
|| backend === KnownStorageProvider.gnomeLibsecret