diff options
author | Werner Koch <[email protected]> | 2015-10-21 06:38:10 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-02-13 16:06:38 +0000 |
commit | 81494fd30d3815502247a721f50d9eadf86a73fa (patch) | |
tree | 5bb17e6db5ffcbbfd0d28dc3379038683b78468f /g13/g13-syshelp.h | |
parent | tests: Remove some harmless warnings in regression tests. (diff) | |
download | gnupg-81494fd30d3815502247a721f50d9eadf86a73fa.tar.gz gnupg-81494fd30d3815502247a721f50d9eadf86a73fa.zip |
g13: First chunk of code to support dm-crypt.
* g13/call-syshelp.c, g13/call-syshelp.h: New.
* g13/g13-syshelp.c, g13/g13-syshelp.h: New.
* g13/sh-cmd.c: New.
* g13/sh-blockdev.c: New.
* g13/sh-exectool.c: New.
* g13/sh-dmcrypt.c: New.
* g13/Makefile.am (sbin_PROGRAMS): Add g13-syshelp.c
(g13_syshelp_SOURCES): New.
(g13_syshelp_LDADD): New.
* g13/g13.c (opts): Add option --type.
(g13_deinit_default_ctrl): New.
(main): Implement that option. Call g13_deinit_default_ctrl.
* g13/g13.h (struct call_syshelp_s): New declaration.
(server_control_s): Add field syshelp_local.
* g13/keyblob.h (KEYBLOB_TAG_CREATED): New.
(KEYBLOB_TAG_ALGOSTR): New.
(KEYBLOB_TAG_HDRCOPY): New.
* g13/backend.c (be_parse_conttype_name): New.
(be_get_detached_name): Add CONTTYPE_DM_CRYPT.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'g13/g13-syshelp.h')
-rw-r--r-- | g13/g13-syshelp.h | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/g13/g13-syshelp.h b/g13/g13-syshelp.h new file mode 100644 index 000000000..205488257 --- /dev/null +++ b/g13/g13-syshelp.h @@ -0,0 +1,93 @@ +/* g130syshelp.h - Global definitions for G13-SYSHELP. + * Copyright (C) 2015 Werner Koch + * + * This file is part of GnuPG. + * + * GnuPG is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * GnuPG is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef G13_SYSHELP_H +#define G13_SYSHELP_H + +#include "g13-common.h" + + +struct tab_item_s; +typedef struct tab_item_s *tab_item_t; + +struct tab_item_s +{ + tab_item_t next; + char *label; /* Optional malloced label for that entry. */ + char *mountpoint; /* NULL or a malloced mountpoint. */ + char blockdev[1]; /* String with the name of the block device. If + it starts with a slash is is a regular device + name, otherwise it is a PARTUUID. */ +}; + + + +/* Forward declaration for an object defined in g13-sh-cmd.c. */ +struct server_local_s; + +/* Session control object. This object is passed down to most + functions. The default values for it are set by + g13_syshelp_init_default_ctrl(). */ +struct server_control_s +{ + int no_server; /* We are not running under server control */ + int status_fd; /* Only for non-server mode */ + struct server_local_s *server_local; + + struct { + uid_t uid; /* UID of the client calling use. */ + char *uname; + tab_item_t tab;/* Linked list with the g13tab items for this user. */ + } client; + + /* Flag indicating that we should fail all commands. */ + int fail_all_cmds; + + /* Type of the current container. See the CONTTYPE_ constants. */ + int conttype; + + /* A pointer into client.tab with the selected tab line or NULL. */ + tab_item_t devti; +}; + + +/*-- g13-syshelp.c --*/ +void g13_syshelp_init_default_ctrl (struct server_control_s *ctrl); + +/*-- sh-cmd.c --*/ +gpg_error_t syshelp_server (ctrl_t ctrl); +gpg_error_t sh_encrypt_keyblob (ctrl_t ctrl, + const void *keyblob, size_t keybloblen, + char **r_enckeyblob, size_t *r_enckeybloblen); + +/*-- sh-exectool.c --*/ +gpg_error_t sh_exec_tool (const char *pgmname, const char *argv[], + const char *input_string, + char **result, size_t *resultlen); + +/*-- sh-blockdev.c --*/ +gpg_error_t sh_blockdev_getsz (const char *name, unsigned long long *r_nblocks); +gpg_error_t sh_is_empty_partition (const char *name); + +/*-- sh-dmcrypt.c --*/ +gpg_error_t sh_dmcrypt_create_container (ctrl_t ctrl, const char *devname, + estream_t devfp); + + +#endif /*G13_SYSHELP_H*/ |