Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

5 changed files with 62 additions and 761 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/libmbim-1.28.2.tar.bz2 SOURCES/libmbim-1.32.0.tar.bz2

View File

@ -1 +1 @@
f65d01b90940953f1be540a21401dc40db8da239 SOURCES/libmbim-1.28.2.tar.bz2 c35069fc5b8f69150fe18a3f99fd1142367eb6f4 SOURCES/libmbim-1.32.0.tar.bz2

View File

@ -1,33 +0,0 @@
From 61ba722bb8003902e043ddec589ac7fee042ba5b Mon Sep 17 00:00:00 2001
From: Lubomir Rintel <lkundrak@v3.sk>
Date: Thu, 8 Dec 2022 13:15:18 +0100
Subject: [PATCH] Disable gtk-doc checks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
gtkdoc-check on el8 only supports make, not meson:
8/8 libmbim-glib-doc-check FAIL 0.04s exit status 1
>>> DOC_MODULE=libmbim-glib MALLOC_PERTURB_=253 DOC_MAIN_SGML_FILE=libmbim-glib-docs.xml /usr/bin/gtkdoc-check
――――――――――――――――――――――――――――――――――――― ✀ ―――――――――――――――――――――――――――――――――――――
Cannot find DOC_MODULE in Makefile
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
---
docs/reference/libmbim-glib/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/reference/libmbim-glib/meson.build b/docs/reference/libmbim-glib/meson.build
index 335d860..c203138 100644
--- a/docs/reference/libmbim-glib/meson.build
+++ b/docs/reference/libmbim-glib/meson.build
@@ -69,5 +69,5 @@ gnome.gtkdoc(
fixxref_args: fixxref_args,
content_files: [sections_txt, version_xml],
install: true,
- check: true,
+ check: false,
)
--
2.38.1

View File

@ -1,698 +0,0 @@
From 7665d32526f1192e94db2b4bb3e4e73d6a21f62e Mon Sep 17 00:00:00 2001
From: som <somashekhar.puttagangaiah@intel.com>
Date: Thu, 6 Oct 2022 20:52:18 +0530
Subject: [PATCH] intel-mutual-authentication: new service, fcc-lock
when the device is first shipped or comes out of the factory,
it should be protected with a lock till the device reaches
the end user. This FCC lock feature will ensure the device
is secured till its unlocked.
Co-author: Bestha, Lakshminarayana
(cherry picked from commit 910db9cb2b6fde303d3b4720890cf6dc6fc00880)
---
...m-service-intel-mutual-authentication.json | 23 ++
.../libmbim-glib/libmbim-glib-common.sections | 6 +
.../libmbim-glib/libmbim-glib-docs.xml | 6 +
src/libmbim-glib/generated/meson.build | 1 +
src/libmbim-glib/libmbim-glib.h | 2 +
src/libmbim-glib/mbim-cid.c | 15 ++
src/libmbim-glib/mbim-cid.h | 15 ++
src/libmbim-glib/mbim-message.c | 5 +
src/libmbim-glib/mbim-uuid.c | 14 ++
src/libmbim-glib/mbim-uuid.h | 14 ++
.../mbimcli-intel-mutual-authentication.c | 207 ++++++++++++++++++
src/mbimcli/mbimcli.c | 10 +
src/mbimcli/mbimcli.h | 5 +
src/mbimcli/meson.build | 1 +
14 files changed, 324 insertions(+)
create mode 100644 data/mbim-service-intel-mutual-authentication.json
create mode 100644 src/mbimcli/mbimcli-intel-mutual-authentication.c
diff --git a/data/mbim-service-intel-mutual-authentication.json b/data/mbim-service-intel-mutual-authentication.json
new file mode 100644
index 0000000..d3943a1
--- /dev/null
+++ b/data/mbim-service-intel-mutual-authentication.json
@@ -0,0 +1,23 @@
+[
+ // *********************************************************************************
+ { "type" : "Service",
+ "name" : "Intel Mutual Authentication" },
+
+ // *********************************************************************************
+ { "name" : "FCC Lock",
+ "service" : "Intel Mutual Authentication",
+ "type" : "Command",
+ "since" : "1.30",
+ "query" : [],
+ "set" : [ { "name" : "ResponsePresent",
+ "format" : "guint32",
+ "public-format" : "gboolean" },
+ { "name" : "Response",
+ "format" : "guint32" } ],
+
+ "response" : [ { "name" : "ChallengePresent",
+ "format" : "guint32",
+ "public-format" : "gboolean" },
+ { "name" : "Challenge",
+ "format" : "guint32" } ] }
+]
diff --git a/docs/reference/libmbim-glib/libmbim-glib-common.sections b/docs/reference/libmbim-glib/libmbim-glib-common.sections
index 48f7706..5a29bb5 100644
--- a/docs/reference/libmbim-glib/libmbim-glib-common.sections
+++ b/docs/reference/libmbim-glib/libmbim-glib-common.sections
@@ -33,6 +33,7 @@ MBIM_UUID_MS_UICC_LOW_LEVEL_ACCESS
MBIM_UUID_QUECTEL
MBIM_UUID_INTEL_THERMAL_RF
MBIM_UUID_MS_VOICE_EXTENSIONS
+MBIM_UUID_INTEL_MUTUAL_AUTHENTICATION
<SUBSECTION Methods>
mbim_service_get_string
mbim_service_lookup_name
@@ -75,6 +76,7 @@ MbimCidMsUiccLowLevelAccess
MbimCidQuectel
MbimCidIntelThermalRf
MbimCidMsVoiceExtensions
+MbimCidIntelMutualAuthentication
<SUBSECTION Methods>
mbim_cid_can_set
mbim_cid_can_query
@@ -100,6 +102,7 @@ mbim_cid_ms_uicc_low_level_access_get_string
mbim_cid_quectel_get_string
mbim_cid_intel_thermal_rf_get_string
mbim_cid_ms_voice_extensions_get_string
+mbim_cid_intel_mutual_authentication_get_string
<SUBSECTION Private>
mbim_cid_atds_build_string_from_mask
mbim_cid_basic_connect_build_string_from_mask
@@ -121,6 +124,7 @@ mbim_cid_ms_uicc_low_level_access_build_string_from_mask
mbim_cid_quectel_build_string_from_mask
mbim_cid_intel_thermal_rf_build_string_from_mask
mbim_cid_ms_voice_extensions_build_string_from_mask
+mbim_cid_intel_mutual_authentication_build_string_from_mask
<SUBSECTION Standard>
MBIM_TYPE_CID_ATDS
MBIM_TYPE_CID_AUTH
@@ -142,6 +146,7 @@ MBIM_TYPE_CID_MS_UICC_LOW_LEVEL_ACCESS
MBIM_TYPE_CID_QUECTEL
MBIM_TYPE_CID_INTEL_THERMAL_RF
MBIM_TYPE_CID_MS_VOICE_EXTENSIONS
+MBIM_TYPE_CID_INTEL_MUTUAL_AUTHENTICATION
mbim_cid_atds_get_type
mbim_cid_auth_get_type
mbim_cid_basic_connect_get_type
@@ -162,6 +167,7 @@ mbim_cid_ms_sar_get_type
mbim_cid_quectel_get_type
mbim_cid_intel_thermal_rf_get_type
mbim_cid_ms_voice_extensions_get_type
+mbim_cid_intel_mutual_authentication_get_type
</SECTION>
<SECTION>
diff --git a/docs/reference/libmbim-glib/libmbim-glib-docs.xml b/docs/reference/libmbim-glib/libmbim-glib-docs.xml
index 8b11b72..cc65e64 100644
--- a/docs/reference/libmbim-glib/libmbim-glib-docs.xml
+++ b/docs/reference/libmbim-glib/libmbim-glib-docs.xml
@@ -23,6 +23,7 @@
<year>2019</year>
<year>2020</year>
<year>2021</year>
+ <year>2022</year>
<holder>The libmbim-glib authors</holder>
</copyright>
@@ -103,6 +104,7 @@
<xi:include href="xml/mbim-intel-firmware-update.xml"/>
<xi:include href="xml/mbim-intel-firmware-update-v2.xml"/>
<xi:include href="xml/mbim-intel-thermal-rf.xml"/>
+ <xi:include href="xml/mbim-intel-mutual-authentication.xml"/>
</chapter>
<chapter>
@@ -188,6 +190,10 @@
<title>Index of new symbols in 1.28</title>
<xi:include href="xml/api-index-1.28.xml"></xi:include>
</chapter>
+ <chapter id="api-index-1-30" role="1.30">
+ <title>Index of new symbols in 1.30</title>
+ <xi:include href="xml/api-index-1.30.xml"></xi:include>
+ </chapter>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>
diff --git a/src/libmbim-glib/generated/meson.build b/src/libmbim-glib/generated/meson.build
index 2ec85ea..63fe8d1 100644
--- a/src/libmbim-glib/generated/meson.build
+++ b/src/libmbim-glib/generated/meson.build
@@ -108,6 +108,7 @@ services_data = [
['sms'],
['stk'],
['ussd'],
+ ['intel-mutual-authentication'],
]
foreach service_data: services_data
diff --git a/src/libmbim-glib/libmbim-glib.h b/src/libmbim-glib/libmbim-glib.h
index ff2e468..38d8db4 100644
--- a/src/libmbim-glib/libmbim-glib.h
+++ b/src/libmbim-glib/libmbim-glib.h
@@ -4,6 +4,7 @@
* libmbim-glib -- GLib/GIO based library to control MBIM devices
*
* Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2022 Intel Corporation
*/
#ifndef _LIBMBIM_GLIB_H_
@@ -45,6 +46,7 @@
#include "mbim-quectel.h"
#include "mbim-intel-thermal-rf.h"
#include "mbim-ms-voice-extensions.h"
+#include "mbim-intel-mutual-authentication.h"
/* backwards compatibility */
#include "mbim-compat.h"
diff --git a/src/libmbim-glib/mbim-cid.c b/src/libmbim-glib/mbim-cid.c
index d8aa377..11170b3 100644
--- a/src/libmbim-glib/mbim-cid.c
+++ b/src/libmbim-glib/mbim-cid.c
@@ -4,6 +4,7 @@
* libmbim-glib -- GLib/GIO based library to control MBIM devices
*
* Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2022 Intel Corporation
*/
#include "mbim-cid.h"
@@ -228,6 +229,12 @@ static const CidConfig cid_ms_voice_extensions_config [MBIM_CID_MS_VOICE_EXTENSI
{ NO_SET, QUERY, NOTIFY }, /* MBIM_CID_MS_VOICE_EXTENSIONS_NITZ */
};
+/* Note: index of the array is CID-1 */
+#define MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_LAST MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_FCC_LOCK
+static const CidConfig cid_intel_mutual_authentication_config [MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_LAST] = {
+ { SET, QUERY, NO_NOTIFY }, /* MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_FCC_LOCK */
+};
+
gboolean
mbim_cid_can_set (MbimService service,
guint cid)
@@ -279,6 +286,8 @@ mbim_cid_can_set (MbimService service,
return cid_intel_thermal_rf_config[cid - 1].set;
case MBIM_SERVICE_MS_VOICE_EXTENSIONS:
return cid_ms_voice_extensions_config[cid - 1].set;
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ return cid_intel_mutual_authentication_config[cid - 1].set;
case MBIM_SERVICE_INVALID:
case MBIM_SERVICE_LAST:
default:
@@ -338,6 +347,8 @@ mbim_cid_can_query (MbimService service,
return cid_intel_thermal_rf_config[cid - 1].query;
case MBIM_SERVICE_MS_VOICE_EXTENSIONS:
return cid_ms_voice_extensions_config[cid - 1].query;
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ return cid_intel_mutual_authentication_config[cid - 1].query;
case MBIM_SERVICE_INVALID:
case MBIM_SERVICE_LAST:
default:
@@ -397,6 +408,8 @@ mbim_cid_can_notify (MbimService service,
return cid_intel_thermal_rf_config[cid - 1].notify;
case MBIM_SERVICE_MS_VOICE_EXTENSIONS:
return cid_ms_voice_extensions_config[cid - 1].notify;
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ return cid_intel_mutual_authentication_config[cid - 1].notify;
case MBIM_SERVICE_INVALID:
case MBIM_SERVICE_LAST:
default:
@@ -457,6 +470,8 @@ mbim_cid_get_printable (MbimService service,
return mbim_cid_intel_thermal_rf_get_string (cid);
case MBIM_SERVICE_MS_VOICE_EXTENSIONS:
return mbim_cid_ms_voice_extensions_get_string (cid);
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ return mbim_cid_intel_mutual_authentication_get_string (cid);
case MBIM_SERVICE_LAST:
default:
g_assert_not_reached ();
diff --git a/src/libmbim-glib/mbim-cid.h b/src/libmbim-glib/mbim-cid.h
index c404271..82014db 100644
--- a/src/libmbim-glib/mbim-cid.h
+++ b/src/libmbim-glib/mbim-cid.h
@@ -4,6 +4,7 @@
* libmbim-glib -- GLib/GIO based library to control MBIM devices
*
* Copyright (C) 2013 - 2018 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2022 Intel Corporation
*/
#ifndef _LIBMBIM_GLIB_MBIM_CID_H_
@@ -428,6 +429,20 @@ typedef enum { /*< since=1.28 >*/
MBIM_CID_INTEL_THERMAL_RF_RFIM = 9,
} MbimCidIntelThermalRf;
+/**
+ * MbimCidIntelMutualAuthentication:
+ * @MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_UNKNOWN: Unknown command.
+ * @MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_FCC_LOCK: FCC lock set.
+ *
+ * MBIM commands in the %MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION service.
+ *
+ * Since: 1.30
+ */
+typedef enum { /*< since=1.30 >*/
+ MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_UNKNOWN = 0,
+ MBIM_CID_INTEL_MUTUAL_AUTHENTICATION_FCC_LOCK = 1,
+} MbimCidIntelMutualAuthentication;
+
/**
* MbimCidMsVoiceExtensions:
* @MBIM_CID_MS_VOICE_EXTENSIONS_UNKNOWN: Unknown command.
diff --git a/src/libmbim-glib/mbim-message.c b/src/libmbim-glib/mbim-message.c
index 1b9975d..bead3d2 100644
--- a/src/libmbim-glib/mbim-message.c
+++ b/src/libmbim-glib/mbim-message.c
@@ -5,6 +5,7 @@
*
* Copyright (C) 2013 - 2022 Aleksander Morgado <aleksander@aleksander.es>
* Copyright (C) 2022 Google, Inc.
+ * Copyright (C) 2022 Intel Corporation
*/
#include <glib.h>
@@ -39,6 +40,7 @@
#include "mbim-quectel.h"
#include "mbim-intel-thermal-rf.h"
#include "mbim-ms-voice-extensions.h"
+#include "mbim-intel-mutual-authentication.h"
/*****************************************************************************/
@@ -2201,6 +2203,9 @@ mbim_message_get_printable_full (const MbimMessage *self,
case MBIM_SERVICE_MS_VOICE_EXTENSIONS:
fields_printable = __mbim_message_ms_voice_extensions_get_printable_fields (self, line_prefix, &inner_error);
break;
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ fields_printable = __mbim_message_intel_mutual_authentication_get_printable_fields (self, line_prefix, &inner_error);
+ break;
case MBIM_SERVICE_INVALID:
case MBIM_SERVICE_LAST:
g_assert_not_reached ();
diff --git a/src/libmbim-glib/mbim-uuid.c b/src/libmbim-glib/mbim-uuid.c
index cda7258..fe95923 100644
--- a/src/libmbim-glib/mbim-uuid.c
+++ b/src/libmbim-glib/mbim-uuid.c
@@ -6,6 +6,7 @@
* Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
* Copyright (C) 2014 NVDIA Corporation
* Copyright (C) 2014 Smith Micro Software, Inc.
+ * Copyright (C) 2022 Intel Corporation
*/
#include <config.h>
@@ -256,6 +257,14 @@ static const MbimUuid uuid_ms_voice_extensions = {
.e = { 0x61, 0xcb, 0x03, 0x4a, 0x70, 0x2e }
};
+static const MbimUuid uuid_intel_mutual_authentication = {
+ .a = { 0xf8, 0x5d, 0x46, 0xef },
+ .b = { 0xab, 0x26 },
+ .c = { 0x40, 0x81 },
+ .d = { 0x98, 0x68 },
+ .e = { 0x4d, 0x18, 0x3c, 0x0a, 0x3a, 0xec }
+};
+
static GList *mbim_custom_service_list = NULL;
typedef struct {
@@ -391,6 +400,8 @@ mbim_uuid_from_service (MbimService service)
return &uuid_intel_thermal_rf;
case MBIM_SERVICE_MS_VOICE_EXTENSIONS:
return &uuid_ms_voice_extensions;
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ return &uuid_intel_mutual_authentication;
case MBIM_SERVICE_LAST:
g_assert_not_reached ();
default:
@@ -467,6 +478,9 @@ mbim_uuid_to_service (const MbimUuid *uuid)
if (mbim_uuid_cmp (uuid, &uuid_ms_voice_extensions))
return MBIM_SERVICE_MS_VOICE_EXTENSIONS;
+ if (mbim_uuid_cmp (uuid, &uuid_intel_mutual_authentication))
+ return MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION;
+
for (l = mbim_custom_service_list; l != NULL; l = l->next) {
if (mbim_uuid_cmp (&((MbimCustomService *)l->data)->uuid, uuid))
return ((MbimCustomService *)l->data)->service_id;
diff --git a/src/libmbim-glib/mbim-uuid.h b/src/libmbim-glib/mbim-uuid.h
index 0fe9b05..3d15adf 100644
--- a/src/libmbim-glib/mbim-uuid.h
+++ b/src/libmbim-glib/mbim-uuid.h
@@ -4,6 +4,7 @@
* libmbim-glib -- GLib/GIO based library to control MBIM devices
*
* Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2022 Intel Corporation
*/
#ifndef _LIBMBIM_GLIB_MBIM_UUID_H_
@@ -113,6 +114,7 @@ gboolean mbim_uuid_from_printable (const gchar *str,
* @MBIM_SERVICE_QUECTEL: Quectel specific operations. Since 1.26.2.
* @MBIM_SERVICE_INTEL_THERMAL_RF: Intel thermal rf related commands. Since 1.28
* @MBIM_SERVICE_MS_VOICE_EXTENSIONS: Microsoft Voice extensions service. Since 1.28.
+ * @MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION: Intel mutual authentication commands. Since 1.30.
* @MBIM_SERVICE_LAST: Internal value.
*
* Enumeration of the generic MBIM services.
@@ -141,6 +143,7 @@ typedef enum { /*< since=1.0 >*/
MBIM_SERVICE_QUECTEL = 18,
MBIM_SERVICE_INTEL_THERMAL_RF = 19,
MBIM_SERVICE_MS_VOICE_EXTENSIONS = 20,
+ MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION = 21,
#if defined LIBMBIM_GLIB_COMPILATION
MBIM_SERVICE_LAST /*< skip >*/
#endif
@@ -378,6 +381,17 @@ typedef enum { /*< since=1.0 >*/
*/
#define MBIM_UUID_MS_VOICE_EXTENSIONS mbim_uuid_from_service (MBIM_SERVICE_MS_VOICE_EXTENSIONS)
+/**
+ * MBIM_UUID_INTEL_MUTUAL_AUTHENTICATION:
+ *
+ * Get the UUID of the %MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION service.
+ *
+ * Returns: (transfer none): a #MbimUuid.
+ *
+ * Since: 1.30
+ */
+#define MBIM_UUID_INTEL_MUTUAL_AUTHENTICATION mbim_uuid_from_service (MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION)
+
/**
* mbim_service_lookup_name:
* @service: a MbimService or custom service.
diff --git a/src/mbimcli/mbimcli-intel-mutual-authentication.c b/src/mbimcli/mbimcli-intel-mutual-authentication.c
new file mode 100644
index 0000000..f1f867d
--- /dev/null
+++ b/src/mbimcli/mbimcli-intel-mutual-authentication.c
@@ -0,0 +1,207 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * mbimcli -- Command line interface to control MBIM devices
+ *
+ * Copyright (C) 2022 Intel Corporation
+ */
+
+#include "config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <locale.h>
+#include <string.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#include <libmbim-glib.h>
+
+#include "mbim-common.h"
+#include "mbimcli.h"
+#include "mbimcli-helpers.h"
+
+/* Context */
+typedef struct {
+ MbimDevice *device;
+ GCancellable *cancellable;
+} Context;
+static Context *ctx;
+
+/* Options */
+static gboolean query_fcc_lock_flag;
+static gchar *set_fcc_lock_str;
+
+static GOptionEntry entries[] = {
+ { "query-fcc-lock", 0, 0, G_OPTION_ARG_NONE, &query_fcc_lock_flag,
+ "Query FCC lock information",
+ NULL
+ },
+ { "set-fcc-lock", 0, 0, G_OPTION_ARG_STRING, &set_fcc_lock_str,
+ "Set FCC lock information",
+ "[(ResponsePresent),(Response)]"
+ },
+ {NULL}
+};
+
+GOptionGroup *
+mbimcli_intel_mutual_authentication_get_option_group (void)
+{
+ GOptionGroup *group;
+
+ group = g_option_group_new ("intel-mutual-authentication",
+ "Intel mutual authentication Service options:",
+ "Show Intel mutual authentication Service options",
+ NULL,
+ NULL);
+ g_option_group_add_entries (group, entries);
+
+ return group;
+}
+
+gboolean
+mbimcli_intel_mutual_authentication_options_enabled (void)
+{
+ static guint n_actions = 0;
+ static gboolean checked = FALSE;
+
+ if (checked)
+ return !!n_actions;
+
+ n_actions = (query_fcc_lock_flag +
+ !!set_fcc_lock_str);
+
+ if (n_actions > 1) {
+ g_printerr ("error: too many Intel mutual Authentication actions requested\n");
+ exit (EXIT_FAILURE);
+ }
+
+ checked = TRUE;
+ return !!n_actions;
+}
+
+static void
+context_free (Context *context)
+{
+ if (!context)
+ return;
+
+ if (context->cancellable)
+ g_object_unref (context->cancellable);
+ if (context->device)
+ g_object_unref (context->device);
+ g_slice_free (Context, context);
+}
+
+static void
+shutdown (gboolean operation_status)
+{
+ /* Cleanup context and finish async operation */
+ context_free (ctx);
+ mbimcli_async_operation_done (operation_status);
+}
+
+static void
+query_fcc_lock_ready (MbimDevice *device,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ MbimMessage *response = NULL;
+ GError *error = NULL;
+ gboolean challenge_present = FALSE;
+ guint32 challenge = 0;
+
+ response = mbim_device_command_finish (device, res, &error);
+ if (!response || !mbim_message_response_get_result (response, MBIM_MESSAGE_TYPE_COMMAND_DONE, &error)) {
+ g_printerr ("error: operation failed: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ if (!mbim_message_intel_mutual_authentication_fcc_lock_response_parse (response,
+ &challenge_present,
+ &challenge,
+ &error)) {
+ g_printerr ("error: couldn't parse response message: %s\n", error->message);
+ shutdown (FALSE);
+ return;
+ }
+
+ g_print ("FCC lock status: %s\n", challenge_present ? "locked" : "unlocked");
+ if (challenge_present)
+ g_print ("\tChallenge: %u\n", challenge);
+
+ shutdown (TRUE);
+}
+
+void
+mbimcli_intel_mutual_authentication_run (MbimDevice *device,
+ GCancellable *cancellable)
+{
+ g_autoptr(MbimMessage) request = NULL;
+ g_autoptr(GError) error = NULL;
+
+ /* Initialize context */
+ ctx = g_slice_new (Context);
+ ctx->device = g_object_ref (device);
+ ctx->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
+
+ /* Query FCC lock information */
+ if (query_fcc_lock_flag) {
+ g_debug ("Asynchronously querying FCC lock information...");
+
+ request = mbim_message_intel_mutual_authentication_fcc_lock_query_new (NULL);
+ mbim_device_command (ctx->device,
+ request,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)query_fcc_lock_ready,
+ NULL);
+ return;
+ }
+
+ /* Set FCC lock information */
+ if (set_fcc_lock_str) {
+ gboolean response_present = FALSE;
+ guint32 response = 0;
+ g_auto(GStrv) split = NULL;
+
+ split = g_strsplit (set_fcc_lock_str, ",", -1);
+
+ if (g_strv_length (split) < 2) {
+ g_printerr ("error: couldn't parse input arguments, missing arguments\n");
+ shutdown (FALSE);
+ return;
+ }
+
+ if (g_strv_length (split) > 2) {
+ g_printerr ("error: couldn't parse input arguments, too many arguments\n");
+ shutdown (FALSE);
+ return;
+ }
+
+ if (!mbimcli_read_boolean_from_string (split[0], &response_present)) {
+ g_printerr ("error: couldn't parse input, wrong value given\n");
+ shutdown (FALSE);
+ return;
+ }
+
+ if (!mbimcli_read_uint_from_string (split[1], &response)) {
+ g_printerr ("error: couldn't parse input, wrong value given\n");
+ shutdown (FALSE);
+ return;
+ }
+
+ request = mbim_message_intel_mutual_authentication_fcc_lock_set_new (response_present, response, NULL);
+ mbim_device_command (ctx->device,
+ request,
+ 10,
+ ctx->cancellable,
+ (GAsyncReadyCallback)query_fcc_lock_ready,
+ NULL);
+ return;
+ }
+ g_warn_if_reached ();
+}
diff --git a/src/mbimcli/mbimcli.c b/src/mbimcli/mbimcli.c
index 3c12ac6..496d553 100644
--- a/src/mbimcli/mbimcli.c
+++ b/src/mbimcli/mbimcli.c
@@ -4,6 +4,7 @@
* mbimcli -- Command line interface to control MBIM devices
*
* Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2022 Intel Corporation
*/
#include "config.h"
@@ -311,6 +312,9 @@ device_open_ready (MbimDevice *dev,
case MBIM_SERVICE_MS_UICC_LOW_LEVEL_ACCESS:
mbimcli_ms_uicc_low_level_access_run (dev, cancellable);
return;
+ case MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION:
+ mbimcli_intel_mutual_authentication_run (dev, cancellable);
+ return;
case MBIM_SERVICE_SMS:
case MBIM_SERVICE_USSD:
case MBIM_SERVICE_STK:
@@ -447,6 +451,11 @@ parse_actions (void)
actions_enabled++;
}
+ if (mbimcli_intel_mutual_authentication_options_enabled ()) {
+ service = MBIM_SERVICE_INTEL_MUTUAL_AUTHENTICATION;
+ actions_enabled++;
+ }
+
/* Noop */
if (noop_flag)
actions_enabled++;
@@ -495,6 +504,7 @@ int main (int argc, char **argv)
g_option_context_add_group (context, mbimcli_intel_thermal_rf_get_option_group ());
g_option_context_add_group (context, mbimcli_ms_voice_extensions_get_option_group ());
g_option_context_add_group (context, mbimcli_ms_uicc_low_level_access_get_option_group ());
+ g_option_context_add_group (context, mbimcli_intel_mutual_authentication_get_option_group ());
g_option_context_add_main_entries (context, main_entries, NULL);
if (!g_option_context_parse (context, &argc, &argv, &error)) {
g_printerr ("error: %s\n", error->message);
diff --git a/src/mbimcli/mbimcli.h b/src/mbimcli/mbimcli.h
index e7188e3..7553d3a 100644
--- a/src/mbimcli/mbimcli.h
+++ b/src/mbimcli/mbimcli.h
@@ -4,6 +4,7 @@
* mbimcli -- Command line interface to control MBIM devices
*
* Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2022 Intel Corporation
*/
#include <glib.h>
@@ -30,6 +31,7 @@ GOptionGroup *mbimcli_quectel_get_option_group (void);
GOptionGroup *mbimcli_intel_thermal_rf_get_option_group (void);
GOptionGroup *mbimcli_ms_voice_extensions_get_option_group (void);
GOptionGroup *mbimcli_ms_uicc_low_level_access_get_option_group (void);
+GOptionGroup *mbimcli_intel_mutual_authentication_get_option_group (void);
gboolean mbimcli_basic_connect_options_enabled (void);
gboolean mbimcli_phonebook_options_enabled (void);
@@ -44,6 +46,7 @@ gboolean mbimcli_quectel_options_enabled (void);
gboolean mbimcli_intel_thermal_rf_options_enabled (void);
gboolean mbimcli_ms_voice_extensions_options_enabled (void);
gboolean mbimcli_ms_uicc_low_level_access_options_enabled (void);
+gboolean mbimcli_intel_mutual_authentication_options_enabled (void);
void mbimcli_basic_connect_run (MbimDevice *device,
GCancellable *cancellable);
@@ -71,6 +74,8 @@ void mbimcli_ms_voice_extensions_run (MbimDevice *device,
GCancellable *cancellable);
void mbimcli_ms_uicc_low_level_access_run (MbimDevice *device,
GCancellable *cancellable);
+void mbimcli_intel_mutual_authentication_run (MbimDevice *device,
+ GCancellable *cancellable);
/* link management */
diff --git a/src/mbimcli/meson.build b/src/mbimcli/meson.build
index 2f50b6d..babe487 100644
--- a/src/mbimcli/meson.build
+++ b/src/mbimcli/meson.build
@@ -16,6 +16,7 @@ mbimcli_sources = files(
'mbimcli-ms-voice-extensions.c',
'mbimcli-phonebook.c',
'mbimcli-quectel.c',
+ 'mbimcli-intel-mutual-authentication.c',
)
sources = mbimcli_sources + files(
--
2.38.1

View File

@ -1,17 +1,11 @@
Name: libmbim Name: libmbim
Version: 1.28.2 Version: 1.32.0
Release: 1%{?dist} Release: 1%{?dist}
Summary: Support library for the Mobile Broadband Interface Model protocol Summary: Support library for the Mobile Broadband Interface Model protocol
License: LGPLv2+ License: LGPL-2.1-or-later
URL: https://www.freedesktop.org/wiki/Software/libmbim/ URL: https://gitlab.freedesktop.org/mobile-broadband/libmbim/
Source: https://gitlab.freedesktop.org/mobile-broadband/libmbim/-/archive/%{version}/%{name}-%{version}.tar.bz2 Source: https://gitlab.freedesktop.org/mobile-broadband/libmbim/-/archive/%{version}/%{name}-%{version}.tar.bz2
# rh #2110589 -- FCC unLock support for Dell DW5931e & DW5823e WWAN 5G
Patch0: 0001-intel-mutual-authentication-new-service-fcc-lock.patch
# Not for upstream:
Patch1: 0001-Disable-gtk-doc-checks.patch
BuildRequires: meson >= 0.53 BuildRequires: meson >= 0.53
BuildRequires: gcc BuildRequires: gcc
BuildRequires: glib2-devel >= 2.56 BuildRequires: glib2-devel >= 2.56
@ -40,8 +34,7 @@ applications using MBIM functionality from applications that use glib.
%package utils %package utils
Summary: Utilities to use the MBIM protocol from the command line Summary: Utilities to use the MBIM protocol from the command line
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
Conflicts: %{name} < 1.26.0 License: GPL-2.0-or-later
License: GPLv2+
%description utils %description utils
This package contains the utilities that make it easier to use MBIM This package contains the utilities that make it easier to use MBIM
@ -58,15 +51,13 @@ functionality from the command line.
# We'll just install the bash-completion file ourselves. # We'll just install the bash-completion file ourselves.
%meson -Dgtk_doc=true -Dbash_completion=false %meson -Dgtk_doc=true -Dbash_completion=false
%meson_build %meson_build
%ninja_build -C %{_vpath_builddir} libmbim-glib-doc
%install %install
%meson_install %meson_install
find %{buildroot}%{_datadir}/gtk-doc |xargs touch --reference meson.build find %{buildroot}%{_datadir}/gtk-doc |xargs touch --reference meson.build
find %{buildroot} -type f -name "*.la" -delete mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
mkdir -p %{buildroot}%{_datadir}/bash-completion cp -a src/mbimcli/mbimcli %{buildroot}%{_datadir}/bash-completion/completions/
cp -a src/mbimcli/mbimcli %{buildroot}%{_datadir}/bash-completion
%check %check
@ -101,33 +92,74 @@ cp -a src/mbimcli/mbimcli %{buildroot}%{_datadir}/bash-completion
%changelog %changelog
* Wed Aug 13 2025 Lubomir Rintel <lkundrak@v3.sk> - 1.32.0-1
- Update to 1.32 (RHEL-101709)
* Thu Mar 06 2025 Lubomir Rintel <lkundrak@v3.sk> - 1.30.0-1
- Update to 1.30.0
* Mon Jan 02 2023 Lubomir Rintel <lkundrak@v3.sk> - 1.28.2-2
- Patch for Dell DW5931e enablement
* Tue Nov 22 2022 Lubomir Rintel <lkundrak@v3.sk> - 1.28.2-1 * Tue Nov 22 2022 Lubomir Rintel <lkundrak@v3.sk> - 1.28.2-1
- Update to 1.28.2 - Update to 1.28.2
* Thu Oct 7 2021 Ana Cabral <acabral@redhat.com> - 1.26.0-2 * Wed Sep 15 2021 Wen Liang <wenliang@redhat.com> - 1.26.0-2
- Add Conflicts tag because the bash-completion scripts moved - Add Conflicts tag because the bash-completion scripts moved from the main package
from the main package to the utils sub package causing a file to the utils sub package causing a file conflict on multilib systems between the
conflict on multilib systems between the old 32 bit main old 32 bit main package and the new 64 bit utils sub package.
package and the new 64 bit utils sub package.
* Thu Sep 30 2021 Ana Cabral <acabral@redhat.com> - 1.26.0-1 * Wed Sep 8 2021 Wen Liang <wenliang@redhat.com> - 1.26.0-1
- Upgrade to 1.26.0 release - Update to 1.26.0
* Fri Nov 29 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.20.2-1 * Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 1.24.4-4
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 1.24.4-3
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.24.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Nov 3 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 1.24.4-1
- Update to 1.24.4
* Mon Jul 27 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 1.24.2-1
- Update to 1.24.2
* Thu Mar 5 2020 Peter Robinson <pbrobinson@fedoraproject.org> 1.22.0-1
- Update to 1.22.0 release
- Fix shipped license, use %%license
- Spec cleanups
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.20.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Nov 29 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.20.2
- Update to 1.20.2 release - Update to 1.20.2 release
* Wed Oct 16 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.20.0-1 * Mon Sep 23 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.20.0
- Update to 1.20.0 release - Update to 1.20.0 release
* Thu May 23 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.18.2-3 * Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.2-3
- Regenerate manuals that are broken in dist - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed May 22 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.18.2-2 * Thu May 23 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.18.2-2
- A happy little rebuild - Regenerate manuals that are broken in dist
* Mon May 06 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.18.2-1 * Mon May 06 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.18.2-1
- Update to 1.18.2 release - Update to 1.18.2 release
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.18.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Jan 15 2019 Lubomir Rintel <lkundrak@v3.sk> - 1.18.0-1
- Update to 1.18.0 release
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.16.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Mar 15 2018 Iryna Shcherbina <ishcherb@redhat.com> - 1.16.0-3 * Thu Mar 15 2018 Iryna Shcherbina <ishcherb@redhat.com> - 1.16.0-3
- Update Python 2 dependency declarations to new packaging standards - Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)