Skip to content

Commit

Permalink
feat(WIP): use keytar-rs instead of node-keytar
Browse files Browse the repository at this point in the history
Signed-off-by: Trae Yelovich <[email protected]>
  • Loading branch information
traeok committed Jul 6, 2023
1 parent 0349fb6 commit 19bbb02
Show file tree
Hide file tree
Showing 8 changed files with 107 additions and 32 deletions.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,9 @@
"yarn": "1.22.19"
},
"resolutions": {
"**/json5": "^2.2.2"
"**/json5": "^2.2.2",
"**/@zowe/cli": "file:../zowe-cli/packages/cli",
"**/@zowe/imperative": "file:../imperative"
},
"scripts": {
"clean": "yarn workspaces run clean",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ describe("KeytarCredentialManager", () => {
},
})
);
const keytar = KeytarCredentialManager.getSecurityModules("keytar", false);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", false);
expect(keytar).toBeDefined();
expect(loggerWarnSpy).not.toHaveBeenCalled();
expect(readFileSyncSpy).toHaveBeenCalledTimes(1);
Expand All @@ -80,7 +80,7 @@ describe("KeytarCredentialManager", () => {
},
})
);
const keytar = KeytarCredentialManager.getSecurityModules("keytar", false);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", false);
expect(keytar).toBeDefined();
expect(loggerWarnSpy).not.toHaveBeenCalled();
expect(readFileSyncSpy).toHaveBeenCalledTimes(1);
Expand All @@ -97,7 +97,7 @@ describe("KeytarCredentialManager", () => {
})
);
jest.spyOn(process, "cwd").mockReturnValueOnce(__dirname + "/../../../../..");
const keytar = KeytarCredentialManager.getSecurityModules("keytar", true);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", true);
expect(keytar).toBeDefined();
expect(loggerWarnSpy).not.toHaveBeenCalled();
expect(readFileSyncSpy).toHaveBeenCalledTimes(1);
Expand All @@ -107,7 +107,7 @@ describe("KeytarCredentialManager", () => {
it("should handle empty Imperative settings", () => {
jest.spyOn(fs, "existsSync").mockReturnValueOnce(true);
const readFileSyncSpy = jest.spyOn(fs, "readFileSync").mockReturnValue(JSON.stringify({}));
const keytar = KeytarCredentialManager.getSecurityModules("keytar", false);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", false);
expect(loggerWarnSpy).not.toHaveBeenCalled();
expect(readFileSyncSpy).toHaveBeenCalledTimes(1);
expect(keytar).toBeUndefined();
Expand All @@ -116,7 +116,7 @@ describe("KeytarCredentialManager", () => {
it("should handle non-existent Imperative settings", () => {
jest.spyOn(fs, "existsSync").mockReturnValueOnce(false);
const readFileSyncSpy = jest.spyOn(fs, "readFileSync");
const keytar = KeytarCredentialManager.getSecurityModules("keytar", false);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", false);
expect(loggerWarnSpy).not.toHaveBeenCalled();
expect(readFileSyncSpy).not.toHaveBeenCalled();
expect(keytar).toBeUndefined();
Expand All @@ -125,7 +125,7 @@ describe("KeytarCredentialManager", () => {
it("should handle error loading Imperative settings", () => {
jest.spyOn(fs, "existsSync").mockReturnValueOnce(true);
const readFileSyncSpy = jest.spyOn(fs, "readFileSync").mockReturnValueOnce("invalid json");
const keytar = KeytarCredentialManager.getSecurityModules("keytar", false);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", false);
expect(loggerWarnSpy).toHaveBeenCalledTimes(1);
expect(loggerWarnSpy.mock.calls[0][0].message).toContain("Unexpected token");
expect(readFileSyncSpy).toHaveBeenCalledTimes(1);
Expand Down
2 changes: 1 addition & 1 deletion packages/zowe-explorer-api/src/profiles/ProfilesCache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ export class ProfilesCache {

public async getProfileInfo(envTheia = false): Promise<zowe.imperative.ProfileInfo> {
const mProfileInfo = new zowe.imperative.ProfileInfo("zowe", {
credMgrOverride: zowe.imperative.ProfileCredentials.defaultCredMgrWithKeytar(() => getSecurityModules("keytar", envTheia)),
credMgrOverride: zowe.imperative.ProfileCredentials.defaultCredMgrWithKeytar(() => getSecurityModules("@traeok/keytar-rs", envTheia)),
});
await mProfileInfo.readProfilesFromDisk({ homeDir: getZoweDir(), projectDir: this.cwd ?? undefined });
return mProfileInfo;
Expand Down
2 changes: 1 addition & 1 deletion packages/zowe-explorer-api/src/security/KeytarApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class KeytarApi {
const profiles = new ProfilesCache(log, vscode.workspace.workspaceFolders?.[0]?.uri.fsPath);
const scsActive = profiles.isSecureCredentialPluginActive();
if (scsActive) {
const keytar = KeytarCredentialManager.getSecurityModules("keytar", isTheia);
const keytar = KeytarCredentialManager.getSecurityModules("@traeok/keytar-rs", isTheia);
if (!initialized && keytar) {
KeytarCredentialManager.keytar = keytar as unknown as KeytarModule;
await imperative.CredentialManagerFactory.initialize({
Expand Down
3 changes: 3 additions & 0 deletions packages/zowe-explorer-ftp-extension/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@
"@zowe/zowe-explorer-api": "2.10.0-SNAPSHOT",
"tmp": "0.2.1"
},
"resolutions": {
"**/@zowe/imperative": "file:../imperative"
},
"devDependencies": {
"@types/tmp": "0.2.0",
"concurrently": "^5.2.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/zowe-explorer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -1933,6 +1933,7 @@
"vscode": "^1.53.2"
},
"devDependencies": {
"@traeok/keytar-rs": "https://github.com/traeok/keytar-rs.git",
"@types/chai": "^4.2.6",
"@types/chai-as-promised": "^7.1.0",
"@types/expect": "^1.20.3",
Expand All @@ -1958,7 +1959,6 @@
"gulp-typescript": "^5.0.1",
"jsdoc": "^3.6.3",
"jsdom": "^16.0.0",
"keytar": "^7.2.0",
"log4js": "^6.4.6",
"markdownlint-cli": "^0.33.0",
"mem": "^6.0.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/zowe-explorer/src/utils/ProfilesUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ export class ProfilesUtils {
ZoweLogger.info(localize("ProfilesUtils.getProfileInfo.usingDefault", "No custom credential managers found, using the default instead."));
await ProfilesUtils.updateCredentialManagerSetting(globals.ZOWE_CLI_SCM);
return new imperative.ProfileInfo("zowe", {
credMgrOverride: imperative.ProfileCredentials.defaultCredMgrWithKeytar(() => getSecurityModules("keytar", envTheia)),
credMgrOverride: imperative.ProfileCredentials.defaultCredMgrWithKeytar(() => getSecurityModules("@traeok/keytar-rs", envTheia)),
});
}

Expand Down
112 changes: 91 additions & 21 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1754,6 +1754,14 @@
resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==

"@traeok/keytar-rs@github:traeok/keytar-rs":
version "0.0.0"
resolved "https://codeload.github.com/traeok/keytar-rs/tar.gz/0b00af3fb1ae1b70ef68b049071d5c392218dbc5"

"@traeok/keytar-rs@https://github.com/traeok/keytar-rs.git":
version "0.0.0"
resolved "https://github.com/traeok/keytar-rs.git#0b00af3fb1ae1b70ef68b049071d5c392218dbc5"

"@types/babel__core@^7.1.14":
version "7.1.20"
resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359"
Expand Down Expand Up @@ -2234,30 +2242,28 @@
resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==

"@zowe/[email protected]", "@zowe/cli@^7.16.2":
version "7.16.2"
resolved "https://registry.npmjs.org/@zowe/cli/-/cli-7.16.2.tgz#a0f92c51043a77dc7c401b50d3cdb88150ff2ee5"
integrity sha512-AHw92hRhWTEhRLZYCjSiQLb0+v3QvqzMo0U1WeZf9Ou9vYNKpR4I5B3VCG6+dmfxKRAz9o6V/kHA1sMDARLUdQ==
"@zowe/[email protected]", "@zowe/cli@^7.16.2", "@zowe/cli@file:../zowe-cli/packages/cli":
version "7.16.4"
dependencies:
"@zowe/core-for-zowe-sdk" "7.16.1"
"@zowe/imperative" "5.13.2"
"@zowe/core-for-zowe-sdk" "7.16.4"
"@zowe/imperative" "5.14.2"
"@zowe/perf-timing" "1.0.7"
"@zowe/provisioning-for-zowe-sdk" "7.16.1"
"@zowe/zos-console-for-zowe-sdk" "7.16.1"
"@zowe/zos-files-for-zowe-sdk" "7.16.1"
"@zowe/zos-jobs-for-zowe-sdk" "7.16.1"
"@zowe/zos-logs-for-zowe-sdk" "7.16.1"
"@zowe/zos-tso-for-zowe-sdk" "7.16.1"
"@zowe/zos-uss-for-zowe-sdk" "7.16.1"
"@zowe/zos-workflows-for-zowe-sdk" "7.16.1"
"@zowe/zosmf-for-zowe-sdk" "7.16.1"
"@zowe/provisioning-for-zowe-sdk" "7.16.4"
"@zowe/zos-console-for-zowe-sdk" "7.16.4"
"@zowe/zos-files-for-zowe-sdk" "7.16.4"
"@zowe/zos-jobs-for-zowe-sdk" "7.16.4"
"@zowe/zos-logs-for-zowe-sdk" "7.16.4"
"@zowe/zos-tso-for-zowe-sdk" "7.16.4"
"@zowe/zos-uss-for-zowe-sdk" "7.16.4"
"@zowe/zos-workflows-for-zowe-sdk" "7.16.4"
"@zowe/zosmf-for-zowe-sdk" "7.16.4"
find-process "1.4.7"
get-stream "6.0.1"
lodash "4.17.21"
minimatch "5.0.1"
tar "6.1.14"
optionalDependencies:
keytar "7.9.0"
"@traeok/keytar-rs" "github:traeok/keytar-rs"

"@zowe/[email protected]":
version "7.16.1"
Expand All @@ -2267,11 +2273,18 @@
comment-json "4.1.1"
string-width "4.2.3"

"@zowe/[email protected]":
version "5.13.2"
resolved "https://registry.npmjs.org/@zowe/imperative/-/imperative-5.13.2.tgz#2019292140ebf67da03144f315e0be4ab17ed481"
integrity sha512-doA7KcmKm/VW9ZtVSRbSFBknfyzoGawuiV//+q6vBb08qiIPXn1Gg1Mn/6ECpEouBxXqRJGuXj28f+HZX9YZCA==
"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/core-for-zowe-sdk/-/core-for-zowe-sdk-7.16.4.tgz#7d2e5e20418562356d7e3afe32c5a307e79a258a"
integrity sha512-R9P1IoYLJpQ8lmBKIs436Ye397q+h8y87gYGJxlkEb/1pXyySx5ydQnAICWI7Iy6hh0aUo394INTEA0HQEc3XA==
dependencies:
comment-json "4.1.1"
string-width "4.2.3"

"@zowe/[email protected]", "@zowe/[email protected]", "@zowe/imperative@file:../imperative":
version "5.14.2"
dependencies:
"@traeok/keytar-rs" "github:traeok/keytar-rs"
"@types/yargs" "13.0.4"
"@zowe/perf-timing" "1.0.7"
chalk "2.4.2"
Expand Down Expand Up @@ -2325,18 +2338,37 @@
dependencies:
js-yaml "4.1.0"

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/provisioning-for-zowe-sdk/-/provisioning-for-zowe-sdk-7.16.4.tgz#ac240c80cc8c82eff501b55b4f27bbe207d7f84b"
integrity sha512-+xyyqWzbG9umznRJqtwaS3bkXp2KUy+71OhWMHfOijx/R+pomI7PhnmmQrpjMlTkvBvbDh82peUx9S+sxmYh/w==
dependencies:
js-yaml "4.1.0"

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zos-console-for-zowe-sdk/-/zos-console-for-zowe-sdk-7.16.1.tgz#a793daa0d93d9323127a2e844b0cb425bcb3c023"
integrity sha512-Yu9sKPjwYL1+3OAAxql1iJ0wMhn+lnnCw1B1WMXDDaY4kDV8pNKCOG/plbbXhEeUJ/UtUYh9Srr+S0Z0wKQWPA==

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-console-for-zowe-sdk/-/zos-console-for-zowe-sdk-7.16.4.tgz#c0d54cc4d9d824f1d7b05605ee898c80fe51ada8"
integrity sha512-rM4bfEZigWyfS/mzRfmMLiAi407kKmbVAzl6XllHQQg7Vtc+BVPmGA8JvQDBtMswnAc5c/EIp3IeJ7vdjt3TCA==

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zos-files-for-zowe-sdk/-/zos-files-for-zowe-sdk-7.16.1.tgz#39405d4ea13e1501a52fb039be046ad7c1a5b10d"
integrity sha512-lFVWpLTkjtbd6Xw7OGsfMmNqhYVZYK+iSVXNW3w+qoJGVeC0GtzFlZBqD/a4SzjLSBK00tAc3SEaiiqiprHJIA==
dependencies:
minimatch "5.0.1"

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-files-for-zowe-sdk/-/zos-files-for-zowe-sdk-7.16.4.tgz#5b297e75ec73b90d717bddfe5249f6ea5ef462d7"
integrity sha512-7mNoikQRu3taBWS7W0mEto8PE8uPheBrFYntrvq6QiVlCx4/YgFK+IB1Vzp93/G/YYS9iEbEQTKplS1W7KTSIA==
dependencies:
minimatch "5.0.1"

"@zowe/[email protected]":
version "2.1.2"
resolved "https://registry.npmjs.org/@zowe/zos-ftp-for-zowe-cli/-/zos-ftp-for-zowe-cli-2.1.2.tgz#d55417ff80d6c9716ed3b5ea9905fd822f738def"
Expand All @@ -2351,37 +2383,75 @@
dependencies:
"@zowe/zos-files-for-zowe-sdk" "7.16.1"

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-jobs-for-zowe-sdk/-/zos-jobs-for-zowe-sdk-7.16.4.tgz#bb8d6aacef6c199a3988b2af5e765222bcd26855"
integrity sha512-FfdrAkblCHV9yp3SYNPd/fxzggjILTalWHpo88XJrpp++7LSLYG124i0J26FxD0LEfmV5TZzttpb1UYt2OrU6A==
dependencies:
"@zowe/zos-files-for-zowe-sdk" "7.16.4"

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zos-logs-for-zowe-sdk/-/zos-logs-for-zowe-sdk-7.16.1.tgz#d516d73136ba9d61f94bba78e03a1a7c399abfcd"
integrity sha512-Fkma+Lkjcm5zjooQRMJByPi8Zdb0FyU9f+8uVNwkb0a+4Fwxe/AMZIYoT82FkQfBjlq7gVu7ntPcEP3Y02yl7w==

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-logs-for-zowe-sdk/-/zos-logs-for-zowe-sdk-7.16.4.tgz#8bd7f6cdfc02d1a5d1c98aae7d6edb2b227c9f0f"
integrity sha512-6MQCIzLll02P0iqqRHfujt854Q8A9O0/5EnkR3eyWAQw4bMIEYCBub9TYCmurNepXhTNaQR6E2ayyThjolMDHw==

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zos-tso-for-zowe-sdk/-/zos-tso-for-zowe-sdk-7.16.1.tgz#be1a9748ef4e67f8993da37478fdf1699d7a7fd7"
integrity sha512-yhc97iNhmBtOxGy9CcaeJi8AbcItlz/mW5dVAT4WlyMrpLr1hbtj0iVXIEuDBlfeXnvbTYpBNdsqlRP2IaCKhg==
dependencies:
"@zowe/zosmf-for-zowe-sdk" "7.16.1"

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-tso-for-zowe-sdk/-/zos-tso-for-zowe-sdk-7.16.4.tgz#4ed4585922ad8475a158057a2abc0fba88fda0e6"
integrity sha512-v3SgI9uL30y3YT3mi6AOlmMtCp76w+/jDCAZw0nLsulSKxz40pKGuxiVmpHlQmrMrQPXTSRzu1KE7/7LTRrWkg==
dependencies:
"@zowe/zosmf-for-zowe-sdk" "7.16.4"

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zos-uss-for-zowe-sdk/-/zos-uss-for-zowe-sdk-7.16.1.tgz#69b4b1ac79c33058f37e720c4516cf0b74915422"
integrity sha512-8rAOjPR803gKm1um8YpTNd0OySlLilw9twT6N03KVT+I+hhKi3ztvDtJWzejptifHQl0E+YRFKDOj14UkqRmbA==
dependencies:
ssh2 "1.11.0"

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-uss-for-zowe-sdk/-/zos-uss-for-zowe-sdk-7.16.4.tgz#831746f813714dc26e4e5167959cd9c94da14e66"
integrity sha512-IldSdbuTDItQBD206ExpfLBsB6Y8xDb/Ft5t7FBLDffZXghub8saHvGsrFU2L0vdNwSJBmDxAzzJ7UlTH70ygw==
dependencies:
ssh2 "1.11.0"

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zos-workflows-for-zowe-sdk/-/zos-workflows-for-zowe-sdk-7.16.1.tgz#f782358cda4e22d356c639f4f88be4eebf976b2b"
integrity sha512-EncI38qyFK0Ib6gERXVqNj9OMk0hSHekwf2GT4oY6ECaRG5WO5nlRZs7tamTowJXmrG7PJ1rRbmiigzeuQZj6w==
dependencies:
"@zowe/zos-files-for-zowe-sdk" "7.16.1"

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zos-workflows-for-zowe-sdk/-/zos-workflows-for-zowe-sdk-7.16.4.tgz#0cd0f0a051cad0e7ff271bbc60ea402d7fc43203"
integrity sha512-SRsv8il7qoLHDdy8AT0jQS5mi5vMewcHrUV6rpMB0Nox2GPvfkGYQiOcmnXb6dsa9RUPfTyNX/NMkLDgx48qkQ==
dependencies:
"@zowe/zos-files-for-zowe-sdk" "7.16.4"

"@zowe/[email protected]":
version "7.16.1"
resolved "https://registry.npmjs.org/@zowe/zosmf-for-zowe-sdk/-/zosmf-for-zowe-sdk-7.16.1.tgz#6bc0b08e30ffcaedd6670b5de3196233c603a041"
integrity sha512-K4ZKVpgfJ5Th8qjZqcHnE36zOvkjUuRITybejxjDxwtary+jKy6ZBFsNbRTWtboc4Zx8S1fm+0RdJS/3X1yW/Q==

"@zowe/[email protected]":
version "7.16.4"
resolved "https://registry.npmjs.org/@zowe/zosmf-for-zowe-sdk/-/zosmf-for-zowe-sdk-7.16.4.tgz#ac293d74c5c40393cce66e9cafa2ae158a28caa3"
integrity sha512-n4wIeN1IO9AFnTuxujYCZ4m2hRysGvK6O6DIDYRkswS0AcqkLxJ+0p4R/FmMdr10WAFAB0X0rJtW35ZP4hJooA==

abab@^2.0.3, abab@^2.0.5:
version "2.0.6"
resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
Expand Down Expand Up @@ -7160,7 +7230,7 @@ just-extend@^4.0.2:
resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz#ef5e589afb61e5d66b24eca749409a8939a8c744"
integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==

[email protected], keytar@^7.2.0, keytar@^7.7.0:
[email protected], keytar@^7.7.0:
version "7.9.0"
resolved "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz#4c6225708f51b50cbf77c5aae81721964c2918cb"
integrity sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==
Expand Down

0 comments on commit 19bbb02

Please sign in to comment.