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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0E893C02192 for ; Fri, 7 Feb 2025 06:40:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tgI2C-0000fw-9H; Fri, 07 Feb 2025 01:40:16 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tgI22-0000bd-Gw for grub-devel@gnu.org; Fri, 07 Feb 2025 01:40:07 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tgI1x-0003L3-HA for grub-devel@gnu.org; Fri, 07 Feb 2025 01:40:06 -0500 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51720l4K027776; Fri, 7 Feb 2025 06:39:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=5s/H9J B6to8d86lbBG85RjP8z7C7zJX39WWoc6jr7A0=; b=ftqNdvja0e7Wx0rbxaUgDS RLwOTVUUEErgAXX5waQPGo91UC3UhZJBhxqDAANCCbV/TiOZ+sPppis2E+/xsQ8s NgDDB8fgk13T86MBPDCJUQ4qUgI+8PZYsk+KhvKR1mV0Ci4ljUJ7aAj0iIvPO2zH wUVaF1MCBFDh1SXk1RrjdPW84jVGWln/3E/mE8NfWEhUvnDJqj5CMAfbSGduYXTL 4JJt5U0FAymuEVEAul7nF+EeUxTCJvd8ABi2ePwi8IbMWLIXz5f9W+qVY+aoo+LR 05KOrKNS60tvM6t4IESnlX1R3AliFQ+3HZfOateA9XkRBP7LfCji0WB04GMdbceg == Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44n9108y9d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2025 06:39:54 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51768wio016315; Fri, 7 Feb 2025 06:39:54 GMT Received: from smtprelay07.wdc07v.mail.ibm.com ([172.16.1.74]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 44hwxstfgx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2025 06:39:53 +0000 Received: from smtpav03.dal12v.mail.ibm.com (smtpav03.dal12v.mail.ibm.com [10.241.53.102]) by smtprelay07.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5176dqAk33751582 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 7 Feb 2025 06:39:52 GMT Received: from smtpav03.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0D34F581DA; Fri, 7 Feb 2025 06:39:52 +0000 (GMT) Received: from smtpav03.dal12v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7B58C581D9; Fri, 7 Feb 2025 06:39:51 +0000 (GMT) Received: from ltc.linux.ibm.com (unknown [9.5.196.140]) by smtpav03.dal12v.mail.ibm.com (Postfix) with ESMTP; Fri, 7 Feb 2025 06:39:51 +0000 (GMT) MIME-Version: 1.0 Date: Fri, 07 Feb 2025 12:09:51 +0530 From: Avnish Chouhan To: Sudhakar Kuppusamy Cc: grub-devel@gnu.org, dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, stefanb@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, daniel.kiper@oracle.com Subject: Re: [PATCH v1 16/21] appendedsig: The creation of trusted and distrusted lists In-Reply-To: <20241218145647.1390837-17-sudhakar@linux.ibm.com> References: <20241218145647.1390837-1-sudhakar@linux.ibm.com> <20241218145647.1390837-17-sudhakar@linux.ibm.com> Message-ID: <789bb685eb016602cb7348aa1ca60d31@linux.ibm.com> X-Sender: avnish@linux.ibm.com X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: DdNcQdGBKEnD6khcJ52oAPRqmanlVTGN X-Proofpoint-GUID: DdNcQdGBKEnD6khcJ52oAPRqmanlVTGN X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-07_03,2025-02-07_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 mlxlogscore=999 priorityscore=1501 impostorscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 phishscore=0 spamscore=0 malwarescore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502070049 Received-SPF: pass client-ip=148.163.158.5; envelope-from=avnish@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org ClJldmlld2VkLWJ5OsKgQXZuaXNowqBDaG91aGFuwqA8YXZuaXNoQGxpbnV4LmlibS5jb20+CgpP biAyMDI0LTEyLTE4IDIwOjI2LCBTdWRoYWthciBLdXBwdXNhbXkgd3JvdGU6Cj4gVGhlIHRydXN0 ZWQgY2VydGlmaWNhdGVzIGFuZCBiaW5hcnkgaGFzaGVzLCBkaXN0cnVzdGVkIGNlcnRpZmljYXRl cyBhbmQKPiBiaW5hcnkvY2VydGlmaWNhdGUgaGFzaGVzIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20g dGhlIHBsYXRmb3JtIGtleXN0b3JlIAo+IGJ1ZmZlcgo+IGlmIFNlY3VyZSBCb290IGlzIGVuYWJs ZWQgd2l0aCBQS1MuCj4gSW4gb3JkZXIgdG8gdmVyaWZ5IHRoZSBpbnRlZ2VyaXR5IG9mIHRoZSBr ZXJuZWwsIHRoZSBleHRyYWN0ZWQgZGF0YQo+IHdvdWxkIGJlIHN0b3JlZCBpbiB0aGUgYnVmZmVy IGRiIGFuZCBkYnguCj4gCj4gVGhlIHRydXN0ZWQgY2VydGlmaWNhdGVzIHdpbGwgYmUgZXh0cmFj dGVkIGZyb20gdGhlIGdydWIgRUxGTk9URSBpZgo+IFNlY3VyZSBCb290IGlzCj4gZW5hYmxlZCB3 aXRoIHN0YXRpYyBrZXkuIEluIG9yZGVyIHRvIHZlcmlmeSB0aGUgaW50ZWdlcml0eSBvZiB0aGUg Cj4ga2VybmVsLAo+IHRoZSBleHRyYWN0ZWQgZGF0YSB3b3VsZCBiZSBzdG9yZWQgaW4gdGhlIGJ1 ZmZlciBkYi4KPiAKPiBOb3RlOi0KPiAKPiBpZiB0aGUgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBub3Ig YmluYXJ5IGhhc2ggZXhpc3RzIGluIHRoZSBkaXN0cnVzdGVkIAo+IGxpc3QgKERCWCksCj4gcmVq ZWN0ZWQgaXQgd2hpbGUgZXh0cmFjdGluZyBpdCBmcm9tIHRoZSBwbGF0Zm9ybSBrZXlzdG9yZSBi dWZmZXIuCj4gCj4gU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxzdWRoYWthckBs aW51eC5pYm0uY29tPgo+IC0tLQo+ICBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBw ZW5kZWRzaWcuYyB8IDYzNiArKysrKysrKysrKysrKysrKy0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA1 OTIgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2dydWIt Y29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCj4gYi9ncnViLWNvcmUvY29t bWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwo+IGluZGV4IDVjODJiOTZhNC4uMzE2NDll ODAwIDEwMDY0NAo+IC0tLSBhL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRl ZHNpZy5jCj4gKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2ln LmMKPiBAQCAtMzQsNyArMzQsNyBAQAo+ICAjaW5jbHVkZSA8bGlidGFzbjEuaD4KPiAgI2luY2x1 ZGUgPGdydWIvZW52Lmg+Cj4gICNpbmNsdWRlIDxncnViL2xvY2tkb3duLmg+Cj4gLQo+ICsjaW5j bHVkZSA8Z3J1Yi9wbGF0Zm9ybV9rZXlzdG9yZS5oPgo+ICAjaW5jbHVkZSAiYXBwZW5kZWRzaWcu aCIKPiAKPiAgR1JVQl9NT0RfTElDRU5TRSAoIkdQTHYzKyIpOwo+IEBAIC02NCw5ICs2NCwyMyBA QCBzdHJ1Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUKPiAgICBzdHJ1Y3QgcGtjczdfc2lnbmVk RGF0YSBwa2NzNzsgICAgICAgIC8qIFBhcnNlZCBQS0NTIzcgZGF0YSAqLwo+ICB9Owo+IAo+IC0v KiBUcnVzdGVkIGNlcnRpZmljYXRlcyBmb3IgdmVyaWZ5aW5nIGFwcGVuZGVkIHNpZ25hdHVyZXMg Ki8KPiAtc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmdydWJfdHJ1c3RlZF9rZXk7Cj4gKy8qIFRo aXMgcmVwcmVzZW50cyBhIHRydXN0ZWQvZGlzdHJ1c3RlZCBsaXN0Ki8KPiArc3RydWN0IGdydWJf ZGF0YWJhc2UKPiArewo+ICsgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICprZXlzOyAvKiBDZXJ0 aWZpY2F0ZXMgKi8KPiArICBncnViX3NpemVfdCBrZXlfZW50cmllczsgICAgICAgLyogTnVtYmVy IG9mIGNlcnRpZmljYXRlcyAqLwo+ICsgIGdydWJfdWludDhfdCAqKnNpZ25hdHVyZXM7ICAgICAv KiBDZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVzICovCj4gKyAgZ3J1Yl9zaXplX3QgKnNpZ25hdHVy ZV9zaXplOyAgIC8qIFNpemUgb2YgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2hlcyAKPiAqLwo+ICsg IGdydWJfc2l6ZV90IHNpZ25hdHVyZV9lbnRyaWVzOyAvKiBOdW1iZXIgb2YgY2VydGlmaWNhdGUv YmluYXJ5IAo+IGhhc2hlcyAqLwo+ICt9Owo+ICsKPiArLyogVHJ1c3RlZCBsaXN0ICovCj4gK3N0 cnVjdCBncnViX2RhdGFiYXNlIGdydWJfZGIgPSB7LmtleXMgPSBOVUxMLCAua2V5X2VudHJpZXMg PSAwLAo+IC5zaWduYXR1cmVzID0gTlVMTCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAuc2lnbmF0dXJlX3NpemUgPSBOVUxMLAo+IC5zaWduYXR1cmVfZW50cmllcyA9IDB9Owo+ IAo+ICsvKiBEaXN0cnVzdGVkIGxpc3QgKi8KPiArc3RydWN0IGdydWJfZGF0YWJhc2UgZ3J1Yl9k YnggPSB7LnNpZ25hdHVyZXMgPSBOVUxMLCAuc2lnbmF0dXJlX3NpemUgPSAKPiBOVUxMLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2lnbmF0dXJlX2VudHJpZXMgPSAwfTsK PiAgLyoKPiAgICogRm9yY2UgZ2NyeV9yc2EgdG8gYmUgYSBtb2R1bGUgZGVwZW5kZW5jeS4KPiAg ICoKPiBAQCAtODcsNiArMTAxLDEzIEBAIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpncnViX3Ry dXN0ZWRfa2V5Owo+ICAgKiBhbHNvIHJlc29sdmVzIG91ciBjb25jZXJucyBhYm91dCBsb2FkaW5n IGZyb20gdGhlIGZpbGVzeXN0ZW0uCj4gICAqLwo+ICBleHRlcm4gZ2NyeV9wa19zcGVjX3QgX2dj cnlfcHVia2V5X3NwZWNfcnNhOwo+ICtleHRlcm4gZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0 X3NwZWNfc2hhMjI0Owo+ICtleHRlcm4gZ2NyeV9tZF9zcGVjX3QgX2djcnlfZGlnZXN0X3NwZWNf c2hhMzg0Owo+ICsKPiArLyogcmVsZWFzaW5nIHRydXN0ZWQgbGlzdCBtZW1vcnkgKi8KPiArc3Rh dGljIHZvaWQgZ3J1Yl9yZWxlYXNlX3RydXN0ZWRfbGlzdCAodm9pZCk7Cj4gKy8qIHJlbGVhc2lu ZyBkaXN0cnVzdGVkIGxpc3QgbWVtb3J5ICovCj4gK3N0YXRpYyB2b2lkIGdydWJfcmVsZWFzZV9k aXN0cnVzdGVkX2xpc3QgKHZvaWQpOwo+IAo+ICBzdGF0aWMgZW51bQo+ICB7Cj4gQEAgLTk1LDYg KzExNiwyNDggQEAgc3RhdGljIGVudW0KPiAgICBjaGVja19zaWdzX2ZvcmNlZCA9IDIKPiAgfSBj aGVja19zaWdzID0gY2hlY2tfc2lnc19ubzsKPiAKPiArLyoKPiArICogR1VJRCBjYW4gYmUgdXNl ZCB0byBkZXRlcm1pbmUgdGhlIGhhc2hpbmcgZnVuY3Rpb24gYW5kCj4gKyAqIGdlbmVyYXRlIHRo ZSBoYXNoIHVzaW5nIGRldGVybWluZWQgaGFzaGluZyBmdW5jdGlvbi4KPiArICovCj4gK3N0YXRp YyBncnViX2Vycl90Cj4gK2dydWJfZ2V0X2hhc2ggKGNvbnN0IGdydWJfdXVpZF90ICpndWlkLCBj b25zdCBncnViX3VpbnQ4X3QgKmRhdGEsCj4gY29uc3QgZ3J1Yl9zaXplX3QgZGF0YV9zaXplLAo+ ICsgICAgICAgICAgICAgICBncnViX3VpbnQ4X3QgKmhhc2gsIGdydWJfc2l6ZV90ICpoYXNoX3Np emUpCj4gK3sKPiArICBnY3J5X21kX3NwZWNfdCAqaGFzaF9mdW5jID0gTlVMTDsKPiArCj4gKyAg aWYgKGd1aWQgPT0gTlVMTCkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRf T0ZfUkFOR0UsICJHVUlEIGlzIG51bGwiKTsKPiArCj4gKyAgaWYgKGdydWJfbWVtY21wIChndWlk LCAmR1JVQl9QS1NfQ0VSVF9TSEEyNTZfR1VJRCwgR1JVQl9VVUlEX1NJWkUpIAo+ID09IDAgfHwK PiArICAgICAgICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEEy NTZfR1VJRCwKPiBHUlVCX1VVSURfU0laRSkgPT0gMCkKPiArICAgIGhhc2hfZnVuYyA9ICZfZ2Ny eV9kaWdlc3Rfc3BlY19zaGEyNTY7Cj4gKyAgZWxzZSBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZH UlVCX1BLU19DRVJUX1NIQTM4NF9HVUlELAo+IEdSVUJfVVVJRF9TSVpFKSA9PSAwIHx8Cj4gKyAg ICAgICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0X0dV SUQsCj4gR1JVQl9VVUlEX1NJWkUpID09IDApCj4gKyAgICBoYXNoX2Z1bmMgPSAmX2djcnlfZGln ZXN0X3NwZWNfc2hhMzg0Owo+ICsgIGVsc2UgaWYgKGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9Q S1NfQ0VSVF9TSEE1MTJfR1VJRCwKPiBHUlVCX1VVSURfU0laRSkgPT0gMCB8fAo+ICsgICAgICAg ICAgIGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9YNTA5X1NIQTUxMl9HVUlELAo+ IEdSVUJfVVVJRF9TSVpFKSA9PSAwKQo+ICsgICAgaGFzaF9mdW5jID0gJl9nY3J5X2RpZ2VzdF9z cGVjX3NoYTUxMjsKPiArICBlbHNlCj4gKyAgICByZXR1cm4gR1JVQl9FUlJfVU5LTk9XTl9DT01N QU5EOwo+ICsKPiArICBncnViX21lbXNldCAoaGFzaCwgMHgwMCwgR1JVQl9NQVhfSEFTSF9TSVpF KTsKPiArICBncnViX2NyeXB0b19oYXNoIChoYXNoX2Z1bmMsIGhhc2gsIGRhdGEsIGRhdGFfc2l6 ZSk7Cj4gKyAgKmhhc2hfc2l6ZSA9ICBoYXNoX2Z1bmMtPm1kbGVuOwo+ICsKPiArICByZXR1cm4g R1JVQl9FUlJfTk9ORTsKPiArfQo+ICsKPiArLyogYWRkaW5nIHRoZSBjZXJ0aWZpY2F0ZS9iaW5h cnkgaGFzaCBpbnRvIHRoZSB0cnVzdGVkL2Rpc3RydXN0ZWQgbGlzdCAKPiAqLwo+ICtzdGF0aWMg Z3J1Yl9lcnJfdAo+ICtncnViX2FkZF9oYXNoIChjb25zdCBncnViX3VpbnQ4X3QgKipkYXRhLCBj b25zdCBncnViX3NpemVfdCBkYXRhX3NpemUsCj4gKyAgICAgICAgICAgICAgIGdydWJfdWludDhf dCAqKipzaWduYXR1cmVfbGlzdCwgZ3J1Yl9zaXplX3QKPiAqKnNpZ25hdHVyZV9zaXplX2xpc3Qs Cj4gKyAgICAgICAgICAgICAgIGdydWJfc2l6ZV90ICpzaWduYXR1cmVfbGlzdF9lbnRyaWVzKQo+ ICt7Cj4gKyAgZ3J1Yl91aW50OF90ICoqc2lnbmF0dXJlcyA9ICpzaWduYXR1cmVfbGlzdDsKPiAr ICBncnViX3NpemVfdCAqc2lnbmF0dXJlX3NpemUgPSAqc2lnbmF0dXJlX3NpemVfbGlzdDsKPiAr ICBncnViX3NpemVfdCBzaWduYXR1cmVfZW50cmllcyA9ICpzaWduYXR1cmVfbGlzdF9lbnRyaWVz Owo+ICsKPiArICBpZiAoKmRhdGEgPT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKPiArICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZS9iaW5h cnkKPiBoYXNoIGRhdGEvc2l6ZSBpcyBudWxsIik7Cj4gKwo+ICsgIGlmIChzaWduYXR1cmVzID09 IE5VTEwgJiYgc2lnbmF0dXJlX3NpemUgPT0gTlVMTCkKPiArICAgIHsKPiArICAgICAgc2lnbmF0 dXJlcyA9IGdydWJfemFsbG9jIChzaXplb2YgKGdydWJfdWludDhfdCAqKSk7Cj4gKyAgICAgIHNp Z25hdHVyZV9zaXplID0gZ3J1Yl96YWxsb2MgKHNpemVvZiAoZ3J1Yl9zaXplX3QpKTsKPiArICAg IH0KPiArICBlbHNlCj4gKyAgICB7Cj4gKyAgICAgIHNpZ25hdHVyZXMgPSBncnViX3JlYWxsb2Mg KHNpZ25hdHVyZXMsIHNpemVvZiAoZ3J1Yl91aW50OF90ICopCj4gKiAoc2lnbmF0dXJlX2VudHJp ZXMgKyAxKSk7Cj4gKyAgICAgIHNpZ25hdHVyZV9zaXplID0gZ3J1Yl9yZWFsbG9jIChzaWduYXR1 cmVfc2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAo Z3J1Yl9zaXplX3QpICoKPiAoc2lnbmF0dXJlX2VudHJpZXMgKyAxKSk7Cj4gKyAgICB9Cj4gKwo+ ICsgIGlmIChzaWduYXR1cmVzID09IE5VTEwgfHwgc2lnbmF0dXJlX3NpemUgPT0gTlVMTCkKPiAr ICAgIHsKPiArICAgICAgLyoKPiArICAgICAgICogYWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlIGZy ZWVkIGJ5Cj4gKyAgICAgICAqIGdydWJfcmVsZWFzZV90cnVzdGVkX2xpc3QvZ3J1Yl9yZWxlYXNl X2Rpc3RydXN0ZWRfbGlzdAo+ICsgICAgICAgKi8KPiArICAgICAgaWYgKHNpZ25hdHVyZXMgIT0g TlVMTCkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAqc2lnbmF0dXJlX2xpc3QgPSBzaWduYXR1 cmVzOwo+ICsgICAgICAgICAgKnNpZ25hdHVyZV9saXN0X2VudHJpZXMgPSBzaWduYXR1cmVfZW50 cmllcyArIDE7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgaWYgKHNpZ25hdHVyZV9zaXplICE9 IE5VTEwpCj4gKyAgICAgICAgKnNpZ25hdHVyZV9zaXplX2xpc3QgPSBzaWduYXR1cmVfc2l6ZTsK PiArCj4gKyAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAi b3V0IG9mIG1lbW9yeSIpOwo+ICsgICAgfQo+ICsKPiArICBzaWduYXR1cmVzW3NpZ25hdHVyZV9l bnRyaWVzXSA9IChncnViX3VpbnQ4X3QgKikgKmRhdGE7Cj4gKyAgc2lnbmF0dXJlX3NpemVbc2ln bmF0dXJlX2VudHJpZXNdID0gZGF0YV9zaXplOwo+ICsgIHNpZ25hdHVyZV9lbnRyaWVzKys7Cj4g KyAgKmRhdGEgPSBOVUxMOwo+ICsKPiArICAqc2lnbmF0dXJlX2xpc3QgPSBzaWduYXR1cmVzOwo+ ICsgICpzaWduYXR1cmVfc2l6ZV9saXN0ID0gc2lnbmF0dXJlX3NpemU7Cj4gKyAgKnNpZ25hdHVy ZV9saXN0X2VudHJpZXMgPSBzaWduYXR1cmVfZW50cmllczsKPiArCj4gKyAgcmV0dXJuIEdSVUJf RVJSX05PTkU7Cj4gK30KPiArCj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dydWJfaXNfeDUwOSAo Y29uc3QgZ3J1Yl91dWlkX3QgKmd1aWQpCj4gK3sKPiArICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQs ICZHUlVCX1BLU19DRVJUX1g1MDlfR1VJRCwgR1JVQl9VVUlEX1NJWkUpID09IAo+IDApCj4gKyAg ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKPiArCj4gKyAgcmV0dXJuIEdSVUJfRVJSX1VOS05PV05f Q09NTUFORDsKPiArfQo+ICsKPiArc3RhdGljIGdydWJfZXJyX3QKPiArZ3J1Yl9pc19jZXJ0X21h dGNoIChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGlzdHJ1c3RlZF9jZXJ0LAo+ICsg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpkYl9jZXJ0 KQo+ICt7Cj4gKwo+ICsgIGlmIChncnViX21lbWNtcCAoZGlzdHJ1c3RlZF9jZXJ0LT5zdWJqZWN0 LCBkYl9jZXJ0LT5zdWJqZWN0LAo+IGRiX2NlcnQtPnN1YmplY3RfbGVuKSA9PSAwCj4gKyAgICAg ICYmIGdydWJfbWVtY21wIChkaXN0cnVzdGVkX2NlcnQtPnNlcmlhbCwgZGJfY2VydC0+c2VyaWFs LAo+IGRiX2NlcnQtPnNlcmlhbF9sZW4pID09IDAKPiArICAgICAgJiYgZ3J1Yl9tZW1jbXAgKGRp c3RydXN0ZWRfY2VydC0+bXBpc1swXSwgZGJfY2VydC0+bXBpc1swXSwKPiBzaXplb2YgKGRiX2Nl cnQtPm1waXNbMF0pKSA9PSAwCj4gKyAgICAgICYmIGdydWJfbWVtY21wIChkaXN0cnVzdGVkX2Nl cnQtPm1waXNbMV0sIGRiX2NlcnQtPm1waXNbMV0sCj4gc2l6ZW9mIChkYl9jZXJ0LT5tcGlzWzFd KSkgPT0gMCkKPiArICAgIHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICsKPiArICByZXR1cm4gR1JV Ql9FUlJfVU5LTk9XTl9DT01NQU5EOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiB2ZXJpZnkgdGhlIGNl cnRpZmljYXRlIGFnYWluc3QgdGhlIGNlcnRpZmljYXRlIGZyb20gcGxhdGZvcm0KPiBrZXlzdG9y ZSBidWZmZXIncwo+ICsgKiBkaXN0cnVzdGVkIGxpc3QsIGlmIGl0IGlzIHByZXNlbnQsIHJldHVy biBhIGJhZCBzaWduYXR1cmUuCj4gKyAqIGVsc2UsIG5vIGVycm9ycy4KPiArICovCj4gK3N0YXRp YyBncnViX2Vycl90Cj4gK2dydWJfaXNfZGlzdHJ1c3RlZF9jZXJ0IChjb25zdCBzdHJ1Y3QgeDUw OV9jZXJ0aWZpY2F0ZSAqZGJfY2VydCkKPiArewo+ICsgIGdydWJfZXJyX3QgcmMgPSBHUlVCX0VS Ul9OT05FOwo+ICsgIGdydWJfc2l6ZV90IGkgPSAwOwo+ICsgIHN0cnVjdCB4NTA5X2NlcnRpZmlj YXRlICpkaXN0cnVzdGVkX2NlcnQgPSBOVUxMOwo+ICsKPiArICBmb3IgKGkgPSAwOyBpIDwgZ3J1 Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhfZW50cmllczsgaSsrKQo+ICsgICAgewo+ICsgICAgICBp ZiAoZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhbaV0uZGF0YSA9PSBOVUxMICYmCj4gKyAgICAg ICAgICBncnViX3BsYXRmb3JtX2tleXN0b3JlLmRieFtpXS5kYXRhX3NpemUgPT0gMCkKPiArICAg ICAgICBjb250aW51ZTsKPiArCj4gKyAgICAgIGlmIChncnViX2lzX3g1MDkgKCZncnViX3BsYXRm b3JtX2tleXN0b3JlLmRieFtpXS5ndWlkKSA9PSAKPiBHUlVCX0VSUl9OT05FKQo+ICsgICAgICAg IHsKPiArICAgICAgICAgIGRpc3RydXN0ZWRfY2VydCA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0 cnVjdCAKPiB4NTA5X2NlcnRpZmljYXRlKSk7Cj4gKyAgICAgICAgICBpZiAoZGlzdHJ1c3RlZF9j ZXJ0ID09IE5VTEwpCj4gKyAgICAgICAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9P VVRfT0ZfTUVNT1JZLCAib3V0IG9mIAo+IG1lbW9yeSIpOwo+ICsKPiArICAgICAgICAgIHJjID0g cGFyc2VfeDUwOV9jZXJ0aWZpY2F0ZSAKPiAoZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhbaV0u ZGF0YSwKPiArCj4gZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhbaV0uZGF0YV9zaXplLCBkaXN0 cnVzdGVkX2NlcnQpOwo+ICsgICAgICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCj4gKyAg ICAgICAgICAgIHsKPiArICAgICAgICAgICAgICBncnViX2ZyZWUgKGRpc3RydXN0ZWRfY2VydCk7 Cj4gKyAgICAgICAgICAgICAgY29udGludWU7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAg ICAgICBpZiAoZ3J1Yl9pc19jZXJ0X21hdGNoIChkaXN0cnVzdGVkX2NlcnQsIGRiX2NlcnQpID09 IAo+IEdSVUJfRVJSX05PTkUpCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICBncnVi X3ByaW50ZiAoIldhcm5pbmc6IGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSBDTj0nJXMnIGlzIAo+IGln bm9yZWQgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmVjYXVzZSBpdCBpcyBvbiB0 aGUgZGlzdHJ1c3RlZCBsaXN0Cj4gKGRieCkuXG4iLCBkYl9jZXJ0LT5zdWJqZWN0KTsKPiArICAg ICAgICAgICAgICBncnViX2ZyZWUgKGdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4W2ldLmRhdGEp Owo+ICsgICAgICAgICAgICAgIGdydWJfbWVtc2V0ICgmZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5k YnhbaV0sIDB4MDAsCj4gc2l6ZW9mIChncnViX3Brc19zZF90KSk7Cj4gKyAgICAgICAgICAgICAg Y2VydGlmaWNhdGVfcmVsZWFzZSAoZGlzdHJ1c3RlZF9jZXJ0KTsKPiArICAgICAgICAgICAgICBn cnViX2ZyZWUgKGRpc3RydXN0ZWRfY2VydCk7Cj4gKyAgICAgICAgICAgICAgcmV0dXJuIEdSVUJf RVJSX0JBRF9TSUdOQVRVUkU7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAgICAgICAgICBjZXJ0 aWZpY2F0ZV9yZWxlYXNlIChkaXN0cnVzdGVkX2NlcnQpOwo+ICsgICAgICAgICAgZ3J1Yl9mcmVl IChkaXN0cnVzdGVkX2NlcnQpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgcmV0dXJu IEdSVUJfRVJSX05PTkU7Cj4gK30KPiArCj4gKy8qIGFkZGluZyB0aGUgY2VydGlmaWNhdGUgaW50 byB0aGUgdHJ1c3RlZC9kaXN0cnVzdGVkIGxpc3QgKi8KPiArc3RhdGljIGdydWJfZXJyX3QKPiAr Z3J1Yl9hZGRfY2VydGlmaWNhdGUgKGNvbnN0IGdydWJfdWludDhfdCAqZGF0YSwgY29uc3QgZ3J1 Yl9zaXplX3QgCj4gZGF0YV9zaXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGdy dWJfZGF0YWJhc2UgKmRhdGFiYXNlLCBjb25zdCAKPiBncnViX3NpemVfdCBpc19kYikKPiArewo+ ICsgIGdydWJfZXJyX3QgcmMgPSBHUlVCX0VSUl9OT05FOwo+ICsgIGdydWJfc2l6ZV90IGtleV9l bnRyaWVzID0gZGF0YWJhc2UtPmtleV9lbnRyaWVzOwo+ICsgIHN0cnVjdCB4NTA5X2NlcnRpZmlj YXRlICpjZXJ0ID0gTlVMTDsKPiArCj4gKyAgaWYgKGRhdGEgPT0gTlVMTCB8fCBkYXRhX3NpemUg PT0gMCkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJj ZXJ0aWZpY2F0ZSBkYXRhL3NpemUgCj4gaXMgbnVsbCIpOwo+ICsKPiArICBjZXJ0ID0gZ3J1Yl96 YWxsb2MgKHNpemVvZiAoc3RydWN0IHg1MDlfY2VydGlmaWNhdGUpKTsKPiArICBpZiAoY2VydCA9 PSBOVUxMKQo+ICsgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlks ICJvdXQgb2YgbWVtb3J5Iik7Cj4gKwo+ICsgIHJjID0gcGFyc2VfeDUwOV9jZXJ0aWZpY2F0ZSAo ZGF0YSwgZGF0YV9zaXplLCBjZXJ0KTsKPiArICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKPiAr ICAgIHsKPiArICAgICAgZ3J1Yl9wcmludGYgKCJXYXJuaW5nOiBza2lwcGluZyAlcyBjZXJ0aWZp Y2F0ZSAoJWQpXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgKGlzX2RiID8gInRydXN0ZWQiOiJk aXN0cnVzZWQiKSwgcmMpOwo+ICsgICAgICBncnViX2ZyZWUgKGNlcnQpOwo+ICsgICAgICByZXR1 cm4gcmM7Cj4gKyAgICB9Cj4gKwo+ICsgIGlmIChpc19kYikKPiArICAgIHsKPiArICAgICAgcmMg PSBncnViX2lzX2Rpc3RydXN0ZWRfY2VydCAoY2VydCk7Cj4gKyAgICAgIGlmIChyYyAhPSBHUlVC X0VSUl9OT05FKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2Ug KGNlcnQpOwo+ICsgICAgICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKPiArICAgICAgICAgIHJldHVy biByYzsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgIGdydWJfZHByaW50ZiAoImFwcGVu ZGVkc2lnIiwgImFkZCBhICVzIGNlcnRpZmljYXRlIENOPSclcydcbiIsCj4gKyAgICAgICAgICAg ICAgICAoaXNfZGIgPyAidHJ1c3RlZCI6ImRpc3RydXNlZCIpLCBjZXJ0LT5zdWJqZWN0KTsKPiAr Cj4gKyAga2V5X2VudHJpZXMrKzsKPiArICBjZXJ0LT5uZXh0ID0gZGF0YWJhc2UtPmtleXM7Cj4g KyAgZGF0YWJhc2UtPmtleXMgPSBjZXJ0Owo+ICsgIGRhdGFiYXNlLT5rZXlfZW50cmllcyA9IGtl eV9lbnRyaWVzOwo+ICsKPiArICByZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyBncnViX2Vy cl90Cj4gK2dydWJfcmVhZF9maWxlIChjb25zdCBncnViX2ZpbGVfdCBmaWxlLCBncnViX3VpbnQ4 X3QgKipkYXRhLAo+IGdydWJfc3NpemVfdCAqZGF0YV9zaXplKQo+ICt7Cj4gKyAgZ3J1Yl91aW50 OF90ICpidWZmZXIgPSBOVUxMOwo+ICsgIGdydWJfc3NpemVfdCByZWFkX3NpemUgPSAwOwo+ICsg IGdydWJfb2ZmX3QgdG90YWxfcmVhZF9zaXplID0gMDsKPiArICBncnViX29mZl90IGZpbGVfc2l6 ZSA9IGdydWJfZmlsZV9zaXplIChmaWxlKTsKPiArCj4gKyAgaWYgKGZpbGVfc2l6ZSA9PSBHUlVC X0ZJTEVfU0laRV9VTktOT1dOKQo+ICsgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JB RF9BUkdVTUVOVCwKPiArICAgICAgICAgICAgICAgICAgICAgICBOXygiY291bGQgbm90IHBhcnNl IHRoZSB1bmtub3duIHNpemUgb2YgdGhlIAo+IGZpbGUuIikpOwo+ICsKPiArICBidWZmZXIgPSBn cnViX3phbGxvYyAoZmlsZV9zaXplKTsKPiArICBpZiAoYnVmZmVyID09IE5VTEwpCj4gKyAgICBy ZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwgTl8oIm91dCBvZiBtZW1v cnkiKSk7Cj4gKwo+ICsgIHdoaWxlICh0b3RhbF9yZWFkX3NpemUgPCBmaWxlX3NpemUpCj4gKyAg ICB7Cj4gKyAgICAgIHJlYWRfc2l6ZSA9IGdydWJfZmlsZV9yZWFkIChmaWxlLCAmYnVmZmVyW3Rv dGFsX3JlYWRfc2l6ZV0sCj4gZmlsZV9zaXplIC0gdG90YWxfcmVhZF9zaXplKTsKPiArICAgICAg aWYgKHJlYWRfc2l6ZSA8IDApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgZ3J1Yl9mcmVlIChi dWZmZXIpOwo+ICsgICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX1JFQURfRVJS T1IsIE5fKCJ1bmFibGUgdG8gcmVhZAo+IHRoZSBmaWxlIikpOwo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgIHRvdGFsX3JlYWRfc2l6ZSArPSByZWFkX3NpemU7Cj4gKyAgICB9Cj4gKwo+ICsgICpk YXRhID0gYnVmZmVyOwo+ICsgICpkYXRhX3NpemUgPSB0b3RhbF9yZWFkX3NpemU7Cj4gKwo+ICsg IHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICt9Cj4gKwo+ICBzdGF0aWMgY29uc3QgY2hhciAqCj4g IGdydWJfZW52X3JlYWRfc2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2YXIgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpLAo+ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFsIF9fYXR0 cmlidXRlX18gKCh1bnVzZWQpKSkKPiBAQCAtMjQ4LDcgKzUxMSw3IEBAIGdydWJfdmVyaWZ5X2Fw cGVuZGVkX3NpZ25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90Cj4gKmJ1ZiwgZ3J1Yl9zaXplX3Qg YnVmc2l6ZSkKPiAgICBzdHJ1Y3QgcGtjczdfc2lnbmVySW5mbyAqc2k7Cj4gICAgaW50IGk7Cj4g Cj4gLSAgaWYgKCFncnViX3RydXN0ZWRfa2V5KQo+ICsgIGlmICghZ3J1Yl9kYi5rZXlfZW50cmll cykKPiAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCBOXygi Tm8gdHJ1c3RlZCBrZXlzIHRvCj4gdmVyaWZ5IGFnYWluc3QiKSk7Cj4gCj4gICAgZXJyID0gZXh0 cmFjdF9hcHBlbmRlZF9zaWduYXR1cmUgKGJ1ZiwgYnVmc2l6ZSwgJnNpZyk7Cj4gQEAgLTI3OSw3 ICs1NDIsNyBAQCBncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0IGdydWJfdWlu dDhfdAo+ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUpCj4gICAgICAgICAgICAgICAgICAgICAg ZGF0YXNpemUsIGksIGhhc2hbMF0sIGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOwo+IAo+ICAg ICAgICBlcnIgPSBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOwo+IC0gICAgICBmb3IgKHBrID0gZ3J1 Yl90cnVzdGVkX2tleTsgcGs7IHBrID0gcGstPm5leHQpCj4gKyAgICAgIGZvciAocGsgPSBncnVi X2RiLmtleXM7IHBrOyBwayA9IHBrLT5uZXh0KQo+ICAgICAgICAgIHsKPiAgICAgICAgICAgIHJj ID0gZ3J1Yl9jcnlwdG9fcnNhX3BhZCAoJmhhc2htcGksIGhhc2gsIHNpLT5oYXNoLCAKPiBway0+ bXBpc1swXSk7Cj4gICAgICAgICAgICBpZiAocmMpCj4gQEAgLTM3NiwxNiArNjM5LDE2IEBAIGdy dWJfY21kX2Rpc3RydXN0IChncnViX2NvbW1hbmRfdCBjbWQKPiBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSksIGludCBhcmdjLCBjaGFyICoKPiAKPiAgICBpZiAoY2VydF9udW0gPT0gMSkKPiAgICAg IHsKPiAtICAgICAgY2VydCA9IGdydWJfdHJ1c3RlZF9rZXk7Cj4gLSAgICAgIGdydWJfdHJ1c3Rl ZF9rZXkgPSBjZXJ0LT5uZXh0Owo+ICsgICAgICBjZXJ0ID0gZ3J1Yl9kYi5rZXlzOwo+ICsgICAg ICBncnViX2RiLmtleXMgPSBjZXJ0LT5uZXh0Owo+IAo+ICAgICAgICBjZXJ0aWZpY2F0ZV9yZWxl YXNlIChjZXJ0KTsKPiAgICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKPiAgICAgICAgcmV0dXJuIEdS VUJfRVJSX05PTkU7Cj4gICAgICB9Cj4gICAgaSA9IDI7Cj4gLSAgcHJldiA9IGdydWJfdHJ1c3Rl ZF9rZXk7Cj4gLSAgY2VydCA9IGdydWJfdHJ1c3RlZF9rZXktPm5leHQ7Cj4gKyAgcHJldiA9IGdy dWJfZGIua2V5czsKPiArICBjZXJ0ID0gZ3J1Yl9kYi5rZXlzLT5uZXh0Owo+ICAgIHdoaWxlIChj ZXJ0KQo+ICAgICAgewo+ICAgICAgICBpZiAoaSA9PSBjZXJ0X251bSkKPiBAQCAtNDMyLDggKzY5 NSw4IEBAIGdydWJfY21kX3RydXN0IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHRyaWJ1dGVfXwo+ ICgodW51c2VkKSksIGludCBhcmdjLCBjaGFyICoqYXIKPiAgICAgIH0KPiAgICBncnViX2Rwcmlu dGYgKCJhcHBlbmRlZHNpZyIsICJMb2FkZWQgY2VydGlmaWNhdGUgd2l0aCBDTjogJXNcbiIsCj4g Y2VydC0+c3ViamVjdCk7Cj4gCj4gLSAgY2VydC0+bmV4dCA9IGdydWJfdHJ1c3RlZF9rZXk7Cj4g LSAgZ3J1Yl90cnVzdGVkX2tleSA9IGNlcnQ7Cj4gKyAgY2VydC0+bmV4dCA9IGdydWJfZGIua2V5 czsKPiArICBncnViX2RiLmtleXMgPSBjZXJ0Owo+IAo+ICAgIHJldHVybiBHUlVCX0VSUl9OT05F Owo+ICB9Cj4gQEAgLTQ0Niw3ICs3MDksNyBAQCBncnViX2NtZF9saXN0IChncnViX2NvbW1hbmRf dCBjbWQgX19hdHRyaWJ1dGVfXwo+ICgodW51c2VkKSksIGludCBhcmdjIF9fYXR0cmlidXRlCj4g ICAgaW50IGNlcnRfbnVtID0gMTsKPiAgICBncnViX3NpemVfdCBpOwo+IAo+IC0gIGZvciAoY2Vy dCA9IGdydWJfdHJ1c3RlZF9rZXk7IGNlcnQ7IGNlcnQgPSBjZXJ0LT5uZXh0KQo+ICsgIGZvciAo Y2VydCA9IGdydWJfZGIua2V5czsgY2VydDsgY2VydCA9IGNlcnQtPm5leHQpCj4gICAgICB7Cj4g ICAgICAgIGdydWJfcHJpbnRmIChOXygiQ2VydGlmaWNhdGUgJWQ6XG4iKSwgY2VydF9udW0pOwo+ IAo+IEBAIC01MzksNiArODAyLDI4MCBAQCBzdGF0aWMgc3RydWN0IGdydWJfZnMgcHNldWRvX2Zz ID0geyAubmFtZSA9Cj4gInBzZXVkbyIsIC5mc19yZWFkID0gcHNldWRvX3JlYWQgfTsKPiAKPiAg c3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJpZnksIGNtZF9saXN0LCBjbWRfZGlzdHJ1c3Qs IGNtZF90cnVzdDsKPiAKPiArLyoKPiArICogdmVyaWZ5IHRoZSB0cnVzdGVkIGNlcnRpZmljYXRl IGFnYWluc3QgdGhlIGNlcnRpZmljYXRlIGhhc2hlcyBmcm9tCj4gcGxhdGZvcm0ga2V5c3RvcmUg YnVmZmVyJ3MKPiArICogZGlzdHJ1c3RlZCBsaXN0LCBpZiBpdCBpcyBwcmVzZW50LCByZXR1cm4g YSBiYWQgc2lnbmF0dXJlLgo+ICsgKiBlbHNlLCBubyBlcnJvcnMuCj4gKyAqLwo+ICtzdGF0aWMg Z3J1Yl9lcnJfdAo+ICtncnViX2lzX2Rpc3RydXN0ZWRfY2VydF9oYXNoIChjb25zdCBncnViX3Vp bnQ4X3QgKmRhdGEsIGNvbnN0Cj4gZ3J1Yl9zaXplX3QgZGF0YV9zaXplKQo+ICt7Cj4gKyAgZ3J1 Yl9lcnJfdCByYyA9IEdSVUJfRVJSX05PTkU7Cj4gKyAgZ3J1Yl9zaXplX3QgaSA9IDAsIGNlcnRf aGFzaF9zaXplID0gMDsKPiArICBncnViX3VpbnQ4X3QgY2VydF9oYXNoW0dSVUJfTUFYX0hBU0hf U0laRV0gPSB7IDAgfTsKPiArCj4gKyAgaWYgKGRhdGEgPT0gTlVMTCB8fCBkYXRhX3NpemUgPT0g MCkKPiArICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJ0cnVz dGVkIGNlcnRpZmljYXRlCj4gZGF0YS9zaXplIGlzIG51bGwiKTsKPiArCj4gKyAgZm9yIChpID0g MDsgaSA8IGdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4X2VudHJpZXM7IGkrKykKPiArICAgIHsK PiArICAgICAgaWYgKGdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4W2ldLmRhdGEgPT0gTlVMTCAm Jgo+ICsgICAgICAgICAgZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhbaV0uZGF0YV9zaXplID09 IDApCj4gKyAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICByYyA9IGdydWJfZ2V0X2hhc2gg KCZncnViX3BsYXRmb3JtX2tleXN0b3JlLmRieFtpXS5ndWlkLCBkYXRhLCAKPiBkYXRhX3NpemUs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9oYXNoLCAmY2VydF9oYXNoX3NpemUp Owo+ICsgICAgICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKPiArICAgICAgICBjb250aW51ZTsK PiArCj4gKyAgICAgIGlmIChjZXJ0X2hhc2hfc2l6ZSA9PSBncnViX3BsYXRmb3JtX2tleXN0b3Jl LmRieFtpXS5kYXRhX3NpemUgJiYKPiArICAgICAgICAgIGdydWJfbWVtY21wIChncnViX3BsYXRm b3JtX2tleXN0b3JlLmRieFtpXS5kYXRhLCBjZXJ0X2hhc2gsCj4gY2VydF9oYXNoX3NpemUpID09 IDApCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgZ3J1Yl9wcmludGYgKCJXYXJuaW5nOiBhIHRy dXN0ZWQgY2VydGlmaWNhdGUKPiAoJTAyeCUwMnglMDJ4JTAyeCkgaXMgaWdub3JlZCAiCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgImJlY2F1c2UgdGhpcyBjZXJ0aWZpY2F0ZSBoYXNoIGlzIG9u IHRoZQo+IGRpc3RydXN0ZWQgbGlzdCAoZGJ4KS5cbiIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgY2VydF9oYXNoWzBdLCBjZXJ0X2hhc2hbMV0sIGNlcnRfaGFzaFsyXSwgCj4gY2VydF9oYXNo WzNdKTsKPiArICAgICAgICAgIGdydWJfZnJlZSAoZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhb aV0uZGF0YSk7Cj4gKyAgICAgICAgICBncnViX21lbXNldCAoJmdydWJfcGxhdGZvcm1fa2V5c3Rv cmUuZGJ4W2ldLCAweDAwLCBzaXplb2YKPiAoZ3J1Yl9wa3Nfc2RfdCkpOwo+ICsgICAgICAgICAg cmV0dXJuIEdSVUJfRVJSX0JBRF9TSUdOQVRVUkU7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsK PiArICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKPiArfQo+ICsKPiArLyoKPiArICogdmVyaWZ5IHRo ZSB0cnVzdGVkIGJpbmFyeSBoYXNoIGFnYWluc3QgdGhlIHBsYXRmb3JtIGtleXN0b3JlIAo+IGJ1 ZmZlcidzCj4gKyAqIGRpc3RydXN0ZWQgbGlzdCwgaWYgaXQgaXMgcHJlc2VudCwgcmV0dXJuIGEg YmFkIHNpZ25hdHVyZS4KPiArICogZWxzZSwgbm8gZXJyb3JzLgo+ICsgKi8KPiArc3RhdGljIGdy dWJfZXJyX3QKPiArZ3J1Yl9pc19kaXN0cnVzdGVkX2JpbmFyeV9oYXNoIChjb25zdCBncnViX3Vp bnQ4X3QgKmJpbmFyeV9oYXNoLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGdydWJfc2l6ZV90IGJpbmFyeV9oYXNoX3NpemUpCj4gK3sKPiArICBncnViX3NpemVfdCBp ID0gMDsKPiArCj4gKyAgZm9yIChpID0gMDsgaSA8IGdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4 X2VudHJpZXM7IGkrKykKPiArICAgIHsKPiArICAgICAgaWYgKGdydWJfcGxhdGZvcm1fa2V5c3Rv cmUuZGJ4W2ldLmRhdGEgPT0gTlVMTCAmJgo+ICsgICAgICAgICAgZ3J1Yl9wbGF0Zm9ybV9rZXlz dG9yZS5kYnhbaV0uZGF0YV9zaXplID09IDApCj4gKyAgICAgICAgY29udGludWU7Cj4gKwo+ICsg ICAgICBpZiAoYmluYXJ5X2hhc2hfc2l6ZSA9PSBncnViX3BsYXRmb3JtX2tleXN0b3JlLmRieFtp XS5kYXRhX3NpemUgCj4gJiYKPiArICAgICAgICAgIGdydWJfbWVtY21wIChncnViX3BsYXRmb3Jt X2tleXN0b3JlLmRieFtpXS5kYXRhLAo+IGJpbmFyeV9oYXNoLCBiaW5hcnlfaGFzaF9zaXplKSA9 PSAwKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgIGdydWJfcHJpbnRmICgiV2FybmluZzogYSB0 cnVzdGVkIGJpbmFyeSBoYXNoCj4gKCUwMnglMDJ4JTAyeCUwMngpIGlzIGlnbm9yZWQiCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIGl0IGlzIG9uIHRoZSBkaXN0cnVzdGVkIGxp c3QgCj4gKGRieCkuXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJpbmFyeV9oYXNoWzBd LCBiaW5hcnlfaGFzaFsxXSwKPiBiaW5hcnlfaGFzaFsyXSwgYmluYXJ5X2hhc2hbM10pOwo+ICsg ICAgICAgICAgZ3J1Yl9mcmVlIChncnViX3BsYXRmb3JtX2tleXN0b3JlLmRieFtpXS5kYXRhKTsK PiArICAgICAgICAgIGdydWJfbWVtc2V0ICgmZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhbaV0s IDB4MDAsIHNpemVvZgo+IChncnViX3Brc19zZF90KSk7Cj4gKyAgICAgICAgICByZXR1cm4gR1JV Ql9FUlJfQkFEX1NJR05BVFVSRTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgIHJldHVy biBHUlVCX0VSUl9OT05FOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBleHRyYWN0cyB0aGUgYmluYXJ5 IGhhc2hlcyBmcm9tIHRoZSBwbGF0Zm9ybSBrZXlzdG9yZSBidWZmZXIsCj4gKyAqIGFuZCBhZGRz IGl0IHRvIHRoZSB0cnVzdGVkIGxpc3QgaWYgbm90IGV4aXN0cyBpbiBkaXN0cnVzdGVkIGxpc3Qu Cj4gKyAqLwo+ICtzdGF0aWMgZ3J1Yl9lcnJfdAo+ICtncnViX2FkZF90cnVzdGVkX2JpbmFyeV9o YXNoIChjb25zdCBncnViX3VpbnQ4X3QgKipkYXRhLCBjb25zdAo+IGdydWJfc2l6ZV90IGRhdGFf c2l6ZSkKPiArewo+ICsgIGdydWJfZXJyX3QgcmMgPSBHUlVCX0VSUl9OT05FOwo+ICsKPiArICBp ZiAoKmRhdGEgPT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKPiArICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJ0cnVzdGVkIGJpbmFyeSBoYXNoCj4gZGF0YS9z aXplIGlzIG51bGwiKTsKPiArCj4gKyAgcmMgPSBncnViX2lzX2Rpc3RydXN0ZWRfYmluYXJ5X2hh c2ggKCpkYXRhLCBkYXRhX3NpemUpOwo+ICsgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQo+ICsg ICAgcmV0dXJuIHJjOwo+ICsKPiArICByYyA9IGdydWJfYWRkX2hhc2ggKGRhdGEsIGRhdGFfc2l6 ZSwgJmdydWJfZGIuc2lnbmF0dXJlcywKPiAmZ3J1Yl9kYi5zaWduYXR1cmVfc2l6ZSwKPiArICAg ICAgICAgICAgICAgICAgICAgICZncnViX2RiLnNpZ25hdHVyZV9lbnRyaWVzKTsKPiArICByZXR1 cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dydWJfaXNfaGFzaCAoY29u c3QgZ3J1Yl91dWlkX3QgKmd1aWQpCj4gK3sKPiArICAvKiBHVUlEIHR5cGUgb2YgdGhlIGJpbmFy eSBoYXNoICovCj4gKyAgaWYgKGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEy NTZfR1VJRCwgR1JVQl9VVUlEX1NJWkUpIAo+ID09IDAgfHwKPiArICAgICAgZ3J1Yl9tZW1jbXAg KGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTM4NF9HVUlELCBHUlVCX1VVSURfU0laRSkgCj4gPT0g MCB8fAo+ICsgICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfU0hBNTEyX0dV SUQsIEdSVUJfVVVJRF9TSVpFKSAKPiA9PSAwKQo+ICsgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7 Cj4gKwo+ICsgIC8qIEdVSUQgdHlwZSBvZiB0aGUgY2VydGlmaWNhdGUgaGFzaCAqLwo+ICsgIGlm IChncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEEyNTZfR1VJRCwKPiBH UlVCX1VVSURfU0laRSkgPT0gMCB8fAo+ICsgICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJf UEtTX0NFUlRfWDUwOV9TSEEzODRfR1VJRCwKPiBHUlVCX1VVSURfU0laRSkgPT0gMCB8fAo+ICsg ICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEE1MTJfR1VJRCwg Cj4gR1JVQl9VVUlEX1NJWkUpID09IDApCj4gKyAgICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKPiAr Cj4gKyAgcmV0dXJuIEdSVUJfRVJSX1VOS05PV05fQ09NTUFORDsKPiArfQo+ICsKPiArLyoKPiAr ICogZXh0cmFjdHMgdGhlIHg1MDkgY2VydGlmaWNhdGVzL2JpbmFyeSBoYXNoZXMgZnJvbSB0aGUg cGxhdGZvcm0KPiBrZXlzdG9yZSBidWZmZXIsCj4gKyAqIHBhcnNlcyBpdCwgYW5kIGFkZHMgaXQg dG8gdGhlIHRydXN0ZWQgbGlzdC4KPiArICovCj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dydWJf Y3JlYXRlX3RydXN0ZWRfbGlzdCAodm9pZCkKPiArewo+ICsgIGdydWJfZXJyX3QgcmMgPSBHUlVC X0VSUl9OT05FOwo+ICsgIGdydWJfc2l6ZV90IGkgPSAwOwo+ICsKPiArICBmb3IgKGkgPSAwOyBp IDwgZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYl9lbnRyaWVzOyBpKyspCj4gKyAgICB7Cj4gKyAg ICAgIGlmIChncnViX2lzX2hhc2ggKCZncnViX3BsYXRmb3JtX2tleXN0b3JlLmRiW2ldLmd1aWQp ID09IAo+IEdSVUJfRVJSX05PTkUpCj4gKyAgICAgICAgewo+ICsgICAgICAgICAgcmMgPSBncnVi X2FkZF90cnVzdGVkX2JpbmFyeV9oYXNoICgoY29uc3QgZ3J1Yl91aW50OF90ICoqKQo+ICsKPiAm Z3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYltpXS5kYXRhLAo+ICsKPiBncnViX3BsYXRmb3JtX2tl eXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSk7Cj4gKyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9FUlJf T1VUX09GX01FTU9SWSkKPiArICAgICAgICAgICAgcmV0dXJuIHJjOwo+ICsKPiArICAgICAgICAg IGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiArICAgICAgZWxzZSBpZiAoZ3J1Yl9pc194NTA5ICgm Z3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYltpXS5ndWlkKSA9PQo+IEdSVUJfRVJSX05PTkUpCj4g KyAgICAgICAgewo+ICsKPiArICAgICAgICAgIHJjID0gZ3J1Yl9pc19kaXN0cnVzdGVkX2NlcnRf aGFzaCAKPiAoZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYltpXS5kYXRhLAo+ICsKPiBncnViX3Bs YXRmb3JtX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSk7Cj4gKyAgICAgICAgICBpZiAocmMgIT0g R1JVQl9FUlJfTk9ORSkKPiArICAgICAgICAgICAgY29udGludWU7Cj4gKwo+ICsgICAgICAgICAg cmMgPSBncnViX2FkZF9jZXJ0aWZpY2F0ZSAKPiAoZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYltp XS5kYXRhLAo+ICsKPiBncnViX3BsYXRmb3JtX2tleXN0b3JlLmRiW2ldLmRhdGFfc2l6ZSwgJmdy dWJfZGIsIDEpOwo+ICsgICAgICAgICAgaWYgKHJjID09IEdSVUJfRVJSX09VVF9PRl9NRU1PUlkp Cj4gKyAgICAgICAgICAgIHJldHVybiByYzsKPiArICAgICAgICAgIGVsc2UgaWYgKHJjICE9IEdS VUJfRVJSX05PTkUpCj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgIH0KPiArICAg ICAgZWxzZQo+ICsgICAgICAgIGdydWJfcHJpbnRmICgiV2FybmluZzogdW5zdXBwb3J0ZWQgc2ln bmF0dXJlIGRhdGEgdHlwZSBhbmQgIgo+ICsgICAgICAgICAgICAgICAgICAgICAic2tpcHBpbmcg dHJ1c3RlZCBkYXRhICglIiBQUkl1R1JVQl9TSVpFICIpXG4iLCBpIAo+ICsgMSk7Cj4gKyAgICB9 Cj4gKwo+ICsgIHJldHVybiBHUlVCX0VSUl9OT05FOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBleHRy YWN0cyB0aGUgY2VydGlmaWNhdGVzLCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVzIG91dCBvZiB0 aGUKPiBwbGF0Zm9ybSBrZXlzdG9yZSBidWZmZXIsCj4gKyAqIGFuZCBhZGRzIGl0IHRvIHRoZSBk aXN0cnVzdGVkIGxpc3QuCj4gKyAqLwo+ICtzdGF0aWMgZ3J1Yl9lcnJfdAo+ICtncnViX2NyZWF0 ZV9kaXN0cnVzdGVkX2xpc3QgKHZvaWQpCj4gK3sKPiArICBncnViX2Vycl90IHJjID0gR1JVQl9F UlJfTk9ORTsKPiArICBncnViX3NpemVfdCBpID0gMDsKPiArCj4gKyAgZm9yIChpID0gMDsgaSA8 IGdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4X2VudHJpZXM7IGkrKykKPiArICAgIHsKPiArICAg ICAgaWYgKGdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4W2ldLmRhdGEgIT0gTlVMTCAmJgo+ICsg ICAgICAgICAgZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5kYnhbaV0uZGF0YV9zaXplID4gMCkKPiAr ICAgICAgICB7Cj4gKyAgICAgICAgICBpZiAoZ3J1Yl9pc194NTA5ICgmZ3J1Yl9wbGF0Zm9ybV9r ZXlzdG9yZS5kYnhbaV0uZ3VpZCkgPT0KPiBHUlVCX0VSUl9OT05FKQo+ICsgICAgICAgICAgICB7 Cj4gKyAgICAgICAgICAgICAgcmMgPSBncnViX2FkZF9jZXJ0aWZpY2F0ZSAKPiAoZ3J1Yl9wbGF0 Zm9ybV9rZXlzdG9yZS5kYnhbaV0uZGF0YSwKPiArCj4gZ3J1Yl9wbGF0Zm9ybV9rZXlzdG9yZS5k YnhbaV0uZGF0YV9zaXplLCAmZ3J1Yl9kYngsIDApOwo+ICsgICAgICAgICAgICAgIGlmIChyYyA9 PSBHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZKQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwo+ ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICBlbHNlIGlmIChncnViX2lzX2hhc2ggKCZncnVi X3BsYXRmb3JtX2tleXN0b3JlLmRieFtpXS5ndWlkKQo+ID09IEdSVUJfRVJSX05PTkUpCj4gKyAg ICAgICAgICAgIHsKPiArICAgICAgICAgICAgICByYyA9IGdydWJfYWRkX2hhc2ggKChjb25zdCBn cnViX3VpbnQ4X3QgKiopCj4gJmdydWJfcGxhdGZvcm1fa2V5c3RvcmUuZGJ4W2ldLmRhdGEsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPiBncnViX3BsYXRmb3JtX2tleXN0 b3JlLmRieFtpXS5kYXRhX3NpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZ3J1Yl9kYnguc2lnbmF0dXJlcywKPiAmZ3J1Yl9kYnguc2lnbmF0dXJlX3NpemUsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ3J1Yl9kYnguc2lnbmF0dXJlX2VudHJp ZXMpOwo+ICsgICAgICAgICAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHJjOwo+ICsgICAgICAgICAgICB9Cj4gKyAgICAgICAgICBlbHNlCj4g KyAgICAgICAgICAgIGdydWJfcHJpbnRmICgiV2FybmluZzogdW5zdXBwb3J0ZWQgc2lnbmF0dXJl IGRhdGEgdHlwZSBhbmQgCj4gIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgInNraXBwaW5n IGRpc3RydXN0ZWQgZGF0YSAoJSIgUFJJdUdSVUJfU0laRQo+ICIpXG4iLCBpICsgMSk7Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsKPiArICByZXR1cm4gcmM7Cj4gK30KPiArCj4gKy8qCj4gKyAq IGV4dHJhY3RzIHRoZSB4NTA5IGNlcnRpZmljYXRlcyBmcm9tIHRoZSBFTEYgbm90ZSBoZWFkZXIs Cj4gKyAqIHBhcnNlcyBpdCwgYW5kIGFkZHMgaXQgdG8gdGhlIHRydXN0ZWQgbGlzdC4KPiArICov Cj4gK3N0YXRpYyBncnViX2Vycl90Cj4gK2dydWJfYnVpbGRfc3RhdGljX3RydXN0ZWRfbGlzdCAo Y29uc3Qgc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlciAKPiAqaGVhZGVyKQo+ICt7Cj4gKyAgZ3J1 Yl9lcnJfdCBlcnIgPSBHUlVCX0VSUl9OT05FOwo+ICsgIHN0cnVjdCBncnViX2ZpbGUgcHNldWRv X2ZpbGU7Cj4gKyAgZ3J1Yl91aW50OF90ICpjZXJ0X2RhdGEgPSBOVUxMOwo+ICsgIGdydWJfc3Np emVfdCBjZXJ0X2RhdGFfc2l6ZSA9IDA7Cj4gKwo+ICsgIGdydWJfbWVtc2V0ICgmcHNldWRvX2Zp bGUsIDAsIHNpemVvZiAocHNldWRvX2ZpbGUpKTsKPiArICBwc2V1ZG9fZmlsZS5mcyA9ICZwc2V1 ZG9fZnM7Cj4gKyAgcHNldWRvX2ZpbGUuc2l6ZSA9IGhlYWRlci0+c2l6ZSAtIHNpemVvZiAoc3Ry dWN0IAo+IGdydWJfbW9kdWxlX2hlYWRlcik7Cj4gKyAgcHNldWRvX2ZpbGUuZGF0YSA9IChjaGFy ICopIGhlYWRlciArIHNpemVvZiAoc3RydWN0IAo+IGdydWJfbW9kdWxlX2hlYWRlcik7Cj4gKwo+ ICsgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImZvdW5kIGFuIHg1MDkga2V5LCBzaXpl PSUiCj4gUFJJdUdSVUJfVUlOVDY0X1QgIlxuIiwKPiArICAgICAgICAgICAgICAgIHBzZXVkb19m aWxlLnNpemUpOwo+ICsKPiArICBlcnIgPSBncnViX3JlYWRfZmlsZSAoJnBzZXVkb19maWxlLCAm Y2VydF9kYXRhLCAmY2VydF9kYXRhX3NpemUpOwo+ICsgIGlmIChlcnIgIT0gR1JVQl9FUlJfTk9O RSkKPiArICAgIHJldHVybiBlcnI7Cj4gKwo+ICsgIGVyciA9IGdydWJfYWRkX2NlcnRpZmljYXRl IChjZXJ0X2RhdGEsIGNlcnRfZGF0YV9zaXplLCAmZ3J1Yl9kYiwgMSk7Cj4gKyAgaWYgKGNlcnRf ZGF0YSAhPSBOVUxMKQo+ICsgICAgZ3J1Yl9mcmVlIChjZXJ0X2RhdGEpOwo+ICsKPiArICByZXR1 cm4gZXJyOwo+ICt9Cj4gKwo+ICsvKiByZWxlYXNpbmcgbWVtb3J5ICovCj4gK3N0YXRpYyB2b2lk Cj4gK2dydWJfcmVsZWFzZV90cnVzdGVkX2xpc3QgKHZvaWQpCj4gK3sKPiArICBzdHJ1Y3QgeDUw OV9jZXJ0aWZpY2F0ZSAqY2VydDsKPiArICBncnViX3NpemVfdCBpID0gMDsKPiArCj4gKyAgd2hp bGUgKGdydWJfZGIua2V5cyAhPSBOVUxMKQo+ICsgICAgewo+ICsgICAgICBjZXJ0ID0gZ3J1Yl9k Yi5rZXlzOwo+ICsgICAgICBncnViX2RiLmtleXMgPSBncnViX2RiLmtleXMtPm5leHQ7Cj4gKyAg ICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOwo+ICsgICAgICBncnViX2ZyZWUgKGNlcnQp Owo+ICsgICAgfQo+ICsKPiArICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9kYi5zaWduYXR1cmVfZW50 cmllczsgaSsrKQo+ICsgICAgZ3J1Yl9mcmVlIChncnViX2RiLnNpZ25hdHVyZXNbaV0pOwo+ICsK PiArICBncnViX2ZyZWUgKGdydWJfZGIuc2lnbmF0dXJlcyk7Cj4gKyAgZ3J1Yl9mcmVlIChncnVi X2RiLnNpZ25hdHVyZV9zaXplKTsKPiArICBncnViX21lbXNldCAoJmdydWJfZGIsIDB4MDAsIHNp emVvZiAoZ3J1Yl9kYikpOwo+ICt9Cj4gKwo+ICsvKiByZWxlYXNpbmcgbWVtb3J5ICovCj4gK3N0 YXRpYyB2b2lkCj4gK2dydWJfcmVsZWFzZV9kaXN0cnVzdGVkX2xpc3QgKHZvaWQpCj4gK3sKPiAr ICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKPiArICBncnViX3NpemVfdCBpID0gMDsK PiArCj4gKyAgd2hpbGUgKGdydWJfZGJ4LmtleXMgIT0gTlVMTCkKPiArICAgIHsKPiArICAgICAg Y2VydCA9IGdydWJfZGJ4LmtleXM7Cj4gKyAgICAgIGdydWJfZGJ4LmtleXMgPSBncnViX2RieC5r ZXlzLT5uZXh0Owo+ICsgICAgICBjZXJ0aWZpY2F0ZV9yZWxlYXNlIChjZXJ0KTsKPiArICAgICAg Z3J1Yl9mcmVlIChjZXJ0KTsKPiArICAgIH0KPiArCj4gKyAgZm9yIChpID0gMDsgaSA8IGdydWJf ZGJ4LnNpZ25hdHVyZV9lbnRyaWVzOyBpKyspCj4gKyAgICBncnViX2ZyZWUgKGdydWJfZGJ4LnNp Z25hdHVyZXNbaV0pOwo+ICsKPiArICBncnViX2ZyZWUgKGdydWJfZGJ4LnNpZ25hdHVyZXMpOwo+ ICsgIGdydWJfZnJlZSAoZ3J1Yl9kYnguc2lnbmF0dXJlX3NpemUpOwo+ICsgIGdydWJfbWVtc2V0 ICgmZ3J1Yl9kYngsIDB4MDAsIHNpemVvZiAoZ3J1Yl9kYngpKTsKPiArfQo+ICsKPiAgR1JVQl9N T0RfSU5JVCAoYXBwZW5kZWRzaWcpCj4gIHsKPiAgICBpbnQgcmM7Cj4gQEAgLTU0OCw3ICsxMDg1 LDYgQEAgR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCj4gICAgaWYgKGdydWJfaXNfbG9ja2Rv d24gKCkgPT0gR1JVQl9MT0NLRE9XTl9FTkFCTEVEKQo+ICAgICAgY2hlY2tfc2lncyA9IGNoZWNr X3NpZ3NfZm9yY2VkOwo+IAo+IC0gIGdydWJfdHJ1c3RlZF9rZXkgPSBOVUxMOwo+ICAgIGdydWJf cmVnaXN0ZXJfdmFyaWFibGVfaG9vayAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiLAo+IGdy dWJfZW52X3JlYWRfc2VjLCBncnViX2Vudl93cml0ZV9zZWMpOwo+ICAgIGdydWJfZW52X2V4cG9y dCAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsKPiAKPiBAQCAtNTU2LDM5ICsxMDkyLDUx IEBAIEdSVUJfTU9EX0lOSVQgKGFwcGVuZGVkc2lnKQo+ICAgIGlmIChyYykKPiAgICAgIGdydWJf ZmF0YWwgKCJFcnJvciBpbml0aW5nIEFTTi4xIGRhdGEgc3RydWN0dXJlczogJWQ6ICVzXG4iLCBy YywKPiBhc24xX3N0cmVycm9yIChyYykpOwo+IAo+IC0gIEZPUl9NT0RVTEVTIChoZWFkZXIpCj4g LSAgewo+IC0gICAgc3RydWN0IGdydWJfZmlsZSBwc2V1ZG9fZmlsZTsKPiAtICAgIHN0cnVjdCB4 NTA5X2NlcnRpZmljYXRlICpwayA9IE5VTEw7Cj4gLSAgICBncnViX2Vycl90IGVycjsKPiAtCj4g LSAgICAvKiBOb3QgYW4gWC41MDkgY2VydGlmaWNhdGUsIHNraXAuICovCj4gLSAgICBpZiAoaGVh ZGVyLT50eXBlICE9IE9CSl9UWVBFX1g1MDlfUFVCS0VZKQo+IC0gICAgICBjb250aW51ZTsKPiAt Cj4gLSAgICBncnViX21lbXNldCAoJnBzZXVkb19maWxlLCAwLCBzaXplb2YgKHBzZXVkb19maWxl KSk7Cj4gLSAgICBwc2V1ZG9fZmlsZS5mcyA9ICZwc2V1ZG9fZnM7Cj4gLSAgICBwc2V1ZG9fZmls ZS5zaXplID0gaGVhZGVyLT5zaXplIC0gc2l6ZW9mIChzdHJ1Y3QgCj4gZ3J1Yl9tb2R1bGVfaGVh ZGVyKTsKPiAtICAgIHBzZXVkb19maWxlLmRhdGEgPSAoY2hhciAqKSBoZWFkZXIgKyBzaXplb2Yg KHN0cnVjdCAKPiBncnViX21vZHVsZV9oZWFkZXIpOwo+IC0KPiAtICAgIGdydWJfZHByaW50ZiAo ImFwcGVuZGVkc2lnIiwgIkZvdW5kIGFuIHg1MDkga2V5LCBzaXplPSUiCj4gUFJJdUdSVUJfVUlO VDY0X1QgIlxuIiwKPiAtICAgICAgICAgICAgICAgICAgcHNldWRvX2ZpbGUuc2l6ZSk7Cj4gLQo+ IC0gICAgcGsgPSBncnViX3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSkp Owo+IC0gICAgaWYgKCFwaykKPiAtICAgICAgewo+IC0gICAgICAgIGdydWJfZmF0YWwgKCJPdXQg b2YgbWVtb3J5IGxvYWRpbmcgaW5pdGlhbCBjZXJ0aWZpY2F0ZXMiKTsKPiAtICAgICAgfQo+IC0K PiAtICAgIGVyciA9IHJlYWRfY2VydF9mcm9tX2ZpbGUgKCZwc2V1ZG9fZmlsZSwgcGspOwo+IC0g ICAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQo+IC0gICAgICBncnViX2ZhdGFsICgiRXJyb3Ig bG9hZGluZyBpbml0aWFsIGtleTogJXMiLCBncnViX2Vycm1zZyk7Cj4gKyAgaWYgKCFncnViX3Vz ZV9wbGF0Zm9ybV9rZXlzdG9yZSAmJiBjaGVja19zaWdzID09IGNoZWNrX3NpZ3NfZm9yY2VkKQo+ ICsgICAgewo+ICsgICAgICBGT1JfTU9EVUxFUyAoaGVhZGVyKQo+ICsgICAgICAgIHsKPiArICAg ICAgICAgIC8qIE5vdCBhbiBFTEYgbW9kdWxlLCBza2lwLiAgKi8KPiArICAgICAgICAgIGlmICho ZWFkZXItPnR5cGUgIT0gT0JKX1RZUEVfWDUwOV9QVUJLRVkpCj4gKyAgICAgICAgICAgIGNvbnRp bnVlOwo+IAo+IC0gICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAibG9hZGVkIGNlcnRp ZmljYXRlIENOPSclcydcbiIsIAo+IHBrLT5zdWJqZWN0KTsKPiArICAgICAgICAgIHJjID0gZ3J1 Yl9idWlsZF9zdGF0aWNfdHJ1c3RlZF9saXN0IChoZWFkZXIpOwo+ICsgICAgICAgICAgaWYgKHJj ICE9IEdSVUJfRVJSX05PTkUpCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICBncnVi X3JlbGVhc2VfdHJ1c3RlZF9saXN0ICgpOwo+ICsgICAgICAgICAgICAgIGdydWJfZXJyb3IgKHJj LCAic3RhdGljIHRydXN0ZWQgbGlzdCBjcmVhdGlvbiBmYWlsZWQiKTsKPiArICAgICAgICAgICAg fQo+ICsgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICBncnViX3ByaW50ZiAoImFwcGVuZGVk c2lnOiB0aGUgdHJ1c3RlZCBsaXN0IG5vdyBoYXMgJSIKPiBQUkl1R1JVQl9TSVpFICIgc3RhdGlj IGtleXNcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2RiLmtleV9lbnRyaWVz KTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKyAgZWxzZSBpZiAoZ3J1Yl91c2VfcGxhdGZvcm1f a2V5c3RvcmUgJiYgY2hlY2tfc2lncyA9PSAKPiBjaGVja19zaWdzX2ZvcmNlZCkKPiArICAgIHsK PiArICAgICAgcmMgPSBncnViX2NyZWF0ZV90cnVzdGVkX2xpc3QgKCk7Cj4gKyAgICAgIGlmIChy YyAhPSBHUlVCX0VSUl9OT05FKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgIGdydWJfcmVsZWFz ZV90cnVzdGVkX2xpc3QgKCk7Cj4gKyAgICAgICAgICBncnViX2Vycm9yIChyYywgInRydXN0ZWQg bGlzdCBjcmVhdGlvbiBmYWlsZWQiKTsKPiArICAgICAgICB9Cj4gKyAgICAgIGVsc2UKPiArICAg ICAgICB7Cj4gKyAgICAgICAgICByYyA9IGdydWJfY3JlYXRlX2Rpc3RydXN0ZWRfbGlzdCAoKTsK PiArICAgICAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQo+ICsgICAgICAgICAgICB7Cj4g KyAgICAgICAgICAgICAgZ3J1Yl9yZWxlYXNlX3RydXN0ZWRfbGlzdCAoKTsKPiArICAgICAgICAg ICAgICBncnViX3JlbGVhc2VfZGlzdHJ1c3RlZF9saXN0ICgpOwo+ICsgICAgICAgICAgICAgIGdy dWJfZXJyb3IgKHJjLCAiZGlzdHJ1c3RlZCBsaXN0IGNyZWF0aW9uIGZhaWxlZCIpOwo+ICsgICAg ICAgICAgICB9Cj4gKyAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgIGdydWJfcHJpbnRmICgi YXBwZW5kZWRzaWc6IHRoZSB0cnVzdGVkIGxpc3Qgbm93IGhhcyAlIgo+IFBSSXVHUlVCX1NJWkUg IiBrZXlzLlxuIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgImFwcGVuZGVkc2lnOiB0aGUg ZGlzdHJ1c3RlZCBsaXN0IG5vdyBoYXMgJSIKPiBQUkl1R1JVQl9TSVpFICIga2V5cy5cbiIsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2RiLnNpZ25hdHVyZV9lbnRyaWVzICsgCj4g Z3J1Yl9kYi5rZXlfZW50cmllcywKPiArICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfZGJ4 LnNpZ25hdHVyZV9lbnRyaWVzKTsKPiArICAgICAgICB9Cj4gCj4gLSAgICBway0+bmV4dCA9IGdy dWJfdHJ1c3RlZF9rZXk7Cj4gLSAgICBncnViX3RydXN0ZWRfa2V5ID0gcGs7Cj4gLSAgfQo+ICsg ICAgICBncnViX3JlbGVhc2VfcGxhdGZvcm1fa2V5c3RvcmUgKCk7Cj4gKyAgICB9Cj4gCj4gICAg Y21kX3RydXN0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgidHJ1c3RfY2VydGlmaWNhdGUiLAo+ IGdydWJfY21kX3RydXN0LCBOXygiWDUwOV9DRVJUSUZJQ0FURSIpLAo+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkFkZCBYNTA5X0NFUlRJRklDQVRFIHRvCj4gdHJ1 c3RlZCBjZXJ0aWZpY2F0ZXMuIikpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3Jn Cmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK