openac (and tools) do not depend on gmp anymore

This commit is contained in:
Martin Willi
2009-08-26 14:08:20 +02:00
parent 500f515a64
commit d16fd64d39
3 changed files with 20 additions and 60 deletions
-4
View File
@@ -862,10 +862,6 @@ if test x$fips_prf = xtrue; then
sha1=true; sha1=true;
fi fi
if test x$tools = xtrue; then
gmp=true;
fi
if test x$smp = xtrue; then if test x$smp = xtrue; then
xml=true xml=true
fi fi
+1 -1
View File
@@ -8,5 +8,5 @@ AM_CFLAGS = \
-DSTRONGSWAN_CONF=\"${strongswan_conf}\" \ -DSTRONGSWAN_CONF=\"${strongswan_conf}\" \
-DIPSEC_PLUGINDIR=\"${plugindir}\" \ -DIPSEC_PLUGINDIR=\"${plugindir}\" \
-DPLUGINS=\""${libstrongswan_plugins}\"" -DPLUGINS=\""${libstrongswan_plugins}\""
openac_LDADD = $(top_builddir)/src/libstrongswan/libstrongswan.la -lgmp openac_LDADD = $(top_builddir)/src/libstrongswan/libstrongswan.la
+19 -55
View File
@@ -29,7 +29,6 @@
#include <getopt.h> #include <getopt.h>
#include <ctype.h> #include <ctype.h>
#include <time.h> #include <time.h>
#include <gmp.h>
#include <library.h> #include <library.h>
#include <debug.h> #include <debug.h>
@@ -78,55 +77,24 @@ static void usage(const char *message)
); );
} }
/**
* convert a chunk into a multi-precision integer
*/
static void chunk_to_mpz(chunk_t chunk, mpz_t number)
{
mpz_import(number, chunk.len, 1, 1, 1, 0, chunk.ptr);
}
/**
* convert a multi-precision integer into a chunk
*/
static chunk_t mpz_to_chunk(mpz_t number)
{
chunk_t chunk;
chunk.len = 1 + mpz_sizeinbase(number, 2)/BITS_PER_BYTE;
chunk.ptr = mpz_export(NULL, NULL, 1, chunk.len, 1, 0, number);
if (chunk.ptr == NULL)
{
chunk.len = 0;
}
return chunk;
}
/** /**
* read the last serial number from file * read the last serial number from file
*/ */
static chunk_t read_serial(void) static chunk_t read_serial(void)
{ {
mpz_t number; chunk_t hex, serial = chunk_empty;
char one[] = {0x01};
char buf[BUF_LEN], buf1[BUF_LEN]; FILE *fd;
chunk_t hex_serial = { buf, BUF_LEN };
chunk_t last_serial = { buf1, BUF_LEN }; fd = fopen(OPENAC_SERIAL, "r");
chunk_t serial;
FILE *fd = fopen(OPENAC_SERIAL, "r");
/* last serial number defaults to 0 */
*last_serial.ptr = 0x00;
last_serial.len = 1;
if (fd) if (fd)
{ {
if (fscanf(fd, "%s", hex_serial.ptr)) hex = chunk_alloca(64);
hex.len = fread(hex.ptr, 1, hex.len, fd);
if (hex.len)
{ {
hex_serial.len = strlen(hex_serial.ptr); serial = chunk_alloca((hex.len / 2) + (hex.len % 2));
last_serial = chunk_from_hex(hex_serial, last_serial.ptr); serial = chunk_from_hex(hex, serial.ptr);
} }
fclose(fd); fclose(fd);
} }
@@ -134,19 +102,15 @@ static chunk_t read_serial(void)
{ {
DBG1(" file '%s' does not exist yet - serial number set to 01", OPENAC_SERIAL); DBG1(" file '%s' does not exist yet - serial number set to 01", OPENAC_SERIAL);
} }
if (!serial.len)
/** {
* conversion of read serial number to a multiprecision integer return chunk_clone(chunk_create(one, 1));
* and incrementing it by one }
* and representing it as a two's complement octet string if (chunk_increment(serial))
*/ { /* overflow, prepend 0x01 */
mpz_init(number); return chunk_cat("cc", chunk_create(one, 1), serial);
chunk_to_mpz(last_serial, number); }
mpz_add_ui(number, number, 0x01); return chunk_clone(serial);
serial = mpz_to_chunk(number);
mpz_clear(number);
return serial;
} }
/** /**