X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=libcfs%2Flibcfs%2Flinux%2Flinux-crypto-crc32.c;h=58e4691cfb3de39311a884897c6098285a3a7aa0;hb=2b8d9d12d182fc91d671558434cc0b652c1ade21;hp=bc408670368832b099994bb53bb71daac0bc3c97;hpb=06e7f5bde3a11d5786ef067157ba3e72a444d8ee;p=fs%2Flustre-release.git diff --git a/libcfs/libcfs/linux/linux-crypto-crc32.c b/libcfs/libcfs/linux/linux-crypto-crc32.c index bc40867..58e4691 100644 --- a/libcfs/libcfs/linux/linux-crypto-crc32.c +++ b/libcfs/libcfs/linux/linux-crypto-crc32.c @@ -31,11 +31,8 @@ #include #include -#ifdef HAVE_STRUCT_SHASH_ALG +#include #include -#else -#include -#endif #define CHKSUM_BLOCK_SIZE 1 #define CHKSUM_DIGEST_SIZE 4 @@ -56,7 +53,6 @@ static int crc32_cra_init(struct crypto_tfm *tfm) } -#ifdef HAVE_STRUCT_SHASH_ALG /* * Setting the seed allows arbitrary accumulators and flexible XOR policy * If your algorithm starts with ~0, then XOR with ~0 before you set @@ -140,85 +136,13 @@ static struct shash_alg alg = { .cra_init = crc32_cra_init, } }; -#else /* HAVE_STRUCT_SHASH_ALG */ -#ifdef HAVE_DIGEST_SETKEY_FLAGS -static int crc32_digest_setkey(struct crypto_tfm *tfm, const u8 *key, - unsigned int keylen, unsigned int *flags) -#else -static int crc32_digest_setkey(struct crypto_tfm *tfm, const u8 *key, - unsigned int keylen) -#endif -{ - u32 *mctx = crypto_tfm_ctx(tfm); - - if (keylen != sizeof(u32)) { - tfm->crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; - return -EINVAL; - } - *mctx = le32_to_cpup((__le32 *)key); - return 0; -} - -static void crc32_digest_init(struct crypto_tfm *tfm) -{ - u32 *mctx = crypto_tfm_ctx(tfm); - - *mctx = 0; - -} -static void crc32_digest_update(struct crypto_tfm *tfm, const u8 *data, - unsigned int len) -{ - u32 *crcp = crypto_tfm_ctx(tfm); - - *crcp = __crc32_le(*crcp, data, len); -} - -static void crc32_digest_final(struct crypto_tfm *tfm, u8 *out) -{ - u32 *crcp = crypto_tfm_ctx(tfm); - - *(__le32 *)out = cpu_to_le32p(crcp); -} - -static struct crypto_alg alg = { - .cra_name = "crc32", - .cra_flags = CRYPTO_ALG_TYPE_DIGEST, - .cra_driver_name = "crc32-table", - .cra_priority = 100, - .cra_blocksize = CHKSUM_BLOCK_SIZE, - .cra_ctxsize = sizeof(u32), - .cra_module = THIS_MODULE, - .cra_init = crc32_cra_init, - .cra_list = LIST_HEAD_INIT(alg.cra_list), - .cra_u = { - .digest = { - .dia_digestsize = CHKSUM_DIGEST_SIZE, - .dia_setkey = crc32_digest_setkey, - .dia_init = crc32_digest_init, - .dia_update = crc32_digest_update, - .dia_final = crc32_digest_final - } - } -}; -#endif /* HAVE_STRUCT_SHASH_ALG */ int cfs_crypto_crc32_register(void) { -#ifdef HAVE_STRUCT_SHASH_ALG return crypto_register_shash(&alg); -#else - return crypto_register_alg(&alg); -#endif } -EXPORT_SYMBOL(cfs_crypto_crc32_register); void cfs_crypto_crc32_unregister(void) { -#ifdef HAVE_STRUCT_SHASH_ALG crypto_unregister_shash(&alg); -#else - crypto_unregister_alg(&alg); -#endif } -EXPORT_SYMBOL(cfs_crypto_crc32_unregister);