RFC: exporting sha256 sha512

Florian Weimer fw@deneb.enyo.de
Wed Mar 25 11:57:00 GMT 2015


* Shawn Landden:

> we already have this in crypt
> proposed public header <sha2.h> below
>
> even git does not use Intel processor extensions. This stuff in
> non-trivial and there is lots of duplicated work being done. Makes
> sense for glibc to be "high performance" as advertised and collect
> this performance work.
>
> would a patch for this be considered?
>
> #pragma once

Installed headers cannot use “pragma #once”.

> #include <stdint.h>
>
> typedef struct {
>        char __internal_state[104];
> } sha256_ctx;

This needs some alignment declaration.

> void *sha256(const void *d, size_t n, void *md);
> void sha256_init(sha256_ctx *s);
> void sha256_push(sha256_ctx *s, const void *d, size_t n);
> void sha256_finish(sha256_ctx *s, void *md);

push/finish is usually update/final.

To be more general, the context would have to be allocated on the
heap, deallocation and clone functions would be required, and the
functions need to return error values.  Some hardware acceleration
might need a larger state than 104 bytes.



More information about the Libc-alpha mailing list