lkml.org 
[lkml]   [2004]   [Feb]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [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/

\
 
 \ /
  Last update: 2005-03-22 14:01    [W:0.077 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site