Whamcloud - gitweb
LU-10560 libcfs: handle rename to wait_queue_entry_t
[fs/lustre-release.git] / libcfs / include / libcfs / libcfs_crypto.h
index 10f94d3..ea9234a 100644 (file)
@@ -23,6 +23,8 @@
 
 /*
  * Copyright 2012 Xyratex Technology Limited
+ *
+ * Copyright (c) 2014, Intel Corporation.
  */
 
 #ifndef _LIBCFS_CRYPTO_H
@@ -40,27 +42,69 @@ enum cfs_crypto_hash_alg {
        CFS_HASH_ALG_NULL       = 0,
        CFS_HASH_ALG_ADLER32,
        CFS_HASH_ALG_CRC32,
+       CFS_HASH_ALG_CRC32C,
+       /* hashes before here will be speed-tested at module load */
        CFS_HASH_ALG_MD5,
        CFS_HASH_ALG_SHA1,
        CFS_HASH_ALG_SHA256,
        CFS_HASH_ALG_SHA384,
        CFS_HASH_ALG_SHA512,
-       CFS_HASH_ALG_CRC32C,
        CFS_HASH_ALG_MAX,
+       CFS_HASH_ALG_SPEED_MAX = CFS_HASH_ALG_MD5,
        CFS_HASH_ALG_UNKNOWN    = 0xff
 };
 
 static struct cfs_crypto_hash_type hash_types[] = {
-       [CFS_HASH_ALG_NULL]     = { "null",      0,      0 },
-       [CFS_HASH_ALG_ADLER32]  = { "adler32",   1,      4 },
-       [CFS_HASH_ALG_CRC32]    = { "crc32",    ~0,      4 },
-       [CFS_HASH_ALG_CRC32C]   = { "crc32c",   ~0,      4 },
-       [CFS_HASH_ALG_MD5]      = { "md5",       0,     16 },
-       [CFS_HASH_ALG_SHA1]     = { "sha1",      0,     20 },
-       [CFS_HASH_ALG_SHA256]   = { "sha256",    0,     32 },
-       [CFS_HASH_ALG_SHA384]   = { "sha384",    0,     48 },
-       [CFS_HASH_ALG_SHA512]   = { "sha512",    0,     64 },
-       [CFS_HASH_ALG_MAX]      = { NULL,        0,     64 },
+       [CFS_HASH_ALG_NULL] = {
+               .cht_name       = "null",
+               .cht_key        = 0,
+               .cht_size       = 0
+       },
+       [CFS_HASH_ALG_ADLER32] = {
+               .cht_name       = "adler32",
+               .cht_key        = 1,
+               .cht_size       = 4
+       },
+       [CFS_HASH_ALG_CRC32] = {
+               .cht_name       = "crc32",
+               .cht_key        = ~0,
+               .cht_size       = 4
+       },
+       [CFS_HASH_ALG_CRC32C] = {
+               .cht_name       = "crc32c",
+               .cht_key        = ~0,
+               .cht_size       = 4
+       },
+       [CFS_HASH_ALG_MD5] = {
+               .cht_name       = "md5",
+               .cht_key        = 0,
+               .cht_size       = 16
+       },
+       [CFS_HASH_ALG_SHA1] = {
+               .cht_name       = "sha1",
+               .cht_key        = 0,
+               .cht_size       = 20
+       },
+       [CFS_HASH_ALG_SHA256] = {
+               .cht_name       = "sha256",
+               .cht_key        = 0,
+               .cht_size       = 32
+       },
+       [CFS_HASH_ALG_SHA384] = {
+               .cht_name       = "sha384",
+               .cht_key        = 0,
+               .cht_size       = 48
+       },
+       [CFS_HASH_ALG_SHA512] = {
+               .cht_name       = "sha512",
+               .cht_key        = 0,
+               .cht_size       = 64
+       },
+       [CFS_HASH_ALG_MAX] = {
+               .cht_name       = NULL,
+               .cht_key        = 0,
+               .cht_size       = 64
+       }
 };
 
 /* Maximum size of hash_types[].cht_size */
@@ -115,7 +159,8 @@ char *cfs_crypto_hash_name(enum cfs_crypto_hash_alg hash_alg)
  * \retval             hash algorithm digest size in bytes
  * \retval             0 if hash algorithm type is unknown
  */
-static inline int cfs_crypto_hash_digestsize(enum cfs_crypto_hash_alg hash_alg)
+static inline
+unsigned int cfs_crypto_hash_digestsize(enum cfs_crypto_hash_alg hash_alg)
 {
        const struct cfs_crypto_hash_type *ht;
 
@@ -150,6 +195,7 @@ int cfs_crypto_hash_digest(enum cfs_crypto_hash_alg hash_alg,
 
 /* cfs crypto hash descriptor */
 struct cfs_crypto_hash_desc;
+struct page;
 
 struct cfs_crypto_hash_desc *
        cfs_crypto_hash_init(enum cfs_crypto_hash_alg hash_alg,