summaryrefslogtreecommitdiff
path: root/tests/mpitests.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2013-07-17 16:55:02 +0200
committerWerner Koch <wk@gnupg.org>2013-07-17 16:55:02 +0200
commit364d019e3ffedfcb434576702f73e767cb9389ef (patch)
tree5d43e0c34d37345d9ed5721b8f18747919e04a9f /tests/mpitests.c
parent5940e66cbefea3de5924f494f18aed69bb694bff (diff)
downloadlibgcrypt-364d019e3ffedfcb434576702f73e767cb9389ef.tar.gz
Allow gcry_mpi_dump to print opaque MPIs.
* mpi/mpicoder.c (gcry_mpi_dump): Detect abd print opaque MPIs. * tests/mpitests.c (test_opaque): New. (main): Call new test. Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'tests/mpitests.c')
-rw-r--r--tests/mpitests.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/mpitests.c b/tests/mpitests.c
index 5643c1be..432f3e89 100644
--- a/tests/mpitests.c
+++ b/tests/mpitests.c
@@ -150,6 +150,38 @@ test_const_and_immutable (void)
}
+static void
+test_opaque (void)
+{
+ gcry_mpi_t a;
+ char *p;
+ unsigned int nbits;
+
+ p = gcry_xstrdup ("This is a test buffer");
+ a = gcry_mpi_set_opaque (NULL, p, 21*8+1); /* (a non byte aligned length) */
+
+ if (!gcry_mpi_get_flag (a, GCRYMPI_FLAG_OPAQUE))
+ die ("opaque flag not set\n");
+
+ p = gcry_mpi_get_opaque (a, &nbits);
+ if (!p)
+ die ("gcry_mpi_get_opaque returned NULL\n");
+ if (nbits != 21*8+1)
+ die ("gcry_mpi_get_opaque returned a changed bit size\n");
+ if (strcmp (p, "This is a test buffer"))
+ die ("gcry_mpi_get_opaque returned a changed buffer\n");
+
+ if (verbose)
+ {
+ fprintf (stderr, "mpi: ");
+ gcry_mpi_dump (a);
+ putc ('\n', stderr);
+ }
+
+ gcry_mpi_release (a);
+}
+
+
static int
test_add (void)
{
@@ -354,6 +386,7 @@ main (int argc, char* argv[])
gcry_control(GCRYCTL_DISABLE_SECMEM);
test_const_and_immutable ();
+ test_opaque ();
test_add ();
test_sub ();
test_mul ();