cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

xts.h (2765B)


      1/*
      2 * QEMU Crypto XTS cipher mode
      3 *
      4 * Copyright (c) 2015-2016 Red Hat, Inc.
      5 *
      6 * This library is free software; you can redistribute it and/or
      7 * modify it under the terms of the GNU Lesser General Public
      8 * License as published by the Free Software Foundation; either
      9 * version 2.1 of the License, or (at your option) any later version.
     10 *
     11 * This library is distributed in the hope that it will be useful,
     12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14 * Lesser General Public License for more details.
     15 *
     16 * You should have received a copy of the GNU Lesser General Public
     17 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
     18 *
     19 * This code is originally derived from public domain / WTFPL code in
     20 * LibTomCrypt crytographic library http://libtom.org. The XTS code
     21 * was donated by Elliptic Semiconductor Inc (www.ellipticsemi.com)
     22 * to the LibTom Projects
     23 *
     24 */
     25
     26#ifndef QCRYPTO_XTS_H
     27#define QCRYPTO_XTS_H
     28
     29
     30#define XTS_BLOCK_SIZE 16
     31
     32typedef void xts_cipher_func(const void *ctx,
     33                             size_t length,
     34                             uint8_t *dst,
     35                             const uint8_t *src);
     36
     37/**
     38 * xts_decrypt:
     39 * @datactx: the cipher context for data decryption
     40 * @tweakctx: the cipher context for tweak decryption
     41 * @encfunc: the cipher function for encryption
     42 * @decfunc: the cipher function for decryption
     43 * @iv: the initialization vector tweak of XTS_BLOCK_SIZE bytes
     44 * @length: the length of @dst and @src
     45 * @dst: buffer to hold the decrypted plaintext
     46 * @src: buffer providing the ciphertext
     47 *
     48 * Decrypts @src into @dst
     49 */
     50void xts_decrypt(const void *datactx,
     51                 const void *tweakctx,
     52                 xts_cipher_func *encfunc,
     53                 xts_cipher_func *decfunc,
     54                 uint8_t *iv,
     55                 size_t length,
     56                 uint8_t *dst,
     57                 const uint8_t *src);
     58
     59/**
     60 * xts_decrypt:
     61 * @datactx: the cipher context for data encryption
     62 * @tweakctx: the cipher context for tweak encryption
     63 * @encfunc: the cipher function for encryption
     64 * @decfunc: the cipher function for decryption
     65 * @iv: the initialization vector tweak of XTS_BLOCK_SIZE bytes
     66 * @length: the length of @dst and @src
     67 * @dst: buffer to hold the encrypted ciphertext
     68 * @src: buffer providing the plaintext
     69 *
     70 * Decrypts @src into @dst
     71 */
     72void xts_encrypt(const void *datactx,
     73                 const void *tweakctx,
     74                 xts_cipher_func *encfunc,
     75                 xts_cipher_func *decfunc,
     76                 uint8_t *iv,
     77                 size_t length,
     78                 uint8_t *dst,
     79                 const uint8_t *src);
     80
     81
     82#endif /* QCRYPTO_XTS_H */