X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=lib%2Fcrypto_backend%2Fcrypto_backend.h;h=06f5c81e65d3e48771d8d7a8562efdab349f56ae;hb=d0b21614422d7ecd787aeffb894eba1a6973f4fa;hp=2ca53d085a3901198085661afb35bbe9c38cad24;hpb=16ac703008cbbb648ac3ff1dfd7e884e974b7b5c;p=platform%2Fupstream%2Fcryptsetup.git diff --git a/lib/crypto_backend/crypto_backend.h b/lib/crypto_backend/crypto_backend.h index 2ca53d0..06f5c81 100644 --- a/lib/crypto_backend/crypto_backend.h +++ b/lib/crypto_backend/crypto_backend.h @@ -2,18 +2,20 @@ * crypto backend implementation * * Copyright (C) 2010-2012, Red Hat, Inc. All rights reserved. + * Copyright (C) 2010-2012, Milan Broz * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * version 2 as published by the Free Software Foundation. + * This file is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. * - * This program is distributed in the hope that it will be useful, + * This file 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 General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser 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 + * You should have received a copy of the GNU Lesser General Public + * License along with this file; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _CRYPTO_BACKEND_H @@ -21,11 +23,11 @@ #include #include -#include "config.h" struct crypt_device; struct crypt_hash; struct crypt_hmac; +struct crypt_cipher; int crypt_backend_init(struct crypt_device *ctx); @@ -54,18 +56,37 @@ enum { CRYPT_RND_NORMAL = 0, CRYPT_RND_KEY = 1, CRYPT_RND_SALT = 2 }; int crypt_backend_rng(char *buffer, size_t length, int quality, int fips); /* PBKDF*/ -int crypt_pbkdf_check(const char *kdf, const char *hash, uint64_t *iter_secs); +int crypt_pbkdf_check(const char *kdf, const char *hash, + const char *password, size_t password_size, + const char *salt, size_t salt_size, + uint64_t *iter_secs); int crypt_pbkdf(const char *kdf, const char *hash, const char *password, size_t password_length, const char *salt, size_t salt_length, char *key, size_t key_length, unsigned int iterations); +#if USE_INTERNAL_PBKDF2 /* internal PBKDF2 implementation */ int pkcs5_pbkdf2(const char *hash, const char *P, size_t Plen, const char *S, size_t Slen, unsigned int c, unsigned int dkLen,char *DK); +#endif + +/* CRC32 */ +uint32_t crypt_crc32(uint32_t seed, const unsigned char *buf, size_t len); + +/* ciphers */ +int crypt_cipher_init(struct crypt_cipher **ctx, const char *name, + const char *mode, const void *buffer, size_t length); +int crypt_cipher_destroy(struct crypt_cipher *ctx); +int crypt_cipher_encrypt(struct crypt_cipher *ctx, + const char *in, char *out, size_t length, + const char *iv, size_t iv_length); +int crypt_cipher_decrypt(struct crypt_cipher *ctx, + const char *in, char *out, size_t length, + const char *iv, size_t iv_length); #endif /* _CRYPTO_BACKEND_H */