12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * Cryptographic Hash operations.
- *
- * Copyright (c) 2006 Herbert Xu <herbert@gondor.apana.org.au>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- */
- #include <linux/errno.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/seq_file.h>
- #include "internal.h"
- static unsigned int crypto_hash_ctxsize(struct crypto_alg *alg)
- {
- return alg->cra_ctxsize;
- }
- static int crypto_init_hash_ops(struct crypto_tfm *tfm)
- {
- struct hash_tfm *crt = &tfm->crt_hash;
- struct hash_alg *alg = &tfm->__crt_alg->cra_hash;
- if (alg->digestsize > crypto_tfm_alg_blocksize(tfm))
- return -EINVAL;
- crt->init = alg->init;
- crt->update = alg->update;
- crt->final = alg->final;
- crt->digest = alg->digest;
- crt->setkey = alg->setkey;
- crt->digestsize = alg->digestsize;
- return 0;
- }
- static void crypto_hash_show(struct seq_file *m, struct crypto_alg *alg)
- __attribute_used__;
- static void crypto_hash_show(struct seq_file *m, struct crypto_alg *alg)
- {
- seq_printf(m, "type : hash\n");
- seq_printf(m, "blocksize : %u\n", alg->cra_blocksize);
- seq_printf(m, "digestsize : %u\n", alg->cra_hash.digestsize);
- }
- const struct crypto_type crypto_hash_type = {
- .ctxsize = crypto_hash_ctxsize,
- .init = crypto_init_hash_ops,
- #ifdef CONFIG_PROC_FS
- .show = crypto_hash_show,
- #endif
- };
- EXPORT_SYMBOL_GPL(crypto_hash_type);
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("Generic cryptographic hash type");
|