summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2013-04-15 11:52:54 +0200
committerWerner Koch <wk@gnupg.org>2013-04-15 11:54:11 +0200
commitbd3afc27459a44df8cf501a7e1ae37bb849a8b0e (patch)
tree6bfb8c47d792bab0bed61ec453f0644ad4bc8039 /src
parent71b25a5562f68aad81eae52cc1bab9ca7731a7e9 (diff)
downloadlibgcrypt-bd3afc27459a44df8cf501a7e1ae37bb849a8b0e.tar.gz
Add macros to return pre-defined MPIs.
* src/gcrypt.h.in (GCRYMPI_CONST_ONE, GCRYMPI_CONST_TWO) (GCRYMPI_CONST_THREE, GCRYMPI_CONST_FOUR, GCRYMPI_CONST_EIGHT): New. (_gcry_mpi_get_const): New private function. * src/visibility.c (_gcry_mpi_get_const): New. * src/visibility.h: Mark it visible. Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'src')
-rw-r--r--src/gcrypt.h.in10
-rw-r--r--src/libgcrypt.def2
-rw-r--r--src/libgcrypt.vers2
-rw-r--r--src/visibility.c14
-rw-r--r--src/visibility.h4
5 files changed, 32 insertions, 0 deletions
diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in
index 85213ea4..f472b02b 100644
--- a/src/gcrypt.h.in
+++ b/src/gcrypt.h.in
@@ -467,6 +467,13 @@ enum gcry_mpi_flag
};
+/* Macros to return pre-defined MPI constants. */
+#define GCRYMPI_CONST_ONE (_gcry_mpi_get_const (1))
+#define GCRYMPI_CONST_TWO (_gcry_mpi_get_const (2))
+#define GCRYMPI_CONST_THREE (_gcry_mpi_get_const (3))
+#define GCRYMPI_CONST_FOUR (_gcry_mpi_get_const (4))
+#define GCRYMPI_CONST_EIGHT (_gcry_mpi_get_const (8))
+
/* Allocate a new big integer object, initialize it with 0 and
initially allocate memory for a number of at least NBITS. */
gcry_mpi_t gcry_mpi_new (unsigned int nbits);
@@ -692,6 +699,9 @@ void gcry_mpi_clear_flag (gcry_mpi_t a, enum gcry_mpi_flag flag);
/* Return true when the FLAG is set for A. */
int gcry_mpi_get_flag (gcry_mpi_t a, enum gcry_mpi_flag flag);
+/* Private function - do not use. */
+gcry_mpi_t _gcry_mpi_get_const (int no);
+
/* Unless the GCRYPT_NO_MPI_MACROS is used, provide a couple of
convenience macros for the big integer functions. */
#ifndef GCRYPT_NO_MPI_MACROS
diff --git a/src/libgcrypt.def b/src/libgcrypt.def
index 4da46232..9eaf8a7a 100644
--- a/src/libgcrypt.def
+++ b/src/libgcrypt.def
@@ -234,3 +234,5 @@ EXPORTS
gcry_mpi_ec_mul @211
gcry_pubkey_get_sexp @212
+
+ _gcry_mpi_get_const @213
diff --git a/src/libgcrypt.vers b/src/libgcrypt.vers
index 29e46dbe..6aaf0f13 100644
--- a/src/libgcrypt.vers
+++ b/src/libgcrypt.vers
@@ -98,6 +98,8 @@ GCRYPT_1.6 {
gcry_mpi_ec_get_affine;
gcry_mpi_ec_dup; gcry_mpi_ec_add; gcry_mpi_ec_mul;
+ _gcry_mpi_get_const;
+
gcry_ctx_release;
local:
diff --git a/src/visibility.c b/src/visibility.c
index b503be66..c86d31b2 100644
--- a/src/visibility.c
+++ b/src/visibility.c
@@ -601,6 +601,20 @@ gcry_mpi_get_flag (gcry_mpi_t a, enum gcry_mpi_flag flag)
return _gcry_mpi_get_flag (a, flag);
}
+gcry_mpi_t
+_gcry_mpi_get_const (int no)
+{
+ switch (no)
+ {
+ case 1: return _gcry_mpi_const (MPI_C_ONE);
+ case 2: return _gcry_mpi_const (MPI_C_TWO);
+ case 3: return _gcry_mpi_const (MPI_C_THREE);
+ case 4: return _gcry_mpi_const (MPI_C_FOUR);
+ case 8: return _gcry_mpi_const (MPI_C_EIGHT);
+ default: log_bug("unsupported GCRYMPI_CONST_ macro used\n");
+ }
+}
+
gcry_error_t
gcry_cipher_open (gcry_cipher_hd_t *handle,
int algo, int mode, unsigned int flags)
diff --git a/src/visibility.h b/src/visibility.h
index 1564e865..6887f37b 100644
--- a/src/visibility.h
+++ b/src/visibility.h
@@ -594,6 +594,10 @@ MARK_VISIBLE (gcry_mpi_test_bit)
MARK_VISIBLE (gcry_ctx_release)
+/* Functions used to implement macros. */
+MARK_VISIBLEX(_gcry_mpi_get_const)
+
+
#undef MARK_VISIBLE
#endif /*_GCRY_INCLUDED_BY_VISIBILITY_C*/