Blame doc/man3/BN_BLINDING_new.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_new, BN_BLINDING_free, BN_BLINDING_update, BN_BLINDING_convert,
Packit Service 084de1
BN_BLINDING_invert, BN_BLINDING_convert_ex, BN_BLINDING_invert_ex,
Packit Service 084de1
BN_BLINDING_is_current_thread, BN_BLINDING_set_current_thread,
Packit Service 084de1
BN_BLINDING_lock, BN_BLINDING_unlock, BN_BLINDING_get_flags,
Packit Service 084de1
BN_BLINDING_set_flags, BN_BLINDING_create_param - blinding related BIGNUM functions
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/bn.h>
Packit Service 084de1
Packit Service 084de1
 BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai,
Packit Service 084de1
                              BIGNUM *mod);
Packit Service 084de1
 void BN_BLINDING_free(BN_BLINDING *b);
Packit Service 084de1
 int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
Packit Service 084de1
 int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
Packit Service 084de1
 int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
Packit Service 084de1
 int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b,
Packit Service 084de1
                            BN_CTX *ctx);
Packit Service 084de1
 int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
Packit Service 084de1
                           BN_CTX *ctx);
Packit Service 084de1
 int BN_BLINDING_is_current_thread(BN_BLINDING *b);
Packit Service 084de1
 void BN_BLINDING_set_current_thread(BN_BLINDING *b);
Packit Service 084de1
 int BN_BLINDING_lock(BN_BLINDING *b);
Packit Service 084de1
 int BN_BLINDING_unlock(BN_BLINDING *b);
Packit Service 084de1
 unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
Packit Service 084de1
 void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
Packit Service 084de1
 BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
Packit Service 084de1
                                       const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
Packit Service 084de1
                                       int (*bn_mod_exp)(BIGNUM *r,
Packit Service 084de1
                                                         const BIGNUM *a,
Packit Service 084de1
                                                         const BIGNUM *p,
Packit Service 084de1
                                                         const BIGNUM *m,
Packit Service 084de1
                                                         BN_CTX *ctx,
Packit Service 084de1
                                                         BN_MONT_CTX *m_ctx),
Packit Service 084de1
                                       BN_MONT_CTX *m_ctx);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_new() allocates a new B<BN_BLINDING> structure and copies
Packit Service 084de1
the B and B<Ai> values into the newly created B<BN_BLINDING> object.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_free() frees the B<BN_BLINDING> structure.
Packit Service 084de1
If B is NULL, nothing is done.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_update() updates the B<BN_BLINDING> parameters by squaring
Packit Service 084de1
the B and B<Ai> or, after specific number of uses and if the
Packit Service 084de1
necessary parameters are set, by re-creating the blinding parameters.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_convert_ex() multiplies B<n> with the blinding factor B.
Packit Service 084de1
If B<r> is not NULL a copy the inverse blinding factor B<Ai> will be
Packit Service 084de1
returned in B<r> (this is useful if a B<RSA> object is shared among
Packit Service 084de1
several threads). BN_BLINDING_invert_ex() multiplies B<n> with the
Packit Service 084de1
inverse blinding factor B<Ai>. If B<r> is not NULL it will be used as
Packit Service 084de1
the inverse blinding.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_convert() and BN_BLINDING_invert() are wrapper
Packit Service 084de1
functions for BN_BLINDING_convert_ex() and BN_BLINDING_invert_ex()
Packit Service 084de1
with B<r> set to NULL.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_is_current_thread() returns whether the B<BN_BLINDING>
Packit Service 084de1
structure is owned by the current thread. This is to help users
Packit Service 084de1
provide proper locking if needed for multi-threaded use.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_set_current_thread() sets the current thread as the
Packit Service 084de1
owner of the B<BN_BLINDING> structure.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_lock() locks the B<BN_BLINDING> structure.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_unlock() unlocks the B<BN_BLINDING> structure.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_get_flags() returns the BN_BLINDING flags. Currently
Packit Service 084de1
there are two supported flags: B<BN_BLINDING_NO_UPDATE> and
Packit Service 084de1
B<BN_BLINDING_NO_RECREATE>. B<BN_BLINDING_NO_UPDATE> inhibits the
Packit Service 084de1
automatic update of the B<BN_BLINDING> parameters after each use
Packit Service 084de1
and B<BN_BLINDING_NO_RECREATE> inhibits the automatic re-creation
Packit Service 084de1
of the B<BN_BLINDING> parameters after a fixed number of uses (currently
Packit Service 084de1
32). In newly allocated B<BN_BLINDING> objects no flags are set.
Packit Service 084de1
BN_BLINDING_set_flags() sets the B<BN_BLINDING> parameters flags.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_create_param() creates new B<BN_BLINDING> parameters
Packit Service 084de1
using the exponent B<e> and the modulus B<m>. B<bn_mod_exp> and
Packit Service 084de1
B<m_ctx> can be used to pass special functions for exponentiation
Packit Service 084de1
(normally BN_mod_exp_mont() and B<BN_MONT_CTX>).
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_new() returns the newly allocated B<BN_BLINDING> structure
Packit Service 084de1
or NULL in case of an error.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_update(), BN_BLINDING_convert(), BN_BLINDING_invert(),
Packit Service 084de1
BN_BLINDING_convert_ex() and BN_BLINDING_invert_ex() return 1 on
Packit Service 084de1
success and 0 if an error occurred.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_is_current_thread() returns 1 if the current thread owns
Packit Service 084de1
the B<BN_BLINDING> object, 0 otherwise.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_set_current_thread() doesn't return anything.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_lock(), BN_BLINDING_unlock() return 1 if the operation
Packit Service 084de1
succeeded or 0 on error.
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_get_flags() returns the currently set B<BN_BLINDING> flags
Packit Service 084de1
(a B<unsigned long> value).
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_create_param() returns the newly created B<BN_BLINDING>
Packit Service 084de1
parameters or NULL on error.
Packit Service 084de1
Packit Service 084de1
=head1 HISTORY
Packit Service 084de1
Packit Service 084de1
BN_BLINDING_thread_id() was first introduced in OpenSSL 1.0.0, and it
Packit Service 084de1
deprecates BN_BLINDING_set_thread_id() and BN_BLINDING_get_thread_id().
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2005-2017 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut