Преглед изворни кода

sys/src/libventi: implement vtsha1 and vtsha1check functions

David du Colombier пре 3 година
родитељ
комит
ca3ffe62b4
3 измењених фајлова са 33 додато и 0 уклоњено
  1. 4 0
      sys/include/venti.h
  2. 1 0
      sys/src/libventi/mkfile
  3. 28 0
      sys/src/libventi/sha1.c

+ 4 - 0
sys/include/venti.h

@@ -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.
  */

+ 1 - 0
sys/src/libventi/mkfile

@@ -24,6 +24,7 @@ OFILES=\
 	scorefmt.$O\
 	send.$O\
 	server.$O\
+	sha1.$O\
 	srvhello.$O\
 	strdup.$O\
 	string.$O\

+ 28 - 0
sys/src/libventi/sha1.c

@@ -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;
+}