private static PSCredential ReadMacOSKeyChainEntry(string name) { var cmd = $"/usr/bin/security find-generic-password -s '{name}'"; var output = Shell.Bash(cmd); string username = null; string password = null; foreach (var line in output) { if (line.Trim().StartsWith(@"""acct""")) { var acctline = line.Trim().Split(new string[] { "<blob>=" }, StringSplitOptions.None); username = acctline[1].Trim(new char[] { '"' }); } } cmd = $"/usr/bin/security find-generic-password -s '{name}' -w"; output = Shell.Bash(cmd); if (output.Count == 1) { password = output[0]; } if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password)) { return(new PSCredential(username, StringToSecureString(password))); } return(null); }
private static bool DeleteMacOSKeyChainEntry(string name) { var cmd = $"/usr/bin/security delete-generic-password -s '{name}'"; var output = Shell.Bash(cmd); var success = output.Count > 1 && !output[0].StartsWith("security:"); return(success); }
public void ShellBashTest() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { // Simple test var result = Shell.Bash("whoami"); Assert.IsTrue(result.Any()); } }
private static void WriteMacOSKeyChainEntry(string applicationName, string username, SecureString password, bool overwrite) { var pw = SecureStringToString(password); var cmd = $"/usr/bin/security add-generic-password -a '{username}' -w '{pw}' -s '{applicationName}'"; if (overwrite) { cmd += " -U"; } Shell.Bash(cmd); }