qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

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 
     32 typedef 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  */
     50 void 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  */
     72 void 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 */