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 9B015C0219B for ; Fri, 7 Feb 2025 06:45:06 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tgI6j-0001eH-JU; Fri, 07 Feb 2025 01:44:57 -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 1tgI6b-0001dJ-N9 for grub-devel@gnu.org; Fri, 07 Feb 2025 01:44:52 -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 1tgI6Z-0005Kw-BX for grub-devel@gnu.org; Fri, 07 Feb 2025 01:44:49 -0500 Received: from pps.filterd (m0356516.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5171KGfU010436; Fri, 7 Feb 2025 06:44:44 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=g/+WYX MAYx01gzCcdkwyc3Hnif2RX/l40UtJ5TIVr5Q=; b=rjAnABydgZHWuM0vc/mGKL 89k/uPcinahT+bZ8b0lbLM7pWiwDlovi1fRCBD5OJWHWvOpQiU45Wx9u9AXOqXAj jFDQZZvvf9fD1smQmsSy4/KjMNqckyP8k1PS7FNsJHDmGJ/3Lkk2YPdy/XT0gmSN pV8svQZPst69INEOcduP7bJHPPv1LzTclpniKjY1uRY0YM5FuQRIRRS4zgeBs3eL fZM5p0eVyXtUGUcRwmHX32IzW1RJwdJzMcmS8PQXa9wjcXXW0jyVpfVit119RXwI SKid+EoMKzoMvYnYMNqmHHqTS7kjoKPKKO3QvXnUWiZWQdaviwIkZlb5/i/L9bcQ == Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 44mywtur5d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2025 06:44:43 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 5173NbPV005292; Fri, 7 Feb 2025 06:44:43 GMT Received: from smtprelay04.dal12v.mail.ibm.com ([172.16.1.6]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44j05ka1eh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Feb 2025 06:44:43 +0000 Received: from smtpav04.wdc07v.mail.ibm.com (smtpav04.wdc07v.mail.ibm.com [10.39.53.231]) by smtprelay04.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5176ifZV45416706 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 7 Feb 2025 06:44:42 GMT Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BB116582E8; Fri, 7 Feb 2025 06:44:41 +0000 (GMT) Received: from smtpav04.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DEDBA582C0; Fri, 7 Feb 2025 06:44:40 +0000 (GMT) Received: from ltc.linux.ibm.com (unknown [9.5.196.140]) by smtpav04.wdc07v.mail.ibm.com (Postfix) with ESMTP; Fri, 7 Feb 2025 06:44:40 +0000 (GMT) MIME-Version: 1.0 Date: Fri, 07 Feb 2025 12:14:40 +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 17/21] appendedsig: While verifying the kernel, use trusted and distrusted lists In-Reply-To: <20241218145647.1390837-18-sudhakar@linux.ibm.com> References: <20241218145647.1390837-1-sudhakar@linux.ibm.com> <20241218145647.1390837-18-sudhakar@linux.ibm.com> Message-ID: <7916a36f6a0174def16932349984098d@linux.ibm.com> X-Sender: avnish@linux.ibm.com X-TM-AS-GCONF: 00 X-Proofpoint-GUID: LRjvCKJ-rV-dUb1xdsr4NlMNGCX1Pm9d X-Proofpoint-ORIG-GUID: LRjvCKJ-rV-dUb1xdsr4NlMNGCX1Pm9d 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 suspectscore=0 mlxscore=0 bulkscore=0 phishscore=0 mlxlogscore=999 impostorscore=0 adultscore=0 priorityscore=1501 clxscore=1015 spamscore=0 lowpriorityscore=0 malwarescore=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 biAyMDI0LTEyLTE4IDIwOjI2LCBTdWRoYWthciBLdXBwdXNhbXkgd3JvdGU6Cj4gVG8gdmVyaWZ5 IHRoZSBrZXJuZWwnczogdmVyaWZ5IHRoZSBrZXJuZWwgYmluYXJ5IGFnYWluc3QgbGlzdCBvZiBi aW5hcnkgCj4gaGFzaGVzCj4gdGhhdCBhcmUgZGlzdHJ1c3RlZCBhbmQgdHJ1c3RlZC4gSWYgaXQg aXMgbm90IGxpc3RlZCBpbiBib3RoIHRydXN0ZWQKPiBhbmQgZGlzdHJ1c3RlZCwKPiB0aGUgdHJ1 c3RlZCBrZXlzIGZyb20gdHJ1c3RlZCBrZXkgbGlzdCB1c2VkIHRvIHZlcmlmeSB0aGUgc2lnbmF0 dXJlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1c2FteSA8c3VkaGFrYXJAbGlu dXguaWJtLmNvbT4KPiAtLS0KPiAgZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVu ZGVkc2lnLmMgfCAxODggKysrKysrKysrKysrKy0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTMz IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9ncnViLWNv cmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwo+IGIvZ3J1Yi1jb3JlL2NvbW1h bmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKPiBpbmRleCAzMTY0OWU4MDAuLjhiMDg0MDg3 ZSAxMDA2NDQKPiAtLS0gYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRz aWcuYwo+ICsrKyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5j Cj4gQEAgLTQ5Nyw2ICs0OTcsODEgQEAgZXh0cmFjdF9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0 IGdydWJfdWludDhfdAo+ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUsCj4gICAgcmV0dXJuIHBh cnNlX3BrY3M3X3NpZ25lZERhdGEgKGFwcHNpZ2RhdGEsIHBrY3M3X3NpemUsICZzaWctPnBrY3M3 KTsKPiAgfQo+IAo+ICtzdGF0aWMgZ3J1Yl9lcnJfdAo+ICtncnViX2dldF9iaW5hcnlfaGFzaCAo Y29uc3QgZ3J1Yl9zaXplX3QgYmluYXJ5X2hhc2hfc2l6ZSwgY29uc3QKPiBncnViX3VpbnQ4X3Qg KmRhdGEsCj4gKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncnViX3NpemVfdCBkYXRhX3Np emUsIGdydWJfdWludDhfdAo+ICpoYXNoLCBncnViX3NpemVfdCAqaGFzaF9zaXplKQo+ICt7Cj4g KyAgZ3J1Yl91dWlkX3QgZ3VpZCA9IHsgMCB9Owo+ICsKPiArICAvKiBzdXBwb3J0IFNIQTI1Niwg U0hBMzg0IGFuZCBTSEE1MTIgZm9yIGJpbmFyeSBoYXNoICovCj4gKyAgaWYgKGJpbmFyeV9oYXNo X3NpemUgPT0gMzIpCj4gKyAgICBncnViX21lbWNweSAoJmd1aWQsICZHUlVCX1BLU19DRVJUX1NI QTI1Nl9HVUlELCBHUlVCX1VVSURfU0laRSk7Cj4gKyAgZWxzZSBpZiAoYmluYXJ5X2hhc2hfc2l6 ZSA9PSA0OCkKPiArICAgIGdydWJfbWVtY3B5ICgmZ3VpZCwgJkdSVUJfUEtTX0NFUlRfU0hBMzg0 X0dVSUQsIEdSVUJfVVVJRF9TSVpFKTsKPiArICBlbHNlIGlmIChiaW5hcnlfaGFzaF9zaXplID09 IDY0KQo+ICsgICAgZ3J1Yl9tZW1jcHkgKCZndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEE1MTJfR1VJ RCwgR1JVQl9VVUlEX1NJWkUpOwo+ICsgIGVsc2UKPiArICAgIHsKPiArICAgICAgZ3J1Yl9kcHJp bnRmICgiYXBwZW5kZWRzaWciLCAidW5zdXBwb3J0ZWQgaGFzaCB0eXBlICglIgo+IFBSSXVHUlVC X1NJWkUgIikgYW5kIHNraXBwaW5nIGJpbmFyeSBoYXNoXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgIGJpbmFyeV9oYXNoX3NpemUpOwo+ICsgICAgICByZXR1cm4gR1JVQl9FUlJfVU5LTk9XTl9D T01NQU5EOwo+ICsgICAgfQo+ICsKPiArICByZXR1cm4gZ3J1Yl9nZXRfaGFzaCAoJmd1aWQsIGRh dGEsIGRhdGFfc2l6ZSwgaGFzaCwgaGFzaF9zaXplKTsKPiArfQo+ICsKPiArLyoKPiArICogdmVy aWZ5IGJpbmFyeSBoYXNoIGFnYWluc3QgdGhlIGxpc3Qgb2YgYmluYXJ5IGhhc2hlcyB0aGF0IGFy ZSAKPiBkaXN0cnVzdGVkCj4gKyAqIGFuZCB0cnVzdGVkLgo+ICsgKi8KPiArc3RhdGljIGdydWJf ZXJyX3QKPiArZ3J1Yl92ZXJpZnlfYmluYXJ5X2hhc2ggKGNvbnN0IGdydWJfdWludDhfdCAqZGF0 YSwgY29uc3QgZ3J1Yl9zaXplX3QgCj4gZGF0YV9zaXplKQo+ICt7Cj4gKyAgZ3J1Yl9lcnJfdCBy YyA9IEdSVUJfRVJSX05PTkU7Cj4gKyAgZ3J1Yl9zaXplX3QgaSA9IDAsIGhhc2hfc2l6ZSA9IDA7 Cj4gKyAgZ3J1Yl91aW50OF90IGhhc2hbR1JVQl9NQVhfSEFTSF9TSVpFXSA9IHsgMCB9Owo+ICsK PiArICBmb3IgKGkgPSAwOyBpIDwgZ3J1Yl9kYnguc2lnbmF0dXJlX2VudHJpZXM7IGkrKykKPiAr ICAgIHsKPiArICAgICAgcmMgPSBncnViX2dldF9iaW5hcnlfaGFzaCAoZ3J1Yl9kYnguc2lnbmF0 dXJlX3NpemVbaV0sIGRhdGEsIAo+IGRhdGFfc2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGFzaCwgJmhhc2hfc2l6ZSk7Cj4gKyAgICAgIGlmIChyYyAhPSBHUlVCX0VS Ul9OT05FKQo+ICsgICAgICAgIGNvbnRpbnVlOwo+ICsKPiArICAgICAgaWYgKGhhc2hfc2l6ZSA9 PSBncnViX2RieC5zaWduYXR1cmVfc2l6ZVtpXSAmJgo+ICsgICAgICAgICAgZ3J1Yl9tZW1jbXAg KGdydWJfZGJ4LnNpZ25hdHVyZXNbaV0sIGhhc2gsIGhhc2hfc2l6ZSkgPT0gMCkKPiArICAgICAg ICB7Cj4gKyAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ0aGUgYmluYXJ5 IGhhc2gKPiAoJTAyeCUwMnglMDJ4JTAyeCkgd2FzIGxpc3RlZCAiCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICJhcyBkaXN0cnVzdGVkXG4iLCBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCAK PiBoYXNoWzNdKTsKPiArICAgICAgICAgIHJldHVybiBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOwo+ ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgZm9yIChpID0gMDsgaSA8IGdydWJfZGIuc2ln bmF0dXJlX2VudHJpZXM7IGkrKykKPiArICAgIHsKPiArICAgICAgcmMgPSBncnViX2dldF9iaW5h cnlfaGFzaCAoZ3J1Yl9kYi5zaWduYXR1cmVfc2l6ZVtpXSwgZGF0YSwgCj4gZGF0YV9zaXplLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoLCAmaGFzaF9zaXplKTsKPiAr ICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCj4gKyAgICAgICAgY29udGludWU7Cj4gKwo+ ICsgICAgICBpZiAoaGFzaF9zaXplID09IGdydWJfZGIuc2lnbmF0dXJlX3NpemVbaV0gJiYKPiAr ICAgICAgICAgIGdydWJfbWVtY21wIChncnViX2RiLnNpZ25hdHVyZXNbaV0sIGhhc2gsIGhhc2hf c2l6ZSkgPT0gMCkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBl bmRlZHNpZyIsICJ2ZXJpZmllZCB3aXRoIGEgdHJ1c3RlZCBiaW5hcnkgCj4gaGFzaCAiCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICIoJTAyeCUwMnglMDJ4JTAyeClcbiIsIGhhc2hbMF0sIGhh c2hbMV0sCj4gaGFzaFsyXSwgaGFzaFszXSk7Cj4gKyAgICAgICAgICByZXR1cm4gR1JVQl9FUlJf Tk9ORTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgIHJldHVybiBHUlVCX0VSUl9FT0Y7 Cj4gK30KPiArCj4gKwo+ICsvKgo+ICsgKiB2ZXJpZnkgdGhlIGtlcm5lbCdzIGludGVncml0eSwg dGhlIHRydXN0ZWQga2V5IHdpbGwgYmUgdXNlZCBmcm9tCj4gKyAqIHRoZSB0cnVzdGVkIGtleSBs aXN0LiBJZiBpdCBmYWlscywgdmVyaWZ5IGl0IGFnYWluc3QgdGhlIGxpc3Qgb2YKPiBiaW5hcnkg aGFzaGVzCj4gKyAqIHRoYXQgYXJlIGRpc3RydXN0ZWQgYW5kIHRydXN0ZWQuCj4gKyAqLwo+ICBz dGF0aWMgZ3J1Yl9lcnJfdAo+ICBncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKGNvbnN0 IGdydWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCAKPiBidWZzaXplKQo+ICB7Cj4gQEAgLTUw NiwxMiArNTgxLDEyIEBAIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAoY29uc3QKPiBn cnViX3VpbnQ4X3QgKmJ1ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSkKPiAgICB1bnNpZ25lZCBjaGFy ICpoYXNoOwo+ICAgIGdjcnlfbXBpX3QgaGFzaG1waTsKPiAgICBnY3J5X2Vycl9jb2RlX3QgcmM7 Cj4gLSAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKnBrOwo+ICsgIHN0cnVjdCB4NTA5X2NlcnRp ZmljYXRlICpjZXJ0Owo+ICAgIHN0cnVjdCBncnViX2FwcGVuZGVkX3NpZ25hdHVyZSBzaWc7Cj4g ICAgc3RydWN0IHBrY3M3X3NpZ25lckluZm8gKnNpOwo+ICAgIGludCBpOwo+IAo+IC0gIGlmICgh Z3J1Yl9kYi5rZXlfZW50cmllcykKPiArICBpZiAoIWdydWJfZGIua2V5X2VudHJpZXMgJiYgIWdy dWJfZGIuc2lnbmF0dXJlX2VudHJpZXMpCj4gICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX1NJR05BVFVSRSwgTl8oIk5vIHRydXN0ZWQga2V5cyB0bwo+IHZlcmlmeSBhZ2FpbnN0 IikpOwo+IAo+ICAgIGVyciA9IGV4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChidWYsIGJ1ZnNp emUsICZzaWcpOwo+IEBAIC01MjAsNjggKzU5NSw3MSBAQCBncnViX3ZlcmlmeV9hcHBlbmRlZF9z aWduYXR1cmUgKGNvbnN0Cj4gZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUp Cj4gCj4gICAgZGF0YXNpemUgPSBidWZzaXplIC0gc2lnLnNpZ25hdHVyZV9sZW47Cj4gCj4gLSAg Zm9yIChpID0gMDsgaSA8IHNpZy5wa2NzNy5zaWduZXJJbmZvX2NvdW50OyBpKyspCj4gKyAgZXJy ID0gZ3J1Yl92ZXJpZnlfYmluYXJ5X2hhc2ggKGJ1ZiwgZGF0YXNpemUpOwo+ICsgIGlmIChlcnIg PT0gR1JVQl9FUlJfRU9GKQo+ICAgICAgewo+IC0gICAgICAvKgo+IC0gICAgICAgKiBUaGlzIGNv dWxkIGJlIG9wdGltaXNlZCBpbiBhIGNvdXBsZSBvZiB3YXlzOgo+IC0gICAgICAgKiAtIHdlIGNv dWxkIG9ubHkgY29tcHV0ZSBoYXNoZXMgb25jZSBwZXIgaGFzaCB0eXBlCj4gLSAgICAgICAqIC0g d2UgY291bGQgdHJhY2sgc2lnbmVyIGluZm9ybWF0aW9uIGFuZCBvbmx5IHZlcmlmeSB3aGVyZSBJ RHMgCj4gbWF0Y2gKPiAtICAgICAgICogRm9yIG5vdyB3ZSBkbyB0aGUgbmFpdmUgTyh0cnVzdGVk IGtleXMgKiBwa2NzNyBzaWduZXJzKSAKPiBhcHByb2FjaC4KPiAtICAgICAgICovCj4gLSAgICAg IHNpID0gJnNpZy5wa2NzNy5zaWduZXJJbmZvc1tpXTsKPiAtICAgICAgY29udGV4dCA9IGdydWJf emFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUpOwo+IC0gICAgICBpZiAoIWNvbnRleHQpCj4g LSAgICAgICAgcmV0dXJuIGdydWJfZXJybm87Cj4gLQo+IC0gICAgICBzaS0+aGFzaC0+aW5pdCAo Y29udGV4dCk7Cj4gLSAgICAgIHNpLT5oYXNoLT53cml0ZSAoY29udGV4dCwgYnVmLCBkYXRhc2l6 ZSk7Cj4gLSAgICAgIHNpLT5oYXNoLT5maW5hbCAoY29udGV4dCk7Cj4gLSAgICAgIGhhc2ggPSBz aS0+aGFzaC0+cmVhZCAoY29udGV4dCk7Cj4gLQo+IC0gICAgICBncnViX2RwcmludGYgKCJhcHBl bmRlZHNpZyIsICJkYXRhIHNpemUgJSIgUFJJeEdSVUJfU0laRSAiLAo+IHNpZ25lciAlZCBoYXNo ICUwMnglMDJ4JTAyeCUwMnguLi5cbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgZGF0YXNpemUs IGksIGhhc2hbMF0sIGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOwo+IC0KPiAtICAgICAgZXJy ID0gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKPiAtICAgICAgZm9yIChwayA9IGdydWJfZGIua2V5 czsgcGs7IHBrID0gcGstPm5leHQpCj4gKyAgICAgIGZvciAoaSA9IDA7IGkgPCBzaWcucGtjczcu c2lnbmVySW5mb19jb3VudDsgaSsrKQo+ICAgICAgICAgIHsKPiAtICAgICAgICAgIHJjID0gZ3J1 Yl9jcnlwdG9fcnNhX3BhZCAoJmhhc2htcGksIGhhc2gsIHNpLT5oYXNoLCAKPiBway0+bXBpc1sw XSk7Cj4gLSAgICAgICAgICBpZiAocmMpCj4gKyAgICAgICAgICAvKgo+ICsgICAgICAgICAgICog VGhpcyBjb3VsZCBiZSBvcHRpbWlzZWQgaW4gYSBjb3VwbGUgb2Ygd2F5czoKPiArICAgICAgICAg ICAqIC0gd2UgY291bGQgb25seSBjb21wdXRlIGhhc2hlcyBvbmNlIHBlciBoYXNoIHR5cGUKPiAr ICAgICAgICAgICAqIC0gd2UgY291bGQgdHJhY2sgc2lnbmVyIGluZm9ybWF0aW9uIGFuZCBvbmx5 IHZlcmlmeQo+IHdoZXJlIElEcyBtYXRjaAo+ICsgICAgICAgICAgICogRm9yIG5vdyB3ZSBkbyB0 aGUgbmFpdmUgTyhncnViX2RiLmtleXMgKiBwa2NzNyBzaWduZXJzKSAKPiBhcHByb2FjaC4KPiAr ICAgICAgICAgICAqLwo+ICsgICAgICAgICAgc2kgPSAmc2lnLnBrY3M3LnNpZ25lckluZm9zW2ld Owo+ICsgICAgICAgICAgY29udGV4dCA9IGdydWJfemFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNp emUpOwo+ICsgICAgICAgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkKPiArICAgICAgICAgICAgcmV0 dXJuIGdydWJfZXJybm87Cj4gKwo+ICsgICAgICAgICAgc2ktPmhhc2gtPmluaXQgKGNvbnRleHQp Owo+ICsgICAgICAgICAgc2ktPmhhc2gtPndyaXRlIChjb250ZXh0LCBidWYsIGRhdGFzaXplKTsK PiArICAgICAgICAgIHNpLT5oYXNoLT5maW5hbCAoY29udGV4dCk7Cj4gKyAgICAgICAgICBoYXNo ID0gc2ktPmhhc2gtPnJlYWQgKGNvbnRleHQpOwo+ICsKPiArICAgICAgICAgIGdydWJfZHByaW50 ZiAoImFwcGVuZGVkc2lnIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEgc2l6ZSAl IiBQUkl4R1JVQl9TSVpFICIsIHNpZ25lciAlZCBoYXNoCj4gJTAyeCUwMnglMDJ4JTAyeC4uLlxu IiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNpemUsIGksIGhhc2hbMF0sIGhhc2hb MV0sIGhhc2hbMl0sIAo+IGhhc2hbM10pOwo+ICsKPiArICAgICAgICAgIGVyciA9IEdSVUJfRVJS X0JBRF9TSUdOQVRVUkU7Cj4gKyAgICAgICAgICBmb3IgKGNlcnQgPSBncnViX2RiLmtleXM7IGNl cnQ7IGNlcnQgPSBjZXJ0LT5uZXh0KQo+ICAgICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgICAg ZXJyID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOXygiRXJyb3IgcGFkZGluZyBoYXNoIGZvciBSU0EKPiB2ZXJp ZmljYXRpb246ICVkIiksIHJjKTsKPiAtICAgICAgICAgICAgICBncnViX2ZyZWUgKGNvbnRleHQp Owo+IC0gICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKPiArICAgICAgICAgICAgICByYyA9IGdy dWJfY3J5cHRvX3JzYV9wYWQgKCZoYXNobXBpLCBoYXNoLCBzaS0+aGFzaCwKPiBjZXJ0LT5tcGlz WzBdKTsKPiArICAgICAgICAgICAgICBpZiAocmMgIT0gMCkKPiArICAgICAgICAgICAgICAgIHsK PiArICAgICAgICAgICAgICAgICAgZXJyID0gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05B VFVSRSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIkVycm9yIHBh ZGRpbmcgaGFzaCBmb3IgUlNBCj4gdmVyaWZpY2F0aW9uOiAlZCIpLCByYyk7Cj4gKyAgICAgICAg ICAgICAgICAgIGdydWJfZnJlZSAoY29udGV4dCk7Cj4gKyAgICAgICAgICAgICAgICAgIHBrY3M3 X3NpZ25lZERhdGFfcmVsZWFzZSAoJnNpZy5wa2NzNyk7Cj4gKyAgICAgICAgICAgICAgICAgIHJl dHVybiBlcnI7Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICAgIHJjID0g X2djcnlfcHVia2V5X3NwZWNfcnNhLnZlcmlmeSAoMCwgaGFzaG1waSwKPiAmc2ktPnNpZ19tcGks IGNlcnQtPm1waXMsIE5VTEwsIE5VTEwpOwo+ICsgICAgICAgICAgICAgIGdjcnlfbXBpX3JlbGVh c2UgKGhhc2htcGkpOwo+ICsgICAgICAgICAgICAgIGlmIChyYyA9PSAwKQo+ICsgICAgICAgICAg ICAgICAgewo+ICsgICAgICAgICAgICAgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIs ICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgKPiBrZXkgJyVzJyBzdWNjZWVkZWRcbiIsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgY2VydC0+c3ViamVjdCk7Cj4gKyAgICAgICAg ICAgICAgICAgIGVyciA9IEdSVUJfRVJSX05PTkU7Cj4gKyAgICAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgICAgICAgICAgfQo+ICsKPiArICAgICAgICAgICAgICBncnViX2RwcmludGYg KCJhcHBlbmRlZHNpZyIsICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgga2V5Cj4gJyVzJyBmYWlsZWQg d2l0aCAlZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGNlcnQtPnN1Ympl Y3QsIHJjKTsKPiAgICAgICAgICAgICAgfQo+IAo+IC0gICAgICAgICAgcmMgPSBfZ2NyeV9wdWJr ZXlfc3BlY19yc2EudmVyaWZ5ICgwLCBoYXNobXBpLAo+ICZzaS0+c2lnX21waSwgcGstPm1waXMs IE5VTEwsIE5VTEwpOwo+IC0gICAgICAgICAgZ2NyeV9tcGlfcmVsZWFzZSAoaGFzaG1waSk7Cj4g LQo+IC0gICAgICAgICAgaWYgKHJjID09IDApCj4gLSAgICAgICAgICAgIHsKPiAtICAgICAgICAg ICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJ2ZXJpZnkgc2lnbmVyICVkIHdpdGgg a2V5Cj4gJyVzJyBzdWNjZWVkZWRcbiIsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp LCBway0+c3ViamVjdCk7Cj4gLSAgICAgICAgICAgICAgZXJyID0gR1JVQl9FUlJfTk9ORTsKPiAt ICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgfQo+IC0KPiAtICAgICAgICAgIGdy dWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlmeSBzaWduZXIgJWQgd2l0aCBrZXkKPiAn JXMnIGZhaWxlZCB3aXRoICVkXG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICBpLCBway0+ c3ViamVjdCwgcmMpOwo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAgIGdydWJfZnJlZSAoY29udGV4 dCk7Cj4gLQo+IC0gICAgICBpZiAoZXJyID09IEdSVUJfRVJSX05PTkUpCj4gLSAgICAgICAgYnJl YWs7Cj4gKyAgICAgICAgICBncnViX2ZyZWUgKGNvbnRleHQpOwo+ICsgICAgICAgICAgaWYgKGVy ciA9PSBHUlVCX0VSUl9OT05FKQo+ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgfQo+ICAg ICAgfQo+IAo+IC0gIC8qIElmIHdlIGRpZG4ndCB2ZXJpZnksIHByb3ZpZGUgYSBuZWF0IG1lc3Nh Z2UgKi8KPiAtICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCj4gLSAgICBlcnIgPSBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLAo+IC0gICAgICAgICAgICAgICAgICAgICAgTl8o IkZhaWxlZCB0byB2ZXJpZnkgc2lnbmF0dXJlIGFnYWluc3QgYSB0cnVzdGVkIAo+IGtleSIpKTsK PiAtCj4gLWNsZWFudXA6Cj4gICAgcGtjczdfc2lnbmVkRGF0YV9yZWxlYXNlICgmc2lnLnBrY3M3 KTsKPiAKPiArICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCj4gKyAgICBlcnIgPSBncnViX2Vy cm9yIChlcnIsIE5fKCJmYWlsZWQgdG8gdmVyaWZ5IHNpZ25hdHVyZSB3aXRoIGFueQo+IHRydXN0 ZWQga2V5XG4iKSk7Cj4gKyAgZWxzZQo+ICsgICAgZ3J1Yl9wcmludGYgKCJhcHBlbmRlZHNpZzog c3VjY2Vzc2Z1bGx5IHZlcmlmaWVkIHRoZSBzaWduYXR1cmUKPiB3aXRoIGEgdHJ1c3RlZCBrZXlc biIpOwo+ICsKPiAgICByZXR1cm4gZXJyOwo+ICB9CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVs QGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZl bAo=