plan9-sha1.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 79 行

C
79
字号
#include <u.h>#include <libc.h>#include <venti.h>#include <libsec.h>static void encode(uchar*, u32int*, ulong);extern void vtSha1Block(u32int *s, uchar *p, ulong len);struct VtSha1{	DigestState *s;};VtSha1 *vtSha1Alloc(void){	VtSha1 *s;	s = vtMemAlloc(sizeof(VtSha1));	vtSha1Init(s);	return s;}voidvtSha1Free(VtSha1 *s){	if(s == nil)		return;	if(s->s != nil)		free(s->s);	vtMemFree(s);}voidvtSha1Init(VtSha1 *s){	s->s = nil;}voidvtSha1Update(VtSha1 *s, uchar *p, int len){	s->s = sha1(p, len, nil, s->s);}voidvtSha1Final(VtSha1 *s, uchar *digest){	sha1(nil, 0, digest, s->s);	s->s = nil;}voidvtSha1(uchar sha1[VtScoreSize], uchar *p, int n){	VtSha1 s;	vtSha1Init(&s);	vtSha1Update(&s, p, n);	vtSha1Final(&s, sha1);}intvtSha1Check(uchar score[VtScoreSize], uchar *p, int n){	VtSha1 s;	uchar score2[VtScoreSize];	vtSha1Init(&s);	vtSha1Update(&s, p, n);	vtSha1Final(&s, score2);	if(memcmp(score, score2, VtScoreSize) != 0) {		vtSetError("vtSha1Check failed");		return 0;	}	return 1;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?