LCOV - code coverage report
Current view: top level - include/linux - mpi.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 2 2 100.0 %
Date: 2022-04-01 14:35:51 Functions: 0 0 -
Branches: 2 6 33.3 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0-or-later */
       2                 :            : /* mpi.h  -  Multi Precision Integers
       3                 :            :  *      Copyright (C) 1994, 1996, 1998, 1999,
       4                 :            :  *                    2000, 2001 Free Software Foundation, Inc.
       5                 :            :  *
       6                 :            :  * This file is part of GNUPG.
       7                 :            :  *
       8                 :            :  * Note: This code is heavily based on the GNU MP Library.
       9                 :            :  *       Actually it's the same code with only minor changes in the
      10                 :            :  *       way the data is stored; this is to support the abstraction
      11                 :            :  *       of an optional secure memory allocation which may be used
      12                 :            :  *       to avoid revealing of sensitive data due to paging etc.
      13                 :            :  *       The GNU MP Library itself is published under the LGPL;
      14                 :            :  *       however I decided to publish this code under the plain GPL.
      15                 :            :  */
      16                 :            : 
      17                 :            : #ifndef G10_MPI_H
      18                 :            : #define G10_MPI_H
      19                 :            : 
      20                 :            : #include <linux/types.h>
      21                 :            : #include <linux/scatterlist.h>
      22                 :            : 
      23                 :            : #define BYTES_PER_MPI_LIMB      (BITS_PER_LONG / 8)
      24                 :            : #define BITS_PER_MPI_LIMB       BITS_PER_LONG
      25                 :            : 
      26                 :            : typedef unsigned long int mpi_limb_t;
      27                 :            : typedef signed long int mpi_limb_signed_t;
      28                 :            : 
      29                 :            : struct gcry_mpi {
      30                 :            :         int alloced;            /* array size (# of allocated limbs) */
      31                 :            :         int nlimbs;             /* number of valid limbs */
      32                 :            :         int nbits;              /* the real number of valid bits (info only) */
      33                 :            :         int sign;               /* indicates a negative number */
      34                 :            :         unsigned flags;         /* bit 0: array must be allocated in secure memory space */
      35                 :            :         /* bit 1: not used */
      36                 :            :         /* bit 2: the limb is a pointer to some m_alloced data */
      37                 :            :         mpi_limb_t *d;          /* array with the limbs */
      38                 :            : };
      39                 :            : 
      40                 :            : typedef struct gcry_mpi *MPI;
      41                 :            : 
      42                 :            : #define mpi_get_nlimbs(a)     ((a)->nlimbs)
      43                 :            : 
      44                 :            : /*-- mpiutil.c --*/
      45                 :            : MPI mpi_alloc(unsigned nlimbs);
      46                 :            : void mpi_free(MPI a);
      47                 :            : int mpi_resize(MPI a, unsigned nlimbs);
      48                 :            : 
      49                 :            : /*-- mpicoder.c --*/
      50                 :            : MPI mpi_read_raw_data(const void *xbuffer, size_t nbytes);
      51                 :            : MPI mpi_read_from_buffer(const void *buffer, unsigned *ret_nread);
      52                 :            : MPI mpi_read_raw_from_sgl(struct scatterlist *sgl, unsigned int len);
      53                 :            : void *mpi_get_buffer(MPI a, unsigned *nbytes, int *sign);
      54                 :            : int mpi_read_buffer(MPI a, uint8_t *buf, unsigned buf_len, unsigned *nbytes,
      55                 :            :                     int *sign);
      56                 :            : int mpi_write_to_sgl(MPI a, struct scatterlist *sg, unsigned nbytes,
      57                 :            :                      int *sign);
      58                 :            : 
      59                 :            : /*-- mpi-pow.c --*/
      60                 :            : int mpi_powm(MPI res, MPI base, MPI exp, MPI mod);
      61                 :            : 
      62                 :            : /*-- mpi-cmp.c --*/
      63                 :            : int mpi_cmp_ui(MPI u, ulong v);
      64                 :            : int mpi_cmp(MPI u, MPI v);
      65                 :            : 
      66                 :            : /*-- mpi-bit.c --*/
      67                 :            : void mpi_normalize(MPI a);
      68                 :            : unsigned mpi_get_nbits(MPI a);
      69                 :            : 
      70                 :            : /* inline functions */
      71                 :            : 
      72                 :            : /**
      73                 :            :  * mpi_get_size() - returns max size required to store the number
      74                 :            :  *
      75                 :            :  * @a:  A multi precision integer for which we want to allocate a bufer
      76                 :            :  *
      77                 :            :  * Return: size required to store the number
      78                 :            :  */
      79                 :         63 : static inline unsigned int mpi_get_size(MPI a)
      80                 :            : {
      81   [ +  -  -  +  :         42 :         return a->nlimbs * BYTES_PER_MPI_LIMB;
                   -  - ]
      82                 :            : }
      83                 :            : #endif /*G10_MPI_H */

Generated by: LCOV version 1.14