Merge branch 'for-linus' of ssh://master.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / arch / s390 / crypto / sha256_s390.c
index 1ec5e92..78436c6 100644 (file)
@@ -4,7 +4,7 @@
  * s390 implementation of the SHA256 Secure Hash Algorithm.
  *
  * s390 Version:
- *   Copyright (C) 2005 IBM Deutschland GmbH, IBM Corporation
+ *   Copyright IBM Corp. 2005,2007
  *   Author(s): Jan Glauber (jang@de.ibm.com)
  *
  * Derived from "crypto/sha256.c"
@@ -31,9 +31,9 @@ struct s390_sha256_ctx {
        u8 buf[2 * SHA256_BLOCK_SIZE];
 };
 
-static void sha256_init(void *ctx)
+static void sha256_init(struct crypto_tfm *tfm)
 {
-       struct s390_sha256_ctx *sctx = ctx;
+       struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm);
 
        sctx->state[0] = 0x6a09e667;
        sctx->state[1] = 0xbb67ae85;
@@ -44,12 +44,12 @@ static void sha256_init(void *ctx)
        sctx->state[6] = 0x1f83d9ab;
        sctx->state[7] = 0x5be0cd19;
        sctx->count = 0;
-       memset(sctx->buf, 0, sizeof(sctx->buf));
 }
 
-static void sha256_update(void *ctx, const u8 *data, unsigned int len)
+static void sha256_update(struct crypto_tfm *tfm, const u8 *data,
+                         unsigned int len)
 {
-       struct s390_sha256_ctx *sctx = ctx;
+       struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm);
        unsigned int index;
        int ret;
 
@@ -108,9 +108,9 @@ static void pad_message(struct s390_sha256_ctx* sctx)
 }
 
 /* Add padding and return the message digest */
-static void sha256_final(void* ctx, u8 *out)
+static void sha256_final(struct crypto_tfm *tfm, u8 *out)
 {
-       struct s390_sha256_ctx *sctx = ctx;
+       struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm);
 
        /* must perform manual padding */
        pad_message(sctx);
@@ -127,6 +127,8 @@ static void sha256_final(void* ctx, u8 *out)
 
 static struct crypto_alg alg = {
        .cra_name       =       "sha256",
+       .cra_driver_name =      "sha256-s390",
+       .cra_priority   =       CRYPT_S390_PRIORITY,
        .cra_flags      =       CRYPTO_ALG_TYPE_DIGEST,
        .cra_blocksize  =       SHA256_BLOCK_SIZE,
        .cra_ctxsize    =       sizeof(struct s390_sha256_ctx),
@@ -141,15 +143,10 @@ static struct crypto_alg alg = {
 
 static int init(void)
 {
-       int ret;
-
        if (!crypt_s390_func_available(KIMD_SHA_256))
-               return -ENOSYS;
+               return -EOPNOTSUPP;
 
-       ret = crypto_register_alg(&alg);
-       if (ret != 0)
-               printk(KERN_INFO "crypt_s390: sha256_s390 couldn't be loaded.");
-       return ret;
+       return crypto_register_alg(&alg);
 }
 
 static void __exit fini(void)