1cb730894SDaniel P. Berrange /* 2cb730894SDaniel P. Berrange * QEMU Crypto block IV generator 3cb730894SDaniel P. Berrange * 4cb730894SDaniel P. Berrange * Copyright (c) 2015-2016 Red Hat, Inc. 5cb730894SDaniel P. Berrange * 6cb730894SDaniel P. Berrange * This library is free software; you can redistribute it and/or 7cb730894SDaniel P. Berrange * modify it under the terms of the GNU Lesser General Public 8cb730894SDaniel P. Berrange * License as published by the Free Software Foundation; either 9b7cbb874SThomas Huth * version 2.1 of the License, or (at your option) any later version. 10cb730894SDaniel P. Berrange * 11cb730894SDaniel P. Berrange * This library is distributed in the hope that it will be useful, 12cb730894SDaniel P. Berrange * but WITHOUT ANY WARRANTY; without even the implied warranty of 13cb730894SDaniel P. Berrange * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14cb730894SDaniel P. Berrange * Lesser General Public License for more details. 15cb730894SDaniel P. Berrange * 16cb730894SDaniel P. Berrange * You should have received a copy of the GNU Lesser General Public 17cb730894SDaniel P. Berrange * License along with this library; if not, see <http://www.gnu.org/licenses/>. 18cb730894SDaniel P. Berrange * 19cb730894SDaniel P. Berrange */ 20cb730894SDaniel P. Berrange 21121d0712SMarkus Armbruster #ifndef QCRYPTO_IVGENPRIV_H 22121d0712SMarkus Armbruster #define QCRYPTO_IVGENPRIV_H 23cb730894SDaniel P. Berrange 24cb730894SDaniel P. Berrange #include "crypto/ivgen.h" 25cb730894SDaniel P. Berrange 26cb730894SDaniel P. Berrange typedef struct QCryptoIVGenDriver QCryptoIVGenDriver; 27cb730894SDaniel P. Berrange 28cb730894SDaniel P. Berrange struct QCryptoIVGenDriver { 29cb730894SDaniel P. Berrange int (*init)(QCryptoIVGen *ivgen, 30cb730894SDaniel P. Berrange const uint8_t *key, size_t nkey, 31cb730894SDaniel P. Berrange Error **errp); 32cb730894SDaniel P. Berrange int (*calculate)(QCryptoIVGen *ivgen, 33cb730894SDaniel P. Berrange uint64_t sector, 34cb730894SDaniel P. Berrange uint8_t *iv, size_t niv, 35cb730894SDaniel P. Berrange Error **errp); 36cb730894SDaniel P. Berrange void (*cleanup)(QCryptoIVGen *ivgen); 37cb730894SDaniel P. Berrange }; 38cb730894SDaniel P. Berrange 39cb730894SDaniel P. Berrange struct QCryptoIVGen { 40cb730894SDaniel P. Berrange QCryptoIVGenDriver *driver; 41cb730894SDaniel P. Berrange void *private; 42cb730894SDaniel P. Berrange 43*5e0e5102SMarkus Armbruster QCryptoIVGenAlgo algorithm; 44a092c513SMarkus Armbruster QCryptoCipherAlgo cipher; 45ef834aa2SMarkus Armbruster QCryptoHashAlgo hash; 46cb730894SDaniel P. Berrange }; 47cb730894SDaniel P. Berrange 48cb730894SDaniel P. Berrange 49121d0712SMarkus Armbruster #endif /* QCRYPTO_IVGENPRIV_H */ 50