25 Commits (2de592d30c3a72025f1b892191285f1c6552af88)

Author SHA1 Message Date
Jan Dittberner 2de592d30c Implement command type handling
This commit changes the wire protocol to split between command
announcement and command payload to allow proper typing of sent and
received msgpack messages.

CRL fetching has been implemented as second command after the existing
health check command.
2 years ago
Jan Dittberner 472091b374 Switch to logrus for structured logging 2 years ago
Jan Dittberner 4c24e4692b Fix golangci-lint warnings 2 years ago
Jan Dittberner 175a72298d Centralize serial number generation 2 years ago
Jan Dittberner 82a1284073 Rename intermediary CA to subordinate CA
This refactoring commit renames all occurrences of the term "intermediary CA"
to "subordinate CA" for better alignment with the terms used in RFC-5280 and
other standard documents.
2 years ago
Jan Dittberner 60be959c24 Implement health check infrastructure
This commit adds health check capabilities to the hsm.Access and health
response data to the messages returned by the health command.
2 years ago
Jan Dittberner 3107ad8abb Implement serial link and protocol handling infrastructure
This commit adds basic serial link and protocol support. None of the commands
from the docs/design.md document is implemented yet.

The following new packages have been added:

- seriallink containing the serial link handler including COBS decoding and
  encoding
- protocol containing the protocol handler including msgpack unmarshalling
  and marshaling
- health containing a rudimentary health check implementation
- messages containing command and response types and generated msgpack
  marshaling code

A client simulation command has been added in cmd/clientsim.

README.md got instructions how to run the client simulator. The
docs/config.sample.yaml contains a new section for the serial connection
parameters.
2 years ago
Jan Dittberner c2b987fd31 Allow hsm to use relative paths 2 years ago
Jan Dittberner 0d69a9013d Refactor HSM setup
- create new type hsm.Access to encapsulate HSM operations
- make setup options operate on hsm.Access instances
- adapt tests and cmd/signer to work with hsm.Access
2 years ago
Jan Dittberner c532ec436a Improve test coverage of package hsm 2 years ago
Jan Dittberner 057852ede6 Implement proper support for CRLEntry extensions 2 years ago
Jan Dittberner 474e7717cc Fix Goland code inspection warnings 2 years ago
Jan Dittberner 79cb5c96bf Extract test helper functions 2 years ago
Jan Dittberner 510ba2ad25 Add test for pkg/hsm/context.go 2 years ago
Jan Dittberner 23c9e6f3e0 Improve test coverage of X.509 revoking 2 years ago
Jan Dittberner c538be4385 Fix error message spelling 2 years ago
Jan Dittberner baf6d0f037 Configure and apply golangci-lint 2 years ago
Jan Dittberner 63c3716b5b Move x509 and openpgp into pkg
small refactoring to unify package structure. Use crypto.rand for serial
number generation in tests.
2 years ago
Jan Dittberner 42c7dc7170 Improve config handling and test coverage 2 years ago
Jan Dittberner 7d415ff181 Increase coverage for pkg/config 2 years ago
Jan Dittberner 9fd40af603 Add -verbose flag, implement config options 2 years ago
Jan Dittberner 2e343498af Fix failing test 2 years ago
Jan Dittberner 47d5b2afff Improve configuration, implement setup mode
- implement a dedicated setup mode for creating CA certificates that is
  triggered by the '-setup' command line flag
- switch to YAML configuration for comment support and more human
  readable syntax. Format documentation is in docs/config.sample.yaml
- move HSM related code to pkg/hsm
- improve consistency checks in pkg/config
2 years ago
Jan Dittberner 24f9ef297c Extract variable for policy OID 2 years ago
Jan Dittberner de997913cf Implement configuration and CA hierarchy setup
This commit implements a mechanism to load CA configuration dynamically from
JSON files. Missing keys and certificates can be generated in a PKCS#11 HSM
or Smartcard. Certificates are stored as PEM encoded .crt files in the
filesystem.

The default PKCS#11 module (softhsm2) is now loaded from a platform specific
path using go:build comments.
2 years ago