tlibventi: add functions vtsha1 and vtsha1check - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 83b247a771a514792b972216e1ad32ae1f3fc316
 (DIR) parent f4792e43aef14341bb40f32e8583bd4731e1dcb4
 (HTM) Author: David du Colombier <0intro@gmail.com>
       Date:   Sat, 21 Jan 2012 10:01:20 +0100
       
       libventi: add functions vtsha1 and vtsha1check
       
       These functions are equivalent to vtSha1 and vtSha1Check
       from the old libventi and are particularly used by Fossil.
       
       R=rsc
       http://codereview.appspot.com/5555064
       
       Diffstat:
         M include/venti.h                     |       4 ++++
         M src/libventi/mkfile                 |       1 +
         A src/libventi/sha1.c                 |      28 ++++++++++++++++++++++++++++
       
       3 files changed, 33 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/include/venti.h b/include/venti.h
       t@@ -381,6 +381,10 @@ int        vtwritepacket(VtConn*, uchar score[VtScoreSize], uint type, Packet *p);
        int        vtsync(VtConn*);
        int        vtping(VtConn*);
        
       +/* sha1 */
       +void        vtsha1(uchar score[VtScoreSize], uchar*, int);
       +int        vtsha1check(uchar score[VtScoreSize], uchar*, int);
       +
        /*
         * Data blocks and block cache.
         */
 (DIR) diff --git a/src/libventi/mkfile b/src/libventi/mkfile
       t@@ -24,6 +24,7 @@ OFILES=\
                scorefmt.$O\
                send.$O\
                server.$O\
       +        sha1.$O\
                srvhello.$O\
                strdup.$O\
                string.$O\
 (DIR) diff --git a/src/libventi/sha1.c b/src/libventi/sha1.c
       t@@ -0,0 +1,28 @@
       +#include <u.h>
       +#include <libc.h>
       +#include <venti.h>
       +#include <libsec.h>
       +
       +void
       +vtsha1(uchar score[VtScoreSize], uchar *p, int n)
       +{
       +        DigestState ds;
       +
       +        memset(&ds, 0, sizeof ds);
       +        sha1(p, n, score, &ds);
       +}
       +
       +int
       +vtsha1check(uchar score[VtScoreSize], uchar *p, int n)
       +{
       +        DigestState ds;
       +        uchar score2[VtScoreSize];
       +
       +        memset(&ds, 0, sizeof ds);
       +        sha1(p, n, score2, &ds);
       +        if(memcmp(score, score2, VtScoreSize) != 0) {
       +                werrstr("vtsha1check failed");
       +                return -1;
       +        }
       +        return 0;
       +}