⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsaverify.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "os.h"#include <mp.h>#include <libsec.h>intdsaverify(DSApub *pub, DSAsig *sig, mpint *m){	int rv = -1;	mpint *u1, *u2, *v, *sinv;	if(mpcmp(sig->r, mpone) < 0 || mpcmp(sig->r, pub->q) >= 0)		return rv;	if(mpcmp(sig->s, mpone) < 0 || mpcmp(sig->s, pub->q) >= 0)		return rv;	u1 = mpnew(0);	u2 = mpnew(0);	v = mpnew(0);	sinv = mpnew(0);	// find (s**-1) mod q, make sure it exists	mpextendedgcd(sig->s, pub->q, u1, sinv, v);	if(mpcmp(u1, mpone) != 0)		goto out;	// u1 = (sinv * m) mod q, u2 = (r * sinv) mod q	mpmul(sinv, m, u1);	mpmod(u1, pub->q, u1);	mpmul(sig->r, sinv, u2);	mpmod(u2, pub->q, u2);	// v = (((alpha**u1)*(key**u2)) mod p) mod q	mpexp(pub->alpha, u1, pub->p, sinv);	mpexp(pub->key, u2, pub->p, v);	mpmul(sinv, v, v);	mpmod(v, pub->p, v);	mpmod(v, pub->q, v);	if(mpcmp(v, sig->r) == 0)		rv = 0;out:	mpfree(v);	mpfree(u1);	mpfree(u2);	mpfree(sinv);	return rv;}

⌨️ 快捷键说明

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