BN_MOD_MUL_MONTGOMERY - Online Linux Manual PageSection : 3ossl
Updated : 2022-03-15
Source : 3.0.2
Note : OpenSSL

NAMEBN_mod_mul_montgomery, BN_MONT_CTX_new, BN_MONT_CTX_free, BN_MONT_CTX_set, BN_MONT_CTX_copy, BN_from_montgomery, BN_to_montgomery − Montgomery multiplication

SYNOPSIS​ #include <openssl/bn.h> ​ ​ BN_MONT_CTX *BN_MONT_CTX_new(void); ​ void BN_MONT_CTX_free(BN_MONT_CTX *mont); ​ ​ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *m, BN_CTX *ctx); ​ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); ​ ​ int BN_mod_mul_montgomery(BIGNUM *r, BIGNUM *a, BIGNUM *b, ​ BN_MONT_CTX *mont, BN_CTX *ctx); ​ ​ int BN_from_montgomery(BIGNUM *r, BIGNUM *a, BN_MONT_CTX *mont, ​ BN_CTX *ctx); ​ ​ int BN_to_montgomery(BIGNUM *r, BIGNUM *a, BN_MONT_CTX *mont, ​ BN_CTX *ctx);

DESCRIPTIONThese functions implement Montgomery multiplication. They are used automatically when BN_mod_exp(3) is called with suitable input, but they may be useful when several operations are to be performed using the same modulus. BN_MONT_CTX_new() allocates and initializes a BN_MONT_CTX structure. BN_MONT_CTX_set() sets up the mont structure from the modulus m by precomputing its inverse and a value R. BN_MONT_CTX_copy() copies the BN_MONT_CTX from to to. BN_MONT_CTX_free() frees the components of the BN_MONT_CTX, and, if it was created by BN_MONT_CTX_new(), also the structure itself. If mont is NULL, nothing is done. BN_mod_mul_montgomery() computes Mont(a,b):=a*b*R^−1 and places the result in r. BN_from_montgomery() performs the Montgomery reduction r = a*R^−1. BN_to_montgomery() computes Mont(a,R^2), i.e. a*R. Note that a must be nonnegative and smaller than the modulus. For all functions, ctx is a previously allocated BN_CTX used for temporary variables.

RETURN VALUESBN_MONT_CTX_new() returns the newly allocated BN_MONT_CTX, and NULL on error. BN_MONT_CTX_free() has no return value. For the other functions, 1 is returned for success, 0 on error. The error codes can be obtained by ERR_get_error(3).

WARNINGSThe inputs must be reduced modulo m, otherwise the result will be outside the expected range.

SEE ALSOERR_get_error(3), BN_add(3), ​BN_CTX_new(3)

HISTORYBN_MONT_CTX_init() was removed in OpenSSL 1.1.0

COPYRIGHTCopyright 2000−2020 The OpenSSL Project Authors. All Rights Reserved. Licensed under the Apache License 2.0 (the License). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
0
Johanes Gumabo
Data Size   :   11,410 byte
man-BN_from_montgomery.3osslBuild   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 169,771
Visitor ID   :     :  
Visitor IP   :   18.117.11.13   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.

ERROR : Need New Coding :         (parse_manual_page_|249|B___N_from_montgomery.3ossl|36/37|el══─{─══.|.el══─{─══. ds -- \|\(em\| )         (htmlprn|149|B___N_from_montgomery.3ossl|36/37|.el══─{─══. ds --  —  |.el══─{─══. ds -- \|\(em\| )         (parse_manual_page_|249|B___N_from_montgomery.3ossl|43|br══─}─══|'br══─}─══ )         (htmlprn|149|B___N_from_montgomery.3ossl|43|'br══─}─══ |'br══─}─══ )