Skip to content

Instantly share code, notes, and snippets.

@jonesbusy
Created November 25, 2020 17:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonesbusy/311bdd5a3e30efe2089996cb97942070 to your computer and use it in GitHub Desktop.
Save jonesbusy/311bdd5a3e30efe2089996cb97942070 to your computer and use it in GitHub Desktop.
Jenkins dump instance public key
import jenkins.security.CryptoConfidentialKey
import java.security.KeyPair
import java.security.spec.X509EncodedKeySpec
import java.security.spec.PKCS8EncodedKeySpec
import org.bouncycastle.util.io.pem.PemObject
import org.bouncycastle.util.io.pem.PemWriter
import org.jenkinsci.main.modules.instance_identity.InstanceIdentity
import org.jenkinsci.main.modules.instance_identity.pem.PEMHelper
import org.apache.commons.io.FileUtils
CryptoConfidentialKey KEY = new CryptoConfidentialKey(InstanceIdentity.class, "KEY");
File keyFile = new File(Jenkins.getActiveInstance().getRootDir(), "identity.key.enc")
KeyPair keyPair = PEMHelper.decodePEM(new String(KEY.decrypt().doFinal(FileUtils.readFileToByteArray(keyFile)), "UTF-8"));
// Encoded X509 public key
def x509EncodedKeySpec = new X509EncodedKeySpec(keyPair.getPublic().getEncoded())
// Encoded PKCS8 private key
def pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(keyPair.getPrivate().getEncoded())
def publicWriter = new StringWriter()
def publicPemWriter = new PemWriter(publicWriter)
publicPemWriter.writeObject(new PemObject('PUBLIC KEY', x509EncodedKeySpec.getEncoded()))
publicPemWriter.close()
publicWriter.toString()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment