{"id":37179473,"url":"https://github.com/peak/certificate-transparency-go","last_synced_at":"2026-01-14T20:53:11.307Z","repository":{"id":57627665,"uuid":"403623177","full_name":"peak/certificate-transparency-go","owner":"peak","description":"Auditing for TLS certificates (Go code)","archived":false,"fork":true,"pushed_at":"2021-09-06T13:34:37.000Z","size":9749,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2023-07-27T22:27:48.246Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.certificate-transparency.org/","language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"google/certificate-transparency-go","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/peak.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-06T12:57:08.000Z","updated_at":"2021-09-06T12:57:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/peak/certificate-transparency-go","commit_stats":null,"previous_names":[],"tags_count":34,"template":null,"template_full_name":null,"purl":"pkg:github/peak/certificate-transparency-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peak%2Fcertificate-transparency-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peak%2Fcertificate-transparency-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peak%2Fcertificate-transparency-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peak%2Fcertificate-transparency-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/peak","download_url":"https://codeload.github.com/peak/certificate-transparency-go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/peak%2Fcertificate-transparency-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-14T20:53:10.115Z","updated_at":"2026-01-14T20:53:11.293Z","avatar_url":"https://github.com/peak.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Certificate Transparency: Go Code\n\n[![Build Status](https://travis-ci.org/google/certificate-transparency-go.svg?branch=master)](https://travis-ci.org/google/certificate-transparency-go)\n[![Go Report Card](https://goreportcard.com/badge/github.com/google/certificate-transparency-go)](https://goreportcard.com/report/github.com/google/certificate-transparency-go)\n[![GoDoc](https://godoc.org/github.com/google/certificate-transparency-go?status.svg)](https://godoc.org/github.com/google/certificate-transparency-go)\n\nThis repository holds Go code related to\n[Certificate Transparency](https://www.certificate-transparency.org/) (CT).  The\nrepository requires Go version 1.9.\n\n - [Repository Structure](#repository-structure)\n - [Trillian CT Personality](#trillian-ct-personality)\n - [Working on the Code](#working-on-the-code)\n     - [Running Codebase Checks](#running-codebase-checks)\n     - [Rebuilding Generated Code](#rebuilding-generated-code)\n     - [Updating Vendor Code](#updating-vendor-code)\n\n## Repository Structure\n\nThe main parts of the repository are:\n\n - Encoding libraries:\n   - `asn1/` and `x509/` are forks of the upstream Go `encoding/asn1` and\n     `crypto/x509` libraries.  We maintain separate forks of these packages\n     because CT is intended to act as an observatory of certificates across the\n     ecosystem; as such, we need to be able to process somewhat-malformed\n     certificates that the stricter upstream code would (correctly) reject.\n     Our `x509` fork also includes code for working with the\n     [pre-certificates defined in RFC 6962](https://tools.ietf.org/html/rfc6962#section-3.1).\n   - `tls` holds a library for processing TLS-encoded data as described in\n     [RFC 5246](https://tools.ietf.org/html/rfc5246).\n   - `x509util/` provides additional utilities for dealing with\n     `x509.Certificate`s.\n - CT client libraries:\n   - The top-level `ct` package (in `.`) holds types and utilities for working\n     with CT data structures defined in\n     [RFC 6962](https://tools.ietf.org/html/rfc6962).\n   - `client/` and `jsonclient/` hold libraries that allow access to CT Logs\n     via HTTP entrypoints described in\n     [section 4 of RFC 6962](https://tools.ietf.org/html/rfc6962#section-4).\n   - `dnsclient/` has a library that allows access to CT Logs over\n     [DNS](https://github.com/google/certificate-transparency-rfcs/blob/master/dns/draft-ct-over-dns.md).\n   - `scanner/` holds a library for scanning the entire contents of an existing\n     CT Log.\n - CT Personality for [Trillian](https://github.com/google/trillian):\n    - `trillian/` holds code that allows a Certificate Transparency Log to be\n      run using a Trillian Log as its back-end -- see\n      [below](#trillian-ct-personality).\n - Command line tools:\n   - `./client/ctclient` allows interaction with a CT Log.\n   - `./ctutil/sctcheck` allows SCTs (signed certificate timestamps) from a CT\n     Log to be verified.\n   - `./scanner/scanlog` allows an existing CT Log to be scanned for certificates\n      of interest; please be polite when running this tool against a Log.\n   - `./x509util/certcheck` allows display and verification of certificates\n   - `./x509util/crlcheck` allows display and verification of certificate\n     revocation lists (CRLs).\n - Other libraries related to CT:\n   - `ctutil/` holds utility functions for validating and verifying CT data\n     structures.\n   - `loglist/` has a library for reading v1 JSON lists of CT Logs.\n   - `loglist2/` has a library for reading\n     [v2 JSON lists of CT Logs](https://www.certificate-transparency.org/known-logs).\n\n\n## Trillian CT Personality\n\nThe `trillian/` subdirectory holds code and scripts for running a CT Log based\non the [Trillian](https://github.com/google/trillian) general transparency Log,\nand is [documented separately](trillian/README.md).\n\n\n## Working on the Code\n\nDevelopers who want to make changes to the codebase need some additional\ndependencies and tools, described in the following sections.  The\n[Travis configuration](.travis.yml) for the codebase is also useful reference\nfor the required tools and scripts, as it may be more up-to-date than this\ndocument.\n\nIn order for the `go generate` command to work properly, the code must\nbe checked out to the following location:\n`$GOPATH/src/github.com/google/certificate-transparency-go`\n\n\n### Running Codebase Checks\n\nThe [`scripts/presubmit.sh`](scripts/presubmit.sh) script runs various tools\nand tests over the codebase; please ensure this script passes before sending\npull requests for review.\n\n```bash\n# Install golangci-lint\ngo get -u github.com/golangci/golangci-lint/cmd/golangci-lint\ncd $GOPATH/src/github.com/golangci/golangci-lint/cmd/golangci-lint\ngo install -ldflags \"-X 'main.version=$(git describe --tags)' -X 'main.commit=$(git rev-parse --short HEAD)' -X 'main.date=$(date)'\"\ncd -\n\n# Run code generation, build, test and linters\n./scripts/presubmit.sh\n\n# Run build, test and linters but skip code generation\n./scripts/presubmit.sh  --no-generate\n\n# Or just run the linters alone:\ngolangci-lint run\n```\n\n### Rebuilding Generated Code\n\nSome of the CT Go code is autogenerated from other files:\n\n- [Protocol buffer](https://developers.google.com/protocol-buffers/) message\n  definitions are converted to `.pb.go` implementations.\n- A mock implementation of the Trillian gRPC API (in `trillian/mockclient`) is\n  created with [GoMock](https://github.com/golang/mock).\n\nRe-generating mock or protobuffer files is only needed if you're changing\nthe original files; if you do, you'll need to install the prerequisites:\n\n- tools written in `go` can be installed with a single run of `go install`\n  (courtesy of [`tools.go`](tools.go) and `go.mod`).\n- `protoc` tool: you'll need [version 3.12.4](https://github.com/protocolbuffers/protobuf/releases/tag/v3.12.4) installed, and `PATH` updated to include its `bin/` directory.\n\nWith tools installed, run the following:\n\n```bash\ngo generate -x ./...  # hunts for //go:generate comments and runs them\n```\n\n### Updating Vendor Code\n\nThe codebase includes a couple of external projects under the `vendor/`\nsubdirectory, to ensure that builds use a fixed version (typically because the\nupstream repository does not guarantee back-compatibility between the tip\n`master` branch and the current stable release).  See\n[instructions in the Trillian repo](https://github.com/google/trillian#updating-vendor-code)\nfor how to update vendored subtrees.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeak%2Fcertificate-transparency-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpeak%2Fcertificate-transparency-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpeak%2Fcertificate-transparency-go/lists"}