From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74AEAC4CECE for ; Mon, 14 Oct 2019 22:20:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1C2952067B for ; Mon, 14 Oct 2019 22:20:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=intel.onmicrosoft.com header.i=@intel.onmicrosoft.com header.b="nkltACYU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731631AbfJNWUp (ORCPT ); Mon, 14 Oct 2019 18:20:45 -0400 Received: from mga02.intel.com ([134.134.136.20]:30787 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730369AbfJNWUp (ORCPT ); Mon, 14 Oct 2019 18:20:45 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Oct 2019 15:20:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,296,1566889200"; d="scan'208";a="220234356" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 14 Oct 2019 15:20:42 -0700 Received: from fmsmsx124.amr.corp.intel.com (10.18.125.39) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 14 Oct 2019 15:20:42 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by fmsmsx124.amr.corp.intel.com (10.18.125.39) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 14 Oct 2019 15:20:42 -0700 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (104.47.41.59) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 14 Oct 2019 15:20:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lTJm5JUTOZrAdMWAJUWF4QlDO9NHu57W05YOCdCVOSWHTfj1ma8bwK79JvavXGffSqCQc0GgR7tvFcTbNl992xvzE1uLIMjXWxjEv1R/zXRYF4NflU5PjfNkkDCVZ+wvca4lsiGceS1LCmiajiyrE2TDjg/rvrDFx7bublvR2WW50FRr2ffMHjWS+X2cIukCPZKwp2/R7z/Lwwiv4KQvZRvtxYmRnqSzvs6WwyoEmY5XlI8niomGqNsrgycwUuS4oMg+3Al1UGEhqCf192MiNoazRkmfzkgEw2VYDUtJQz0ED4bx7SPPQE2pg/X4AwQKTPBXCHmxnhTd3kzooehSgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j0o7PxmUlLFR9tZvsYeK6Y3eO/biXbKb5rsSuvehO5I=; b=hHy2ozpOHzixPzi7NnUd86bVEb2z8inY6boV0CV7DAvvmA+oiA4C7tw1aSiEoCSNTHiDiOdj815oP5JGhI4ESF0panVKcZDv0sXjHO+G7JPilOdLXSu+Zu8kq4NfYYZy6zOT2hUjtAdfkRY2sU+4vjUDPaqjF8Xo7pmjz+XhMLWnH8U/fVs7s1P5Gg7BmdSyw8OD6z+MT8afg1UPhJTkwOtekkr1v5e5C+Kp6AlFImTp9EzUX0VotKPhShRK/r80yr+YLpBrjvYUmFMouOxjP/Kln6Z43ZgEPOwdyV+vYwKNr9dVgzpqo1vxQRy7xwJxLGmGTuzG3U7+fHb/3hskpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j0o7PxmUlLFR9tZvsYeK6Y3eO/biXbKb5rsSuvehO5I=; b=nkltACYUhnD+IlvdF2UHAixPljUaEUoQdGddZw7gjwoy27UHqAlQXSxb5Ee0lL76CoH51eFu2cZteW6DbpJfMoV+/QkmOHq+zCZNDNEkIjG1rnV7x1uiGad3cykeKCGRINuKbxO5zhakCA7V2DlVNBJAhzxjwKnmBE3nUvasPII= Received: from CY4PR1101MB2262.namprd11.prod.outlook.com (10.172.76.7) by CY4PR1101MB2198.namprd11.prod.outlook.com (10.172.78.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.16; Mon, 14 Oct 2019 22:20:40 +0000 Received: from CY4PR1101MB2262.namprd11.prod.outlook.com ([fe80::c6d:ebf:5ae2:7501]) by CY4PR1101MB2262.namprd11.prod.outlook.com ([fe80::c6d:ebf:5ae2:7501%10]) with mapi id 15.20.2347.023; Mon, 14 Oct 2019 22:20:39 +0000 From: "Gix, Brian" To: "linux-bluetooth@vger.kernel.org" CC: "michal.lowas-rzechonek@silvair.com" , "Stotland, Inga" Subject: Re: [PATCH BlueZ v4] mesh: Secure Beacon - IV_Index/Key Refresh re-write Thread-Topic: [PATCH BlueZ v4] mesh: Secure Beacon - IV_Index/Key Refresh re-write Thread-Index: AQHVf75XPlVf5YqI6U2KBlT0+11G0adau7kA Date: Mon, 14 Oct 2019 22:20:39 +0000 Message-ID: <6a20427ea1b4a238035c263f377f2bc1750ff85f.camel@intel.com> References: <20191010225852.5793-1-brian.gix@intel.com> In-Reply-To: <20191010225852.5793-1-brian.gix@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=brian.gix@intel.com; x-originating-ip: [192.55.54.40] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fbfb6486-a6cf-458e-b21e-08d750f4beda x-ms-traffictypediagnostic: CY4PR1101MB2198: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 01901B3451 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(376002)(136003)(396003)(366004)(39860400002)(346002)(199004)(189003)(86362001)(107886003)(6246003)(66446008)(66476007)(71190400001)(66556008)(64756008)(36756003)(99286004)(71200400001)(66946007)(229853002)(305945005)(6506007)(54906003)(316002)(102836004)(5660300002)(7736002)(118296001)(30864003)(2906002)(66066001)(76176011)(4326008)(478600001)(6486002)(6116002)(25786009)(3846002)(14454004)(5640700003)(11346002)(6436002)(2351001)(76116006)(486006)(5024004)(256004)(14444005)(6512007)(91956017)(8936002)(2501003)(81166006)(81156014)(186003)(26005)(476003)(6916009)(8676002)(446003)(4001150100001)(2616005);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR1101MB2198;H:CY4PR1101MB2262.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: y8yYSgCOrtyFicEYSawyfv3qlsx0a7fuWgSN50+WJo3IEt/v44QO3Pb0J5F9jWPyFU5DR0s6UdMkb6AqB0yRuNwK8FhFSgoTTdY/CB6DM9VcBLj6jGF1QLUV+FQAaHGBQ6yDKZLwFUzEQzRESGW2MiQmxNU8ovdfyXrLDUnp6RS2FVH5IJNe9XrfqDgGUNH461aHxh62kpJePTvCqRueLjIrWc5re+LdYi3uAkrE0NEijF1ikrsn9fEFz7e2ylqltp7iEp/ZVhRpWkPrynPRTbsqGPqkR6nKouwMk/XQw2P0+NBfxbCePeEzNrELZpXc9vkFO7LtbG8qEx3+TaFyFtaKBuXynCjnU5Iwgx7jTB3xo1jKuioCE7aX724jPUugGrdJOOm7LQFNpThTDIGZVsJDXC4uKwurakJzhsdW2tk= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: fbfb6486-a6cf-458e-b21e-08d750f4beda X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2019 22:20:39.6102 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: jtFftdVL9SOy3lR+NCQKoTbDxR08zx2nMKY8ShqUnEH//Aa6QotSGLCh0P4uE72UQCCq5K0ZYqSyDcLNM9HHyw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2198 X-OriginatorOrg: intel.com Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org QXBwbGllZA0KDQpPbiBUaHUsIDIwMTktMTAtMTAgYXQgMTU6NTggLTA3MDAsIEJyaWFuIEdpeCB3 cm90ZToNCj4gVGhpcyBpcyBhIG1ham9yIHJld3JpdGUgb2YgU2VjdXJlIE5ldHdvcmsgQmVhY29u IChTTkIpIGhhbmRsaW5nDQo+IHRoYXQgaW5jbHVkZXM6DQo+IA0KPiAqIFNlcGVyYXRpbmcgS2V5 IFJlZnJlc2ggZnJvbSBJVl9JbmRleCBoYW5kbGluZw0KPiANCj4gICBUaGlzIGlzIGEgY2xlYXJl ciBoYW5kbGluZyBvZiB0aGUgdHdvIGZlYXR1cmVzLiBBbHRob3VnaCBib3RoIGZlYXR1cmVzDQo+ ICAgYXJlIHJlcHJlc2VudGVkIGluIFNOQidzLCB0aGV5IHJ1biBpbmRlcGVuZGFudGx5Lg0KPiAN Cj4gKiBDcmVhdGluZyBhIFNlcGVyYXRlIElWX0luZGV4IGluaXRpYWxpemF0aW9uIGFuZCB1cGRh dGluZyBzdGF0ZQ0KPiAgIGRpc3RpbmN0IGZyb20gdGhlIGN1cnJlbnQgdmFsdWVzIHNlbnQgYW5k IHJlY2VpdmVkIGluIFNOQnMuDQo+IA0KPiAgIElmIGEgcmVzdGFydCBvY2N1cmVkIGR1cmluZyBh biBJViBVcGRhdGUgcHJvY2VkdXJlICg5NiBob3VycyBsb25nKQ0KPiAgIHRoZSBJVlUgYml0IGdv dCBsb3N0LCBhbmQgU2VxdWVuY2UgbnVtYmVyIHJlc2V0dGluZyB3YXMgbm90IGRvbmUNCj4gICBj b3JyZWN0bHkuDQo+IA0KPiAqIEFzc3VyaW5nIHRoYXQgYWxsIE5vZGVzIGhhbmRsZWQgYnkgZGFl bW9uIHJlY2VpdmUgZWFjaCBpbmNvbWluZw0KPiAgIGJlYWNvbi4gU05CIGhhbmRsaW5nIHByZXZp b3VzbHkgc3RvcHBlZCBhZnRlciB0aGUgZmlyc3Qgbm9kZQ0KPiAgIHN1Y2Nlc3NmdWx5IGhhbmRs ZWQgaXQsIGFsdGhvdWdoIHRoZSBTTkIgbWF5IGJlIHZhbGlkIGZvciBtYW55IGxvY2FsDQo+ICAg bm9kZXMuDQo+IC0tLQ0KPiAgbWVzaC9tZXNoLWNvbmZpZy1qc29uLmMgfCAgIDMgKy0NCj4gIG1l c2gvbmV0LmMgICAgICAgICAgICAgIHwgMzUwICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTMxIGluc2VydGlvbnMoKyksIDIyMiBk ZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9tZXNoL21lc2gtY29uZmlnLWpzb24uYyBi L21lc2gvbWVzaC1jb25maWctanNvbi5jDQo+IGluZGV4IDE5OGZlZjUxOC4uZGY1OGNiZDdkIDEw MDY0NA0KPiAtLS0gYS9tZXNoL21lc2gtY29uZmlnLWpzb24uYw0KPiArKysgYi9tZXNoL21lc2gt Y29uZmlnLWpzb24uYw0KPiBAQCAtMjA1Nyw3ICsyMDU3LDggQEAgYm9vbCBtZXNoX2NvbmZpZ193 cml0ZV9zZXFfbnVtYmVyKHN0cnVjdCBtZXNoX2NvbmZpZyAqY2ZnLCB1aW50MzJfdCBzZXEsDQo+ ICAJCXJldHVybiBtZXNoX2NvbmZpZ19zYXZlKGNmZywgdHJ1ZSwgTlVMTCwgTlVMTCk7DQo+ICAJ fQ0KPiAgDQo+IC0JaWYgKGdldF9pbnQoY2ZnLT5qbm9kZSwgInNlcXVlbmNlTnVtYmVyIiwgJnZh bHVlKSkNCj4gKwkvKiBJZiByZXNldHRpbmcgc2VxIHRvIFplcm8sIG1ha2Ugc3VyZSBjYWNoZWQg dmFsdWUgcmVzZXQgYXMgd2VsbCAqLw0KPiArCWlmIChzZXEgJiYgZ2V0X2ludChjZmctPmpub2Rl LCAic2VxdWVuY2VOdW1iZXIiLCAmdmFsdWUpKQ0KPiAgCQljYWNoZWQgPSAodWludDMyX3QpdmFs dWU7DQo+ICANCj4gIAkvKg0KPiBkaWZmIC0tZ2l0IGEvbWVzaC9uZXQuYyBiL21lc2gvbmV0LmMN Cj4gaW5kZXggMjc4NTAzOWRiLi5mMDdkZTRkOGEgMTAwNjQ0DQo+IC0tLSBhL21lc2gvbmV0LmMN Cj4gKysrIGIvbWVzaC9uZXQuYw0KPiBAQCAtNDEsNyArNDEsNyBAQA0KPiAgDQo+ICAjZGVmaW5l IElWX0lEWF9ESUZGX1JBTkdFCTQyDQo+ICANCj4gLS8qICNkZWZpbmUgSVZfSURYX1VQRF9NSU4J KDYwKQkJMSBtaW51dGUgZm9yIFRlc3RpbmcgKi8NCj4gKy8qI2RlZmluZSBJVl9JRFhfVVBEX01J TgkoNSAqIDYwKQkqIDUgbWludXRlIGZvciBUZXN0aW5nICovDQo+ICAjZGVmaW5lIElWX0lEWF9V UERfTUlOCSg2MCAqIDYwICogOTYpCS8qIDk2IEhvdXJzIC0gcGVyIFNwZWMgKi8NCj4gICNkZWZp bmUgSVZfSURYX1VQRF9IT0xECShJVl9JRFhfVVBEX01JTi8yKQ0KPiAgI2RlZmluZSBJVl9JRFhf VVBEX01BWAkoSVZfSURYX1VQRF9NSU4gKyBJVl9JRFhfVVBEX0hPTEQpDQo+IEBAIC0yNTcsNiAr MjU3LDExIEBAIHN0cnVjdCBuZXRfcXVldWVfZGF0YSB7DQo+ICAJdWludDE2X3QgbGVuOw0KPiAg fTsNCj4gIA0KPiArc3RydWN0IG5ldF9iZWFjb25fZGF0YSB7DQo+ICsJY29uc3QgdWludDhfdCAq ZGF0YTsNCj4gKwl1aW50MTZfdCBsZW47DQo+ICt9Ow0KPiArDQo+ICAjZGVmaW5lIEZBU1RfQ0FD SEVfU0laRSA4DQo+ICBzdGF0aWMgc3RydWN0IGxfcXVldWUgKmZhc3RfY2FjaGU7DQo+ICBzdGF0 aWMgc3RydWN0IGxfcXVldWUgKm5ldHM7DQo+IEBAIC01MDMsNiArNTA4LDcgQEAgdm9pZCBtZXNo X2ZyaWVuZF9zdWJfZGVsKHN0cnVjdCBtZXNoX25ldCAqbmV0LCB1aW50MTZfdCBscG4sDQo+ICB1 aW50MzJfdCBtZXNoX25ldF9uZXh0X3NlcV9udW0oc3RydWN0IG1lc2hfbmV0ICpuZXQpDQo+ICB7 DQo+ICAJdWludDMyX3Qgc2VxID0gbmV0LT5zZXFfbnVtKys7DQo+ICsNCj4gIAlub2RlX3NldF9z ZXF1ZW5jZV9udW1iZXIobmV0LT5ub2RlLCBuZXQtPnNlcV9udW0pOw0KPiAgCXJldHVybiBzZXE7 DQo+ICB9DQo+IEBAIC01NjgsOSArNTc0LDEwIEBAIHN0YXRpYyBib29sIGNyZWF0ZV9zZWN1cmVf YmVhY29uKHN0cnVjdCBtZXNoX25ldCAqbmV0LA0KPiAgCQkJCQlzdHJ1Y3QgbWVzaF9zdWJuZXQg KnN1Ym5ldCwNCj4gIAkJCQkJdWludDhfdCAqYmVhY29uX2RhdGEpDQo+ICB7DQo+ICsJYm9vbCBr ciA9IChzdWJuZXQtPmtyX3BoYXNlID09IEtFWV9SRUZSRVNIX1BIQVNFX1RXTyk7DQo+ICsNCj4g IAlyZXR1cm4gbmV0X2tleV9zbmJfY29tcG9zZShzdWJuZXQtPm5ldF9rZXlfdHgsIG5ldC0+aXZf aW5kZXgsDQo+IC0JCQkJISFzdWJuZXQtPmtleV9yZWZyZXNoLCBpdl9pc191cGRhdGluZyhuZXQp LA0KPiAtCQkJCQkJCQliZWFjb25fZGF0YSk7DQo+ICsJCQkJCWtyLCBuZXQtPml2X3VwZGF0ZSwg YmVhY29uX2RhdGEpOw0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBzZW5kX25ldHdvcmtfYmVh Y29uKHN0cnVjdCBtZXNoX3N1Ym5ldCAqc3VibmV0LA0KPiBAQCAtNzE4LDYgKzcyNSw3IEBAIGJv b2wgbWVzaF9uZXRfc2V0X3NlcV9udW0oc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQzMl90IHNl cSkNCj4gIAkJcmV0dXJuIGZhbHNlOw0KPiAgDQo+ICAJbmV0LT5zZXFfbnVtID0gc2VxOw0KPiAr CW5vZGVfc2V0X3NlcXVlbmNlX251bWJlcihuZXQtPm5vZGUsIG5ldC0+c2VxX251bSk7DQo+ICAN Cj4gIAlyZXR1cm4gdHJ1ZTsNCj4gIH0NCj4gQEAgLTEwMzQsNyArMTA0Miw3IEBAIHVpbnQzMl90 IG1lc2hfbmV0X2dldF9pdl9pbmRleChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCkNCj4gIAlpZiAoIW5l dCkNCj4gIAkJcmV0dXJuIDB4ZmZmZmZmZmY7DQo+ICANCj4gLQlyZXR1cm4gbmV0LT5pdl9pbmRl eCAtIChpdl9pc191cGRhdGluZyhuZXQpID8gMSA6IDApOw0KPiArCXJldHVybiBuZXQtPml2X2lu ZGV4IC0gbmV0LT5pdl91cGRhdGU7DQo+ICB9DQo+ICANCj4gIC8qIFRPRE86IG5ldCBrZXkgaW5k ZXg/ICovDQo+IEBAIC0yNjE2LDEwICsyNjI0LDE1IEBAIHN0YXRpYyB2b2lkIGl2X3VwZF90byhz dHJ1Y3QgbF90aW1lb3V0ICp1cGRfdGltZW91dCwgdm9pZCAqdXNlcl9kYXRhKQ0KPiAgCQkJYnJl YWs7DQo+ICAJCX0NCj4gIA0KPiAtCQlsX2luZm8oIml2X3VwZF9zdGF0ZSA9IElWX1VQRF9OT1JN QUxfSE9MRCIpOw0KPiArCQlsX2RlYnVnKCJpdl91cGRfc3RhdGUgPSBJVl9VUERfTk9STUFMX0hP TEQiKTsNCj4gIAkJbmV0LT5pdl91cGRfc3RhdGUgPSBJVl9VUERfTk9STUFMX0hPTEQ7DQo+ICAJ CWxfdGltZW91dF9tb2RpZnkobmV0LT5pdl91cGRhdGVfdGltZW91dCwgSVZfSURYX1VQRF9NSU4p Ow0KPiAtCQltZXNoX25ldF9zZXRfc2VxX251bShuZXQsIDApOw0KPiArCQlpZiAobmV0LT5pdl91 cGRhdGUpDQo+ICsJCQltZXNoX25ldF9zZXRfc2VxX251bShuZXQsIDApOw0KPiArDQo+ICsJCW5l dC0+aXZfdXBkYXRlID0gZmFsc2U7DQo+ICsJCW1lc2hfY29uZmlnX3dyaXRlX2l2X2luZGV4KG5v ZGVfY29uZmlnX2dldChuZXQtPm5vZGUpLA0KPiArCQkJCQkJCW5ldC0+aXZfaW5kZXgsIGZhbHNl KTsNCj4gIAkJbF9xdWV1ZV9mb3JlYWNoKG5ldC0+c3VibmV0cywgc2V0X25ldHdvcmtfYmVhY29u LCBuZXQpOw0KPiAgCQltZXNoX25ldF9mbHVzaF9tc2dfcXVldWVzKG5ldCk7DQo+ICAJCWJyZWFr Ow0KPiBAQCAtMjYyOSw4ICsyNjQyLDEyIEBAIHN0YXRpYyB2b2lkIGl2X3VwZF90byhzdHJ1Y3Qg bF90aW1lb3V0ICp1cGRfdGltZW91dCwgdm9pZCAqdXNlcl9kYXRhKQ0KPiAgCWNhc2UgSVZfVVBE X05PUk1BTDoNCj4gIAkJbF90aW1lb3V0X3JlbW92ZSh1cGRfdGltZW91dCk7DQo+ICAJCW5ldC0+ aXZfdXBkYXRlX3RpbWVvdXQgPSBOVUxMOw0KPiAtCQlsX2luZm8oIml2X3VwZF9zdGF0ZSA9IElW X1VQRF9OT1JNQUwiKTsNCj4gKwkJbF9kZWJ1ZygiaXZfdXBkX3N0YXRlID0gSVZfVVBEX05PUk1B TCIpOw0KPiAgCQluZXQtPml2X3VwZF9zdGF0ZSA9IElWX1VQRF9OT1JNQUw7DQo+ICsJCWlmIChu ZXQtPml2X3VwZGF0ZSkNCj4gKwkJCW1lc2hfbmV0X3NldF9zZXFfbnVtKG5ldCwgMCk7DQo+ICsN Cj4gKwkJbmV0LT5pdl91cGRhdGUgPSBmYWxzZTsNCj4gIAkJaWYgKG5ldC0+c2VxX251bSA+IElW X1VQREFURV9TRVFfVFJJR0dFUikNCj4gIAkJCW1lc2hfbmV0X2l2X2luZGV4X3VwZGF0ZShuZXQp Ow0KPiAgCQlicmVhazsNCj4gQEAgLTI3MDcsMzkgKzI3MjQsNDEgQEAgc3RhdGljIGludCBrZXlf cmVmcmVzaF9maW5pc2goc3RydWN0IG1lc2hfbmV0ICpuZXQsIHVpbnQxNl90IGlkeCkNCj4gIAly ZXR1cm4gTUVTSF9TVEFUVVNfU1VDQ0VTUzsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIHZvaWQgdXBk YXRlX2l2X2tyX3N0YXRlKHN0cnVjdCBtZXNoX3N1Ym5ldCAqc3VibmV0LCB1aW50MzJfdCBpdl9p bmRleCwNCj4gLQkJCQlib29sIGl2X3VwZGF0ZSwgYm9vbCBrcl90cmFuc2l0aW9uLA0KPiAtCQkJ CWJvb2wgcnhlZF9rZXlfcmVmcmVzaCwgYm9vbCBscG4pDQo+ICtzdGF0aWMgdm9pZCB1cGRhdGVf a3Jfc3RhdGUoc3RydWN0IG1lc2hfc3VibmV0ICpzdWJuZXQsIGJvb2wga3IsIHVpbnQzMl90IGlk KQ0KPiArew0KPiArCS8qIEZpZ3VyZSBvdXQgdGhlIGtleSByZWZyZXNoIHBoYXNlICovDQo+ICsJ aWYgKGtyKSB7DQo+ICsJCWlmIChpZCA9PSBzdWJuZXQtPm5ldF9rZXlfdXBkKSB7DQo+ICsJCQls X2RlYnVnKCJCZWFjb24gYmFzZWQgS1IgcGhhc2UgMiBjaGFuZ2UiKTsNCj4gKwkJCWtleV9yZWZy ZXNoX3BoYXNlX3R3byhzdWJuZXQtPm5ldCwgc3VibmV0LT5pZHgpOw0KPiArCQl9DQo+ICsJfSBl bHNlIHsNCj4gKwkJaWYgKGlkID09IHN1Ym5ldC0+bmV0X2tleV91cGQpIHsNCj4gKwkJCWxfZGVi dWcoIkJlYWNvbiBiYXNlZCBLUiBwaGFzZSAzIGNoYW5nZSIpOw0KPiArCQkJa2V5X3JlZnJlc2hf ZmluaXNoKHN1Ym5ldC0+bmV0LCBzdWJuZXQtPmlkeCk7DQo+ICsJCX0NCj4gKwl9DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9pdl9pdnVfc3RhdGUoc3RydWN0IG1lc2hfbmV0ICpu ZXQsIHVpbnQzMl90IGl2X2luZGV4LA0KPiArCQkJCQkJCQlib29sIGl2dSkNCj4gIHsNCj4gLQlz dHJ1Y3QgbWVzaF9uZXQgKm5ldCA9IHN1Ym5ldC0+bmV0Ow0KPiAtCXVpbnQ4X3QgbG9jYWxfa3I7 DQo+ICAJdWludDMyX3QgbG9jYWxfaXZfaW5kZXg7DQo+IC0JYm9vbCBsb2NhbF9pdl91cGRhdGU7 DQo+ICsJYm9vbCBsb2NhbF9pdnU7DQo+ICANCj4gLQkvKiBTYXZlIG9yaWdpbmFsIHNldHRpbmdz IHRvIGF2b2lkIHJlc2V0dGluZyBzYW1lIHZhbHVlcywNCj4gLQkgKiBhbmQgc2VjdXJlIGJlYWNv biB0aW1lcg0KPiAtCSAqLw0KPiArCS8qIFNhdmUgb3JpZ2luYWwgc2V0dGluZ3MgdG8gZGlmZmVy ZW50aWF0ZSB3aGF0IGhhcyBjaGFuZ2VkICovDQo+ICAJbG9jYWxfaXZfaW5kZXggPSBuZXQtPml2 X2luZGV4Ow0KPiAtCWxvY2FsX2tyID0gc3VibmV0LT5rZXlfcmVmcmVzaDsNCj4gLQlsb2NhbF9p dl91cGRhdGUgPSBpdl9pc191cGRhdGluZyhuZXQpOw0KPiAtDQo+IC0JaWYgKGl2X2luZGV4ICE9 IGxvY2FsX2l2X2luZGV4IHx8IGtyX3RyYW5zaXRpb24pDQo+IC0JCWxfaW5mbygiU05CLVJYOiAl OC44eCAtIEtleSBSZWZyZXNoOiAlZCBJViBVcGRhdGU6ICVkIiwNCj4gLQkJCQkJaXZfaW5kZXgs IHJ4ZWRfa2V5X3JlZnJlc2gsIGl2X3VwZGF0ZSk7DQo+ICsJbG9jYWxfaXZ1ID0gbmV0LT5pdl91 cGRhdGU7DQo+ICANCj4gLQlpZiAoaXZfdXBkYXRlICYmIChuZXQtPml2X3VwZF9zdGF0ZSA+IElW X1VQRF9VUERBVElORykpIHsNCj4gLQkJaWYgKGl2X2luZGV4ICE9IG5ldC0+aXZfaW5kZXgpDQo+ IC0JCQlsX2Vycm9yKCJVcGRhdGUgYXR0ZW1wdGVkIHRvMCBzb29uIChOb3JtYWwgPCBNSU4pIik7 DQo+IC0NCj4gLQkJcmV0dXJuOw0KPiArCWlmICgoaXZfaW5kZXggLSBpdnUpID4gKGxvY2FsX2l2 X2luZGV4IC0gbG9jYWxfaXZ1KSkgew0KPiArCQkvKiBEb24ndCBhY2NlcHQgSVZfSW5kZXggY2hh bmdlcyB3aGVuIHBlcmZvcm1pbmcgU0FSIE91dCAqLw0KPiArCQlpZiAobF9xdWV1ZV9sZW5ndGgo bmV0LT5zYXJfb3V0KSkNCj4gKwkJCXJldHVybjsNCj4gIAl9DQo+ICANCj4gKwkvKiBJZiBmaXJz dCBiZWFjb24gc2VlbiwgYWNjZXB0IHdpdGhvdXQganVkZ2VtZW50ICovDQo+ICAJaWYgKG5ldC0+ aXZfdXBkX3N0YXRlID09IElWX1VQRF9JTklUKSB7DQo+IC0JCWlmIChpdl9pbmRleCA+IG5ldC0+ aXZfaW5kZXgpDQo+IC0JCQltZXNoX25ldF9zZXRfc2VxX251bShuZXQsIDApOw0KPiAtCQluZXQt Pml2X2luZGV4ID0gaXZfaW5kZXg7DQo+IC0NCj4gLQkJaWYgKGl2X3VwZGF0ZSkgew0KPiArCQlp ZiAoaXZ1KSB7DQo+ICAJCQkvKiBPdGhlciBkZXZpY2VzIHdpbGwgYmUgYWNjZXB0aW5nIG9sZCBv ciBuZXcgaXZfaW5kZXgsDQo+ICAJCQkgKiBidXQgd2UgZG9uJ3Qga25vdyBob3cgZmFyIHRocm91 Z2ggdXBkYXRlIHRoZXkgYXJlLg0KPiAgCQkJICogU3RhcnRpbmcgcGVybWlzc2l2ZSBzdGF0ZSB3 aWxsIGFsbG93IHVzIG1heGltdW0NCj4gQEAgLTI3NTMsMTY0ICsyNzcyLDg5IEBAIHN0YXRpYyB2 b2lkIHVwZGF0ZV9pdl9rcl9zdGF0ZShzdHJ1Y3QgbWVzaF9zdWJuZXQgKnN1Ym5ldCwgdWludDMy X3QgaXZfaW5kZXgsDQo+ICAJCQlsX2luZm8oIml2X3VwZF9zdGF0ZSA9IElWX1VQRF9OT1JNQUwi KTsNCj4gIAkJCW5ldC0+aXZfdXBkX3N0YXRlID0gSVZfVVBEX05PUk1BTDsNCj4gIAkJfQ0KPiAt DQo+IC0JCW1lc2hfY29uZmlnX3dyaXRlX2l2X2luZGV4KG5vZGVfY29uZmlnX2dldChuZXQtPm5v ZGUpLCBpdl9pbmRleCwNCj4gLQkJCQkJCQluZXQtPml2X3VwZF9zdGF0ZSk7DQo+IC0NCj4gLQkJ LyogRmlndXJlIG91dCB0aGUga2V5IHJlZnJlc2ggcGhhc2UgKi8NCj4gLQkJaWYgKGtyX3RyYW5z aXRpb24pIHsNCj4gLQkJCWxfZGVidWcoIkJlYWNvbiBiYXNlZCBLUiBwaGFzZSBjaGFuZ2UiKTsN Cj4gLQkJCWlmIChyeGVkX2tleV9yZWZyZXNoKQ0KPiAtCQkJCWtleV9yZWZyZXNoX3BoYXNlX3R3 byhuZXQsIHN1Ym5ldC0+aWR4KTsNCj4gLQkJCWVsc2UNCj4gLQkJCQlrZXlfcmVmcmVzaF9maW5p c2gobmV0LCBzdWJuZXQtPmlkeCk7DQo+ICsJfSBlbHNlIGlmIChpdnUpIHsNCj4gKwkJLyogSWdu b3JlIGJlYWNvbnMgd2l0aCBJVlUgaWYgdGhleSBjb21lIHRvbyBzb29uICovDQo+ICsJCWlmICgh bG9jYWxfaXZ1ICYmIG5ldC0+aXZfdXBkX3N0YXRlID09IElWX1VQRF9OT1JNQUxfSE9MRCkgew0K PiArCQkJbF9lcnJvcigiVXBkYXRlIGF0dGVtcHRlZCB0b28gc29vbiIpOw0KPiArCQkJcmV0dXJu Ow0KPiAgCQl9DQo+ICANCj4gLQkJaWYgKCFscG4pDQo+IC0JCQlzZXRfbmV0d29ya19iZWFjb24o c3VibmV0LCBuZXQpOw0KPiAtDQo+IC0JCXJldHVybjsNCj4gLQl9DQo+IC0NCj4gLQlpZiAoaXZf dXBkYXRlICYmICFpdl9pc191cGRhdGluZyhuZXQpKSB7DQo+IC0JCWxfaW5mbygiaXZfdXBkX3N0 YXRlID0gSVZfVVBEX1VQREFUSU5HIik7DQo+IC0JCW5ldC0+aXZfdXBkX3N0YXRlID0gSVZfVVBE X1VQREFUSU5HOw0KPiAtCQluZXQtPml2X3VwZGF0ZV90aW1lb3V0ID0gbF90aW1lb3V0X2NyZWF0 ZShJVl9JRFhfVVBEX01JTiwNCj4gLQkJCQkJCQlpdl91cGRfdG8sIG5ldCwgTlVMTCk7DQo+IC0J CW1lc2hfY29uZmlnX3dyaXRlX2l2X2luZGV4KG5vZGVfY29uZmlnX2dldChuZXQtPm5vZGUpLCBp dl9pbmRleCwNCj4gLQkJCQkJCQluZXQtPml2X3VwZF9zdGF0ZSk7DQo+IC0JfSBlbHNlIGlmIChp dl91cGRhdGUgJiYgaXZfaW5kZXggIT0gbmV0LT5pdl9pbmRleCkgew0KPiAtCQlsX2Vycm9yKCJV cGRhdGUgYXR0ZW1wdGVkIHRvbyBzb29uIChpdiBpZHggYWxyZWFkeSB1cGRhdGVkKSIpOw0KPiAr CQlpZiAoIWxvY2FsX2l2dSkgew0KPiArCQkJbF9pbmZvKCJpdl91cGRfc3RhdGUgPSBJVl9VUERf VVBEQVRJTkciKTsNCj4gKwkJCW5ldC0+aXZfdXBkX3N0YXRlID0gSVZfVVBEX1VQREFUSU5HOw0K PiArCQkJbmV0LT5pdl91cGRhdGVfdGltZW91dCA9IGxfdGltZW91dF9jcmVhdGUoDQo+ICsJCQkJ CUlWX0lEWF9VUERfTUlOLCBpdl91cGRfdG8sIG5ldCwgTlVMTCk7DQo+ICsJCX0NCj4gKwl9IGVs c2UgaWYgKGxvY2FsX2l2dSkgew0KPiArCQlsX2Vycm9yKCJJVlUgY2xlYXIgYXR0ZW1wdGVkIHRv byBzb29uIik7DQo+ICAJCXJldHVybjsNCj4gIAl9DQo+ICANCj4gLQlpZiAoaXZfaW5kZXggIT0g bG9jYWxfaXZfaW5kZXggfHwga3JfdHJhbnNpdGlvbikNCj4gLQkJbF9pbmZvKCJJVmluZGV4IDB4 JTguOHggLyBLZXkgUmVmcmVzaCB1cGRhdGUgcmVjZWl2ZWQiLA0KPiAtCQkJCQkJCQlpdl9pbmRl eCk7DQo+ICsJaWYgKChpdl9pbmRleCAtIGl2dSkgPiAobG9jYWxfaXZfaW5kZXggLSBsb2NhbF9p dnUpKQ0KPiArCQltZXNoX25ldF9zZXRfc2VxX251bShuZXQsIDApOw0KPiAgDQo+IC0JaWYgKGl2 X2luZGV4ID4gbmV0LT5pdl9pbmRleCkgew0KPiAtCQlsX3F1ZXVlX2NsZWFyKG5ldC0+bXNnX2Nh Y2hlLCBtZXNoX21zZ19mcmVlKTsNCj4gLQkJbmV0LT5pdl9pbmRleCA9IGl2X2luZGV4Ow0KPiAt CQltZXNoX2NvbmZpZ193cml0ZV9pdl9pbmRleChub2RlX2NvbmZpZ19nZXQobmV0LT5ub2RlKSwg aXZfaW5kZXgsDQo+IC0JCQkJCQkJbmV0LT5pdl91cGRfc3RhdGUpOw0KPiAtCX0NCj4gKwlpZiAo aXZ1ICE9IG5ldC0+aXZfdXBkYXRlIHx8IGxvY2FsX2l2X2luZGV4ICE9IG5ldC0+aXZfaW5kZXgp IHsNCj4gKwkJc3RydWN0IG1lc2hfY29uZmlnICpjZmcgPSBub2RlX2NvbmZpZ19nZXQobmV0LT5u b2RlKTsNCj4gIA0KPiAtCS8qIEZpZ3VyZSBvdXQgdGhlIGtleSByZWZyZXNoIHBoYXNlICovDQo+ IC0JaWYgKGtyX3RyYW5zaXRpb24pIHsNCj4gLQkJaWYgKHJ4ZWRfa2V5X3JlZnJlc2gpDQo+IC0J CQlrZXlfcmVmcmVzaF9waGFzZV90d28obmV0LCBzdWJuZXQtPmlkeCk7DQo+IC0JCWVsc2UNCj4g LQkJCWtleV9yZWZyZXNoX2ZpbmlzaChuZXQsIHN1Ym5ldC0+aWR4KTsNCj4gKwkJbWVzaF9jb25m aWdfd3JpdGVfaXZfaW5kZXgoY2ZnLCBpdl9pbmRleCwgaXZ1KTsNCj4gIAl9DQo+ICANCj4gLQlp ZiAoIWxwbikNCj4gLQkJcmV0dXJuOw0KPiAtDQo+IC0JaWYgKGxvY2FsX2tyICE9IHN1Ym5ldC0+ a2V5X3JlZnJlc2ggfHwNCj4gLQkJCQkJbG9jYWxfaXZfaW5kZXggIT0gbmV0LT5pdl9pbmRleCB8 fA0KPiAtCQkJCQlsb2NhbF9pdl91cGRhdGUgIT0gaXZfaXNfdXBkYXRpbmcobmV0KSkNCj4gLQkJ c2V0X25ldHdvcmtfYmVhY29uKHN1Ym5ldCwgbmV0KTsNCj4gKwluZXQtPml2X2luZGV4ID0gaXZf aW5kZXg7DQo+ICsJbmV0LT5pdl91cGRhdGUgPSBpdnU7DQo+ICB9DQo+ICANCj4gLXN0YXRpYyB2 b2lkIHByb2Nlc3NfYmVhY29uKHZvaWQgKnVzZXJfZGF0YSwgY29uc3Qgdm9pZCAqZGF0YSwNCj4g LQkJCQkJCXVpbnQ4X3Qgc2l6ZSwgaW50OF90IHJzc2kpDQo+ICtzdGF0aWMgdm9pZCBwcm9jZXNz X2JlYWNvbih2b2lkICpuZXRfcHRyLCB2b2lkICp1c2VyX2RhdGEpDQo+ICB7DQo+IC0Jc3RydWN0 IG1lc2hfbmV0ICpuZXQgPSB1c2VyX2RhdGE7DQo+IC0JY29uc3QgdWludDhfdCAqYnVmID0gZGF0 YTsNCj4gLQl1aW50MzJfdCBpdl9pbmRleDsNCj4gLQlib29sIGl2X3VwZGF0ZSwgcnhlZF9pdl91 cGRhdGUsIHJ4ZWRfa2V5X3JlZnJlc2g7DQo+ICsJc3RydWN0IG1lc2hfbmV0ICpuZXQgPSBuZXRf cHRyOw0KPiArCWNvbnN0IHVpbnQ4X3QgKmJ1ZiA9ICoodWludDhfdCAqKil1c2VyX2RhdGE7DQo+ ICsJdWludDMyX3QgaXZpOw0KPiArCWJvb2wgaXZ1LCBrciwgbG9jYWxfa3I7DQo+ICAJc3RydWN0 IG1lc2hfc3VibmV0ICpzdWJuZXQ7DQo+ICAJdWludDMyX3Qga2V5X2lkOw0KPiAtCWJvb2wga3Jf dHJhbnNpdGlvbiA9IGZhbHNlOw0KPiAtDQo+IC0JaWYgKHNpemUgIT0gMjIgfHwgYnVmWzBdICE9 IDB4MDEpDQo+IC0JCXJldHVybjsNCj4gLQ0KPiAtCS8qIHByaW50X3BhY2tldCgiU2VjdXJlIE5l dCBCZWFjb24gUlhlZCIsIGRhdGEsIHNpemUpOyAqLw0KPiAtCXJ4ZWRfa2V5X3JlZnJlc2ggPSAo YnVmWzFdICYgMHgwMSkgPT0gMHgwMTsNCj4gLQlyeGVkX2l2X3VwZGF0ZSA9IGl2X3VwZGF0ZSA9 IChidWZbMV0gJiAweDAyKSA9PSAweDAyOw0KPiAtCWl2X2luZGV4ID0gbF9nZXRfYmUzMihidWYg KyAxMCk7DQo+IC0NCj4gLQlsX2RlYnVnKCJLUjogJWQgLS0gSVZVOiAlZCAtLSBJVjogJTguOHgi LA0KPiAtCQkJCXJ4ZWRfa2V5X3JlZnJlc2gsIHJ4ZWRfaXZfdXBkYXRlLCBpdl9pbmRleCk7DQo+ ICANCj4gLQkvKiBJbmhpYml0IHJlY29nbml6aW5nIGl2X3VwZGF0ZSB0cnVlLS0+ZmFsc2UNCj4g LQkgKiBpZiB3ZSBoYXZlIG91dGJvdW5kIFNBUiBtZXNzYWdlcyBpbiBmbGlnaHQNCj4gLQkgKi8N Cj4gLQlpZiAobF9xdWV1ZV9sZW5ndGgobmV0LT5zYXJfb3V0KSkgew0KPiAtCQlpZiAoIWl2X3Vw ZGF0ZSAmJiBpdl91cGRhdGUgIT0gaXZfaXNfdXBkYXRpbmcobmV0KSkNCj4gLQkJCWl2X3VwZGF0 ZSA9IHRydWU7DQo+IC0JfQ0KPiArCWl2aSA9IGxfZ2V0X2JlMzIoYnVmICsgMTApOw0KPiAgDQo+ IC0Ja2V5X2lkID0gbmV0X2tleV9uZXR3b3JrX2lkKGJ1ZiArIDIpOw0KPiAtCXN1Ym5ldCA9IGxf cXVldWVfZmluZChuZXQtPnN1Ym5ldHMsIG1hdGNoX2tleV9pZCwNCj4gLQkJCQkJCUxfVUlOVF9U T19QVFIoa2V5X2lkKSk7DQo+IC0JaWYgKCFzdWJuZXQgfHwgIWtleV9pZCkNCj4gKwkvKiBJZ25v cmUgb3V0LW9mLXJhbmdlIElWX0luZGV4IGZvciB0aGlzIG5ldHdvcmsgKi8NCj4gKwlpZiAoKG5l dC0+aXZfaW5kZXggKyBJVl9JRFhfRElGRl9SQU5HRSA8IGl2aSkgfHwgKGl2aSA8IG5ldC0+aXZf aW5kZXgpKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gLQkvKiBDaGVjayBpZiBLZXkgUmVmcmVzaCBm bGFnIHZhbHVlIGlzIGRpZmZlcmVudCBmcm9tDQo+IC0JICogdGhlIGxvY2FsbHkgc3RvcmVkIG9u ZQ0KPiAtCSAqLw0KPiAtCWlmIChyeGVkX2tleV9yZWZyZXNoICE9IHN1Ym5ldC0+a2V5X3JlZnJl c2gpDQo+IC0JCWtyX3RyYW5zaXRpb24gPSB0cnVlOw0KPiAtDQo+IC0JLyogSWYgdGhlIGxvY2Fs IG5vZGUgaXMgYSBwcm92aXNpb25lciBvciB0aGVyZSBhcmUgbm8gbmV3IGtleXMsDQo+IC0JICog aWdub3JlIEtSIGJlYWNvbiBzZXR0aW5nDQo+IC0JICovDQo+IC0JaWYgKG5ldC0+cHJvdmlzaW9u ZXIpDQo+IC0JCWtyX3RyYW5zaXRpb24gPSBmYWxzZTsNCj4gLQllbHNlIGlmICghc3VibmV0LT5u ZXRfa2V5X3VwZCkNCj4gLQkJa3JfdHJhbnNpdGlvbiA9IGZhbHNlOw0KPiAtCS8qIElmIGJlYWNv bidzIGtleSByZWZyZXNoIGJpdCBpcyBub3Qgc2V0IGFuZCB0aGUgYmVhY29uIGlzIGVuY29kZWQN Cj4gLQkgKiB3aXRoIHRoZSAibmV3IiBuZXR3b3JrIGtleSwgdGhpcyBzaWduYWxzIHRyYW5zaXRp b24gZnJvbQ0KPiAtCSAqIGtleSByZWZyZXNoIHByb2NlZHVyZSB0byBub3JtYWwgb3BlcmF0aW9u DQo+IC0JICovDQo+IC0JZWxzZSBpZiAoIXJ4ZWRfa2V5X3JlZnJlc2ggJiYgc3VibmV0LT5uZXRf a2V5X3VwZCA9PSBrZXlfaWQpDQo+IC0JCWtyX3RyYW5zaXRpb24gPSB0cnVlOw0KPiAtDQo+IC0J aWYgKChuZXQtPml2X2luZGV4ICsgSVZfSURYX0RJRkZfUkFOR0UgPCBpdl9pbmRleCkgfHwNCj4g LQkJCQkJCShpdl9pbmRleCA8IG5ldC0+aXZfaW5kZXgpKSB7DQo+IC0JCWxfaW5mbygiaXYgaW5k ZXggb3V0c2lkZSByYW5nZSIpOw0KPiAtCQlyZXR1cm47DQo+IC0JfQ0KPiAtDQo+IC0JLyogRG9u J3QgYm90aGVyIGdvaW5nIGZ1cnRoZXIgaWYgbm90aGluZyBoYXMgY2hhbmdlZCAqLw0KPiAtCWlm ICghbWVtY21wKCZzdWJuZXQtPnNuYi5iZWFjb25bMV0sIGJ1Ziwgc2l6ZSkpIHsNCj4gLQkJc3Vi bmV0LT5zbmIub2JzZXJ2ZWQrKzsNCj4gKwkvKiBJZ25vcmUgTmV0d29yayBJRHMgdW5rbm93biB0 byB0aGlzIG1lc2ggdW5pdmVyc2UgKi8NCj4gKwlrZXlfaWQgPSBuZXRfa2V5X25ldHdvcmtfaWQo YnVmICsgMik7DQo+ICsJaWYgKCFrZXlfaWQpDQo+ICAJCXJldHVybjsNCj4gLQl9DQo+ICANCj4g LQlpZiAoIXJ4ZWRfa2V5X3JlZnJlc2ggJiYgIXN1Ym5ldC0+a2V5X3JlZnJlc2ggJiYgIWtyX3Ry YW5zaXRpb24pDQo+IC0JCWtleV9pZCA9IHN1Ym5ldC0+bmV0X2tleV9jdXI7DQo+IC0JZWxzZSBp ZiAoc3VibmV0LT5uZXRfa2V5X3VwZCkNCj4gLQkJa2V5X2lkID0gc3VibmV0LT5uZXRfa2V5X3Vw ZDsNCj4gLQllbHNlDQo+ICsJc3VibmV0ID0gbF9xdWV1ZV9maW5kKG5ldC0+c3VibmV0cywgbWF0 Y2hfa2V5X2lkLA0KPiArCQkJCQkJCUxfVUlOVF9UT19QVFIoa2V5X2lkKSk7DQo+ICsJaWYgKCFz dWJuZXQpDQo+ICAJCXJldHVybjsNCj4gIA0KPiAtCWlmICghbmV0X2tleV9zbmJfY2hlY2soa2V5 X2lkLCBpdl9pbmRleCwgcnhlZF9rZXlfcmVmcmVzaCwNCj4gLQkJCQkJCXJ4ZWRfaXZfdXBkYXRl LA0KPiAtCQkJCQkJbF9nZXRfYmU2NChidWYgKyAxNCkpKSB7DQo+IC0JCWxfZXJyb3IoIm1lc2hf Y3J5cHRvX2JlYWNvbiB2ZXJpZnkgZmFpbGVkIik7DQo+IC0JCXJldHVybjsNCj4gLQl9DQo+ICsJ LyogR2V0IElWVSBhbmQgS1IgYm9vbGVhbiBiaXRzIGZyb20gYmVhY29uICovDQo+ICsJaXZ1ID0g ISEoYnVmWzFdICYgMHgwMik7DQo+ICsJa3IgPSAhIShidWZbMV0gJiAweDAxKTsNCj4gKwlsb2Nh bF9rciA9ICEhKHN1Ym5ldC0+a3JfcGhhc2UgIT0gS0VZX1JFRlJFU0hfUEhBU0VfVFdPKTsNCj4g IA0KPiAtCWlmIChpdl9pbmRleCA9PSBuZXQtPml2X2luZGV4ICYmDQo+IC0JCQlpdl9pc191cGRh dGluZyhuZXQpID09IGl2X3VwZGF0ZSAmJiAha3JfdHJhbnNpdGlvbikgew0KPiAtCQlsX2luZm8o Ik5vIGNoYW5nZTogSVYgaW5kZXggJTQuNHgsIHJ4ZWQgS1IgPSAlZCAiLA0KPiAtCQkJCQkJaXZf aW5kZXgsIHJ4ZWRfa2V5X3JlZnJlc2gpOw0KPiAtCQlpZiAobmV0LT5pdl91cGRfc3RhdGUgPT0g SVZfVVBEX0lOSVQpIHsNCj4gLQkJCWxfaW5mbygiaXZfdXBkX3N0YXRlID0gSVZfVVBEX05PUk1B TCIpOw0KPiAtCQkJbmV0LT5pdl91cGRfc3RhdGUgPSBJVl9VUERfTk9STUFMOw0KPiArCWlmIChu ZXQtPml2X3VwZF9zdGF0ZSAhPSBJVl9VUERfSU5JVCkgew0KPiArCQkvKiBJZ25vcmUgYmVhY29u cyB0aGF0IGluZGljYXRlICpubyBjaGFuZ2UqICovDQo+ICsJCWlmICghbWVtY21wKCZzdWJuZXQt PnNuYi5iZWFjb25bMV0sIGJ1ZiwgMjIpKSB7DQo+ICsJCQlzdWJuZXQtPnNuYi5vYnNlcnZlZCsr Ow0KPiArCQkJcmV0dXJuOw0KPiAgCQl9DQo+ICsJfQ0KPiAgDQo+IC0JCXN1Ym5ldC0+c25iLm9i c2VydmVkKys7DQo+ICsJLyogVmFsaWRhdGUgYmVhY29uIGJlZm9yZSBhY2NlcHRpbmcgKi8NCj4g KwlpZiAoIW5ldF9rZXlfc25iX2NoZWNrKGtleV9pZCwgaXZpLCBrciwgaXZ1LCBsX2dldF9iZTY0 KGJ1ZiArIDE0KSkpIHsNCj4gKwkJbF9lcnJvcigibWVzaF9jcnlwdG9fYmVhY29uIHZlcmlmeSBm YWlsZWQiKTsNCj4gIAkJcmV0dXJuOw0KPiAgCX0NCj4gIA0KPiArCS8qIFdlIGhhdmUgb2ZmaWNp YWxseSAqc2VlbiogdGhpcyBiZWFjb24gbm93ICovDQo+ICAJc3VibmV0LT5zbmIub2JzZXJ2ZWQr KzsNCj4gIA0KPiAtCXVwZGF0ZV9pdl9rcl9zdGF0ZShzdWJuZXQsIGl2X2luZGV4LCBpdl91cGRh dGUsIGtyX3RyYW5zaXRpb24sDQo+IC0JCQkJCQlyeGVkX2tleV9yZWZyZXNoLCBmYWxzZSk7DQo+ ICsJdXBkYXRlX2l2X2l2dV9zdGF0ZShuZXQsIGl2aSwgaXZ1KTsNCj4gKwl1cGRhdGVfa3Jfc3Rh dGUoc3VibmV0LCBrciwga2V5X2lkKTsNCj4gKw0KPiArCWlmIChpdmkgIT0gbmV0LT5pdl9pbmRl eCB8fCBpdnUgIT0gbmV0LT5pdl91cGRhdGUgfHwga3IgIT0gbG9jYWxfa3IpDQo+ICsJCXNldF9u ZXR3b3JrX2JlYWNvbihzdWJuZXQsIG5ldCk7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2b2lkIGxw bl9wcm9jZXNzX2JlYWNvbih2b2lkICp1c2VyX2RhdGEsIGNvbnN0IHZvaWQgKmRhdGEsDQo+IEBA IC0yOTE4LDg3ICsyODYyLDUwIEBAIHN0YXRpYyB2b2lkIGxwbl9wcm9jZXNzX2JlYWNvbih2b2lk ICp1c2VyX2RhdGEsIGNvbnN0IHZvaWQgKmRhdGEsDQo+ICB7DQo+ICAJc3RydWN0IG1lc2hfbmV0 ICpuZXQgPSB1c2VyX2RhdGE7DQo+ICAJY29uc3QgdWludDhfdCAqYnVmID0gZGF0YTsNCj4gLQl1 aW50MzJfdCBpdl9pbmRleDsNCj4gLQlib29sIGl2X3VwZGF0ZSwgcnhlZF9rZXlfcmVmcmVzaDsN Cj4gKwl1aW50MzJfdCBpdmk7DQo+ICsJYm9vbCBpdnUsIGtyLCBsb2NhbF9rcjsNCj4gIAlzdHJ1 Y3QgbWVzaF9zdWJuZXQgKnN1Ym5ldDsNCj4gIAlib29sIGtyX3RyYW5zaXRpb24gPSBmYWxzZTsN Cj4gIA0KPiAgCS8qIHByaW50X3BhY2tldCgibHBuOiBTZWN1cmUgTmV0IEJlYWNvbiBSWGVkIiwg ZGF0YSwgc2l6ZSk7ICovDQo+IC0JcnhlZF9rZXlfcmVmcmVzaCA9IChidWZbMF0gJiAweDAxKSA9 PSAweDAxOw0KPiAtCWl2X3VwZGF0ZSA9IChidWZbMF0gJiAweDAyKSA9PSAweDAyOw0KPiAtCWl2 X2luZGV4ID0gbF9nZXRfYmUzMihidWYgKyAxKTsNCj4gKwlrciA9ICEhKGJ1ZlswXSAmIDB4MDEp Ow0KPiArCWl2dSA9ICEhKGJ1ZlswXSAmIDB4MDIpOw0KPiArCWl2aSA9IGxfZ2V0X2JlMzIoYnVm ICsgMSk7DQo+ICANCj4gLQkvKiBJbmhpYml0IHJlY29nbml6aW5nIGl2X3VwZGF0ZSB0cnVlLS0+ ZmFsc2UgaWYgd2UgaGF2ZSBvdXRib3VuZA0KPiAtCSAqIFNBUiBtZXNzYWdlcyBpbiBmbGlnaHQN Cj4gLQkgKi8NCj4gLQlpZiAobF9xdWV1ZV9sZW5ndGgobmV0LT5zYXJfb3V0KSkgew0KPiAtCQlp ZiAoIWl2X3VwZGF0ZSAmJiBpdl91cGRhdGUgIT0gaXZfaXNfdXBkYXRpbmcobmV0KSkNCj4gLQkJ CWl2X3VwZGF0ZSA9IHRydWU7DQo+IC0JfQ0KPiAtDQo+IC0JbF9kZWJ1ZygiS1I6ICVkIC0tIElW VTogJWQgLS0gSVY6ICU4Ljh4IiwNCj4gLQkJCQlyeGVkX2tleV9yZWZyZXNoLCBpdl91cGRhdGUs IGl2X2luZGV4KTsNCj4gKwlsX2RlYnVnKCJLUjogJWQgLS0gSVZVOiAlZCAtLSBJVkk6ICU4Ljh4 Iiwga3IsIGl2dSwgaXZpKTsNCj4gIA0KPiAgCS8qIFRPRE86IGZpZ3VyZSBvdXQgYWN0dWFsIG5l dHdvcmsgaW5kZXggKGkuZS4sIGZyaWVuZHNoaXAgc3VibmV0KSAqLw0KPiAgCXN1Ym5ldCA9IGdl dF9wcmltYXJ5X3N1Ym5ldChuZXQpOw0KPiAgCWlmICghc3VibmV0KQ0KPiAgCQlyZXR1cm47DQo+ ICANCj4gLQkvKiBDaGVjayBpZiBLZXkgUmVmcmVzaCBmbGFnIHZhbHVlIGlzIGRpZmZlcmVudCBm cm9tDQo+IC0JICogdGhlIGxvY2FsbHkgc3RvcmVkIG9uZQ0KPiAtCSAqLw0KPiAtCWlmIChyeGVk X2tleV9yZWZyZXNoICE9IHN1Ym5ldC0+a2V5X3JlZnJlc2gpDQo+IC0JCWtyX3RyYW5zaXRpb24g PSB0cnVlOw0KPiAtDQo+IC0JLyogSWYgdGhlIGxvY2FsIG5vZGUgaXMgYSBwcm92aXNpb25lciBv ciB0aGVyZSBhcmUgbm8gbmV3IGtleXMsDQo+IC0JICogaWdub3JlIEtSIGJlYWNvbiBzZXR0aW5n DQo+IC0JICovDQo+IC0JaWYgKCFzdWJuZXQtPm5ldF9rZXlfdXBkKQ0KPiAtCQlrcl90cmFuc2l0 aW9uID0gZmFsc2U7DQo+IC0NCj4gLQlpZiAoKG5ldC0+aXZfaW5kZXggKyBJVl9JRFhfRElGRl9S QU5HRSA8IGl2X2luZGV4KSB8fA0KPiAtCQkJCQkoaXZfaW5kZXggPCBuZXQtPml2X2luZGV4KSkg ew0KPiAtCQlsX2luZm8oIml2IGluZGV4IG91dHNpZGUgcmFuZ2UiKTsNCj4gLQkJcmV0dXJuOw0K PiAtCX0NCj4gKwlsb2NhbF9rciA9IChzdWJuZXQtPmtyX3BoYXNlID09IEtFWV9SRUZSRVNIX1BI QVNFX1RXTyk7DQo+ICANCj4gIAkvKiBEb24ndCBib3RoZXIgZ29pbmcgZnVydGhlciBpZiBub3Ro aW5nIGhhcyBjaGFuZ2VkICovDQo+IC0JaWYgKCFrcl90cmFuc2l0aW9uICYmIGl2X2luZGV4ID09 IG5ldC0+aXZfaW5kZXggJiYNCj4gLQkJCWl2X3VwZGF0ZSA9PSBpdl9pc191cGRhdGluZyhuZXQp ICYmDQo+IC0JCQluZXQtPml2X3VwZF9zdGF0ZSAhPSBJVl9VUERfSU5JVCkNCj4gKwlpZiAobG9j YWxfa3IgPT0ga3IgJiYgaXZpID09IG5ldC0+aXZfaW5kZXggJiYgaXZ1ID09IG5ldC0+aXZfdXBk YXRlICYmDQo+ICsJCQkJCW5ldC0+aXZfdXBkX3N0YXRlICE9IElWX1VQRF9JTklUKQ0KPiAgCQly ZXR1cm47DQo+ICANCj4gLQlpZiAoaXZfaW5kZXggPT0gbmV0LT5pdl9pbmRleCAmJg0KPiAtCQkJ aXZfaXNfdXBkYXRpbmcobmV0KSA9PSBpdl91cGRhdGUgJiYgIWtyX3RyYW5zaXRpb24pIHsNCj4g LQkJbF9pbmZvKCJObyBjaGFuZ2U6IElWIGluZGV4ICU0LjR4LCByeGVkIEtSID0gJWQgIiwNCj4g LQkJCQkJCWl2X2luZGV4LCByeGVkX2tleV9yZWZyZXNoKTsNCj4gLQkJaWYgKG5ldC0+aXZfdXBk X3N0YXRlID09IElWX1VQRF9JTklUKSB7DQo+IC0JCQlsX2luZm8oIml2X3VwZF9zdGF0ZSA9IElW X1VQRF9OT1JNQUwiKTsNCj4gLQkJCW5ldC0+aXZfdXBkX3N0YXRlID0gSVZfVVBEX05PUk1BTDsN Cj4gLQkJfQ0KPiAtCQlyZXR1cm47DQo+IC0JfQ0KPiArCXVwZGF0ZV9pdl9pdnVfc3RhdGUobmV0 LCBpdmksIGl2dSk7DQo+ICANCj4gLQl1cGRhdGVfaXZfa3Jfc3RhdGUoc3VibmV0LCBpdl9pbmRl eCwgaXZfdXBkYXRlLCBrcl90cmFuc2l0aW9uLA0KPiAtCQkJCQkJcnhlZF9rZXlfcmVmcmVzaCwg dHJ1ZSk7DQo+ICsJaWYgKGtyKQ0KPiArCQl1cGRhdGVfa3Jfc3RhdGUoc3VibmV0LCBrcl90cmFu c2l0aW9uLCBzdWJuZXQtPm5ldF9rZXlfdXBkKTsNCj4gKwllbHNlDQo+ICsJCXVwZGF0ZV9rcl9z dGF0ZShzdWJuZXQsIGtyX3RyYW5zaXRpb24sIHN1Ym5ldC0+bmV0X2tleV9jdXIpOw0KPiAgfQ0K PiAgDQo+ICBzdGF0aWMgdm9pZCBiZWFjb25fcmVjdih2b2lkICp1c2VyX2RhdGEsIHN0cnVjdCBt ZXNoX2lvX3JlY3ZfaW5mbyAqaW5mbywNCj4gIAkJCQkJY29uc3QgdWludDhfdCAqZGF0YSwgdWlu dDE2X3QgbGVuKQ0KPiAgew0KPiAtCXN0cnVjdCBtZXNoX25ldCAqbmV0ID0gdXNlcl9kYXRhOw0K PiAtCWludDhfdCByc3NpID0gMDsNCj4gKwljb25zdCB1aW50OF90ICpwdHIgPSBkYXRhICsgMTsN Cj4gIA0KPiAtCWlmIChsZW4gPD0gMiB8fCAhbmV0KQ0KPiArCWlmIChsZW4gIT0gMjMgfHwgZGF0 YVsxXSAhPSAweDAxKQ0KPiAgCQlyZXR1cm47DQo+ICANCj4gLQlpZiAoaW5mbykgew0KPiAtCQlu ZXQtPmluc3RhbnQgPSBpbmZvLT5pbnN0YW50Ow0KPiAtCQluZXQtPmNoYW4gPSBpbmZvLT5jaGFu Ow0KPiAtCQlyc3NpID0gaW5mby0+cnNzaTsNCj4gLQl9DQo+ICsJbF9kZWJ1ZygiS1I6ICVkIC0t IElWVTogJWQgLS0gSVY6ICU4Ljh4IiwNCj4gKwkJCWRhdGFbMl0gJiAxLCAhIShkYXRhWzJdICYg MiksIGxfZ2V0X2JlMzIoZGF0YSArIDExKSk7DQo+ICANCj4gLQlwcm9jZXNzX2JlYWNvbih1c2Vy X2RhdGEsIGRhdGEgKyAxLCBsZW4gLSAxLCByc3NpKTsNCj4gKwlsX3F1ZXVlX2ZvcmVhY2gobmV0 cywgcHJvY2Vzc19iZWFjb24sICZwdHIpOw0KPiAgfQ0KPiAgDQo+ICBib29sIG1lc2hfbmV0X3Nl dF9iZWFjb25fbW9kZShzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgYm9vbCBlbmFibGUpDQo+IEBAIC0z MDQ0LDcgKzI5NTEsNyBAQCBib29sIG1lc2hfbmV0X3NldF9rZXkoc3RydWN0IG1lc2hfbmV0ICpu ZXQsIHVpbnQxNl90IGlkeCwgY29uc3QgdWludDhfdCAqa2V5LA0KPiAgCWlmICghc3VibmV0KQ0K PiAgCQlyZXR1cm4gZmFsc2U7DQo+ICANCj4gLQlpZiAobmV3X2tleSkNCj4gKwlpZiAobmV3X2tl eSAmJiBwaGFzZSkNCj4gIAkJc3VibmV0LT5uZXRfa2V5X3VwZCA9IG5ldF9rZXlfYWRkKG5ld19r ZXkpOw0KPiAgDQo+ICAJLyogUHJlc2VydmUga2V5IHJlZnJlc2ggc3RhdGUgdG8gZ2VuZXJhdGUg c2VjdXJlIGJlYWNvbiBmbGFncyovDQo+IEBAIC0zMDg1LDcgKzI5OTIsNyBAQCBib29sIG1lc2hf bmV0X2F0dGFjaChzdHJ1Y3QgbWVzaF9uZXQgKm5ldCwgc3RydWN0IG1lc2hfaW8gKmlvKQ0KPiAg DQo+ICAJCWxfaW5mbygiUmVnaXN0ZXIgaW8gY2IiKTsNCj4gIAkJbWVzaF9pb19yZWdpc3Rlcl9y ZWN2X2NiKGlvLCBNRVNIX0lPX0ZJTFRFUl9CRUFDT04sDQo+IC0JCQkJCQkJYmVhY29uX3JlY3Ys IG5ldCk7DQo+ICsJCQkJCQkJYmVhY29uX3JlY3YsIE5VTEwpOw0KPiAgCQltZXNoX2lvX3JlZ2lz dGVyX3JlY3ZfY2IoaW8sIE1FU0hfSU9fRklMVEVSX05FVCwNCj4gIAkJCQkJCQluZXRfbXNnX3Jl Y3YsIE5VTEwpOw0KPiAgCQlsX3F1ZXVlX2ZvcmVhY2gobmV0LT5zdWJuZXRzLCBzdGFydF9uZXR3 b3JrX2JlYWNvbiwgbmV0KTsNCj4gQEAgLTMxMjgsMTIgKzMwMzUsMTMgQEAgYm9vbCBtZXNoX25l dF9pdl9pbmRleF91cGRhdGUoc3RydWN0IG1lc2hfbmV0ICpuZXQpDQo+ICANCj4gIAlsX2luZm8o Iml2X3VwZF9zdGF0ZSA9IElWX1VQRF9VUERBVElORyIpOw0KPiAgCW1lc2hfbmV0X2ZsdXNoX21z Z19xdWV1ZXMobmV0KTsNCj4gLQluZXQtPml2X3VwZF9zdGF0ZSA9IElWX1VQRF9VUERBVElORzsN Cj4gLQluZXQtPml2X2luZGV4Kys7DQo+ICAJaWYgKCFtZXNoX2NvbmZpZ193cml0ZV9pdl9pbmRl eChub2RlX2NvbmZpZ19nZXQobmV0LT5ub2RlKSwNCj4gLQkJCQkJbmV0LT5pdl9pbmRleCwgSVZf VVBEX1VQREFUSU5HKSkNCj4gKwkJCQkJCW5ldC0+aXZfaW5kZXggKyAxLCB0cnVlKSkNCj4gIAkJ cmV0dXJuIGZhbHNlOw0KPiAgDQo+ICsJbmV0LT5pdl91cGRfc3RhdGUgPSBJVl9VUERfVVBEQVRJ Tkc7DQo+ICsJbmV0LT5pdl9pbmRleCsrOw0KPiArCW5ldC0+aXZfdXBkYXRlID0gdHJ1ZTsNCj4g IAlsX3F1ZXVlX2ZvcmVhY2gobmV0LT5zdWJuZXRzLCBzZXRfbmV0d29ya19iZWFjb24sIG5ldCk7 DQo+ICAJbmV0LT5pdl91cGRhdGVfdGltZW91dCA9IGxfdGltZW91dF9jcmVhdGUoDQo+ICAJCQlJ Vl9JRFhfVVBEX01JTiwNCg==