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.024 / U:152.508 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site