mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
g13: Consider g13tab for a mount command.
* g13/sh-cmd.c (cmd_getkeyblob): New. (register_commands): Register it. * g13/call-syshelp.c (getkeyblob_data_cb): New. (call_syshelp_get_keyblob): New. * g13/mount.c: Include callsyshelp.h. (g13_mount_container): Ask syshelp whether the filename is managed by g13tab. Call syshelp to get the encrypted keyblob in this case. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
37e932658c
commit
7009206402
4 changed files with 132 additions and 14 deletions
|
@ -234,6 +234,52 @@ call_syshelp_find_device (ctrl_t ctrl, const char *name, char **r_blockdev)
|
|||
}
|
||||
|
||||
|
||||
|
||||
static gpg_error_t
|
||||
getkeyblob_data_cb (void *opaque, const void *data, size_t datalen)
|
||||
{
|
||||
membuf_t *mb = opaque;
|
||||
|
||||
if (data)
|
||||
put_membuf (mb, data, datalen);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Send the GTEKEYBLOB command to the syshelper. On success the
|
||||
* encrypted keyblpob is stored at (R_ENCKEYBLOB,R_ENCKEYBLOBLEN). */
|
||||
gpg_error_t
|
||||
call_syshelp_get_keyblob (ctrl_t ctrl,
|
||||
void **r_enckeyblob, size_t *r_enckeybloblen)
|
||||
{
|
||||
gpg_error_t err;
|
||||
assuan_context_t ctx;
|
||||
membuf_t mb;
|
||||
|
||||
*r_enckeyblob = NULL;
|
||||
*r_enckeybloblen = 0;
|
||||
init_membuf (&mb, 512);
|
||||
|
||||
err = start_syshelp (ctrl, &ctx);
|
||||
if (err)
|
||||
goto leave;
|
||||
|
||||
err = assuan_transact (ctx, "GETKEYBLOB",
|
||||
getkeyblob_data_cb, &mb,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (err)
|
||||
goto leave;
|
||||
*r_enckeyblob = get_membuf (&mb, r_enckeybloblen);
|
||||
if (!*r_enckeyblob)
|
||||
err = gpg_error_from_syserror ();
|
||||
|
||||
leave:
|
||||
xfree (get_membuf (&mb, NULL));
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Send the DEVICE command to the syshelper. FNAME is the name of the
|
||||
device. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue