Re: [PATCH 25/26] sctp: Use shash

2016-01-24 Thread David Miller
From: Herbert Xu 
Date: Sun, 24 Jan 2016 21:20:12 +0800

> This patch replaces uses of the long obsolete hash interface with
> shash.
> 
> Signed-off-by: Herbert Xu 

Acked-by: David S. Miller 
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 25/26] sctp: Use shash

2016-01-24 Thread Herbert Xu
This patch replaces uses of the long obsolete hash interface with
shash.

Signed-off-by: Herbert Xu 
---

 include/net/sctp/auth.h|4 +--
 include/net/sctp/structs.h |6 ++---
 net/sctp/auth.c|   36 ---
 net/sctp/endpointola.c |1 
 net/sctp/sm_make_chunk.c   |   51 +
 net/sctp/socket.c  |8 +++
 6 files changed, 57 insertions(+), 49 deletions(-)

diff --git a/include/net/sctp/auth.h b/include/net/sctp/auth.h
index f2d58aa..9b9fb12 100644
--- a/include/net/sctp/auth.h
+++ b/include/net/sctp/auth.h
@@ -31,12 +31,12 @@
 #define __sctp_auth_h__
 
 #include 
-#include 
 
 struct sctp_endpoint;
 struct sctp_association;
 struct sctp_authkey;
 struct sctp_hmacalgo;
+struct crypto_shash;
 
 /*
  * Define a generic struct that will hold all the info
@@ -90,7 +90,7 @@ int sctp_auth_asoc_copy_shkeys(const struct sctp_endpoint *ep,
struct sctp_association *asoc,
gfp_t gfp);
 int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t gfp);
-void sctp_auth_destroy_hmacs(struct crypto_hash *auth_hmacs[]);
+void sctp_auth_destroy_hmacs(struct crypto_shash *auth_hmacs[]);
 struct sctp_hmac *sctp_auth_get_hmac(__u16 hmac_id);
 struct sctp_hmac *sctp_auth_asoc_get_hmac(const struct sctp_association *asoc);
 void sctp_auth_asoc_set_default_hmac(struct sctp_association *asoc,
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 20e7212..6b1e383 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -82,7 +82,7 @@ struct sctp_bind_addr;
 struct sctp_ulpq;
 struct sctp_ep_common;
 struct sctp_ssnmap;
-struct crypto_hash;
+struct crypto_shash;
 
 
 #include 
@@ -166,7 +166,7 @@ struct sctp_sock {
struct sctp_pf *pf;
 
/* Access to HMAC transform. */
-   struct crypto_hash *hmac;
+   struct crypto_shash *hmac;
char *sctp_hmac_alg;
 
/* What is our base endpointer? */
@@ -1235,7 +1235,7 @@ struct sctp_endpoint {
/* SCTP AUTH: array of the HMACs that will be allocated
 * we need this per association so that we don't serialize
 */
-   struct crypto_hash **auth_hmacs;
+   struct crypto_shash **auth_hmacs;
 
/* SCTP-AUTH: hmacs for the endpoint encoded into parameter */
 struct sctp_hmac_algo_param *auth_hmacs_list;
diff --git a/net/sctp/auth.c b/net/sctp/auth.c
index 1543e39..912eb16 100644
--- a/net/sctp/auth.c
+++ b/net/sctp/auth.c
@@ -27,9 +27,9 @@
  *   Vlad Yasevich 
  */
 
+#include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
@@ -448,7 +448,7 @@ struct sctp_shared_key *sctp_auth_get_shkey(
  */
 int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t gfp)
 {
-   struct crypto_hash *tfm = NULL;
+   struct crypto_shash *tfm = NULL;
__u16   id;
 
/* If AUTH extension is disabled, we are done */
@@ -462,9 +462,8 @@ int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t 
gfp)
return 0;
 
/* Allocated the array of pointers to transorms */
-   ep->auth_hmacs = kzalloc(
-   sizeof(struct crypto_hash *) * SCTP_AUTH_NUM_HMACS,
-   gfp);
+   ep->auth_hmacs = kzalloc(sizeof(struct crypto_shash *) *
+SCTP_AUTH_NUM_HMACS, gfp);
if (!ep->auth_hmacs)
return -ENOMEM;
 
@@ -483,8 +482,7 @@ int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t 
gfp)
continue;
 
/* Allocate the ID */
-   tfm = crypto_alloc_hash(sctp_hmac_list[id].hmac_name, 0,
-   CRYPTO_ALG_ASYNC);
+   tfm = crypto_alloc_shash(sctp_hmac_list[id].hmac_name, 0, 0);
if (IS_ERR(tfm))
goto out_err;
 
@@ -500,7 +498,7 @@ out_err:
 }
 
 /* Destroy the hmac tfm array */
-void sctp_auth_destroy_hmacs(struct crypto_hash *auth_hmacs[])
+void sctp_auth_destroy_hmacs(struct crypto_shash *auth_hmacs[])
 {
int i;
 
@@ -508,8 +506,7 @@ void sctp_auth_destroy_hmacs(struct crypto_hash 
*auth_hmacs[])
return;
 
for (i = 0; i < SCTP_AUTH_NUM_HMACS; i++) {
-   if (auth_hmacs[i])
-   crypto_free_hash(auth_hmacs[i]);
+   crypto_free_shash(auth_hmacs[i]);
}
kfree(auth_hmacs);
 }
@@ -709,8 +706,7 @@ void sctp_auth_calculate_hmac(const struct sctp_association 
*asoc,
  struct sctp_auth_chunk *auth,
  gfp_t gfp)
 {
-   struct scatterlist sg;
-   struct hash_desc desc;
+   struct crypto_shash *tfm;
struct sctp_auth_bytes *asoc_key;
__u16 key_id, hmac_id;
__u8 *digest;
@@ -742,16 +738,22 @@ void sctp_auth_calculate_hmac(const struct 
sctp_association *asoc,
 
/* set up scatter list */