Messages in this thread Patch in this message | | | Date | Wed, 25 Feb 2004 15:43:08 -0600 | From | Matt Mackall <> | Subject | Re: [PATCH/proposal] dm-crypt: add digest-based iv generation mode |
| |
On Tue, Feb 24, 2004 at 02:38:25PM -0600, Matt Mackall wrote: > On Tue, Feb 24, 2004 at 08:43:59PM +0100, Christophe Saout wrote: > > Yes, I thought of something like this. > > Ok, I might get to this by this afternoon. >
Ok, here's my proposed API extension (currently untested). Christophe, care to give it a spin?
tiny-mpm/crypto/api.c | 21 +++++++++++++++++++++ tiny-mpm/include/linux/crypto.h | 17 +++++++++++++++++ 2 files changed, 38 insertions(+)
diff -puN crypto/api.c~crypto-copy crypto/api.c --- tiny/crypto/api.c~crypto-copy 2004-02-25 15:12:43.000000000 -0600 +++ tiny-mpm/crypto/api.c 2004-02-25 15:37:39.000000000 -0600 @@ -161,6 +161,27 @@ void crypto_free_tfm(struct crypto_tfm * kfree(tfm); } +int crypto_copy_tfm(char *dst, const struct crypto_tfm *src, unsigned size) +{ + int s = crypto_tfm_size(src); + + if (size < s) + return 0; + + crypto_alg_get(tfm->__crt_alg); + + /* currently assumes shallow copy is sufficient */ + memcpy(tfm, cc->digest, s); + + return s; +} + +void crypto_cleanup_copy_tfm(char *user_tfm) +{ + crypto_exit_ops((struct crypto_tfm *)user_tfm); + crypto_alg_put((struct crypto_tfm *)user_tfm->__crt_alg); +} + int crypto_register_alg(struct crypto_alg *alg) { int ret = 0; diff -puN include/linux/crypto.h~crypto-copy include/linux/crypto.h --- tiny/include/linux/crypto.h~crypto-copy 2004-02-25 15:12:43.000000000 -0600 +++ tiny-mpm/include/linux/crypto.h 2004-02-25 15:26:23.000000000 -0600 @@ -208,6 +208,23 @@ struct crypto_tfm { struct crypto_tfm *crypto_alloc_tfm(const char *alg_name, u32 tfm_flags); void crypto_free_tfm(struct crypto_tfm *tfm); + +/* + * These functions support user-managed crypto transforms, possibly on + * the stack. These can be useful in situations where preemption or the like + * would force serializing with preallocated transforms. + * + * This interface is intended to be safe from all contexts. + */ + +static inline int crypto_tfm_size(struct crypto_tfm *tfm) +{ + return sizeof(*tfm->digest) + cc->digest->__crt_alg->cra_ctxsize +} + +int crypto_copy_tfm(char *dst, const struct crypto_tfm *src, unsigned size); +void crypto_cleanup_copy_tfm(char *user_tfm); + /* * Transform helpers which query the underlying algorithm. */ _
-- Matt Mackall : http://www.selenic.com : Linux development and consulting - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |