package ssh import ( "os" "strings" "golang.org/x/crypto/ssh" "git.maze.io/maze/conduit/logger" ) func LoadPrivateKey(name string) (ssh.Signer, error) { if strings.Contains(name, "-----BEGIN") && strings.Contains(name, "PRIVATE KEY-----") { logger.StandardLog.Debug("Loading private key from string") return ssh.ParsePrivateKey([]byte(name)) } logger.StandardLog.Value("path", name).Debug("Loading private key") b, err := os.ReadFile(name) if err != nil { return nil, err } return ssh.ParsePrivateKey(b) } func LoadPrivateKeyWithPassphrase(name string, passphrase []byte) (ssh.Signer, error) { if strings.Contains(name, "-----BEGIN") && strings.Contains(name, "PRIVATE KEY-----") { logger.StandardLog.Debug("Loading private key from string (with passphrase)") return ssh.ParsePrivateKeyWithPassphrase([]byte(name), passphrase) } logger.StandardLog.Value("path", name).Debug("Loading private key (with passphrase)") b, err := os.ReadFile(name) if err != nil { return nil, err } return ssh.ParsePrivateKeyWithPassphrase(b, passphrase) }