Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp363551pxf; Wed, 7 Apr 2021 01:07:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxQj+VQ0bksYBgFriorgSPDgh1fMk/euuZ6IyQxTi5wzNVnCtAzjWkTmKZNmv5vQLPUfR+u X-Received: by 2002:a92:c561:: with SMTP id b1mr1856221ilj.165.1617782834627; Wed, 07 Apr 2021 01:07:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617782834; cv=none; d=google.com; s=arc-20160816; b=hOi0jwKf9ik/J9VoYfEuHhqrEy03aRdumD+5g5Tnlvdq8amverHMjPy6hzmWtyc0SH R5YmUXRGoOilUUjKG4xnwhUbKJRRznOl1zsxAh4784b8GUqvtVqulyP+AySV6xiCIrA5 tNNXo2ZuhCBTuo3DTVP4N0c8and1WPfaqkNtr4/FWwENtNTpcVlWMsKKEWzVjt/oyncN JECccU+FC7FRnz5O/usecgVHlKo2e/ZZMyZVgAMciWYdeYd3AuapkEu/kloeHQKvVe80 HlBn31R31P+lgRPzLEyKxSNAMQz5AqAtUevm92rbhBpzdOPIYrtlsaRB8AcAG4ZqFwKn NTUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:to:from; bh=gm+6bi6v+mLYfJX1lMlECnMzFNfnsO2oahS5mVw3PJs=; b=ktgWeqAAradKZA9tLGR/tT4wC3tpanfRL6E7qqKiYwTRiuyPIvC19f6s216AQmgwC7 erkq7hd1CQG9QzMioznZJb+v+BG0mty2cgfovtzdyLOSJJq4pB/aOoHDE4ucwb6lY+Hc RW8eXH5RG67eohJOp3ytwnIOBALULcTOOUodn0U1m4x1e9NCsYCmRgrnTfmObXGyufKt Apezt+5T/A51g+Ov6OVd305/J6CiG+aMj5lpDrfJPDTswZqkyhUkWGRl9+n1gJJ9JTN1 PKVXxtVkfW8YNhfipZyuT2xGfZkc9zlqCV5AdzQXmYdywpvRgf3hXvXlcsF8VMkzXFmW u2nA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h13si19815731iow.73.2021.04.07.01.07.00; Wed, 07 Apr 2021 01:07:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238051AbhDFSTn (ORCPT + 99 others); Tue, 6 Apr 2021 14:19:43 -0400 Received: from coyote.holtmann.net ([212.227.132.17]:34678 "EHLO mail.holtmann.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238075AbhDFSTl (ORCPT ); Tue, 6 Apr 2021 14:19:41 -0400 Received: from localhost.localdomain (p4ff9f418.dip0.t-ipconnect.de [79.249.244.24]) by mail.holtmann.org (Postfix) with ESMTPSA id 48F6DCECC8 for ; Tue, 6 Apr 2021 20:27:15 +0200 (CEST) From: Marcel Holtmann To: linux-bluetooth@vger.kernel.org Subject: [PATCH v2 5/5] Bluetooth: Allow Microsoft extension to indicate curve validation Date: Tue, 6 Apr 2021 20:19:27 +0200 Message-Id: <20210406181927.313769-5-marcel@holtmann.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Some controllers don't support the Simple Pairing Options feature that can indicate the support for P-192 and P-256 public key validation. However they might support the Microsoft vendor extension that can indicate the validiation capability as well. Signed-off-by: Marcel Holtmann --- include/net/bluetooth/hci_core.h | 1 + net/bluetooth/mgmt.c | 5 ++++- net/bluetooth/msft.c | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 58f7eada26fd..c73ac52af186 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h @@ -584,6 +584,7 @@ struct hci_dev { #if IS_ENABLED(CONFIG_BT_MSFTEXT) __u16 msft_opcode; void *msft_data; + bool msft_curve_validity; #endif #if IS_ENABLED(CONFIG_BT_AOSPEXT) diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index 59f8016c4866..288c1445c232 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -3730,8 +3730,11 @@ static int read_controller_cap(struct sock *sk, struct hci_dev *hdev, /* When the Read Simple Pairing Options command is supported, then * the remote public key validation is supported. + * + * Alternatively, when Microsoft extensions are available, they can + * indicate support for public key validation as well. */ - if (hdev->commands[41] & 0x08) + if ((hdev->commands[41] & 0x08) || hdev->msft_curve_validity) flags |= 0x01; /* Remote public key validation (BR/EDR) */ flags |= 0x02; /* Remote public key validation (LE) */ diff --git a/net/bluetooth/msft.c b/net/bluetooth/msft.c index 47b104f318e9..b1970467a868 100644 --- a/net/bluetooth/msft.c +++ b/net/bluetooth/msft.c @@ -142,6 +142,9 @@ static bool read_supported_features(struct hci_dev *hdev, msft->evt_prefix_len = rp->evt_prefix_len; msft->features = __le64_to_cpu(rp->features); + if (msft->features & MSFT_FEATURE_MASK_CURVE_VALIDITY) + hdev->msft_curve_validity = true; + kfree_skb(skb); return true; -- 2.30.2