Client implementation for the Go signer
Find a file
Jan Dittberner f3c0e1379f Improve robustness and concurrency handling
- Rename client.CertInfo to CACertificateInfo
- declare commands channel inside client.Run, there is no need to inject it
  from the outside
- let command generating code in client.commandLoop run in goroutines to
  allow parallel handling of queued commands and avoid blocking operations
- pass context to command generating functions to allow cancellation
- guard access to c.knownCACertificates by mutex.Lock and mutex.Unlock
- make command channel capacity configurable
- update to latest cacert-gosigner dependency for channel direction support
- improve handling of closed input channel
- reduce client initialization to serial connection setup, move callback and
  handler parameters to client.Run invocation
2022-12-04 14:20:34 +01:00
cmd/signerclient Improve robustness and concurrency handling 2022-12-04 14:20:34 +01:00
internal Improve robustness and concurrency handling 2022-12-04 14:20:34 +01:00
.gitattributes Initial signer client implementation 2022-11-29 16:23:16 +01:00
.gitignore Implement CA certificate information handling 2022-12-03 11:52:32 +01:00
.golangci.yml Initial signer client implementation 2022-11-29 16:23:16 +01:00
.goreleaser.yaml Build system improvements 2022-12-02 09:49:38 +01:00
go.mod Improve robustness and concurrency handling 2022-12-04 14:20:34 +01:00
go.sum Improve robustness and concurrency handling 2022-12-04 14:20:34 +01:00
LICENSE Add Apache License 2.0 text 2022-11-29 20:14:10 +01:00
Makefile Build system improvements 2022-12-02 09:49:38 +01:00
README.md Update documented go version 2022-12-03 13:41:08 +01:00

CAcert signer client

This is the CAcert signer client implementation that sends commands to the signer and handles certificate revocation lists (CRLs), OpenPGP public key signatures and X.509 certificates.

Development preconditions

You will need GNU make to build the application. On Debian systems you can install GNU make using:

sudo apt install make

Install go >= 1.19, golangci-lint >= 1.50.0 and goreleaser, as these are used for building and linting the application.

Read the documentation of these tools, to find out how to use them.

Building the binary

There is a Makefile to build the signerclient binary. Run

make

to run linting, tests and binary builds.

Running the signer client

The signer client requires a YAML configuration file to know some information about its runtime environment. The default configuration file name is config.yaml in the working directory.

Generating a configuration file

Example configuration data is generated when the client is run with the -generate-config command line argument:

./signerclient -generate-config

Start the client

With config.yaml in the current directory you can start the client:

./signerclient

Supported command line arguments

To get a list of supported command line arguments run:

./signerclient -help