diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-08-21 08:04:03 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2006-09-20 21:41:03 -0400 |
commit | c907ee76d8456fe1d98f40b5febfc7802a73b784 (patch) | |
tree | ba7abea258fd89c2873fbac40b1d5928b4a99f5b /crypto/tcrypt.c | |
parent | ee7564166da9e218c3f605ee78ff16599d4d5a05 (diff) |
[CRYPTO] tcrypt: Use test_hash for crc32c
Now that crc32c has been fixed to conform with standard digest semantics,
we can use test_hash for it. I've turned the last test into a chunky
test.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/tcrypt.c')
-rw-r--r-- | crypto/tcrypt.c | 106 |
1 files changed, 2 insertions, 104 deletions
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index 606777074671..56d0d8b3bcf2 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
@@ -762,108 +762,6 @@ out: | |||
762 | crypto_free_tfm(tfm); | 762 | crypto_free_tfm(tfm); |
763 | } | 763 | } |
764 | 764 | ||
765 | static void test_crc32c(void) | ||
766 | { | ||
767 | #define NUMVEC 6 | ||
768 | #define VECSIZE 40 | ||
769 | |||
770 | int i, j, pass; | ||
771 | u32 crc; | ||
772 | u8 b, test_vec[NUMVEC][VECSIZE]; | ||
773 | static u32 vec_results[NUMVEC] = { | ||
774 | 0x0e2c157f, 0xe980ebf6, 0xde74bded, | ||
775 | 0xd579c862, 0xba979ad0, 0x2b29d913 | ||
776 | }; | ||
777 | static u32 tot_vec_results = 0x24c5d375; | ||
778 | |||
779 | struct scatterlist sg[NUMVEC]; | ||
780 | struct crypto_tfm *tfm; | ||
781 | char *fmtdata = "testing crc32c initialized to %08x: %s\n"; | ||
782 | #define SEEDTESTVAL 0xedcba987 | ||
783 | u32 seed; | ||
784 | |||
785 | printk("\ntesting crc32c\n"); | ||
786 | |||
787 | tfm = crypto_alloc_tfm("crc32c", 0); | ||
788 | if (tfm == NULL) { | ||
789 | printk("failed to load transform for crc32c\n"); | ||
790 | return; | ||
791 | } | ||
792 | |||
793 | crypto_digest_init(tfm); | ||
794 | crypto_digest_final(tfm, (u8*)&crc); | ||
795 | printk(fmtdata, crc, (crc == 0) ? "pass" : "ERROR"); | ||
796 | |||
797 | /* | ||
798 | * stuff test_vec with known values, simple incrementing | ||
799 | * byte values. | ||
800 | */ | ||
801 | b = 0; | ||
802 | for (i = 0; i < NUMVEC; i++) { | ||
803 | for (j = 0; j < VECSIZE; j++) | ||
804 | test_vec[i][j] = ++b; | ||
805 | sg_set_buf(&sg[i], test_vec[i], VECSIZE); | ||
806 | } | ||
807 | |||
808 | seed = SEEDTESTVAL; | ||
809 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
810 | crypto_digest_init(tfm); | ||
811 | crypto_digest_final(tfm, (u8*)&crc); | ||
812 | printk("testing crc32c setkey returns %08x : %s\n", crc, (crc == (SEEDTESTVAL ^ ~(u32)0)) ? | ||
813 | "pass" : "ERROR"); | ||
814 | |||
815 | printk("testing crc32c using update/final:\n"); | ||
816 | |||
817 | pass = 1; /* assume all is well */ | ||
818 | |||
819 | for (i = 0; i < NUMVEC; i++) { | ||
820 | seed = ~(u32)0; | ||
821 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
822 | crypto_digest_init(tfm); | ||
823 | crypto_digest_update(tfm, &sg[i], 1); | ||
824 | crypto_digest_final(tfm, (u8*)&crc); | ||
825 | if (crc == vec_results[i]) { | ||
826 | printk(" %08x:OK", crc); | ||
827 | } else { | ||
828 | printk(" %08x:BAD, wanted %08x\n", crc, vec_results[i]); | ||
829 | pass = 0; | ||
830 | } | ||
831 | } | ||
832 | |||
833 | printk("\ntesting crc32c using incremental accumulator:\n"); | ||
834 | crc = 0; | ||
835 | for (i = 0; i < NUMVEC; i++) { | ||
836 | seed = (crc ^ ~(u32)0); | ||
837 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
838 | crypto_digest_init(tfm); | ||
839 | crypto_digest_update(tfm, &sg[i], 1); | ||
840 | crypto_digest_final(tfm, (u8*)&crc); | ||
841 | } | ||
842 | if (crc == tot_vec_results) { | ||
843 | printk(" %08x:OK", crc); | ||
844 | } else { | ||
845 | printk(" %08x:BAD, wanted %08x\n", crc, tot_vec_results); | ||
846 | pass = 0; | ||
847 | } | ||
848 | |||
849 | printk("\ntesting crc32c using digest:\n"); | ||
850 | seed = ~(u32)0; | ||
851 | (void)crypto_digest_setkey(tfm, (const u8*)&seed, sizeof(u32)); | ||
852 | crypto_digest_init(tfm); | ||
853 | crypto_digest_digest(tfm, sg, NUMVEC, (u8*)&crc); | ||
854 | if (crc == tot_vec_results) { | ||
855 | printk(" %08x:OK", crc); | ||
856 | } else { | ||
857 | printk(" %08x:BAD, wanted %08x\n", crc, tot_vec_results); | ||
858 | pass = 0; | ||
859 | } | ||
860 | |||
861 | printk("\n%s\n", pass ? "pass" : "ERROR"); | ||
862 | |||
863 | crypto_free_tfm(tfm); | ||
864 | printk("crc32c test complete\n"); | ||
865 | } | ||
866 | |||
867 | static void test_available(void) | 765 | static void test_available(void) |
868 | { | 766 | { |
869 | char **name = check; | 767 | char **name = check; |
@@ -969,7 +867,7 @@ static void do_test(void) | |||
969 | test_hash("tgr160", tgr160_tv_template, TGR160_TEST_VECTORS); | 867 | test_hash("tgr160", tgr160_tv_template, TGR160_TEST_VECTORS); |
970 | test_hash("tgr128", tgr128_tv_template, TGR128_TEST_VECTORS); | 868 | test_hash("tgr128", tgr128_tv_template, TGR128_TEST_VECTORS); |
971 | test_deflate(); | 869 | test_deflate(); |
972 | test_crc32c(); | 870 | test_hash("crc32c", crc32c_tv_template, CRC32C_TEST_VECTORS); |
973 | #ifdef CONFIG_CRYPTO_HMAC | 871 | #ifdef CONFIG_CRYPTO_HMAC |
974 | test_hmac("md5", hmac_md5_tv_template, HMAC_MD5_TEST_VECTORS); | 872 | test_hmac("md5", hmac_md5_tv_template, HMAC_MD5_TEST_VECTORS); |
975 | test_hmac("sha1", hmac_sha1_tv_template, HMAC_SHA1_TEST_VECTORS); | 873 | test_hmac("sha1", hmac_sha1_tv_template, HMAC_SHA1_TEST_VECTORS); |
@@ -1065,7 +963,7 @@ static void do_test(void) | |||
1065 | break; | 963 | break; |
1066 | 964 | ||
1067 | case 18: | 965 | case 18: |
1068 | test_crc32c(); | 966 | test_hash("crc32c", crc32c_tv_template, CRC32C_TEST_VECTORS); |
1069 | break; | 967 | break; |
1070 | 968 | ||
1071 | case 19: | 969 | case 19: |