Skip to content

feat(integration): wrappers, adapters, bench, tests, docs - #4

Merged
cherninkiy merged 9 commits into
mainfrom
dev
Apr 7, 2026
Merged

feat(integration): wrappers, adapters, bench, tests, docs#4
cherninkiy merged 9 commits into
mainfrom
dev

Conversation

@cherninkiy

@cherninkiy cherninkiy commented Apr 7, 2026

Copy link
Copy Markdown
Owner

Summary

This PR is no longer only a submodule migration. It now includes end-to-end integration updates for wrapper APIs, adapters, benchmark behavior, tests, CI, and docs synchronization.

What Changed

1) Submodules and forks

  • .gitmodules migrated to wrapper forks on main for:
    • third_party/hypericum
    • third_party/shipovnik
    • third_party/kryzhovnik
  • Submodule pointers updated to wrapper revisions that include required integration APIs.

2) Wrapper API integration

  • Hypericum wrapper:
    • Added crypto_sign_detached
    • Added crypto_sign_verify_detached
  • Shipovnik wrapper:
    • Added shipovnik_generate_keys_ex
    • Added shipovnik_sign_ex

3) Adapter refactoring and status unification

  • src/signature/hypericum_adapter.c
    • Removed malloc/copy path from sign/verify flow
    • Switched to detached API calls
  • src/signature/shipovnik_adapter.c
    • Switched to _ex wrapper APIs
    • Added stricter output length validation
  • src/signature/kryzhovnik_adapter.c
    • Unified non-verify failure mapping to BB_INTERNAL

4) Benchmark fixes (bench_seq)

  • Added --warmup option
  • Excluded warmup iterations from measured metrics
  • Kept message generation outside measured sign timing
  • Corrected total_sig_size_mb semantics:
    • now average aggregate signature size per measured batch iteration

5) Tests

  • Added integration-style batch adapter test:
    • tests/test_adapters_batch.c
  • Unified test naming to test_* for both CTest names and binaries:
    • test_adapters_smoke
    • test_adapters_batch
    • test_kryzhovnik
    • test_kryzhovnik_wrapper
    • test_kryzhovnik_api
    • test_merkletree

6) CI and scripts

  • Updated CTest filter in CI to match unified test_* names
  • Benchmark smoke jobs now pass --warmup 1
  • scripts/third_party.sh supports optional remote refresh via:
    • THIRD_PARTY_REMOTE_UPDATE=1

7) Documentation sync (EN + RU)

  • README.md and README_ru.md synchronized
  • Algorithm links point to original repositories
  • Added dedicated fork explanation sections
  • Updated Current Status (MVP) to reflect implemented work
  • Updated benchmark command examples to bench_seq
  • Updated third_party/README.md with original-vs-fork mapping and rationale

Validation

Locally verified:

  • configure + build: OK
  • CTest (^test_): all tests pass
  • benchmark smoke example (bench_seq ... --warmup 1): runs successfully

Current MVP Boundary

Implemented:

  • wrapper API integration
  • adapter unification
  • sequential benchmark fixes
  • test + CI normalization
  • docs sync

Not yet implemented:

  • Merkle-based real batch signer/verifier
  • sequential vs real batch benchmark comparison
  • final report

- Update .gitmodules to use cherninkiy/hypericum-wrapper-tc26, shipovnik-wrapper-tc26, kryzhovnik-wrapper-tc26
- Set all submodules to branch main for consistency
- Run submodule sync and update to ensure correct state

# Step 1 of plan: migration to forks and submodule update
- Bump hypericum submodule to detached API commit

- Bump shipovnik submodule to _ex status API commit

- Prepare adapters for zero-copy and status-normalized calls
- Use Hypericum detached sign/verify without heap allocations

- Use Shipovnik _ex APIs and validate signature length bounds

- Normalize Kryzhovnik verify fallback to BB_INTERNAL
- Add optional --warmup iterations excluded from metrics

- Keep message generation outside sign and verify timers

- Report total_sig_size_mb as average per-iteration batch size
- Add test_adapters_batch for per-algorithm batch sign/verify

- Validate negative mutation case for each message in batch

- Register new test target in tests/CMakeLists.txt
- Include test_adapters_batch in CTest regex filter

- Pass --warmup 1 in benchmark smoke commands

- Add optional remote submodule refresh in third_party script
- Rename adapters_smoke target/test to test_adapters_smoke

- Rename adapters_batch target/test to test_adapters_batch

- Update CI ctest regex to use new test_* names
- Rename kryzhovnik test executables to test_* targets

- Rename merkletree test executable to test_merkletree

- Keep CI ctest regex aligned with unified test names
- Point algorithm links to original repositories in EN and RU

- Add dedicated sections explaining integration forks

- Refresh Current Status (MVP) to match implemented state

- Update benchmark command examples to bench_seq
@cherninkiy cherninkiy changed the title chore(submodules): migrate to forks feat(integration): wrappers, adapters, bench, tests, docs Apr 7, 2026
@cherninkiy
cherninkiy merged commit 89d818e into main Apr 7, 2026
3 checks passed
@cherninkiy
cherninkiy deleted the dev branch April 7, 2026 07:23
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.

1 participant