security/nss/lib/freebl/mpi/mplogic.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  *  mplogic.h
     3  *
     4  *  Bitwise logical operations on MPI values
     5  *
     6  * This Source Code Form is subject to the terms of the Mozilla Public
     7  * License, v. 2.0. If a copy of the MPL was not distributed with this
     8  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
    10 #ifndef _H_MPLOGIC_
    11 #define _H_MPLOGIC_
    13 #include "mpi.h"
    15 /*
    16   The logical operations treat an mp_int as if it were a bit vector,
    17   without regard to its sign (an mp_int is represented in a signed
    18   magnitude format).  Values are treated as if they had an infinite
    19   string of zeros left of the most-significant bit.
    20  */
    22 /* Parity results                    */
    24 #define MP_EVEN       MP_YES
    25 #define MP_ODD        MP_NO
    27 /* Bitwise functions                 */
    29 mp_err mpl_not(mp_int *a, mp_int *b);            /* one's complement  */
    30 mp_err mpl_and(mp_int *a, mp_int *b, mp_int *c); /* bitwise AND       */
    31 mp_err mpl_or(mp_int *a, mp_int *b, mp_int *c);  /* bitwise OR        */
    32 mp_err mpl_xor(mp_int *a, mp_int *b, mp_int *c); /* bitwise XOR       */
    34 /* Shift functions                   */
    36 mp_err mpl_rsh(const mp_int *a, mp_int *b, mp_digit d);   /* right shift    */
    37 mp_err mpl_lsh(const mp_int *a, mp_int *b, mp_digit d);   /* left shift     */
    39 /* Bit count and parity              */
    41 mp_err mpl_num_set(mp_int *a, int *num);         /* count set bits    */
    42 mp_err mpl_num_clear(mp_int *a, int *num);       /* count clear bits  */
    43 mp_err mpl_parity(mp_int *a);                    /* determine parity  */
    45 /* Get & Set the value of a bit */
    47 mp_err mpl_set_bit(mp_int *a, mp_size bitNum, mp_size value);
    48 mp_err mpl_get_bit(const mp_int *a, mp_size bitNum);
    49 mp_err mpl_get_bits(const mp_int *a, mp_size lsbNum, mp_size numBits);
    50 mp_err mpl_significant_bits(const mp_int *a);
    52 #endif /* end _H_MPLOGIC_ */

mercurial