Skip to content

agent/pkg/certs ​

Certificate management package for creating and extracting certificate archives.

Overview ​

This package provides utilities for packaging SSL certificates into ZIP archives and extracting them. It is used by the GoDoxy Agent to distribute certificates to clients in a convenient format.

Architecture ​

Public Functions ​

ZipCert ​

go
func ZipCert(ca, crt, key []byte) ([]byte, error)

Creates a ZIP archive containing three PEM files:

  • ca.pem - CA certificate
  • cert.pem - Server/client certificate
  • key.pem - Private key

Parameters:

  • ca - CA certificate in PEM format
  • crt - Certificate in PEM format
  • key - Private key in PEM format

Returns:

  • ZIP archive bytes
  • Error if packing fails

ExtractCert ​

go
func ExtractCert(data []byte) (ca, crt, key []byte, err error)

Extracts certificates from a ZIP archive created by ZipCert.

Parameters:

  • data - ZIP archive bytes

Returns:

  • ca - CA certificate bytes
  • crt - Certificate bytes
  • key - Private key bytes
  • Error if extraction fails

AgentCertsFilepath ​

go
func AgentCertsFilepath(host string) (filepathOut string, ok bool)

Generates the file path for storing agent certificates.

Parameters:

  • host - Agent hostname

Returns:

  • Full file path within certs/ directory
  • false if host is invalid (contains path separators or special characters)

isValidAgentHost ​

go
func isValidAgentHost(host string) bool

Validates that a host string is safe for use in file paths.

Constants ​

go
const AgentCertsBasePath = "certs"

Base directory for storing certificate archives.

File Format ​

The ZIP archive uses zip.Store compression (no compression) for fast creation and extraction. Each file is stored with its standard name (ca.pem, cert.pem, key.pem).

Released under the MIT License.