Add support for ГОСТ Р 34.10 digital signatures
- Implemented the GostKeyValue class for handling public key parameters in ГОСТ Р 34.10 digital signatures. - Created the GostSignedXml class to manage XML signatures using ГОСТ 34.10, including methods for computing and checking signatures. - Developed the GostSignedXmlImpl class to encapsulate the signature computation logic and public key retrieval. - Added specific key value classes for ГОСТ Р 34.10-2001, ГОСТ Р 34.10-2012/256, and ГОСТ Р 34.10-2012/512 to support different signature algorithms. - Ensured compatibility with existing XML signature standards while integrating ГОСТ cryptography.
This commit is contained in:
@@ -6,7 +6,7 @@ This guide describes the reproducible process for assembling the sovereign crypt
|
||||
|
||||
| Directory | Purpose |
|
||||
|-----------|---------|
|
||||
| `artifacts/` | Published binaries for `StellaOps.Cryptography.Plugin.CryptoPro` and `StellaOps.Cryptography.Plugin.Pkcs11Gost` (targeting `net10.0`). |
|
||||
| `artifacts/` | Published binaries for `StellaOps.Cryptography.Plugin.CryptoPro`, `StellaOps.Cryptography.Plugin.OpenSslGost`, and `StellaOps.Cryptography.Plugin.Pkcs11Gost` (targeting `net10.0`). |
|
||||
| `config/rootpack_ru.crypto.yaml` | Opinionated configuration template that enables the `ru-offline` crypto profile and defines CryptoPro + PKCS#11 keys. |
|
||||
| `docs/` | Validation runbook, audit report, and this packaging guide. |
|
||||
| `trust/` | Russian trust-anchor PEM files copied from `certificates/russian_trusted_*`. |
|
||||
@@ -29,6 +29,8 @@ The script performs the following steps:
|
||||
4. Adds the Russian trust anchors from `certificates/russian_trusted_*`.
|
||||
5. Emits `README.txt` and optionally creates a `*.tar.gz` archive (set `PACKAGE_TAR=0` to skip the tarball).
|
||||
|
||||
> **Temporary quarantine (2025-11-09).** To keep day-to-day builds free of the vulnerable GostCryptography dependency, the repository disables the CryptoPro plug-in unless you pass `-p:StellaOpsEnableCryptoPro=true`. RootPack packaging still works because this script publishes the plug-in directly, but any host/service build that needs CryptoPro must opt in with that MSBuild property until the patched package lands.
|
||||
|
||||
## 3. Attach deterministic test evidence
|
||||
|
||||
After running `scripts/crypto/package-rootpack-ru.sh`, execute the deterministic harness to capture logs:
|
||||
@@ -65,13 +67,24 @@ Store these artifacts under `logs/rootpack_ru_<timestamp>/` (same directory as t
|
||||
1. Import the bundled trust anchors into the target installation (Authority + Scanner).
|
||||
2. Apply `config/rootpack_ru.crypto.yaml`, update certificate thumbprints, slots, and container labels to match the operator tokens.
|
||||
3. Restart the services so `ICryptoProviderRegistry` reloads the `ru-offline` profile.
|
||||
- Windows nodes will prioritize `ru.cryptopro.csp`; Linux nodes automatically fall back to `ru.openssl.gost` (PEM/private-key based) before consulting `ru.pkcs11`.
|
||||
|
||||
### 5.1 Diagnostics CLI
|
||||
|
||||
Use the diagnostics CLI to validate configs before rolling out changes:
|
||||
|
||||
```bash
|
||||
dotnet run --project src/Tools/StellaOps.CryptoRu.Cli -- providers --config etc/rootpack/ru/crypto.profile.yaml --profile ru-offline
|
||||
dotnet run --project src/Tools/StellaOps.CryptoRu.Cli -- sign --config etc/rootpack/ru/crypto.profile.yaml --key-id ru-openssl-default --alg GOST12-256 --file samples/message.bin --format base64
|
||||
```
|
||||
|
||||
Ship the CLI binary inside the RootPack so operators in sealed environments can run the same diagnostics offline.
|
||||
4. Re-run the validation runbook to confirm JWKS, telemetry, and RootPack evidence are aligned with the shipping bundle.
|
||||
|
||||
## Known gaps (2025-11-09)
|
||||
|
||||
The bundle and scripts above assume several pieces of functionality that have not landed yet:
|
||||
|
||||
- **Ops CLI:** The CLI referenced in the validation runbook (list/verify keys, emit determinism records) has not been implemented. Operators currently rely on manual pkcs11-tool / certmgr commands.
|
||||
- **Integration tests:** `scripts/crypto/run-rootpack-ru-tests.sh` exercises only SHA/Ed25519 paths because CryptoPro/PKCS#11 integration tests are still TODO.
|
||||
- **Symmetric GOST:** RootPack artifacts ship only signing plug-ins; Magma/Kuznyechik support for exports/data-at-rest is pending.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user