Skip to content
Snippets Groups Projects
Select Git revision
  • cdec9cb5167ab1113ba9c58e395f664d9d3f9acb
  • master default
  • thermal-dont-poll-disabled-for-daniel
  • thermal-dont-poll-no-of
  • thermal-dont-poll-no-imx-no-of
  • thermal-dont-poll-no-imx
  • testing
  • thermal/linux-next
  • thermal/idle-injection-dt
  • thermal/next
  • thermal/fixes
  • thermal-v5.8-rc4
  • thermal-v5.8-rc1
  • thermal-v5.7-rc1
  • thermal-v5.6-rc1-2
  • thermal-v5.6-rc1
  • thermal-v5.5-rc5
  • thermal-5.5-rc2
  • v5.4-rc1
  • v5.3
  • v5.3-rc8
  • v5.3-rc7
  • v5.3-rc6
  • v5.3-rc5
  • v5.3-rc4
  • v5.3-rc3
  • v5.3-rc2
  • v5.3-rc1
  • v5.2
  • v5.2-rc7
  • v5.2-rc6
31 results

generic_mpih-rshift.c

Blame
    • Dmitry Kasatkin's avatar
      cdec9cb5
      crypto: GnuPG based MPI lib - source files (part 1) · cdec9cb5
      Dmitry Kasatkin authored
      
      Adds the multi-precision-integer maths library which was originally taken
      from GnuPG and ported to the kernel by (among others) David Howells.
      This version is taken from Fedora kernel 2.6.32-71.14.1.el6.
      The difference is that checkpatch reported errors and warnings have been fixed.
      
      This library is used to implemenet RSA digital signature verification
      used in IMA/EVM integrity protection subsystem.
      
      Due to patch size limitation, the patch is divided into 4 parts.
      
      Signed-off-by: default avatarDmitry Kasatkin <dmitry.kasatkin@intel.com>
      cdec9cb5
      History
      crypto: GnuPG based MPI lib - source files (part 1)
      Dmitry Kasatkin authored
      
      Adds the multi-precision-integer maths library which was originally taken
      from GnuPG and ported to the kernel by (among others) David Howells.
      This version is taken from Fedora kernel 2.6.32-71.14.1.el6.
      The difference is that checkpatch reported errors and warnings have been fixed.
      
      This library is used to implemenet RSA digital signature verification
      used in IMA/EVM integrity protection subsystem.
      
      Due to patch size limitation, the patch is divided into 4 parts.
      
      Signed-off-by: default avatarDmitry Kasatkin <dmitry.kasatkin@intel.com>
    generic_mpih-rshift.c 2.11 KiB
    /* mpih-rshift.c  -  MPI helper functions
     * Copyright (C) 1994, 1996, 1998, 1999,
     *               2000, 2001 Free Software Foundation, Inc.
     *
     * This file is part of GNUPG
     *
     * GNUPG is free software; you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published by
     * the Free Software Foundation; either version 2 of the License, or
     * (at your option) any later version.
     *
     * GNUPG is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
     *
     * Note: This code is heavily based on the GNU MP Library.
     *	 Actually it's the same code with only minor changes in the
     *	 way the data is stored; this is to support the abstraction
     *	 of an optional secure memory allocation which may be used
     *	 to avoid revealing of sensitive data due to paging etc.
     *	 The GNU MP Library itself is published under the LGPL;
     *	 however I decided to publish this code under the plain GPL.
     */
    
    #include "mpi-internal.h"
    
    /* Shift U (pointed to by UP and USIZE limbs long) CNT bits to the right
     * and store the USIZE least significant limbs of the result at WP.
     * The bits shifted out to the right are returned.
     *
     * Argument constraints:
     * 1. 0 < CNT < BITS_PER_MP_LIMB
     * 2. If the result is to be written over the input, WP must be <= UP.
     */
    
    mpi_limb_t
    mpihelp_rshift(mpi_ptr_t wp, mpi_ptr_t up, mpi_size_t usize, unsigned cnt)
    {
    	mpi_limb_t high_limb, low_limb;
    	unsigned sh_1, sh_2;
    	mpi_size_t i;
    	mpi_limb_t retval;
    
    	sh_1 = cnt;
    	wp -= 1;
    	sh_2 = BITS_PER_MPI_LIMB - sh_1;
    	high_limb = up[0];
    	retval = high_limb << sh_2;
    	low_limb = high_limb;
    	for (i = 1; i < usize; i++) {
    		high_limb = up[i];
    		wp[i] = (low_limb >> sh_1) | (high_limb << sh_2);
    		low_limb = high_limb;
    	}
    	wp[i] = low_limb >> sh_1;
    
    	return retval;
    }