Skip to content

Instantly share code, notes, and snippets.

@strideynet
Created May 2, 2023 11:02
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 strideynet/55181d890603fc0863bbca8b5fe22ab2 to your computer and use it in GitHub Desktop.
Save strideynet/55181d890603fc0863bbca8b5fe22ab2 to your computer and use it in GitHub Desktop.
Basic Go script to use `go-attestation` to dump the TPM EKCerts to disk w/ PEM encoding.
package main
import (
"encoding/pem"
"fmt"
"github.com/google/go-attestation/attest"
"log"
"os"
)
func run() error {
openCfg := &attest.OpenConfig{
TPMVersion: attest.TPMVersion20,
}
tpm, err := attest.OpenTPM(openCfg)
if err != nil {
return err
}
defer tpm.Close()
eks, err := tpm.EKs()
if err != nil {
return err
}
for i, ek := range eks {
f, err := os.Create(fmt.Sprintf("tpm-ekcert-%d.pem", i))
if err != nil {
return err
}
defer f.Close()
if ek.Certificate != nil {
pem.Encode(f, &pem.Block{
Type: "CERTIFICATE",
Bytes: ek.Certificate.Raw,
})
} else {
fmt.Fprintf(f, "No EKCert present, suggested url: %s", ek.CertificateURL)
}
}
return nil
}
func main() {
err := run()
if err != nil {
log.Fatalf(err.Error())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment