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 19010CCA470 for ; Tue, 30 Sep 2025 11:49:44 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3YoG-0000nt-0m; Tue, 30 Sep 2025 07:46:20 -0400 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 1v3Yo7-0000hE-Fe for grub-devel@gnu.org; Tue, 30 Sep 2025 07:46:13 -0400 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 1v3Yo0-00065H-8O for grub-devel@gnu.org; Tue, 30 Sep 2025 07:46:10 -0400 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 58U5PuWv000332; Tue, 30 Sep 2025 11:45:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=/Wv02xMX+p9OveQZJ lzK1njg8DA7OtIEvdk8o5vpp70=; b=nymjLFVH7mseRL4aD0JQhD6WQt9vK89dw X7eNgNV1Bz0YL0eyDbNgyNPtHXXPm1tSOBmWJCS9FE/+b7BbIkzUJYUl1Z3QiP4F /kdN/RCihkdnXhMRWG0YZy/cmbC8a8VlgY2kEKP7mj7TRiy8wNk5cx/5kKmUzr6J lLkhiDed4YmLHoHBV9SK7xO+X2uSR38+iHvX3vwMw4bT0UfNbrsr6YTDgPrkemTj fsYDNZbMtR/33fFeMJKJXfKLydpNqahL6J44gQhHdY0DFXsNIqP/GxWrdaMA3NwC 1gkt7oBOCS4l5taY7PcPCxEqt3ORFqnfZJpifyRV7MSuZSeS6F6Tg== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49e6bhg8xk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Sep 2025 11:45:57 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 58U9PvN0007331; Tue, 30 Sep 2025 11:45:57 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49eurju34c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Sep 2025 11:45:56 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 58UBjqNi27329006 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 30 Sep 2025 11:45:53 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D71F220043; Tue, 30 Sep 2025 11:45:52 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0AB5420040; Tue, 30 Sep 2025 11:45:49 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.16.143]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 30 Sep 2025 11:45:48 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Sudhakar Kuppusamy , sridharm@linux.ibm.com, Daniel Kiper Subject: [PATCH v13 06/20] appended signatures: Parse ASN1 node Date: Tue, 30 Sep 2025 17:10:00 +0530 Message-ID: <20250930114018.78215-7-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930114018.78215-1-sudhakar@linux.ibm.com> References: <20250930114018.78215-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Authority-Analysis: v=2.4 cv=Se/6t/Ru c=1 sm=1 tr=0 ts=68dbc2f5 cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=yJojWOMRYYMA:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=QQTzU-B8HNZ-fe_KibsA:9 a=WlT8qwTXB_Kj6um4hl3b:22 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI3MDAxMCBTYWx0ZWRfX8xSAwiszGSly /aSeXWqsj/rMFxgg7nnnCvGHrGiXhEzhY+tmjHURnaOGHn1Len6IjLzuR7/8Oxu6M5qDt3hhiS0 ro1KXYNCOf8akuDfGodD6LURH70X7qI3CZDZm64P3VuEAmj764nX8ElKyirVQbsGf/ZaaIWKCzA koCKnjYLt2rSmDufSrrjDNkI9BKPfaJM1CGE906F68JGm3Ko6riYhmD37Z3mT/JekD67DEhoFcg tAM88000YCEmJlEG5tNlm6JhtFffrnWctG+zKTZcFXz8lqQ6SKGI84B7u9Hyu0lywZti1HPJxbf XsqMmvIlrNLgVBMnHeH9Au76Wrp+YYEmOAoSQm9k1hlGBXNEc4CNnFhInV3mEXJV8B0grl4JYBo RSygfGvwdvOCQmaKIgPsPNZyC4lOXA== X-Proofpoint-GUID: wMzNGqmos5cse491YxJG0FEtj6W9VA-K X-Proofpoint-ORIG-GUID: wMzNGqmos5cse491YxJG0FEtj6W9VA-K X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-30_01,2025-09-29_04,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 malwarescore=0 suspectscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 phishscore=0 priorityscore=1501 adultscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509270010 Received-SPF: pass client-ip=148.163.158.5; envelope-from=sudhakar@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_H4=0.001, RCVD_IN_MSPIKE_WL=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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org VGhpcyBjb2RlIGFsbG93cyB1cyB0byBwYXJzZSBBU04xIG5vZGUgYW5kIGFsbG9jYXRpbmcgbWVt b3J5IHRvIHN0b3JlIGl0LgpJdCB3aWxsIHdvcmsgZm9yIGFueXRoaW5nIHdoZXJlIHRoZSBzaXpl IGxpYnRhc24xIHJldHVybnMgaXMgcmlnaHQ6CiAtIEludGVnZXJzCiAtIE9jdGV0IHN0cmluZ3MK IC0gREVSIGVuY29kaW5nIG9mIG90aGVyIHN0cnVjdHVyZXMKCkl0IHdpbGwgX25vdF8gd29yayBm b3IgdGhpbmdzIHdoZXJlIGxpYnRhc24xIHNpemUgcmVxdWlyZXMgYWRqdXN0bWVudDoKIC0gU3Ry aW5ncyB0aGF0IHJlcXVpcmUgYW4gZXh0cmEgTlVMTCBieXRlIGF0IHRoZSBlbmQKIC0gQml0IHN0 cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0cywgbm90IGJ5 dGVzLgoKSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYSBub24tTlVMTCB2YWx1ZSwgdGhlIGNhbGxl ciBtdXN0IGZyZWUgaXQuCgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5z Lm5ldD4KU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgS3VwcHVzYW15IDxzdWRoYWthckBsaW51eC5p Ym0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29t PgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgpSZXZp ZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLS0tCiBncnVi LWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuaCB8IDQ0ICsrKysrKysrKwog Z3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1dGlsLmMgICAgfCA5OSArKysrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1 dGlsLmMKCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5k ZWRzaWcuaCBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNjAxZDYxNjRmCi0tLSAvZGV2L251 bGwKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmgKQEAg LTAsMCArMSw0NCBAQAorLyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5pZmllZCBCb290bG9hZGVy CisgKiAgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMiwgMjAyNSBJQk0gQ29ycG9yYXRpb24K KyAqCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8bGlidGFzbjEuaD4KKworZXh0 ZXJuIGFzbjFfbm9kZSBncnViX2dudXRsc19nbnV0bHNfYXNuOworZXh0ZXJuIGFzbjFfbm9kZSBn cnViX2dudXRsc19wa2l4X2FzbjsKKworLyogRG8gbGlidGFzbjEgaW5pdC4gKi8KK2V4dGVybiBp bnQKK2dydWJfYXNuMV9pbml0ICh2b2lkKTsKKworLyoKKyAqIFJlYWQgYSB2YWx1ZSBmcm9tIGFu IEFTTjEgbm9kZSwgYWxsb2NhdGluZyBtZW1vcnkgdG8gc3RvcmUgaXQuIEl0IHdpbGwgd29yawor ICogZm9yIGFueXRoaW5nIHdoZXJlIHRoZSBzaXplIGxpYnRhc24xIHJldHVybnMgaXMgcmlnaHQ6 CisgKiAgLSBJbnRlZ2VycworICogIC0gT2N0ZXQgc3RyaW5ncworICogIC0gREVSIGVuY29kaW5n IG9mIG90aGVyIHN0cnVjdHVyZXMKKyAqCisgKiBJdCB3aWxsIF9ub3RfIHdvcmsgZm9yIHRoaW5n cyB3aGVyZSBsaWJ0YXNuMSBzaXplIHJlcXVpcmVzIGFkanVzdG1lbnQ6CisgKiAgLSBTdHJpbmdz IHRoYXQgcmVxdWlyZSBhbiBleHRyYSBudWxsIGJ5dGUgYXQgdGhlIGVuZAorICogIC0gQml0IHN0 cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0cywgbm90IGJ5 dGVzLgorICoKKyAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbm9uLU5VTEwgdmFsdWUsIHRo ZSBjYWxsZXIgbXVzdCBmcmVlIGl0LgorICovCitleHRlcm4gdm9pZCAqCitncnViX2FzbjFfYWxs b2NhdGVfYW5kX3JlYWQgKGFzbjFfbm9kZSBub2RlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpmcmllbmRseV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncnViX2lu dDMyX3QgKmNvbnRlbnRfc2l6ZSk7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvYXBw ZW5kZWRzaWcvYXNuMXV0aWwuYyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hc24x dXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uOWRkNzg5OGVhCi0t LSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1dGls LmMKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqICBHUlVCICAtLSAgR1JhbmQgVW5pZmllZCBCb290 bG9hZGVyCisgKiAgQ29weXJpZ2h0IChDKSAyMDIwLCAyMDIyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAyMCwgMjAyMiwgMjAyNSBJQk0gQ29ycG9y YXRpb24KKyAqCisgKiAgR1JVQiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIEdSVUIgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggR1JVQi4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8bGlidGFzbjEuaD4K KyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisjaW5jbHVkZSA8Z3J1Yi9lcnIuaD4KKyNpbmNsdWRl IDxncnViL21tLmg+CisjaW5jbHVkZSA8Z3J1Yi9jcnlwdG8uaD4KKyNpbmNsdWRlIDxncnViL21p c2MuaD4KKyNpbmNsdWRlIDxncnViL2djcnlwdC9nY3J5cHQuaD4KKworI2luY2x1ZGUgImFwcGVu ZGVkc2lnLmgiCisKK2FzbjFfbm9kZSBncnViX2dudXRsc19nbnV0bHNfYXNuID0gTlVMTDsKK2Fz bjFfbm9kZSBncnViX2dudXRsc19wa2l4X2FzbiA9IE5VTEw7CisKK2V4dGVybiBjb25zdCBhc24x X3N0YXRpY19ub2RlIGdydWJfZ251dGxzX2FzbjFfdGFiW107CitleHRlcm4gY29uc3QgYXNuMV9z dGF0aWNfbm9kZSBncnViX3BraXhfYXNuMV90YWJbXTsKKworLyoKKyAqIFJlYWQgYSB2YWx1ZSBm cm9tIGFuIEFTTjEgbm9kZSwgYWxsb2NhdGluZyBtZW1vcnkgdG8gc3RvcmUgaXQuIEl0IHdpbGwg d29yaworICogZm9yIGFueXRoaW5nIHdoZXJlIHRoZSBzaXplIGxpYnRhc24xIHJldHVybnMgaXMg cmlnaHQ6CisgKiAgLSBJbnRlZ2VycworICogIC0gT2N0ZXQgc3RyaW5ncworICogIC0gREVSIGVu Y29kaW5nIG9mIG90aGVyIHN0cnVjdHVyZXMKKyAqCisgKiBJdCB3aWxsIF9ub3RfIHdvcmsgZm9y IHRoaW5ncyB3aGVyZSBsaWJ0YXNuMSBzaXplIHJlcXVpcmVzIGFkanVzdG1lbnQ6CisgKiAgLSBT dHJpbmdzIHRoYXQgcmVxdWlyZSBhbiBleHRyYSBOVUxMIGJ5dGUgYXQgdGhlIGVuZAorICogIC0g Qml0IHN0cmluZ3MgYmVjYXVzZSBsaWJ0YXNuMSByZXR1cm5zIHRoZSBsZW5ndGggaW4gYml0cywg bm90IGJ5dGVzLgorICoKKyAqIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgbm9uLU5VTEwgdmFs dWUsIHRoZSBjYWxsZXIgbXVzdCBmcmVlIGl0LgorICovCit2b2lkICoKK2dydWJfYXNuMV9hbGxv Y2F0ZV9hbmRfcmVhZCAoYXNuMV9ub2RlIG5vZGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKmZyaWVuZGx5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdydWJfaW50 MzJfdCAqY29udGVudF9zaXplKQoreworICBncnViX2ludDMyX3QgcmVzdWx0OworICBncnViX3Vp bnQ4X3QgKnRtcHN0ciA9IE5VTEw7CisgIGdydWJfaW50MzJfdCB0bXBzdHJfc2l6ZSA9IDA7CisK KyAgcmVzdWx0ID0gYXNuMV9yZWFkX3ZhbHVlIChub2RlLCBuYW1lLCBOVUxMLCAmdG1wc3RyX3Np emUpOworICBpZiAocmVzdWx0ICE9IEFTTjFfTUVNX0VSUk9SKQorICAgIHsKKyAgICAgIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFX1RZUEUsICJyZWFkaW5nIHNpemUgb2YgJXMgZGlkIG5v dCByZXR1cm4gZXhwZWN0ZWQgc3RhdHVzOiAlcyIsCisgICAgICAgICAgICAgICAgICBmcmllbmRs eV9uYW1lLCBhc24xX3N0cmVycm9yIChyZXN1bHQpKSA7CisgICAgICByZXR1cm4gTlVMTDsKKyAg ICB9CisKKyAgdG1wc3RyID0gZ3J1Yl9tYWxsb2MgKHRtcHN0cl9zaXplKTsKKyAgaWYgKHRtcHN0 ciA9PSBOVUxMKQorICAgIHsKKyAgICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1P UlksICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IHRvIHN0b3JlICVzIiwKKyAgICAgICAgICAg ICAgICAgIGZyaWVuZGx5X25hbWUpIDsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICBy ZXN1bHQgPSBhc24xX3JlYWRfdmFsdWUgKG5vZGUsIG5hbWUsIHRtcHN0ciwgJnRtcHN0cl9zaXpl KTsKKyAgaWYgKHJlc3VsdCAhPSBBU04xX1NVQ0NFU1MpCisgICAgeworICAgICAgZ3J1Yl9mcmVl ICh0bXBzdHIpOworICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVfVFlQRSwgImVy cm9yIHJlYWRpbmcgJXM6ICVzIiwgZnJpZW5kbHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgIGFz bjFfc3RyZXJyb3IgKHJlc3VsdCkpIDsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAq Y29udGVudF9zaXplID0gdG1wc3RyX3NpemU7CisKKyAgcmV0dXJuIHRtcHN0cjsKK30KKworaW50 CitncnViX2FzbjFfaW5pdCAodm9pZCkKK3sKKyAgaW50IHJlczsKKworICByZXMgPSBhc24xX2Fy cmF5MnRyZWUgKGdydWJfZ251dGxzX2FzbjFfdGFiLCAmZ3J1Yl9nbnV0bHNfZ251dGxzX2Fzbiwg TlVMTCk7CisgIGlmIChyZXMgIT0gQVNOMV9TVUNDRVNTKQorICAgIHJldHVybiByZXM7CisKKyAg cmVzID0gYXNuMV9hcnJheTJ0cmVlIChncnViX3BraXhfYXNuMV90YWIsICZncnViX2dudXRsc19w a2l4X2FzbiwgTlVMTCk7CisKKyAgcmV0dXJuIHJlczsKK30KLS0gCjIuNTAuMSAoQXBwbGUgR2l0 LTE1NSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpH cnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5n bnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=