diff --git a/src/main/java/com/cloudbees/jenkins/plugins/sshcredentials/impl/SSHUserPrivateKeySnapshotTaker.java b/src/main/java/com/cloudbees/jenkins/plugins/sshcredentials/impl/SSHUserPrivateKeySnapshotTaker.java new file mode 100644 index 0000000..23b6322 --- /dev/null +++ b/src/main/java/com/cloudbees/jenkins/plugins/sshcredentials/impl/SSHUserPrivateKeySnapshotTaker.java @@ -0,0 +1,33 @@ +package com.cloudbees.jenkins.plugins.sshcredentials.impl; + +import com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey; +import com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey.DirectEntryPrivateKeySource; +import com.cloudbees.plugins.credentials.CredentialsSnapshotTaker; + +import hudson.Extension; +import hudson.util.Secret; + +@Extension +public class SSHUserPrivateKeySnapshotTaker extends CredentialsSnapshotTaker { + /** + * {@inheritDoc} + */ + @Override + public Class type() { + return SSHUserPrivateKey.class; + } + + /** + * {@inheritDoc} + */ + @Override + public SSHUserPrivateKey snapshot(SSHUserPrivateKey credentials) { + if (credentials instanceof BasicSSHUserPrivateKey && ((BasicSSHUserPrivateKey) credentials).getPrivateKeySource() instanceof DirectEntryPrivateKeySource) { + return credentials; + } + final Secret passphrase = credentials.getPassphrase(); + return new BasicSSHUserPrivateKey(credentials.getScope(), credentials.getId(), credentials.getUsername(), + new DirectEntryPrivateKeySource(credentials.getPrivateKeys()), + passphrase == null ? null : passphrase.getEncryptedValue(), credentials.getDescription()); + } +}