From 44c2108632ac4812c546a0b589d77420eca3730d Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Fri, 7 Nov 2008 14:58:52 +0800 Subject: [PATCH] --- yaml --- r: 120603 b: refs/heads/master c: 8e3ee85e68c5d5c95451afd3e8f0997eec6f99e5 h: refs/heads/master i: 120601: f41e507893e5da52b7db61dc319d0d059e924a4d 120599: 74f350335ac06dbb5487029fa47fd8d445d05479 v: v3 --- [refs] | 2 +- trunk/crypto/testmgr.c | 51 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e2815649d08e..84ccec48fb33 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b7e8bdadce6317eb13c13b9451d7114614aa1450 +refs/heads/master: 8e3ee85e68c5d5c95451afd3e8f0997eec6f99e5 diff --git a/trunk/crypto/testmgr.c b/trunk/crypto/testmgr.c index 308d9cffdc46..67dce77d49d5 100644 --- a/trunk/crypto/testmgr.c +++ b/trunk/crypto/testmgr.c @@ -1010,6 +1010,55 @@ static int alg_test_hash(const struct alg_test_desc *desc, const char *driver, return err; } +static int alg_test_crc32c(const struct alg_test_desc *desc, + const char *driver, u32 type, u32 mask) +{ + struct crypto_shash *tfm; + u32 val; + int err; + + err = alg_test_hash(desc, driver, type, mask); + if (err) + goto out; + + tfm = crypto_alloc_shash(driver, type, mask); + if (IS_ERR(tfm)) { + printk(KERN_ERR "alg: crc32c: Failed to load transform for %s: " + "%ld\n", driver, PTR_ERR(tfm)); + err = PTR_ERR(tfm); + goto out; + } + + do { + struct { + struct shash_desc shash; + char ctx[crypto_shash_descsize(tfm)]; + } sdesc; + + sdesc.shash.tfm = tfm; + sdesc.shash.flags = 0; + + *(u32 *)sdesc.ctx = le32_to_cpu(420553207); + err = crypto_shash_final(&sdesc.shash, (u8 *)&val); + if (err) { + printk(KERN_ERR "alg: crc32c: Operation failed for " + "%s: %d\n", driver, err); + break; + } + + if (val != ~420553207) { + printk(KERN_ERR "alg: crc32c: Test failed for %s: " + "%d\n", driver, val); + err = -EINVAL; + } + } while (0); + + crypto_free_shash(tfm); + +out: + return err; +} + /* Please keep this list sorted by algorithm name. */ static const struct alg_test_desc alg_test_descs[] = { { @@ -1134,7 +1183,7 @@ static const struct alg_test_desc alg_test_descs[] = { } }, { .alg = "crc32c", - .test = alg_test_hash, + .test = alg_test_crc32c, .suite = { .hash = { .vecs = crc32c_tv_template,