libskarnet
skalibs
Software
skarnet.org
stdcrypto is a small collection of standard, public-domain cryptographic primitives. Currently, the following operations are provided:
Please bear in mind that sha1 is practically broken. Do not use it in security-critical applications.
You should refer to the skalibs/stdcrypto.h header and included headers for the exact function prototypes.
SHA1Schedule ctx ; char const *message ; size_t messagelen ; unsigned char digest[20] ; sha1_init(&ctx) ; sha1_update(&ctx, message, messagelen) ; sha1_final(&ctx, digest) ;
SHA256Schedule ctx ; char const *message ; size_t messagelen ; char digest[32] ; sha256_init(&ctx) ; sha256_update(&ctx, message, messagelen) ; sha256_final(&ctx, digest) ;
SHA512Schedule ctx ; char const *message ; size_t messagelen ; char digest[64] ; sha512_init(&ctx) ; sha512_update(&ctx, message, messagelen) ; sha512_final(&ctx, digest) ;
blake2s_ctx ctx ; char const *message ; size_t messagelen ; size_t outlen = 32 ; /* the user gives the length of the digest */ char digest[outlen] ; blake2s_init(&ctx, outlen) ; blake2s_update(&ctx, message, messagelen) ; blake2s_final(&ctx, digest) ;
uint32_t crc = 0 ; /* no need for context except that crc needs to be initialized to 0 */ char const *message ; size_t messagelen ; crc = crc32c(crc, message, messagelen) ;