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 7FEB3D6DDDB for ; Fri, 15 Nov 2024 07:38:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tBqtd-0002Ae-GV; Fri, 15 Nov 2024 02:37:39 -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 1tBqsx-0001Jn-P9 for grub-devel@gnu.org; Fri, 15 Nov 2024 02:36:57 -0500 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tBqsv-0000AF-9R for grub-devel@gnu.org; Fri, 15 Nov 2024 02:36:55 -0500 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-539eb97f26aso1522459e87.2 for ; Thu, 14 Nov 2024 23:36:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1731656210; x=1732261010; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/xirmFwWRkhUQPKJ0+RcIXpmFLIOD4j6kb4TLV3glC0=; b=aW9eK4gron94Q5CUI+ffX8iRMmFNdBuO645dnnSrAriZXBbg55tizHBX2+G+xeKQ3m Wx5d2x0N8GhmYzw8oa91CR9ITxoChDlQ+RpwjJE5CLuahVTtAdzOJttmmh662wgwyjWU rW4QIR5kxXl70tJ9Yea5KJfxGEdV1gyzWH6uQffICwqslEb9ntrJ0vGeXD94S93jOwvL no6nD2TG5I8jmlmorW8J3ainY8xx2Br2q1au4KkqHPzRWDL9DHOIx6ycyc5zFr2yQ1FI +sakR8LqlD9bZA3WF8SI0MP+/L7TEx0U8imBVuRZT9KSD2nO5FRiY3tV+6cmTNAs6QBg KVJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731656210; x=1732261010; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/xirmFwWRkhUQPKJ0+RcIXpmFLIOD4j6kb4TLV3glC0=; b=ThJHQekN/VQLxr9RS+jhna100jW/Tkaec+25p5TrcI2IrvetTrQ1bGPPz910HKhKfR iv8DsJxGIMihIycnHEoGG+oPCmGwY8T5smVLCB2HCV7yimFchZQ2PoEcvIlcVNbl/Fna dBPnn0fsHW+VhsvuFF4TOk64pZJp4W0wpFVnOoFMAWVI6UOtvwcBbEBAKj3aEfE32KN4 42Bqn7QPxVAh5YDrh/tflrNDC1R+c88CkgWeM+HD9glKF09Q5JSHYHTRAbMnoZ8LhFDX wFn6ptKtSJzwicwq/4x5AfksA1gMSk1FXfwFhntNkbUEA+FP613Zf+dwSnAGgMDJuDVd a3Tw== X-Gm-Message-State: AOJu0Yzs2WoICiS3YcS2vRh2L2tbWuVEUoDHOrbecjJjAn7I47+Yt++l D0s1c5RuZE0Xav/+Bm5+Smet2SQ9gFuFkBZ8k5KvmAFqUgVMft432moiTyEpXrTOR1GsTPnxS2H k X-Google-Smtp-Source: AGHT+IG7rqJhmwTNBws4me2eFI66Sb32+1aL01tJLtX2h3ENYVNicRAjTyRvSjJnZgx6AybyUFapOA== X-Received: by 2002:a05:6512:28b:b0:53d:abc8:b6d6 with SMTP id 2adb3069b0e04-53dabc8b762mr385402e87.2.1731656210106; Thu, 14 Nov 2024 23:36:50 -0800 (PST) Received: from localhost (111-240-136-29.dynamic-ip.hinet.net. [111.240.136.29]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-724770f9d0asm787586b3a.26.2024.11.14.23.36.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 Nov 2024 23:36:49 -0800 (PST) To: The development of GNU GRUB Subject: [PATCH v23 24/33] cryptodisk: Support key protectors Date: Fri, 15 Nov 2024 15:34:52 +0800 Message-ID: <20241115073506.2784-25-glin@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241115073506.2784-1-glin@suse.com> References: <20241115073506.2784-1-glin@suse.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::133; envelope-from=glin@suse.com; helo=mail-lf1-x133.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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: , From: Gary Lin via Grub-devel Reply-To: The development of GNU GRUB Cc: Gary Lin , Daniel Kiper , Hernan Gatta , Daniel Axtens , shkhisti@microsoft.com, jaskaran.khurana@microsoft.com, christopher.co@microsoft.com, daniel.mihai@microsoft.com, jaredz@redhat.com, development@efficientek.com, jejb@linux.ibm.com, mchang@suse.com, patrick.colp@oracle.com, Stefan Berger , Vladimir Serbinenko 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 RnJvbTogSGVybmFuIEdhdHRhIDxoZWdhdHRhQGxpbnV4Lm1pY3Jvc29mdC5jb20+CgpBZGQgYSBu ZXcgcGFyYW1ldGVyIHRvIGNyeXB0b21vdW50IHRvIHN1cHBvcnQgdGhlIGtleSBwcm90ZWN0b3Jz IGZyYW1ld29yazogLVAuClRoZSBwYXJhbWV0ZXIgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHJl dHJpZXZlIGEga2V5IGZyb20gc3BlY2lmaWVkIGtleQpwcm90ZWN0b3JzLiBUaGUgcGFyYW1ldGVy IG1heSBiZSByZXBlYXRlZCB0byBzcGVjaWZ5IGFueSBudW1iZXIgb2Yga2V5CnByb3RlY3RvcnMu IFRoZXNlIGFyZSB0cmllZCBpbiBvcmRlciB1bnRpbCBvbmUgcHJvdmlkZXMgYSB1c2FibGUga2V5 IGZvciBhbnkKZ2l2ZW4gZGlzay4KClNpZ25lZC1vZmYtYnk6IEhlcm5hbiBHYXR0YSA8aGVnYXR0 YUBsaW51eC5taWNyb3NvZnQuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIENoYW5nIDxtY2hh bmdAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEdhcnkgTGluIDxnbGluQHN1c2UuY29tPgpSZXZp ZXdlZC1ieTogR2xlbm4gV2FzaGJ1cm4gPGRldmVsb3BtZW50QGVmZmljaWVudGVrLmNvbT4KUmV2 aWV3ZWQtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXguaWJtLmNvbT4KUmV2aWV3ZWQt Ynk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQogTWFrZWZpbGUu dXRpbC5kZWYgICAgICAgICAgIHwgICAxICsKIGRvY3MvZ3J1Yi50ZXhpICAgICAgICAgICAgICB8 ICAxMiArLQogZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jIHwgMjQzICsrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQogaW5jbHVkZS9ncnViL2NyeXB0b2Rpc2suaCAgIHwgIDE2 ICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMDMgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudXRpbC5kZWYgYi9NYWtlZmlsZS51dGlsLmRlZgppbmRl eCBmZTcwY2Y5YmQuLmZiODJmNTlhMCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUudXRpbC5kZWYKKysr IGIvTWFrZWZpbGUudXRpbC5kZWYKQEAgLTQwLDYgKzQwLDcgQEAgbGlicmFyeSA9IHsKICAgY29t bW9uID0gZ3J1Yi1jb3JlL2Rpc2svbHVrcy5jOwogICBjb21tb24gPSBncnViLWNvcmUvZGlzay9s dWtzMi5jOwogICBjb21tb24gPSBncnViLWNvcmUvZGlzay9nZWxpLmM7CisgIGNvbW1vbiA9IGdy dWItY29yZS9kaXNrL2tleV9wcm90ZWN0b3IuYzsKICAgY29tbW9uID0gZ3J1Yi1jb3JlL2Rpc2sv Y3J5cHRvZGlzay5jOwogICBjb21tb24gPSBncnViLWNvcmUvZGlzay9BRlNwbGl0dGVyLmM7CiAg IGNvbW1vbiA9IGdydWItY29yZS9saWIvcGJrZGYyLmM7CmRpZmYgLS1naXQgYS9kb2NzL2dydWIu dGV4aSBiL2RvY3MvZ3J1Yi50ZXhpCmluZGV4IDc4ZDQ3ZjQ2Ny4uMTk5MzdmMWM5IDEwMDY0NAot LS0gYS9kb2NzL2dydWIudGV4aQorKysgYi9kb2NzL2dydWIudGV4aQpAQCAtNjY4NCwxNiArNjY4 NCwxOCBAQCBBbGlhcyBmb3IgQGNvZGV7aGFzaHN1bSAtLWhhc2ggY3JjMzIgYXJnIEBkb3Rze319 LiBTZWUgY29tbWFuZCBAY29tbWFuZHtoYXNoc3VtfQogQG5vZGUgY3J5cHRvbW91bnQKIEBzdWJz ZWN0aW9uIGNyeXB0b21vdW50CiAKLUBkZWZmbiBDb21tYW5kIGNyeXB0b21vdW50IFsgW0BvcHRp b257LXB9IHBhc3N3b3JkXSB8IFtAb3B0aW9uey1rfSBrZXlmaWxlIFtAb3B0aW9uey1PfSBrZXlv ZmZzZXRdIFtAb3B0aW9uey1TfSBrZXlzaXplXSBdIF0gW0BvcHRpb257LUh9IGZpbGVdIGRldmlj ZXxAb3B0aW9uey11fSB1dWlkfEBvcHRpb257LWF9fEBvcHRpb257LWJ9CitAZGVmZm4gQ29tbWFu ZCBjcnlwdG9tb3VudCBbIFtAb3B0aW9uey1wfSBwYXNzd29yZF0gfCBbQG9wdGlvbnsta30ga2V5 ZmlsZSBbQG9wdGlvbnstT30ga2V5b2Zmc2V0XSBbQG9wdGlvbnstU30ga2V5c2l6ZV0gXSB8IFtA b3B0aW9uey1QfSBwcm90ZWN0b3JdIF0gW0BvcHRpb257LUh9IGZpbGVdIGRldmljZXxAb3B0aW9u ey11fSB1dWlkfEBvcHRpb257LWF9fEBvcHRpb257LWJ9CiBTZXR1cCBhY2Nlc3MgdG8gZW5jcnlw dGVkIGRldmljZS4gQSBwYXNzcGhyYXNlIHdpbGwgYmUgcmVxdWVzdGVkIGludGVyYWN0aXZlbHks CiBpZiBuZWl0aGVyIHRoZSBAb3B0aW9uey1wfSBub3IgQG9wdGlvbnsta30gb3B0aW9ucyBhcmUg Z2l2ZW4uIFRoZSBvcHRpb24KIEBvcHRpb257LXB9IGNhbiBiZSB1c2VkIHRvIHN1cHBseSBhIHBh c3NwaHJhc2UgKHVzZWZ1bCBmb3Igc2NyaXB0cykuCiBBbHRlcm5hdGl2ZWx5IHRoZSBAb3B0aW9u ey1rfSBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc3VwcGx5IGEga2V5ZmlsZSB3aXRoCiBvcHRpb25z IEBvcHRpb257LU99IGFuZCBAb3B0aW9uey1TfSBvcHRpb25hbGx5IHN1cHBseWluZyB0aGUgb2Zm c2V0IGFuZCBzaXplLAotcmVzcGVjdGl2ZWx5LCBvZiB0aGUga2V5IGRhdGEgaW4gdGhlIGdpdmVu IGtleSBmaWxlLiBUaGUgQG9wdGlvbnstSH0gb3B0aW9ucyBjYW4KLWJlIHVzZWQgdG8gc3VwcGx5 IGNyeXB0b21vdW50IGJhY2tlbmRzIHdpdGggYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGZpbGUgKGFr YQotZGV0YWNoZWQgaGVhZGVyKS4gTm90IGFsbCBiYWNrZW5kcyBoYXZlIGhlYWRlcnMgbm9yIHN1 cHBvcnQgYWx0ZXJuYXRpdmUgaGVhZGVyCi1maWxlcyAoY3VycmVudGx5IG9ubHkgTFVLUzEgYW5k IExVS1MyIHN1cHBvcnQgdGhlbSkuCityZXNwZWN0aXZlbHksIG9mIHRoZSBrZXkgZGF0YSBpbiB0 aGUgZ2l2ZW4ga2V5IGZpbGUuIEJlc2lkZXMgdGhlIGtleWZpbGUsCit0aGUga2V5IGNhbiBiZSBz dG9yZWQgaW4gYSBrZXkgcHJvdGVjdG9yLCBhbmQgb3B0aW9uIEBvcHRpb257LVB9IGNvbmZpZ3Vy ZXMKK3NwZWNpZmljIGtleSBwcm90ZWN0b3IsIGUuZy4gdHBtMiwgdG8gcmV0cmlldmUgdGhlIGtl eSBmcm9tLgorVGhlIEBvcHRpb257LUh9IG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gc3VwcGx5IGNy eXB0b21vdW50IGJhY2tlbmRzIHdpdGggYW4KK2FsdGVybmF0aXZlIGhlYWRlciBmaWxlIChha2Eg ZGV0YWNoZWQgaGVhZGVyKS4gTm90IGFsbCBiYWNrZW5kcyBoYXZlIGhlYWRlcnMKK25vciBzdXBw b3J0IGFsdGVybmF0aXZlIGhlYWRlciBmaWxlcyAoY3VycmVudGx5IG9ubHkgTFVLUzEgYW5kIExV S1MyIHN1cHBvcnQgdGhlbSkuCiBBcmd1bWVudCBAdmFye2RldmljZX0gY29uZmlndXJlcyBzcGVj aWZpYyBncnViIGRldmljZQogKEBweHJlZntOYW1pbmcgY29udmVudGlvbn0pOyBvcHRpb24gQG9w dGlvbnstdX0gQHZhcnt1dWlkfSBjb25maWd1cmVzIGRldmljZQogd2l0aCBzcGVjaWZpZWQgQHZh cnt1dWlkfTsgb3B0aW9uIEBvcHRpb257LWF9IGNvbmZpZ3VyZXMgYWxsIGRldGVjdGVkIGVuY3J5 cHRlZApkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jIGIvZ3J1Yi1jb3Jl L2Rpc2svY3J5cHRvZGlzay5jCmluZGV4IDVlMWViMjc0My4uNmY3Mzk0OTQyIDEwMDY0NAotLS0g YS9ncnViLWNvcmUvZGlzay9jcnlwdG9kaXNrLmMKKysrIGIvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRv ZGlzay5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8Z3J1Yi9maWxlLmg+CiAjaW5jbHVk ZSA8Z3J1Yi9wcm9jZnMuaD4KICNpbmNsdWRlIDxncnViL3BhcnRpdGlvbi5oPgorI2luY2x1ZGUg PGdydWIva2V5X3Byb3RlY3Rvci5oPgogCiAjaWZkZWYgR1JVQl9VVElMCiAjaW5jbHVkZSA8Z3J1 Yi9lbXUvaG9zdGRpc2suaD4KQEAgLTQ1LDcgKzQ2LDggQEAgZW51bQogICAgIE9QVElPTl9LRVlG SUxFLAogICAgIE9QVElPTl9LRVlGSUxFX09GRlNFVCwKICAgICBPUFRJT05fS0VZRklMRV9TSVpF LAotICAgIE9QVElPTl9IRUFERVIKKyAgICBPUFRJT05fSEVBREVSLAorICAgIE9QVElPTl9QUk9U RUNUT1IKICAgfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBncnViX2FyZ19vcHRpb24gb3B0aW9u c1tdID0KQEAgLTU5LDYgKzYxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBncnViX2FyZ19vcHRp b24gb3B0aW9uc1tdID0KICAgICB7ImtleWZpbGUtb2Zmc2V0IiwgJ08nLCAwLCBOXygiS2V5IGZp bGUgb2Zmc2V0IChieXRlcykiKSwgMCwgQVJHX1RZUEVfSU5UfSwKICAgICB7ImtleWZpbGUtc2l6 ZSIsICdTJywgMCwgTl8oIktleSBmaWxlIGRhdGEgc2l6ZSAoYnl0ZXMpIiksIDAsIEFSR19UWVBF X0lOVH0sCiAgICAgeyJoZWFkZXIiLCAnSCcsIDAsIE5fKCJSZWFkIGhlYWRlciBmcm9tIGZpbGUi KSwgMCwgQVJHX1RZUEVfU1RSSU5HfSwKKyAgICB7InByb3RlY3RvciIsICdQJywgR1JVQl9BUkdf T1BUSU9OX1JFUEVBVEFCTEUsCisgICAgIE5fKCJVbmxvY2sgdm9sdW1lKHMpIHVzaW5nIGtleSBw cm90ZWN0b3IocykuIiksIDAsIEFSR19UWVBFX1NUUklOR30sCiAgICAgezAsIDAsIDAsIDAsIDAs IDB9CiAgIH07CiAKQEAgLTEwNjIsNiArMTA2Niw3IEBAIGdydWJfY3J5cHRvZGlza19zY2FuX2Rl dmljZV9yZWFsIChjb25zdCBjaGFyICpuYW1lLAogICBncnViX2Vycl90IHJldCA9IEdSVUJfRVJS X05PTkU7CiAgIGdydWJfY3J5cHRvZGlza190IGRldjsKICAgZ3J1Yl9jcnlwdG9kaXNrX2Rldl90 IGNyOworICBpbnQgaTsKICAgc3RydWN0IGNyeXB0b2Rpc2tfcmVhZF9ob29rX2N0eCByZWFkX2hv b2tfZGF0YSA9IHswfTsKICAgaW50IGFza3Bhc3MgPSAwOwogICBjaGFyICpwYXJ0ID0gTlVMTDsK QEAgLTExMTQsNzkgKzExMTksMTUxIEBAIGdydWJfY3J5cHRvZGlza19zY2FuX2RldmljZV9yZWFs IChjb25zdCBjaGFyICpuYW1lLAogICAgICAgZ290byBlcnJvcl9ub19jbG9zZTsKICAgICBpZiAo IWRldikKICAgICAgIGNvbnRpbnVlOworICAgIGJyZWFrOworICB9CiAKLSAgICBpZiAoY2FyZ3Mt PmtleV9sZW4pCi0gICAgICB7Ci0JcmV0ID0gY3ItPnJlY292ZXJfa2V5IChzb3VyY2UsIGRldiwg Y2FyZ3MpOwotCWlmIChyZXQgIT0gR1JVQl9FUlJfTk9ORSkKLQkgIGdvdG8gZXJyb3I7Ci0gICAg ICB9Ci0gICAgZWxzZQotICAgICAgewotCS8qIEdldCB0aGUgcGFzc3BocmFzZSBmcm9tIHRoZSB1 c2VyLCBpZiBubyBrZXkgZGF0YS4gKi8KLQl1bnNpZ25lZCBsb25nIHRyaWVzID0gMzsKLQljb25z dCBjaGFyICp0cmllc19lbnY7CisgIGlmIChkZXYgPT0gTlVMTCkKKyAgICB7CisgICAgICBncnVi X2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLAorCQkgICJubyBjcnlwdG9kaXNrIG1vZHVsZSBj YW4gaGFuZGxlIHRoaXMgZGV2aWNlIik7CisgICAgICBnb3RvIGVycm9yX25vX2Nsb3NlOworICAg IH0KIAotCWFza3Bhc3MgPSAxOwotCWNhcmdzLT5rZXlfZGF0YSA9IGdydWJfbWFsbG9jIChHUlVC X0NSWVBUT0RJU0tfTUFYX1BBU1NQSFJBU0UpOwotCWlmIChjYXJncy0+a2V5X2RhdGEgPT0gTlVM TCkKLQkgIGdvdG8gZXJyb3Jfbm9fY2xvc2U7CisgIGlmIChjYXJncy0+cHJvdGVjdG9ycykKKyAg ICB7CisgICAgICBmb3IgKGkgPSAwOyBjYXJncy0+cHJvdGVjdG9yc1tpXTsgaSsrKQorCXsKKwkg IGlmIChjYXJncy0+a2V5X2NhY2hlW2ldLmludmFsaWQpCisJICAgIGNvbnRpbnVlOwogCi0JdHJp ZXNfZW52ID0gZ3J1Yl9lbnZfZ2V0ICgiY3J5cHRvZGlza19wYXNzcGhyYXNlX3RyaWVzIik7Ci0J aWYgKHRyaWVzX2VudiAhPSBOVUxMICYmIHRyaWVzX2VudlswXSAhPSAnXDAnKQotCSAgewotCSAg ICB1bnNpZ25lZCBsb25nIHRyaWVzX2Vudl92YWw7Ci0JICAgIGNvbnN0IGNoYXIgKnA7CisJICBp ZiAoY2FyZ3MtPmtleV9jYWNoZVtpXS5rZXkgPT0gTlVMTCkKKwkgICAgeworCSAgICAgIHJldCA9 IGdydWJfa2V5X3Byb3RlY3Rvcl9yZWNvdmVyX2tleSAoY2FyZ3MtPnByb3RlY3RvcnNbaV0sCisJ CQkJCQkgICAgJmNhcmdzLT5rZXlfY2FjaGVbaV0ua2V5LAorCQkJCQkJICAgICZjYXJncy0+a2V5 X2NhY2hlW2ldLmtleV9sZW4pOworCSAgICAgIGlmIChyZXQgIT0gR1JVQl9FUlJfTk9ORSkKKwkJ eworCQkgIGlmIChncnViX2Vycm5vKQorCQkgICAgeworCQkgICAgICBncnViX3ByaW50X2Vycm9y ICgpOworCQkgICAgICBncnViX2Vycm5vID0gR1JVQl9FUlJfTk9ORTsKKwkJICAgIH0KKworCQkg IGdydWJfZHByaW50ZiAoImNyeXB0b2Rpc2siLAorCQkJCSJmYWlsZWQgdG8gcmVjb3ZlciBhIGtl eSBmcm9tIGtleSBwcm90ZWN0b3IgIgorCQkJCSIlcywgd2lsbCBub3QgdHJ5IGl0IGFnYWluIGZv ciBhbnkgb3RoZXIgIgorCQkJCSJkaXNrcywgaWYgYW55LCBkdXJpbmcgdGhpcyBpbnZvY2F0aW9u IG9mICIKKwkJCQkiY3J5cHRvbW91bnRcbiIsCisJCQkJY2FyZ3MtPnByb3RlY3RvcnNbaV0pOwor CisJCSAgY2FyZ3MtPmtleV9jYWNoZVtpXS5pbnZhbGlkID0gMTsKKwkJICBjb250aW51ZTsKKwkJ fQorCSAgICB9CiAKLQkgICAgdHJpZXNfZW52X3ZhbCA9IGdydWJfc3RydG91bCAodHJpZXNfZW52 LCAmcCwgMCk7Ci0JICAgIGlmICgqcCA9PSAnXDAnICYmIHRyaWVzX2Vudl92YWwgIT0gfjBVTCkK LQkgICAgICB0cmllcyA9IHRyaWVzX2Vudl92YWw7Ci0JICAgIGVsc2UKLQkgICAgICBncnViX3By aW50Zl8gKE5fKCJJbnZhbGlkIGNyeXB0b2Rpc2tfcGFzc3BocmFzZV90cmllcyB2YWx1ZSBgJXMn LiBEZWZhdWx0aW5nIHRvICVsdS5cbiIpLAotCQkJICAgIHRyaWVzX2VudiwKLQkJCSAgICB0cmll cyk7Ci0JICB9CisJICBjYXJncy0+a2V5X2RhdGEgPSBjYXJncy0+a2V5X2NhY2hlW2ldLmtleTsK KwkgIGNhcmdzLT5rZXlfbGVuID0gY2FyZ3MtPmtleV9jYWNoZVtpXS5rZXlfbGVuOwogCi0JZm9y ICg7IHRyaWVzID4gMDsgdHJpZXMtLSkKLQkgIHsKLQkgICAgcGFydCA9IGdydWJfcGFydGl0aW9u X2dldF9uYW1lIChzb3VyY2UtPnBhcnRpdGlvbik7Ci0JICAgIGdydWJfcHJpbnRmXyAoTl8oIkVu dGVyIHBhc3NwaHJhc2UgZm9yICVzJXMlcyAoJXMpOiAiKSwgc291cmNlLT5uYW1lLAotCQkJIHNv dXJjZS0+cGFydGl0aW9uICE9IE5VTEwgPyAiLCIgOiAiIiwKLQkJCSBwYXJ0ICE9IE5VTEwgPyBw YXJ0IDogTl8oIlVOS05PV04iKSwKLQkJCSBkZXYtPnV1aWQpOwotCSAgICBncnViX2ZyZWUgKHBh cnQpOwotCi0JICAgIGlmICghZ3J1Yl9wYXNzd29yZF9nZXQgKChjaGFyICopIGNhcmdzLT5rZXlf ZGF0YSwgR1JVQl9DUllQVE9ESVNLX01BWF9QQVNTUEhSQVNFKSkKLQkgICAgICB7Ci0JCWdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwgInBhc3NwaHJhc2Ugbm90IHN1cHBsaWVkIik7 CisJICByZXQgPSBjci0+cmVjb3Zlcl9rZXkgKHNvdXJjZSwgZGV2LCBjYXJncyk7CisJICBpZiAo cmV0ICE9IEdSVUJfRVJSX05PTkUpCisJICAgIHsKKwkgICAgICBwYXJ0ID0gZ3J1Yl9wYXJ0aXRp b25fZ2V0X25hbWUgKHNvdXJjZS0+cGFydGl0aW9uKTsKKwkgICAgICBncnViX2RwcmludGYgKCJj cnlwdG9kaXNrIiwKKwkJCSAgICAicmVjb3ZlcmVkIGEga2V5IGZyb20ga2V5IHByb3RlY3RvciAl cyBidXQgaXQgIgorCQkJICAgICJmYWlsZWQgdG8gdW5sb2NrICVzJXMlcyAoJXMpXG4iLAorCQkJ ICAgIGNhcmdzLT5wcm90ZWN0b3JzW2ldLCBzb3VyY2UtPm5hbWUsCisJCQkgICAgc291cmNlLT5w YXJ0aXRpb24gIT0gTlVMTCA/ICIsIiA6ICIiLAorCQkJICAgIHBhcnQgIT0gTlVMTCA/IHBhcnQg OiBOXygiVU5LTk9XTiIpLCBkZXYtPnV1aWQpOworCSAgICAgIGdydWJfZnJlZSAocGFydCk7CisJ ICAgICAgY29udGludWU7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeworCSAgICAgIHJldCA9IGdy dWJfY3J5cHRvZGlza19pbnNlcnQgKGRldiwgbmFtZSwgc291cmNlKTsKKwkgICAgICBpZiAocmV0 ICE9IEdSVUJfRVJSX05PTkUpCiAJCWdvdG8gZXJyb3I7Ci0JICAgICAgfQotCSAgICBjYXJncy0+ a2V5X2xlbiA9IGdydWJfc3RybGVuICgoY2hhciAqKSBjYXJncy0+a2V5X2RhdGEpOworCSAgICAg IGdvdG8gY2xlYW51cDsKKwkgICAgfQorCX0KKworICAgICAgcGFydCA9IGdydWJfcGFydGl0aW9u X2dldF9uYW1lIChzb3VyY2UtPnBhcnRpdGlvbik7CisgICAgICBncnViX2Vycm9yIChHUlVCX0VS Ul9BQ0NFU1NfREVOSUVELAorCQkgIE5fKCJubyBrZXkgcHJvdGVjdG9yIHByb3ZpZGVkIGEgdXNh YmxlIGtleSBmb3IgJXMlcyVzICglcykiKSwKKwkJICBzb3VyY2UtPm5hbWUsIHNvdXJjZS0+cGFy dGl0aW9uICE9IE5VTEwgPyAiLCIgOiAiIiwKKwkJICBwYXJ0ICE9IE5VTEwgPyBwYXJ0IDogTl8o IlVOS05PV04iKSwgZGV2LT51dWlkKTsKKyAgICAgIGdydWJfZnJlZSAocGFydCk7CisgICAgICBn b3RvIGVycm9yOworICAgIH0KKworICBpZiAoY2FyZ3MtPmtleV9sZW4pCisgICAgeworICAgICAg cmV0ID0gY3ItPnJlY292ZXJfa2V5IChzb3VyY2UsIGRldiwgY2FyZ3MpOworICAgICAgaWYgKHJl dCAhPSBHUlVCX0VSUl9OT05FKQorCWdvdG8gZXJyb3I7CisgICAgfQorICBlbHNlCisgICAgewor ICAgICAgLyogR2V0IHRoZSBwYXNzcGhyYXNlIGZyb20gdGhlIHVzZXIsIGlmIG5vIGtleSBkYXRh LiAqLworICAgICAgdW5zaWduZWQgbG9uZyB0cmllcyA9IDM7CisgICAgICBjb25zdCBjaGFyICp0 cmllc19lbnY7CiAKLQkgICAgcmV0ID0gY3ItPnJlY292ZXJfa2V5IChzb3VyY2UsIGRldiwgY2Fy Z3MpOwotCSAgICBpZiAocmV0ID09IEdSVUJfRVJSX05PTkUpCi0JICAgICAgYnJlYWs7Ci0JICAg IGlmIChyZXQgIT0gR1JVQl9FUlJfQUNDRVNTX0RFTklFRCB8fCB0cmllcyA9PSAxKQorICAgICAg YXNrcGFzcyA9IDE7CisgICAgICBjYXJncy0+a2V5X2RhdGEgPSBncnViX21hbGxvYyAoR1JVQl9D UllQVE9ESVNLX01BWF9QQVNTUEhSQVNFKTsKKyAgICAgIGlmIChjYXJncy0+a2V5X2RhdGEgPT0g TlVMTCkKKwlnb3RvIGVycm9yX25vX2Nsb3NlOworCisgICAgICB0cmllc19lbnYgPSBncnViX2Vu dl9nZXQgKCJjcnlwdG9kaXNrX3Bhc3NwaHJhc2VfdHJpZXMiKTsKKyAgICAgIGlmICh0cmllc19l bnYgIT0gTlVMTCAmJiB0cmllc19lbnZbMF0gIT0gJ1wwJykKKwl7CisJICB1bnNpZ25lZCBsb25n IHRyaWVzX2Vudl92YWw7CisJICBjb25zdCBjaGFyICpwOworCisJICB0cmllc19lbnZfdmFsID0g Z3J1Yl9zdHJ0b3VsICh0cmllc19lbnYsICZwLCAwKTsKKwkgIGlmICgqcCA9PSAnXDAnICYmIHRy aWVzX2Vudl92YWwgIT0gfjBVTCkKKwkgICAgdHJpZXMgPSB0cmllc19lbnZfdmFsOworCSAgZWxz ZQorCSAgICBncnViX3ByaW50Zl8gKE5fKCJJbnZhbGlkIGNyeXB0b2Rpc2tfcGFzc3BocmFzZV90 cmllcyB2YWx1ZSBgJXMnLiBEZWZhdWx0aW5nIHRvICVsdS5cbiIpLAorCQkJICB0cmllc19lbnYs CisJCQkgIHRyaWVzKTsKKwl9CisKKyAgICAgIGZvciAoOyB0cmllcyA+IDA7IHRyaWVzLS0pCisJ eworCSAgcGFydCA9IGdydWJfcGFydGl0aW9uX2dldF9uYW1lIChzb3VyY2UtPnBhcnRpdGlvbik7 CisJICBncnViX3ByaW50Zl8gKE5fKCJFbnRlciBwYXNzcGhyYXNlIGZvciAlcyVzJXMgKCVzKTog IiksIHNvdXJjZS0+bmFtZSwKKwkJCXNvdXJjZS0+cGFydGl0aW9uICE9IE5VTEwgPyAiLCIgOiAi IiwKKwkJCXBhcnQgIT0gTlVMTCA/IHBhcnQgOiBOXygiVU5LTk9XTiIpLAorCQkJZGV2LT51dWlk KTsKKwkgIGdydWJfZnJlZSAocGFydCk7CisKKwkgIGlmICghZ3J1Yl9wYXNzd29yZF9nZXQgKChj aGFyICopIGNhcmdzLT5rZXlfZGF0YSwgR1JVQl9DUllQVE9ESVNLX01BWF9QQVNTUEhSQVNFKSkK KwkgICAgeworCSAgICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwgInBhc3Nw aHJhc2Ugbm90IHN1cHBsaWVkIik7CiAJICAgICAgZ290byBlcnJvcjsKLQkgICAgZ3J1Yl9wdXRz XyAoTl8oIkludmFsaWQgcGFzc3BocmFzZS4iKSk7Ci0KLQkgICAgLyoKLQkgICAgICogU2luY2Ug cmVjb3Zlcl9rZXkoKSBjYWxscyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBncnViX2Vycm5vLAot CSAgICAgKiBhIGxlZnRvdmVyIGVycm9yIHZhbHVlIGZyb20gYSBwcmV2aW91c2x5IHJlamVjdGVk IHBhc3NwaHJhc2UKLQkgICAgICogd2lsbCB0cmlnZ2VyIGEgcGhhbnRvbSBmYWlsdXJlLiBXZSB0 aGVyZWZvcmUgY2xlYXIgaXQgYmVmb3JlCi0JICAgICAqIHRyeWluZyBhIG5ldyBwYXNzcGhyYXNl LgotCSAgICAgKi8KLQkgICAgZ3J1Yl9lcnJubyA9IEdSVUJfRVJSX05PTkU7Ci0JICB9Ci0gICAg ICB9CisJICAgIH0KKwkgIGNhcmdzLT5rZXlfbGVuID0gZ3J1Yl9zdHJsZW4gKChjaGFyICopIGNh cmdzLT5rZXlfZGF0YSk7CiAKLSAgICByZXQgPSBncnViX2NyeXB0b2Rpc2tfaW5zZXJ0IChkZXYs IG5hbWUsIHNvdXJjZSk7Ci0gICAgaWYgKHJldCAhPSBHUlVCX0VSUl9OT05FKQotICAgICAgZ290 byBlcnJvcjsKKwkgIHJldCA9IGNyLT5yZWNvdmVyX2tleSAoc291cmNlLCBkZXYsIGNhcmdzKTsK KwkgIGlmIChyZXQgPT0gR1JVQl9FUlJfTk9ORSkKKwkgICAgYnJlYWs7CisJICBpZiAocmV0ICE9 IEdSVUJfRVJSX0FDQ0VTU19ERU5JRUQgfHwgdHJpZXMgPT0gMSkKKwkgICAgZ290byBlcnJvcjsK KwkgIGdydWJfcHV0c18gKE5fKCJJbnZhbGlkIHBhc3NwaHJhc2UuIikpOworCisJICAvKgorCSAg ICogU2luY2UgcmVjb3Zlcl9rZXkoKSBjYWxscyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBncnVi X2Vycm5vLAorCSAgICogYSBsZWZ0b3ZlciBlcnJvciB2YWx1ZSBmcm9tIGEgcHJldmlvdXNseSBy ZWplY3RlZCBwYXNzcGhyYXNlCisJICAgKiB3aWxsIHRyaWdnZXIgYSBwaGFudG9tIGZhaWx1cmUu IFdlIHRoZXJlZm9yZSBjbGVhciBpdCBiZWZvcmUKKwkgICAqIHRyeWluZyBhIG5ldyBwYXNzcGhy YXNlLgorCSAgICovCisJICBncnViX2Vycm5vID0gR1JVQl9FUlJfTk9ORTsKKwl9CisgICAgfQor CisgIHJldCA9IGdydWJfY3J5cHRvZGlza19pbnNlcnQgKGRldiwgbmFtZSwgc291cmNlKTsKKyAg aWYgKHJldCAhPSBHUlVCX0VSUl9OT05FKQorICAgIGdvdG8gZXJyb3I7CiAKLSAgICBnb3RvIGNs ZWFudXA7Ci0gIH0KLSAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgIm5vIGNyeXB0 b2Rpc2sgbW9kdWxlIGNhbiBoYW5kbGUgdGhpcyBkZXZpY2UiKTsKICAgZ290byBjbGVhbnVwOwog CiAgZXJyb3I6CkBAIC0xMjk4LDYgKzEzNzUsMjAgQEAgZ3J1Yl9jcnlwdG9kaXNrX3NjYW5fZGV2 aWNlIChjb25zdCBjaGFyICpuYW1lLAogICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9pZAor Z3J1Yl9jcnlwdG9kaXNrX2NsZWFyX2tleV9jYWNoZSAoc3RydWN0IGdydWJfY3J5cHRvbW91bnRf YXJncyAqY2FyZ3MpCit7CisgIGludCBpOworCisgIGlmIChjYXJncy0+a2V5X2NhY2hlID09IE5V TEwgfHwgY2FyZ3MtPnByb3RlY3RvcnMgPT0gTlVMTCkKKyAgICByZXR1cm47CisKKyAgZm9yIChp ID0gMDsgY2FyZ3MtPnByb3RlY3RvcnNbaV07IGkrKykKKyAgICBncnViX2ZyZWUgKGNhcmdzLT5r ZXlfY2FjaGVbaV0ua2V5KTsKKworICBncnViX2ZyZWUgKGNhcmdzLT5rZXlfY2FjaGUpOworfQor CiBzdGF0aWMgZ3J1Yl9lcnJfdAogZ3J1Yl9jbWRfY3J5cHRvbW91bnQgKGdydWJfZXh0Y21kX2Nv bnRleHRfdCBjdHh0LCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCiB7CkBAIC0xMzEwLDYgKzE0MDEs MTQgQEAgZ3J1Yl9jbWRfY3J5cHRvbW91bnQgKGdydWJfZXh0Y21kX2NvbnRleHRfdCBjdHh0LCBp bnQgYXJnYywgY2hhciAqKmFyZ3MpCiAgIGlmIChncnViX2NyeXB0b2Rpc2tfbGlzdCA9PSBOVUxM KQogICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfTU9EVUxFLCAibm8gY3J5cHRv ZGlzayBtb2R1bGVzIGxvYWRlZCIpOwogCisgIGlmIChzdGF0ZVtPUFRJT05fUEFTU1dPUkRdLnNl dCAmJiBzdGF0ZVtPUFRJT05fUFJPVEVDVE9SXS5zZXQpIC8qIHBhc3N3b3JkIGFuZCBrZXkgcHJv dGVjdG9yICovCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9BUkdVTUVOVCwK KwkJICAgICAgICJhIHBhc3N3b3JkIGFuZCBhIGtleSBwcm90ZWN0b3IgY2Fubm90IGJvdGggYmUg c2V0Iik7CisKKyAgaWYgKHN0YXRlW09QVElPTl9LRVlGSUxFXS5zZXQgJiYgc3RhdGVbT1BUSU9O X1BST1RFQ1RPUl0uc2V0KSAvKiBrZXkgZmlsZSBhbmQga2V5IHByb3RlY3RvciAqLworICAgIHJl dHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisJCSAgICAgICAiYSBrZXkg ZmlsZSBhbmQgYSBrZXkgcHJvdGVjdG9yIGNhbm5vdCBib3RoIGJlIHNldCIpOworCiAgIGlmIChz dGF0ZVtPUFRJT05fUEFTU1dPUkRdLnNldCkgLyogcGFzc3dvcmQgKi8KICAgICB7CiAgICAgICBj YXJncy5rZXlfZGF0YSA9IChncnViX3VpbnQ4X3QgKikgc3RhdGVbT1BUSU9OX1BBU1NXT1JEXS5h cmc7CkBAIC0xNDAyLDYgKzE1MDEsMTUgQEAgZ3J1Yl9jbWRfY3J5cHRvbW91bnQgKGdydWJfZXh0 Y21kX2NvbnRleHRfdCBjdHh0LCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCiAJcmV0dXJuIGdydWJf ZXJybm87CiAgICAgfQogCisgIGlmIChzdGF0ZVtPUFRJT05fUFJPVEVDVE9SXS5zZXQpIC8qIGtl eSBwcm90ZWN0b3IocykgKi8KKyAgICB7CisgICAgICBjYXJncy5rZXlfY2FjaGUgPSBncnViX3ph bGxvYyAoc3RhdGVbT1BUSU9OX1BST1RFQ1RPUl0uc2V0ICogc2l6ZW9mICgqY2FyZ3Mua2V5X2Nh Y2hlKSk7CisgICAgICBpZiAoY2FyZ3Mua2V5X2NhY2hlID09IE5VTEwpCisJcmV0dXJuIGdydWJf ZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksCisJCQkgICAibm8gbWVtb3J5IGZvciBrZXkg cHJvdGVjdG9yIGtleSBjYWNoZSIpOworICAgICAgY2FyZ3MucHJvdGVjdG9ycyA9IHN0YXRlW09Q VElPTl9QUk9URUNUT1JdLmFyZ3M7CisgICAgfQorCiAgIGlmIChzdGF0ZVtPUFRJT05fVVVJRF0u c2V0KSAvKiB1dWlkICovCiAgICAgewogICAgICAgaW50IGZvdW5kX3V1aWQ7CkBAIC0xNDEwLDYg KzE1MTgsNyBAQCBncnViX2NtZF9jcnlwdG9tb3VudCAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGN0 eHQsIGludCBhcmdjLCBjaGFyICoqYXJncykKICAgICAgIGRldiA9IGdydWJfY3J5cHRvZGlza19n ZXRfYnlfdXVpZCAoYXJnc1swXSk7CiAgICAgICBpZiAoZGV2KQogCXsKKwkgIGdydWJfY3J5cHRv ZGlza19jbGVhcl9rZXlfY2FjaGUgKCZjYXJncyk7CiAJICBncnViX2RwcmludGYgKCJjcnlwdG9k aXNrIiwKIAkJCSJhbHJlYWR5IG1vdW50ZWQgYXMgY3J5cHRvJWx1XG4iLCBkZXYtPmlkKTsKIAkg IHJldHVybiBHUlVCX0VSUl9OT05FOwpAQCAtMTQxOCw2ICsxNTI3LDcgQEAgZ3J1Yl9jbWRfY3J5 cHRvbW91bnQgKGdydWJfZXh0Y21kX2NvbnRleHRfdCBjdHh0LCBpbnQgYXJnYywgY2hhciAqKmFy Z3MpCiAgICAgICBjYXJncy5jaGVja19ib290ID0gc3RhdGVbT1BUSU9OX0JPT1RdLnNldDsKICAg ICAgIGNhcmdzLnNlYXJjaF91dWlkID0gYXJnc1swXTsKICAgICAgIGZvdW5kX3V1aWQgPSBncnVi X2RldmljZV9pdGVyYXRlICgmZ3J1Yl9jcnlwdG9kaXNrX3NjYW5fZGV2aWNlLCAmY2FyZ3MpOwor ICAgICAgZ3J1Yl9jcnlwdG9kaXNrX2NsZWFyX2tleV9jYWNoZSAoJmNhcmdzKTsKIAogICAgICAg aWYgKGZvdW5kX3V1aWQpCiAJcmV0dXJuIEdSVUJfRVJSX05PTkU7CkBAIC0xNDM3LDYgKzE1NDcs NyBAQCBncnViX2NtZF9jcnlwdG9tb3VudCAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGN0eHQsIGlu dCBhcmdjLCBjaGFyICoqYXJncykKICAgICB7CiAgICAgICBjYXJncy5jaGVja19ib290ID0gc3Rh dGVbT1BUSU9OX0JPT1RdLnNldDsKICAgICAgIGdydWJfZGV2aWNlX2l0ZXJhdGUgKCZncnViX2Ny eXB0b2Rpc2tfc2Nhbl9kZXZpY2UsICZjYXJncyk7CisgICAgICBncnViX2NyeXB0b2Rpc2tfY2xl YXJfa2V5X2NhY2hlICgmY2FyZ3MpOwogICAgICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CiAgICAg fQogICBlbHNlCkBAIC0xNDYwLDYgKzE1NzEsNyBAQCBncnViX2NtZF9jcnlwdG9tb3VudCAoZ3J1 Yl9leHRjbWRfY29udGV4dF90IGN0eHQsIGludCBhcmdjLCBjaGFyICoqYXJncykKICAgICAgIGRp c2sgPSBncnViX2Rpc2tfb3BlbiAoZGlza25hbWUpOwogICAgICAgaWYgKCFkaXNrKQogCXsKKwkg IGdydWJfY3J5cHRvZGlza19jbGVhcl9rZXlfY2FjaGUgKCZjYXJncyk7CiAJICBpZiAoZGlza2xh c3QpCiAJICAgICpkaXNrbGFzdCA9ICcpJzsKIAkgIHJldHVybiBncnViX2Vycm5vOwpAQCAtMTQ3 MCwxMiArMTU4MiwxNCBAQCBncnViX2NtZF9jcnlwdG9tb3VudCAoZ3J1Yl9leHRjbWRfY29udGV4 dF90IGN0eHQsIGludCBhcmdjLCBjaGFyICoqYXJncykKIAl7CiAJICBncnViX2RwcmludGYgKCJj cnlwdG9kaXNrIiwgImFscmVhZHkgbW91bnRlZCBhcyBjcnlwdG8lbHVcbiIsIGRldi0+aWQpOwog CSAgZ3J1Yl9kaXNrX2Nsb3NlIChkaXNrKTsKKwkgIGdydWJfY3J5cHRvZGlza19jbGVhcl9rZXlf Y2FjaGUgKCZjYXJncyk7CiAJICBpZiAoZGlza2xhc3QpCiAJICAgICpkaXNrbGFzdCA9ICcpJzsK IAkgIHJldHVybiBHUlVCX0VSUl9OT05FOwogCX0KIAogICAgICAgZGV2ID0gZ3J1Yl9jcnlwdG9k aXNrX3NjYW5fZGV2aWNlX3JlYWwgKGRpc2tuYW1lLCBkaXNrLCAmY2FyZ3MpOworICAgICAgZ3J1 Yl9jcnlwdG9kaXNrX2NsZWFyX2tleV9jYWNoZSAoJmNhcmdzKTsKIAogICAgICAgZ3J1Yl9kaXNr X2Nsb3NlIChkaXNrKTsKICAgICAgIGlmIChkaXNrbGFzdCkKQEAgLTE2MjksNiArMTc0Myw3IEBA IEdSVUJfTU9EX0lOSVQgKGNyeXB0b2Rpc2spCiAgIGNtZCA9IGdydWJfcmVnaXN0ZXJfZXh0Y21k ICgiY3J5cHRvbW91bnQiLCBncnViX2NtZF9jcnlwdG9tb3VudCwgMCwKIAkJCSAgICAgIE5fKCJb IFstcCBwYXNzd29yZF0gfCBbLWsga2V5ZmlsZSIKIAkJCQkgIiBbLU8ga2V5b2Zmc2V0XSBbLVMg a2V5c2l6ZV0gXSBdIFstSCBmaWxlXSIKKwkJCQkgIiBbLVAgcHJvdGVjdG9yIFstUCBwcm90ZWN0 b3IgLi4uXV0iCiAJCQkJICIgPFNPVVJDRXwtdSBVVUlEfC1hfC1iPiIpLAogCQkJICAgICAgTl8o Ik1vdW50IGEgY3J5cHRvIGRldmljZS4iKSwgb3B0aW9ucyk7CiAgIGdydWJfcHJvY2ZzX3JlZ2lz dGVyICgibHVrc19zY3JpcHQiLCAmbHVrc19zY3JpcHQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9n cnViL2NyeXB0b2Rpc2suaCBiL2luY2x1ZGUvZ3J1Yi9jcnlwdG9kaXNrLmgKaW5kZXggZDk0ZGY2 OGI2Li41OWI0NjFlN2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9jcnlwdG9kaXNrLmgKKysr IGIvaW5jbHVkZS9ncnViL2NyeXB0b2Rpc2suaApAQCAtNzAsNiArNzAsMTggQEAgdHlwZWRlZiBn Y3J5X2Vycl9jb2RlX3QKICgqZ3J1Yl9jcnlwdG9kaXNrX3Jla2V5X2Z1bmNfdCkgKHN0cnVjdCBn cnViX2NyeXB0b2Rpc2sgKmRldiwKIAkJCQkgZ3J1Yl91aW50NjRfdCB6b25lbm8pOwogCitzdHJ1 Y3QgZ3J1Yl9jcnlwdG9tb3VudF9jYWNoZWRfa2V5Cit7CisgIGdydWJfdWludDhfdCAqa2V5Owor ICBncnViX3NpemVfdCBrZXlfbGVuOworCisgIC8qCisgICAqIFRoZSBrZXkgcHJvdGVjdG9yIGFz c29jaWF0ZWQgd2l0aCB0aGlzIGNhY2hlIGVudHJ5IGZhaWxlZCwgc28gYXZvaWQgaXQKKyAgICog ZXZlbiBpZiB0aGUgY2FjaGVkIGVudHJ5IChhbiBpbnN0YW5jZSBvZiB0aGlzIHN0cnVjdHVyZSkg aXMgZW1wdHkuCisgICAqLworICBib29sIGludmFsaWQ7Cit9OworCiBzdHJ1Y3QgZ3J1Yl9jcnlw dG9tb3VudF9hcmdzCiB7CiAgIC8qIHNjYW46IEZsYWcgdG8gaW5kaWNhdGUgdGhhdCBvbmx5IGJv b3RhYmxlIHZvbHVtZXMgc2hvdWxkIGJlIGRlY3J5cHRlZCAqLwpAQCAtODEsNiArOTMsMTAgQEAg c3RydWN0IGdydWJfY3J5cHRvbW91bnRfYXJncwogICAvKiByZWNvdmVyX2tleTogTGVuZ3RoIG9m IGtleV9kYXRhICovCiAgIGdydWJfc2l6ZV90IGtleV9sZW47CiAgIGdydWJfZmlsZV90IGhkcl9m aWxlOworICAvKiByZWNvdmVyX2tleTogTmFtZXMgb2YgdGhlIGtleSBwcm90ZWN0b3JzIHRvIHVz ZSAoTlVMTC10ZXJtaW5hdGVkKSAqLworICBjaGFyICoqcHJvdGVjdG9yczsKKyAgLyogcmVjb3Zl cl9rZXk6IEtleSBjYWNoZSB0byBhdm9pZCBpbnZva2luZyB0aGUgc2FtZSBrZXkgcHJvdGVjdG9y IHR3aWNlICovCisgIHN0cnVjdCBncnViX2NyeXB0b21vdW50X2NhY2hlZF9rZXkgKmtleV9jYWNo ZTsKIH07CiB0eXBlZGVmIHN0cnVjdCBncnViX2NyeXB0b21vdW50X2FyZ3MgKmdydWJfY3J5cHRv bW91bnRfYXJnc190OwogCi0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxpbmcgbGlzdApHcnViLWRldmVsQGdu dS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4vbGlzdGluZm8vZ3J1Yi1kZXZlbAo=