diff options
author | Werner Koch <wk@gnupg.org> | 1999-04-26 17:53:01 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 1999-04-26 17:53:01 +0200 |
commit | bbf86c6e592b62cd6ae0e74ac37822b69242a4aa (patch) | |
tree | c82d4dfef3fcdb2a769d978acd304e111d5b8d83 /mpi | |
parent | See ChangeLog: Sun Apr 18 20:48:15 CEST 1999 Werner Koch (diff) | |
download | gnupg2-bbf86c6e592b62cd6ae0e74ac37822b69242a4aa.tar.xz gnupg2-bbf86c6e592b62cd6ae0e74ac37822b69242a4aa.zip |
See ChangeLog: Mon Apr 26 17:48:15 CEST 1999 Werner Koch
Diffstat (limited to 'mpi')
-rw-r--r-- | mpi/ChangeLog | 6 | ||||
-rw-r--r-- | mpi/Makefile.am | 3 | ||||
-rw-r--r-- | mpi/mpi-inline.c | 36 | ||||
-rw-r--r-- | mpi/mpi-inline.h | 13 | ||||
-rw-r--r-- | mpi/mpih-add.c | 88 | ||||
-rw-r--r-- | mpi/mpih-sub.c | 81 |
6 files changed, 51 insertions, 176 deletions
diff --git a/mpi/ChangeLog b/mpi/ChangeLog index 95f0e4055..7d66b809b 100644 --- a/mpi/ChangeLog +++ b/mpi/ChangeLog @@ -1,3 +1,9 @@ +Mon Apr 26 17:48:15 CEST 1999 Werner Koch <wk@isil.d.shuttle.de> + + * mpih-add.c, mpih-sub.c: Removed + * mpi-inline.c: New. + * mpi-inline.h: Make it usable by mpi-inline.c. + Sun Apr 18 10:11:28 CEST 1999 Werner Koch <wk@isil.d.shuttle.de> * mpih-mul.c (mpihelp_mul_n): Fixed use of memory region. diff --git a/mpi/Makefile.am b/mpi/Makefile.am index 2f743093e..42acb55fe 100644 --- a/mpi/Makefile.am +++ b/mpi/Makefile.am @@ -22,6 +22,7 @@ libmpi_a_SOURCES = longlong.h \ mpi-gcd.c \ mpi-internal.h \ mpi-inline.h \ + mpi-inline.c \ mpi-inv.c \ mpi-mul.c \ mpi-pow.c \ @@ -29,8 +30,6 @@ libmpi_a_SOURCES = longlong.h \ mpi-scan.c \ mpicoder.c \ mpih-cmp.c \ - mpih-add.c \ - mpih-sub.c \ mpih-div.c \ mpih-mul.c \ mpiutil.c \ diff --git a/mpi/mpi-inline.c b/mpi/mpi-inline.c new file mode 100644 index 000000000..7a2e7a4fd --- /dev/null +++ b/mpi/mpi-inline.c @@ -0,0 +1,36 @@ +/* mpi-inline.c + * Copyright (C) 1999 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 + */ + +#include <config.h> +#include <stdio.h> +#include <stdlib.h> + +/* put the inline functions as real functions into the lib */ +#define G10_MPI_INLINE_DECL + +#include "mpi-internal.h" + +/* always include the header becuase it is only + * included by mpi-internal if __GCC__ is defined but we + * need it here in all cases and the above definition of + * of the macro allows us to do so + */ +#include "mpi-inline.h" + diff --git a/mpi/mpi-inline.h b/mpi/mpi-inline.h index 5dc6fc0a3..8c7cedb60 100644 --- a/mpi/mpi-inline.h +++ b/mpi/mpi-inline.h @@ -1,5 +1,5 @@ /* mpi-inline.h - Internal to the Multi Precision Integers - * Copyright (C) 1998 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999 Free Software Foundation, Inc. * Copyright (C) 1994, 1996 Free Software Foundation, Inc. * * This file is part of GnuPG. @@ -30,8 +30,11 @@ #ifndef G10_MPI_INLINE_H #define G10_MPI_INLINE_H +#ifndef G10_MPI_INLINE_DECL + #define G10_MPI_INLINE_DECL extern __inline__ +#endif -extern __inline__ mpi_limb_t +G10_MPI_INLINE_DECL mpi_limb_t mpihelp_add_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_limb_t s2_limb) { @@ -61,7 +64,7 @@ mpihelp_add_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, -extern __inline__ mpi_limb_t +G10_MPI_INLINE_DECL mpi_limb_t mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_ptr_t s2_ptr, mpi_size_t s2_size) { @@ -77,7 +80,7 @@ mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, } -extern __inline__ mpi_limb_t +G10_MPI_INLINE_DECL mpi_limb_t mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_limb_t s2_limb ) { @@ -107,7 +110,7 @@ mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, -extern __inline__ mpi_limb_t +G10_MPI_INLINE_DECL mpi_limb_t mpihelp_sub( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_ptr_t s2_ptr, mpi_size_t s2_size) { diff --git a/mpi/mpih-add.c b/mpi/mpih-add.c deleted file mode 100644 index d6b0c3eb0..000000000 --- a/mpi/mpih-add.c +++ /dev/null @@ -1,88 +0,0 @@ -/* mpihelp-add.c - MPI helper functions - * Copyright (C) 1998 Free Software Foundation, Inc. - * Copyright (C) 1994, 1996 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 <config.h> -#include <stdio.h> -#include <stdlib.h> - -#include "mpi-internal.h" - -/**************** - * Add to S1_PTR with size S1_SIZE the limb S2_LIMB and - * store the result in RES_PTR. Return the carry - * S1_SIZE must be > 0. - */ -#ifndef __GNUC__ -/*_EXTERN_INLINE */ -mpi_limb_t -mpihelp_add_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, - mpi_size_t s1_size, mpi_limb_t s2_limb) -{ - mpi_limb_t x; - - x = *s1_ptr++; - s2_limb += x; - *res_ptr++ = s2_limb; - if( s2_limb < x ) { /* sum is less than the left operand: handle carry */ - while( --s1_size ) { - x = *s1_ptr++ + 1; /* add carry */ - *res_ptr++ = x; /* and store */ - if( x ) /* not 0 (no overflow): we can stop */ - goto leave; - } - return 1; /* return carry (size of s1 to small) */ - } - - leave: - if( res_ptr != s1_ptr ) { /* not the same variable */ - mpi_size_t i; /* copy the rest */ - for( i=0; i < s1_size-1; i++ ) - res_ptr[i] = s1_ptr[i]; - } - return 0; /* no carry */ -} - - - -/*_EXTERN_INLINE*/ -mpi_limb_t -mpihelp_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, - mpi_ptr_t s2_ptr, mpi_size_t s2_size) -{ - mpi_limb_t cy = 0; - - if( s2_size ) - cy = mpihelp_add_n( res_ptr, s1_ptr, s2_ptr, s2_size ); - - if( s1_size - s2_size ) - cy = mpihelp_add_1( res_ptr + s2_size, s1_ptr + s2_size, - s1_size - s2_size, cy); - return cy; -} -#endif diff --git a/mpi/mpih-sub.c b/mpi/mpih-sub.c deleted file mode 100644 index 7bfcddeae..000000000 --- a/mpi/mpih-sub.c +++ /dev/null @@ -1,81 +0,0 @@ -/* mpihelp-sub.c - MPI helper functions - * Copyright (C) 1998 Free Software Foundation, Inc. - * Copyright (C) 1994, 1996 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 <config.h> -#include <stdio.h> -#include <stdlib.h> - -#include "mpi-internal.h" - -#ifndef __GNUC__ -mpi_limb_t -mpihelp_sub_1(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, - mpi_size_t s1_size, mpi_limb_t s2_limb ) -{ - mpi_limb_t x; - - x = *s1_ptr++; - s2_limb = x - s2_limb; - *res_ptr++ = s2_limb; - if( s2_limb > x ) { - while( --s1_size ) { - x = *s1_ptr++; - *res_ptr++ = x - 1; - if( x ) - goto leave; - } - return 1; - } - - leave: - if( res_ptr != s1_ptr ) { - mpi_size_t i; - for( i=0; i < s1_size-1; i++ ) - res_ptr[i] = s1_ptr[i]; - } - return 0; -} - - -mpi_limb_t -mpihelp_sub( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, - mpi_ptr_t s2_ptr, mpi_size_t s2_size) -{ - mpi_limb_t cy = 0; - - if( s2_size ) - cy = mpihelp_sub_n(res_ptr, s1_ptr, s2_ptr, s2_size); - - if( s1_size - s2_size ) - cy = mpihelp_sub_1(res_ptr + s2_size, s1_ptr + s2_size, - s1_size - s2_size, cy); - return cy; -} -#endif - |