Lines Matching +full:data +full:- +full:out
1 // SPDX-License-Identifier: GPL-2.0-or-later
7 *@Article{castagnoli-crc,
9 * title = {{Optimization of Cyclic Redundancy-Check Codes with 24
19 * the iscsi-crc.c module of the linux-iscsi driver at
20 * http://linux-iscsi.sourceforge.net.
59 struct chksum_ctx *mctx = crypto_shash_ctx(desc->tfm); in chksum_init()
62 ctx->crc = mctx->key; in chksum_init()
77 if (keylen != sizeof(mctx->key)) in chksum_setkey()
78 return -EINVAL; in chksum_setkey()
79 mctx->key = get_unaligned_le32(key); in chksum_setkey()
83 static int chksum_update(struct shash_desc *desc, const u8 *data, in chksum_update() argument
88 ctx->crc = crc32c_le_base(ctx->crc, data, length); in chksum_update()
92 static int chksum_update_arch(struct shash_desc *desc, const u8 *data, in chksum_update_arch() argument
97 ctx->crc = __crc32c_le(ctx->crc, data, length); in chksum_update_arch()
101 static int chksum_final(struct shash_desc *desc, u8 *out) in chksum_final() argument
105 put_unaligned_le32(~ctx->crc, out); in chksum_final()
109 static int __chksum_finup(u32 *crcp, const u8 *data, unsigned int len, u8 *out) in __chksum_finup() argument
111 put_unaligned_le32(~crc32c_le_base(*crcp, data, len), out); in __chksum_finup()
115 static int __chksum_finup_arch(u32 *crcp, const u8 *data, unsigned int len, in __chksum_finup_arch() argument
116 u8 *out) in __chksum_finup_arch() argument
118 put_unaligned_le32(~__crc32c_le(*crcp, data, len), out); in __chksum_finup_arch()
122 static int chksum_finup(struct shash_desc *desc, const u8 *data, in chksum_finup() argument
123 unsigned int len, u8 *out) in chksum_finup() argument
127 return __chksum_finup(&ctx->crc, data, len, out); in chksum_finup()
130 static int chksum_finup_arch(struct shash_desc *desc, const u8 *data, in chksum_finup_arch() argument
131 unsigned int len, u8 *out) in chksum_finup_arch() argument
135 return __chksum_finup_arch(&ctx->crc, data, len, out); in chksum_finup_arch()
138 static int chksum_digest(struct shash_desc *desc, const u8 *data, in chksum_digest() argument
139 unsigned int length, u8 *out) in chksum_digest() argument
141 struct chksum_ctx *mctx = crypto_shash_ctx(desc->tfm); in chksum_digest()
143 return __chksum_finup(&mctx->key, data, length, out); in chksum_digest()
146 static int chksum_digest_arch(struct shash_desc *desc, const u8 *data, in chksum_digest_arch() argument
147 unsigned int length, u8 *out) in chksum_digest_arch() argument
149 struct chksum_ctx *mctx = crypto_shash_ctx(desc->tfm); in chksum_digest_arch()
151 return __chksum_finup_arch(&mctx->key, data, length, out); in chksum_digest_arch()
158 mctx->key = ~0; in crc32c_cra_init()
173 .base.cra_driver_name = "crc32c-generic",
191 .base.cra_driver_name = "crc32c-" __stringify(ARCH),
222 MODULE_ALIAS_CRYPTO("crc32c-generic");