Commit 75b93c63 authored by Eric Biggers's avatar Eric Biggers Committed by Herbert Xu
Browse files

sctp: use crypto_shash_tfm_digest()



Instead of manually allocating a 'struct shash_desc' on the stack and
calling crypto_shash_digest(), switch to using the new helper function
crypto_shash_tfm_digest() which does this for us.

Cc: linux-sctp@vger.kernel.org
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent ec0bf6ed
Loading
Loading
Loading
Loading
+2 −8
Original line number Diff line number Diff line
@@ -741,14 +741,8 @@ void sctp_auth_calculate_hmac(const struct sctp_association *asoc,
	if (crypto_shash_setkey(tfm, &asoc_key->data[0], asoc_key->len))
		goto free;

	{
		SHASH_DESC_ON_STACK(desc, tfm);

		desc->tfm = tfm;
		crypto_shash_digest(desc, (u8 *)auth,
				    end - (unsigned char *)auth, digest);
		shash_desc_zero(desc);
	}
	crypto_shash_tfm_digest(tfm, (u8 *)auth, end - (unsigned char *)auth,
				digest);

free:
	if (free_key)
+8 −15
Original line number Diff line number Diff line
@@ -1666,17 +1666,14 @@ static struct sctp_cookie_param *sctp_pack_cookie(
	       ntohs(init_chunk->chunk_hdr->length), raw_addrs, addrs_len);

	if (sctp_sk(ep->base.sk)->hmac) {
		SHASH_DESC_ON_STACK(desc, sctp_sk(ep->base.sk)->hmac);
		struct crypto_shash *tfm = sctp_sk(ep->base.sk)->hmac;
		int err;

		/* Sign the message.  */
		desc->tfm = sctp_sk(ep->base.sk)->hmac;

		err = crypto_shash_setkey(desc->tfm, ep->secret_key,
		err = crypto_shash_setkey(tfm, ep->secret_key,
					  sizeof(ep->secret_key)) ?:
		      crypto_shash_digest(desc, (u8 *)&cookie->c, bodysize,
		      crypto_shash_tfm_digest(tfm, (u8 *)&cookie->c, bodysize,
					      cookie->signature);
		shash_desc_zero(desc);
		if (err)
			goto free_cookie;
	}
@@ -1737,17 +1734,13 @@ struct sctp_association *sctp_unpack_cookie(

	/* Check the signature.  */
	{
		SHASH_DESC_ON_STACK(desc, sctp_sk(ep->base.sk)->hmac);
		struct crypto_shash *tfm = sctp_sk(ep->base.sk)->hmac;
		int err;

		desc->tfm = sctp_sk(ep->base.sk)->hmac;

		err = crypto_shash_setkey(desc->tfm, ep->secret_key,
		err = crypto_shash_setkey(tfm, ep->secret_key,
					  sizeof(ep->secret_key)) ?:
		      crypto_shash_digest(desc, (u8 *)bear_cookie, bodysize,
		      crypto_shash_tfm_digest(tfm, (u8 *)bear_cookie, bodysize,
					      digest);
		shash_desc_zero(desc);

		if (err) {
			*error = -SCTP_IERROR_NOMEM;
			goto fail;