Skip to content

Commit

Permalink
Merge pull request #123 from csutcliff/ExtendedAgent
Browse files Browse the repository at this point in the history
Implement ExtendedAgent
  • Loading branch information
quexten committed Feb 23, 2024
2 parents 8553e0d + c7cc1d6 commit 23a336e
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion agent/ssh/ssh.go
Expand Up @@ -81,6 +81,10 @@ func Eq(a, b ssh.PublicKey) bool {
}

func (vaultAgent vaultAgent) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) {
return vaultAgent.SignWithFlags(key, data, agent.SignatureFlagReserved)
}

func (vaultAgent vaultAgent) SignWithFlags(key ssh.PublicKey, data []byte, flags agent.SignatureFlags) (*ssh.Signature, error) {
log.Info("Sign Request for key: %s", ssh.FingerprintSHA256(key))
if vaultAgent.vault.Keyring.IsLocked() {
if !vaultAgent.unlockRequestAction() {
Expand Down Expand Up @@ -156,7 +160,30 @@ func (vaultAgent vaultAgent) Sign(key ssh.PublicKey, data []byte) (*ssh.Signatur
} else {
notify.Notify("Goldwarden", fmt.Sprintf("SSH Signing Request Approved for %s", sshKey.Name), "", 10*time.Second, func() {})
}
return signer.Sign(rand, data)

algo := ""

switch flags {
case agent.SignatureFlagRsaSha256:
algo = ssh.KeyAlgoRSASHA256
case agent.SignatureFlagRsaSha512:
algo = ssh.KeyAlgoRSASHA512
default:
return signer.Sign(rand, data)
}

log.Info("%s algorithm requested", algo)

algoSigner, err := ssh.NewSignerWithAlgorithms(signer.(ssh.AlgorithmSigner), []string{algo})
if err != nil {
return nil, err
}

return algoSigner.SignWithAlgorithm(rand, data, algo)
}

func (vaultAgent) Extension(extensionType string, contents []byte) ([]byte, error) {
return nil, agent.ErrExtensionUnsupported
}

func (vaultAgent) Signers() ([]ssh.Signer, error) {
Expand Down

0 comments on commit 23a336e

Please sign in to comment.