aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpgme.h.in
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2025-02-26 12:09:05 +0000
committerWerner Koch <[email protected]>2025-02-26 13:11:20 +0000
commit0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0 (patch)
tree56a7aa2ce0456a127edc3b85f812dbf487357d99 /src/gpgme.h.in
parentRemove now unused functions. (diff)
downloadgpgme-0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0.tar.gz
gpgme-0a64c7d0c6d0463cf2e06b3a01ef5be4d879bcf0.zip
Add API gpgme_op_random_bytes.
* src/genrandom.c: New. * src/Makefile.am: Add new file. * src/engine-backend.h (struct engine_ops): Add func ptr getdirect. Adjust all engine_ops. * src/engine-gpg.c (gpg_getdirect): New. (_gpgme_engine_ops_gpg): Connect new handler. * src/gpgme.h.in (gpgme_random_mode_t): New. (GPGME_RANDOM_MODE_NORMAL): New. (GPGME_RANDOM_MODE_ZBASE32): New. (gpgme_op_random_bytes): New public function * src/libgpgme.vers: Add function. * src/gpgme.def: Add function. * tests/run-genrandom.c: New. * tests/Makefile.am: Add new file. -- This is a first take on this the mode parameter allows to extend the function if ever needed. Due to the gpg calling and fd setup overhead this function is not yet very fast but its purpose is to get "approved" random bytes. We might eventually extend it to keep a small internal cache of random numbers and get for example 128 random bytes directly from gpg and deliver only the few required. GnuPG-bug-id: 6694
Diffstat (limited to 'src/gpgme.h.in')
-rw-r--r--src/gpgme.h.in12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gpgme.h.in b/src/gpgme.h.in
index 52b15971..9c0c7977 100644
--- a/src/gpgme.h.in
+++ b/src/gpgme.h.in
@@ -2473,6 +2473,18 @@ gpgme_error_t gpgme_op_query_swdb (gpgme_ctx_t ctx,
gpgme_query_swdb_result_t gpgme_op_query_swdb_result (gpgme_ctx_t ctx);
+/* Mode values for gpgme_op_get_random_bytes. */
+typedef enum
+ {
+ GPGME_RANDOM_MODE_NORMAL = 0,
+ GPGME_RANDOM_MODE_ZBASE32 = 1
+ }
+gpgme_random_mode_t;
+
+/* Fill BUFFER with BUFSIZE random bytes from gpg. */
+gpgme_error_t gpgme_op_random_bytes (gpgme_ctx_t ctx, gpgme_random_mode_t mode,
+ char *buffer, size_t bufsize);
+
/*