summaryrefslogtreecommitdiff
path: root/sys/src/libsec
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2014-09-13 19:46:41 +0200
committeraiju <aiju@phicode.de>2014-09-13 19:46:41 +0200
commit69fab298beee33e4a6f91d9e1811dfa1898aa743 (patch)
treef35aa35d0259b718b44eb689f287a06dda2b982d /sys/src/libsec
parent62a8bf184668a071f5113f73d0d4082d8d0ee556 (diff)
libsec: ecgen() and ecdsasign() fix
Diffstat (limited to 'sys/src/libsec')
-rw-r--r--sys/src/libsec/port/ecc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/src/libsec/port/ecc.c b/sys/src/libsec/port/ecc.c
index 2504c7c5c..8cffc04e6 100644
--- a/sys/src/libsec/port/ecc.c
+++ b/sys/src/libsec/port/ecc.c
@@ -397,10 +397,10 @@ ecgen(ECdomain *dom, ECpriv *p)
p = mallocz(sizeof(*p), 1);
if(p == nil)
return nil;
+ p->x = mpnew(0);
+ p->y = mpnew(0);
+ p->d = mpnew(0);
}
- p->x = mpnew(0);
- p->y = mpnew(0);
- p->d = mpnew(0);
for(;;){
mprand(mpsignif(dom->n), genrandom, p->d);
if(mpcmp(p->d, mpzero) > 0 && mpcmp(p->d, dom->n) < 0)
@@ -418,6 +418,7 @@ ecdsasign(ECdomain *dom, ECpriv *priv, uchar *dig, int len, mpint *r, mpint *s)
tmp.x = mpnew(0);
tmp.y = mpnew(0);
+ tmp.d = mpnew(0);
E = betomp(dig, len, nil);
t = mpnew(0);
if(mpsignif(dom->n) < 8*len)
@@ -439,6 +440,7 @@ ecdsasign(ECdomain *dom, ECpriv *priv, uchar *dig, int len, mpint *r, mpint *s)
mpfree(E);
mpfree(tmp.x);
mpfree(tmp.y);
+ mpfree(tmp.d);
}
int