poly1305: minor.
This commit is contained in:
parent
18c1476de9
commit
f2a939de70
@ -104,10 +104,13 @@ Poly1305.prototype.blocks = function blocks(data, bytes, m) {
|
|||||||
// h *= r, (partial) h %= p
|
// h *= r, (partial) h %= p
|
||||||
for (let i = 0; i < 10; i++) {
|
for (let i = 0; i < 10; i++) {
|
||||||
d[i] = c;
|
d[i] = c;
|
||||||
|
|
||||||
for (let j = 0; j < 10; j++) {
|
for (let j = 0; j < 10; j++) {
|
||||||
d[i] += this.h[j] * (j <= i
|
if (j <= i)
|
||||||
? this.r[i - j]
|
d[i] += this.r[i - j];
|
||||||
: 5 * this.r[i + 10 - j]);
|
else
|
||||||
|
d[i] += 5 * this.r[i + 10 - j]);
|
||||||
|
|
||||||
// Sum(h[i] * r[i] * 5) will overflow slightly
|
// Sum(h[i] * r[i] * 5) will overflow slightly
|
||||||
// above 6 products with an unclamped r, so
|
// above 6 products with an unclamped r, so
|
||||||
// carry at 5
|
// carry at 5
|
||||||
@ -116,9 +119,11 @@ Poly1305.prototype.blocks = function blocks(data, bytes, m) {
|
|||||||
d[i] &= 0x1fff;
|
d[i] &= 0x1fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
c += d[i] >>> 13;
|
c += d[i] >>> 13;
|
||||||
d[i] &= 0x1fff;
|
d[i] &= 0x1fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
c = (c << 2) + c; // c *= 5
|
c = (c << 2) + c; // c *= 5
|
||||||
c += d[0];
|
c += d[0];
|
||||||
d[0] = (c & 0x1fff);
|
d[0] = (c & 0x1fff);
|
||||||
@ -146,15 +151,21 @@ Poly1305.prototype.update = function update(data) {
|
|||||||
// handle leftover
|
// handle leftover
|
||||||
if (this.leftover) {
|
if (this.leftover) {
|
||||||
let want = 16 - this.leftover;
|
let want = 16 - this.leftover;
|
||||||
|
|
||||||
if (want > bytes)
|
if (want > bytes)
|
||||||
want = bytes;
|
want = bytes;
|
||||||
|
|
||||||
for (let i = 0; i < want; i++)
|
for (let i = 0; i < want; i++)
|
||||||
this.buffer[this.leftover + i] = data[m + i];
|
this.buffer[this.leftover + i] = data[m + i];
|
||||||
|
|
||||||
bytes -= want;
|
bytes -= want;
|
||||||
m += want;
|
m += want;
|
||||||
|
|
||||||
this.leftover += want;
|
this.leftover += want;
|
||||||
|
|
||||||
if (this.leftover < 16)
|
if (this.leftover < 16)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.blocks(this.buffer, 16, 0);
|
this.blocks(this.buffer, 16, 0);
|
||||||
this.leftover = 0;
|
this.leftover = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user