diff options
author | jsing <> | 2023-02-16 10:02:02 +0000 |
---|---|---|
committer | jsing <> | 2023-02-16 10:02:02 +0000 |
commit | f25410e9637e6a28110495de70735afce97846fc (patch) | |
tree | 044c2e1c34646cc5b1b4500cd53fa1ab9adcef8e /src/lib | |
parent | b1fbdd21532891fac5b0f128e57331894bd69d84 (diff) | |
download | openbsd-f25410e9637e6a28110495de70735afce97846fc.tar.gz openbsd-f25410e9637e6a28110495de70735afce97846fc.tar.bz2 openbsd-f25410e9637e6a28110495de70735afce97846fc.zip |
Add missing masks to accumulator version of bn_umul_hilo()
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/bn/bn_internal.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/libcrypto/bn/bn_internal.h b/src/lib/libcrypto/bn/bn_internal.h index 1b5ab9c42c..64240555d1 100644 --- a/src/lib/libcrypto/bn/bn_internal.h +++ b/src/lib/libcrypto/bn/bn_internal.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_internal.h,v 1.5 2023/02/16 04:42:20 jsing Exp $ */ | 1 | /* $OpenBSD: bn_internal.h,v 1.6 2023/02/16 10:02:02 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2023 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2023 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -258,13 +258,17 @@ bn_umul_hilo(BN_ULONG a, BN_ULONG b, BN_ULONG *out_h, BN_ULONG *out_l) | |||
258 | x = ah * bl; | 258 | x = ah * bl; |
259 | acc1 += x & BN_MASK2l; | 259 | acc1 += x & BN_MASK2l; |
260 | acc2 += (acc1 >> BN_BITS4) + (x >> BN_BITS4); | 260 | acc2 += (acc1 >> BN_BITS4) + (x >> BN_BITS4); |
261 | acc1 &= BN_MASK2l; | ||
261 | acc3 += acc2 >> BN_BITS4; | 262 | acc3 += acc2 >> BN_BITS4; |
263 | acc2 &= BN_MASK2l; | ||
262 | 264 | ||
263 | /* (bh * al) << BN_BITS4, partition the result across h:l. */ | 265 | /* (bh * al) << BN_BITS4, partition the result across h:l. */ |
264 | x = bh * al; | 266 | x = bh * al; |
265 | acc1 += x & BN_MASK2l; | 267 | acc1 += x & BN_MASK2l; |
266 | acc2 += (acc1 >> BN_BITS4) + (x >> BN_BITS4); | 268 | acc2 += (acc1 >> BN_BITS4) + (x >> BN_BITS4); |
269 | acc1 &= BN_MASK2l; | ||
267 | acc3 += acc2 >> BN_BITS4; | 270 | acc3 += acc2 >> BN_BITS4; |
271 | acc2 &= BN_MASK2l; | ||
268 | 272 | ||
269 | *out_h = (acc3 << BN_BITS4) | acc2; | 273 | *out_h = (acc3 << BN_BITS4) | acc2; |
270 | *out_l = (acc1 << BN_BITS4) | acc0; | 274 | *out_l = (acc1 << BN_BITS4) | acc0; |