GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
BN_MOD_SQRT(3) FreeBSD Library Functions Manual BN_MOD_SQRT(3)

BN_mod_sqrtsquare root in a prime field

#include <openssl/bn.h>

BIGNUM *
BN_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);

() solves


r2a(modp)

for r in the prime field of characteristic p using the Tonelli-Shanks algorithm if needed and places one of the two solutions into r. The other solution is p - r.

The argument p is expected to be a prime number.

In case of success, BN_mod_sqrt() returns r, or a newly allocated BIGNUM object if the r argument is NULL.

In case of failure, NULL is returned. This for example happens if a is not a quadratic residue or if memory allocation fails.

BN_CTX_new(3), BN_kronecker(3), BN_mod_sqr(3), BN_new(3)

Henri Cohen, A Course in Computational Algebraic Number Theory, Springer, Berlin, 1993, Algorithm 1.5.1.

BN_mod_sqrt() first appeared in OpenSSL 0.9.7 and has been available since OpenBSD 3.2.

If p is not prime, BN_mod_sqrt() may succeed or fail. If it succeeds, the square of the returned value is congruent to a modulo p. If it fails, the reason reported by ERR_get_error(3) is often misleading. In particular, even if a is a perfect square, BN_mod_sqrt() often reports “not a square” instead of “p is not prime”.

December 6, 2022 FreeBSD 14.3-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.