factotum: rsa: use mptober() to get right adjusted result instead of mptobe() and memset()
This commit is contained in:
parent
c5393d612f
commit
79bfff6437
1 changed files with 3 additions and 7 deletions
|
@ -131,7 +131,7 @@ rsaread(Fsstate *fss, void *va, uint *n)
|
||||||
State *s;
|
State *s;
|
||||||
mpint *m;
|
mpint *m;
|
||||||
Keyinfo ki;
|
Keyinfo ki;
|
||||||
int len, r;
|
int len;
|
||||||
|
|
||||||
s = fss->ps;
|
s = fss->ps;
|
||||||
switch(fss->phase){
|
switch(fss->phase){
|
||||||
|
@ -160,13 +160,9 @@ rsaread(Fsstate *fss, void *va, uint *n)
|
||||||
len = (mpsignif(priv->pub.n)+7)/8;
|
len = (mpsignif(priv->pub.n)+7)/8;
|
||||||
if(len > *n)
|
if(len > *n)
|
||||||
return failure(fss, "signature buffer too short");
|
return failure(fss, "signature buffer too short");
|
||||||
m = rsadecrypt(priv, s->digest, nil);
|
|
||||||
r = mptobe(m, (uchar*)va, len, nil);
|
|
||||||
if(r < len){
|
|
||||||
memmove((uchar*)va+len-r, va, r);
|
|
||||||
memset(va, 0, len-r);
|
|
||||||
}
|
|
||||||
*n = len;
|
*n = len;
|
||||||
|
m = rsadecrypt(priv, s->digest, nil);
|
||||||
|
mptober(m, (uchar*)va, len);
|
||||||
mpfree(m);
|
mpfree(m);
|
||||||
fss->phase = Established;
|
fss->phase = Established;
|
||||||
return RpcOk;
|
return RpcOk;
|
||||||
|
|
Loading…
Reference in a new issue