On Tue, 25 Oct 2011 02:10:49 +0200, Piotr Szturmaj <[email protected]> wrote:

https://github.com/pszturmaj/phobos/tree/master/std/crypto

This is some early work on std.crypto proposal. Currently only MD5, HMAC and all SHA family functions (excluding SHA0 which is very old, broken and no longer in use). I plan to add other crypto primitives later.

I know about one SHA1 pull request optimized for SSSE3. I think native code must be there to support other non x86 CPUs and SIMD optimization may be added at any time later.

Any opinions are welcome. Especially if such design is good or bad, and what needs to be changed.

Thanks :)

Great to push this a little.


I have to say though that I like the current struct based interface
much better.

struct Hash
{
    // enhanced by some compile time traits
    enum hashLength  = 16;
    enum blockLength =  0;

    // three interface functions
    void start();
    void update(const(ubyte)[] data);
    void finish(ref ubyte[hashLength] digest);
}

You wouldn't need the save, restore functions.
Some unnecessary allocations could go away.
Most important instances would have less mutable state.

You could probably parameterize a Merkle Damgård base with free
functions for the transformation.

A dynamic interface can be obtaines by templated instances similar to what std.range does.

Reply via email to