summaryrefslogtreecommitdiff
path: root/src/sexp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sexp.c')
-rw-r--r--src/sexp.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/sexp.c b/src/sexp.c
index 0e96f0b0..d8812c7e 100644
--- a/src/sexp.c
+++ b/src/sexp.c
@@ -783,6 +783,30 @@ gcry_sexp_nth_mpi (gcry_sexp_t list, int number, int mpifmt)
}
+/*
+ * Get data from the car and store return it as an opaque MPI.
+ */
+gcry_mpi_t
+_gcry_sexp_nth_opaque_mpi (gcry_sexp_t list, int number)
+{
+ char *p;
+ size_t n;
+ gcry_mpi_t a;
+
+ p = gcry_sexp_nth_buffer (list, number, &n);
+ if (!p)
+ return NULL;
+
+ a = gcry_is_secure (list)? _gcry_mpi_snew (0) : _gcry_mpi_new (0);
+ if (a)
+ gcry_mpi_set_opaque (a, p, n*8);
+ else
+ gcry_free (p);
+
+ return a;
+}
+
+
/****************
* Get the CDR
*/