Branch: refs/heads/add-crypto-enumeration-api
Home: https://github.com/kronosnet/kronosnet
Commit: 90ff34fc8f615cbd8493a25a6e0378fa32d7fd7a
https://github.com/kronosnet/kronosnet/commit/90ff34fc8f615cbd8493a25a6e037…
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Date: 2026-05-07 (Thu, 07 May 2026)
Changed paths:
M libknet/crypto.c
M libknet/crypto_nss.c
M libknet/libknet.h
M libknet/libknet_exported_syms
M libknet/tests/api-check.mk
A libknet/tests/api_knet_get_crypto_cipher_list.c
A libknet/tests/api_knet_get_crypto_hash_list.c
M man/Makefile.am
Log Message:
-----------
Add API to enumerate supported cipher modes and hash algorithms
Implements issue #478 by introducing two new API functions:
- knet_get_crypto_cipher_list(): Returns AES cipher modes (CBC/CTR) supported across all crypto backends
- knet_get_crypto_hash_list(): Returns hash algorithms supported across all crypto backends
The functions return the intersection of capabilities across OpenSSL, NSS, and libgcrypt backends,
ensuring applications can reliably use any returned cipher/hash combination regardless of which
crypto module is loaded at runtime.
Key implementation decisions:
- Uses hardcoded lists to avoid loading all crypto modules unconditionally
- Flattened cipher list includes both OpenSSL (hyphenated) and NSS/gcrypt (non-hyphenated) naming
conventions as separate entries to simplify application logic
- Cipher list: 12 entries covering AES-128/192/256 in CBC and CTR modes
- Hash list: 5 entries covering md5, sha1, sha256, sha384, sha512
- Structure field sizes match knet_handle_crypto_cfg (16 bytes for name fields)
New structures:
- knet_crypto_cipher_info: name[16], mode[8], key_bits
- knet_crypto_hash_info: name[16], hash_bits
Includes comprehensive API tests that verify all returned cipher and hash names
work correctly with all three crypto backends (NSS, OpenSSL, libgcrypt).
Fixed NSS parser to accept "-cbc" suffix variants (aes-128-cbc, aes-192-cbc, aes-256-cbc)
in addition to existing non-hyphenated CBC names (aes128, aes192, aes256).
Test implementation uses memcpy instead of strncpy when copying cipher and hash names
from enumeration arrays to crypto_cfg structure fields to avoid GCC stringop-truncation
warnings at -O3 with -D_FORTIFY_SOURCE=3.
Signed-off-by: Fabio M. Di Nitto <fabbione(a)kronosnet.org>
Co-Authored-By: Claude Sonnet 4.5 <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/kronosnet/kronosnet/settings/notifications
Branch: refs/heads/add-crypto-enumeration-api
Home: https://github.com/kronosnet/kronosnet
Commit: 1de925a9723a372b5782792f5f841745d4858080
https://github.com/kronosnet/kronosnet/commit/1de925a9723a372b5782792f5f841…
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Date: 2026-05-07 (Thu, 07 May 2026)
Changed paths:
M libknet/crypto.c
M libknet/crypto_nss.c
M libknet/libknet.h
M libknet/libknet_exported_syms
M libknet/tests/api-check.mk
A libknet/tests/api_knet_get_crypto_cipher_list.c
A libknet/tests/api_knet_get_crypto_hash_list.c
M man/Makefile.am
Log Message:
-----------
Add API to enumerate supported cipher modes and hash algorithms
Implements issue #478 by introducing two new API functions:
- knet_get_crypto_cipher_list(): Returns AES cipher modes (CBC/CTR) supported across all crypto backends
- knet_get_crypto_hash_list(): Returns hash algorithms supported across all crypto backends
The functions return the intersection of capabilities across OpenSSL, NSS, and libgcrypt backends,
ensuring applications can reliably use any returned cipher/hash combination regardless of which
crypto module is loaded at runtime.
Key implementation decisions:
- Uses hardcoded lists to avoid loading all crypto modules unconditionally
- Flattened cipher list includes both OpenSSL (hyphenated) and NSS/gcrypt (non-hyphenated) naming
conventions as separate entries to simplify application logic
- Cipher list: 12 entries covering AES-128/192/256 in CBC and CTR modes
- Hash list: 5 entries covering md5, sha1, sha256, sha384, sha512
- Structure field sizes match knet_handle_crypto_cfg (16 bytes for name fields)
New structures:
- knet_crypto_cipher_info: name[16], mode[8], key_bits
- knet_crypto_hash_info: name[16], hash_bits
Includes comprehensive API tests that verify all returned cipher and hash names
work correctly with all three crypto backends (NSS, OpenSSL, libgcrypt).
Fixed NSS parser to accept "-cbc" suffix variants (aes-128-cbc, aes-192-cbc, aes-256-cbc)
in addition to existing non-hyphenated CBC names (aes128, aes192, aes256).
Signed-off-by: Fabio M. Di Nitto <fabbione(a)kronosnet.org>
Co-Authored-By: Claude Sonnet 4.5 <noreply(a)anthropic.com>
libknet/tests: fix stringop-truncation warnings in crypto enumeration tests
Use memcpy instead of strncpy when copying cipher and hash names from the
enumeration arrays to crypto_cfg structure fields. This avoids GCC's
stringop-truncation warning that triggers at -O3 with -D_FORTIFY_SOURCE=3.
GCC's flow analysis sees array element pointers (cipher_list[j].name) as
potentially pointing to the entire remaining array, reporting the cumulative
size rather than the individual 16-byte field size. Using memcpy avoids
this warning while maintaining the same functionality:
- Both source and destination are exactly 16 bytes
- crypto_cfg is zero-initialized by memset beforehand
- We copy 15 bytes, leaving the last byte as null terminator
Signed-off-by: Fabio M. Di Nitto <fabbione(a)kronosnet.org>
Co-Authored-By: Claude Sonnet 4.5 <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/kronosnet/kronosnet/settings/notifications
12/55 Non-voting fails: debian-experimental-x86-64(nonvoting: Build source) freebsd-devel-x86-64(nonvoting: Build source) debian-unstable-x86-64(nonvoting: Build source) fedora-rawhide-power9-ppc64le(nonvoting: Build source) ubuntu-devel-x86-64(nonvoting: Build source) openindiana-x86-64(nonvoting: Build source) debian-experimental-x86-64(nonvoting_debug: Build source) debian-unstable-x86-64(nonvoting_debug: Build source) freebsd-devel-x86-64(nonvoting_debug: Build source) fedora-rawhide-power9-ppc64le(nonvoting_debug: Build source) ubuntu-devel-x86-64(nonvoting_debug: Build source) openindiana-x86-64(nonvoting_debug: Build source)
41/46 Voting fails: centos-10-s390x(voting: Build source) debian-unstable-cross-x86-64(arm_crosscompile: Build source) rhel-10-s390x(voting: Build source) ubuntu-24-04-lts-x86-64(voting: Build source) rhel-9-coverity-x86-64(voting: Build source) ubuntu-25-10-x86-64(voting: Build source) rhel-10-coverity-x86-64(voting: Build source) centos-9-x86-64(voting: Build source) debian-12-x86-64(voting: Build source) debian-testing-x86-64(voting: Build source) debian-13-x86-64(voting: Build source) rhel-10-power9-ppc64le(voting: Build source) freebsd-13-x86-64(voting: Build source) freebsd-14-x86-64(voting: Build source) centos-10-s390x(voting_debug: Build source) ubuntu-22-04-lts-x86-64(voting: Build source) freebsd-15-x86-64(voting: Build source) rhel-10-s390x(voting_debug: Build source) rhel-10-coverity-x86-64(voting_debug: Build source) ubuntu-25-10-x86-64(voting_debug: Build source) centos-9-x86-64(voting_debug: Build source) ubuntu-24-04-lts-x86-64(voting_debug: Build source) debian-testing-x86-64(voting_debug: Build source) rhel-9-coverity-x86-64(voting_debug: Build source) centos-9-s390x(voting: Build source) debian-12-x86-64(voting_debug: Build source) freebsd-13-x86-64(voting_debug: Build source) rhel-10-power9-ppc64le(voting_debug: Build source) freebsd-14-x86-64(voting_debug: Build source) debian-13-x86-64(voting_debug: Build source) freebsd-15-x86-64(voting_debug: Build source) ubuntu-22-04-lts-x86-64(voting_debug: Build source) centos-9-s390x(voting_debug: Build source) rhel-10-coverity-x86-64(covscan: Build source) rhel-9-coverity-x86-64(covscan: Build source) fedora-42-x86-64(voting: Build source) fedora-42-x86-64(voting_debug: Build source) fedora-43-power9-ppc64le(voting: Build source) fedora-43-power9-ppc64le(voting_debug: Build source) centos-10-x86-64(voting: Build source) centos-10-x86-64(voting_debug: Build source)
Run reason: Pull request #479 updated
Total runtime: 17 min
Split logs: https://ci.kronosnet.org/job/kronosnet/job/kronosnet-pipeline/job/PR-479/3/…
Full log: https://ci.kronosnet.org/job/kronosnet/job/kronosnet-pipeline/job/PR-479/3/…
Please report the following errors to your friendly local Jenkins admin (though they have probably already seen them and are already panicking).
Exception caught on fedora-43-s390x during voting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-s390x during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-x86-64 during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-coverity-x86-64 during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-power9-ppc64le during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-s390x during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-x86-64 during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-s390x during voting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-s390x during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-x86-64 during voting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-x86-64 during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-x86-64 during voting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-x86-64 during voting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on alpine-x86-64 during nonvoting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on alpine-x86-64 during nonvoting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-s390x during nonvoting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-s390x during nonvoting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-x86-64 during nonvoting: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-x86-64 during nonvoting_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on alpine-x86-64 during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on alpine-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on centos-10-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-42-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-power9-ppc64le during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-s390x during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-s390x during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-x86-64 during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-s390x during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-s390x during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-x86-64 during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-power9-ppc64le during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-power9-ppc64le during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-s390x during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-s390x during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-x86-64 during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-s390x during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-s390x during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-x86-64 during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-x86-64 during nonvoting-clang: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-x86-64 during nonvoting-clang_debug: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on centos-9-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on centos-9-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on centos-10-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on centos-10-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-42-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-power9-ppc64le during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-43-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-power9-ppc64le during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on fedora-rawhide-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-power9-ppc64le during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-9-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-power9-ppc64le during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-s390x during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-10-x86-64 during buildrpms: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Exception caught on rhel-8-coverity-x86-64 during covscan: org.jenkinsci.plugins.workflow.steps.FlowInterruptedException:
Branch: refs/heads/add-crypto-enumeration-api
Home: https://github.com/kronosnet/kronosnet
Commit: d94674b9e3de03ec5169055bb14ea8b3b8b8bb67
https://github.com/kronosnet/kronosnet/commit/d94674b9e3de03ec5169055bb14ea…
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Date: 2026-05-07 (Thu, 07 May 2026)
Changed paths:
M libknet/tests/api_knet_get_crypto_cipher_list.c
M libknet/tests/api_knet_get_crypto_hash_list.c
Log Message:
-----------
libknet/tests: fix stringop-truncation warnings in crypto enumeration tests
Use local pointer variables to break GCC's array context analysis when
copying cipher and hash names from list structures. This eliminates
stringop-truncation warnings during CI builds while maintaining the
same functionality.
Signed-off-by: Fabio M. Di Nitto <fabbione(a)kronosnet.org>
Co-Authored-By: Claude Sonnet 4.5 <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/kronosnet/kronosnet/settings/notifications
Branch: refs/heads/add-crypto-enumeration-api
Home: https://github.com/kronosnet/kronosnet
Commit: d5f2ebc11af6beb1aec458f7824c70ce20c38dc0
https://github.com/kronosnet/kronosnet/commit/d5f2ebc11af6beb1aec458f7824c7…
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
Date: 2026-05-07 (Thu, 07 May 2026)
Changed paths:
M libknet/crypto.c
M libknet/crypto_nss.c
M libknet/libknet.h
M libknet/libknet_exported_syms
M libknet/tests/api-check.mk
A libknet/tests/api_knet_get_crypto_cipher_list.c
A libknet/tests/api_knet_get_crypto_hash_list.c
M man/Makefile.am
Log Message:
-----------
Add API to enumerate supported cipher modes and hash algorithms
Implements issue #478 by introducing two new API functions:
- knet_get_crypto_cipher_list(): Returns AES cipher modes (CBC/CTR) supported across all crypto backends
- knet_get_crypto_hash_list(): Returns hash algorithms supported across all crypto backends
The functions return the intersection of capabilities across OpenSSL, NSS, and libgcrypt backends,
ensuring applications can reliably use any returned cipher/hash combination regardless of which
crypto module is loaded at runtime.
Key implementation decisions:
- Uses hardcoded lists to avoid loading all crypto modules unconditionally
- Flattened cipher list includes both OpenSSL (hyphenated) and NSS/gcrypt (non-hyphenated) naming
conventions as separate entries to simplify application logic
- Cipher list: 12 entries covering AES-128/192/256 in CBC and CTR modes
- Hash list: 5 entries covering md5, sha1, sha256, sha384, sha512
- Structure field sizes match knet_handle_crypto_cfg (16 bytes for name fields)
New structures:
- knet_crypto_cipher_info: name[16], mode[8], key_bits
- knet_crypto_hash_info: name[16], hash_bits
Includes comprehensive API tests that verify all returned cipher and hash names
work correctly with all three crypto backends (NSS, OpenSSL, libgcrypt).
Fixed NSS parser to accept "-cbc" suffix variants (aes-128-cbc, aes-192-cbc, aes-256-cbc)
in addition to existing non-hyphenated CBC names (aes128, aes192, aes256).
Signed-off-by: Fabio M. Di Nitto <fabbione(a)kronosnet.org>
Co-Authored-By: Claude Sonnet 4.5 <noreply(a)anthropic.com>
To unsubscribe from these emails, change your notification settings at https://github.com/kronosnet/kronosnet/settings/notifications