diff options
Diffstat (limited to '')
-rw-r--r-- | g13/server.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/g13/server.c b/g13/server.c index a96ec6e17..5a273c229 100644 --- a/g13/server.c +++ b/g13/server.c @@ -34,6 +34,8 @@ #include "mount.h" #include "suspend.h" #include "../common/server-help.h" +#include "../common/call-gpg.h" + /* The filepointer for status message used in non-server mode */ static FILE *statusfp; @@ -769,3 +771,28 @@ g13_proxy_pinentry_notify (ctrl_t ctrl, const unsigned char *line) return 0; return assuan_inquire (ctrl->server_local->assuan_ctx, line, NULL, NULL, 0); } + + +/* + * Decrypt the keyblob (ENCKEYBLOB,ENCKEYBLOBLEN) and store the result + * at (R_KEYBLOB, R_KEYBLOBLEN). Returns 0 on success or an error + * code. On error R_KEYBLOB is set to NULL. + * + * This actually does not belong here but for that simple wrapper it + * does not make sense to add another source file. Note that we do + * not want to have this in keyblob.c, because that code is also used + * by the syshelp. + */ +gpg_error_t +g13_keyblob_decrypt (ctrl_t ctrl, const void *enckeyblob, size_t enckeybloblen, + void **r_keyblob, size_t *r_keybloblen) +{ + gpg_error_t err; + + /* FIXME: For now we only implement OpenPGP. */ + err = gpg_decrypt_blob (ctrl, opt.gpg_program, opt.gpg_arguments, + enckeyblob, enckeybloblen, + r_keyblob, r_keybloblen); + + return err; +} |