summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2023-02-16 10:02:02 +0000
committerjsing <>2023-02-16 10:02:02 +0000
commitf25410e9637e6a28110495de70735afce97846fc (patch)
tree044c2e1c34646cc5b1b4500cd53fa1ab9adcef8e /src/lib
parentb1fbdd21532891fac5b0f128e57331894bd69d84 (diff)
downloadopenbsd-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.h6
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;