bn/bn_{mont|exp}.c: switch to zero-padded intermediate vectors.
authorAndy Polyakov <appro@openssl.org>
Fri, 6 Jul 2018 13:13:15 +0000 (15:13 +0200)
committerAndy Polyakov <appro@openssl.org>
Thu, 26 Jul 2018 12:19:30 +0000 (14:19 +0200)
commit2f19065bd35dc84492c4c47ff5b706340300866f
tree33db5da98f0910c8d709d94e1b36b85cefad99ab
parentb7862891fed4cfb5ec36a31d35e14b51bf26d01e
bn/bn_{mont|exp}.c: switch to zero-padded intermediate vectors.

Note that exported functions maintain original behaviour, so that
external callers won't observe difference. While internally we can
now perform Montogomery multiplication on fixed-length vectors, fixed
at modulus size. The new functions, bn_to_mont_fixed_top and
bn_mul_mont_fixed_top, are declared in bn_int.h, because one can use
them even outside bn, e.g. in RSA, DSA, ECDSA...

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6707)

(cherry picked from commit 71883868ea5b33416ae8283bcc38dd2d97e5006b)

Resolved conflicts:
crypto/bn/bn_exp.c
crypto/bn/bn_mont.c
crypto/include/internal/bn_int.h
crypto/bn/bn_exp.c
crypto/bn/bn_lcl.h
crypto/bn/bn_mont.c
crypto/include/internal/bn_int.h