La biblioteca de hidrógeno es una biblioteca criptográfica pequeña, fácil de usar y difícil de hacer.
Características:
- API consistente de alto nivel, inspirada en Libsodium. En lugar de primitivas de bajo nivel, expone funciones simples para resolver problemas comunes que la criptografía puede resolver.
- 100% construido usando solo dos bloques de construcción criptográficos: la curva elíptica Curve25519 y la permutación GIMLI.
- Pequeño y fácil de auditar. Implementado como un pequeño archivo para cada conjunto de operaciones, y agregar un solo archivo
.c a su proyecto es todo lo que se necesita para usar libhidrógeno en su proyecto. - Todo el código se publica bajo una sola licencia muy liberal (ISC).
- Asignaciones de memoria dinámica cero y requisitos de pila baja (mediana: 32 bytes, máx: 128 bytes). Esto lo hace utilizable en entornos limitados como microcontroladores.
- Portable: escrito en el estándar C99. Admite Linux, *BSD, MacOS, Windows y el Arduino IDE fuera de la caja.
- Puede generar números aleatorios criptográficamente seguros, incluso en los tableros Arduino.
- Intentos de mitigar las implicaciones del mal uso accidental, incluso en sistemas con un PRG poco confiable y/o sin reloj.
No posees:
- Tener múltiples primitivas que cumplan el mismo propósito, incluso para proporcionar compatibilidad con otras bibliotecas.
- Networking: pero una simple API de intercambio de claves basada en el protocolo de ruido está disponible, y se implementará una API de transporte basada en la luz estroboscópica.
- Interoperabilidad con otras bibliotecas.
- Reemplazo de Libsodium. Libhidrógeno intenta mantener el número de API y el tamaño del código hasta el mínimo.
Documentación de libhidrógeno
La documentación se mantiene en la wiki de libhidrógeno.
El código de libhidrógeno heredado (aprovechando Xchacha20, Siphashx, Blake2SX, Curve25519) permanece disponible en la rama V0.
Colaboradores
Contribuyentes de código
Este proyecto existe gracias a todas las personas que contribuyen. [Contribuir].