mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Allow to specify a volume-type for a key. This applies to all associated volumes. The volume type can be either 'plain' or 'luks2'. New keys created will default to 'luks2', but existing keys that do not have a volume-type property default to 'plain' for compatibility reasons. The volume type 'luks2' is only available when the define HAVE_LUKS2_SUPPORT is set in the makefile. This is set only when libcryptsetup version 2.0.3 or newer is available at build time. If the define is not set, the volume-type option is not available to the user, and the volume-type of a key defaults to 'plain'. Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com> Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
81 lines
2.4 KiB
C
81 lines
2.4 KiB
C
/*
|
|
* zkey - Generate, re-encipher, and validate secure keys
|
|
*
|
|
* Keystore handling functions
|
|
*
|
|
* Copyright IBM Corp. 2018
|
|
*
|
|
* s390-tools is free software; you can redistribute it and/or modify
|
|
* it under the terms of the MIT license. See LICENSE for details.
|
|
*/
|
|
|
|
#ifndef KEYSTORE_H
|
|
#define KEYSTORE_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include "pkey.h"
|
|
|
|
struct keystore {
|
|
bool verbose;
|
|
char *directory;
|
|
int lock_fd;
|
|
mode_t mode;
|
|
gid_t owner;
|
|
};
|
|
|
|
struct keystore *keystore_new(const char *directory, bool verbose);
|
|
|
|
int keystore_generate_key(struct keystore *keystore, const char *name,
|
|
const char *description, const char *volumes,
|
|
const char *apqns, size_t sector_size,
|
|
size_t keybits, bool xts, const char *clear_key_file,
|
|
const char *volume_type, int pkey_fd);
|
|
|
|
int keystore_import_key(struct keystore *keystore, const char *name,
|
|
const char *description, const char *volumes,
|
|
const char *apqns, size_t sector_size,
|
|
const char *import_file, const char *volume_type);
|
|
|
|
int keystore_change_key(struct keystore *keystore, const char *name,
|
|
const char *description, const char *volumes,
|
|
const char *apqns, long int sector_size,
|
|
const char *volume_type);
|
|
|
|
int keystore_rename_key(struct keystore *keystore, const char *name,
|
|
const char *newname);
|
|
|
|
int keystore_validate_key(struct keystore *keystore, const char *name_filter,
|
|
const char *apqn_filter, int pkey_fd);
|
|
|
|
int keystore_reencipher_key(struct keystore *keystore, const char *name_filter,
|
|
const char *apqn_filter,
|
|
bool from_old, bool to_new, bool inplace,
|
|
bool staged, bool complete, int pkey_fd,
|
|
t_CSNBKTC dll_CSNBKTC);
|
|
|
|
int keystore_copy_key(struct keystore *keystore, const char *name,
|
|
const char *newname, const char *volumes);
|
|
|
|
int keystore_export_key(struct keystore *keystore, const char *name,
|
|
const char *export_file);
|
|
|
|
int keystore_remove_key(struct keystore *keystore, const char *name,
|
|
bool quiet);
|
|
|
|
int keystore_list_keys(struct keystore *keystore, const char *name_filter,
|
|
const char *volume_filter, const char *apqn_filter,
|
|
const char *volume_type);
|
|
|
|
int keystore_cryptsetup(struct keystore *keystore, const char *volume_filter,
|
|
bool execute, const char *volume_type);
|
|
|
|
int keystore_crypttab(struct keystore *keystore, const char *volume_filter,
|
|
const char *volume_type);
|
|
|
|
void keystore_free(struct keystore *keystore);
|
|
|
|
|
|
|
|
#endif
|