summaryrefslogtreecommitdiff
path: root/mpi
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2006-07-26 11:10:45 +0000
committerWerner Koch <wk@gnupg.org>2006-07-26 11:10:45 +0000
commitaa341655cd08be7b827e1bd3331d1bb6bb9df29c (patch)
tree660a6754ad2f8fa64b7e1a110f4295684fb4664e /mpi
parentc5e0e3ee0680196627758af15fae882329490c30 (diff)
downloadlibgcrypt-aa341655cd08be7b827e1bd3331d1bb6bb9df29c.tar.gz
Collected changes - see ChangeLogs
Diffstat (limited to 'mpi')
-rw-r--r--mpi/ChangeLog12
-rw-r--r--mpi/Makefile.am1
-rw-r--r--mpi/config.links2
-rw-r--r--mpi/mpicoder.c108
-rw-r--r--mpi/mpiutil.c2
5 files changed, 72 insertions, 53 deletions
diff --git a/mpi/ChangeLog b/mpi/ChangeLog
index 2439e564..c82cc6c6 100644
--- a/mpi/ChangeLog
+++ b/mpi/ChangeLog
@@ -1,3 +1,15 @@
+2006-07-26 Werner Koch <wk@g10code.com>
+
+ * mpiutil.c (gcry_mpi_randomize): Changed P to unsigned char*.
+
+ * mpicoder.c (gcry_mpi_scan): Changed arg BUFFER to void*.
+ (mpi_read_from_buffer): Made BUFFER arg const.
+ (gcry_mpi_scan): Removed now needless cast. Add cast for arg to
+ mpi_fromstr.
+ (gcry_mpi_print): Made TMP unsigned.
+
+ * Makefile.am (AM_CCASFLAGS): New.
+
2005-10-09 Moritz Schulte <moritz@g10code.com>
* mpi-cmp.c (gcry_mpi_cmp_ui): Rewritten; correctly handle case of
diff --git a/mpi/Makefile.am b/mpi/Makefile.am
index e1098bb8..a1eb810e 100644
--- a/mpi/Makefile.am
+++ b/mpi/Makefile.am
@@ -23,6 +23,7 @@
INCLUDES = -I$(top_srcdir)/src
ASFLAGS = @MPI_SFLAGS@
+AM_CCASFLAGS = $(NOEXECSTACK_FLAGS)
# We don't have .S sources listed, so automake does not autocreate these
CCASCOMPILE = $(CCAS) $(AM_CCASFLAGS) $(CCASFLAGS)
diff --git a/mpi/config.links b/mpi/config.links
index a5abb67a..b27157e2 100644
--- a/mpi/config.links
+++ b/mpi/config.links
@@ -1,4 +1,4 @@
-# config.links - helper for ../configure
+# config.links - helper for ../configure -*- mode: sh -*-
# Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
#
# This file is part of Libgcrypt.
diff --git a/mpi/mpicoder.c b/mpi/mpicoder.c
index d501fe4b..038bf899 100644
--- a/mpi/mpicoder.c
+++ b/mpi/mpicoder.c
@@ -32,50 +32,54 @@
static gcry_mpi_t
-mpi_read_from_buffer(byte *buffer, unsigned *ret_nread, int secure)
+mpi_read_from_buffer (const unsigned char *buffer, unsigned *ret_nread,
+ int secure)
{
- int i, j;
- unsigned int nbits, nbytes, nlimbs, nread=0;
- mpi_limb_t a;
- gcry_mpi_t val = MPI_NULL;
-
- if( *ret_nread < 2 )
- goto leave;
- nbits = buffer[0] << 8 | buffer[1];
- if( nbits > MAX_EXTERN_MPI_BITS ) {
- log_error("mpi too large (%u bits)\n", nbits);
- goto leave;
+ int i, j;
+ unsigned int nbits, nbytes, nlimbs, nread=0;
+ mpi_limb_t a;
+ gcry_mpi_t val = MPI_NULL;
+
+ if ( *ret_nread < 2 )
+ goto leave;
+ nbits = buffer[0] << 8 | buffer[1];
+ if ( nbits > MAX_EXTERN_MPI_BITS )
+ {
+ log_error ("mpi too large (%u bits)\n", nbits);
+ goto leave;
}
- else if( !nbits ) {
- log_error("an mpi of size 0 is not allowed\n");
- goto leave;
+ else if( !nbits )
+ {
+ log_error ("an mpi of size 0 is not allowed\n");
+ goto leave;
}
- buffer += 2;
- nread = 2;
-
- nbytes = (nbits+7) / 8;
- nlimbs = (nbytes+BYTES_PER_MPI_LIMB-1) / BYTES_PER_MPI_LIMB;
- val = secure? mpi_alloc_secure( nlimbs )
- : mpi_alloc( nlimbs );
- i = BYTES_PER_MPI_LIMB - nbytes % BYTES_PER_MPI_LIMB;
- i %= BYTES_PER_MPI_LIMB;
- j= val->nlimbs = nlimbs;
- val->sign = 0;
- for( ; j > 0; j-- ) {
- a = 0;
- for(; i < BYTES_PER_MPI_LIMB; i++ ) {
- if( ++nread > *ret_nread )
- log_bug("mpi larger than buffer");
- a <<= 8;
- a |= *buffer++;
+ buffer += 2;
+ nread = 2;
+
+ nbytes = (nbits+7) / 8;
+ nlimbs = (nbytes+BYTES_PER_MPI_LIMB-1) / BYTES_PER_MPI_LIMB;
+ val = secure? mpi_alloc_secure (nlimbs) : mpi_alloc( nlimbs );
+ i = BYTES_PER_MPI_LIMB - nbytes % BYTES_PER_MPI_LIMB;
+ i %= BYTES_PER_MPI_LIMB;
+ j= val->nlimbs = nlimbs;
+ val->sign = 0;
+ for ( ; j > 0; j-- )
+ {
+ a = 0;
+ for (; i < BYTES_PER_MPI_LIMB; i++ )
+ {
+ if ( ++nread > *ret_nread )
+ log_bug ("mpi larger than buffer");
+ a <<= 8;
+ a |= *buffer++;
}
- i = 0;
- val->d[j-1] = a;
+ i = 0;
+ val->d[j-1] = a;
}
-
- leave:
- *ret_nread = nread;
- return val;
+
+ leave:
+ *ret_nread = nread;
+ return val;
}
@@ -333,8 +337,9 @@ _gcry_mpi_set_buffer( gcry_mpi_t a, const byte *buffer, unsigned nbytes, int sig
bytes actually scanned after a successful operation. */
gcry_error_t
gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
- const unsigned char *buffer, size_t buflen, size_t *nscanned )
+ const void *buffer_arg, size_t buflen, size_t *nscanned )
{
+ const unsigned char *buffer = (const unsigned char*)buffer_arg;
struct gcry_mpi *a = NULL;
unsigned int len;
int secure = (buffer && gcry_is_secure (buffer));
@@ -384,7 +389,7 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
return gcry_error (GPG_ERR_NO_ERROR);
}
else if( format == GCRYMPI_FMT_PGP ) {
- a = mpi_read_from_buffer( (char*)buffer, &len, secure);
+ a = mpi_read_from_buffer (buffer, &len, secure);
if( nscanned )
*nscanned = len;
if( ret_mpi && a ) {
@@ -396,7 +401,7 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
return gcry_error (a ? GPG_ERR_NO_ERROR : GPG_ERR_INV_OBJ);
}
else if( format == GCRYMPI_FMT_SSH ) {
- const byte *s = buffer;
+ const unsigned char *s = buffer;
size_t n;
if( len && len < 4 )
@@ -437,7 +442,7 @@ gcry_mpi_scan( struct gcry_mpi **ret_mpi, enum gcry_mpi_format format,
return gcry_error (GPG_ERR_INV_ARG); /* can only handle C
strings for now */
a = secure? mpi_alloc_secure (0) : mpi_alloc(0);
- if( mpi_fromstr( a, buffer ) )
+ if( mpi_fromstr ( a, (const char *)buffer ) )
return gcry_error (GPG_ERR_INV_OBJ);
if( ret_mpi ) {
mpi_normalize ( a );
@@ -472,7 +477,7 @@ gcry_mpi_print( enum gcry_mpi_format format,
len = buflen;
*nwritten = 0;
if( format == GCRYMPI_FMT_STD ) {
- char *tmp;
+ unsigned char *tmp;
int extra = 0;
unsigned int n;
@@ -486,11 +491,12 @@ gcry_mpi_print( enum gcry_mpi_format format,
}
if (buffer && n > len) {
- gcry_free(tmp);
- return gcry_error (GPG_ERR_TOO_SHORT); /* the provided buffer is too short */
+ /* The provided buffer is too short. */
+ gcry_free (tmp);
+ return gcry_error (GPG_ERR_TOO_SHORT);
}
if( buffer ) {
- byte *s = buffer;
+ unsigned char *s = buffer;
if( extra )
*s++ = 0;
@@ -509,7 +515,7 @@ gcry_mpi_print( enum gcry_mpi_format format,
if (buffer && n > len)
return gcry_error (GPG_ERR_TOO_SHORT); /* the provided buffer is too short */
if( buffer ) {
- char *tmp;
+ unsigned char *tmp;
tmp = _gcry_mpi_get_buffer( a, &n, NULL );
memcpy( buffer, tmp, n );
gcry_free(tmp);
@@ -526,8 +532,8 @@ gcry_mpi_print( enum gcry_mpi_format format,
if (buffer && n+2 > len)
return gcry_error (GPG_ERR_TOO_SHORT); /* the provided buffer is too short */
if( buffer ) {
- char *tmp;
- byte *s = buffer;
+ unsigned char *tmp;
+ unsigned char *s = buffer;
s[0] = nbits >> 8;
s[1] = nbits;
@@ -539,7 +545,7 @@ gcry_mpi_print( enum gcry_mpi_format format,
return gcry_error (GPG_ERR_NO_ERROR);
}
else if( format == GCRYMPI_FMT_SSH ) {
- char *tmp;
+ unsigned char *tmp;
int extra = 0;
unsigned int n;
diff --git a/mpi/mpiutil.c b/mpi/mpiutil.c
index f50268f3..f6f9a8b2 100644
--- a/mpi/mpiutil.c
+++ b/mpi/mpiutil.c
@@ -405,7 +405,7 @@ void
gcry_mpi_randomize( gcry_mpi_t w,
unsigned int nbits, enum gcry_random_level level )
{
- char *p;
+ unsigned char *p;
size_t nbytes = (nbits+7)/8;
if (level == GCRY_WEAK_RANDOM)