No description
Find a file
2025-09-15 22:28:42 +02:00
chacha20 change fmt style 2025-09-05 12:13:53 +02:00
slowarr change fmt style 2025-09-05 12:13:53 +02:00
slowcrypt add prng 2025-09-15 22:27:05 +02:00
slowgraph wip 2025-09-11 17:27:54 +02:00
.clang-format forgot to disable ReflowComments 2025-09-05 12:18:37 +02:00
.gitignore c 2025-09-04 23:14:40 +02:00
chacha20.h slowcrypt cli: chacha20-core 2025-09-07 21:56:32 +02:00
csv.h wip 2025-09-11 17:27:54 +02:00
LICENSE c 2025-09-05 11:59:29 +02:00
lint.sh c 2025-09-04 23:14:40 +02:00
poly1305.h get rid of the unportable bs bigint.h bs; slowcrypt cli wip 2025-09-07 21:33:04 +02:00
README.md c 2025-09-15 22:28:42 +02:00
slowarr.h change fmt style 2025-09-05 12:13:53 +02:00
slowgraph.h change fmt style 2025-09-05 12:13:53 +02:00
slowurl.h change fmt style 2025-09-05 12:13:53 +02:00
systemrand.h win32 systemrand 2025-09-11 08:40:39 +02:00

slow-libs single-header libraries

MIT licennced (see ./LICENSE)

Most libraries are not actually slow, but that is just the naming scheme.

Each library is documentated at the top of each header file

Features of all libraries

  • C89 (or later) compatible
  • intuitive to use
  • don't pollude namespace
  • configurable with pre-processor macros

Libraries

  • ./chacha20.h
  • ./slowarr.h: C templated dynamic array
  • ./slowgraph.h: WIP graph library (this is the only library that is actually slow)

there are more files than that, but those are heavility wip

CLI Tools

CLI utils built with slow-libs.

  • ./slowcrypt/slowcrypt.c: cryptography cli
  • ./slowgraph/sgraph-adj.c: dgtxt graphs <-> adjacency matrix

Cryptography Security Considerations

All cryptography libraries list possible side channel attacks in their documentation

Library Zeroing memory Timing attacks Notes
chacha20.h manual 1 impossible 2

Cryptography 101

  • TODO: explain asymetric
  • TODO: compare symetrics
  • TODO: compare asymetrics
  • TODO: compare hashes
  • TODO: XOF
  • TODO: rng
  • TODO: length extension
  • TODO: password hashing

Contribution guide

  • Please use clang-format (and the provided .clang-format style) If you do not want to use clang-format, try to match the code style of other existing code, and a maintainer will format your code on merge.
  • Do not break portability of an existing "finished" library
  • Make new libraries as portable as possible (in a reasonable amount of time)

  1. the compiler might optimize the zeroing away ↩︎

  2. does not prevent against length-extension, by algorithm design. See Cryptography 101. ↩︎