/* * AFsplitter - Anti forensic information splitter * * Copyright (C) 2004 Clemens Fruhwirth * Copyright (C) 2009-2024 Red Hat, Inc. All rights reserved. * * AFsplitter diffuses information over a large stripe of data, * therefore supporting secure data destruction. * * This program 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 2 * of the License, or (at your option) any later version. * * This program 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 Library General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef INCLUDED_CRYPTSETUP_LUKS_AF_H #define INCLUDED_CRYPTSETUP_LUKS_AF_H #include struct crypt_device; struct volume_key; /* * AF_split operates on src and produces information split data in * dst. src is assumed to be of the length blocksize. The data stripe * dst points to must be capable of storing blocksize*blocknumbers. * blocknumbers is the data multiplication factor. * * AF_merge does just the opposite: reproduces the information stored in * src of the length blocksize*blocknumbers into dst of the length * blocksize. * * On error, both functions return -1, 0 otherwise. */ int AF_split(struct crypt_device *ctx, const char *src, char *dst, size_t blocksize, unsigned int blocknumbers, const char *hash); int AF_merge(const char *src, char *dst, size_t blocksize, unsigned int blocknumbers, const char *hash); size_t AF_split_sectors(size_t blocksize, unsigned int blocknumbers); int LUKS_encrypt_to_storage( char *src, size_t srcLength, const char *cipher, const char *cipher_mode, struct volume_key *vk, unsigned int sector, struct crypt_device *ctx); int LUKS_decrypt_from_storage( char *dst, size_t dstLength, const char *cipher, const char *cipher_mode, struct volume_key *vk, unsigned int sector, struct crypt_device *ctx); #endif