Sobre el proyecto

SolidSyslog es una biblioteca cliente de syslog estructurado dirigida a dispositivos embebidos e industriales. Implementa syslog estructurado RFC 5424, con transportes UDP (RFC 5426) y TCP (RFC 6587); TLS según RFC 5425 es proporcionado por la plataforma, por lo que cualquier biblioteca TLS puede conectarse detrás de la misma vtable Stream. TLS no es una dependencia central, y Core no contiene referencia alguna a una biblioteca TLS. El propósito declarado es brindar a productos embebidos en el mercado la pista de auditoría de seguridad esperada bajo la Ley de Resiliencia Cibernética de la UE y IEC 62443, como un componente que se añade en lugar de un rediseño. Huella de recursos, según lo publicado por el proyecto: aproximadamente +5 KB de flash y 1.9 KB de RAM para un registro RFC 5424 válido con marca de tiempo en el cable; aproximadamente +16.4 KB de flash y 36.3 KB de RAM para la ruta completa que incluye almacenamiento y reenvío, identidad de dispositivo, TLS mutuo y cifrado AES-GCM en reposo, principalmente buffers TLS. Estas cifras se describen como lo que la biblioteca añade a un dispositivo que ya ejecuta FreeRTOS, lwIP, FatFs y Mbed TLS, medido en un Cortex-M3 bajo QEMU. Dos integraciones trabajadas se publican como repositorios separados, una consumida con CMake y otra con Make, con cada etapa como un solo commit. Características de diseño: - C99, sin asignación dinámica de memoria; las instancias viven en un pool estático interno de la biblioteca dimensionado en tiempo de compilación - Agnóstico al transporte: UDP, TCP, TLS o un transporte personalizado - Agnóstico al buffer: PassthroughBuffer (envío directo), un CircularBuffer portátil (anillo con mutex inyectado), cola de mensajes POSIX o personalizado - Informado por MISRA C:2012 Capacidades incluyen formato estructurado RFC 5424 sobre UDP, TCP y TLS/TLS mutuo; buffering asíncrono; almacenamiento y reenvío rotativo por bloques; y protección de registros en reposo usando CRC-16 para corrupción accidental, o HMAC-SHA256 / AES-256-GCM con clave cuando un atacante local está en el alcance. El proyecto mapea los controles de registro de auditoría de IEC 62443 en una guía dedicada. Cada dependencia de plataforma - pila TCP/IP, biblioteca TLS, sistema de archivos, primitivas del SO, reloj - se inyecta a través de una vtable, por lo que portar significa completar roles en lugar de editar Core. Paquetes de plataforma se publican para objetivos alojados y embebidos; los objetivos alojados se soportan como hosts de desarrollo, prueba y edge/gateway. La revocación TLS (CRL/OCSP) no la realiza la biblioteca; su aplicación depende del backend TLS configurado y la plataforma. Arquitectura: OO-en-C. Las dependencias de plataforma y características opcionales son roles de vtable inyectados en la configuración y compuestos en tiempo de enlace, por lo que las características no conectadas son descartadas por el enlazador en lugar de excluidas por el preprocesador; la implementación de Core no contiene condicionales de características. Los encabezados públicos se dividen por audiencia: el código de aplicación incluye SolidSyslog.h, mientras que el código de configuración incluye SolidSyslogConfig.h más un encabezado por componente conectado. Un objeto Null representa cualquier rol no cubierto. Las pruebas utilizan binarios dirigidos por BDD, uno por configuración objetivo, en host y bajo QEMU, cada uno ejercitando la biblioteca de extremo a extremo contra un servidor syslog real. La documentación se aloja en docs.cososo.co.uk/solid-syslog, organizada en secciones Core, Integrate, Platforms, Compliance, API reference y Maintaining, incluyendo una ruta de endurecimiento, guía de integración de compilación, guía de portabilidad, matriz de cumplimiento RFC, modelo de amenazas y guías CRA/IEC 62443. El reporte de vulnerabilidades se realiza mediante SECURITY.md. La licencia es de código disponible bajo tres alternativas: PolyForm Internal Use 1.0.0 (gratuita para evaluación y desarrollo dentro de cualquier organización), PolyForm Noncommercial 1.0.0 (gratuita para uso de hobby, caritativo, educativo, investigación pública y gubernamental, incluyendo redistribución), y una licencia comercial requerida al suministrar, vender o distribuir un producto comercial, dispositivo, firmware o servicio que contenga la biblioteca.