{"id":15779937,"url":"https://github.com/rgl/tpm-go-attestation-vagrant","last_synced_at":"2026-01-02T17:07:48.433Z","repository":{"id":65661692,"uuid":"326015583","full_name":"rgl/tpm-go-attestation-vagrant","owner":"rgl","description":"tpm go-attestation playground","archived":false,"fork":false,"pushed_at":"2022-05-21T17:43:04.000Z","size":82,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-31T11:06:18.075Z","etag":null,"topics":["go","remote-attestation","swtpm","tpm","tpm2"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rgl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-01T16:35:34.000Z","updated_at":"2024-05-20T15:14:49.000Z","dependencies_parsed_at":"2023-02-03T01:01:17.232Z","dependency_job_id":null,"html_url":"https://github.com/rgl/tpm-go-attestation-vagrant","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Ftpm-go-attestation-vagrant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Ftpm-go-attestation-vagrant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Ftpm-go-attestation-vagrant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgl%2Ftpm-go-attestation-vagrant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rgl","download_url":"https://codeload.github.com/rgl/tpm-go-attestation-vagrant/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243547625,"owners_count":20308743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","remote-attestation","swtpm","tpm","tpm2"],"created_at":"2024-10-04T18:22:01.903Z","updated_at":"2026-01-02T17:07:48.379Z","avatar_url":"https://github.com/rgl.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Usage\n\nInstall the [Ubuntu 20.04 UEFI vagrant box](https://github.com/rgl/ubuntu-vagrant).\n\nInstall the [Windows 2022 UEFI vagrant box](https://github.com/rgl/windows-vagrant).\n\nInstall the [swtpm](https://github.com/stefanberger/swtpm) packages as described in [swtpm-vagrant](https://github.com/rgl/swtpm-vagrant).\n\nStart the environment then do a self-test attestation:\n\n```bash\n# start the server.\ntime vagrant up --provider=libvirt --no-destroy-on-error --no-tty server\n# start the ubuntu client.\ntime vagrant up --provider=libvirt --no-destroy-on-error --no-tty client0\n# enter the envirment.\nvagrant ssh client0\n# switch to root.\nsudo -i\n# show information about the tpm.\nattest-tool info\n# show the swtpm root ca certificate (this signs the swtpm ca).\nopenssl x509 -noout -text -in /opt/swtpm-localca/swtpm-localca-rootca-cert.pem\n# show the swtpm ca intermediate certificate (this signs the tpm ek).\nopenssl x509 -noout -text -in /opt/swtpm-localca/swtpm-localca-cert.pem\n# list the tpm endorsement keys (ek) certificates.\nattest-tool list-eks | openssl x509 -noout -text\n# do a self-test attestation.\nattest-tool self-test\n```\n\nAccess the `server` page to see the known clients:\n\n  http://10.11.0.101:8000\n\nClick one of the clients to go to its Remove Attestation page.\n\nClick the \"Start Remote Attestation\" button and go through the remote attestation steps.\n\n\n# Real-World Projects\n\n* [Secure Production Identity Framework For Everyone (SPIFFE)](https://github.com/spiffe/spiffe)\n* [SPIFFE Runtime Environment (SPIRE)](https://github.com/spiffe/spire)\n  * [TPM2 based node attestation plugin](https://github.com/bloomberg/spire-tpm-plugin)\n* [Keylime (Bootstrap \u0026 Maintain Trust on the Edge / Cloud and IoT)](https://keylime.dev/)\n\n# References\n\n* [Go-Attestation library](https://github.com/google/go-attestation)\n  * [attest-tool self-test](https://github.com/google/go-attestation/blob/v0.4.3/attest/attest-tool/attest-tool.go#L119-L132)\n* [Remote Attestation with TPM (in the context of SPIRE)](https://github.com/bloomberg/spire-tpm-plugin/blob/master/TPM.md)\n* [Remote Attestation With TPM2 Tools](https://tpm2-software.github.io/2020/06/12/Remote-Attestation-With-tpm2-tools.html)\n* [tpm-js (experiment with a software Trusted Platform Module (TPM) in your browser)](https://google.github.io/tpm-js/)\n* [Using the TPM - It's Not Rocket Science (Anymore) - Johannes Holland \u0026 Peter Huewe](https://www.youtube.com/watch?v=XwaSyHJIos8)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgl%2Ftpm-go-attestation-vagrant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frgl%2Ftpm-go-attestation-vagrant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgl%2Ftpm-go-attestation-vagrant/lists"}