From a56a776d4199568657f10248d387c87e40c508fc Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler@theqtcompany.com>
Date: Thu, 4 Feb 2016 14:52:46 +0100
Subject: [PATCH] Bluetooth LE: Add configure test for Linux crypto API.

These files were forgotten in commit c516f6157a.

Change-Id: I87bd57545b8873fc0aa00751058be604588daffe
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
---
 .../linux_crypto_api/linux_crypto_api.pro     |  5 +++
 config.tests/linux_crypto_api/main.cpp        | 41 +++++++++++++++++++
 .../test/test.pro                             |  1 +
 .../tst_qlowenergycontroller-gattserver.cpp   |  5 ++-
 4 files changed, 50 insertions(+), 2 deletions(-)
 create mode 100644 config.tests/linux_crypto_api/linux_crypto_api.pro
 create mode 100644 config.tests/linux_crypto_api/main.cpp

diff --git a/config.tests/linux_crypto_api/linux_crypto_api.pro b/config.tests/linux_crypto_api/linux_crypto_api.pro
new file mode 100644
index 00000000..7dff17fa
--- /dev/null
+++ b/config.tests/linux_crypto_api/linux_crypto_api.pro
@@ -0,0 +1,5 @@
+TEMPLATE = app
+
+TARGET = linux_crypto_api
+
+SOURCES += main.cpp
diff --git a/config.tests/linux_crypto_api/main.cpp b/config.tests/linux_crypto_api/main.cpp
new file mode 100644
index 00000000..0a392fb6
--- /dev/null
+++ b/config.tests/linux_crypto_api/main.cpp
@@ -0,0 +1,41 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtConnectivity module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <linux/if_alg.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+int main()
+{
+    sockaddr_alg sa;
+    sa.salg_family = AF_ALG;
+    sa.salg_type[0] = 0;
+    sa.salg_name[0] = 0;
+    setsockopt(3, 279 /* SOL_ALG */, ALG_SET_KEY, "dummy", 5);
+}
diff --git a/tests/auto/qlowenergycontroller-gattserver/test/test.pro b/tests/auto/qlowenergycontroller-gattserver/test/test.pro
index 8c95106f..45cff660 100644
--- a/tests/auto/qlowenergycontroller-gattserver/test/test.pro
+++ b/tests/auto/qlowenergycontroller-gattserver/test/test.pro
@@ -4,5 +4,6 @@ TARGET = tst_qlowenergycontroller-gattserver
 CONFIG += testcase c++11
 
 config_linux_crypto_api:DEFINES += CONFIG_LINUX_CRYPTO_API
+config_bluez_le:DEFINES += CONFIG_BLUEZ_LE
 
 SOURCES += tst_qlowenergycontroller-gattserver.cpp
diff --git a/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp b/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp
index 25cbc17a..5acffcab 100644
--- a/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp
+++ b/tests/auto/qlowenergycontroller-gattserver/test/tst_qlowenergycontroller-gattserver.cpp
@@ -154,7 +154,7 @@ void TestQLowEnergyControllerGattServer::advertisingData()
 
 void TestQLowEnergyControllerGattServer::cmacVerifier()
 {
-#ifdef CONFIG_LINUX_CRYPTO_API
+#if defined(CONFIG_LINUX_CRYPTO_API) && defined(QT_BUILD_INTERNAL) && defined(CONFIG_BLUEZ_LE)
     // Test data comes from spec v4.2, Vol 3, Part H, Appendix D.1
     const quint128 csrk = {
         { 0x3c, 0x4f, 0xcf, 0x09, 0x88, 0x15, 0xf7, 0xab,
@@ -165,7 +165,8 @@ void TestQLowEnergyControllerGattServer::cmacVerifier()
     const bool success = LeCmacVerifier().verify(message, csrk, expectedMac);
     QVERIFY(success);
 #else // CONFIG_LINUX_CRYPTO_API
-    QSKIP("CMAC verification test only applicable on Linux with crypto API");
+    QSKIP("CMAC verification test only applicable for developer builds on Linux "
+          "with BlueZ and crypto API");
 #endif // Q_OS_LINUX
 }
 
-- 
GitLab