Skip to content

docs: add Software Cryptography Provider integration guide#289

Open
rud3ka wants to merge 3 commits into
documentationfrom
docs/software-cryptography-provider-guide
Open

docs: add Software Cryptography Provider integration guide#289
rud3ka wants to merge 3 commits into
documentationfrom
docs/software-cryptography-provider-guide

Conversation

@rud3ka
Copy link
Copy Markdown
Collaborator

@rud3ka rud3ka commented May 4, 2026

Summary

  • Adds a step-by-step integration guide for the Software Cryptography Provider connector
  • Covers deployment (Docker + PostgreSQL), registration in the platform, token/profile/key setup, and all supported cryptographic operations
  • Matches the style and structure of existing integration guides (EJBCA, HashiCorp Vault)

Why this was missing

The platform supports EJBCA, HashiCorp Vault, AD CS, and other connectors with dedicated integration guides. The Software Cryptography Provider — despite being the recommended connector for development and testing — had no setup guide. Users had to rely on concept-level documentation only.

What is covered

  • Deployment via Docker with all environment variables documented
  • Connector registration in the platform UI
  • Token Instance creation and activation
  • Token Profile configuration
  • Key creation with algorithm options (RSA, ECDSA, post-quantum)
  • Sign / Verify via UI (with exact UI paths)
  • Encrypt / Decrypt via API (UI not available — documented as a known constraint)
  • Certificate issuance using a token key (generateCSR flow)
  • Constraints table (no symmetric keys, not for production, Encrypt/Decrypt API only)

Test plan

  • Verify all UI navigation paths match the actual sidebar structure (Inventory → Tokens, Profiles → Token Profiles, Keys)
  • Verify Docker environment variables are correct against the connector README
  • Verify API endpoint paths against the OpenAPI spec
  • Check rendering in Docusaurus (callouts, tables, code blocks)

🤖 Generated with Claude Code

Copy link
Copy Markdown
Contributor

@ivosh ivosh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good job! Thank you for the write up.
Please address my review comments and then you are good to go.

| ML-DSA | Lattice-based, NIST FIPS 204 | Sign, Verify |
| SLH-DSA | Hash-based, NIST FIPS 205 | Sign, Verify |
| FALCON | 512 and 1024 degrees | Sign, Verify |
| ML-KEM | Lattice-based, NIST FIPS 203 | Encrypt, Decrypt |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ML-KEM is a Key Exchange Mechanism. It supports operations encapsulate and decapsulate (or more colloquially: wrap and unwrap).


Before you begin, ensure you have:
- Docker installed and running
- A PostgreSQL 12+ instance accessible from the connector container
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the PostgreSQL database instance is shared with Core, then align with the PostgreSQL version used by Core. Or state explicitly that the lowest supported PostgreSQL version by the SCP connector is 12+ (actually: why not 11+)?

```bash
docker run -d \
--name software-cryptography-provider \
-p 8080:8080 \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Port 8080 is typically used by Core itself when running in the local development environment. Use the value from https://github.com/OmniTrustILM/development-environment/blob/main/czertainly-compose.yml#L304 (8230).

| `<db-password>` | Database password |
| `tagname` | Connector version tag (see [releases](https://github.com/CZERTAINLY/CZERTAINLY-Software-Cryptography-Provider/releases)) |

Optional environment variables:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For optional env. variables, you could point to an existing documentation: https://github.com/OmniTrustILM/software-cryptography-provider

- Configure key usage policies as required
- Click **Save**

## Create a cryptographic key
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because you reference private and public keys later in this section, the title shall mention "key pair":
"Create a cryptographic key pair".


## Issue a certificate using a token key

The cryptographic key created in the token can be used as the signing key during certificate issuance. The platform will automatically generate a CSR using the private key stored in the token.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This statement is not entirely correct. Issued certificate is signed by the private key which belongs to the issuing certificate authority, which is typically private to the CA and not exposed.

# Integration Guide

:::info
This integration guide is intended for **development and testing purposes**. The Software Cryptography Provider stores cryptographic keys in software (backed by a PostgreSQL database) and should not be used in production environments. For production use cases, consider hardware security module (HSM) based connectors.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should mention that for this software cp, the private key is encrypted inside the database and never leaves the connector - simulating what a typical HSM would do.

@@ -0,0 +1,7 @@
{
"label": "Software Cryptography Provider",
"position": 10,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why position 10? I can see only 7 integration guides present currently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants