diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/unix/drawterm/libsec/egverify.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/unix/drawterm/libsec/egverify.c')
-rwxr-xr-x | sys/src/cmd/unix/drawterm/libsec/egverify.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sys/src/cmd/unix/drawterm/libsec/egverify.c b/sys/src/cmd/unix/drawterm/libsec/egverify.c new file mode 100755 index 000000000..29a95156c --- /dev/null +++ b/sys/src/cmd/unix/drawterm/libsec/egverify.c @@ -0,0 +1,29 @@ +#include "os.h" +#include <mp.h> +#include <libsec.h> + +int +egverify(EGpub *pub, EGsig *sig, mpint *m) +{ + mpint *p = pub->p, *alpha = pub->alpha; + mpint *r = sig->r, *s = sig->s; + mpint *v1, *v2, *rs; + int rv = -1; + + if(mpcmp(r, mpone) < 0 || mpcmp(r, p) >= 0) + return rv; + v1 = mpnew(0); + rs = mpnew(0); + v2 = mpnew(0); + mpexp(pub->key, r, p, v1); + mpexp(r, s, p, rs); + mpmul(v1, rs, v1); + mpmod(v1, p, v1); + mpexp(alpha, m, p, v2); + if(mpcmp(v1, v2) == 0) + rv = 0; + mpfree(v1); + mpfree(rs); + mpfree(v2); + return rv; +} |