summaryrefslogtreecommitdiffstats
path: root/kbx/keybox-file.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2019-08-06 14:59:37 +0200
committerWerner Koch <wk@gnupg.org>2019-08-06 15:01:21 +0200
commit1f980d23af8b818ed8246ec6bf13b9c61b963ec0 (patch)
treecc6d66cf92be79457c63a7fb5734a4802e2457da /kbx/keybox-file.c
parenttools: New option --keyboxd for gpg-connect-agent. (diff)
downloadgnupg2-1f980d23af8b818ed8246ec6bf13b9c61b963ec0.tar.xz
gnupg2-1f980d23af8b818ed8246ec6bf13b9c61b963ec0.zip
kbx: Allow writing using a estream.
* kbx/keybox-file.c (_keybox_write_header_blob): New optional arg stream. Change callers. Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'kbx/keybox-file.c')
-rw-r--r--kbx/keybox-file.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/kbx/keybox-file.c b/kbx/keybox-file.c
index 046e32123..7a1b43aa7 100644
--- a/kbx/keybox-file.c
+++ b/kbx/keybox-file.c
@@ -146,9 +146,9 @@ _keybox_write_blob (KEYBOXBLOB blob, FILE *fp)
}
-/* Write a fresh header type blob. */
-int
-_keybox_write_header_blob (FILE *fp, int for_openpgp)
+/* Write a fresh header type blob. Either FP or STREAM must be used. */
+gpg_error_t
+_keybox_write_header_blob (FILE *fp, estream_t stream, int for_openpgp)
{
unsigned char image[32];
u32 val;
@@ -174,7 +174,15 @@ _keybox_write_header_blob (FILE *fp, int for_openpgp)
image[20+2] = (val >> 8);
image[20+3] = (val );
- if (fwrite (image, 32, 1, fp) != 1)
- return gpg_error_from_syserror ();
+ if (fp)
+ {
+ if (fwrite (image, 32, 1, fp) != 1)
+ return gpg_error_from_syserror ();
+ }
+ else
+ {
+ if (es_fwrite (image, 32, 1, stream) != 1)
+ return gpg_error_from_syserror ();
+ }
return 0;
}