Commit 68577d33 authored by Krzysztof Karas's avatar Krzysztof Karas Committed by Konrad Sztyber
Browse files

nvme_tcp: add missing increment of pos index



Retained PSK derivation routine is missing a single
increment to the `pos` index, which is used to construct
HKDF info label for OpenSSL functions.

Change the way we calculate final size of HKDF info
label to match rest of the operations on this buffer.

Additionally, split acquiring PSK retained size and checking
its value in tcp_ut.

Change-Id: Ibd9feb884d618e7664cdb59950219367d7b9510b
Signed-off-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18207


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
parent 088e78d3
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -617,11 +617,12 @@ nvme_tcp_derive_retained_psk(const char *psk_in, const char *hostnqn, uint8_t *p
	hkdf_info[pos] = (uint8_t)labellen;
	pos += sizeof(uint8_t);
	memcpy(&hkdf_info[pos], label, labellen);
	pos += labellen;
	hkdf_info[pos] = (uint8_t)nqnlen;
	pos += sizeof(uint8_t);
	memcpy(&hkdf_info[pos], hostnqn, nqnlen);

	hkdf_info_size = pos * sizeof(uint8_t) + nqnlen;
	pos += nqnlen;
	hkdf_info_size = pos;

	if (sha256_digest_len > psk_out_len) {
		SPDK_ERRLOG("Insufficient buffer size for out key!\n");
+3 −2
Original line number Diff line number Diff line
@@ -1366,8 +1366,9 @@ test_nvmf_tcp_tls_generate_retained_psk(void)
	int retained_size;

	/* Make sure that retained PSKs are different with different input PSKs. */
	CU_ASSERT((retained_size = nvme_tcp_derive_retained_psk(psk_reference1,
				   hostnqn, psk_retained1, SPDK_TLS_PSK_MAX_LEN)) > 0);
	retained_size = nvme_tcp_derive_retained_psk(psk_reference1, hostnqn, psk_retained1,
			SPDK_TLS_PSK_MAX_LEN);
	CU_ASSERT(retained_size > 0);
	CU_ASSERT(nvme_tcp_derive_retained_psk(psk_reference2, hostnqn, psk_retained2,
					       SPDK_TLS_PSK_MAX_LEN) > 0);
	CU_ASSERT(memcmp(psk_retained1, psk_retained2, retained_size) != 0);