Commit dd1c537b authored by Eric Biggers's avatar Eric Biggers Committed by Steve French
Browse files

smb: client: Make generate_key() return void



Since the crypto library API is now being used instead of crypto_shash,
generate_key() can no longer fail.  Make it return void and simplify the
callers accordingly.

Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
Signed-off-by: default avatarEric Biggers <ebiggers@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 4c1c0782
Loading
Loading
Loading
Loading
+16 −29
Original line number Diff line number Diff line
@@ -251,7 +251,7 @@ smb2_calc_signature(struct smb_rqst *rqst, struct TCP_Server_Info *server,
	return rc;
}

static int generate_key(struct cifs_ses *ses, struct kvec label,
static void generate_key(struct cifs_ses *ses, struct kvec label,
			 struct kvec context, __u8 *key, unsigned int key_size)
{
	unsigned char zero = 0x0;
@@ -281,7 +281,6 @@ static int generate_key(struct cifs_ses *ses, struct kvec label,
	hmac_sha256_final(&hmac_ctx, prfhash);

	memcpy(key, prfhash, key_size);
	return 0;
}

struct derivation {
@@ -300,7 +299,6 @@ generate_smb3signingkey(struct cifs_ses *ses,
			struct TCP_Server_Info *server,
			const struct derivation_triplet *ptriplet)
{
	int rc;
	bool is_binding = false;
	int chan_index = 0;

@@ -331,19 +329,14 @@ generate_smb3signingkey(struct cifs_ses *ses,
	 */

	if (is_binding) {
		rc = generate_key(ses, ptriplet->signing.label,
		generate_key(ses, ptriplet->signing.label,
			     ptriplet->signing.context,
			     ses->chans[chan_index].signkey,
			     SMB3_SIGN_KEY_SIZE);
		if (rc)
			return rc;
	} else {
		rc = generate_key(ses, ptriplet->signing.label,
		generate_key(ses, ptriplet->signing.label,
			     ptriplet->signing.context,
				  ses->smb3signingkey,
				  SMB3_SIGN_KEY_SIZE);
		if (rc)
			return rc;
			     ses->smb3signingkey, SMB3_SIGN_KEY_SIZE);

		/* safe to access primary channel, since it will never go away */
		spin_lock(&ses->chan_lock);
@@ -351,18 +344,12 @@ generate_smb3signingkey(struct cifs_ses *ses,
		       SMB3_SIGN_KEY_SIZE);
		spin_unlock(&ses->chan_lock);

		rc = generate_key(ses, ptriplet->encryption.label,
		generate_key(ses, ptriplet->encryption.label,
			     ptriplet->encryption.context,
				  ses->smb3encryptionkey,
				  SMB3_ENC_DEC_KEY_SIZE);
		if (rc)
			return rc;
		rc = generate_key(ses, ptriplet->decryption.label,
			     ses->smb3encryptionkey, SMB3_ENC_DEC_KEY_SIZE);
		generate_key(ses, ptriplet->decryption.label,
			     ptriplet->decryption.context,
				  ses->smb3decryptionkey,
				  SMB3_ENC_DEC_KEY_SIZE);
		if (rc)
			return rc;
			     ses->smb3decryptionkey, SMB3_ENC_DEC_KEY_SIZE);
	}

#ifdef CONFIG_CIFS_DEBUG_DUMP_KEYS
@@ -391,7 +378,7 @@ generate_smb3signingkey(struct cifs_ses *ses,
				SMB3_GCM128_CRYPTKEY_SIZE, ses->smb3decryptionkey);
	}
#endif
	return rc;
	return 0;
}

int