get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.2/patches/2226384/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2226384,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2226384/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/hostap/patch/20260422122424.43776-38-andrei.otcheretianski@intel.com/",
    "project": {
        "id": 22,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/22/?format=api",
        "name": "HostAP Development",
        "link_name": "hostap",
        "list_id": "hostap.lists.infradead.org",
        "list_email": "hostap@lists.infradead.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260422122424.43776-38-andrei.otcheretianski@intel.com>",
    "list_archive_url": null,
    "date": "2026-04-22T12:23:28",
    "name": "[37/92] NAN: Handle followup frame after pairing is completed",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "021060479e827db976c4fcc14fef843d25c0d92b",
    "submitter": {
        "id": 62065,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/62065/?format=api",
        "name": "Andrei Otcheretianski",
        "email": "andrei.otcheretianski@intel.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/hostap/patch/20260422122424.43776-38-andrei.otcheretianski@intel.com/mbox/",
    "series": [
        {
            "id": 501001,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/501001/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/hostap/list/?series=501001",
            "date": "2026-04-22T12:23:05",
            "name": "Add NAN PASN pairing support",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/501001/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2226384/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2226384/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "\n <hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=awCkZH61;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=Y2oKiX+W;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0z5B1H5Pz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 22:27:42 +1000 (AEST)",
            "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wFWfZ-0000000A5Y8-1utB;\n\tWed, 22 Apr 2026 12:27:05 +0000",
            "from mgamail.intel.com ([192.198.163.17])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1wFWeC-0000000A34C-14r3\n\tfor hostap@lists.infradead.org;\n\tWed, 22 Apr 2026 12:25:52 +0000",
            "from orviesa010.jf.intel.com ([10.64.159.150])\n  by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 22 Apr 2026 05:25:35 -0700",
            "from iapp347.iil.intel.com (HELO 87c02287900a.iil.intel.com)\n ([10.167.28.6])\n  by orviesa010-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 22 Apr 2026 05:25:34 -0700"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:\n\tMessage-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=e6g60p/t6nvR8XQmZPGB2tj6JWyE9j3vibWc2RPodTg=; b=awCkZH61sElfJO\n\tpHlkkCVSZ26mHf7IB2qw2wJBSLn2fpoMqoXS7dhc76HoAFjF1piYwR+GVpMV9wJzyZUOcHqHZXvfG\n\tvgBl9aOqpuAzd+2mgi/vyJAfMgfbyvIi5Z1/NQ4MT3NYz/3XyljV0qmHP2Z6Cob3JSe9Nf0G+Fiq/\n\tNqY4RmTtUXIdR7GNhyBaBVgcTr7pn7+kztpGvkEQwAv7M21p9JXr2Hu3zT/3iVrza/ZMzZD6sHShX\n\tU/pAlCMtTVvK8JkCiQwE1kmCw7JPftLqRf8zrklQ7blRktgFG3y4S0Ch1m4KBRQpPzmqWDpQxSF51\n\tuLwxB5Gm6KM5CHtdyYHA==;",
            "v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1776860740; x=1808396740;\n  h=from:to:cc:subject:date:message-id:in-reply-to:\n   references:mime-version:content-transfer-encoding;\n  bh=Q/gkj0p3m/9IXOv3RFbvM2fnGGrtr6XjdxRx7iaZMDA=;\n  b=Y2oKiX+WHzXv2kRTLhFOj4WCFKIBLgP7hk5tU8s/cg5v0XMVpajl4MbA\n   Olcn9qbVPx+S3TqWw4L/1V2jqqzYTJCrLveEOxVcbZ5i7M19v0o09Yw7A\n   /F+Mk0xh3i4HKO4p5JJjEqIhiAyk7KwndhHDn0124+9Jx9fQhf4iL0lhb\n   EzT9TXhDAvhNOhKqvm5d3mz/lNK+ginfg+32cnaf3gBEPbIOERMrvpxNF\n   +IzybdmajrjmGPIDNsbROV2RsBbUpr5mSU5zfdVYpFOGUzR434R67D8cD\n   cYoLcEzp31mT4VSOyqvCveGEEiBtgr+/8k1AZlzUqohH0VjLvxUFW+Lvq\n   w==;"
        ],
        "X-CSE-ConnectionGUID": [
            "boSBan71RdG8ZQ8L9kHT9A==",
            "psZrShVkQn2mo2q2IjX14w=="
        ],
        "X-CSE-MsgGUID": [
            "6CKZxx0ZT/u8NlMUqdFTow==",
            "T01519GcQr+3Kx3d8hZDtw=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6800,10657,11764\"; a=\"77687326\"",
            "E=Sophos;i=\"6.23,192,1770624000\";\n   d=\"scan'208\";a=\"77687326\"",
            "E=Sophos;i=\"6.23,192,1770624000\";\n   d=\"scan'208\";a=\"231445009\""
        ],
        "X-ExtLoop1": "1",
        "From": "Andrei Otcheretianski <andrei.otcheretianski@intel.com>",
        "To": "hostap@lists.infradead.org",
        "Cc": "vamsin@qti.qualcomm.com,\n\tmaheshkkv@google.com,\n\tAvraham Stern <avraham.stern@intel.com>",
        "Subject": "[PATCH 37/92] NAN: Handle followup frame after pairing is completed",
        "Date": "Wed, 22 Apr 2026 15:23:28 +0300",
        "Message-ID": "<20260422122424.43776-38-andrei.otcheretianski@intel.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "In-Reply-To": "<20260422122424.43776-1-andrei.otcheretianski@intel.com>",
        "References": "<20260422122424.43776-1-andrei.otcheretianski@intel.com>",
        "MIME-Version": "1.0",
        "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ",
        "X-CRM114-CacheID": "sfid-20260422_052540_618281_0C65CEEA ",
        "X-CRM114-Status": "GOOD (  17.83  )",
        "X-Spam-Score": "-4.4 (----)",
        "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam.  The original\n message has been attached to this so you can view it or label\n similar future email.  If you have any questions, see\n the administrator of that system for details.\n Content preview:  From: Avraham Stern <avraham.stern@intel.com> After NAN\n pairing\n    is completed, both sides send a followup frame with their NIK. Parse the\n   received NIK and add it to the cache together with the NPK derived during\n   pairing.\n Content analysis details:   (-4.4 points, 5.0 required)\n  pts rule name              description\n ---- ----------------------\n --------------------------------------------------\n -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,\n                             medium trust\n                             [192.198.163.17 listed in list.dnswl.org]\n  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record\n -0.0 SPF_PASS               SPF: sender matches SPF record\n -0.1 DKIM_VALID             Message has at least one valid DKIM or DK\n signature\n -0.1 DKIM_VALID_AU          Message has a valid DKIM or DK signature from\n author's\n                             domain\n -0.1 DKIM_VALID_EF          Message has a valid DKIM or DK signature from\n                             envelope-from domain\n  0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n not necessarily valid\n -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n                             [score: 0.0000]\n -0.0 DKIMWL_WL_HIGH         DKIMwl.org - High trust sender",
        "X-BeenThere": "hostap@lists.infradead.org",
        "X-Mailman-Version": "2.1.34",
        "Precedence": "list",
        "List-Id": "<hostap.lists.infradead.org>",
        "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.infradead.org/pipermail/hostap/>",
        "List-Post": "<mailto:hostap@lists.infradead.org>",
        "List-Help": "<mailto:hostap-request@lists.infradead.org?subject=help>",
        "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/hostap>,\n <mailto:hostap-request@lists.infradead.org?subject=subscribe>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Sender": "\"Hostap\" <hostap-bounces@lists.infradead.org>",
        "Errors-To": "hostap-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org"
    },
    "content": "From: Avraham Stern <avraham.stern@intel.com>\n\nAfter NAN pairing is completed, both sides send a followup frame with\ntheir NIK. Parse the received NIK and add it to the cache together\nwith the NPK derived during pairing.\n\nSigned-off-by: Avraham Stern <avraham.stern@intel.com>\n---\n src/nan/nan.c         |  17 ++---\n src/nan/nan.h         |  18 ++++++\n src/nan/nan_i.h       |   3 +\n src/nan/nan_pairing.c | 146 ++++++++++++++++++++++++++++++++++++++++++\n 4 files changed, 176 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/src/nan/nan.c b/src/nan/nan.c\nindex 30dcf6a614..9602f0553d 100644\n--- a/src/nan/nan.c\n+++ b/src/nan/nan.c\n@@ -1303,7 +1303,7 @@ bool nan_process_followup(struct nan_data *nan, const u8 *addr, const u8 *buf,\n \t\t\t  size_t len, u8 req_instance_id, int handle)\n {\n \tstruct nan_attrs attrs;\n-\tbool ret;\n+\tbool ret = false;\n \n \tif (nan_parse_attrs(nan, buf, len, &attrs)) {\n \t\twpa_printf(MSG_DEBUG,\n@@ -1311,13 +1311,14 @@ bool nan_process_followup(struct nan_data *nan, const u8 *addr, const u8 *buf,\n \t\treturn false;\n \t}\n \n-\tif (!attrs.npba || !attrs.npba_len) {\n-\t\tnan_attrs_clear(nan, &attrs);\n-\t\treturn false;\n-\t}\n-\n-\tret = nan_bootstrap_handle_rx(nan, addr, attrs.npba, attrs.npba_len,\n-\t\t\t\t      buf, len, handle, req_instance_id);\n+\tif (attrs.npba && attrs.npba_len)\n+\t\tret = nan_bootstrap_handle_rx(nan, addr, attrs.npba,\n+\t\t\t\t\t      attrs.npba_len, buf, len, handle,\n+\t\t\t\t\t      req_instance_id);\n+\telse if (attrs.shared_key_desc)\n+\t\tret = nan_pairing_followup_rx(nan, addr,\n+\t\t\t\t\t      (void *)attrs.shared_key_desc,\n+\t\t\t\t\t      attrs.shared_key_desc_len);\n \n \tnan_attrs_clear(nan, &attrs);\n \treturn ret;\ndiff --git a/src/nan/nan.h b/src/nan/nan.h\nindex 65075c1508..6e16e006c3 100644\n--- a/src/nan/nan.h\n+++ b/src/nan/nan.h\n@@ -622,6 +622,24 @@ struct nan_config {\n \t */\n \tint (*pairing_result_cb)(void *ctx, const u8 *peer_addr, int akmp,\n \t\t\t\t int cipher, u8 status, struct wpa_ptk *ptk);\n+\n+\t/**\n+\t * update_pairing_credentials - Report received NIK and NPK for a peer\n+\t *\n+\t * @ctx: Callback context from cb_ctx\n+\t * @nik: NAN Identity Key received from peer\n+\t * @nik_len: Length of the NIK\n+\t * @cipher_ver: Cipher version of the NIK\n+\t * @nik_lifetime: Lifetime of the NIK in seconds\n+\t * @akmp: AKMP suite used to establish the NPKSA\n+\t * @npk: the NPK associated with the received NIK\n+\t * @npk_len: Length of the NPK\n+\t * Returns: 0 on success, -1 on failure\n+\t */\n+\tint (*update_pairing_credentials)(void *ctx, const u8 *nik,\n+\t\t\t\t\t  size_t nik_len, int cipher_ver,\n+\t\t\t\t\t  int nik_lifetime, int akmp, u8 *npk,\n+\t\t\t\t\t  size_t npk_len);\n };\n \n struct nan_data * nan_init(const struct nan_config *cfg);\ndiff --git a/src/nan/nan_i.h b/src/nan/nan_i.h\nindex 6762e3e83c..3e00aa7d9d 100644\n--- a/src/nan/nan_i.h\n+++ b/src/nan/nan_i.h\n@@ -764,6 +764,9 @@ void nan_parse_peer_dev_capa_ext(struct nan_data *nan, struct nan_peer *peer,\n int nan_nira_get_tag_nonce(const struct nan_config *nan, u8 *nira_nonce,\n \t\t\t   u8 *nira_tag);\n void nan_pairing_deinit_peer(struct nan_peer *peer);\n+bool nan_pairing_followup_rx(struct nan_data *nan_data, const u8 *peer_addr,\n+\t\t\t     struct nan_shared_key *shared_key_descr,\n+\t\t\t     size_t attr_len);\n #else\n static inline\n int nan_nira_get_tag_nonce(const struct nan_config *nan, u8 *nira_nonce,\ndiff --git a/src/nan/nan_pairing.c b/src/nan/nan_pairing.c\nindex 01d0720f21..35c140ca9f 100644\n--- a/src/nan/nan_pairing.c\n+++ b/src/nan/nan_pairing.c\n@@ -1042,3 +1042,149 @@ int nan_pairing_auth_rx(struct nan_data *nan_data,\n \n \treturn -1;\n }\n+\n+\n+/*\n+ * nan_pairing_followup_rx - Process received NAN pairing follow-up frame\n+ *\n+ * @nan_data: NAN data context\n+ * @peer_addr: MAC address of the peer device\n+ * @shared_key_descr: Pointer to the shared key descriptor attribute\n+ * @attr_len: Length of the shared key descriptor attribute\n+ *\n+ * Returns: true if the follow-up frame was processed, false otherwise.\n+ *\n+ * This function processes a received NAN pairing follow-up frame. It extracts\n+ * the NIK (NAN Identity Key) from the frame and notifies about the received\n+ * NIK.\n+ * If the local device acted as the responder in the pairing process, it also\n+ * sends the local NIK to the peer.\n+ */\n+bool nan_pairing_followup_rx(struct nan_data *nan_data, const u8 *peer_addr,\n+\t\t\t     struct nan_shared_key *shared_key_descr,\n+\t\t\t     size_t attr_len)\n+{\n+\tstruct nan_peer *peer;\n+\tstruct pasn_data *pasn;\n+\tstruct wpa_eapol_key *key_desc;\n+\tstruct wpa_eapol_ie_parse ie;\n+\tstruct nan_nik_kde *nik_kde;\n+\tstruct nan_key_lifetime_kde *lifetime_kde;\n+\tu8 *pos;\n+\tstruct wpabuf *key_data = NULL;\n+\tu16 key_data_len, key_info;\n+\tbool ret = false;\n+\n+\tpeer = nan_get_peer(nan_data, peer_addr);\n+\tif (!peer) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Follow-up frame from unknown peer\");\n+\t\treturn false;\n+\t}\n+\n+\tpasn = peer->pairing.pasn;\n+\tif (!pasn || !pasn->ptk.kek_len) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: No PASN data for follow-up frame\");\n+\t\treturn false;\n+\t}\n+\n+\tif (!nan_data->cfg->pairing_cfg.npk_caching) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: NPK caching not enabled, ignore follow-up frame\");\n+\t\treturn false;\n+\t}\n+\n+\tkey_desc = (void *)shared_key_descr->key;\n+\tkey_info = WPA_GET_BE16(key_desc->key_info);\n+\n+\tif (!(key_info & WPA_KEY_INFO_KEY_TYPE)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Follow-up frame does not contain pairwise key\");\n+\t\treturn false;\n+\t}\n+\n+\tif (!(key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Follow-up frame does not contain encrypted key data\");\n+\t\treturn false;\n+\t}\n+\n+\tif (attr_len < sizeof(*shared_key_descr) + sizeof(*key_desc) + 2) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Follow-up frame too short for key data length\");\n+\t\treturn false;\n+\t}\n+\n+\tpos = shared_key_descr->key + sizeof(*key_desc);\n+\tkey_data_len = WPA_GET_BE16(pos);\n+\n+\tif (attr_len < sizeof(*shared_key_descr) + sizeof(*key_desc) + 2 + key_data_len) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Follow-up frame too short for key data\");\n+\t\treturn false;\n+\t}\n+\n+\tpos += 2;\n+\n+\tkey_data = nan_crypto_decrypt_key_data(pasn->ptk.kek, pasn->ptk.kek_len,\n+\t\t\t\t\t       pos, key_data_len);\n+\tif (!key_data) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Failed to decrypt key data in follow-up frame\");\n+\t\tgoto fail;\n+\t}\n+\n+\tif (wpa_parse_kde_ies(wpabuf_head(key_data), wpabuf_len(key_data),\n+\t\t\t      &ie) < 0) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Failed to parse decrypted key data in follow-up frame\");\n+\t\tgoto fail;\n+\t}\n+\n+\tif (!ie.nan_nik) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: NIK KDE missing in decrypted key data\");\n+\t\tgoto fail;\n+\t}\n+\n+\tnik_kde = (void *)ie.nan_nik;\n+\tif (nik_kde->cipher_ver != NAN_NIRA_CIPHER_VER_128) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Unsupported NIK cipher version: %u\",\n+\t\t\t   nik_kde->cipher_ver);\n+\t\tgoto fail;\n+\t}\n+\n+\tif (!ie.nan_key_lifetime) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Key Lifetime KDE missing in decrypted key data\");\n+\t\tgoto fail;\n+\t}\n+\n+\tlifetime_kde = (void *)ie.nan_key_lifetime;\n+\tif (!(lifetime_kde->key_bitmap & NAN_KEY_LIFETIME_NIK)) {\n+\t\twpa_printf(MSG_DEBUG,\n+\t\t\t   \"NAN: Pairing: Unexpected key bitmap in Key \"\n+\t\t\t   \"Lifetime KDE: 0x%02x\",\n+\t\t\t   lifetime_kde->key_bitmap);\n+\t\tgoto fail;\n+\t}\n+\n+\tnan_data->cfg->update_pairing_credentials(nan_data->cfg->cb_ctx,\n+\t\t\t\t\t\t  nik_kde->nik, NAN_NIK_LEN,\n+\t\t\t\t\t\t  nik_kde->cipher_ver,\n+\t\t\t\t\t\t  be_to_host32(lifetime_kde->lifetime_sec),\n+\t\t\t\t\t\t  pasn_get_akmp(pasn),\n+\t\t\t\t\t\t  pasn_get_pmk(pasn),\n+\t\t\t\t\t\t  pasn_get_pmk_len(pasn));\n+\n+\tif (peer->pairing.self_pairing_role == NAN_PAIRING_ROLE_RESPONDER)\n+\t\tnan_send_nik(nan_data, peer);\n+\n+\tret = true;\n+fail:\n+\tnan_pairing_deinit_peer(peer);\n+\twpabuf_free(key_data);\n+\treturn ret;\n+}\n",
    "prefixes": [
        "37/92"
    ]
}