diff options
Diffstat (limited to 'src')
| -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; |
