From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] rawhide: Fix CapsLock between focus changes in Wayland Date: Sun, 19 Jul 2026 10:41:24 GMT Message-ID: <178445768491.1.2420955277670842448.rpms-ibus-c99a155c56a1@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: rawhide X-Git-Rev: c99a155c56a1bc30b53cf1a5f01c18a500357ff9 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaWJ1cwogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAgICAgICAg IENvbW1pdCA6IGM5OWExNTVjNTZhMWJjMzBiNTNjZjFhNWYwMWMxOGE1MDAzNTdmZjkKICAgICAg ICAgICAgQXV0aG9yIDogVGFrYW8gRnVqaXdhcmEgPHRmdWppd2FyQHJlZGhhdC5jb20+CiAgICAg ICAgICAgIERhdGUgICA6IDIwMjYtMDctMTlUMTk6NDA6MDkrMDk6MDAKICAgICAgICAgICAgU3Rh dHMgIDogKzE4NDcvLTE1NjggaW4gMyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBz Oi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvaWJ1cy9jL2M5OWExNTVjNTZhMWJjMzBiNTNj ZjFhNWYwMWMxOGE1MDAzNTdmZjk/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoKICAg ICAgICAgICAgRml4IENhcHNMb2NrIGJldHdlZW4gZm9jdXMgY2hhbmdlcyBpbiBXYXlsYW5kCgot IE1lcmdlIGlidXMtMjQ0NDAwOS13YXlsYW5kLXhrYi1sdi10aWxkZS5wYXRjaAotIEZpeCB0eXBv IGluIGlidXMtY29tcG9zZQoKLS0tCmRpZmYgLS1naXQgYS9pYnVzLTI0NDQwMDktd2F5bGFuZC14 a2ItbHYtdGlsZGUucGF0Y2ggYi9pYnVzLTI0NDQwMDktd2F5bGFuZC14a2ItbHYtdGlsZGUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNzFjYWMuLjAwMDAwMDAKLS0tIGEv aWJ1cy0yNDQ0MDA5LXdheWxhbmQteGtiLWx2LXRpbGRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTU2NSArMCwwIEBACi1Gcm9tIDE2ODZjYjU5YzE3NzQ0YjA3ZDhhZmVmZWQwYmRhOTdkNmM0 OTMwYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1 aml3YXJhMUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE3IEp1biAyMDI2IDE5OjQ5OjMxICswOTAw Ci1TdWJqZWN0OiBbUEFUQ0ggMS80XSBjbGllbnQvd2F5bGFuZDogRml4IGxhdGNoIGtleSBpbiBM YXR2aWFuKHRpbGRlKSBrZXltYXAKLQotImx2KHRpbGRlKSIga2V5bWFwIGhhcyBgSVNPX0xldmVs M19MYXRjaGAgYW5kIHRoZXJlIGFyZSBzZXZlcmFsIGlzc3Vlcy4KLTEuIEtERSBXYXlsYW5kIGRv ZXMgbm90IGhhbmRsZSBgSVNPX0xldmVsM19MYXRjaGAga2V5c3ltIGJ1dCBvdXRwdXRzIHRoZQot ICAgdGlsZGUgZXZlbiBpZiB0aGUgc3lzdGVtIGtleW1hcCBpcyAibHYodGlsZGUpIi4gVGhlIHBy ZXZpb3VzIGNoYW5nZQotICAgMDEwNDQ4NiBmaXhlcyB0aGF0IGlzc3VlIGluIElCdXMgc2lkZS4K LTIuIFRoZXJlIGlzIGEgcmFjZSB3aGVuIEBJQnVzV2F5bGFuZElNIHJlY2VpdmVzIHRoZSBzeXN0 ZW0ga2V5bWFwIGZyb20KLSAgIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgYW5kIHRoZSB1c2VyIGtl eW1hcCBmcm9tIHRoZSBJQnVzIFhLQgotICAgZW5naW5lIGFuZCB0aGUgdXNlciBrZXltYXAgc2hv dWxkIG5vdCBiZSBvdmVycmlkZGVuIGJ5IHRoZSBzeXN0ZW0gb25lLgotMy4gQElCdXNXYXlsYW5k SU0gY2FuIGhhbmRsZSB0aGUgY29tcG9zZSBrZXlzIG9ubHkgaWYgYElTT19MZXZlbDNfTGF0Y2hg Ci0gICBpcyBoZWxkIHByZXNzaW5nIGF0IHByZXNlbnQuIEJ1dCB0aGUgbGF0Y2ggc3RhdGUgc2hv dWxkIGJlIGhlbGQgd2hlbgotICAgdGhlIGxhdGNoIGtleSBpcyByZWxlYXNlZCBidXQgY2xlYXJl ZCB3aGVuIG90aGVyIGtleXMgYXJlIHByZXNzZWQuCi00LiBJbiBjYXNlIHRoZSBzeXN0ZW0ga2V5 bWFwIGlzIG5vdCAibHYodGlsZGUpIiwgRS5nLiAidXMiLCB0aGUgcmVsZWFzZQotICAgZXZlbnQg b2YgdGhlIHZpcnR1YWwgYElTT19MZXZlbDNfTGF0Y2hgIGtleSwgdGhlIFdheWxhbmQgY29tcG9z aXRvcgotICAgaW1tZWRpYXRlbHkgc2VuZHMgdG8gemVybyBtb2RpZmllciBzdGF0ZSB0byBjbGVh ciB0aGUgbGF0Y2ggc3RhdGUuCi0gICBTbyBwcm9iYWJseSBASUJ1c1dheWxhbmRJTSBzaG91bGQg bm90IHNlbmQgdGhlIHJlbGVhc2UgZXZlbnQgb2YgdGhlCi0gICBsYXRjaCBrZXkuCi01LiBYS0Ig Z3JvdXAgSUQgY2FuIGJlIHN3aXRjaGVkIGJ5IFhLQiBvcHRpb24ga2V5IGxpa2VzIGBncnA6dG9n Z2xlYAotICAgYnV0IGNsaWNraW5nIGtleWJvYXJkIGljb24gaW4gS0RFIHBhbmVsIGRvZXMgbm90 IHdvcmsgYW5kIG1heWJlCi0gICBpdCdzIGEgYnVnIGluIEtERSBjb21wb3NpdG9yLgotNi4gRml4 IHRvIGNsZWFyIG1vZGlmaWVycyB3aXRoIHRoZSBrZXkgcmVsZWFzZSBvZiBTaGlmdCArIExhdGNo IGtleS4KLTcuIFNhdmUgQ2Fwc0xvY2sgc3RhdGUKLQotRml4ZXM6IDAxMDQ0ODYKLUNsb3Nlczog cmhieiMyNDQ0MDA5Ci0tLS0KLSBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAzMDQg KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI0OCBp bnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC93YXls YW5kL2lidXN3YXlsYW5kaW0uYyBiL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotaW5k ZXggZDdkMTJkMDUuLjIzN2Y1MGVmIDEwMDY0NAotLS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dh eWxhbmRpbS5jCi0rKysgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLUBAIC00MCw2 ICs0MCw5IEBACi0gI2luY2x1ZGUgInZpcnR1YWwta2V5Ym9hcmQtdW5zdGFibGUtdjEtY2xpZW50 LXByb3RvY29sLmgiCi0gI2luY2x1ZGUgImlidXN3YXlsYW5kaW0uaCIKLSAKLSsvKiBrZXlzeW0g JiBrZXljb2RlIHNob3VsZCBub3QgYmUgbG9nZ2VkIGZvciB0aGUgc2VjdXJpdHkgaXNzdWUuICov Ci0rLyogI2RlZmluZSBJQlVTX0xPR19TSE9XX0tFWVNZTSAqLwotKwotIGVudW0gewotICAgICBQ Uk9QXzAgPSAwLAotICAgICBQUk9QX0JVUywKLUBAIC0xNDYsNiArMTQ5LDcgQEAgc3RydWN0IF9J QnVzV2F5bGFuZElNUHJpdmF0ZQotICAgICBndWludCBwcmVlZGl0X2N1cnNvcl9wb3M7Ci0gICAg IGd1aW50IHByZWVkaXRfbW9kZTsKLSAgICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RpZmllcnM7Ci0r ICAgIGdib29sZWFuIGlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGU7Ci0gICAgIGdib29sZWFuIGhpZGlu Z19wcmVlZGl0X3RleHQ7Ci0gICAgIElCdXNJbnB1dEhpbnRzIGlidXNfaGludHM7Ci0gICAgIElC dXNJbnB1dFB1cnBvc2UgaWJ1c19wdXJwb3NlOwotQEAgLTIwMywxMCArMjA3LDYgQEAgc3RhdGlj IGNoYXIgX3VzZV9zeW5jX21vZGUgPSAxOwotIAotIHN0YXRpYyBndWludCB3YXlsYW5kX2ltX3Np Z25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07Ci0gCi0tc3RhdGljIHZvaWQgICAgICAgICBpbnB1 dF9tZXRob2RfZGVhY3RpdmF0ZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lk ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgendwX2lucHV0X21ldGhvZF91bmlvbiAgICAgICppbnB1dF9t ZXRob2QsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRf bWV0aG9kX2NvbnRleHRfdjEgKmNvbnRleHQpOwotIHN0YXRpYyBHT2JqZWN0ICAgICAqaWJ1c193 YXlsYW5kX2ltX2NvbnN0cnVjdG9yICAgICAgICAoR1R5cGUgICAgICAgICAgdHlwZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50 ICAgICAgICAgIG5fcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR09iamVjdENvbnN0cnVjdFBhcmFtCi1AQCAtMjI4LDYgKzIy OCwxOSBAQCBzdGF0aWMgZ2Jvb2xlYW4gICAgIGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAgICAg ICAgICAgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgICBzeW0sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh bgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmaWx0ZXJlZCk7Ci0rc3RhdGljIHZvaWQgICAgICAgICBpbnB1dF9t ZXRob2RfZGVhY3RpdmF0ZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgendwX2lucHV0X21ldGhvZF91bmlvbiAgICAgICppbnB1dF9tZXRo b2QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0 aG9kX2NvbnRleHRfdjEgKmNvbnRleHQpOwotK3N0YXRpYyB2b2lkICAgICAgICAgaW5wdXRfbWV0 aG9kX2tleWJvYXJkX21vZGlmaWVycwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2 b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgendwX2tleWJvYXJkX3VuaW9uICAgICAgICAgICprZXli b2FyZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2V5X3NlcmlhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rz X2xhdGNoZWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZHNfbG9ja2VkLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cCk7Ci0g Ci0gCi0gc3RhdGljIGNoYXIKLUBAIC0xMTI5LDcgKzExNDIsMTQgQEAgX2J1c19nbG9iYWxfZW5n aW5lX2NoYW5nZWRfY2IgKElCdXNCdXMgICAgICAgKmJ1cywKLSAgICAga2V5bWFwID0gY3JlYXRl X3VzZXJfeGtiX2tleW1hcCAocHJpdi0+eGtiX2NvbnRleHQsIGRlc2MpOwotICAgICBpZiAoa2V5 bWFwICYmICFpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwICgmcHJpdi0+a2V5X3Vz ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGtleW1hcCkpIHsKLS0gICAgICAgIHhrYl9rZXltYXBfdW5yZWYgKGtleW1hcCk7Ci0rICAg ICAgICBnX2NsZWFyX3BvaW50ZXIgKCZrZXltYXAsIHhrYl9rZXltYXBfdW5yZWYpOwotKyAgICB9 Ci0rICAgIGlmIChwcml2LT52ZXJib3NlKSB7Ci0rICAgICAgICBmcHJpbnRmIChwcml2LT5sb2cs ICJOZXcgZW5naW5lOiVzIGtleW1hcDolcyBzdGF0ZTolc1xuIiwKLSsgICAgICAgICAgICAgICAg IGlidXNfZW5naW5lX2Rlc2NfZ2V0X25hbWUgKGRlc2MpLAotKyAgICAgICAgICAgICAgICAga2V5 bWFwID8gIlRSVUUiIDogIkZBTFNFIiwKLSsgICAgICAgICAgICAgICAgIHByaXYtPmtleV91c2Vy LnN0YXRlID8gIlRSVUUiIDogIkZBTFNFIik7Ci0rICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7 Ci0gICAgIH0KLSAgICAgZ19vYmplY3RfdW5yZWYgKGRlc2MpOwotIH0KLUBAIC0xMjUzLDYgKzEy NzMsNyBAQCBfZ2V0X3NlYXRfd2l0aF9uYW1lIChHUHRyQXJyYXkgKnNlYXRzLAotICAgICByZXR1 cm4gTlVMTDsKLSB9Ci0gCi0rCi0gc3RhdGljIGdib29sZWFuCi0gaWJ1c193YXlsYW5kX2ltX3Bv c3Rfa2V5IChJQnVzV2F5bGFuZElNICp3bGltLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgICAgICAga2V5LAotQEAgLTEyNjMsOCArMTI4NCwxMyBAQCBpYnVzX3dheWxhbmRf aW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gewotICAgICBJQnVzV2F5bGFuZElN UHJpdmF0ZSAqcHJpdjsKLSAgICAgSUJ1c1hrYktleW1hcCAqYWN0aXZlX2tleTsKLSsgICAgeGti X21vZF9tYXNrX3QgbW9kc19kZXByZXNzZWQgPSAwLCBuZXdfbW9kc19kZXByZXNzZWQgPSAwOwot KyAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2xvY2tlZDsKLSsgICAgeGtiX2xheW91dF9pbmRleF90 ICBncm91cDsKLSsgICAgeGtiX2tleXN5bV90IHN5c3RlbV9zeW07Ci0gICAgIHVpbnQzMl90IGNv ZGUgPSBrZXkgKyA4OwotICAgICB1aW50MzJfdCBjaDsKLSsgICAgZ2Jvb2xlYW4gY2xlYXJfdmly dHVhbF9zdGF0ZSA9IEZBTFNFOwotIAotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19J U19XQVlMQU5EX0lNICh3bGltKSwgRkFMU0UpOwotICAgICBwcml2ID0gaWJ1c193YXlsYW5kX2lt X2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLUBAIC0xMjg4LDQ5ICsxMzE0LDEzMiBAQCBp YnVzX3dheWxhbmRfaW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gICAgICAgICBh Y3RpdmVfa2V5ID0gJnByaXYtPmtleV91c2VyOwotICAgICBpZiAoIWFjdGl2ZV9rZXktPnN0YXRl KQotICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICBtb2RzX2RlcHJlc3NlZCA9IHhrYl9zdGF0 ZV9zZXJpYWxpemVfbW9kcyAoYWN0aXZlX2tleS0+c3RhdGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfREVQUkVTU0VEIHwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVRD SEVEKTsKLSsgICAgbmV3X21vZHNfZGVwcmVzc2VkID0gbW9kc19kZXByZXNzZWQ7Ci0rICAgIG1v ZHNfbG9ja2VkID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9N T0RTX0xPQ0tFRCk7Ci0rICAgIC8qIFhLQiBncm91cCBsYXlvdXQgaXMgY29uZmlndXJlZCBpbiB0 aGUgc3lzdGVtIGtleW1hcCBidXQgbm90IHRoZQotKyAgICAgKiB1c2VyIGtleW1hcCB3aGljaCBh bHdheXMgaW5jbHVkZXMgYSBzaW5nbGUgbGF5b3V0LgotKyAgICAgKi8KLSsgICAgZ3JvdXAgPSB4 a2Jfc3RhdGVfc2VyaWFsaXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBWU9VVF9MT0NLRUQp OwotICAgICBpZiAoIWZpbHRlcmVkKSB7Ci0tI2lmIDAKLS0gICAgICAgIC8qIEZJWE1FOiBOZWVk IHRvIGNvbmZpcm0gYW55IG1vZGlmaWVycyBzaG91bGQgYmUgaWdub3JlZC4gKi8KLS0gICAgICAg IGlmICghaWJ1c19hY2NlbGVyYXRvcl92YWxpZCAoCi0tICAgICAgICAgICAgICAgICAgICBzeW0s Ci0tICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMgJiBJQlVTX01PRElGSUVSX01BU0sgJiB+ SUJVU19TSElGVF9NQVNLKSkgewotLSAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLS0gICAg ICAgIH0KLS0jZWxzZQotKyAgICAgICAgc3lzdGVtX3N5bSA9IHhrYl9zdGF0ZV9rZXlfZ2V0X29u ZV9zeW0gKHByaXYtPmtleV9zeXMuc3RhdGUsIGNvZGUpOwotICAgICAgICAgc3dpdGNoIChzeW0p IHsKLS0gICAgICAgIGNhc2UgSUJVU19JU09fTGV2ZWwyX0xhdGNoOgotLSAgICAgICAgY2FzZSBJ QlVTX0lTT19MZXZlbDNfTGF0Y2g6Ci0tICAgICAgICBjYXNlIElCVVNfSVNPX0xldmVsNV9MYXRj aDoKLSsgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsMl9MYXRjaDoKLSAgICAgICAgICAg ICBmaWx0ZXJlZCA9IFRSVUU7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAvKiBMZXZl bDNfbGF0Y2ggaXMgY2F1c2VkIGJ5IFRMREUga2V5IGluIGx2KHRpbGRlKSBrZXltYXAuCi0rICAg ICAgICAgKiBMZXZlbDNfU2hpZnQgaXMgY2F1c2VkIGJ5IEFsdCBrZXkgaW4gbHYodGlsZGUpIGtl eW1hcC4KLSsgICAgICAgICAqLwotKyAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwzX0xh dGNoOgotKyAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0OgotKyAgICAgICAg ICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkgewotKyAgICAg ICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kNV9tYXNrOwot KyAgICAgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCi0rICAgICAgICAgICAgICAg ICAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICAg ICAgZmlsdGVyZWQgPSBUUlVFOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBicmVhazsK LSsgICAgICAgIC8qIExldmVsNV9MYXRjaCBpcyBjYXVzZWQgYnkgU2hpZnQrQWx0IGtleSBpbiBk ZShUMykga2V5bWFwLgotKyAgICAgICAgICovCi0rICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19M ZXZlbDVfTGF0Y2g6Ci0rICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDVfU2hpZnQ6Ci0r ICAgICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVTU0VEKSB7 Ci0rICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2Qz X21hc2s7Ci0rICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkKLSsgICAgICAg ICAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVFOwotKyAgICAg ICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAg IGJyZWFrOwotKyAgICAgICAgY2FzZSBJQlVTX0tFWV9TaGlmdF9MOgotKyAgICAgICAgY2FzZSBJ QlVTX0tFWV9TaGlmdF9SOgotKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9L RVlfU1RBVEVfUFJFU1NFRCkKLSsgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9 IGFjdGl2ZV9rZXktPnNoaWZ0X21hc2s7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAg ICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPnNoaWZ0X21hc2s7Ci0rICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBkZWZhdWx0OjsKLSAgICAgICAgIH0KLSsjaWZkZWYg SUJVU19MT0dfU0hPV19LRVlTWU0KLSsgICAgICAgIGlmIChwcml2LT52ZXJib3NlKSB7Ci0rICAg ICAgICAgICAgZnByaW50ZiAocHJpdi0+bG9nLCAiJXMga2V5OiV1IHN5bToleCBzeXN0ZW1fc3lt OiV4IG1vZGlmaWVyczoleCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Rh dGU6JXMgZmlsdGVyZWQ6JWRcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgR19TVFJGVU5DLAot KyAgICAgICAgICAgICAgICAgICAgIGtleSwgc3ltLCBzeXN0ZW1fc3ltLCBtb2RpZmllcnMsCi0r ICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPyAicHJlc3MiIDogInJlbGVhc2UiLAotKyAgICAg ICAgICAgICAgICAgICAgIGZpbHRlcmVkKTsKLSsgICAgICAgICAgICBmZmx1c2ggKHByaXYtPmxv Zyk7Ci0rICAgICAgICB9Ci0gI2VuZGlmCi0gICAgIH0KLS0gICAgLyogSW4gY2FzZSBgdXNlX3N5 c19rZXltYXBgIGlzICVUUlVFLCBJQnVzIGRvZXMgbm90IGNvbW1pdCBBU0NJSSBjaGFycwotLSAg ICAgKiBidXQgZm9yd2FyZHMgdGhlIGtleSBldmVudHMgdG8gdGhlIGZvY3VzZWQgYXBwbGljYXRp b24gaGVyZS4KLS0gICAgICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJp bnRhYmxlIGtleXMgYXMgY29udHJvbCBrZXlzLAotLSAgICAgKiBFLmcuIGdhbWUgYXBwcyAiaGpr bCIgdXNlIHRoZSBjdXJzb3IgbW92ZSBsaWtlIFZJIG1vZGUuCi0tICAgICAqIFVuZm9ydHVuYXRl bHkgdGhlIFdheWxhbmQgaW5wdXQtbWV0aG9kIHByb3RvY29sIGRvZXMgbm90IHByb3ZpZGUKLS0g ICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRoZSBrZXkgZXZlbnRz IGxpa2UgR1RLMy8yCi0tICAgICAqIElNIG1vZHVsZXMuIEJ1dCBUaGUgaW5wdXQtbWV0aG9kIGFs d2F5cyBzaG91bGQgaGFuZGxlcyBrZXkgZXZlbnRzCi0tICAgICAqIHByaW9yIHRvIGFwcHMuCi0t ICAgICAqLwotLSAgICBpZiAoIWZpbHRlcmVkICYmIChzdGF0ZSAhPSBXTF9LRVlCT0FSRF9LRVlf U1RBVEVfUkVMRUFTRUQpICYmCi0tICAgICAgICAhcHJpdi0+dXNlX3N5c19rZXltYXApIHsKLS0g ICAgICAgIGNoID0geGtiX3N0YXRlX2tleV9nZXRfdXRmMzIgKGFjdGl2ZV9rZXktPnN0YXRlLCBj b2RlKTsKLS0gICAgICAgIGlmICghKG1vZGlmaWVycyAmIElCVVNfTU9ESUZJRVJfTUFTSyAmIH5J QlVTX1NISUZUX01BU0spICYmCi0tICAgICAgICAgICAgY2ggJiYgY2ggIT0gJ1xuJyAmJiBjaCAh PSAnXGInICYmIGNoICE9ICdccicgJiYgY2ggIT0gJ1x0JyAmJgotLSAgICAgICAgICAgIGNoICE9 ICdcMDMzJyAmJiBjaCAhPSAnXHg3ZicpIHsKLS0gICAgICAgICAgICBnY2hhciBidWZmWzhdID0g eyAwLCB9OwotLSAgICAgICAgICAgIGJ1ZmZbZ191bmljaGFyX3RvX3V0ZjggKGNoLCBidWZmKV0g PSAnXDAnOwotLSAgICAgICAgICAgIGlidXNfd2F5bGFuZF9pbV9jb21taXRfdGV4dCAod2xpbSwg YnVmZik7Ci0tICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotKyAgICBpZiAoc3RhdGUgIT0g V0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSB7Ci0rICAgICAgICBjaCA9IGlidXNfa2V5 dmFsX3RvX3VuaWNvZGUgKHN5bSk7Ci0rICAgICAgICBpZiAoY2ggPT0gMCB8fCBnX3VuaWNoYXJf aXNjbnRybCAoY2gpKQotKyAgICAgICAgICAgIGNoID0geGtiX3N0YXRlX2tleV9nZXRfdXRmMzIg KGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlKTsKLSsvKiBObyB0ZXh0IHdpdGggQ29udHJvbCAmIEFs dCAmIFN1cGVyIGtleXMgKi8KLSsjaWZuZGVmIEdES19XSU5ET1dJTkdfUVVBUlRaCi0rIyAgZGVm aW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKLSsgICAgSUJVU19DT05UUk9MX01B U0sgfCBJQlVTX01PRDFfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQotKyNlbHNlCi0rIyAgZGVmaW5l IF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKLSsgICAgSUJVU19DT05UUk9MX01BU0sg fCBJQlVTX01PRDJfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQotKyNlbmRpZgotKyAgICAgICAgaWYg KCghZmlsdGVyZWQgJiYgIShtb2RpZmllcnMgJiBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNL KSAmJgotKyAgICAgICAgICAgICAhZ191bmljaGFyX2lzY250cmwgKGNoKSkgfHwgZmlsdGVyZWQp IHsKLSsgICAgICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFwYCBpcyAlVFJVRSwgSUJ1cyBk b2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKLSsgICAgICAgICAqIGJ1dCBmb3J3YXJkcyB0aGUg a2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBoZXJlLgotKyAgICAgICAgICog QmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxlIGtleXMgYXMgY29u dHJvbCBrZXlzLAotKyAgICAgICAgICogRS5nLiBnYW1lIGFwcHMgImhqa2wiIHVzZSB0aGUgY3Vy c29yIG1vdmUgbGlrZSBWSSBtb2RlLgotKyAgICAgICAgICogVW5mb3J0dW5hdGVseSB0aGUgV2F5 bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgZG9lcyBub3QgcHJvdmlkZQotKyAgICAgICAgICog dGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIGxpa2Ug R1RLMy8yCi0rICAgICAgICAgKiBJTSBtb2R1bGVzLiBCdXQgVGhlIGlucHV0LW1ldGhvZCBhbHdh eXMgc2hvdWxkIGhhbmRsZXMga2V5IGV2ZW50cwotKyAgICAgICAgICogcHJpb3IgdG8gYXBwcy4K LSsgICAgICAgICAqLwotKyAgICAgICAgICAgIGlmICghZmlsdGVyZWQgJiYgIXByaXYtPnVzZV9z eXNfa2V5bWFwKSB7Ci0rICAgICAgICAgICAgICAgIGdjaGFyIGJ1ZmZbOF0gPSB7IDAsIH07Ci0r ICAgICAgICAgICAgICAgIGJ1ZmZbZ191bmljaGFyX3RvX3V0ZjggKGNoLCBidWZmKV0gPSAnXDAn OwotKyAgICAgICAgICAgICAgICBpYnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKHdsaW0sIGJ1 ZmYpOwotKyAgICAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0rICAgICAgICAgICAgfQot KyAgICAgICAgICAgIC8qIElmIGBmaWx0ZXJlZGAgaXMgJVRSVUUsIHRoZSBrZXlzeW0gY2FuIGJl IGVhdGVuIGZvciB0aGUgY29tcG9zZQotKyAgICAgICAgICAgICAqIHByZWVkaXQgYnkgSUJ1cyBY S0IgZW5naW5lLiBFLmcuIEFsdEdyLVNoaWZ0LVYga2V5IHByb2R1Y2VzCi0rICAgICAgICAgICAg ICogYExldmVsM19TaGlmdCcgYW5kIGBHcmVla19PTUVHQWAga2V5c3ltIHdpdGggInVzKHN5bWJv bGljKSIKLSsgICAgICAgICAgICAgKiBrZXltYXAuIEhvd2V2ZXIgaWYgeW91IGNvbmZpZ3JlIG11 bHRpcGxlIGtleW1hcHMsIEFsdEdyLVNoaWZ0Ci0rICAgICAgICAgICAgICogbWF5IHByb2R1Y2Ug dGhlIGtleW1hcCBzd2l0Y2ggYWx0aG91Z2ggQWx0R3ItU2hpZnQtViBwcm9kdWNlcwotKyAgICAg ICAgICAgICAqIGBHcmVla19PTUVHQWAuCi0rICAgICAgICAgICAgICogSSdtIG5vdCBjbGFyaWZp ZWQgd2l0aCAibGV2ZWwzKHJhbHRfc3dpdGNoKSIgaW4gdXMgWEtCIGtleW1hcHMuCi0rICAgICAg ICAgICAgICovCi0rICAgICAgICAgICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9EM19NQVNLKSB7 Ci0rICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+bW9k M19tYXNrOwotKyAgICAgICAgICAgICAgICBjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsKLSsg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9ENV9NQVNL KSB7Ci0rICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+ bW9kNV9tYXNrOwotKyAgICAgICAgICAgICAgICBjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsK LSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rI3VuZGVmIF9JQlVTX05PX1RFWFRfSU5QVVRf TU9EX01BU0sKLSsgICAgfQotKyAgICBpZiAocHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSkg ewotKyAgICAgICAgaWYgKG5ld19tb2RzX2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJlc3NlZCkgewot KyAgICAgICAgICAgIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0sIE5VTEws IDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21v ZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k c19sb2NrZWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3JvdXApOwotICAgICAgICAgfQotKyAgICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpCi0r ICAgICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotKyAgICB9 Ci0rICAgIGlmICghcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fAotKyAgICAgICAgKHN0 YXRlICE9IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkpIHsKLSsgICAgICAgIHhrYl9z dGF0ZV91cGRhdGVfa2V5IChhY3RpdmVfa2V5LT5zdGF0ZSwgY29kZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VE KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlf RE9XTik7Ci0gICAgIH0KLS0gICAgeGtiX3N0YXRlX3VwZGF0ZV9rZXkgKGFjdGl2ZV9rZXktPnN0 YXRlLCBjb2RlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlID09IFdMX0tFWUJP QVJEX0tFWV9TVEFURV9SRUxFQVNFRCkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgID8gWEtC X0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7Ci0gICAgIHJldHVybiBmaWx0ZXJlZDsKLSB9Ci0gCi1A QCAtMTc3NywxMiArMTg4NiwzMiBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5ICh2b2lkICAg ICAgICAgICAgICAgICAgICAgICpkYXRhLAotICAgICAvKiB4a2Jfa2V5X2dldF9zeW1zKCkgZG9l cyBub3QgcmV0dXJuIHRoZSBjYXBpdGFsIHN5bXMgd2l0aCBTaGlmdCBrZXkuICovCi0gICAgIGlm IChwcml2LT5rZXlfc3lzLnN0YXRlKQotICAgICAgICAgZXZlbnQuc3ltID0geGtiX3N0YXRlX2tl eV9nZXRfb25lX3N5bSAocHJpdi0+a2V5X3N5cy5zdGF0ZSwgY29kZSk7Ci0tICAgIGlmIChldmVu dC5zeW0gIT0gSUJVU19LRVlfTXVsdGlfa2V5ICYmIHByaXYtPmtleV91c2VyLnN0YXRlKQotLSAg ICAgICAgZXZlbnQuc3ltID0geGtiX3N0YXRlX2tleV9nZXRfb25lX3N5bSAocHJpdi0+a2V5X3Vz ZXIuc3RhdGUsIGNvZGUpOwotKyAgICBzd2l0Y2ggKGV2ZW50LnN5bSkgewotKyAgICBjYXNlIElC VVNfS0VZX011bHRpX2tleToKLSsgICAgY2FzZSBJQlVTX0tFWV9JU09fTmV4dF9Hcm91cDoKLSsg ICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgICAgaWYgKHByaXYtPmtleV91c2Vy LnN0YXRlKQotKyAgICAgICAgICAgIGV2ZW50LnN5bSA9IHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9z eW0gKHByaXYtPmtleV91c2VyLnN0YXRlLCBjb2RlKTsKLSsgICAgfQotICAgICBldmVudC5tb2Rp ZmllcnMgPSBwcml2LT5tb2RpZmllcnM7Ci0gICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9L RVlfU1RBVEVfUkVMRUFTRUQpCi0gICAgICAgICBldmVudC5tb2RpZmllcnMgfD0gSUJVU19SRUxF QVNFX01BU0s7Ci0gICAgIGV2ZW50LndsaW0gPSB3bGltOwotKyNpZmRlZiBJQlVTX0xPR19TSE9X X0tFWVNZTQotKyAgICBpZiAocHJpdi0+dmVyYm9zZSkgewotKyAgICAgICAgZnByaW50ZiAocHJp di0+bG9nLCAiJXMgc2VyaWFsOiV1IHRpbWU6JXUga2V5OiV1ICIKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgInN5bToleCBzeXN0ZW1fdXNlcjoleCBzeXN0ZW1fc3ltOiV4ICIKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGlmaWVyczoleCBzdGF0ZTolc1xuIiwKLSsgICAg ICAgICAgICAgICAgIEdfU1RSRlVOQywKLSsgICAgICAgICAgICAgICAgIGtleV9zZXJpYWwsIHRp bWUsIGtleSwKLSsgICAgICAgICAgICAgICAgIGV2ZW50LnN5bSwKLSsgICAgICAgICAgICAgICAg IHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9zeW0gKHByaXYtPmtleV91c2VyLnN0YXRlLCBjb2RlKSwK LSsgICAgICAgICAgICAgICAgIHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9zeW0gKHByaXYtPmtleV9z eXMuc3RhdGUsIGNvZGUpLAotKyAgICAgICAgICAgICAgICAgZXZlbnQubW9kaWZpZXJzLCBzdGF0 ZSA/ICJwcmVzcyIgOiAicmVsZWFzZSIpOwotKyAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOwot KyAgICB9Ci0rI2VuZGlmCi0gCi0gICAgIGtleV9ldmVudF9jaGVja19yZXBlYXQgKHdsaW0sICZl dmVudCk7Ci0gICAgIHN3aXRjaCAoX3VzZV9zeW5jX21vZGUpIHsKLUBAIC0xNzk2LDYgKzE5MjUs MjkgQEAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleSAodm9pZCAgICAgICAgICAgICAgICAgICAg ICAqZGF0YSwKLSB9Ci0gCi0gCi0rLyoqCi0rICogaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlm aWVyczoKLSsgKgotKyAqIFRoaXMgaXMgYSBjb21tb24gQVBJIG9mIGlucHV0X21ldGhvZF9rZXli b2FyZF9tb2RpZmllcnNfdjEoKSBhbmQKLSsgKiBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZp ZXJzX3YyKCkuCi0rICogSWYgeW91IGNvbmZpZ3VyZSBtdWx0aXBsZSBYS0IgbGF5b3V0cyBpbiB0 aGUgc3lzdGVtIHdpdGgKLSsgKiAvZXRjL3Zjb25zb2xlLmNvbmYgZmlsZSwgeW91IGNhbiBzd2l0 Y2ggdGhlIGFjdGl2ZSBsYXlvdXQgd2l0aAotKyAqIHRoZSBYS0Igb3B0aW9ucyBhbmQgQGdyb3Vw IGlzIGNoYW5nZWQgd2l0aCB0aGUgc2hvcnRjdXQga2V5IGxpa2UKLSsgKiAiZ3JwOmxhbHRfbHNo aWZ0X3RvZ2dsZSIgYnV0IElmIHlvdSBjbGljayB0aGUga2V5Ym9hcmQgaWNvbiBpbgotKyAqIFBs YXNtYSBLREUgYW5kIGNoYW5nZSB0aGUgYWN0aXZlIGxheW91dCB3aXRoIEdVSSwgQGdyb3VwIGlz IG5vdAotKyAqIGNoYW5nZWQgYW5kIEkgYXNzdW1lIGl0J3MgYSBidWcgWzFdLgotKyAqIEN1cnJl bnRseSB0aGVyZSBhcmUgdHdvIGNhc2VzIG9mIHRoZSBjb21iaW5hdGlvbnMgb2YgdGhlIElCdXMg a2V5bWFwIGFuZAotKyAqIHRoZSBzeXN0ZW0ga2V5bWFwIHN1cHBvcnRlZCBieSBJQnVzOgotKyAq IDEuIEFsd2F5cyBTYW1lIGtleW1hcHMKLSsgKiAgICBFLmcuIElCdXMga2V5bWFwIGlzICJsdih0 aWxkZSkiIGFuZCBzeXN0ZW0gb25lIGlzICJsdih0aWxkZSkiCi0rICogMi4gU3lzdGVtIGtleW1h cCBpcyAiVVMiIGFuZCBzd2l0Y2ggSUJ1cyBrZXltYXBzIHdpdGggU3VwZXItc3BhY2Uga2V5Ci0r ICogICAgRS5nLiBJQnVzIGtleW1hcCBpcyAibHYodGlsZGUpIiBhbmQgc3lzdGVtIG9uZSBpcyAi dXMiCi0rICogU28geW91IHNob3VsZCB1c2UgYm90aCBYS0Igb3B0aW9uIGtleXMgYW5kIElCdXMg c2hvcnRjdXRrZXlzIHRvIHN3aXRjaCB0aGUKLSsgKiBrZXltYXBzIHRvIGNoYW5nZSBib3RoIFhL QiBrZXltYXBzIGFuZCBJQnVzIGtleW1hcHMgYnV0IHlvdSBzaG91bGQgbm90Ci0rICogY2xpY2sg dGhlIGtleWJvYXJkIGljb24gaW4gS0RFLgotKyAqCi0rICogWzFdIGh0dHBzOi8vYnVncy5rZGUu b3JnL3Nob3dfYnVnLmNnaT9pZD01MTgzNzEKLSsgKi8KLSBzdGF0aWMgdm9pZAotIGlucHV0X21l dGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHp3cF9rZXlib2FyZF91 bmlvbiAqa2V5Ym9hcmQsCi1AQCAtMTgxNiwyNyArMTk2OCw1MyBAQCBpbnB1dF9tZXRob2Rfa2V5 Ym9hcmRfbW9kaWZpZXJzICh2b2lkICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAotICAgICAg ICAgYWN0aXZlX2tleSA9ICZwcml2LT5rZXlfc3lzOwotICAgICBlbHNlCi0gICAgICAgICBhY3Rp dmVfa2V5ID0gJnByaXYtPmtleV91c2VyOwotLSAgICBpZiAocHJpdi0+a2V5X3VzZXIuc3RhdGUp IHsKLS0gICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfbWFzayAocHJpdi0+a2V5X3VzZXIuc3RhdGUs IG1vZHNfZGVwcmVzc2VkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2xh dGNoZWQsIG1vZHNfbG9ja2VkLCAwLCAwLCBncm91cCk7Ci0tICAgIH0KLS0gICAgLyogUHJlc3Np bmcgWEtCIGdyb3VwIGtleSBsaWtlcyBBbHRfUiB3aXRoIGdycDp0b2dnbGUgY2FsbHMKLS0gICAg ICogaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVycygpIHdpdGggdGhlIHVwZGF0ZWQgYGdy b3VwYAotLSAgICAgKiBhbmQgbmVlZCB0byB1cGRhdGUgcHJpdi0+a2V5X3N5cy5zdGF0ZSB0byBz d2l0Y2ggdGhlIFhLQiBncm91cAotLSAgICAgKiBpbiB0aGUgc3lzdGVtIGtleW1hcC4KLS0gICAg ICoKLS0gICAgICogWEtCIGdyb3VwIGtleSBjYW4gc3dpdGNoIGBncm91cGAgYnV0IGNsaWNraW5n IHRoZSBrZXlib2FyZCBpY29uCi0tICAgICAqIG9mIEtERSBkb2VzIG5vdCBjaGFuZ2UgYGdyb3Vw YCBhdCBwcmVzZW50LiBNYXliZSBhIGJ1ZyBpbiB0aGUKLS0gICAgICogS0RFIFdheWxhbmQgY29t cG9zaXRvci4KLSsgICAgLyogRG8gbm90IHJlc2V0IExhdGNoIG1vZGlmaWVycyBieSBzeXN0ZW0g aW4gY2FzZSB0aGUgc3lzdGVtIGtleW1hcAotKyAgICAgKiBoYXMgbm8gdGhlIExhdGNoIGtleS4K LSsgICAgICogSW4gY2FzZSB0aGUgdXNlciBrZXltYXAgaXMgImx2KHRpbGRlKSIgYW5kIHRoZSBz eXN0ZW0gb25lIGlzICJ1cyIsCi0rICAgICAqIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmll cnMoKSBjbGVhcnMgc3RhdGUgb2YgTGV2ZWwzX0xhdGNoIGtleQotKyAgICAgKiBpbW1lZGlhdGVs eSBhZnRlciB0aGUgTGV2ZWwzX0xhdGNoIGtleSBpcyByZWxlYXNlZCBiZWNhdXNlIHRoZSAidXMi Ci0rICAgICAqIGtleW1hcCBkb2VzIG5vdCBoYXZlIHRoZSBsYXRjaCBrZXlzLgotKyAgICAgKiBU aGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGluIGNhc2UgYm90aCB1c2VyIGFuZCBzeXN0ZW0ga2V5 bWFwcyBhcmUKLSsgICAgICogImx2KHRpbGRlKSIuCi0rICAgICAqIFNvIGBpc192aXJ0dWFsX2xh dGNoX3N0YXRlYCBrZWVwcyB0aGUgdmlydHVhbCBzdGF0ZSBvZiB0aGUgbGF0Y2gga2V5cwotKyAg ICAgKiBub3QgdG8gb3ZlcnJpZGUgdGhlIHN0YXRlIG9mIHRoZSAidXMiIGtleW1hcC4KLSAgICAg ICovCi0tICAgIGlmIChwcml2LT5rZXlfc3lzLnN0YXRlKSB7Ci0tICAgICAgICB4a2Jfc3RhdGVf dXBkYXRlX21hc2sgKHByaXYtPmtleV9zeXMuc3RhdGUsIG1vZHNfZGVwcmVzc2VkLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2xhdGNoZWQsIG1vZHNfbG9ja2VkLCAwLCAw LCBncm91cCk7Ci0rICAgIGlmICghcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fCBrZXlf c2VyaWFsID09IDApIHsKLSsgICAgICAgIGlmIChwcml2LT5rZXlfdXNlci5zdGF0ZSkgewotKyAg ICAgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfbWFzayAocHJpdi0+a2V5X3VzZXIuc3RhdGUsIG1v ZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19s YXRjaGVkLCBtb2RzX2xvY2tlZCwgMCwgMCwgZ3JvdXApOwotKyAgICAgICAgfQotKyAgICAgICAg LyogUHJlc3NpbmcgWEtCIGdyb3VwIGtleSBsaWtlcyBBbHRfUiB3aXRoIGdycDp0b2dnbGUgY2Fs bHMKLSsgICAgICAgICAqIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMoKSB3aXRoIHRo ZSB1cGRhdGVkIGBncm91cGAKLSsgICAgICAgICAqIGFuZCBuZWVkIHRvIHVwZGF0ZSBwcml2LT5r ZXlfc3lzLnN0YXRlIHRvIHN3aXRjaCB0aGUgWEtCIGdyb3VwCi0rICAgICAgICAgKiBpbiB0aGUg c3lzdGVtIGtleW1hcC4KLSsgICAgICAgICAqCi0rICAgICAgICAgKiBYS0IgZ3JvdXAga2V5IGNh biBzd2l0Y2ggYGdyb3VwYCBidXQgY2xpY2tpbmcgdGhlIGtleWJvYXJkIGljb24KLSsgICAgICAg ICAqIG9mIEtERSBkb2VzIG5vdCBjaGFuZ2UgYGdyb3VwYCBhdCBwcmVzZW50LiBNYXliZSBhIGJ1 ZyBpbiB0aGUKLSsgICAgICAgICAqIEtERSBXYXlsYW5kIGNvbXBvc2l0b3IuCi0rICAgICAgICAg Ki8KLSsgICAgICAgIGlmIChwcml2LT5rZXlfc3lzLnN0YXRlKSB7Ci0rICAgICAgICAgICAgeGti X3N0YXRlX3VwZGF0ZV9tYXNrIChwcml2LT5rZXlfc3lzLnN0YXRlLCBtb2RzX2RlcHJlc3NlZCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHNfbGF0Y2hlZCwgbW9kc19s b2NrZWQsIDAsIDAsIGdyb3VwKTsKLSsgICAgICAgIH0KLSAgICAgfQotICAgICBpZiAoYWN0aXZl X2tleS0+c3RhdGUpIHsKLSsgICAgICAgIC8qIENhcHNMb2NrIG5lZWRzIFhLQl9TVEFURV9NT0RT X0xPQ0tFRCAqLwotICAgICAgICAgbWFzayA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoYWN0 aXZlX2tleS0+c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYS0JfU1RBVEVfREVQUkVTU0VEIHwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhLQl9TVEFURV9MQVRDSEVEKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVRDSEVEIHwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9NT0RTX0xPQ0tFRCk7Ci0rICAgIH0KLSsg ICAgaWYgKHByaXYtPnZlcmJvc2UpIHsKLSsgICAgICAgIHN0cnVjdCB4a2Jfc3RhdGUgKnN0YXRl ID0gYWN0aXZlX2tleS0+c3RhdGU7Ci0rICAgICAgICBmcHJpbnRmIChwcml2LT5sb2csICJVcGRh dGUgbW9kaWZpZXJzIHNlcmlhbDoldSBkZXByZXNzOiVYIGxhdGNoOiVYICIKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJsb2NrOiVYIGdyb3VwOiVYIG9yaWdfZGVwcmU6JVggb3JpZ19s YXRjaDolWCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3JpZ19sb2NrOiVYXG4i LAotKyAgICAgICAgICAgICAgICAga2V5X3NlcmlhbCwgbW9kc19kZXByZXNzZWQsIG1vZHNfbGF0 Y2hlZCwgbW9kc19sb2NrZWQsIGdyb3VwLAotKyAgICAgICAgICAgICAgICAgeGtiX3N0YXRlX3Nl cmlhbGl6ZV9tb2RzIChzdGF0ZSwgWEtCX1NUQVRFX0RFUFJFU1NFRCksCi0rICAgICAgICAgICAg ICAgICB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKHN0YXRlLCBYS0JfU1RBVEVfTEFUQ0hFRCks Ci0rICAgICAgICAgICAgICAgICB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKHN0YXRlLCBYS0Jf U1RBVEVfTU9EU19MT0NLRUQpKTsKLSsgICAgICAgIGZmbHVzaCAocHJpdi0+bG9nKTsKLSAgICAg fQotIAotICAgICBwcml2LT5tb2RpZmllcnMgPSAwOwotQEAgLTE4NjMsNiArMjA0MSw5IEBAIGlu cHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHZvaWQgICAgICAgICAgICAgICAgICAgICAg KmRhdGEsCi0gICAgIGlmIChtYXNrICYgYWN0aXZlX2tleS0+bWV0YV9tYXNrKQotICAgICAgICAg cHJpdi0+bW9kaWZpZXJzIHw9IElCVVNfTUVUQV9NQVNLOwotIAotKyAgICBpZiAoIWtleV9zZXJp YWwpCi0rICAgICAgICByZXR1cm47Ci0rCi0gICAgIHN3aXRjaCAocHJpdi0+dmVyc2lvbikgewot ICAgICBjYXNlIElOUFVUX01FVEhPRF9WMToKLSAgICAgICAgIHp3cF9pbnB1dF9tZXRob2RfY29u dGV4dF92MV9tb2RpZmllcnMgKHByaXYtPmNvbnRleHQsIGtleV9zZXJpYWwsCi1AQCAtMjg4Niw2 ICszMDY3LDE3IEBAIGlidXNfd2F5bGFuZF9pbV9jb25zdHJ1Y3RvciAoR1R5cGUgICAgICAgICAg ICAgICAgICB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBrZXltYXApKSB7Ci0gICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZrZXlt YXAsIHhrYl9rZXltYXBfdW5yZWYpOwotICAgICB9Ci0rICAgIGlmIChwcml2LT52ZXJib3NlKSB7 Ci0rICAgICAgICBpZiAoIWRlc2MpIHsKLSsgICAgICAgICAgICBmcHJpbnRmIChwcml2LT5sb2cs ICJDb25zdHJ1Y3RvciBoYXMgTm8gZ2xvYmFsIGVuZ2luZVxuIik7Ci0rICAgICAgICB9IGVsc2Ug ewotKyAgICAgICAgICAgIGZwcmludGYgKHByaXYtPmxvZywgIkNvbnN0cnVjdG9yIGVuZ2luZSAl cyBrZXltYXA6JXMgc3RhdGU6JXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgaWJ1c19lbmdp bmVfZGVzY19nZXRfbmFtZSAoZGVzYyksCi0rICAgICAgICAgICAgICAgICAgICAga2V5bWFwID8g IlRSVUUiIDogIkZBTFNFIiwKLSsgICAgICAgICAgICAgICAgICAgICBwcml2LT5rZXlfdXNlci5z dGF0ZSA/ICJUUlVFIiA6ICJGQUxTRSIpOwotKyAgICAgICAgfQotKyAgICAgICAgZmZsdXNoIChw cml2LT5sb2cpOwotKyAgICB9Ci0gICAgIGlidXNfYnVzX3NldF93YXRjaF9pYnVzX3NpZ25hbCAo cHJpdi0+aWJ1c2J1cywgVFJVRSk7Ci0gICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHByaXYtPmlidXNi dXMsICJnbG9iYWwtZW5naW5lLWNoYW5nZWQiLAotICAgICAgICAgICAgICAgICAgICAgICBHX0NB TExCQUNLIChfYnVzX2dsb2JhbF9lbmdpbmVfY2hhbmdlZF9jYiksCi0tLSAKLTIuNTMuMAotCi1G cm9tIDVmZTY0MGIxNzBlMDk1NzliOGIxOTU1YzVjYWQ0YWE0YTZkMWM0NjQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+ Ci1EYXRlOiBNb24sIDE1IEp1biAyMDI2IDExOjUwOjM4ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0gg Mi80XSBjbGllbnQvd2F5bGFuZDogUmVmYWN0b3IgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5KCkK LQotU2VwYXJhdGUgMyBmdW5jdGlvbnMuCi0KLUNsb3NlczogcmhieiMyNDQ0MDA5Ci0tLS0KLSBj bGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAzNzEgKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI0MyBpbnNlcnRpb25zKCspLCAxMjggZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMg Yi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLWluZGV4IDIzN2Y1MGVmLi4yY2MyMDc5 YiAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotKysrIGIvY2xp ZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1AQCAtMzY3LDYgKzM2Nyw4MSBAQCBpYnVzX3dh eWxhbmRfaW1fY29tbWl0X3RleHQgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gfQotIAotIAotK3N0 YXRpYyBnYm9vbGVhbgotK2lidXNfd2F5bGFuZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5 bGFuZElNICAqd2xpbSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgICAgICAgIGtleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgICAgICAgIG1vZGlmaWVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4a2Jfa2V5c3ltX3QgICAgc3ltLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQnVzWGtiS2V5bWFwICAqYWN0aXZlX2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ2Jvb2xlYW4gICAgICAgIGZpbHRlcmVkLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCAqbmV3X21vZHNfZGVwcmVzc2VkLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAqY2xlYXJfdmlydHVh bF9zdGF0ZSkKLSt7Ci0rICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OwotKyAgICB1aW50 MzJfdCBjb2RlID0ga2V5ICsgODsKLSsgICAgdWludDMyX3QgY2g7Ci0rCi0rICAgIGdfcmV0dXJu X3ZhbF9pZl9mYWlsIChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pLCBmaWx0ZXJlZCk7Ci0rICAg IHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotKwot KyAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQotKyAgICAg ICAgcmV0dXJuIGZpbHRlcmVkOwotKwotKyAgICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUg KHN5bSk7Ci0rICAgIGlmIChjaCA9PSAwIHx8IGdfdW5pY2hhcl9pc2NudHJsIChjaCkpCi0rICAg ICAgICBjaCA9IHhrYl9zdGF0ZV9rZXlfZ2V0X3V0ZjMyIChhY3RpdmVfa2V5LT5zdGF0ZSwgY29k ZSk7Ci0rCi0rLyogTm8gdGV4dCB3aXRoIENvbnRyb2wgJiBBbHQgJiBTdXBlciBrZXlzICovCi0r I2lmbmRlZiBHREtfV0lORE9XSU5HX1FVQVJUWgotKyMgIGRlZmluZSBfSUJVU19OT19URVhUX0lO UFVUX01PRF9NQVNLIChcCi0rICAgIElCVVNfQ09OVFJPTF9NQVNLIHwgSUJVU19NT0QxX01BU0sg fCBJQlVTX01PRDRfTUFTSykKLSsjZWxzZQotKyMgIGRlZmluZSBfSUJVU19OT19URVhUX0lOUFVU X01PRF9NQVNLIChcCi0rICAgIElCVVNfQ09OVFJPTF9NQVNLIHwgSUJVU19NT0QyX01BU0sgfCBJ QlVTX01PRDRfTUFTSykKLSsjZW5kaWYKLSsgICAgaWYgKCghZmlsdGVyZWQgJiYgIShtb2RpZmll cnMgJiBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLKSAmJgotKyAgICAgICAgICFnX3VuaWNo YXJfaXNjbnRybCAoY2gpKSB8fCBmaWx0ZXJlZCkgewotKyAgICAgICAgLyogSW4gY2FzZSBgdXNl X3N5c19rZXltYXBgIGlzICVUUlVFLCBJQnVzIGRvZXMgbm90IGNvbW1pdCBBU0NJSSBjaGFycwot KyAgICAgICAgICogYnV0IGZvcndhcmRzIHRoZSBrZXkgZXZlbnRzIHRvIHRoZSBmb2N1c2VkIGFw cGxpY2F0aW9uIGhlcmUuCi0rICAgICAgICAgKiBCZWNhdXNlIHNvbWUgYXBwbGljYXRpb25zIHRy ZWF0IHRoZSBwcmludGFibGUga2V5cyBhcyBjb250cm9sIGtleXMsCi0rICAgICAgICAgKiBFLmcu IGdhbWUgYXBwcyAiaGprbCIgdXNlIHRoZSBjdXJzb3IgbW92ZSBsaWtlIFZJIG1vZGUuCi0rICAg ICAgICAgKiBVbmZvcnR1bmF0ZWx5IHRoZSBXYXlsYW5kIGlucHV0LW1ldGhvZCBwcm90b2NvbCBk b2VzIG5vdCBwcm92aWRlCi0rICAgICAgICAgKiB0aGUgZmFsbGJhY2sgbG9naWMgYWZ0ZXIgYXBw cyBoYW5kbGUgdGhlIGtleSBldmVudHMgbGlrZSBHVEszLzIKLSsgICAgICAgICAqIElNIG1vZHVs ZXMuIEJ1dCBUaGUgaW5wdXQtbWV0aG9kIGFsd2F5cyBzaG91bGQgaGFuZGxlcyBrZXkgZXZlbnRz Ci0rICAgICAgICAgKiBwcmlvciB0byBhcHBzLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAo IWZpbHRlcmVkICYmICFwcml2LT51c2Vfc3lzX2tleW1hcCkgewotKyAgICAgICAgICAgIGdjaGFy IGJ1ZmZbOF0gPSB7IDAsIH07Ci0rICAgICAgICAgICAgYnVmZltnX3VuaWNoYXJfdG9fdXRmOCAo Y2gsIGJ1ZmYpXSA9ICdcMCc7Ci0rICAgICAgICAgICAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90 ZXh0ICh3bGltLCBidWZmKTsKLSsgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0rICAgICAg ICB9Ci0rICAgICAgICAvKiBJZiBgZmlsdGVyZWRgIGlzICVUUlVFLCB0aGUga2V5c3ltIGNhbiBi ZSBlYXRlbiBmb3IgdGhlIGNvbXBvc2UKLSsgICAgICAgICAqIHByZWVkaXQgYnkgSUJ1cyBYS0Ig ZW5naW5lLiBFLmcuIEFsdEdyLVNoaWZ0LVYga2V5IHByb2R1Y2VzCi0rICAgICAgICAgKiBgTGV2 ZWwzX1NoaWZ0JyBhbmQgYEdyZWVrX09NRUdBYCBrZXlzeW0gd2l0aCAidXMoc3ltYm9saWMpIiBr ZXltYXAuCi0rICAgICAgICAgKiBIb3dldmVyIGlmIHlvdSBjb25maWdyZSBtdWx0aXBsZSBrZXlt YXBzLCBBbHRHci1TaGlmdCBtYXkgcHJvZHVjZQotKyAgICAgICAgICogdGhlIGtleW1hcCBzd2l0 Y2ggYWx0aG91Z2ggQWx0R3ItU2hpZnQtViBwcm9kdWNlcyBgR3JlZWtfT01FR0FgLgotKyAgICAg ICAgICogSSdtIG5vdCBjbGFyaWZpZWQgd2l0aCAibGV2ZWwzKHJhbHRfc3dpdGNoKSIgaW4gdXMg WEtCIGtleW1hcHMuCi0rICAgICAgICAgKi8KLSsgICAgICAgIGlmIChtb2RpZmllcnMgJiBJQlVT X01PRDNfTUFTSykgewotKyAgICAgICAgICAgIGlmIChuZXdfbW9kc19kZXByZXNzZWQpCi0rICAg ICAgICAgICAgICAgICpuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFz azsKLSsgICAgICAgICAgICBpZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkKLSsgICAgICAgICAgICAg ICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotKyAgICAgICAgfQotKyAgICAgICAgaWYg KG1vZGlmaWVycyAmIElCVVNfTU9ENV9NQVNLKSB7Ci0rICAgICAgICAgICAgaWYgKG5ld19tb2Rz X2RlcHJlc3NlZCkKLSsgICAgICAgICAgICAgICAgKm5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0 aXZlX2tleS0+bW9kNV9tYXNrOwotKyAgICAgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0YXRl KQotKyAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0rICAgICAg ICB9Ci0rICAgIH0KLSsjdW5kZWYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSwotKyAgICBy ZXR1cm4gZmlsdGVyZWQ7Ci0rfQotKwotKwotIHN0YXRpYyB2b2lkCi0gaWJ1c193YXlsYW5kX2lt X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCAgICAgICBrZXlfc2VyaWFsLAotQEAgLTQzMSw2ICs1MDYsMTQ5IEBAIGlidXNfd2F5bGFuZF9p bV9rZXlzeW0gKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gfQotIAotIAotKy8qKgotKyAqIGlidXNf d2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF9kZXByZXNzZWQ6Ci0rICoKLSsgKiBJZiB0aGUgSUJ1 cyBrZXltYXAgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbXBvc2l0b3Iga2V5bWFwLAotKyAqIElC dXMgbmVlZHMgdG8gbWFpbnRhaW4gdGhlIG1vZGlmaWVycyBzdGF0ZSBieSBpdHNlbGYgdG8gY2Fs bAotKyAqIHhrYl9zdGF0ZV91cGRhdGVfbWFzaygpLCBFLmcuIElCdXMga2V5bWFwIGlzICJsdih0 aWxkZSkiIGFuZCB0aGUgc3lzdGVtCi0rICogb25lIGlzICJ1cyIsIGJlY2F1c2UgaW5wdXRfbWV0 aG9kX2tleWJvYXJkX21vZGlmaWVycygpCi0rICogaXMgbm90IGNhbGxlZCBieSB0aGUgV2F5bGFu ZCBjb21wb3NpdG9yIGluIHRoYXQgY2FzZS4KLSsgKiBTbyB0aGlzIEFQSSB1cGRhdGVzIEBtb2Rz X2RlcHJlc3NlZCB3aXRoIElTTyBsZXZlbDMgYW5kIGxldmVsNQotKyAqIGxhdGNoIGFuZCBzaGlm dCBzdGF0ZXMsIGFuZCBzZW5kIGl0IHRvCi0rICogaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0 dWFsX3hrYl9zdGF0ZSgpLgotKyAqLwotK3N0YXRpYyBnYm9vbGVhbgotK2lidXNfd2F5bGFuZF9p bV91cGRhdGVfdmlydHVhbF9kZXByZXNzZWQgKElCdXNXYXlsYW5kSU0gICp3bGltLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICBrZXks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAg ICAgIG1vZGlmaWVycywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50MzJfdCAgICAgICAgc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeGtiX2tleXN5bV90ICAgIHN5bSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICAqYWN0aXZlX2tleSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgZmlsdGVy ZWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGtiX21vZF9t YXNrX3QgKm1vZHNfZGVwcmVzc2VkKQotK3sKLSsgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnBy aXY7Ci0rICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OwotKyAgICB4a2JfbW9kX21hc2tfdCBu ZXdfbW9kc19kZXByZXNzZWQ7Ci0rICAgIHhrYl9rZXlzeW1fdCBzeXN0ZW1fc3ltOwotKwotKyAg ICBpZiAoZmlsdGVyZWQpCi0rICAgICAgICByZXR1cm4gZmlsdGVyZWQ7Ci0rCi0rICAgIGdfYXNz ZXJ0IChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKLSsgICAgZ19hc3NlcnQgKGFjdGl2ZV9r ZXkpOwotKyAgICBnX2Fzc2VydCAobW9kc19kZXByZXNzZWQpOwotKwotKyAgICBwcml2ID0gaWJ1 c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLSsgICAgbmV3X21vZHNf ZGVwcmVzc2VkID0gKm1vZHNfZGVwcmVzc2VkOwotKwotKyAgICBpZiAoKG1vZGlmaWVycyAmIH5J QlVTX1JFTEVBU0VfTUFTSyApICE9IG5ld19tb2RzX2RlcHJlc3NlZCkgewotKyAgICAgICAgZ193 YXJuaW5nICgiSUJ1cyBtb2RpZmllcnMgJVggaXMgZGlmZmVyZW50IGZyb20gWEtCIGRlcHJlc3Nl ZCAlWCIsCi0rICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgbmV3X21vZHNfZGVwcmVzc2Vk KTsKLSsgICAgfQotKyAgICBzeXN0ZW1fc3ltID0geGtiX3N0YXRlX2tleV9nZXRfb25lX3N5bSAo cHJpdi0+a2V5X3N5cy5zdGF0ZSwgY29kZSk7Ci0rICAgIHN3aXRjaCAoc3ltKSB7Ci0rICAgIGNh c2UgSUJVU19LRVlfSVNPX0xldmVsMl9MYXRjaDoKLSsgICAgICAgIGZpbHRlcmVkID0gVFJVRTsK LSsgICAgICAgIGJyZWFrOwotKyAgICAvKiBMZXZlbDNfbGF0Y2ggaXMgY2F1c2VkIGJ5IFRMREUg a2V5IGluIGx2KHRpbGRlKSBrZXltYXAuCi0rICAgICAqIExldmVsM19TaGlmdCBpcyBjYXVzZWQg YnkgQWx0IGtleSBpbiBsdih0aWxkZSkga2V5bWFwLgotKyAgICAgKi8KLSsgICAgY2FzZSBJQlVT X0tFWV9JU09fTGV2ZWwzX0xhdGNoOgotKyAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfU2hp ZnQ6Ci0rICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BSRVNTRUQp IHsKLSsgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kNV9t YXNrOwotKyAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkKLSsgICAgICAgICAgICAg ICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IFRSVUU7Ci0rICAgICAgICAgICAgZmls dGVyZWQgPSBUUlVFOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgIC8qIExldmVs NV9MYXRjaCBpcyBjYXVzZWQgYnkgU2hpZnQrQWx0IGtleSBpbiBkZShUMykga2V5bWFwLgotKyAg ICAgKi8KLSsgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xhdGNoOgotKyAgICBjYXNlIElC VVNfS0VZX0lTT19MZXZlbDVfU2hpZnQ6Ci0rICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9B UkRfS0VZX1NUQVRFX1BSRVNTRUQpIHsKLSsgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQg fD0gYWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVt X3N5bSkKLSsgICAgICAgICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IFRS VUU7Ci0rICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotKyAgICAgICAgfQotKyAgICAgICAg YnJlYWs7Ci0rICAgIGNhc2UgSUJVU19LRVlfU2hpZnRfTDoKLSsgICAgY2FzZSBJQlVTX0tFWV9T aGlmdF9SOgotKyAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVT U0VEKQotKyAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5zaGlm dF9tYXNrOwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAm PSB+YWN0aXZlX2tleS0+c2hpZnRfbWFzazsKLSsgICAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0 OjsKLSsgICAgfQotKyNpZmRlZiBJQlVTX0xPR19TSE9XX0tFWVNZTQotKyAgICBpZiAocHJpdi0+ dmVyYm9zZSkgewotKyAgICAgICAgZnByaW50ZiAocHJpdi0+bG9nLCAiJXMga2V5OiV1IHN5bTol eCBzeXN0ZW1fc3ltOiV4IG1vZGlmaWVyczoleCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJzdGF0ZTolcyBmaWx0ZXJlZDolZFxuIiwKLSsgICAgICAgICAgICAgICAgIEdfU1RSRlVO QywKLSsgICAgICAgICAgICAgICAgIGtleSwgc3ltLCBzeXN0ZW1fc3ltLCBtb2RpZmllcnMsIHN0 YXRlID8gInByZXNzIiA6ICJyZWxlYXNlIiwKLSsgICAgICAgICAgICAgICAgIGZpbHRlcmVkKTsK LSsgICAgICAgIGZmbHVzaCAocHJpdi0+bG9nKTsKLSsgICAgfQotKyNlbmRpZgotKyAgICAqbW9k c19kZXByZXNzZWQgPSBuZXdfbW9kc19kZXByZXNzZWQ7Ci0rICAgIHJldHVybiBmaWx0ZXJlZDsK LSt9Ci0rCi0rCi0rLyoqCi0rICogaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX3hrYl9z dGF0ZToKLSsgKgotKyAqIFVwZGF0ZSB2aXJ0dWFsIElCdXMgeGtiX3N0YXRlIGJ5IEtleVByZXNz IGFuZCBLZXlSZWxlYXNlLgotKyAqLwotK3N0YXRpYyB2b2lkCi0raWJ1c193YXlsYW5kX2ltX3Vw ZGF0ZV92aXJ0dWFsX3hrYl9zdGF0ZSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICBrZXksCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgc3Rh dGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1hrYktl eW1hcCAqYWN0aXZlX2tleSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2RlcHJlc3NlZCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCBuZXdfbW9kc19kZXByZXNzZWQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAg ICAgY2xlYXJfdmlydHVhbF9zdGF0ZSkKLSt7Ci0rICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpw cml2OwotKyAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsgODsKLSsgICAgeGtiX21vZF9tYXNrX3Qg bW9kc19sb2NrZWQ7Ci0rICAgIHhrYl9sYXlvdXRfaW5kZXhfdCAgZ3JvdXA7Ci0rCi0rICAgIGdf YXNzZXJ0IChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKLSsKLSsgICAgcHJpdiA9IGlidXNf d2F5bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0rICAgIG1vZHNfbG9ja2Vk ID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9NT0RTX0xPQ0tF RCk7Ci0rICAgIC8qIFhLQiBncm91cCBsYXlvdXQgaXMgY29uZmlndXJlZCBpbiB0aGUgc3lzdGVt IGtleW1hcCBidXQgbm90IHRoZQotKyAgICAgKiB1c2VyIGtleW1hcCB3aGljaCBhbHdheXMgaW5j bHVkZXMgYSBzaW5nbGUgbGF5b3V0LgotKyAgICAgKi8KLSsgICAgZ3JvdXAgPSB4a2Jfc3RhdGVf c2VyaWFsaXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBWU9VVF9MT0NLRUQpOwotKwotKyAg ICBpZiAocHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSkgewotKyAgICAgICAgaWYgKG5ld19t b2RzX2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJlc3NlZCkgewotKyAgICAgICAgICAgIGlucHV0X21l dGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0sIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19sb2NrZWQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXApOwotKyAgICAgICAgfQot KyAgICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpCi0rICAgICAgICAgICAgcHJpdi0+aXNf dmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotKyAgICB9Ci0rICAgIGlmICghcHJpdi0+aXNf dmlydHVhbF9sYXRjaF9zdGF0ZSB8fAotKyAgICAgICAgKHN0YXRlICE9IFdMX0tFWUJPQVJEX0tF WV9TVEFURV9SRUxFQVNFRCkpIHsKLSsgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfa2V5IChhY3Rp dmVfa2V5LT5zdGF0ZSwgY29kZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Rh dGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7Ci0rICAgIH0KLSt9Ci0r Ci0rCi0gc3RhdGljIHZvaWQKLSBfY29udGV4dF9jb21taXRfdGV4dF9jYiAoSUJ1c0lucHV0Q29u dGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAg ICAqdGV4dCwKLUBAIC0xMjg0LDEyICsxNTAyLDcgQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5 IChJQnVzV2F5bGFuZElNICp3bGltLAotIHsKLSAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnBy aXY7Ci0gICAgIElCdXNYa2JLZXltYXAgKmFjdGl2ZV9rZXk7Ci0tICAgIHhrYl9tb2RfbWFza190 IG1vZHNfZGVwcmVzc2VkID0gMCwgbmV3X21vZHNfZGVwcmVzc2VkID0gMDsKLS0gICAgeGtiX21v ZF9tYXNrX3QgbW9kc19sb2NrZWQ7Ci0tICAgIHhrYl9sYXlvdXRfaW5kZXhfdCAgZ3JvdXA7Ci0t ICAgIHhrYl9rZXlzeW1fdCBzeXN0ZW1fc3ltOwotLSAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsg ODsKLS0gICAgdWludDMyX3QgY2g7Ci0rICAgIHhrYl9tb2RfbWFza190IG1vZHNfZGVwcmVzc2Vk LCBuZXdfbW9kc19kZXByZXNzZWQ7Ci0gICAgIGdib29sZWFuIGNsZWFyX3ZpcnR1YWxfc3RhdGUg PSBGQUxTRTsKLSAKLSAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfV0FZTEFORF9J TSAod2xpbSksIEZBTFNFKTsKLUBAIC0xMzE4LDEyOCArMTUzMSwzMCBAQCBpYnVzX3dheWxhbmRf aW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfREVQUkVTU0VEIHwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVRDSEVE KTsKLSAgICAgbmV3X21vZHNfZGVwcmVzc2VkID0gbW9kc19kZXByZXNzZWQ7Ci0tICAgIG1vZHNf bG9ja2VkID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9NT0RT X0xPQ0tFRCk7Ci0tICAgIC8qIFhLQiBncm91cCBsYXlvdXQgaXMgY29uZmlndXJlZCBpbiB0aGUg c3lzdGVtIGtleW1hcCBidXQgbm90IHRoZQotLSAgICAgKiB1c2VyIGtleW1hcCB3aGljaCBhbHdh eXMgaW5jbHVkZXMgYSBzaW5nbGUgbGF5b3V0LgotLSAgICAgKi8KLS0gICAgZ3JvdXAgPSB4a2Jf c3RhdGVfc2VyaWFsaXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBWU9VVF9MT0NLRUQpOwot LSAgICBpZiAoIWZpbHRlcmVkKSB7Ci0tICAgICAgICBzeXN0ZW1fc3ltID0geGtiX3N0YXRlX2tl eV9nZXRfb25lX3N5bSAocHJpdi0+a2V5X3N5cy5zdGF0ZSwgY29kZSk7Ci0tICAgICAgICBzd2l0 Y2ggKHN5bSkgewotLSAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwyX0xhdGNoOgotLSAg ICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLS0gICAgICAgICAgICBicmVhazsKLS0gICAgICAg IC8qIExldmVsM19sYXRjaCBpcyBjYXVzZWQgYnkgVExERSBrZXkgaW4gbHYodGlsZGUpIGtleW1h cC4KLS0gICAgICAgICAqIExldmVsM19TaGlmdCBpcyBjYXVzZWQgYnkgQWx0IGtleSBpbiBsdih0 aWxkZSkga2V5bWFwLgotLSAgICAgICAgICovCi0tICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19M ZXZlbDNfTGF0Y2g6Ci0tICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfU2hpZnQ6Ci0t ICAgICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVTU0VEKSB7 Ci0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2Q1 X21hc2s7Ci0tICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkKLS0gICAgICAg ICAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVFOwotLSAgICAg ICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAg IGJyZWFrOwotLSAgICAgICAgLyogTGV2ZWw1X0xhdGNoIGlzIGNhdXNlZCBieSBTaGlmdCtBbHQg a2V5IGluIGRlKFQzKSBrZXltYXAuCi0tICAgICAgICAgKi8KLS0gICAgICAgIGNhc2UgSUJVU19L RVlfSVNPX0xldmVsNV9MYXRjaDoKLS0gICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9T aGlmdDoKLS0gICAgICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BS RVNTRUQpIHsKLS0gICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9r ZXktPm1vZDNfbWFzazsKLS0gICAgICAgICAgICAgICAgaWYgKHN5bSAhPSBzeXN0ZW1fc3ltKQot LSAgICAgICAgICAgICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IFRSVUU7 Ci0tICAgICAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLS0gICAgICAgICAgICB9Ci0tICAg ICAgICAgICAgYnJlYWs7Ci0tICAgICAgICBjYXNlIElCVVNfS0VZX1NoaWZ0X0w6Ci0tICAgICAg ICBjYXNlIElCVVNfS0VZX1NoaWZ0X1I6Ci0tICAgICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tF WUJPQVJEX0tFWV9TVEFURV9QUkVTU0VEKQotLSAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXBy ZXNzZWQgfD0gYWN0aXZlX2tleS0+c2hpZnRfbWFzazsKLS0gICAgICAgICAgICBlbHNlCi0tICAg ICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+c2hpZnRfbWFz azsKLS0gICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGRlZmF1bHQ6OwotLSAgICAgICAgfQot LSNpZmRlZiBJQlVTX0xPR19TSE9XX0tFWVNZTQotLSAgICAgICAgaWYgKHByaXYtPnZlcmJvc2Up IHsKLS0gICAgICAgICAgICBmcHJpbnRmIChwcml2LT5sb2csICIlcyBrZXk6JXUgc3ltOiV4IHN5 c3RlbV9zeW06JXggbW9kaWZpZXJzOiV4ICIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJzdGF0ZTolcyBmaWx0ZXJlZDolZFxuIiwKLS0gICAgICAgICAgICAgICAgICAgICBHX1NU UkZVTkMsCi0tICAgICAgICAgICAgICAgICAgICAga2V5LCBzeW0sIHN5c3RlbV9zeW0sIG1vZGlm aWVycywKLS0gICAgICAgICAgICAgICAgICAgICBzdGF0ZSA/ICJwcmVzcyIgOiAicmVsZWFzZSIs Ci0tICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQpOwotLSAgICAgICAgICAgIGZmbHVzaCAo cHJpdi0+bG9nKTsKLS0gICAgICAgIH0KLS0jZW5kaWYKLS0gICAgfQotLSAgICBpZiAoc3RhdGUg IT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSB7Ci0tICAgICAgICBjaCA9IGlidXNf a2V5dmFsX3RvX3VuaWNvZGUgKHN5bSk7Ci0tICAgICAgICBpZiAoY2ggPT0gMCB8fCBnX3VuaWNo YXJfaXNjbnRybCAoY2gpKQotLSAgICAgICAgICAgIGNoID0geGtiX3N0YXRlX2tleV9nZXRfdXRm MzIgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlKTsKLS0vKiBObyB0ZXh0IHdpdGggQ29udHJvbCAm IEFsdCAmIFN1cGVyIGtleXMgKi8KLS0jaWZuZGVmIEdES19XSU5ET1dJTkdfUVVBUlRaCi0tIyAg ZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKLS0gICAgSUJVU19DT05UUk9M X01BU0sgfCBJQlVTX01PRDFfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQotLSNlbHNlCi0tIyAgZGVm aW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKLS0gICAgSUJVU19DT05UUk9MX01B U0sgfCBJQlVTX01PRDJfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQotLSNlbmRpZgotLSAgICAgICAg aWYgKCghZmlsdGVyZWQgJiYgIShtb2RpZmllcnMgJiBfSUJVU19OT19URVhUX0lOUFVUX01PRF9N QVNLKSAmJgotLSAgICAgICAgICAgICAhZ191bmljaGFyX2lzY250cmwgKGNoKSkgfHwgZmlsdGVy ZWQpIHsKLS0gICAgICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFwYCBpcyAlVFJVRSwgSUJ1 cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKLS0gICAgICAgICAqIGJ1dCBmb3J3YXJkcyB0 aGUga2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBoZXJlLgotLSAgICAgICAg ICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxlIGtleXMgYXMg Y29udHJvbCBrZXlzLAotLSAgICAgICAgICogRS5nLiBnYW1lIGFwcHMgImhqa2wiIHVzZSB0aGUg Y3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgotLSAgICAgICAgICogVW5mb3J0dW5hdGVseSB0aGUg V2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgZG9lcyBub3QgcHJvdmlkZQotLSAgICAgICAg ICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIGxp a2UgR1RLMy8yCi0tICAgICAgICAgKiBJTSBtb2R1bGVzLiBCdXQgVGhlIGlucHV0LW1ldGhvZCBh bHdheXMgc2hvdWxkIGhhbmRsZXMga2V5IGV2ZW50cwotLSAgICAgICAgICogcHJpb3IgdG8gYXBw cy4KLS0gICAgICAgICAqLwotLSAgICAgICAgICAgIGlmICghZmlsdGVyZWQgJiYgIXByaXYtPnVz ZV9zeXNfa2V5bWFwKSB7Ci0tICAgICAgICAgICAgICAgIGdjaGFyIGJ1ZmZbOF0gPSB7IDAsIH07 Ci0tICAgICAgICAgICAgICAgIGJ1ZmZbZ191bmljaGFyX3RvX3V0ZjggKGNoLCBidWZmKV0gPSAn XDAnOwotLSAgICAgICAgICAgICAgICBpYnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKHdsaW0s IGJ1ZmYpOwotLSAgICAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7Ci0tICAgICAgICAgICAg fQotLSAgICAgICAgICAgIC8qIElmIGBmaWx0ZXJlZGAgaXMgJVRSVUUsIHRoZSBrZXlzeW0gY2Fu IGJlIGVhdGVuIGZvciB0aGUgY29tcG9zZQotLSAgICAgICAgICAgICAqIHByZWVkaXQgYnkgSUJ1 cyBYS0IgZW5naW5lLiBFLmcuIEFsdEdyLVNoaWZ0LVYga2V5IHByb2R1Y2VzCi0tICAgICAgICAg ICAgICogYExldmVsM19TaGlmdCcgYW5kIGBHcmVla19PTUVHQWAga2V5c3ltIHdpdGggInVzKHN5 bWJvbGljKSIKLS0gICAgICAgICAgICAgKiBrZXltYXAuIEhvd2V2ZXIgaWYgeW91IGNvbmZpZ3Jl IG11bHRpcGxlIGtleW1hcHMsIEFsdEdyLVNoaWZ0Ci0tICAgICAgICAgICAgICogbWF5IHByb2R1 Y2UgdGhlIGtleW1hcCBzd2l0Y2ggYWx0aG91Z2ggQWx0R3ItU2hpZnQtViBwcm9kdWNlcwotLSAg ICAgICAgICAgICAqIGBHcmVla19PTUVHQWAuCi0tICAgICAgICAgICAgICogSSdtIG5vdCBjbGFy aWZpZWQgd2l0aCAibGV2ZWwzKHJhbHRfc3dpdGNoKSIgaW4gdXMgWEtCIGtleW1hcHMuCi0tICAg ICAgICAgICAgICovCi0tICAgICAgICAgICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9EM19NQVNL KSB7Ci0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tleS0+ bW9kM19tYXNrOwotLSAgICAgICAgICAgICAgICBjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsK LS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9ENV9N QVNLKSB7Ci0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZlX2tl eS0+bW9kNV9tYXNrOwotLSAgICAgICAgICAgICAgICBjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJV RTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tI3VuZGVmIF9JQlVTX05PX1RFWFRfSU5Q VVRfTU9EX01BU0sKLS0gICAgfQotLSAgICBpZiAocHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0 ZSkgewotLSAgICAgICAgaWYgKG5ld19tb2RzX2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJlc3NlZCkg ewotLSAgICAgICAgICAgIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0sIE5V TEwsIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3 X21vZHNfZGVwcmVzc2VkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bW9kc19sb2NrZWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3JvdXApOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUp Ci0tICAgICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotLSAg ICB9Ci0tICAgIGlmICghcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fAotLSAgICAgICAg KHN0YXRlICE9IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkpIHsKLS0gICAgICAgIHhr Yl9zdGF0ZV91cGRhdGVfa2V5IChhY3RpdmVfa2V5LT5zdGF0ZSwgY29kZSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVB U0VEKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9L RVlfRE9XTik7Ci0tICAgIH0KLSsgICAgZmlsdGVyZWQgPSBpYnVzX3dheWxhbmRfaW1fdXBkYXRl X3ZpcnR1YWxfZGVwcmVzc2VkICh3bGltLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3ltLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFjdGl2ZV9rZXksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19tb2RzX2RlcHJlc3NlZCk7Ci0r ICAgIGZpbHRlcmVkID0gaWJ1c193YXlsYW5kX2ltX2NvbW1pdF9rZXlfZXZlbnQgKHdsaW0sCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lt LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rp dmVfa2V5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmaWx0ZXJlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm5ld19tb2RzX2RlcHJlc3NlZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3ZpcnR1YWxfc3RhdGUpOwotKyAgICBpYnVzX3dh eWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlICh3bGltLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfa2V5LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2RlcHJlc3NlZCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcl92aXJ0 dWFsX3N0YXRlKTsKLSAgICAgcmV0dXJuIGZpbHRlcmVkOwotIH0KLSAKLS0tIAotMi41My4wCi0K LUZyb20gMzZhYjJiYzViZjY4ODE2MzJkMDlkMGJlMjNiOTU0MDFkZmRlYTJhNCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNv bT4KLURhdGU6IFdlZCwgMTcgSnVuIDIwMjYgMTk6NTE6MDggKzA5MDAKLVN1YmplY3Q6IFtQQVRD SCAzLzRdIGNsaWVudC93YXlsYW5kOiBSZWZhY3RvciBJU09fTGV2ZWxbM3w1XV9TaGlmdCBzdGF0 ZQotCi1UaGUgc3RhdGVzIG9mIElTTyBTaGlmdCBrZXlzIHNob3VsZCBiZSBjbGVhcmVkIHdoZW4g dGhlIGtleSBpcyByZWxlYXNlZAotYWdhaW5zdCBJU08gTGF0Y2gga2V5cy4gRS5nLiAiUkFMVCIg a2V5IGluICJsdih0aWxkZSkiIGtleW1hcC4KLQotVGhlIHN0YXRlIG9mIHRoZSAiUkFMVCIga2V5 IGlzIHN0cmFuZ2UgaW4gImRlKFQzKSIga2V5bWFwLCBpLmUuCi0iSVNPX0xldmVsM19TaGlmdCIg a2V5c3ltIGZvciB0aGUga2V5cHJlc3MgYW5kIElTT19MZXZlbDVfTGF0Y2gga2V5c20KLWZvciBr ZXlyZWxlYXNlIGFuZCBJQnVzIGNvdWxkIG5vdCBnZXQgdGhlIGNvcnJlY3QgZGVhZCBrZXlzIGFu ZAotY2xlYXIgdGhlIHN0YXRlLiBOb3cgdGhlICJpc19wcmVzc2VkX21vZDUiIGZsYWcgY2hlY2tz IGlmIHRoZQota2V5IGlzIHByZXNzZWQgYW5kIGFkZCBhIHdvcmthcm91bmQuCi0KLUNsb3Nlczog cmhieiMyNDQ0MDA5Ci0tLS0KLSBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAxMzkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyNyBp bnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC93YXls YW5kL2lidXN3YXlsYW5kaW0uYyBiL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYwotaW5k ZXggMmNjMjA3OWIuLjU3MWM3YjA1IDEwMDY0NAotLS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dh eWxhbmRpbS5jCi0rKysgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKLUBAIC02NCw2 ICs2NCwxMyBAQCB0eXBlZGVmIGVudW0KLSAgICAgSU5QVVRfTUVUSE9EX1YyLAotIH0gSU1Qcm90 b2NvbFZlcnNpb247Ci0gCi0rdHlwZWRlZiBlbnVtIHsKLSsgICAgSUJVU19LRVlfSVNPX0xFVkVM X0lOVkFMSUQsCi0rICAgIElCVVNfS0VZX0lTT19MRVZFTF8yLAotKyAgICBJQlVTX0tFWV9JU09f TEVWRUxfMywKLSsgICAgSUJVU19LRVlfSVNPX0xFVkVMXzUKLSt9IElCdXNLZXlJc29MZXZlbFZh bHVlOwotKwotIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdW5pb24gewotICAgICB1 bmlvbiB7Ci0gICAgICAgICBzdHJ1Y3QgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3YxICpjb250 ZXh0X3YxOwotQEAgLTE2Myw2ICsxNzAsOCBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRl Ci0gCi0gICAgIElCdXNYa2JLZXltYXAga2V5X3VzZXI7Ci0gICAgIElCdXNYa2JLZXltYXAga2V5 X3N5czsKLSsgICAgZ2Jvb2xlYW4gaXNfcHJlc3NlZF9tb2QzOwotKyAgICBnYm9vbGVhbiBpc19w cmVzc2VkX21vZDU7Ci0gCi0gICAgIHVpbnQzMl90IGltX3NlcmlhbDsKLSAgICAgaW50MzJfdCBy ZXBlYXRfcmF0ZTsKLUBAIC0zNDEsNiArMzUwLDI4IEBAIGlidXNfd2F5bGFuZF9zb3VyY2VfbmV3 IChzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkKLSB9Ci0gCi0gCi0rc3RhdGljIHZvaWQKLStp YnVzX3dheWxhbmRfaW1fcmVzZXRfbW9kaWZpZXJzIChJQnVzV2F5bGFuZElNICp3bGltKQotK3sK LSsgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7Ci0rICAgIHhrYl9sYXlvdXRfaW5kZXhf dCAgZ3JvdXAgPSAwOwotKwotKyAgICBnX2Fzc2VydCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGlt KSk7Ci0rCi0rICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUg KHdsaW0pOwotKyAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gRkFMU0U7Ci0rICAg IHByaXYtPmlzX3ByZXNzZWRfbW9kMyA9IEZBTFNFOwotKyAgICBwcml2LT5pc19wcmVzc2VkX21v ZDUgPSBGQUxTRTsKLSsgICAgaWYgKHByaXYtPmtleV91c2VyLnN0YXRlICYmIHByaXYtPmtleV9z eXMuc3RhdGUpIHsKLSsgICAgICAgIGdyb3VwID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9sYXlvdXQg KHByaXYtPmtleV9zeXMuc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBYS0JfU1RBVEVfTEFZT1VUX0xPQ0tFRCk7Ci0rICAgICAgICBpbnB1dF9tZXRo b2Rfa2V5Ym9hcmRfbW9kaWZpZXJzICh3bGltLCBOVUxMLCAwLCAwLCAwLCAwLCBncm91cCk7Ci0r ICAgIH0gZWxzZSB7Ci0rICAgICAgICBwcml2LT5tb2RpZmllcnMgPSAwOwotKyAgICB9Ci0rfQot KwotKwotIHN0YXRpYyB2b2lkCi0gaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0IChJQnVzV2F5 bGFuZElNICp3bGltLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAg ICAqc3RyKQotQEAgLTUyNiw3ICs1NTcsOCBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1 YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgICAgc3ltLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNYa2JLZXltYXAgICphY3RpdmVfa2V5 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAg ICAgICBmaWx0ZXJlZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB4a2JfbW9kX21hc2tfdCAqbW9kc19kZXByZXNzZWQpCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgKm1vZHNfZGVwcmVzc2VkLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICpj bGVhcl92aXJ0dWFsX3N0YXRlKQotIHsKLSAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7 Ci0gICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OwotQEAgLTUzOSw2ICs1NzEsNyBAQCBpYnVz X3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xp bSwKLSAgICAgZ19hc3NlcnQgKElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSkpOwotICAgICBnX2Fz c2VydCAoYWN0aXZlX2tleSk7Ci0gICAgIGdfYXNzZXJ0IChtb2RzX2RlcHJlc3NlZCk7Ci0rICAg IGdfYXNzZXJ0IChjbGVhcl92aXJ0dWFsX3N0YXRlKTsKLSAKLSAgICAgcHJpdiA9IGlidXNfd2F5 bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0gICAgIG5ld19tb2RzX2RlcHJl c3NlZCA9ICptb2RzX2RlcHJlc3NlZDsKLUBAIC01NTQsMjUgKzU4Nyw4NyBAQCBpYnVzX3dheWxh bmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKLSAg ICAgICAgIGJyZWFrOwotICAgICAvKiBMZXZlbDNfbGF0Y2ggaXMgY2F1c2VkIGJ5IFRMREUga2V5 IGluIGx2KHRpbGRlKSBrZXltYXAuCi0gICAgICAqIExldmVsM19TaGlmdCBpcyBjYXVzZWQgYnkg QWx0IGtleSBpbiBsdih0aWxkZSkga2V5bWFwLgotKyAgICAgKiBMZXZlbDVfTGF0Y2ggaXMgY2F1 c2VkIGJ5IFNoaWZ0K0FsdCBrZXkgaW4gZGUoVDMpIGtleW1hcC4KLSAgICAgICovCi0gICAgIGNh c2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKLSAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2 ZWwzX1NoaWZ0OgotLSAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9Q UkVTU0VEKSB7Ci0tICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXkt Pm1vZDVfbWFzazsKLS0gICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCi0tICAgICAg ICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVFOwotLSAgICAgICAg ICAgIGZpbHRlcmVkID0gVFJVRTsKLS0gICAgICAgIH0KLS0gICAgICAgIGJyZWFrOwotLSAgICAv KiBMZXZlbDVfTGF0Y2ggaXMgY2F1c2VkIGJ5IFNoaWZ0K0FsdCBrZXkgaW4gZGUoVDMpIGtleW1h cC4KLS0gICAgICovCi0gICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKLSAgICAg Y2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0OgotICAgICAgICAgaWYgKHN0YXRlID09IFdM X0tFWUJPQVJEX0tFWV9TVEFURV9QUkVTU0VEKSB7Ci0tICAgICAgICAgICAgbmV3X21vZHNfZGVw cmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1vZDNfbWFzazsKLSsgICAgICAgICAgICBzd2l0Y2ggKHN5 bSkgewotKyAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKLSsgICAg ICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfU2hpZnQ6Ci0rICAgICAgICAgICAgICAg IHByaXYtPmlzX3ByZXNzZWRfbW9kNSA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIG5ld19tb2Rz X2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgICAgIGJy ZWFrOwotKyAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKLSsgICAg ICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDVfU2hpZnQ6Ci0rICAgICAgICAgICAgICAg IHByaXYtPmlzX3ByZXNzZWRfbW9kMyA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIG5ld19tb2Rz X2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0rICAgICAgICAgICAgICAgIGJy ZWFrOwotKyAgICAgICAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25v dF9yZWFjaGVkICgpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBpZiAoc3ltICE9IHN5 c3RlbV9zeW0pCi0gICAgICAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUg PSBUUlVFOwotICAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLSsgICAgICAgIH0gZWxzZSB7 Ci0rICAgICAgICAgICAgSUJ1c0tleUlzb0xldmVsVmFsdWUgY3VycmVudF9sZXZlbCA9IElCVVNf S0VZX0lTT19MRVZFTF9JTlZBTElEOwotKyAgICAgICAgICAgIGdib29sZWFuICppc19wcmVzc2Vk X2N1cnJlbnRfbW9kID0gTlVMTDsKLSsgICAgICAgICAgICBnYm9vbGVhbiAqaXNfcHJlc3NlZF9y ZXZlcnNlX21vZCA9IE5VTEw7Ci0rICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgY3VycmVudF9t b2RlX21hc2sgPSAwOwotKyAgICAgICAgICAgIHhrYl9tb2RfbWFza190IHJldmVyc2VfbW9kZV9t YXNrID0gMDsKLSsgICAgICAgICAgICBzd2l0Y2ggKHN5bSkgewotKyAgICAgICAgICAgIGNhc2Ug SUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKLSsgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lT T19MZXZlbDNfU2hpZnQ6Ci0rICAgICAgICAgICAgICAgIGN1cnJlbnRfbGV2ZWwgPSBJQlVTX0tF WV9JU09fTEVWRUxfMzsKLSsgICAgICAgICAgICAgICAgaXNfcHJlc3NlZF9jdXJyZW50X21vZCA9 ICZwcml2LT5pc19wcmVzc2VkX21vZDU7Ci0rICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfcmV2 ZXJzZV9tb2QgPSAmcHJpdi0+aXNfcHJlc3NlZF9tb2QzOwotKyAgICAgICAgICAgICAgICBjdXJy ZW50X21vZGVfbWFzayA9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKLSsgICAgICAgICAgICAgICAg cmV2ZXJzZV9tb2RlX21hc2sgPSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0rICAgICAgICAgICAg ICAgIGJyZWFrOwotKyAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoK LSsgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDVfU2hpZnQ6Ci0rICAgICAgICAg ICAgICAgIGN1cnJlbnRfbGV2ZWwgPSBJQlVTX0tFWV9JU09fTEVWRUxfNTsKLSsgICAgICAgICAg ICAgICAgaXNfcHJlc3NlZF9jdXJyZW50X21vZCA9ICZwcml2LT5pc19wcmVzc2VkX21vZDM7Ci0r ICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSAmcHJpdi0+aXNfcHJlc3Nl ZF9tb2Q1OwotKyAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVfbWFzayA9IGFjdGl2ZV9rZXkt Pm1vZDNfbWFzazsKLSsgICAgICAgICAgICAgICAgcmV2ZXJzZV9tb2RlX21hc2sgPSBhY3RpdmVf a2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIGRl ZmF1bHQ6OwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBnX2Fzc2VydCAoY3VycmVudF9s ZXZlbCAhPSBJQlVTX0tFWV9JU09fTEVWRUxfSU5WQUxJRCk7Ci0rICAgICAgICAgICAgZ19hc3Nl cnQgKGlzX3ByZXNzZWRfY3VycmVudF9tb2QgJiYgaXNfcHJlc3NlZF9yZXZlcnNlX21vZCk7Ci0r ICAgICAgICAgICAgaWYgKEdfTElLRUxZICgqaXNfcHJlc3NlZF9jdXJyZW50X21vZCkpIHsKLSsg ICAgICAgICAgICAgICAgKmlzX3ByZXNzZWRfY3VycmVudF9tb2QgPSBGQUxTRTsKLSsgICAgICAg ICAgICB9IGVsc2UgaWYgKCppc19wcmVzc2VkX3JldmVyc2VfbW9kICYmCi0rICAgICAgICAgICAg ICAgICAgICAgICAobmV3X21vZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9kM19tYXNrKSkg ewotKyAgICAgICAgICAgICAgICAvKiBUaGUgdW5saWtlbHkgY2FzZSAhcHJpdi0+aXNfcHJlc3Nl ZF9tb2QzIGFuZAotKyAgICAgICAgICAgICAgICAgKiBwcml2LT5pc19wcmVzc2VkX21vZDUgbWVh bnMgdGhhdCAiZGUoVDMpIiBrZXltYXAgZ2l2ZXMKLSsgICAgICAgICAgICAgICAgICogdGhlIHBy ZXNzZWQgIkxldmVsM19TaGlmdCIga2V5c3ltIGFuZAotKyAgICAgICAgICAgICAgICAgKiB0aGUg cmVsZWFzZWQgIkxldmVsNV9MYXRjaCIga2V5c3ltIGZvciB0aGUga2V5IDxSQUxUPi4KLSsgICAg ICAgICAgICAgICAgICogTWF5YmUgYSBidWcgaW4gImRlKFQzKSIgc28gbmVlZCB0byBjbGVhciB0 aGUgTU9ENSBzdGF0ZQotKyAgICAgICAgICAgICAgICAgKiBieSB0aGUgcHJlc3NlZCAiTGV2ZWwz X1NoaWZ0IiBrZXlzeW0uCi0rICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAq aXNfcHJlc3NlZF9yZXZlcnNlX21vZCA9IEZBTFNFOwotKyAgICAgICAgICAgICAgICBuZXdfbW9k c19kZXByZXNzZWQgJj0gfnJldmVyc2VfbW9kZV9tYXNrOwotKyAgICAgICAgICAgICAgICAqY2xl YXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHb3Qg YSB3cm9uZyByZWxlYXNlZCAlcyBrZXkgd2l0aG91dCB0aGUgIgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAicHJlc3NlZCBvbmUuIE1heWJlIGEgYnVnIGluIFhLQi4iLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJyZW50X2xldmVsID09IElCVVNfS0VZX0lTT19MRVZFTF8zID8KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGV2ZWwzIiA6ICJMZXZlbDUiKTsKLSsg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgLyogVGhlICJsdih0aWxkZSkiIGtleW1hcCBnaXZl cyB0aGUgIkxldmVsM19TaGlmdCIga2V5c3ltCi0rICAgICAgICAgICAgICogd2l0aCB0aGUga2V5 IDxSQUxUPi4KLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICBpZiAoKGN1cnJlbnRfbGV2 ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzMgJiYKLSsgICAgICAgICAgICAgICAgIHN5bSA9PSBJ QlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0KSB8fAotKyAgICAgICAgICAgICAgICAoY3VycmVudF9s ZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVWRUxfNSAmJgotKyAgICAgICAgICAgICAgICAgc3ltID09 IElCVVNfS0VZX0lTT19MZXZlbDVfU2hpZnQpKSB7Ci0rICAgICAgICAgICAgICAgIG5ld19tb2Rz X2RlcHJlc3NlZCAmPSB+Y3VycmVudF9tb2RlX21hc2s7Ci0rICAgICAgICAgICAgICAgIGlmIChz eW0gIT0gc3lzdGVtX3N5bSkKLSsgICAgICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3Rh dGUgPSBUUlVFOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwot ICAgICBjYXNlIElCVVNfS0VZX1NoaWZ0X0w6Ci1AQCAtNjQ2LDYgKzc0MSwyMyBAQCBpYnVzX3dh eWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlIChJQnVzV2F5bGFuZElNICp3bGltLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlf U1RBVEVfUkVMRUFTRUQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBYS0JfS0VZ X1VQIDogWEtCX0tFWV9ET1dOKTsKLSAgICAgfQotKyAgICBpZiAocHJpdi0+aXNfdmlydHVhbF9s YXRjaF9zdGF0ZSAmJgotKyAgICAgICAgKG5ld19tb2RzX2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJl c3NlZCkgJiYKLSsgICAgICAgIChzdGF0ZSAhPSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFT RUQpKSB7Ci0rICAgICAgICB4a2JfbW9kX21hc2tfdCBuZXcyX21vZHNfZGVwcmVzc2VkOwotKyAg ICAgICAgbmV3Ml9tb2RzX2RlcHJlc3NlZCA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoYWN0 aXZlX2tleS0+c3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfREVQUkVTU0VEIHwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVRDSEVE KTsKLSsgICAgICAgIC8qICJkZShUMykiIGtleW1hcCBnaXZlcyB0aGUgcHJlc3NlZCAiTGV2ZWwz X1NoaWZ0IiBrZXlzeW0gYW5kCi0rICAgICAgICAgKiBzZXRzIGJvdGggTU9EMyhMZXZlbDUpIGFu ZCBNT0Q1KExldmVsMykgc3RhdGVzIGFmdGVyCi0rICAgICAgICAgKiB4a2Jfc3RhdGVfdXBkYXRl X2tleSgpIGlzIGNhbGxlZCB3aXRoIHRoZSBrZXlwcmVzcy4KLSsgICAgICAgICAqIE1heWJlIGEg YnVnIGluICJkZShUMykiIGFuZCBzZXRzIE1PRDUoTGV2ZWwzKSBhZ2FpbiBoZXJlLgotKyAgICAg ICAgICovCi0rICAgICAgICBpZiAoR19VTkxJS0VMWSAobmV3X21vZHNfZGVwcmVzc2VkICE9IG5l dzJfbW9kc19kZXByZXNzZWQpKSB7Ci0rICAgICAgICAgICAgeGtiX3N0YXRlX3VwZGF0ZV9tYXNr IChhY3RpdmVfa2V5LT5zdGF0ZSwgbmV3X21vZHNfZGVwcmVzc2VkLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMCwgbW9kc19sb2NrZWQsIDAsIDAsIGdyb3VwKTsKLSsgICAg ICAgIH0KLSsgICAgfQotIH0KLSAKLSAKLUBAIC0xMzUxLDYgKzE0NjMsNyBAQCBfYnVzX2dsb2Jh bF9lbmdpbmVfY2hhbmdlZF9jYiAoSUJ1c0J1cyAgICAgICAqYnVzLAotICAgICBnX3JldHVybl9p Zl9mYWlsIChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKLSAgICAgcHJpdiA9IGlidXNfd2F5 bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAod2xpbSk7Ci0gICAgIGRlc2MgPSBpYnVzX2J1 c19nZXRfZ2xvYmFsX2VuZ2luZSAoYnVzKTsKLSsgICAgaWJ1c193YXlsYW5kX2ltX3Jlc2V0X21v ZGlmaWVycyAod2xpbSk7Ci0gICAgIGdfYXNzZXJ0IChkZXNjKTsKLSAgICAgZ19hc3NlcnQgKCFn X3N0cmNtcDAgKGlidXNfZW5naW5lX2Rlc2NfZ2V0X25hbWUgKGRlc2MpLCBlbmdpbmVfbmFtZSkp OwotICAgICAvKiBBbHdheXMgdXBkYXRlIHByaXYtPmtleV91c2VyIGV2ZW4gaWYgcHJpdi0+dXNl X3N5c19rZXltYXAgaXMgJUZBTFNFCi1AQCAtMTUzOCw3ICsxNjUxLDggQEAgaWJ1c193YXlsYW5k X2ltX3Bvc3Rfa2V5IChJQnVzV2F5bGFuZElNICp3bGltLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfa2V5LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZpbHRlcmVkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZuZXdfbW9kc19kZXByZXNzZWQpOwotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfbW9kc19kZXByZXNzZWQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmNsZWFyX3ZpcnR1YWxfc3RhdGUpOwotICAgICBmaWx0ZXJlZCA9IGlidXNfd2F5bGFuZF9p bV9jb21taXRfa2V5X2V2ZW50ICh3bGltLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywKLUBAIC0yNDExLDYgKzI1MjUsNyBAQCBfY3Jl YXRlX2lucHV0X2NvbnRleHRfZG9uZSAoR09iamVjdCAgICAgICpvYmplY3QsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsK LSAgICAgICAgIH0KLSAgICAgICAgIGlidXNfaW5wdXRfY29udGV4dF9mb2N1c19pbiAocHJpdi0+ aWJ1c2NvbnRleHQpOwotKyAgICAgICAgaWJ1c193YXlsYW5kX2ltX3Jlc2V0X21vZGlmaWVycyAo d2xpbSk7Ci0gICAgICAgICBnX3NpZ25hbF9lbWl0ICh3bGltLAotICAgICAgICAgICAgICAgICAg ICAgICAgd2F5bGFuZF9pbV9zaWduYWxzW0lCVVNfRk9DVVNfSU5dLAotICAgICAgICAgICAgICAg ICAgICAgICAgMCwKLS0tIAotMi41My4wCi0KLUZyb20gNTA3YzExYjk0N2Y1OWJlMTBiOTk3YWQ0 NTIyMDI0ZmNjMjU1Mjg0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJh dCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTUgSnVuIDIwMjYgMTE6 NTA6NTMgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIGNsaWVudC93YXlsYW5kOiBGaXggaW5m aW5pdGUgZGVhZF9kaWFlcmVzaXMgd2l0aAotIGZyKGVyZ29sKSBrZXltYXAKLQotVHlwaW5nIHRo ZSBrZXkgPEFEMDk+IHR3aWNlIGdpdmVzIGRpZmZlcmVudCBrZXlzeW1zIGJldHdlZW4gS2V5UHJl c3MKLWFuZCBLZXlSZWxlYXNlIGV2ZW50cyBhbmQgY2F1c2VzIHRoZSByZXZlcnNlIG9yZGVyIG9m IEtleVByZXNzIGFuZAotS2V5UmVsZWFzZSBvZiB0aGUgImRlYWRfZGlhZXJlc2lzIiBrZXlzeW0u Ci1Ob3cgaWJ1cy13YXlsYW5kIGNoZWNrcyB0aGUgc3BlY2lhbCBvcmRlciBub3QgdG8gY2F1c2Ug dGhlIGtleSByZXBlYXRpbmcuCi1BbHNvIGlidXMtd2F5bGFuZCByZWxlYXNlcyB0aGUgc3RhdGUg b2YgIklTT19MZXZlbDVfTGF0Y2giIHdpdGggdHlwaW5nCi10aGUga2V5IDxBRDA5PiB0d2ljZS4K LQotQ2xvc2VzOiAjMjg5NAotLS0tCi0gY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIHwg MjQ1ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAx NzIgaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQv d2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMK LWluZGV4IDU3MWM3YjA1Li45YzY5NDM5YSAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXlsYW5kL2li dXN3YXlsYW5kaW0uYwotKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCi1AQCAt NzEsNiArNzEsMTIgQEAgdHlwZWRlZiBlbnVtIHsKLSAgICAgSUJVU19LRVlfSVNPX0xFVkVMXzUK LSB9IElCdXNLZXlJc29MZXZlbFZhbHVlOwotIAotK3R5cGVkZWYgZW51bSB7Ci0rICAgIElCVVNf S0VZX0lTT19MRVZFTF9TVEFURV9SRUxFQVNFLAotKyAgICBJQlVTX0tFWV9JU09fTEVWRUxfU1RB VEVfU0hJRlQsCi0rICAgIElCVVNfS0VZX0lTT19MRVZFTF9TVEFURV9MQVRDSAotK30gSUJ1c0tl eUlzb0xldmVsU3RhdGU7Ci0rCi0gc3RydWN0IHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF91bmlv biB7Ci0gICAgIHVuaW9uIHsKLSAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRl eHRfdjEgKmNvbnRleHRfdjE7Ci1AQCAtMTcwLDEyICsxNzYsMTQgQEAgc3RydWN0IF9JQnVzV2F5 bGFuZElNUHJpdmF0ZQotIAotICAgICBJQnVzWGtiS2V5bWFwIGtleV91c2VyOwotICAgICBJQnVz WGtiS2V5bWFwIGtleV9zeXM7Ci0tICAgIGdib29sZWFuIGlzX3ByZXNzZWRfbW9kMzsKLS0gICAg Z2Jvb2xlYW4gaXNfcHJlc3NlZF9tb2Q1OwotKyAgICBJQnVzS2V5SXNvTGV2ZWxTdGF0ZSBpc29f bGV2ZWwzX3N0YXRlOwotKyAgICBJQnVzS2V5SXNvTGV2ZWxTdGF0ZSBpc29fbGV2ZWw1X3N0YXRl OwotIAotICAgICB1aW50MzJfdCBpbV9zZXJpYWw7Ci0gICAgIGludDMyX3QgcmVwZWF0X3JhdGU7 Ci0gICAgIGludDMyX3QgcmVwZWF0X2RlbGF5OwotKyAgICB4a2Jfa2V5c3ltX3QgcHJlc3NlZF9k ZWFkX2tleTsKLSsgICAgeGtiX2tleXN5bV90IHJlbGVhc2VkX2RlYWRfa2V5X3dvX3ByZXNzOwot IAotICAgICBHQ2FuY2VsbGFibGUgKmNhbmNlbGxhYmxlOwotIH07Ci1AQCAtMzYwLDggKzM2OCwx MCBAQCBpYnVzX3dheWxhbmRfaW1fcmVzZXRfbW9kaWZpZXJzIChJQnVzV2F5bGFuZElNICp3bGlt KQotIAotICAgICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3 bGltKTsKLSAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotLSAgICBw cml2LT5pc19wcmVzc2VkX21vZDMgPSBGQUxTRTsKLS0gICAgcHJpdi0+aXNfcHJlc3NlZF9tb2Q1 ID0gRkFMU0U7Ci0rICAgIHByaXYtPmlzb19sZXZlbDVfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVW RUxfU1RBVEVfUkVMRUFTRTsKLSsgICAgcHJpdi0+aXNvX2xldmVsNV9zdGF0ZSA9IElCVVNfS0VZ X0lTT19MRVZFTF9TVEFURV9SRUxFQVNFOwotKyAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5ID0g MDsKLSsgICAgcHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlfd29fcHJlc3MgPSAwOwotICAgICBpZiAo cHJpdi0+a2V5X3VzZXIuc3RhdGUgJiYgcHJpdi0+a2V5X3N5cy5zdGF0ZSkgewotICAgICAgICAg Z3JvdXAgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9M QVlPVVRfTE9DS0VEKTsKLUBAIC00MDcsNyArNDE3LDggQEAgaWJ1c193YXlsYW5kX2ltX2NvbW1p dF9rZXlfZXZlbnQgKElCdXNXYXlsYW5kSU0gICp3bGltLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICAqYWN0aXZlX2tleSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgIGZpbHRlcmVkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCAqbmV3X21vZHNfZGVwcmVz c2VkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAq Y2xlYXJfdmlydHVhbF9zdGF0ZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2Jvb2xlYW4gICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICppc19pbnZhbGlkX2tleSkKLSB7Ci0gICAg IElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OwotICAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsg ODsKLUBAIC00MTYsOSArNDI3LDYgQEAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF9rZXlfZXZlbnQg KElCdXNXYXlsYW5kSU0gICp3bGltLAotICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19J U19XQVlMQU5EX0lNICh3bGltKSwgZmlsdGVyZWQpOwotICAgICBwcml2ID0gaWJ1c193YXlsYW5k X2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKLSAKLS0gICAgaWYgKHN0YXRlID09IFdM X0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkKLS0gICAgICAgIHJldHVybiBmaWx0ZXJlZDsK LS0KLSAgICAgY2ggPSBpYnVzX2tleXZhbF90b191bmljb2RlIChzeW0pOwotICAgICBpZiAoY2gg PT0gMCB8fCBnX3VuaWNoYXJfaXNjbnRybCAoY2gpKQotICAgICAgICAgY2ggPSB4a2Jfc3RhdGVf a2V5X2dldF91dGYzMiAoYWN0aXZlX2tleS0+c3RhdGUsIGNvZGUpOwotQEAgLTQzMSwyMyArNDM5 LDI4IEBAIGlidXNfd2F5bGFuZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5bGFuZElNICAq d2xpbSwKLSAjICBkZWZpbmUgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSyAoXAotICAgICBJ QlVTX0NPTlRST0xfTUFTSyB8IElCVVNfTU9EMl9NQVNLIHwgSUJVU19NT0Q0X01BU0spCi0gI2Vu ZGlmCi0tICAgIGlmICgoIWZpbHRlcmVkICYmICEobW9kaWZpZXJzICYgX0lCVVNfTk9fVEVYVF9J TlBVVF9NT0RfTUFTSykgJiYKLS0gICAgICAgICAhZ191bmljaGFyX2lzY250cmwgKGNoKSkgfHwg ZmlsdGVyZWQpIHsKLS0gICAgICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFwYCBpcyAlVFJV RSwgSUJ1cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKLS0gICAgICAgICAqIGJ1dCBmb3J3 YXJkcyB0aGUga2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBoZXJlLgotLSAg ICAgICAgICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxlIGtl eXMgYXMgY29udHJvbCBrZXlzLAotLSAgICAgICAgICogRS5nLiBnYW1lIGFwcHMgImhqa2wiIHVz ZSB0aGUgY3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgotLSAgICAgICAgICogVW5mb3J0dW5hdGVs eSB0aGUgV2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgZG9lcyBub3QgcHJvdmlkZQotLSAg ICAgICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRoZSBrZXkgZXZl bnRzIGxpa2UgR1RLMy8yCi0tICAgICAgICAgKiBJTSBtb2R1bGVzLiBCdXQgVGhlIGlucHV0LW1l dGhvZCBhbHdheXMgc2hvdWxkIGhhbmRsZXMga2V5IGV2ZW50cwotLSAgICAgICAgICogcHJpb3Ig dG8gYXBwcy4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYgKCFmaWx0ZXJlZCAmJiAhcHJpdi0+ dXNlX3N5c19rZXltYXApIHsKLS0gICAgICAgICAgICBnY2hhciBidWZmWzhdID0geyAwLCB9Owot LSAgICAgICAgICAgIGJ1ZmZbZ191bmljaGFyX3RvX3V0ZjggKGNoLCBidWZmKV0gPSAnXDAnOwot LSAgICAgICAgICAgIGlidXNfd2F5bGFuZF9pbV9jb21taXRfdGV4dCAod2xpbSwgYnVmZik7Ci0t ICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotLSAgICAgICAgfQotKyAgICBpZiAoKHN0YXRl ID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkgfHwKLSsgICAgICAgIChtb2RpZmll cnMgJiBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLKSkgewotKyAgICAgICAgcmV0dXJuIGZp bHRlcmVkOwotKyAgICB9Ci0rI3VuZGVmIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sKLSsK LSsgICAgLyogSW4gY2FzZSBgdXNlX3N5c19rZXltYXBgIGlzICVUUlVFLCBJQnVzIGRvZXMgbm90 IGNvbW1pdCBBU0NJSSBjaGFycwotKyAgICAgKiBidXQgZm9yd2FyZHMgdGhlIGtleSBldmVudHMg dG8gdGhlIGZvY3VzZWQgYXBwbGljYXRpb24gaGVyZS4KLSsgICAgICogQmVjYXVzZSBzb21lIGFw cGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxlIGtleXMgYXMgY29udHJvbCBrZXlzLAotKyAg ICAgKiBFLmcuIGdhbWUgYXBwcyAiaGprbCIgdXNlIHRoZSBjdXJzb3IgbW92ZSBsaWtlIFZJIG1v ZGUuCi0rICAgICAqIFVuZm9ydHVuYXRlbHkgdGhlIFdheWxhbmQgaW5wdXQtbWV0aG9kIHByb3Rv Y29sIGRvZXMgbm90IHByb3ZpZGUKLSsgICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFw cHMgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIGxpa2UgR1RLMy8yCi0rICAgICAqIElNIG1vZHVsZXMu IEJ1dCBUaGUgaW5wdXQtbWV0aG9kIGFsd2F5cyBzaG91bGQgaGFuZGxlcyBrZXkgZXZlbnRzCi0r ICAgICAqIHByaW9yIHRvIGFwcHMuCi0rICAgICAqLwotKyAgICBpZiAoIWZpbHRlcmVkICYmICFn X3VuaWNoYXJfaXNjbnRybCAoY2gpICYmICFwcml2LT51c2Vfc3lzX2tleW1hcCkgewotKyAgICAg ICAgZ2NoYXIgYnVmZls4XSA9IHsgMCwgfTsKLSsgICAgICAgIGJ1ZmZbZ191bmljaGFyX3RvX3V0 ZjggKGNoLCBidWZmKV0gPSAnXDAnOwotKyAgICAgICAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90 ZXh0ICh3bGltLCBidWZmKTsKLSsgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKLSsgICAgfQotKyAg ICBpZiAoIWdfdW5pY2hhcl9pc2NudHJsIChjaCkgfHwgSVNfREVBRF9LRVkgKHN5bSkpIHsKLSAg ICAgICAgIC8qIElmIGBmaWx0ZXJlZGAgaXMgJVRSVUUsIHRoZSBrZXlzeW0gY2FuIGJlIGVhdGVu IGZvciB0aGUgY29tcG9zZQotICAgICAgICAgICogcHJlZWRpdCBieSBJQnVzIFhLQiBlbmdpbmUu IEUuZy4gQWx0R3ItU2hpZnQtViBrZXkgcHJvZHVjZXMKLSAgICAgICAgICAqIGBMZXZlbDNfU2hp ZnQnIGFuZCBgR3JlZWtfT01FR0FgIGtleXN5bSB3aXRoICJ1cyhzeW1ib2xpYykiIGtleW1hcC4K LUBAIC00NTYsMTkgKzQ2OSw0MiBAQCBpYnVzX3dheWxhbmRfaW1fY29tbWl0X2tleV9ldmVudCAo SUJ1c1dheWxhbmRJTSAgKndsaW0sCi0gICAgICAgICAgKiBJJ20gbm90IGNsYXJpZmllZCB3aXRo ICJsZXZlbDMocmFsdF9zd2l0Y2gpIiBpbiB1cyBYS0Iga2V5bWFwcy4KLSAgICAgICAgICAqLwot ICAgICAgICAgaWYgKG1vZGlmaWVycyAmIElCVVNfTU9EM19NQVNLKSB7Ci0rICAgICAgICAgICAg LyogV2l0aCB0aGUgImZyKGVyZ29sKSIga2V5bWFwLCBUeXBpbmcgdGhlIGtleSA8QUQwOT4gdHdp Y2UKLSsgICAgICAgICAgICAgKiBwcm9kdWNlcyB0aGUgIklTT19MZXZlbDVfTGF0Y2giIGtleXN5 bSBmb3IgdGhlIGZpcnN0IEtleVByZXNzCi0rICAgICAgICAgICAgICogYW5kIHRoZSAiZGVhZF9k aWFlcmVzaXMiIGtleXN5bSBmb3IgdGhlIGZpcnN0IEtleVJlbGVlYXNlCi0rICAgICAgICAgICAg ICogYmVjYXVzZSB0aGUgcmVsZWFzZSBrZXkgZXZlbnQgaGFzIE1PRDMobGV2ZWw1KSBzdGF0ZS4K LSsgICAgICAgICAgICAgKiBBbmQgdGhlIHNlY29uZCBLZXlQcmVzcyBoYXMgdGhlICJkZWFkX2Rp YWVyZXNpcyIga2V5c3ltIGFuZAotKyAgICAgICAgICAgICAqIHRoZSBzZWNvbmQgS2V5UmVsZWFz ZSBoYXMgdGhlICJJU09fTGV2ZWw1X0xhdGNoIiBrZXlzeW0uCi0rICAgICAgICAgICAgICogVGhl IGxhdGNoIHN0YXRlIHNob3VsZCBiZSBjbGVhcmVkIHdpdGggdGhlIGRlYWQga2V5cy4KLSsgICAg ICAgICAgICAgKiBJIGRvd25ncmFkZSB0aGUgbGF0Y2ggc3RhdGUgdG8gdGhlIHNoaWZ0IHN0YXRl IGhlcmUgYW5kCi0rICAgICAgICAgICAgICogdGhlIHNoaWZ0IHN0YXRlIHdpbGwgYmUgY2xlYXJl ZCBieSB0aGUgcmVsZWFzZWQKLSsgICAgICAgICAgICAgKiAiSVNPX0xldmVsNV9MYXRjaCIga2V5 c3ltIGJ1dCBub3QgdGhlIHByZXNzZWQgZGVhZCBrZXlzCi0rICAgICAgICAgICAgICogYmVjYXVz ZSB4a2Jfc3RhdGVfdXBkYXRlX2tleSgpIHdpbGwgcmV2ZXJ0IHRoZSBNT0QzKGxldmVsNSkKLSsg ICAgICAgICAgICAgKiBzdGF0ZSBvZiB0aGUgZGVwcmVzc2VkIHhrYl9zdGF0ZV9zZXJpYWxpemVf bW9kcygpCi0rICAgICAgICAgICAgICogd2l0aCB0aGUgZGVhZCBrZXlzLgotKyAgICAgICAgICAg ICAqLwotKyAgICAgICAgICAgIGlmIChwcml2LT5pc29fbGV2ZWw1X3N0YXRlID09IElCVVNfS0VZ X0lTT19MRVZFTF9TVEFURV9MQVRDSCkgewotKyAgICAgICAgICAgICAgICBwcml2LT5pc29fbGV2 ZWw1X3N0YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1NISUZUOwotKyAgICAgICAgICAg ICAgICBpZiAoaXNfaW52YWxpZF9rZXkpCi0rICAgICAgICAgICAgICAgICAgICAqaXNfaW52YWxp ZF9rZXkgPSBUUlVFOwotKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xlYXJfdmlydHVhbF9zdGF0 ZSkgewotKyAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0rICAg ICAgICAgICAgfQotICAgICAgICAgICAgIGlmIChuZXdfbW9kc19kZXByZXNzZWQpCi0gICAgICAg ICAgICAgICAgICpuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFzazsK LS0gICAgICAgICAgICBpZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkKLS0gICAgICAgICAgICAgICAg KmNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotICAgICAgICAgfQotICAgICAgICAgaWYgKG1v ZGlmaWVycyAmIElCVVNfTU9ENV9NQVNLKSB7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPmlzb19s ZXZlbDNfc3RhdGUgPT0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX0xBVENIKSB7Ci0rICAgICAg ICAgICAgICAgIHByaXYtPmlzb19sZXZlbDNfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RB VEVfU0hJRlQ7Ci0rICAgICAgICAgICAgICAgIGlmIChpc19pbnZhbGlkX2tleSkKLSsgICAgICAg ICAgICAgICAgICAgICppc19pbnZhbGlkX2tleSA9IFRSVUU7Ci0rICAgICAgICAgICAgfSBlbHNl IGlmIChjbGVhcl92aXJ0dWFsX3N0YXRlKSB7Ci0rICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0 dWFsX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgKG5ld19t b2RzX2RlcHJlc3NlZCkKLSAgICAgICAgICAgICAgICAgKm5ld19tb2RzX2RlcHJlc3NlZCAmPSB+ YWN0aXZlX2tleS0+bW9kNV9tYXNrOwotLSAgICAgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0 YXRlKQotLSAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0gICAg ICAgICB9Ci0gICAgIH0KLS0jdW5kZWYgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSwotICAg ICByZXR1cm4gZmlsdGVyZWQ7Ci0gfQotIAotQEAgLTU1OCw3ICs1OTQsOCBAQCBpYnVzX3dheWxh bmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICAq YWN0aXZlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Ym9vbGVhbiAgICAgICAgZmlsdGVyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgKm1vZHNfZGVwcmVzc2VkLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICpjbGVhcl92aXJ0 dWFsX3N0YXRlKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi b29sZWFuICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICppc19pbnZhbGlkX2tleSkKLSB7 Ci0gICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OwotICAgICB1aW50MzJfdCBjb2RlID0g a2V5ICsgODsKLUBAIC01NzIsNiArNjA5LDcgQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0 dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0sCi0gICAgIGdfYXNzZXJ0IChhY3Rp dmVfa2V5KTsKLSAgICAgZ19hc3NlcnQgKG1vZHNfZGVwcmVzc2VkKTsKLSAgICAgZ19hc3NlcnQg KGNsZWFyX3ZpcnR1YWxfc3RhdGUpOwotKyAgICBnX2Fzc2VydCAoaXNfaW52YWxpZF9rZXkpOwot IAotICAgICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGlt KTsKLSAgICAgbmV3X21vZHNfZGVwcmVzc2VkID0gKm1vZHNfZGVwcmVzc2VkOwotQEAgLTU5Niwx MyArNjM0LDE5IEBAIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF9kZXByZXNzZWQgKElC dXNXYXlsYW5kSU0gICp3bGltLAotICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tF WV9TVEFURV9QUkVTU0VEKSB7Ci0gICAgICAgICAgICAgc3dpdGNoIChzeW0pIHsKLSAgICAgICAg ICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0rICAgICAgICAgICAgICAgIHBy aXYtPmlzb19sZXZlbDNfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfTEFUQ0g7Ci0r ICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2Q1X21h c2s7Ci0rICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlf SVNPX0xldmVsM19TaGlmdDoKLS0gICAgICAgICAgICAgICAgcHJpdi0+aXNfcHJlc3NlZF9tb2Q1 ID0gVFJVRTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+aXNvX2xldmVsM19zdGF0ZSA9IElCVVNf S0VZX0lTT19MRVZFTF9TVEFURV9TSElGVDsKLSAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVw cmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKLSAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xhdGNoOgotKyAgICAgICAg ICAgICAgICBwcml2LT5pc29fbGV2ZWw1X3N0YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRF X0xBVENIOwotKyAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tl eS0+bW9kM19tYXNrOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICBjYXNl IElCVVNfS0VZX0lTT19MZXZlbDVfU2hpZnQ6Ci0tICAgICAgICAgICAgICAgIHByaXYtPmlzX3By ZXNzZWRfbW9kMyA9IFRSVUU7Ci0rICAgICAgICAgICAgICAgIHByaXYtPmlzb19sZXZlbDVfc3Rh dGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfU0hJRlQ7Ci0gICAgICAgICAgICAgICAgIG5l d19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7Ci0gICAgICAgICAgICAg ICAgIGJyZWFrOwotICAgICAgICAgICAgIGRlZmF1bHQ6Ci1AQCAtNjEzLDYxICs2NTcsNzAgQEAg aWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAg KndsaW0sCi0gICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwotICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgICBJQnVzS2V5SXNvTGV2ZWxWYWx1ZSBjdXJyZW50X2xldmVsID0gSUJVU19L RVlfSVNPX0xFVkVMX0lOVkFMSUQ7Ci0tICAgICAgICAgICAgZ2Jvb2xlYW4gKmlzX3ByZXNzZWRf Y3VycmVudF9tb2QgPSBOVUxMOwotLSAgICAgICAgICAgIGdib29sZWFuICppc19wcmVzc2VkX3Jl dmVyc2VfbW9kID0gTlVMTDsKLS0gICAgICAgICAgICB4a2JfbW9kX21hc2tfdCBjdXJyZW50X21v ZGVfbWFzayA9IDA7Ci0tICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgcmV2ZXJzZV9tb2RlX21h c2sgPSAwOwotKyAgICAgICAgICAgIElCdXNLZXlJc29MZXZlbFN0YXRlICpjdXJyZW50X3N0YXRl ID0gTlVMTDsKLSsgICAgICAgICAgICBJQnVzS2V5SXNvTGV2ZWxTdGF0ZSAqcmV2ZXJzZV9zdGF0 ZSA9IE5VTEw7Ci0gICAgICAgICAgICAgc3dpdGNoIChzeW0pIHsKLSAgICAgICAgICAgICBjYXNl IElCVVNfS0VZX0lTT19MZXZlbDNfTGF0Y2g6Ci0gICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9J U09fTGV2ZWwzX1NoaWZ0OgotICAgICAgICAgICAgICAgICBjdXJyZW50X2xldmVsID0gSUJVU19L RVlfSVNPX0xFVkVMXzM7Ci0tICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfY3VycmVudF9tb2Qg PSAmcHJpdi0+aXNfcHJlc3NlZF9tb2Q1OwotLSAgICAgICAgICAgICAgICBpc19wcmVzc2VkX3Jl dmVyc2VfbW9kID0gJnByaXYtPmlzX3ByZXNzZWRfbW9kMzsKLS0gICAgICAgICAgICAgICAgY3Vy cmVudF9tb2RlX21hc2sgPSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0tICAgICAgICAgICAgICAg IHJldmVyc2VfbW9kZV9tYXNrID0gYWN0aXZlX2tleS0+bW9kM19tYXNrOwotKyAgICAgICAgICAg ICAgICBjdXJyZW50X3N0YXRlID0gJnByaXYtPmlzb19sZXZlbDNfc3RhdGU7Ci0rICAgICAgICAg ICAgICAgIHJldmVyc2Vfc3RhdGUgPSAmcHJpdi0+aXNvX2xldmVsNV9zdGF0ZTsKLSAgICAgICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xh dGNoOgotICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9TaGlmdDoKLSAgICAg ICAgICAgICAgICAgY3VycmVudF9sZXZlbCA9IElCVVNfS0VZX0lTT19MRVZFTF81OwotLSAgICAg ICAgICAgICAgICBpc19wcmVzc2VkX2N1cnJlbnRfbW9kID0gJnByaXYtPmlzX3ByZXNzZWRfbW9k MzsKLS0gICAgICAgICAgICAgICAgaXNfcHJlc3NlZF9yZXZlcnNlX21vZCA9ICZwcml2LT5pc19w cmVzc2VkX21vZDU7Ci0tICAgICAgICAgICAgICAgIGN1cnJlbnRfbW9kZV9tYXNrID0gYWN0aXZl X2tleS0+bW9kM19tYXNrOwotLSAgICAgICAgICAgICAgICByZXZlcnNlX21vZGVfbWFzayA9IGFj dGl2ZV9rZXktPm1vZDVfbWFzazsKLSsgICAgICAgICAgICAgICAgY3VycmVudF9zdGF0ZSA9ICZw cml2LT5pc29fbGV2ZWw1X3N0YXRlOwotKyAgICAgICAgICAgICAgICByZXZlcnNlX3N0YXRlID0g JnByaXYtPmlzb19sZXZlbDNfc3RhdGU7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg ICAgICAgIGRlZmF1bHQ6OwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBnX2Fzc2VydCAo Y3VycmVudF9sZXZlbCAhPSBJQlVTX0tFWV9JU09fTEVWRUxfSU5WQUxJRCk7Ci0tICAgICAgICAg ICAgZ19hc3NlcnQgKGlzX3ByZXNzZWRfY3VycmVudF9tb2QgJiYgaXNfcHJlc3NlZF9yZXZlcnNl X21vZCk7Ci0tICAgICAgICAgICAgaWYgKEdfTElLRUxZICgqaXNfcHJlc3NlZF9jdXJyZW50X21v ZCkpIHsKLS0gICAgICAgICAgICAgICAgKmlzX3ByZXNzZWRfY3VycmVudF9tb2QgPSBGQUxTRTsK LS0gICAgICAgICAgICB9IGVsc2UgaWYgKCppc19wcmVzc2VkX3JldmVyc2VfbW9kICYmCi0tICAg ICAgICAgICAgICAgICAgICAgICAobmV3X21vZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9k M19tYXNrKSkgewotKyAgICAgICAgICAgIGdfYXNzZXJ0IChjdXJyZW50X3N0YXRlICYmIHJldmVy c2Vfc3RhdGUpOwotKyAgICAgICAgICAgIC8qIFRoZSAibHYodGlsZGUpIiBrZXltYXAgZ2l2ZXMg dGhlICJMZXZlbDNfU2hpZnQiIGtleXN5bQotKyAgICAgICAgICAgICAqIHdpdGggdGhlIGtleSA8 UkFMVD4uCi0rICAgICAgICAgICAgICoKLSsgICAgICAgICAgICAgKiBIYW5kbGUgdGhlICJJU09f TGV2ZWw1X0xhdGNoIiBrZXlzeW0gaW4gdGhlICJmcihlcmdvbCkiIGtleW1hcC4KLSsgICAgICAg ICAgICAgKiBEbyBub3QgdXNlIGtleXN5bSBidXQgYGN1cnJlbnRfc3RhdGVgIGJlY2F1c2UgdGhl IGxhdGNoIHN0YXRlCi0rICAgICAgICAgICAgICogY2FuIGJlIGNoYW5nZWQgdG8gdGhlIHNoaWZ0 IHN0YXRlIHdpdGggc29tZSBrZXkgY29uZGl0aW9ucy4KLSsgICAgICAgICAgICAgKi8KLSsgICAg ICAgICAgICBpZiAoKmN1cnJlbnRfc3RhdGUgPT0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1NI SUZUKSB7Ci0rICAgICAgICAgICAgICAgICpjdXJyZW50X3N0YXRlID0gSUJVU19LRVlfSVNPX0xF VkVMX1NUQVRFX1JFTEVBU0U7Ci0rICAgICAgICAgICAgICAgIGlmIChjdXJyZW50X2xldmVsID09 IElCVVNfS0VZX0lTT19MRVZFTF8zKQotKyAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVw cmVzc2VkICY9IH5hY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgICAgIGVsc2Ug aWYgKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzUpCi0rICAgICAgICAgICAg ICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFzazsKLSsg ICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnRfbm90X3Jl YWNoZWQgKCk7Ci0rICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkKLSsgICAg ICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRlID0gVFJVRTsKLSsgICAgICAgICAg ICB9IGVsc2UgaWYgKCEqY3VycmVudF9zdGF0ZSAmJiAqcmV2ZXJzZV9zdGF0ZSAmJgotKyAgICAg ICAgICAgICAgICAgICAgICAgKCgoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVWRUxf MykgJiYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgKG5ld19tb2RzX2RlcHJlc3NlZCAmIGFj dGl2ZV9rZXktPm1vZDNfbWFzaykpIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgKChjdXJy ZW50X2xldmVsID09IElCVVNfS0VZX0lTT19MRVZFTF81KSAmJgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAobmV3X21vZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9kNV9tYXNrKSkKLSsg ICAgICAgICAgICAgICAgICAgICAgICkpIHsKLSAgICAgICAgICAgICAgICAgLyogVGhlIHVubGlr ZWx5IGNhc2UgIXByaXYtPmlzX3ByZXNzZWRfbW9kMyBhbmQKLSAgICAgICAgICAgICAgICAgICog cHJpdi0+aXNfcHJlc3NlZF9tb2Q1IG1lYW5zIHRoYXQgImRlKFQzKSIga2V5bWFwIGdpdmVzCi0g ICAgICAgICAgICAgICAgICAqIHRoZSBwcmVzc2VkICJMZXZlbDNfU2hpZnQiIGtleXN5bSBhbmQK LSAgICAgICAgICAgICAgICAgICogdGhlIHJlbGVhc2VkICJMZXZlbDVfTGF0Y2giIGtleXN5bSBm b3IgdGhlIGtleSA8UkFMVD4uCi0tICAgICAgICAgICAgICAgICAqIE1heWJlIGEgYnVnIGluICJk ZShUMykiIHNvIG5lZWQgdG8gY2xlYXIgdGhlIE1PRDUgc3RhdGUKLS0gICAgICAgICAgICAgICAg ICogYnkgdGhlIHByZXNzZWQgIkxldmVsM19TaGlmdCIga2V5c3ltLgotKyAgICAgICAgICAgICAg ICAgKiBUaGlzIGNhc2UgY2FuIGhhcHBlbiBpZiB0aGUgbm9ybWFsIGtleXN5bSBhbmQgc2hpZnQg a2V5c3ltCi0rICAgICAgICAgICAgICAgICAqIGFyZSBkaWZmZXJlbnQuCi0gICAgICAgICAgICAg ICAgICAqLwotLSAgICAgICAgICAgICAgICAqaXNfcHJlc3NlZF9yZXZlcnNlX21vZCA9IEZBTFNF OwotLSAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfnJldmVyc2VfbW9kZV9t YXNrOwotKyAgICAgICAgICAgICAgICAqcmV2ZXJzZV9zdGF0ZSA9IElCVVNfS0VZX0lTT19MRVZF TF9TVEFURV9SRUxFQVNFOwotKyAgICAgICAgICAgICAgICAqaXNfaW52YWxpZF9rZXkgPSBUUlVF OwotKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVW RUxfMykKLSsgICAgICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0aXZl X2tleS0+bW9kM19tYXNrOwotKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50X2xldmVs ID09IElCVVNfS0VZX0lTT19MRVZFTF81KQotKyAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNf ZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5tb2Q1X21hc2s7Ci0rICAgICAgICAgICAgICAgIGVs c2UKLSsgICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAg ICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7Ci0gICAgICAgICAgICAgICAg IGdfZGVidWcgKCJHb3QgYSB3cm9uZyByZWxlYXNlZCAlcyBrZXkgd2l0aG91dCB0aGUgIgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAicHJlc3NlZCBvbmUuIE1heWJlIGEgYnVnIGluIFhLQi4i LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAicHJlc3NlZCBvbmUuIE1heWJlIHRoZSBuZXh0 IFNoaWZ0IHN0YXRlIHdpbGwgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAicHJvZHVjZSB0 aGUgZGVsYXllZCBwcmVzc2VkIG9uZS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy ZW50X2xldmVsID09IElCVVNfS0VZX0lTT19MRVZFTF8zID8KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiTGV2ZWwzIiA6ICJMZXZlbDUiKTsKLSAgICAgICAgICAgICB9Ci0tICAg ICAgICAgICAgLyogVGhlICJsdih0aWxkZSkiIGtleW1hcCBnaXZlcyB0aGUgIkxldmVsM19TaGlm dCIga2V5c3ltCi0tICAgICAgICAgICAgICogd2l0aCB0aGUga2V5IDxSQUxUPi4KLS0gICAgICAg ICAgICAgKi8KLS0gICAgICAgICAgICBpZiAoKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNP X0xFVkVMXzMgJiYKLS0gICAgICAgICAgICAgICAgIHN5bSA9PSBJQlVTX0tFWV9JU09fTGV2ZWwz X1NoaWZ0KSB8fAotLSAgICAgICAgICAgICAgICAoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9J U09fTEVWRUxfNSAmJgotLSAgICAgICAgICAgICAgICAgc3ltID09IElCVVNfS0VZX0lTT19MZXZl bDVfU2hpZnQpKSB7Ci0tICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+Y3Vy cmVudF9tb2RlX21hc2s7Ci0tICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkK LS0gICAgICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOwotLSAgICAg ICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIElCVVNfS0VZ X1NoaWZ0X0w6Ci1AQCAtNzA2LDcgKzc1OSw4IEBAIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmly dHVhbF94a2Jfc3RhdGUgKElCdXNXYXlsYW5kSU0gKndsaW0sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1hrYktleW1hcCAqYWN0aXZlX2tleSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCBtb2Rz X2RlcHJlc3NlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 a2JfbW9kX21hc2tfdCBuZXdfbW9kc19kZXByZXNzZWQsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgY2xlYXJfdmlydHVhbF9zdGF0ZSkK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg ICBjbGVhcl92aXJ0dWFsX3N0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgIGlzX2ludmFsaWRfa2V5KQotIHsKLSAgICAgSUJ1c1dh eWxhbmRJTVByaXZhdGUgKnByaXY7Ci0gICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OwotQEAg LTczNSw4ICs3ODksOSBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRl IChJQnVzV2F5bGFuZElNICp3bGltLAotICAgICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUp Ci0gICAgICAgICAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOwotICAg ICB9Ci0tICAgIGlmICghcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fAotLSAgICAgICAg KHN0YXRlICE9IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkpIHsKLSsgICAgaWYgKEdf TElLRUxZICghaXNfaW52YWxpZF9rZXkpICYmCi0rICAgICAgICAoIXByaXYtPmlzX3ZpcnR1YWxf bGF0Y2hfc3RhdGUgfHwKLSsgICAgICAgICAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRF X1JFTEVBU0VEKSkpIHsKLSAgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfa2V5IChhY3RpdmVfa2V5 LT5zdGF0ZSwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPT0g V0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7Ci1AQCAtNzUxLDcgKzgwNiw4IEBA IGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF94a2Jfc3RhdGUgKElCdXNXYXlsYW5kSU0g KndsaW0sCi0gICAgICAgICAvKiAiZGUoVDMpIiBrZXltYXAgZ2l2ZXMgdGhlIHByZXNzZWQgIkxl dmVsM19TaGlmdCIga2V5c3ltIGFuZAotICAgICAgICAgICogc2V0cyBib3RoIE1PRDMoTGV2ZWw1 KSBhbmQgTU9ENShMZXZlbDMpIHN0YXRlcyBhZnRlcgotICAgICAgICAgICogeGtiX3N0YXRlX3Vw ZGF0ZV9rZXkoKSBpcyBjYWxsZWQgd2l0aCB0aGUga2V5cHJlc3MuCi0tICAgICAgICAgKiBNYXli ZSBhIGJ1ZyBpbiAiZGUoVDMpIiBhbmQgc2V0cyBNT0Q1KExldmVsMykgYWdhaW4gaGVyZS4KLSsg ICAgICAgICAqIEZJWE1FOiBTaG91bGQgc2V0IGBpc19pbnZhbGlkX2tleWAgaW4gdGhpcyBjYXNl IG9mIHRoZSAiZGUoVDMpIgotKyAgICAgICAgICoga2V5bWFwIHRvbyBub3QgdG8gY2FsbCB4a2Jf c3RhdGVfdXBkYXRlX2tleSgpIGhlcmU/Ci0gICAgICAgICAgKi8KLSAgICAgICAgIGlmIChHX1VO TElLRUxZIChuZXdfbW9kc19kZXByZXNzZWQgIT0gbmV3Ml9tb2RzX2RlcHJlc3NlZCkpIHsKLSAg ICAgICAgICAgICB4a2Jfc3RhdGVfdXBkYXRlX21hc2sgKGFjdGl2ZV9rZXktPnN0YXRlLCBuZXdf bW9kc19kZXByZXNzZWQsCi1AQCAtMTYxNyw2ICsxNjczLDcgQEAgaWJ1c193YXlsYW5kX2ltX3Bv c3Rfa2V5IChJQnVzV2F5bGFuZElNICp3bGltLAotICAgICBJQnVzWGtiS2V5bWFwICphY3RpdmVf a2V5OwotICAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2RlcHJlc3NlZCwgbmV3X21vZHNfZGVwcmVz c2VkOwotICAgICBnYm9vbGVhbiBjbGVhcl92aXJ0dWFsX3N0YXRlID0gRkFMU0U7Ci0rICAgIGdi b29sZWFuIGlzX2ludmFsaWRfa2V5ID0gRkFMU0U7Ci0gCi0gICAgIGdfcmV0dXJuX3ZhbF9pZl9m YWlsIChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pLCBGQUxTRSk7Ci0gICAgIHByaXYgPSBpYnVz X3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOwotQEAgLTE2NTIsNyArMTcw OSw4IEBAIGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh Y3RpdmVfa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZpbHRlcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfbW9kc19kZXByZXNzZWQsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3Zp cnR1YWxfc3RhdGUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZjbGVhcl92aXJ0dWFsX3N0YXRlLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc19pbnZhbGlkX2tleSk7 Ci0gICAgIGZpbHRlcmVkID0gaWJ1c193YXlsYW5kX2ltX2NvbW1pdF9rZXlfZXZlbnQgKHdsaW0s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZp ZXJzLAotQEAgLTE2NjEsMTQgKzE3MTksMTYgQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5IChJ QnVzV2F5bGFuZElNICp3bGltLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhY3RpdmVfa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19tb2RzX2RlcHJlc3NlZCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3ZpcnR1YWxfc3Rh dGUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm Y2xlYXJfdmlydHVhbF9zdGF0ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmlzX2ludmFsaWRfa2V5KTsKLSAgICAgaWJ1c193YXlsYW5kX2ltX3Vw ZGF0ZV92aXJ0dWFsX3hrYl9zdGF0ZSAod2xpbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWN0aXZlX2tleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbW9kc19kZXByZXNzZWQsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfdmlydHVhbF9zdGF0ZSk7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyX3Zp cnR1YWxfc3RhdGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlzX2ludmFsaWRfa2V5KTsKLSAgICAgcmV0dXJuIGZpbHRlcmVkOwotIH0KLSAKLUBAIC0y MDQ3LDYgKzIxMDcsMjEgQEAga2V5X2V2ZW50X2NoZWNrX3JlcGVhdCAoSUJ1c1dheWxhbmRJTSAg ICAgICAqd2xpbSwKLSAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnJlcGVhdGluZ19ldmVudC5p YnVzX29iamVjdF9wYXRoLCBnX2ZyZWUpOwotICAgICAgICAgaWYgKCFwcml2LT5pYnVzY29udGV4 dCkKLSAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgICAgICBpZiAoSVNfREVBRF9LRVkg KGV2ZW50LT5zeW0pKSB7Ci0rICAgICAgICAgICAgLyogV2l0aCAiZnIoZXJnb2wpIiBrZXltYXAs IGluIGNhc2UgdGhhdCBrZXkgPEFEMDk+IGlzIHR5cGVkCi0rICAgICAgICAgICAgICogdHdpY2Us IHRoZSBzZWNvbmQgcHJlc3NlZCBrZXlzeW0gaXMgImRlYWRfZGlhZXJlc2lzIiBhbmQKLSsgICAg ICAgICAgICAgKiB0aGUgc2Vjb25kIHJlbGVhc2VkIGtleXN5bSBpcyAiSVNPX0xldmVsNV9MYXRj aCIuCi0rICAgICAgICAgICAgICogVGhlIGtleXN5bSAiZGVhZF9kaWFlcmVzaXMiIHNob3VsZCBu b3QgYmUgYXV0by1yZXBlYXRlZAotKyAgICAgICAgICAgICAqIGluIHRoaXMgY2FzZS4KLSsgICAg ICAgICAgICAgKi8KLSsgICAgICAgICAgICBpZiAocHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlfd29f cHJlc3MgPT0gZXZlbnQtPnN5bSkgewotKyAgICAgICAgICAgICAgICBwcml2LT5yZWxlYXNlZF9k ZWFkX2tleV93b19wcmVzcyA9IDA7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwotKyAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5ID0gZXZlbnQt PnN5bTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgcHJpdi0+cmVsZWFzZWRfZGVh ZF9rZXlfd29fcHJlc3MgPSAwOwotKyAgICAgICAgfQotICAgICAgICAgc291cmNlID0gZ190aW1l b3V0X3NvdXJjZV9uZXcgKHByaXYtPnJlcGVhdF9kZWxheSk7Ci0gICAgICAgICBnX3NvdXJjZV9h dHRhY2ggKHNvdXJjZSwgTlVMTCk7Ci0gICAgICAgICBnX3NvdXJjZV91bnJlZiAoc291cmNlKTsK LUBAIC0yMDYwLDYgKzIxMzUsMzAgQEAga2V5X2V2ZW50X2NoZWNrX3JlcGVhdCAoSUJ1c1dheWxh bmRJTSAgICAgICAqd2xpbSwKLSAgICAgICAgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc291cmNl LCBfcHJvY2Vzc19rZXlfZXZlbnRfcmVwZWF0X2RlbGF5X2NiLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmcmVwZWF0aW5nX2V2ZW50LCBOVUxMKTsKLSAgICAgfSBlbHNlIHsKLSsg ICAgICAgIGlmIChldmVudC0+c3ltICE9IHJlcGVhdGluZ19ldmVudC5zeW0pIHsKLSsgICAgICAg ICAgICBpZiAoSVNfREVBRF9LRVkgKGV2ZW50LT5zeW0pKSB7Ci0rICAgICAgICAgICAgICAgIGlm IChldmVudC0+c3ltID09IHByaXYtPnByZXNzZWRfZGVhZF9rZXkpIHsKLSsgICAgICAgICAgICAg ICAgICAgIHByaXYtPnByZXNzZWRfZGVhZF9rZXkgPSAwOwotKyAgICAgICAgICAgICAgICB9IGVs c2UgaWYgKCFwcml2LT5wcmVzc2VkX2RlYWRfa2V5KSB7Ci0rICAgICAgICAgICAgICAgICAgICAv KiBXaXRoICJmcihlcmdvbCkiIGtleW1hcCwgaW4gY2FzZSB0aGF0IGtleSA8QUQwOT4gaXMKLSsg ICAgICAgICAgICAgICAgICAgICAqIHR5cGVkIHR3aWNlLCB0aGUgZmlyc3QgcHJlc3NlZCBrZXlz eW0gaXMKLSsgICAgICAgICAgICAgICAgICAgICAqICJJU09fTGV2ZWw1X0xhdGNoIiBhbmQgdGhl IGZpcnN0IHJlbGVhc2VkIGtleXN5bSBpcwotKyAgICAgICAgICAgICAgICAgICAgICogImRlYWRf ZGlhZXJlc2lzIiB3aXRoIHRoZSBNT0QzKHRoZSBsZXZlbDUpIG1hc2ssCi0rICAgICAgICAgICAg ICAgICAgICAgKiB0aGUgc2Vjb25kIHByZXNzZWQga2V5c3ltIGlzICJkZWFkX2RpYWVyZXNpcyIg YW5kCi0rICAgICAgICAgICAgICAgICAgICAgKiB0aGUgc2Vjb25kIHJlbGVhc2VkIGtleXN5bSBp cyAiSVNPX0xldmVsNV9MYXRjaCIuCi0rICAgICAgICAgICAgICAgICAgICAgKiBTbyB0aGUgZmly c3QgcmVsZWFzZWQgImRlYWRfZGlhZXJlc2lzIiBpcyBpbnZhbGlkIGFuZAotKyAgICAgICAgICAg ICAgICAgICAgICogdGhlIHNlY29uZCBwcmVzc2VkICJkZWFkX2RpYWVyZXNpcyIgc2hvdWxkIGJl IHJlbGVhc2VkCi0rICAgICAgICAgICAgICAgICAgICAgKiBpbW1lZGlhdGVseS4KLSsgICAgICAg ICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAgICAgcHJpdi0+cmVsZWFzZWRfZGVh ZF9rZXlfd29fcHJlc3MgPSBldmVudC0+c3ltOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgfQotKyAgICAgICAgfSBlbHNlIGlmIChJU19ERUFEX0tFWSAocmVwZWF0aW5nX2V2ZW50 LnN5bSkpIHsKLSsgICAgICAgICAgICBpZiAocmVwZWF0aW5nX2V2ZW50LnN5bSA9PSBwcml2LT5w cmVzc2VkX2RlYWRfa2V5KQotKyAgICAgICAgICAgICAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5 ID0gMDsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgcHJpdi0+cmVsZWFzZWRfZGVh ZF9rZXlfd29fcHJlc3MgPSAwOwotKyAgICAgICAgfQotICAgICAgICAgaWYgKHJlcGVhdGluZ19l dmVudC5yZXBlYXRfcmF0ZV9pZCkgewotICAgICAgICAgICAgIGdfc291cmNlX3JlbW92ZSAocmVw ZWF0aW5nX2V2ZW50LnJlcGVhdF9yYXRlX2lkKTsKLSAgICAgICAgICAgICByZXBlYXRpbmdfZXZl bnQucmVwZWF0X3JhdGVfaWQgPSAwOwotLS0gCi0yLjUzLjAKLQoKZGlmZiAtLWdpdCBhL2lidXMt SEVBRC5wYXRjaCBiL2lidXMtSEVBRC5wYXRjaAppbmRleCA5ZmQxOWMyLi4wZTM0ZDU0IDEwMDY0 NAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBhdGNoCkBAIC0xLDcgKzEs NyBAQAogRnJvbSA0NGUyMmU1ZTc2MDJiYzc5MDQwZGY0MmNiZmE4MzZiYTMyZGEwMWVmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21h aWwuY29tPgogRGF0ZTogVGh1LCAxNiBKdWwgMjAyNiAxMjozNzoyOCArMDkwMAotU3ViamVjdDog W1BBVENIXSBzcmMvdGVzdHM6IEZpeCBDSSBpc3N1ZXMgaW4gR05PTUUgNTAKK1N1YmplY3Q6IFtQ QVRDSCAxLzJdIHNyYy90ZXN0czogRml4IENJIGlzc3VlcyBpbiBHTk9NRSA1MAogCiAtIDEwMC1p YnVzLWNpLnJ1bGVzOiBEaXNhYmxlIGF1dGhlbnRpY2F0aW9uIGRpYWxvZ3MgaW4gZ25vbWUtc2hl bGwKIC0gaWJ1cy1jb21wb3NlOgpAQCAtNzA0LDMgKzcwNCwxODQzIEBAIGluZGV4IDRlNTQ0MjBm Li5kZWU2NzVjYiAxMDA3NTUKIC0tIAogMi41NC4wCiAKK0Zyb20gMWEwZDlhNmJjM2FmZTI0MTgz OGM5N2NhMzgxZTFiZDBiMzc2YTJiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1 aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTkgSnVsIDIw MjYgMTg6MTA6MDEgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHNyYy90ZXN0cy9pYnVzLWNv bXBvc2U6IEZpeCB0eXBvCisKK0ZpeGVzOiA0NGUyMmU1ZQorLS0tCisgbWVzb24uYnVpbGQgICAg ICAgICAgICAgIHwgMSArCisgc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jIHwgNCArKy0tCisgMiBm aWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1n aXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA3Y2Q5MDZkNy4uYzU3YjAwMmQg MTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0zOTEsNiAr MzkxLDcgQEAgaW5zdGFsbF9lbXB0eWRpcihnZXRfb3B0aW9uKCdkYXRhZGlyJykgLyAnaWJ1cycg LyAnZW5naW5lJykKKyBzdW1tYXJ5KHsKKyAgICdJbnN0YWxsIHByZWZpeCc6ICAgICAgICAgICAg ICAgIGdldF9vcHRpb24oJ3ByZWZpeCcpLAorICAgJ0NGTEFHUyc6ICAgICAgICAgICAgICAgICAg ICAgICAgZ2V0X29wdGlvbignY19hcmdzJyksCisrICAnTERGTEFHUyc6ICAgICAgICAgICAgICAg ICAgICAgICBnZXRfb3B0aW9uKCdjX2xpbmtfYXJncycpLAorICAgJ0J1aWxkIGVuZGlhbm5lc3Mn OiAgICAgICAgICAgICAgZW5kaWFuLAorICAgJ1BZVEhPTic6ICAgICAgICAgICAgICAgICAgICAg ICAgcHl0aG9uLmZ1bGxfcGF0aCgpLAorICAgJ0J1aWxkIFB5R09iamVjdCc6ICAgICAgICAgICAg ICAgZW5hYmxlX3B5Z29iamVjdCwKK2RpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1jb21wb3Nl LmMgYi9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKK2luZGV4IGMzNmI0YzgxLi5kMGM1NzNlNSAx MDA2NDQKKy0tLSBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYworKysrIGIvc3JjL3Rlc3RzL2li dXMtY29tcG9zZS5jCitAQCAtMTQ0LDcgKzE0NCw3IEBAIHRha2Vfc2NyZWVuc2hvdCAodm9pZCkK KyAgICAgZHQgPSBnX2RhdGVfdGltZV9uZXdfZnJvbV91bml4X3V0YyAodCk7CisgICAgIGdfcmV0 dXJuX2lmX2ZhaWwgKGR0KTsKKyAKKy0gICAgd2hpbGUgKEZBTFNFKSB7CisrICAgIGRvIHsKKyAg ICAgICAgIHByZ25hbWUgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lIChnX2dldF9wcmduYW1lICgpKTsK KyAgICAgICAgIGNhc2VuYW1lID0gZ19wYXRoX2dldF9iYXNlbmFtZSAoZ190ZXN0X2dldF9wYXRo ICgpKTsKKyAgICAgICAgIGlidXNfYnJlYWtfaWZfZmFpbCAocHJnbmFtZSk7CitAQCAtMTczLDcg KzE3Myw3IEBAIHRha2Vfc2NyZWVuc2hvdCAodm9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0ZF9vdXRwdXQgPyBzdGRfb3V0cHV0IDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICBz dGRfZXJyb3IpOworICAgICAgICAgfQorLSAgICB9CisrICAgIH0gd2hpbGUgKEZBTFNFKTsKKyAK KyAgICAgZ19mcmVlIChwcmduYW1lKTsKKyAgICAgZ19mcmVlIChjYXNlbmFtZSk7CistLSAKKzIu NTQuMAorCitGcm9tIDg0YWFmNjFmYzU2NzM1YzY1ZWI5YzQ2ODZhYTc3M2NiM2IwNWZhYTIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBn bWFpbC5jb20+CitEYXRlOiBNb24sIDI5IEp1biAyMDI2IDEyOjUwOjU2ICswOTAwCitTdWJqZWN0 OiBbUEFUQ0ggMS81XSBjbGllbnQvd2F5bGFuZDogRml4IGxhdGNoIGtleSBpbiBMYXR2aWFuKHRp bGRlKSBrZXltYXAKKworImx2KHRpbGRlKSIga2V5bWFwIGhhcyBgSVNPX0xldmVsM19MYXRjaGAg YW5kIHRoZXJlIGFyZSBzZXZlcmFsIGlzc3Vlcy4KKzEuIEtERSBXYXlsYW5kIGRvZXMgbm90IGhh bmRsZSBgSVNPX0xldmVsM19MYXRjaGAga2V5c3ltIGJ1dCBvdXRwdXRzIHRoZQorICAgdGlsZGUg ZXZlbiBpZiB0aGUgc3lzdGVtIGtleW1hcCBpcyAibHYodGlsZGUpIi4gVGhlIHByZXZpb3VzIGNo YW5nZQorICAgMDEwNDQ4NiBmaXhlcyB0aGF0IGlzc3VlIGluIElCdXMgc2lkZS4KKzIuIFRoZXJl IGlzIGEgcmFjZSB3aGVuIEBJQnVzV2F5bGFuZElNIHJlY2VpdmVzIHRoZSBzeXN0ZW0ga2V5bWFw IGZyb20KKyAgIHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgYW5kIHRoZSB1c2VyIGtleW1hcCBmcm9t IHRoZSBJQnVzIFhLQgorICAgZW5naW5lIGFuZCB0aGUgdXNlciBrZXltYXAgc2hvdWxkIG5vdCBi ZSBvdmVycmlkZGVuIGJ5IHRoZSBzeXN0ZW0gb25lLgorMy4gQElCdXNXYXlsYW5kSU0gY2FuIGhh bmRsZSB0aGUgY29tcG9zZSBrZXlzIG9ubHkgaWYgYElTT19MZXZlbDNfTGF0Y2hgCisgICBpcyBo ZWxkIHByZXNzaW5nIGF0IHByZXNlbnQuIEJ1dCB0aGUgbGF0Y2ggc3RhdGUgc2hvdWxkIGJlIGhl bGQgd2hlbgorICAgdGhlIGxhdGNoIGtleSBpcyByZWxlYXNlZCBidXQgY2xlYXJlZCB3aGVuIG90 aGVyIGtleXMgYXJlIHByZXNzZWQuCis0LiBJbiBjYXNlIHRoZSBzeXN0ZW0ga2V5bWFwIGlzIG5v dCAibHYodGlsZGUpIiwgRS5nLiAidXMiLCB0aGUgcmVsZWFzZQorICAgZXZlbnQgb2YgdGhlIHZp cnR1YWwgYElTT19MZXZlbDNfTGF0Y2hgIGtleSwgdGhlIFdheWxhbmQgY29tcG9zaXRvcgorICAg aW1tZWRpYXRlbHkgc2VuZHMgdG8gemVybyBtb2RpZmllciBzdGF0ZSB0byBjbGVhciB0aGUgbGF0 Y2ggc3RhdGUuCisgICBTbyBwcm9iYWJseSBASUJ1c1dheWxhbmRJTSBzaG91bGQgbm90IHNlbmQg dGhlIHJlbGVhc2UgZXZlbnQgb2YgdGhlCisgICBsYXRjaCBrZXkuCis1LiBYS0IgZ3JvdXAgSUQg Y2FuIGJlIHN3aXRjaGVkIGJ5IFhLQiBvcHRpb24ga2V5IGxpa2VzIGBncnA6dG9nZ2xlYAorICAg YnV0IGNsaWNraW5nIGtleWJvYXJkIGljb24gaW4gS0RFIHBhbmVsIGRvZXMgbm90IHdvcmsgYW5k IG1heWJlCisgICBpdCdzIGEgYnVnIGluIEtERSBjb21wb3NpdG9yLgorNi4gRml4IHRvIGNsZWFy IG1vZGlmaWVycyB3aXRoIHRoZSBrZXkgcmVsZWFzZSBvZiBTaGlmdCArIExhdGNoIGtleS4KKzcu IFNhdmUgQ2Fwc0xvY2sgc3RhdGUKKworRml4ZXM6IDAxMDQ0ODYKK0ZpeGVzOiAjMjg2OQorQ2xv c2VzOiByaGJ6IzI0NDQwMDkKKy0tLQorIGNsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyB8 IDM2MCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwg Mjg1IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50 L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5j CitpbmRleCBkN2QxMmQwNS4uOTViMzMwZjggMTAwNjQ0CistLS0gYS9jbGllbnQvd2F5bGFuZC9p YnVzd2F5bGFuZGltLmMKKysrKyBiL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYworQEAg LTQwLDYgKzQwLDkgQEAKKyAjaW5jbHVkZSAidmlydHVhbC1rZXlib2FyZC11bnN0YWJsZS12MS1j bGllbnQtcHJvdG9jb2wuaCIKKyAjaW5jbHVkZSAiaWJ1c3dheWxhbmRpbS5oIgorIAorKy8qIGtl eXN5bSAmIGtleWNvZGUgc2hvdWxkIG5vdCBiZSBsb2dnZWQgZm9yIHRoZSBzZWN1cml0eSBpc3N1 ZS4gKi8KKysvKiAjZGVmaW5lIElCVVNfTE9HX1NIT1dfS0VZU1lNICovCisrCisgZW51bSB7Cisg ICAgIFBST1BfMCA9IDAsCisgICAgIFBST1BfQlVTLAorQEAgLTE0Niw2ICsxNDksNyBAQCBzdHJ1 Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRlCisgICAgIGd1aW50IHByZWVkaXRfY3Vyc29yX3BvczsK KyAgICAgZ3VpbnQgcHJlZWRpdF9tb2RlOworICAgICBJQnVzTW9kaWZpZXJUeXBlIG1vZGlmaWVy czsKKysgICAgZ2Jvb2xlYW4gaXNfdmlydHVhbF9sYXRjaF9zdGF0ZTsKKyAgICAgZ2Jvb2xlYW4g aGlkaW5nX3ByZWVkaXRfdGV4dDsKKyAgICAgSUJ1c0lucHV0SGludHMgaWJ1c19oaW50czsKKyAg ICAgSUJ1c0lucHV0UHVycG9zZSBpYnVzX3B1cnBvc2U7CitAQCAtMjAzLDEwICsyMDcsNiBAQCBz dGF0aWMgY2hhciBfdXNlX3N5bmNfbW9kZSA9IDE7CisgCisgc3RhdGljIGd1aW50IHdheWxhbmRf aW1fc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKKyAKKy1zdGF0aWMgdm9pZCAgICAgICAg IGlucHV0X21ldGhvZF9kZWFjdGl2YXRlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX3VuaW9uICAgICAgKmlu cHV0X21ldGhvZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHp3cF9p bnB1dF9tZXRob2RfY29udGV4dF92MSAqY29udGV4dCk7Cisgc3RhdGljIEdPYmplY3QgICAgICpp YnVzX3dheWxhbmRfaW1fY29uc3RydWN0b3IgICAgICAgIChHVHlwZSAgICAgICAgICB0eXBlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQgICAgICAgICAgbl9wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHT2JqZWN0Q29uc3RydWN0UGFyYW0KK0BAIC0yMjgs NiArMjI4LDE5IEBAIHN0YXRpYyBnYm9vbGVhbiAgICAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5 ICAgICAgICAgICAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhrYl9rZXlzeW1fdCAgIHN5bSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi b29sZWFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkKTsKKytzdGF0aWMgdm9pZCAgICAgICAgIGlu cHV0X21ldGhvZF9kZWFjdGl2YXRlCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZv aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX3VuaW9uICAgICAgKmlucHV0 X21ldGhvZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHp3cF9pbnB1 dF9tZXRob2RfY29udGV4dF92MSAqY29udGV4dCk7Cisrc3RhdGljIHZvaWQgICAgICAgICBpbnB1 dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB6d3Bfa2V5Ym9hcmRfdW5pb24gICAgICAgICAg KmtleWJvYXJkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICBrZXlfc2VyaWFsLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19kZXByZXNzZWQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZHNfbGF0Y2hlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19sb2NrZWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vw KTsKKyAKKyAKKyBzdGF0aWMgY2hhcgorQEAgLTEwNzksNyArMTA5Miw3IEBAIGlidXNfeGtiX2tl eW1hcF91cGRhdGVfd2l0aF9rZXltYXAgKElCdXNYa2JLZXltYXAgICAgICppYnVzX2tleW1hcCwK KyAgICAgICAgIHhrYl9zdGF0ZV91bnJlZiAoaWJ1c19rZXltYXAtPnN0YXRlKTsKKyAgICAgaWYg KGlidXNfa2V5bWFwLT5rZXltYXApCisgICAgICAgICB4a2Jfa2V5bWFwX3VucmVmIChpYnVzX2tl eW1hcC0+a2V5bWFwKTsKKy0gICAgaWJ1c19rZXltYXAtPmtleW1hcCA9IGtleW1hcDsKKysgICAg aWJ1c19rZXltYXAtPmtleW1hcCA9IHhrYl9rZXltYXBfcmVmIChrZXltYXApOworICAgICBpYnVz X2tleW1hcC0+c3RhdGUgPSBzdGF0ZTsKKyAKKyAgICAgLyogeGtiX21hcF9tb2RfZ2V0X2luZGV4 KCkgY2FuIHJldHVybiBhbnkgeGtiX21vZF9pbmRleF90IHZhbHVlLCBpbmNsdWRpbmcKK0BAIC0x MTE1LDYgKzExMjgsNyBAQCBfYnVzX2dsb2JhbF9lbmdpbmVfY2hhbmdlZF9jYiAoSUJ1c0J1cyAg ICAgICAqYnVzLAorICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKKyAgICAgSUJ1c0Vu Z2luZURlc2MgKmRlc2M7CisgICAgIHN0cnVjdCB4a2Jfa2V5bWFwICprZXltYXA7CisrICAgIGdi b29sZWFuIGhhc19rZXltYXAgPSBGQUxTRTsKKyAKKyAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJV U19JU19CVVMgKGJ1cykpOworICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1dBWUxBTkRf SU0gKHdsaW0pKTsKK0BAIC0xMTI3LDEwICsxMTQxLDE4IEBAIF9idXNfZ2xvYmFsX2VuZ2luZV9j aGFuZ2VkX2NiIChJQnVzQnVzICAgICAgICpidXMsCisgICAgICAqIGltbWVkaWF0ZWx5IHdpdGhv dXQgY2hlY2tpbmcgdGhlIEdzZXR0aW5ncy4KKyAgICAgICovCisgICAgIGtleW1hcCA9IGNyZWF0 ZV91c2VyX3hrYl9rZXltYXAgKHByaXYtPnhrYl9jb250ZXh0LCBkZXNjKTsKKy0gICAgaWYgKGtl eW1hcCAmJiAhaWJ1c194a2Jfa2V5bWFwX3VwZGF0ZV93aXRoX2tleW1hcCAoJnByaXYtPmtleV91 c2VyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXltYXApKSB7CisrICAgIGlmIChrZXltYXApIHsKKysgICAgICAgIGhhc19rZXltYXAg PSBpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwICgmcHJpdi0+a2V5X3VzZXIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a2V5bWFwKTsKKyAgICAgICAgIHhrYl9rZXltYXBfdW5yZWYgKGtleW1hcCk7CisgICAgIH0KKysg ICAgaWYgKHByaXYtPnZlcmJvc2UpIHsKKysgICAgICAgIGZwcmludGYgKHByaXYtPmxvZywgIk5l dyBlbmdpbmU6JXMga2V5bWFwOiVzIHN0YXRlOiVzXG4iLAorKyAgICAgICAgICAgICAgICAgaWJ1 c19lbmdpbmVfZGVzY19nZXRfbmFtZSAoZGVzYyksCisrICAgICAgICAgICAgICAgICBoYXNfa2V5 bWFwID8gIlRSVUUiIDogIkZBTFNFIiwKKysgICAgICAgICAgICAgICAgIHByaXYtPmtleV91c2Vy LnN0YXRlID8gIlRSVUUiIDogIkZBTFNFIik7CisrICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7 CisrICAgIH0KKyAgICAgZ19vYmplY3RfdW5yZWYgKGRlc2MpOworIH0KKyAKK0BAIC0xMTQ1LDYg KzExNjcsNyBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5bWFwICh2b2lkICAgICAgICAgICAg ICAgICAgICAgICpkYXRhLAorICAgICBJQnVzV2F5bGFuZElNICp3bGltID0gZGF0YTsKKyAgICAg SUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7CisgICAgIHN0cnVjdCB4a2Jfa2V5bWFwICprZXlt YXA7CisrICAgIGdib29sZWFuIGhhc19rZXltYXAgPSBGQUxTRTsKKyAKKyAgICAgaWYgKCFJQlVT X0lTX1dBWUxBTkRfSU0gKHdsaW0pKSB7CisgICAgICAgICBjbG9zZSAoZmQpOworQEAgLTExOTQs MjUgKzEyMTcsMjUgQEAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX2tleW1hcCAodm9pZCAgICAgICAg ICAgICAgICAgICAgICAqZGF0YSwKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorICAgICBrZXlt YXAgPSBjcmVhdGVfc3lzdGVtX3hrYl9rZXltYXAgKHByaXYtPnhrYl9jb250ZXh0LCBmb3JtYXQs IGZkLCBzaXplKTsKKy0gICAgaWYgKGtleW1hcCAmJgorLSAgICAgICAgIWlidXNfeGtiX2tleW1h cF91cGRhdGVfd2l0aF9rZXltYXAgKCZwcml2LT5rZXlfc3lzLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhrYl9rZXltYXBfcmVmIChrZXltYXApKSkgewor LSAgICAgICAgeGtiX2tleW1hcF91bnJlZiAoa2V5bWFwKTsKKy0gICAgICAgIGdfY2xlYXJfcG9p bnRlciAoJmtleW1hcCwgeGtiX2tleW1hcF91bnJlZik7CistICAgIH0KKy0gICAgaWYgKGtleW1h cCAmJiAhcHJpdi0+a2V5X3VzZXIuc3RhdGUgJiYKKy0gICAgICAgICFpYnVzX3hrYl9rZXltYXBf dXBkYXRlX3dpdGhfa2V5bWFwICgmcHJpdi0+a2V5X3VzZXIsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgeGtiX2tleW1hcF9yZWYgKGtleW1hcCkpKSB7Cist ICAgICAgICB4a2Jfa2V5bWFwX3VucmVmIChrZXltYXApOworLSAgICAgICAgZ19jbGVhcl9wb2lu dGVyICgma2V5bWFwLCB4a2Jfa2V5bWFwX3VucmVmKTsKKy0gICAgfQorLSAgICBpZiAoa2V5bWFw KQorKyAgICBpZiAoa2V5bWFwKSB7CisrICAgICAgICBoYXNfa2V5bWFwID0gaWJ1c194a2Jfa2V5 bWFwX3VwZGF0ZV93aXRoX2tleW1hcCAoJnByaXYtPmtleV9zeXMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5bWFwKTsKKysgICAg ICAgIGlmICghaGFzX2tleW1hcCkKKysgICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZrZXlt YXAsIHhrYl9rZXltYXBfdW5yZWYpOworKyAgICB9CisrICAgIGlmIChoYXNfa2V5bWFwICYmICFw cml2LT5rZXlfdXNlci5zdGF0ZSkgeworKyAgICAgICAgaGFzX2tleW1hcCA9IGlidXNfeGtiX2tl eW1hcF91cGRhdGVfd2l0aF9rZXltYXAgKCZwcml2LT5rZXlfdXNlciwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXltYXApOworKyAg ICAgICAgaWYgKCFoYXNfa2V5bWFwKQorKyAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJmtl eW1hcCwgeGtiX2tleW1hcF91bnJlZik7CisrICAgIH0KKysgICAgaWYgKGhhc19rZXltYXApCisg ICAgICAgICB4a2Jfa2V5bWFwX3VucmVmIChrZXltYXApOworICAgICBpZiAocHJpdi0+dmVyYm9z ZSkgeworICAgICAgICAgZnByaW50ZiAocHJpdi0+bG9nLCAiU3lzdGVtIGtleW1hcCBmb3JtYXQ6 JXUgZmQ6JWQgc2l6ZToldSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXltYXA6 JXMgc3RhdGU6JXNcbiIsCisgICAgICAgICAgICAgICAgICBmb3JtYXQsIGZkLCBzaXplLAorLSAg ICAgICAgICAgICAgICAga2V5bWFwID8gIlRSVUUiIDogIkZBTFNFIiwKKysgICAgICAgICAgICAg ICAgIGhhc19rZXltYXAgPyAiVFJVRSIgOiAiRkFMU0UiLAorICAgICAgICAgICAgICAgICAgcHJp di0+a2V5X3N5cy5zdGF0ZSA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgICAgICAgZmZsdXNoIChw cml2LT5sb2cpOworICAgICB9CitAQCAtMTI1Myw2ICsxMjc2LDcgQEAgX2dldF9zZWF0X3dpdGhf bmFtZSAoR1B0ckFycmF5ICpzZWF0cywKKyAgICAgcmV0dXJuIE5VTEw7CisgfQorIAorKworIHN0 YXRpYyBnYm9vbGVhbgorIGlidXNfd2F5bGFuZF9pbV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAq d2xpbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgIGtleSwKK0BA IC0xMjYzLDggKzEyODcsMTMgQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5IChJQnVzV2F5bGFu ZElNICp3bGltLAorIHsKKyAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7CisgICAgIElC dXNYa2JLZXltYXAgKmFjdGl2ZV9rZXk7CisrICAgIHhrYl9tb2RfbWFza190IG1vZHNfZGVwcmVz c2VkID0gMCwgbmV3X21vZHNfZGVwcmVzc2VkID0gMDsKKysgICAgeGtiX21vZF9tYXNrX3QgbW9k c19sb2NrZWQ7CisrICAgIHhrYl9sYXlvdXRfaW5kZXhfdCAgZ3JvdXAgPSAwOworKyAgICB4a2Jf a2V5c3ltX3Qgc3lzdGVtX3N5bSA9IHN5bTsKKyAgICAgdWludDMyX3QgY29kZSA9IGtleSArIDg7 CisgICAgIHVpbnQzMl90IGNoOworKyAgICBnYm9vbGVhbiBjbGVhcl92aXJ0dWFsX3N0YXRlID0g RkFMU0U7CisgCisgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1dBWUxBTkRfSU0g KHdsaW0pLCBGQUxTRSk7CisgICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNl X3ByaXZhdGUgKHdsaW0pOworQEAgLTEyODgsNDkgKzEzMTcsMTM1IEBAIGlidXNfd2F5bGFuZF9p bV9wb3N0X2tleSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKKyAgICAgICAgIGFjdGl2ZV9rZXkgPSAm cHJpdi0+a2V5X3VzZXI7CisgICAgIGlmICghYWN0aXZlX2tleS0+c3RhdGUpCisgICAgICAgICBy ZXR1cm4gRkFMU0U7CisrICAgIG1vZHNfZGVwcmVzc2VkID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9t b2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFhLQl9TVEFURV9ERVBSRVNTRUQgfAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBVENIRUQpOworKyAgICBu ZXdfbW9kc19kZXByZXNzZWQgPSBtb2RzX2RlcHJlc3NlZDsKKysgICAgbW9kc19sb2NrZWQgPSB4 a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKGFjdGl2ZV9rZXktPnN0YXRlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX01PRFNfTE9DS0VEKTsK KysgICAgLyogWEtCIGdyb3VwIGxheW91dCBpcyBjb25maWd1cmVkIGluIHRoZSBzeXN0ZW0ga2V5 bWFwIGJ1dCBub3QgdGhlCisrICAgICAqIHVzZXIga2V5bWFwIHdoaWNoIGFsd2F5cyBpbmNsdWRl cyBhIHNpbmdsZSBsYXlvdXQuCisrICAgICAqLworKyAgICBpZiAocHJpdi0+a2V5X3N5cy5zdGF0 ZSkgeworKyAgICAgICAgZ3JvdXAgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX2xheW91dCAocHJpdi0+ a2V5X3N5cy5zdGF0ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhLQl9TVEFURV9MQVlPVVRfTE9DS0VEKTsKKysgICAgfQorICAgICBpZiAoIWZpbHRlcmVk KSB7CistI2lmIDAKKy0gICAgICAgIC8qIEZJWE1FOiBOZWVkIHRvIGNvbmZpcm0gYW55IG1vZGlm aWVycyBzaG91bGQgYmUgaWdub3JlZC4gKi8KKy0gICAgICAgIGlmICghaWJ1c19hY2NlbGVyYXRv cl92YWxpZCAoCistICAgICAgICAgICAgICAgICAgICBzeW0sCistICAgICAgICAgICAgICAgICAg ICBtb2RpZmllcnMgJiBJQlVTX01PRElGSUVSX01BU0sgJiB+SUJVU19TSElGVF9NQVNLKSkgewor LSAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKKy0gICAgICAgIH0KKy0jZWxzZQorKyAgICAg ICAgaWYgKHByaXYtPmtleV9zeXMuc3RhdGUpCisrICAgICAgICAgICAgc3lzdGVtX3N5bSA9IHhr Yl9zdGF0ZV9rZXlfZ2V0X29uZV9zeW0gKHByaXYtPmtleV9zeXMuc3RhdGUsIGNvZGUpOworICAg ICAgICAgc3dpdGNoIChzeW0pIHsKKy0gICAgICAgIGNhc2UgSUJVU19JU09fTGV2ZWwyX0xhdGNo OgorLSAgICAgICAgY2FzZSBJQlVTX0lTT19MZXZlbDNfTGF0Y2g6CistICAgICAgICBjYXNlIElC VVNfSVNPX0xldmVsNV9MYXRjaDoKKysgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsMl9M YXRjaDoKKyAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7CisgICAgICAgICAgICAgYnJlYWs7 CisrICAgICAgICAvKiBMZXZlbDNfbGF0Y2ggaXMgY2F1c2VkIGJ5IFRMREUga2V5IGluIGx2KHRp bGRlKSBrZXltYXAuCisrICAgICAgICAgKiBMZXZlbDNfU2hpZnQgaXMgY2F1c2VkIGJ5IEFsdCBr ZXkgaW4gbHYodGlsZGUpIGtleW1hcC4KKysgICAgICAgICAqLworKyAgICAgICAgY2FzZSBJQlVT X0tFWV9JU09fTGV2ZWwzX0xhdGNoOgorKyAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwz X1NoaWZ0OgorKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVf UFJFU1NFRCkgeworKyAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZl X2tleS0+bW9kNV9tYXNrOworKyAgICAgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0p CisrICAgICAgICAgICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gVFJV RTsKKysgICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOworKyAgICAgICAgICAgIH0KKysg ICAgICAgICAgICBicmVhazsKKysgICAgICAgIC8qIExldmVsNV9MYXRjaCBpcyBjYXVzZWQgYnkg U2hpZnQrQWx0IGtleSBpbiBkZShUMykga2V5bWFwLgorKyAgICAgICAgICovCisrICAgICAgICBj YXNlIElCVVNfS0VZX0lTT19MZXZlbDVfTGF0Y2g6CisrICAgICAgICBjYXNlIElCVVNfS0VZX0lT T19MZXZlbDVfU2hpZnQ6CisrICAgICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tF WV9TVEFURV9QUkVTU0VEKSB7CisrICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8 PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7CisrICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lz dGVtX3N5bSkKKysgICAgICAgICAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3Rh dGUgPSBUUlVFOworKyAgICAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBJQlVTX0tFWV9TaGlmdF9M OgorKyAgICAgICAgY2FzZSBJQlVTX0tFWV9TaGlmdF9SOgorKyAgICAgICAgICAgIGlmIChzdGF0 ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkKKysgICAgICAgICAgICAgICAgbmV3 X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPnNoaWZ0X21hc2s7CisrICAgICAgICAgICAg ZWxzZQorKyAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXkt PnNoaWZ0X21hc2s7CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBkZWZhdWx0OjsKKyAg ICAgICAgIH0KKysjaWZkZWYgSUJVU19MT0dfU0hPV19LRVlTWU0KKysgICAgICAgIGlmIChwcml2 LT52ZXJib3NlKSB7CisrICAgICAgICAgICAgZnByaW50ZiAocHJpdi0+bG9nLCAiJXMga2V5OiV1 IHN5bToleCBzeXN0ZW1fc3ltOiV4IG1vZGlmaWVyczoleCAiCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAic3RhdGU6JXMgZmlsdGVyZWQ6JWRcbiIsCisrICAgICAgICAgICAgICAg ICAgICAgR19TVFJGVU5DLAorKyAgICAgICAgICAgICAgICAgICAgIGtleSwgc3ltLCBzeXN0ZW1f c3ltLCBtb2RpZmllcnMsCisrICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPyAicHJlc3MiIDog InJlbGVhc2UiLAorKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkKTsKKysgICAgICAgICAg ICBmZmx1c2ggKHByaXYtPmxvZyk7CisrICAgICAgICB9CisgI2VuZGlmCisgICAgIH0KKy0gICAg LyogSW4gY2FzZSBgdXNlX3N5c19rZXltYXBgIGlzICVUUlVFLCBJQnVzIGRvZXMgbm90IGNvbW1p dCBBU0NJSSBjaGFycworLSAgICAgKiBidXQgZm9yd2FyZHMgdGhlIGtleSBldmVudHMgdG8gdGhl IGZvY3VzZWQgYXBwbGljYXRpb24gaGVyZS4KKy0gICAgICogQmVjYXVzZSBzb21lIGFwcGxpY2F0 aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxlIGtleXMgYXMgY29udHJvbCBrZXlzLAorLSAgICAgKiBF LmcuIGdhbWUgYXBwcyAiaGprbCIgdXNlIHRoZSBjdXJzb3IgbW92ZSBsaWtlIFZJIG1vZGUuCist ICAgICAqIFVuZm9ydHVuYXRlbHkgdGhlIFdheWxhbmQgaW5wdXQtbWV0aG9kIHByb3RvY29sIGRv ZXMgbm90IHByb3ZpZGUKKy0gICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFu ZGxlIHRoZSBrZXkgZXZlbnRzIGxpa2UgR1RLMy8yCistICAgICAqIElNIG1vZHVsZXMuIEJ1dCBU aGUgaW5wdXQtbWV0aG9kIGFsd2F5cyBzaG91bGQgaGFuZGxlcyBrZXkgZXZlbnRzCistICAgICAq IHByaW9yIHRvIGFwcHMuCistICAgICAqLworLSAgICBpZiAoIWZpbHRlcmVkICYmIChzdGF0ZSAh PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpICYmCistICAgICAgICAhcHJpdi0+dXNl X3N5c19rZXltYXApIHsKKy0gICAgICAgIGNoID0geGtiX3N0YXRlX2tleV9nZXRfdXRmMzIgKGFj dGl2ZV9rZXktPnN0YXRlLCBjb2RlKTsKKy0gICAgICAgIGlmICghKG1vZGlmaWVycyAmIElCVVNf TU9ESUZJRVJfTUFTSyAmIH5JQlVTX1NISUZUX01BU0spICYmCistICAgICAgICAgICAgY2ggJiYg Y2ggIT0gJ1xuJyAmJiBjaCAhPSAnXGInICYmIGNoICE9ICdccicgJiYgY2ggIT0gJ1x0JyAmJgor LSAgICAgICAgICAgIGNoICE9ICdcMDMzJyAmJiBjaCAhPSAnXHg3ZicpIHsKKy0gICAgICAgICAg ICBnY2hhciBidWZmWzhdID0geyAwLCB9OworLSAgICAgICAgICAgIGJ1ZmZbZ191bmljaGFyX3Rv X3V0ZjggKGNoLCBidWZmKV0gPSAnXDAnOworLSAgICAgICAgICAgIGlidXNfd2F5bGFuZF9pbV9j b21taXRfdGV4dCAod2xpbSwgYnVmZik7CistICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOwor KyAgICBpZiAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSB7CisrICAg ICAgICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKHN5bSk7CisrICAgICAgICBpZiAoY2gg PT0gMCB8fCBnX3VuaWNoYXJfaXNjbnRybCAoY2gpKQorKyAgICAgICAgICAgIGNoID0geGtiX3N0 YXRlX2tleV9nZXRfdXRmMzIgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlKTsKKysvKiBObyB0ZXh0 IHdpdGggQ29udHJvbCAmIEFsdCAmIFN1cGVyIGtleXMgKi8KKysjaWZuZGVmIEdES19XSU5ET1dJ TkdfUVVBUlRaCisrIyAgZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKKysg ICAgSUJVU19DT05UUk9MX01BU0sgfCBJQlVTX01PRDFfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQor KyNlbHNlCisrIyAgZGVmaW5lIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0sgKFwKKysgICAg SUJVU19DT05UUk9MX01BU0sgfCBJQlVTX01PRDJfTUFTSyB8IElCVVNfTU9ENF9NQVNLKQorKyNl bmRpZgorKyAgICAgICAgaWYgKCghZmlsdGVyZWQgJiYgIShtb2RpZmllcnMgJiBfSUJVU19OT19U RVhUX0lOUFVUX01PRF9NQVNLKSAmJgorKyAgICAgICAgICAgICAhZ191bmljaGFyX2lzY250cmwg KGNoKSkgfHwgZmlsdGVyZWQpIHsKKysgICAgICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFw YCBpcyAlVFJVRSwgSUJ1cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKKysgICAgICAgICAq IGJ1dCBmb3J3YXJkcyB0aGUga2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBo ZXJlLgorKyAgICAgICAgICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJp bnRhYmxlIGtleXMgYXMgY29udHJvbCBrZXlzLAorKyAgICAgICAgICogRS5nLiBnYW1lIGFwcHMg Imhqa2wiIHVzZSB0aGUgY3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgorKyAgICAgICAgICogVW5m b3J0dW5hdGVseSB0aGUgV2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgZG9lcyBub3QgcHJv dmlkZQorKyAgICAgICAgICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRo ZSBrZXkgZXZlbnRzIGxpa2UgR1RLMy8yCisrICAgICAgICAgKiBJTSBtb2R1bGVzLiBCdXQgdGhl IGlucHV0LW1ldGhvZCBhbHdheXMgc2hvdWxkIGhhbmRsZSBrZXkgZXZlbnRzCisrICAgICAgICAg KiBwcmlvciB0byBhcHBzLgorKyAgICAgICAgICovCisrICAgICAgICAgICAgaWYgKCFmaWx0ZXJl ZCAmJiAhcHJpdi0+dXNlX3N5c19rZXltYXApIHsKKysgICAgICAgICAgICAgICAgZ2NoYXIgYnVm Zls4XSA9IHsgMCwgfTsKKysgICAgICAgICAgICAgICAgZ191bmljaGFyX3RvX3V0ZjggKGNoLCBi dWZmKTsKKysgICAgICAgICAgICAgICAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0ICh3bGlt LCBidWZmKTsKKysgICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBUUlVFOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICAvKiBJZiBgZmlsdGVyZWRgIGlzICVUUlVFLCB0aGUga2V5c3ltIGNh biBiZSBlYXRlbiBmb3IgdGhlIGNvbXBvc2UKKysgICAgICAgICAgICAgKiBwcmVlZGl0IGJ5IElC dXMgWEtCIGVuZ2luZS4gRS5nLiBBbHRHci1TaGlmdC1WIGtleSBwcm9kdWNlcworKyAgICAgICAg ICAgICAqIGBMZXZlbDNfU2hpZnQnIGFuZCBgR3JlZWtfT01FR0FgIGtleXN5bSB3aXRoICJ1cyhz eW1ib2xpYykiCisrICAgICAgICAgICAgICoga2V5bWFwLiBIb3dldmVyIGlmIHlvdSBjb25maWd1 cmUgbXVsdGlwbGUga2V5bWFwcywgQWx0R3ItU2hpZnQKKysgICAgICAgICAgICAgKiBtYXkgcHJv ZHVjZSB0aGUga2V5bWFwIHN3aXRjaCBhbHRob3VnaCBBbHRHci1TaGlmdC1WIHByb2R1Y2VzCisr ICAgICAgICAgICAgICogYEdyZWVrX09NRUdBYC4KKysgICAgICAgICAgICAgKiBJJ20gbm90IGNs YXJpZmllZCB3aXRoICJsZXZlbDMocmFsdF9zd2l0Y2gpIiBpbiB1cyBYS0Iga2V5bWFwcy4KKysg ICAgICAgICAgICAgKi8KKysgICAgICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0QzX01B U0spIHsKKysgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5 LT5tb2QzX21hc2s7CisrICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVF OworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0Q1 X01BU0spIHsKKysgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVf a2V5LT5tb2Q1X21hc2s7CisrICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBU UlVFOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKysjdW5kZWYgX0lCVVNfTk9fVEVYVF9J TlBVVF9NT0RfTUFTSworKyAgICB9CisrICAgIGlmIChwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0 YXRlKSB7CisrICAgICAgICBpZiAobmV3X21vZHNfZGVwcmVzc2VkICE9IG1vZHNfZGVwcmVzc2Vk KSB7CisrICAgICAgICAgICAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVycyAod2xpbSwg TlVMTCwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu ZXdfbW9kc19kZXByZXNzZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtb2RzX2xvY2tlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncm91cCk7CisrICAgICAgICB9CisrICAgICAgICBpZiAoY2xlYXJfdmlydHVhbF9zdGF0 ZSkKKysgICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gRkFMU0U7Cisr ICAgIH0KKysgICAgaWYgKCFwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlIHx8CisrICAgICAg ICAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKSkgeworKyAgICAgICAg eGtiX3N0YXRlX3VwZGF0ZV9rZXkgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVM RUFTRUQpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBYS0JfS0VZX1VQIDogWEtC X0tFWV9ET1dOKTsKKyAgICAgfQorLSAgICB4a2Jfc3RhdGVfdXBkYXRlX2tleSAoYWN0aXZlX2tl eS0+c3RhdGUsIGNvZGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUgPT0gV0xf S0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg PyBYS0JfS0VZX1VQIDogWEtCX0tFWV9ET1dOKTsKKyAgICAgcmV0dXJuIGZpbHRlcmVkOworIH0K KyAKK0BAIC0xNzc3LDEyICsxODkyLDM2IEBAIGlucHV0X21ldGhvZF9rZXlib2FyZF9rZXkgKHZv aWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCisgICAgIC8qIHhrYl9rZXlfZ2V0X3N5bXMo KSBkb2VzIG5vdCByZXR1cm4gdGhlIGNhcGl0YWwgc3ltcyB3aXRoIFNoaWZ0IGtleS4gKi8KKyAg ICAgaWYgKHByaXYtPmtleV9zeXMuc3RhdGUpCisgICAgICAgICBldmVudC5zeW0gPSB4a2Jfc3Rh dGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5rZXlfc3lzLnN0YXRlLCBjb2RlKTsKKy0gICAgaWYg KGV2ZW50LnN5bSAhPSBJQlVTX0tFWV9NdWx0aV9rZXkgJiYgcHJpdi0+a2V5X3VzZXIuc3RhdGUp CistICAgICAgICBldmVudC5zeW0gPSB4a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5r ZXlfdXNlci5zdGF0ZSwgY29kZSk7CisrICAgIHN3aXRjaCAoZXZlbnQuc3ltKSB7CisrICAgIGNh c2UgSUJVU19LRVlfTXVsdGlfa2V5OgorKyAgICBjYXNlIElCVVNfS0VZX0lTT19OZXh0X0dyb3Vw OgorKyAgICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgICBpZiAocHJpdi0+a2V5 X3VzZXIuc3RhdGUpCisrICAgICAgICAgICAgZXZlbnQuc3ltID0geGtiX3N0YXRlX2tleV9nZXRf b25lX3N5bSAocHJpdi0+a2V5X3VzZXIuc3RhdGUsIGNvZGUpOworKyAgICB9CisgICAgIGV2ZW50 Lm1vZGlmaWVycyA9IHByaXYtPm1vZGlmaWVyczsKKyAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJP QVJEX0tFWV9TVEFURV9SRUxFQVNFRCkKKyAgICAgICAgIGV2ZW50Lm1vZGlmaWVycyB8PSBJQlVT X1JFTEVBU0VfTUFTSzsKKyAgICAgZXZlbnQud2xpbSA9IHdsaW07CisrI2lmZGVmIElCVVNfTE9H X1NIT1dfS0VZU1lNCisrICAgIGlmIChwcml2LT52ZXJib3NlKSB7CisrICAgICAgICBmcHJpbnRm IChwcml2LT5sb2csICIlcyBzZXJpYWw6JXUgdGltZToldSBrZXk6JXUgIgorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAic3ltOiV4IHN5c3RlbV91c2VyOiV4IHN5c3RlbV9zeW06JXggIgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kaWZpZXJzOiV4IHN0YXRlOiVzXG4iLAor KyAgICAgICAgICAgICAgICAgR19TVFJGVU5DLAorKyAgICAgICAgICAgICAgICAga2V5X3Nlcmlh bCwgdGltZSwga2V5LAorKyAgICAgICAgICAgICAgICAgZXZlbnQuc3ltLAorKyAgICAgICAgICAg ICAgICAgcHJpdi0+a2V5X3VzZXIuc3RhdGUgPworKyAgICAgICAgICAgICAgICAgICAgIHhrYl9z dGF0ZV9rZXlfZ2V0X29uZV9zeW0gKHByaXYtPmtleV91c2VyLnN0YXRlLCBjb2RlKSA6CisrICAg ICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgIHByaXYtPmtleV9zeXMuc3Rh dGUgPworKyAgICAgICAgICAgICAgICAgICAgIHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9zeW0gKHBy aXYtPmtleV9zeXMuc3RhdGUsIGNvZGUpIDoKKysgICAgICAgICAgICAgICAgICAgICAwLAorKyAg ICAgICAgICAgICAgICAgZXZlbnQubW9kaWZpZXJzLCBzdGF0ZSA/ICJwcmVzcyIgOiAicmVsZWFz ZSIpOworKyAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOworKyAgICB9CisrI2VuZGlmCisgCisg ICAgIGtleV9ldmVudF9jaGVja19yZXBlYXQgKHdsaW0sICZldmVudCk7CisgICAgIHN3aXRjaCAo X3VzZV9zeW5jX21vZGUpIHsKK0BAIC0xNzk2LDYgKzE5MzUsMjkgQEAgaW5wdXRfbWV0aG9kX2tl eWJvYXJkX2tleSAodm9pZCAgICAgICAgICAgICAgICAgICAgICAqZGF0YSwKKyB9CisgCisgCisr LyoqCisrICogaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlmaWVyczoKKysgKgorKyAqIFRoaXMg aXMgYSBjb21tb24gQVBJIG9mIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnNfdjEoKSBh bmQKKysgKiBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzX3YyKCkuCisrICogSWYgeW91 IGNvbmZpZ3VyZSBtdWx0aXBsZSBYS0IgbGF5b3V0cyBpbiB0aGUgc3lzdGVtIHdpdGgKKysgKiAv ZXRjL3Zjb25zb2xlLmNvbmYgZmlsZSwgeW91IGNhbiBzd2l0Y2ggdGhlIGFjdGl2ZSBsYXlvdXQg d2l0aAorKyAqIHRoZSBYS0Igb3B0aW9ucyBhbmQgQGdyb3VwIGlzIGNoYW5nZWQgd2l0aCB0aGUg c2hvcnRjdXQga2V5IGxpa2UKKysgKiAiZ3JwOmxhbHRfbHNoaWZ0X3RvZ2dsZSIgYnV0IElmIHlv dSBjbGljayB0aGUga2V5Ym9hcmQgaWNvbiBpbgorKyAqIFBsYXNtYSBLREUgYW5kIGNoYW5nZSB0 aGUgYWN0aXZlIGxheW91dCB3aXRoIEdVSSwgQGdyb3VwIGlzIG5vdAorKyAqIGNoYW5nZWQgYW5k IEkgYXNzdW1lIGl0J3MgYSBidWcgWzFdLgorKyAqIEN1cnJlbnRseSB0aGVyZSBhcmUgdHdvIGNh c2VzIG9mIHRoZSBjb21iaW5hdGlvbnMgb2YgdGhlIElCdXMga2V5bWFwIGFuZAorKyAqIHRoZSBz eXN0ZW0ga2V5bWFwIHN1cHBvcnRlZCBieSBJQnVzOgorKyAqIDEuIEFsd2F5cyBTYW1lIGtleW1h cHMKKysgKiAgICBFLmcuIElCdXMga2V5bWFwIGlzICJsdih0aWxkZSkiIGFuZCBzeXN0ZW0gb25l IGlzICJsdih0aWxkZSkiCisrICogMi4gU3lzdGVtIGtleW1hcCBpcyAiVVMiIGFuZCBzd2l0Y2gg SUJ1cyBrZXltYXBzIHdpdGggU3VwZXItc3BhY2Uga2V5CisrICogICAgRS5nLiBJQnVzIGtleW1h cCBpcyAibHYodGlsZGUpIiBhbmQgc3lzdGVtIG9uZSBpcyAidXMiCisrICogU28geW91IHNob3Vs ZCB1c2UgYm90aCBYS0Igb3B0aW9uIGtleXMgYW5kIElCdXMgc2hvcnRjdXRrZXlzIHRvIHN3aXRj aCB0aGUKKysgKiBrZXltYXBzIHRvIGNoYW5nZSBib3RoIFhLQiBrZXltYXBzIGFuZCBJQnVzIGtl eW1hcHMgYnV0IHlvdSBzaG91bGQgbm90CisrICogY2xpY2sgdGhlIGtleWJvYXJkIGljb24gaW4g S0RFLgorKyAqCisrICogWzFdIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD01 MTgzNzEKKysgKi8KKyBzdGF0aWMgdm9pZAorIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmll cnMgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHp3cF9rZXlib2FyZF91bmlvbiAqa2V5Ym9hcmQsCitAQCAt MTgxNiwyNyArMTk3OCw1OSBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzICh2b2lk ICAgICAgICAgICAgICAgICAgICAgICpkYXRhLAorICAgICAgICAgYWN0aXZlX2tleSA9ICZwcml2 LT5rZXlfc3lzOworICAgICBlbHNlCisgICAgICAgICBhY3RpdmVfa2V5ID0gJnByaXYtPmtleV91 c2VyOworLSAgICBpZiAocHJpdi0+a2V5X3VzZXIuc3RhdGUpIHsKKy0gICAgICAgIHhrYl9zdGF0 ZV91cGRhdGVfbWFzayAocHJpdi0+a2V5X3VzZXIuc3RhdGUsIG1vZHNfZGVwcmVzc2VkLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2xhdGNoZWQsIG1vZHNfbG9ja2VkLCAw LCAwLCBncm91cCk7CistICAgIH0KKy0gICAgLyogUHJlc3NpbmcgWEtCIGdyb3VwIGtleSBsaWtl cyBBbHRfUiB3aXRoIGdycDp0b2dnbGUgY2FsbHMKKy0gICAgICogaW5wdXRfbWV0aG9kX2tleWJv YXJkX21vZGlmaWVycygpIHdpdGggdGhlIHVwZGF0ZWQgYGdyb3VwYAorLSAgICAgKiBhbmQgbmVl ZCB0byB1cGRhdGUgcHJpdi0+a2V5X3N5cy5zdGF0ZSB0byBzd2l0Y2ggdGhlIFhLQiBncm91cAor LSAgICAgKiBpbiB0aGUgc3lzdGVtIGtleW1hcC4KKy0gICAgICoKKy0gICAgICogWEtCIGdyb3Vw IGtleSBjYW4gc3dpdGNoIGBncm91cGAgYnV0IGNsaWNraW5nIHRoZSBrZXlib2FyZCBpY29uCist ICAgICAqIG9mIEtERSBkb2VzIG5vdCBjaGFuZ2UgYGdyb3VwYCBhdCBwcmVzZW50LiBNYXliZSBh IGJ1ZyBpbiB0aGUKKy0gICAgICogS0RFIFdheWxhbmQgY29tcG9zaXRvci4KKysgICAgLyogRG8g bm90IHJlc2V0IExhdGNoIG1vZGlmaWVycyBieSBzeXN0ZW0gaW4gY2FzZSB0aGUgc3lzdGVtIGtl eW1hcAorKyAgICAgKiBoYXMgbm8gdGhlIExhdGNoIGtleS4KKysgICAgICogSW4gY2FzZSB0aGUg dXNlciBrZXltYXAgaXMgImx2KHRpbGRlKSIgYW5kIHRoZSBzeXN0ZW0gb25lIGlzICJ1cyIsCisr ICAgICAqIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMoKSBjbGVhcnMgc3RhdGUgb2Yg TGV2ZWwzX0xhdGNoIGtleQorKyAgICAgKiBpbW1lZGlhdGVseSBhZnRlciB0aGUgTGV2ZWwzX0xh dGNoIGtleSBpcyByZWxlYXNlZCBiZWNhdXNlIHRoZSAidXMiCisrICAgICAqIGtleW1hcCBkb2Vz IG5vdCBoYXZlIHRoZSBsYXRjaCBrZXlzLgorKyAgICAgKiBUaGUgYmVoYXZpb3IgaXMgZGlmZmVy ZW50IGluIGNhc2UgYm90aCB1c2VyIGFuZCBzeXN0ZW0ga2V5bWFwcyBhcmUKKysgICAgICogImx2 KHRpbGRlKSIuCisrICAgICAqIFNvIGBpc192aXJ0dWFsX2xhdGNoX3N0YXRlYCBrZWVwcyB0aGUg dmlydHVhbCBzdGF0ZSBvZiB0aGUgbGF0Y2gga2V5cworKyAgICAgKiBub3QgdG8gb3ZlcnJpZGUg dGhlIHN0YXRlIG9mIHRoZSAidXMiIGtleW1hcC4KKyAgICAgICovCistICAgIGlmIChwcml2LT5r ZXlfc3lzLnN0YXRlKSB7CistICAgICAgICB4a2Jfc3RhdGVfdXBkYXRlX21hc2sgKHByaXYtPmtl eV9zeXMuc3RhdGUsIG1vZHNfZGVwcmVzc2VkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtb2RzX2xhdGNoZWQsIG1vZHNfbG9ja2VkLCAwLCAwLCBncm91cCk7CisrICAgIGlmICgh cHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fCBrZXlfc2VyaWFsID09IDApIHsKKysgICAg ICAgIGlmIChwcml2LT5rZXlfdXNlci5zdGF0ZSkgeworKyAgICAgICAgICAgIHhrYl9zdGF0ZV91 cGRhdGVfbWFzayAocHJpdi0+a2V5X3VzZXIuc3RhdGUsIG1vZHNfZGVwcmVzc2VkLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19sYXRjaGVkLCBtb2RzX2xvY2tlZCwg MCwgMCwgZ3JvdXApOworKyAgICAgICAgfQorKyAgICAgICAgLyogUHJlc3NpbmcgWEtCIGdyb3Vw IGtleSBsaWtlcyBBbHRfUiB3aXRoIGdycDp0b2dnbGUgY2FsbHMKKysgICAgICAgICAqIGlucHV0 X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMoKSB3aXRoIHRoZSB1cGRhdGVkIGBncm91cGAKKysg ICAgICAgICAqIGFuZCBuZWVkIHRvIHVwZGF0ZSBwcml2LT5rZXlfc3lzLnN0YXRlIHRvIHN3aXRj aCB0aGUgWEtCIGdyb3VwCisrICAgICAgICAgKiBpbiB0aGUgc3lzdGVtIGtleW1hcC4KKysgICAg ICAgICAqCisrICAgICAgICAgKiBYS0IgZ3JvdXAga2V5IGNhbiBzd2l0Y2ggYGdyb3VwYCBidXQg Y2xpY2tpbmcgdGhlIGtleWJvYXJkIGljb24KKysgICAgICAgICAqIG9mIEtERSBkb2VzIG5vdCBj aGFuZ2UgYGdyb3VwYCBhdCBwcmVzZW50LiBNYXliZSBhIGJ1ZyBpbiB0aGUKKysgICAgICAgICAq IEtERSBXYXlsYW5kIGNvbXBvc2l0b3IuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmIChwcml2 LT5rZXlfc3lzLnN0YXRlKSB7CisrICAgICAgICAgICAgeGtiX3N0YXRlX3VwZGF0ZV9tYXNrIChw cml2LT5rZXlfc3lzLnN0YXRlLCBtb2RzX2RlcHJlc3NlZCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1vZHNfbGF0Y2hlZCwgbW9kc19sb2NrZWQsIDAsIDAsIGdyb3VwKTsK KysgICAgICAgIH0KKyAgICAgfQorICAgICBpZiAoYWN0aXZlX2tleS0+c3RhdGUpIHsKKysgICAg ICAgIC8qIENhcHNMb2NrIG5lZWRzIFhLQl9TVEFURV9NT0RTX0xPQ0tFRCAqLworICAgICAgICAg bWFzayA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoYWN0aXZlX2tleS0+c3RhdGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVfREVQUkVTU0VE IHwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9M QVRDSEVEKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9T VEFURV9MQVRDSEVEIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFhLQl9TVEFURV9NT0RTX0xPQ0tFRCk7CisrICAgIH0KKysgICAgaWYgKHByaXYtPnZlcmJvc2Up IHsKKysgICAgICAgIHN0cnVjdCB4a2Jfc3RhdGUgKnN0YXRlID0gYWN0aXZlX2tleS0+c3RhdGU7 CisrICAgICAgICBmcHJpbnRmIChwcml2LT5sb2csICJVcGRhdGUgbW9kaWZpZXJzIHNlcmlhbDol dSBkZXByZXNzOiVYIGxhdGNoOiVYICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJs b2NrOiVYIGdyb3VwOiVYIG9yaWdfZGVwcmU6JVggb3JpZ19sYXRjaDolWCAiCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAib3JpZ19sb2NrOiVYXG4iLAorKyAgICAgICAgICAgICAgICAg a2V5X3NlcmlhbCwgbW9kc19kZXByZXNzZWQsIG1vZHNfbGF0Y2hlZCwgbW9kc19sb2NrZWQsIGdy b3VwLAorKyAgICAgICAgICAgICAgICAgc3RhdGUgPworKyAgICAgICAgICAgICAgICAgICAgIHhr Yl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoc3RhdGUsIFhLQl9TVEFURV9ERVBSRVNTRUQpIDoKKysg ICAgICAgICAgICAgICAgICAgICAweEZGRkZGRkZGLAorKyAgICAgICAgICAgICAgICAgc3RhdGUg PworKyAgICAgICAgICAgICAgICAgICAgIHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoc3RhdGUs IFhLQl9TVEFURV9MQVRDSEVEKSA6CisrICAgICAgICAgICAgICAgICAgICAgMHhGRkZGRkZGRiwK KysgICAgICAgICAgICAgICAgIHN0YXRlID8KKysgICAgICAgICAgICAgICAgICAgICB4a2Jfc3Rh dGVfc2VyaWFsaXplX21vZHMgKHN0YXRlLCBYS0JfU1RBVEVfTU9EU19MT0NLRUQpIDoKKysgICAg ICAgICAgICAgICAgICAgICAweEZGRkZGRkZGKTsKKysgICAgICAgIGZmbHVzaCAocHJpdi0+bG9n KTsKKyAgICAgfQorIAorICAgICBwcml2LT5tb2RpZmllcnMgPSAwOworQEAgLTE4NjMsNiArMjA1 Nyw5IEBAIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHZvaWQgICAgICAgICAgICAg ICAgICAgICAgKmRhdGEsCisgICAgIGlmIChtYXNrICYgYWN0aXZlX2tleS0+bWV0YV9tYXNrKQor ICAgICAgICAgcHJpdi0+bW9kaWZpZXJzIHw9IElCVVNfTUVUQV9NQVNLOworIAorKyAgICBpZiAo IWtleV9zZXJpYWwpCisrICAgICAgICByZXR1cm47CisrCisgICAgIHN3aXRjaCAocHJpdi0+dmVy c2lvbikgeworICAgICBjYXNlIElOUFVUX01FVEhPRF9WMToKKyAgICAgICAgIHp3cF9pbnB1dF9t ZXRob2RfY29udGV4dF92MV9tb2RpZmllcnMgKHByaXYtPmNvbnRleHQsIGtleV9zZXJpYWwsCitA QCAtMjgzNCw2ICszMDMxLDcgQEAgaWJ1c193YXlsYW5kX2ltX2NvbnN0cnVjdG9yIChHVHlwZSAg ICAgICAgICAgICAgICAgIHR5cGUsCisgICAgIElCdXNXYXlsYW5kU2VhdCAqc2VhdCA9IE5VTEw7 CisgICAgIElCdXNFbmdpbmVEZXNjICpkZXNjOworICAgICBzdHJ1Y3QgeGtiX2tleW1hcCAqa2V5 bWFwID0gTlVMTDsKKysgICAgZ2Jvb2xlYW4gaGFzX2tleW1hcCA9IEZBTFNFOworIAorICAgICBv YmplY3QgPSBHX09CSkVDVF9DTEFTUyAoaWJ1c193YXlsYW5kX2ltX3BhcmVudF9jbGFzcyktPmNv bnN0cnVjdG9yICgKKyAgICAgICAgICAgICB0eXBlLCBuX3BhcmFtcywgcGFyYW1zKTsKK0BAIC0y ODgyLDkgKzMwODAsMjEgQEAgaWJ1c193YXlsYW5kX2ltX2NvbnN0cnVjdG9yIChHVHlwZSAgICAg ICAgICAgICAgICAgIHR5cGUsCisgICAgIGRlc2MgPSBpYnVzX2J1c19nZXRfZ2xvYmFsX2VuZ2lu ZSAocHJpdi0+aWJ1c2J1cyk7CisgICAgIGlmIChkZXNjKQorICAgICAgICAga2V5bWFwID0gY3Jl YXRlX3VzZXJfeGtiX2tleW1hcCAocHJpdi0+eGtiX2NvbnRleHQsIGRlc2MpOworLSAgICBpZiAo a2V5bWFwICYmICFpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwICgmcHJpdi0+a2V5 X3VzZXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGtleW1hcCkpIHsKKy0gICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJmtleW1hcCwgeGti X2tleW1hcF91bnJlZik7CisrICAgIGlmIChrZXltYXApIHsKKysgICAgICAgIGhhc19rZXltYXAg PSBpYnVzX3hrYl9rZXltYXBfdXBkYXRlX3dpdGhfa2V5bWFwICgmcHJpdi0+a2V5X3VzZXIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a2V5bWFwKTsKKysgICAgICAgIHhrYl9rZXltYXBfdW5yZWYgKGtleW1hcCk7CisrICAgIH0KKysg ICAgaWYgKHByaXYtPnZlcmJvc2UpIHsKKysgICAgICAgIGlmICghZGVzYykgeworKyAgICAgICAg ICAgIGZwcmludGYgKHByaXYtPmxvZywgIkNvbnN0cnVjdG9yIGhhcyBubyBnbG9iYWwgZW5naW5l XG4iKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgZnByaW50ZiAocHJpdi0+bG9n LCAiQ29uc3RydWN0b3IgZW5naW5lICVzIGtleW1hcDolcyBzdGF0ZTolc1xuIiwKKysgICAgICAg ICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9kZXNjX2dldF9uYW1lIChkZXNjKSwKKysgICAgICAg ICAgICAgICAgICAgICBoYXNfa2V5bWFwID8gIlRSVUUiIDogIkZBTFNFIiwKKysgICAgICAgICAg ICAgICAgICAgICBwcml2LT5rZXlfdXNlci5zdGF0ZSA/ICJUUlVFIiA6ICJGQUxTRSIpOworKyAg ICAgICAgfQorKyAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOworICAgICB9CisgICAgIGlidXNf YnVzX3NldF93YXRjaF9pYnVzX3NpZ25hbCAocHJpdi0+aWJ1c2J1cywgVFJVRSk7CisgICAgIGdf c2lnbmFsX2Nvbm5lY3QgKHByaXYtPmlidXNidXMsICJnbG9iYWwtZW5naW5lLWNoYW5nZWQiLAor LS0gCisyLjU0LjAKKworRnJvbSBkZjgyMzBmZjkwZWMzYWFmZmZlMTBhZjc2OWFkNjZhYTk0OGFj MzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyOSBKdW4gMjAyNiAxMjo1MTowNyArMDkwMAor U3ViamVjdDogW1BBVENIIDIvNV0gY2xpZW50L3dheWxhbmQ6IFJlZmFjdG9yIGlidXNfd2F5bGFu ZF9pbV9wb3N0X2tleSgpCisKK1NlcGFyYXRlIDMgZnVuY3Rpb25zLgorCitGaXhlczogIzI4NjkK K0Nsb3NlczogcmhieiMyNDQ0MDA5CistLS0KKyBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGlt LmMgfCAzNzcgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5n ZWQsIDI0NiBpbnNlcnRpb25zKCspLCAxMzEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9j bGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFu ZGltLmMKK2luZGV4IDk1YjMzMGY4Li5iMTZmZjUyMSAxMDA2NDQKKy0tLSBhL2NsaWVudC93YXls YW5kL2lidXN3YXlsYW5kaW0uYworKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5j CitAQCAtMzY3LDYgKzM2Nyw4MSBAQCBpYnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKElCdXNX YXlsYW5kSU0gKndsaW0sCisgfQorIAorIAorK3N0YXRpYyBnYm9vbGVhbgorK2lidXNfd2F5bGFu ZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5bGFuZElNICAqd2xpbSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgIGtleSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgIG1vZGlmaWVycywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgIHN0YXRlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgICAgc3ltLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5bWFwICAqYWN0aXZlX2tl eSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgIGZp bHRlcmVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tf dCAqbmV3X21vZHNfZGVwcmVzc2VkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnYm9vbGVhbiAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSkKKyt7CisrICAgIElCdXNXYXls YW5kSU1Qcml2YXRlICpwcml2OworKyAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsgODsKKysgICAg dWludDMyX3QgY2g7CisrCisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1dBWUxB TkRfSU0gKHdsaW0pLCBmaWx0ZXJlZCk7CisrICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0 X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOworKworKyAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9B UkRfS0VZX1NUQVRFX1JFTEVBU0VEKQorKyAgICAgICAgcmV0dXJuIGZpbHRlcmVkOworKworKyAg ICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKHN5bSk7CisrICAgIGlmIChjaCA9PSAwIHx8 IGdfdW5pY2hhcl9pc2NudHJsIChjaCkpCisrICAgICAgICBjaCA9IHhrYl9zdGF0ZV9rZXlfZ2V0 X3V0ZjMyIChhY3RpdmVfa2V5LT5zdGF0ZSwgY29kZSk7CisrCisrLyogTm8gdGV4dCB3aXRoIENv bnRyb2wgJiBBbHQgJiBTdXBlciBrZXlzICovCisrI2lmbmRlZiBHREtfV0lORE9XSU5HX1FVQVJU WgorKyMgIGRlZmluZSBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLIChcCisrICAgIElCVVNf Q09OVFJPTF9NQVNLIHwgSUJVU19NT0QxX01BU0sgfCBJQlVTX01PRDRfTUFTSykKKysjZWxzZQor KyMgIGRlZmluZSBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLIChcCisrICAgIElCVVNfQ09O VFJPTF9NQVNLIHwgSUJVU19NT0QyX01BU0sgfCBJQlVTX01PRDRfTUFTSykKKysjZW5kaWYKKysg ICAgaWYgKCghZmlsdGVyZWQgJiYgIShtb2RpZmllcnMgJiBfSUJVU19OT19URVhUX0lOUFVUX01P RF9NQVNLKSAmJgorKyAgICAgICAgICFnX3VuaWNoYXJfaXNjbnRybCAoY2gpKSB8fCBmaWx0ZXJl ZCkgeworKyAgICAgICAgLyogSW4gY2FzZSBgdXNlX3N5c19rZXltYXBgIGlzICVUUlVFLCBJQnVz IGRvZXMgbm90IGNvbW1pdCBBU0NJSSBjaGFycworKyAgICAgICAgICogYnV0IGZvcndhcmRzIHRo ZSBrZXkgZXZlbnRzIHRvIHRoZSBmb2N1c2VkIGFwcGxpY2F0aW9uIGhlcmUuCisrICAgICAgICAg KiBCZWNhdXNlIHNvbWUgYXBwbGljYXRpb25zIHRyZWF0IHRoZSBwcmludGFibGUga2V5cyBhcyBj b250cm9sIGtleXMsCisrICAgICAgICAgKiBFLmcuIGdhbWUgYXBwcyAiaGprbCIgdXNlIHRoZSBj dXJzb3IgbW92ZSBsaWtlIFZJIG1vZGUuCisrICAgICAgICAgKiBVbmZvcnR1bmF0ZWx5IHRoZSBX YXlsYW5kIGlucHV0LW1ldGhvZCBwcm90b2NvbCBkb2VzIG5vdCBwcm92aWRlCisrICAgICAgICAg KiB0aGUgZmFsbGJhY2sgbG9naWMgYWZ0ZXIgYXBwcyBoYW5kbGUgdGhlIGtleSBldmVudHMgbGlr ZSBHVEszLzIKKysgICAgICAgICAqIElNIG1vZHVsZXMuIEJ1dCB0aGUgaW5wdXQtbWV0aG9kIGFs d2F5cyBzaG91bGQgaGFuZGxlIGtleSBldmVudHMKKysgICAgICAgICAqIHByaW9yIHRvIGFwcHMu CisrICAgICAgICAgKi8KKysgICAgICAgIGlmICghZmlsdGVyZWQgJiYgIXByaXYtPnVzZV9zeXNf a2V5bWFwKSB7CisrICAgICAgICAgICAgZ2NoYXIgYnVmZls4XSA9IHsgMCwgfTsKKysgICAgICAg ICAgICBnX3VuaWNoYXJfdG9fdXRmOCAoY2gsIGJ1ZmYpOworKyAgICAgICAgICAgIGlidXNfd2F5 bGFuZF9pbV9jb21taXRfdGV4dCAod2xpbSwgYnVmZik7CisrICAgICAgICAgICAgZmlsdGVyZWQg PSBUUlVFOworKyAgICAgICAgfQorKyAgICAgICAgLyogSWYgYGZpbHRlcmVkYCBpcyAlVFJVRSwg dGhlIGtleXN5bSBjYW4gYmUgZWF0ZW4gZm9yIHRoZSBjb21wb3NlCisrICAgICAgICAgKiBwcmVl ZGl0IGJ5IElCdXMgWEtCIGVuZ2luZS4gRS5nLiBBbHRHci1TaGlmdC1WIGtleSBwcm9kdWNlcwor KyAgICAgICAgICogYExldmVsM19TaGlmdCcgYW5kIGBHcmVla19PTUVHQWAga2V5c3ltIHdpdGgg InVzKHN5bWJvbGljKSIga2V5bWFwLgorKyAgICAgICAgICogSG93ZXZlciBpZiB5b3UgY29uZmln dXJlIG11bHRpcGxlIGtleW1hcHMsIEFsdEdyLVNoaWZ0IG1heSBwcm9kdWNlCisrICAgICAgICAg KiB0aGUga2V5bWFwIHN3aXRjaCBhbHRob3VnaCBBbHRHci1TaGlmdC1WIHByb2R1Y2VzIGBHcmVl a19PTUVHQWAuCisrICAgICAgICAgKiBJJ20gbm90IGNsYXJpZmllZCB3aXRoICJsZXZlbDMocmFs dF9zd2l0Y2gpIiBpbiB1cyBYS0Iga2V5bWFwcy4KKysgICAgICAgICAqLworKyAgICAgICAgaWYg KG1vZGlmaWVycyAmIElCVVNfTU9EM19NQVNLKSB7CisrICAgICAgICAgICAgaWYgKG5ld19tb2Rz X2RlcHJlc3NlZCkKKysgICAgICAgICAgICAgICAgKm5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0 aXZlX2tleS0+bW9kM19tYXNrOworKyAgICAgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0YXRl KQorKyAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7CisrICAgICAg ICB9CisrICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0Q1X01BU0spIHsKKysgICAgICAg ICAgICBpZiAobmV3X21vZHNfZGVwcmVzc2VkKQorKyAgICAgICAgICAgICAgICAqbmV3X21vZHNf ZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5tb2Q1X21hc2s7CisrICAgICAgICAgICAgaWYgKGNs ZWFyX3ZpcnR1YWxfc3RhdGUpCisrICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRl ID0gVFJVRTsKKysgICAgICAgIH0KKysgICAgfQorKyN1bmRlZiBfSUJVU19OT19URVhUX0lOUFVU X01PRF9NQVNLCisrICAgIHJldHVybiBmaWx0ZXJlZDsKKyt9CisrCisrCisgc3RhdGljIHZvaWQK KyBpYnVzX3dheWxhbmRfaW1fa2V5IChJQnVzV2F5bGFuZElNICp3bGltLAorICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90ICAgICAgIGtleV9zZXJpYWwsCitAQCAtNDMxLDYgKzUwNiwxNTIg QEAgaWJ1c193YXlsYW5kX2ltX2tleXN5bSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKKyB9CisgCisg CisrLyoqCisrICogaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZDoKKysg KgorKyAqIElmIHRoZSBJQnVzIGtleW1hcCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29tcG9zaXRv ciBrZXltYXAsCisrICogSUJ1cyBuZWVkcyB0byBtYWludGFpbiB0aGUgbW9kaWZpZXJzIHN0YXRl IGJ5IGl0c2VsZiB0byBjYWxsCisrICogeGtiX3N0YXRlX3VwZGF0ZV9tYXNrKCksIEUuZy4gSUJ1 cyBrZXltYXAgaXMgImx2KHRpbGRlKSIgYW5kIHRoZSBzeXN0ZW0KKysgKiBvbmUgaXMgInVzIiwg YmVjYXVzZSBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzKCkKKysgKiBpcyBub3QgY2Fs bGVkIGJ5IHRoZSBXYXlsYW5kIGNvbXBvc2l0b3IgaW4gdGhhdCBjYXNlLgorKyAqIFNvIHRoaXMg QVBJIHVwZGF0ZXMgQG1vZHNfZGVwcmVzc2VkIHdpdGggSVNPIGxldmVsMyBhbmQgbGV2ZWw1Cisr ICogbGF0Y2ggYW5kIHNoaWZ0IHN0YXRlcywgYW5kIHNlbmQgaXQgdG8KKysgKiBpYnVzX3dheWxh bmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlKCkuCisrICovCisrc3RhdGljIGdib29sZWFu CisraWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJ TSAgKndsaW0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgICAgICAgIGtleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MzJfdCAgICAgICAgbW9kaWZpZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICBzdGF0ZSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2Jfa2V5c3ltX3QgICAgc3ltLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNYa2JLZXltYXAgICphY3Rp dmVfa2V5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s ZWFuICAgICAgICBmaWx0ZXJlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB4a2JfbW9kX21hc2tfdCAqbW9kc19kZXByZXNzZWQpCisreworKyAgICBJQnVzV2F5 bGFuZElNUHJpdmF0ZSAqcHJpdjsKKysgICAgdWludDMyX3QgY29kZSA9IGtleSArIDg7CisrICAg IHhrYl9tb2RfbWFza190IG5ld19tb2RzX2RlcHJlc3NlZDsKKysgICAgeGtiX2tleXN5bV90IHN5 c3RlbV9zeW0gPSBzeW07CisrCisrICAgIGlmIChmaWx0ZXJlZCkKKysgICAgICAgIHJldHVybiBm aWx0ZXJlZDsKKysKKysgICAgZ19hc3NlcnQgKElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSkpOwor KyAgICBnX2Fzc2VydCAoYWN0aXZlX2tleSk7CisrICAgIGdfYXNzZXJ0IChtb2RzX2RlcHJlc3Nl ZCk7CisrCisrICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUg KHdsaW0pOworKyAgICBuZXdfbW9kc19kZXByZXNzZWQgPSAqbW9kc19kZXByZXNzZWQ7CisrCisr ICAgIGlmICgobW9kaWZpZXJzICYgfklCVVNfUkVMRUFTRV9NQVNLICkgIT0gbmV3X21vZHNfZGVw cmVzc2VkKSB7CisrICAgICAgICBnX3dhcm5pbmcgKCJJQnVzIG1vZGlmaWVycyAlWCBpcyBkaWZm ZXJlbnQgZnJvbSBYS0IgZGVwcmVzc2VkICVYIiwKKysgICAgICAgICAgICAgICAgICAgbW9kaWZp ZXJzLCBuZXdfbW9kc19kZXByZXNzZWQpOworKyAgICB9CisrICAgIGlmIChwcml2LT5rZXlfc3lz LnN0YXRlKQorKyAgICAgICAgc3lzdGVtX3N5bSA9IHhrYl9zdGF0ZV9rZXlfZ2V0X29uZV9zeW0g KHByaXYtPmtleV9zeXMuc3RhdGUsIGNvZGUpOworKyAgICBzd2l0Y2ggKHN5bSkgeworKyAgICBj YXNlIElCVVNfS0VZX0lTT19MZXZlbDJfTGF0Y2g6CisrICAgICAgICBmaWx0ZXJlZCA9IFRSVUU7 CisrICAgICAgICBicmVhazsKKysgICAgLyogTGV2ZWwzX2xhdGNoIGlzIGNhdXNlZCBieSBUTERF IGtleSBpbiBsdih0aWxkZSkga2V5bWFwLgorKyAgICAgKiBMZXZlbDNfU2hpZnQgaXMgY2F1c2Vk IGJ5IEFsdCBrZXkgaW4gbHYodGlsZGUpIGtleW1hcC4KKysgICAgICovCisrICAgIGNhc2UgSUJV U19LRVlfSVNPX0xldmVsM19MYXRjaDoKKysgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwzX1No aWZ0OgorKyAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVTU0VE KSB7CisrICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1vZDVf bWFzazsKKysgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCisrICAgICAgICAgICAg ICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVFOworKyAgICAgICAgICAgIGZp bHRlcmVkID0gVFJVRTsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworKyAgICAvKiBMZXZl bDVfTGF0Y2ggaXMgY2F1c2VkIGJ5IFNoaWZ0K0FsdCBrZXkgaW4gZGUoVDMpIGtleW1hcC4KKysg ICAgICovCisrICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKKysgICAgY2FzZSBJ QlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0OgorKyAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJP QVJEX0tFWV9TVEFURV9QUkVTU0VEKSB7CisrICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2Vk IHw9IGFjdGl2ZV9rZXktPm1vZDNfbWFzazsKKysgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3Rl bV9zeW0pCisrICAgICAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBU UlVFOworKyAgICAgICAgICAgIGZpbHRlcmVkID0gVFJVRTsKKysgICAgICAgIH0KKysgICAgICAg IGJyZWFrOworKyAgICBjYXNlIElCVVNfS0VZX1NoaWZ0X0w6CisrICAgIGNhc2UgSUJVU19LRVlf U2hpZnRfUjoKKysgICAgICAgIGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJF U1NFRCkKKysgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+c2hp ZnRfbWFzazsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQg Jj0gfmFjdGl2ZV9rZXktPnNoaWZ0X21hc2s7CisrICAgICAgICBicmVhazsKKysgICAgZGVmYXVs dDo7CisrICAgIH0KKysjaWZkZWYgSUJVU19MT0dfU0hPV19LRVlTWU0KKysgICAgaWYgKHByaXYt PnZlcmJvc2UpIHsKKysgICAgICAgIGZwcmludGYgKHByaXYtPmxvZywgIiVzIGtleToldSBzeW06 JXggc3lzdGVtX3N5bToleCBtb2RpZmllcnM6JXggIgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAic3RhdGU6JXMgZmlsdGVyZWQ6JWRcbiIsCisrICAgICAgICAgICAgICAgICBHX1NUUkZV TkMsCisrICAgICAgICAgICAgICAgICBrZXksIHN5bSwgc3lzdGVtX3N5bSwgbW9kaWZpZXJzLCBz dGF0ZSA/ICJwcmVzcyIgOiAicmVsZWFzZSIsCisrICAgICAgICAgICAgICAgICBmaWx0ZXJlZCk7 CisrICAgICAgICBmZmx1c2ggKHByaXYtPmxvZyk7CisrICAgIH0KKysjZW5kaWYKKysgICAgKm1v ZHNfZGVwcmVzc2VkID0gbmV3X21vZHNfZGVwcmVzc2VkOworKyAgICByZXR1cm4gZmlsdGVyZWQ7 CisrfQorKworKworKy8qKgorKyAqIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF94a2Jf c3RhdGU6CisrICoKKysgKiBVcGRhdGUgdmlydHVhbCBJQnVzIHhrYl9zdGF0ZSBieSBLZXlQcmVz cyBhbmQgS2V5UmVsZWFzZS4KKysgKi8KKytzdGF0aWMgdm9pZAorK2lidXNfd2F5bGFuZF9pbV91 cGRhdGVfdmlydHVhbF94a2Jfc3RhdGUgKElCdXNXYXlsYW5kSU0gKndsaW0sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAga2V5LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgIHN0 YXRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNYa2JL ZXltYXAgKmFjdGl2ZV9rZXksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeGtiX21vZF9tYXNrX3QgbW9kc19kZXByZXNzZWQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgbmV3X21vZHNfZGVwcmVzc2Vk LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAg ICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUpCisreworKyAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAq cHJpdjsKKysgICAgdWludDMyX3QgY29kZSA9IGtleSArIDg7CisrICAgIHhrYl9tb2RfbWFza190 IG1vZHNfbG9ja2VkOworKyAgICB4a2JfbGF5b3V0X2luZGV4X3QgIGdyb3VwID0gMDsKKysKKysg ICAgZ19hc3NlcnQgKElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSkpOworKworKyAgICBwcml2ID0g aWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKKysgICAgbW9kc19s b2NrZWQgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKGFjdGl2ZV9rZXktPnN0YXRlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX01PRFNf TE9DS0VEKTsKKysgICAgLyogWEtCIGdyb3VwIGxheW91dCBpcyBjb25maWd1cmVkIGluIHRoZSBz eXN0ZW0ga2V5bWFwIGJ1dCBub3QgdGhlCisrICAgICAqIHVzZXIga2V5bWFwIHdoaWNoIGFsd2F5 cyBpbmNsdWRlcyBhIHNpbmdsZSBsYXlvdXQuCisrICAgICAqLworKyAgICBpZiAocHJpdi0+a2V5 X3N5cy5zdGF0ZSkgeworKyAgICAgICAgZ3JvdXAgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX2xheW91 dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhLQl9TVEFURV9MQVlPVVRfTE9DS0VEKTsKKysgICAgfQorKworKyAgICBp ZiAocHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSkgeworKyAgICAgICAgaWYgKG5ld19tb2Rz X2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJlc3NlZCkgeworKyAgICAgICAgICAgIGlucHV0X21ldGhv ZF9rZXlib2FyZF9tb2RpZmllcnMgKHdsaW0sIE5VTEwsIDAsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kc19sb2NrZWQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXApOworKyAgICAgICAgfQorKyAg ICAgICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpCisrICAgICAgICAgICAgcHJpdi0+aXNfdmly dHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOworKyAgICB9CisrICAgIGlmICghcHJpdi0+aXNfdmly dHVhbF9sYXRjaF9zdGF0ZSB8fAorKyAgICAgICAgKHN0YXRlICE9IFdMX0tFWUJPQVJEX0tFWV9T VEFURV9SRUxFQVNFRCkpIHsKKysgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfa2V5IChhY3RpdmVf a2V5LT5zdGF0ZSwgY29kZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUg PT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JFTEVBU0VEKQorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID8gWEtCX0tFWV9VUCA6IFhLQl9LRVlfRE9XTik7CisrICAgIH0KKyt9CisrCisr Cisgc3RhdGljIHZvaWQKKyBfY29udGV4dF9jb21taXRfdGV4dF9jYiAoSUJ1c0lucHV0Q29udGV4 dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICAq dGV4dCwKK0BAIC0xMjg3LDEyICsxNTA4LDcgQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5IChJ QnVzV2F5bGFuZElNICp3bGltLAorIHsKKyAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7 CisgICAgIElCdXNYa2JLZXltYXAgKmFjdGl2ZV9rZXk7CistICAgIHhrYl9tb2RfbWFza190IG1v ZHNfZGVwcmVzc2VkID0gMCwgbmV3X21vZHNfZGVwcmVzc2VkID0gMDsKKy0gICAgeGtiX21vZF9t YXNrX3QgbW9kc19sb2NrZWQ7CistICAgIHhrYl9sYXlvdXRfaW5kZXhfdCAgZ3JvdXAgPSAwOwor LSAgICB4a2Jfa2V5c3ltX3Qgc3lzdGVtX3N5bSA9IHN5bTsKKy0gICAgdWludDMyX3QgY29kZSA9 IGtleSArIDg7CistICAgIHVpbnQzMl90IGNoOworKyAgICB4a2JfbW9kX21hc2tfdCBtb2RzX2Rl cHJlc3NlZCwgbmV3X21vZHNfZGVwcmVzc2VkOworICAgICBnYm9vbGVhbiBjbGVhcl92aXJ0dWFs X3N0YXRlID0gRkFMU0U7CisgCisgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX1dB WUxBTkRfSU0gKHdsaW0pLCBGQUxTRSk7CitAQCAtMTMyMSwxMzEgKzE1MzcsMzAgQEAgaWJ1c193 YXlsYW5kX2ltX3Bvc3Rfa2V5IChJQnVzV2F5bGFuZElNICp3bGltLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0RFUFJFU1NFRCB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RBVEVf TEFUQ0hFRCk7CisgICAgIG5ld19tb2RzX2RlcHJlc3NlZCA9IG1vZHNfZGVwcmVzc2VkOworLSAg ICBtb2RzX2xvY2tlZCA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoYWN0aXZlX2tleS0+c3Rh dGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RB VEVfTU9EU19MT0NLRUQpOworLSAgICAvKiBYS0IgZ3JvdXAgbGF5b3V0IGlzIGNvbmZpZ3VyZWQg aW4gdGhlIHN5c3RlbSBrZXltYXAgYnV0IG5vdCB0aGUKKy0gICAgICogdXNlciBrZXltYXAgd2hp Y2ggYWx3YXlzIGluY2x1ZGVzIGEgc2luZ2xlIGxheW91dC4KKy0gICAgICovCistICAgIGlmIChw cml2LT5rZXlfc3lzLnN0YXRlKSB7CistICAgICAgICBncm91cCA9IHhrYl9zdGF0ZV9zZXJpYWxp emVfbGF5b3V0IChwcml2LT5rZXlfc3lzLnN0YXRlLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xBWU9VVF9MT0NLRUQpOworLSAgICB9Cist ICAgIGlmICghZmlsdGVyZWQpIHsKKy0gICAgICAgIGlmIChwcml2LT5rZXlfc3lzLnN0YXRlKQor LSAgICAgICAgICAgIHN5c3RlbV9zeW0gPSB4a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2 LT5rZXlfc3lzLnN0YXRlLCBjb2RlKTsKKy0gICAgICAgIHN3aXRjaCAoc3ltKSB7CistICAgICAg ICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDJfTGF0Y2g6CistICAgICAgICAgICAgZmlsdGVyZWQg PSBUUlVFOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgLyogTGV2ZWwzX2xhdGNoIGlz IGNhdXNlZCBieSBUTERFIGtleSBpbiBsdih0aWxkZSkga2V5bWFwLgorLSAgICAgICAgICogTGV2 ZWwzX1NoaWZ0IGlzIGNhdXNlZCBieSBBbHQga2V5IGluIGx2KHRpbGRlKSBrZXltYXAuCistICAg ICAgICAgKi8KKy0gICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKKy0gICAg ICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19TaGlmdDoKKy0gICAgICAgICAgICBpZiAoc3Rh dGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BSRVNTRUQpIHsKKy0gICAgICAgICAgICAgICAg bmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKKy0gICAgICAgICAg ICAgICAgaWYgKHN5bSAhPSBzeXN0ZW1fc3ltKQorLSAgICAgICAgICAgICAgICAgICAgcHJpdi0+ aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IFRSVUU7CistICAgICAgICAgICAgICAgIGZpbHRlcmVk ID0gVFJVRTsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAv KiBMZXZlbDVfTGF0Y2ggaXMgY2F1c2VkIGJ5IFNoaWZ0K0FsdCBrZXkgaW4gZGUoVDMpIGtleW1h cC4KKy0gICAgICAgICAqLworLSAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X0xhdGNo OgorLSAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWw1X1NoaWZ0OgorLSAgICAgICAgICAg IGlmIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUFJFU1NFRCkgeworLSAgICAgICAg ICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kM19tYXNrOworLSAg ICAgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCistICAgICAgICAgICAgICAgICAg ICBwcml2LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gVFJVRTsKKy0gICAgICAgICAgICAgICAg ZmlsdGVyZWQgPSBUUlVFOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBicmVhazsKKy0g ICAgICAgIGNhc2UgSUJVU19LRVlfU2hpZnRfTDoKKy0gICAgICAgIGNhc2UgSUJVU19LRVlfU2hp ZnRfUjoKKy0gICAgICAgICAgICBpZiAoc3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BS RVNTRUQpCistICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5 LT5zaGlmdF9tYXNrOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgbmV3X21v ZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5zaGlmdF9tYXNrOworLSAgICAgICAgICAgIGJy ZWFrOworLSAgICAgICAgZGVmYXVsdDo7CistICAgICAgICB9CistI2lmZGVmIElCVVNfTE9HX1NI T1dfS0VZU1lNCistICAgICAgICBpZiAocHJpdi0+dmVyYm9zZSkgeworLSAgICAgICAgICAgIGZw cmludGYgKHByaXYtPmxvZywgIiVzIGtleToldSBzeW06JXggc3lzdGVtX3N5bToleCBtb2RpZmll cnM6JXggIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXRlOiVzIGZpbHRl cmVkOiVkXG4iLAorLSAgICAgICAgICAgICAgICAgICAgIEdfU1RSRlVOQywKKy0gICAgICAgICAg ICAgICAgICAgICBrZXksIHN5bSwgc3lzdGVtX3N5bSwgbW9kaWZpZXJzLAorLSAgICAgICAgICAg ICAgICAgICAgIHN0YXRlID8gInByZXNzIiA6ICJyZWxlYXNlIiwKKy0gICAgICAgICAgICAgICAg ICAgICBmaWx0ZXJlZCk7CistICAgICAgICAgICAgZmZsdXNoIChwcml2LT5sb2cpOworLSAgICAg ICAgfQorLSNlbmRpZgorLSAgICB9CistICAgIGlmIChzdGF0ZSAhPSBXTF9LRVlCT0FSRF9LRVlf U1RBVEVfUkVMRUFTRUQpIHsKKy0gICAgICAgIGNoID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAo c3ltKTsKKy0gICAgICAgIGlmIChjaCA9PSAwIHx8IGdfdW5pY2hhcl9pc2NudHJsIChjaCkpCist ICAgICAgICAgICAgY2ggPSB4a2Jfc3RhdGVfa2V5X2dldF91dGYzMiAoYWN0aXZlX2tleS0+c3Rh dGUsIGNvZGUpOworLS8qIE5vIHRleHQgd2l0aCBDb250cm9sICYgQWx0ICYgU3VwZXIga2V5cyAq LworLSNpZm5kZWYgR0RLX1dJTkRPV0lOR19RVUFSVFoKKy0jICBkZWZpbmUgX0lCVVNfTk9fVEVY VF9JTlBVVF9NT0RfTUFTSyAoXAorLSAgICBJQlVTX0NPTlRST0xfTUFTSyB8IElCVVNfTU9EMV9N QVNLIHwgSUJVU19NT0Q0X01BU0spCistI2Vsc2UKKy0jICBkZWZpbmUgX0lCVVNfTk9fVEVYVF9J TlBVVF9NT0RfTUFTSyAoXAorLSAgICBJQlVTX0NPTlRST0xfTUFTSyB8IElCVVNfTU9EMl9NQVNL IHwgSUJVU19NT0Q0X01BU0spCistI2VuZGlmCistICAgICAgICBpZiAoKCFmaWx0ZXJlZCAmJiAh KG1vZGlmaWVycyAmIF9JQlVTX05PX1RFWFRfSU5QVVRfTU9EX01BU0spICYmCistICAgICAgICAg ICAgICFnX3VuaWNoYXJfaXNjbnRybCAoY2gpKSB8fCBmaWx0ZXJlZCkgeworLSAgICAgICAgLyog SW4gY2FzZSBgdXNlX3N5c19rZXltYXBgIGlzICVUUlVFLCBJQnVzIGRvZXMgbm90IGNvbW1pdCBB U0NJSSBjaGFycworLSAgICAgICAgICogYnV0IGZvcndhcmRzIHRoZSBrZXkgZXZlbnRzIHRvIHRo ZSBmb2N1c2VkIGFwcGxpY2F0aW9uIGhlcmUuCistICAgICAgICAgKiBCZWNhdXNlIHNvbWUgYXBw bGljYXRpb25zIHRyZWF0IHRoZSBwcmludGFibGUga2V5cyBhcyBjb250cm9sIGtleXMsCistICAg ICAgICAgKiBFLmcuIGdhbWUgYXBwcyAiaGprbCIgdXNlIHRoZSBjdXJzb3IgbW92ZSBsaWtlIFZJ IG1vZGUuCistICAgICAgICAgKiBVbmZvcnR1bmF0ZWx5IHRoZSBXYXlsYW5kIGlucHV0LW1ldGhv ZCBwcm90b2NvbCBkb2VzIG5vdCBwcm92aWRlCistICAgICAgICAgKiB0aGUgZmFsbGJhY2sgbG9n aWMgYWZ0ZXIgYXBwcyBoYW5kbGUgdGhlIGtleSBldmVudHMgbGlrZSBHVEszLzIKKy0gICAgICAg ICAqIElNIG1vZHVsZXMuIEJ1dCB0aGUgaW5wdXQtbWV0aG9kIGFsd2F5cyBzaG91bGQgaGFuZGxl IGtleSBldmVudHMKKy0gICAgICAgICAqIHByaW9yIHRvIGFwcHMuCistICAgICAgICAgKi8KKy0g ICAgICAgICAgICBpZiAoIWZpbHRlcmVkICYmICFwcml2LT51c2Vfc3lzX2tleW1hcCkgeworLSAg ICAgICAgICAgICAgICBnY2hhciBidWZmWzhdID0geyAwLCB9OworLSAgICAgICAgICAgICAgICBn X3VuaWNoYXJfdG9fdXRmOCAoY2gsIGJ1ZmYpOworLSAgICAgICAgICAgICAgICBpYnVzX3dheWxh bmRfaW1fY29tbWl0X3RleHQgKHdsaW0sIGJ1ZmYpOworLSAgICAgICAgICAgICAgICBmaWx0ZXJl ZCA9IFRSVUU7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIC8qIElmIGBmaWx0ZXJlZGAg aXMgJVRSVUUsIHRoZSBrZXlzeW0gY2FuIGJlIGVhdGVuIGZvciB0aGUgY29tcG9zZQorLSAgICAg ICAgICAgICAqIHByZWVkaXQgYnkgSUJ1cyBYS0IgZW5naW5lLiBFLmcuIEFsdEdyLVNoaWZ0LVYg a2V5IHByb2R1Y2VzCistICAgICAgICAgICAgICogYExldmVsM19TaGlmdCcgYW5kIGBHcmVla19P TUVHQWAga2V5c3ltIHdpdGggInVzKHN5bWJvbGljKSIKKy0gICAgICAgICAgICAgKiBrZXltYXAu IEhvd2V2ZXIgaWYgeW91IGNvbmZpZ3VyZSBtdWx0aXBsZSBrZXltYXBzLCBBbHRHci1TaGlmdAor LSAgICAgICAgICAgICAqIG1heSBwcm9kdWNlIHRoZSBrZXltYXAgc3dpdGNoIGFsdGhvdWdoIEFs dEdyLVNoaWZ0LVYgcHJvZHVjZXMKKy0gICAgICAgICAgICAgKiBgR3JlZWtfT01FR0FgLgorLSAg ICAgICAgICAgICAqIEknbSBub3QgY2xhcmlmaWVkIHdpdGggImxldmVsMyhyYWx0X3N3aXRjaCki IGluIHVzIFhLQiBrZXltYXBzLgorLSAgICAgICAgICAgICAqLworLSAgICAgICAgICAgIGlmICht b2RpZmllcnMgJiBJQlVTX01PRDNfTUFTSykgeworLSAgICAgICAgICAgICAgICBuZXdfbW9kc19k ZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDNfbWFzazsKKy0gICAgICAgICAgICAgICAgY2xl YXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlm IChtb2RpZmllcnMgJiBJQlVTX01PRDVfTUFTSykgeworLSAgICAgICAgICAgICAgICBuZXdfbW9k c19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDVfbWFzazsKKy0gICAgICAgICAgICAgICAg Y2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7CistICAgICAgICAgICAgfQorLSAgICAgICAgfQor LSN1bmRlZiBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLCistICAgIH0KKy0gICAgaWYgKHBy aXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUpIHsKKy0gICAgICAgIGlmIChuZXdfbW9kc19kZXBy ZXNzZWQgIT0gbW9kc19kZXByZXNzZWQpIHsKKy0gICAgICAgICAgICBpbnB1dF9tZXRob2Rfa2V5 Ym9hcmRfbW9kaWZpZXJzICh3bGltLCBOVUxMLCAwLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHNfbG9ja2VkLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwKTsKKy0gICAgICAgIH0KKy0gICAgICAg IGlmIChjbGVhcl92aXJ0dWFsX3N0YXRlKQorLSAgICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxf bGF0Y2hfc3RhdGUgPSBGQUxTRTsKKy0gICAgfQorLSAgICBpZiAoIXByaXYtPmlzX3ZpcnR1YWxf bGF0Y2hfc3RhdGUgfHwKKy0gICAgICAgIChzdGF0ZSAhPSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVf UkVMRUFTRUQpKSB7CistICAgICAgICB4a2Jfc3RhdGVfdXBkYXRlX2tleSAoYWN0aXZlX2tleS0+ c3RhdGUsIGNvZGUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlID09IFdM X0tFWUJPQVJEX0tFWV9TVEFURV9SRUxFQVNFRCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA/IFhLQl9LRVlfVVAgOiBYS0JfS0VZX0RPV04pOworLSAgICB9CisrICAgIGZpbHRlcmVk ID0gaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAod2xpbSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbW9kaWZpZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN5bSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfa2V5LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZuZXdfbW9kc19kZXByZXNzZWQpOworKyAgICBmaWx0ZXJlZCA9IGlidXNfd2F5bGFuZF9pbV9j b21taXRfa2V5X2V2ZW50ICh3bGltLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBrZXksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1vZGlmaWVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN5bSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWN0aXZlX2tleSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfbW9kc19kZXByZXNzZWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbGVhcl92aXJ0 dWFsX3N0YXRlKTsKKysgICAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX3hrYl9zdGF0 ZSAod2xpbSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg a2V5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZl X2tleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k c19kZXByZXNzZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ld19tb2RzX2RlcHJlc3NlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2xlYXJfdmlydHVhbF9zdGF0ZSk7CisgICAgIHJldHVybiBmaWx0ZXJl ZDsKKyB9CisgCistLSAKKzIuNTQuMAorCitGcm9tIDA1NmIzZTU5Y2M5MWJkZDk3ZWZjOGIyODg2 MGJmMjFlMzY0MTZhZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE3IEp1biAyMDI2IDE5OjUx OjA4ICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMy81XSBjbGllbnQvd2F5bGFuZDogUmVmYWN0b3Ig SVNPX0xldmVsWzN8NV1fU2hpZnQgc3RhdGUKKworVGhlIHN0YXRlcyBvZiBJU08gU2hpZnQga2V5 cyBzaG91bGQgYmUgY2xlYXJlZCB3aGVuIHRoZSBrZXkgaXMgcmVsZWFzZWQKK2FnYWluc3QgSVNP IExhdGNoIGtleXMuIEUuZy4gIlJBTFQiIGtleSBpbiAibHYodGlsZGUpIiBrZXltYXAuCisKK1Ro ZSBzdGF0ZSBvZiB0aGUgIlJBTFQiIGtleSBpcyBzdHJhbmdlIGluICJkZShUMykiIGtleW1hcCwg aS5lLgorIklTT19MZXZlbDNfU2hpZnQiIGtleXN5bSBmb3IgdGhlIGtleXByZXNzIGFuZCBJU09f TGV2ZWw1X0xhdGNoIGtleXNtCitmb3Iga2V5cmVsZWFzZSBhbmQgSUJ1cyBjb3VsZCBub3QgZ2V0 IHRoZSBjb3JyZWN0IGRlYWQga2V5cyBhbmQKK2NsZWFyIHRoZSBzdGF0ZS4gTm93IHRoZSAiaXNf cHJlc3NlZF9tb2Q1IiBmbGFnIGNoZWNrcyBpZiB0aGUKK2tleSBpcyBwcmVzc2VkIGFuZCBhZGQg YSB3b3JrYXJvdW5kLgorCitGaXhlczogIzI4NjkKK0Nsb3NlczogcmhieiMyNDQ0MDA5CistLS0K KyBjbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAxMzkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCAxMiBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0u YyBiL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYworaW5kZXggYjE2ZmY1MjEuLjk3ZTNj ZTM4IDEwMDY0NAorLS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCisrKysgYi9j bGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKK0BAIC02NCw2ICs2NCwxMyBAQCB0eXBlZGVm IGVudW0KKyAgICAgSU5QVVRfTUVUSE9EX1YyLAorIH0gSU1Qcm90b2NvbFZlcnNpb247CisgCisr dHlwZWRlZiBlbnVtIHsKKysgICAgSUJVU19LRVlfSVNPX0xFVkVMX0lOVkFMSUQsCisrICAgIElC VVNfS0VZX0lTT19MRVZFTF8yLAorKyAgICBJQlVTX0tFWV9JU09fTEVWRUxfMywKKysgICAgSUJV U19LRVlfSVNPX0xFVkVMXzUKKyt9IElCdXNLZXlJc29MZXZlbFZhbHVlOworKworIHN0cnVjdCB6 d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdW5pb24geworICAgICB1bmlvbiB7CisgICAgICAgICBz dHJ1Y3QgendwX2lucHV0X21ldGhvZF9jb250ZXh0X3YxICpjb250ZXh0X3YxOworQEAgLTE2Myw2 ICsxNzAsOCBAQCBzdHJ1Y3QgX0lCdXNXYXlsYW5kSU1Qcml2YXRlCisgCisgICAgIElCdXNYa2JL ZXltYXAga2V5X3VzZXI7CisgICAgIElCdXNYa2JLZXltYXAga2V5X3N5czsKKysgICAgZ2Jvb2xl YW4gaXNfcHJlc3NlZF9tb2QzOworKyAgICBnYm9vbGVhbiBpc19wcmVzc2VkX21vZDU7CisgCisg ICAgIHVpbnQzMl90IGltX3NlcmlhbDsKKyAgICAgaW50MzJfdCByZXBlYXRfcmF0ZTsKK0BAIC0z NDEsNiArMzUwLDI4IEBAIGlidXNfd2F5bGFuZF9zb3VyY2VfbmV3IChzdHJ1Y3Qgd2xfZGlzcGxh eSAqZGlzcGxheSkKKyB9CisgCisgCisrc3RhdGljIHZvaWQKKytpYnVzX3dheWxhbmRfaW1fcmVz ZXRfbW9kaWZpZXJzIChJQnVzV2F5bGFuZElNICp3bGltKQorK3sKKysgICAgSUJ1c1dheWxhbmRJ TVByaXZhdGUgKnByaXY7CisrICAgIHhrYl9sYXlvdXRfaW5kZXhfdCAgZ3JvdXAgPSAwOworKwor KyAgICBnX2Fzc2VydCAoSUJVU19JU19XQVlMQU5EX0lNICh3bGltKSk7CisrCisrICAgIHByaXYg PSBpYnVzX3dheWxhbmRfaW1fZ2V0X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOworKyAgICBwcml2 LT5pc192aXJ0dWFsX2xhdGNoX3N0YXRlID0gRkFMU0U7CisrICAgIHByaXYtPmlzX3ByZXNzZWRf bW9kMyA9IEZBTFNFOworKyAgICBwcml2LT5pc19wcmVzc2VkX21vZDUgPSBGQUxTRTsKKysgICAg aWYgKHByaXYtPmtleV91c2VyLnN0YXRlICYmIHByaXYtPmtleV9zeXMuc3RhdGUpIHsKKysgICAg ICAgIGdyb3VwID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9sYXlvdXQgKHByaXYtPmtleV9zeXMuc3Rh dGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYS0JfU1RB VEVfTEFZT1VUX0xPQ0tFRCk7CisrICAgICAgICBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZp ZXJzICh3bGltLCBOVUxMLCAwLCAwLCAwLCAwLCBncm91cCk7CisrICAgIH0gZWxzZSB7CisrICAg ICAgICBwcml2LT5tb2RpZmllcnMgPSAwOworKyAgICB9CisrfQorKworKworIHN0YXRpYyB2b2lk CisgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF90ZXh0IChJQnVzV2F5bGFuZElNICp3bGltLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAqc3RyKQorQEAgLTUyNiw3 ICs1NTcsOCBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVz V2F5bGFuZElNICAqd2xpbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4a2Jfa2V5c3ltX3QgICAgc3ltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCdXNYa2JLZXltYXAgICphY3RpdmVfa2V5LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBmaWx0ZXJlZCwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCAq bW9kc19kZXByZXNzZWQpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeGtiX21vZF9tYXNrX3QgKm1vZHNfZGVwcmVzc2VkLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRl KQorIHsKKyAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7CisgICAgIHVpbnQzMl90IGNv ZGUgPSBrZXkgKyA4OworQEAgLTUzOSw2ICs1NzEsNyBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRl X3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKKyAgICAgZ19hc3NlcnQg KElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSkpOworICAgICBnX2Fzc2VydCAoYWN0aXZlX2tleSk7 CisgICAgIGdfYXNzZXJ0IChtb2RzX2RlcHJlc3NlZCk7CisrICAgIGdfYXNzZXJ0IChjbGVhcl92 aXJ0dWFsX3N0YXRlKTsKKyAKKyAgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFu Y2VfcHJpdmF0ZSAod2xpbSk7CisgICAgIG5ld19tb2RzX2RlcHJlc3NlZCA9ICptb2RzX2RlcHJl c3NlZDsKK0BAIC01NTUsMjUgKzU4OCw4NyBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1 YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKKyAgICAgICAgIGJyZWFrOworICAg ICAvKiBMZXZlbDNfbGF0Y2ggaXMgY2F1c2VkIGJ5IFRMREUga2V5IGluIGx2KHRpbGRlKSBrZXlt YXAuCisgICAgICAqIExldmVsM19TaGlmdCBpcyBjYXVzZWQgYnkgQWx0IGtleSBpbiBsdih0aWxk ZSkga2V5bWFwLgorKyAgICAgKiBMZXZlbDVfTGF0Y2ggaXMgY2F1c2VkIGJ5IFNoaWZ0K0FsdCBr ZXkgaW4gZGUoVDMpIGtleW1hcC4KKyAgICAgICovCisgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xl dmVsM19MYXRjaDoKKyAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0OgorLSAgICAg ICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFURV9QUkVTU0VEKSB7CistICAgICAg ICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKKy0gICAg ICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCistICAgICAgICAgICAgICAgIHByaXYtPmlz X3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVFOworLSAgICAgICAgICAgIGZpbHRlcmVkID0gVFJV RTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworLSAgICAvKiBMZXZlbDVfTGF0Y2ggaXMg Y2F1c2VkIGJ5IFNoaWZ0K0FsdCBrZXkgaW4gZGUoVDMpIGtleW1hcC4KKy0gICAgICovCisgICAg IGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKKyAgICAgY2FzZSBJQlVTX0tFWV9JU09f TGV2ZWw1X1NoaWZ0OgorICAgICAgICAgaWYgKHN0YXRlID09IFdMX0tFWUJPQVJEX0tFWV9TVEFU RV9QUkVTU0VEKSB7CistICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9r ZXktPm1vZDNfbWFzazsKKysgICAgICAgICAgICBzd2l0Y2ggKHN5bSkgeworKyAgICAgICAgICAg IGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKKysgICAgICAgICAgICBjYXNlIElCVVNf S0VZX0lTT19MZXZlbDNfU2hpZnQ6CisrICAgICAgICAgICAgICAgIHByaXYtPmlzX3ByZXNzZWRf bW9kNSA9IFRSVUU7CisrICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3Rp dmVfa2V5LT5tb2Q1X21hc2s7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAg IGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKKysgICAgICAgICAgICBjYXNlIElCVVNf S0VZX0lTT19MZXZlbDVfU2hpZnQ6CisrICAgICAgICAgICAgICAgIHByaXYtPmlzX3ByZXNzZWRf bW9kMyA9IFRSVUU7CisrICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCB8PSBhY3Rp dmVfa2V5LT5tb2QzX21hc2s7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAg IGRlZmF1bHQ6CisrICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICBpZiAoc3ltICE9IHN5c3RlbV9zeW0pCisgICAgICAg ICAgICAgICAgIHByaXYtPmlzX3ZpcnR1YWxfbGF0Y2hfc3RhdGUgPSBUUlVFOworICAgICAgICAg ICAgIGZpbHRlcmVkID0gVFJVRTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgSUJ1 c0tleUlzb0xldmVsVmFsdWUgY3VycmVudF9sZXZlbCA9IElCVVNfS0VZX0lTT19MRVZFTF9JTlZB TElEOworKyAgICAgICAgICAgIGdib29sZWFuICppc19wcmVzc2VkX2N1cnJlbnRfbW9kID0gTlVM TDsKKysgICAgICAgICAgICBnYm9vbGVhbiAqaXNfcHJlc3NlZF9yZXZlcnNlX21vZCA9IE5VTEw7 CisrICAgICAgICAgICAgeGtiX21vZF9tYXNrX3QgY3VycmVudF9tb2RlX21hc2sgPSAwOworKyAg ICAgICAgICAgIHhrYl9tb2RfbWFza190IHJldmVyc2VfbW9kZV9tYXNrID0gMDsKKysgICAgICAg ICAgICBzd2l0Y2ggKHN5bSkgeworKyAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVs M19MYXRjaDoKKysgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfU2hpZnQ6Cisr ICAgICAgICAgICAgICAgIGN1cnJlbnRfbGV2ZWwgPSBJQlVTX0tFWV9JU09fTEVWRUxfMzsKKysg ICAgICAgICAgICAgICAgaXNfcHJlc3NlZF9jdXJyZW50X21vZCA9ICZwcml2LT5pc19wcmVzc2Vk X21vZDU7CisrICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSAmcHJpdi0+ aXNfcHJlc3NlZF9tb2QzOworKyAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVfbWFzayA9IGFj dGl2ZV9rZXktPm1vZDVfbWFzazsKKysgICAgICAgICAgICAgICAgcmV2ZXJzZV9tb2RlX21hc2sg PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg ICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9MYXRjaDoKKysgICAgICAgICAgICBjYXNl IElCVVNfS0VZX0lTT19MZXZlbDVfU2hpZnQ6CisrICAgICAgICAgICAgICAgIGN1cnJlbnRfbGV2 ZWwgPSBJQlVTX0tFWV9JU09fTEVWRUxfNTsKKysgICAgICAgICAgICAgICAgaXNfcHJlc3NlZF9j dXJyZW50X21vZCA9ICZwcml2LT5pc19wcmVzc2VkX21vZDM7CisrICAgICAgICAgICAgICAgIGlz X3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSAmcHJpdi0+aXNfcHJlc3NlZF9tb2Q1OworKyAgICAgICAg ICAgICAgICBjdXJyZW50X21vZGVfbWFzayA9IGFjdGl2ZV9rZXktPm1vZDNfbWFzazsKKysgICAg ICAgICAgICAgICAgcmV2ZXJzZV9tb2RlX21hc2sgPSBhY3RpdmVfa2V5LT5tb2Q1X21hc2s7Cisr ICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIGRlZmF1bHQ6OworKyAgICAgICAg ICAgIH0KKysgICAgICAgICAgICBnX2Fzc2VydCAoY3VycmVudF9sZXZlbCAhPSBJQlVTX0tFWV9J U09fTEVWRUxfSU5WQUxJRCk7CisrICAgICAgICAgICAgZ19hc3NlcnQgKGlzX3ByZXNzZWRfY3Vy cmVudF9tb2QgJiYgaXNfcHJlc3NlZF9yZXZlcnNlX21vZCk7CisrICAgICAgICAgICAgaWYgKEdf TElLRUxZICgqaXNfcHJlc3NlZF9jdXJyZW50X21vZCkpIHsKKysgICAgICAgICAgICAgICAgKmlz X3ByZXNzZWRfY3VycmVudF9tb2QgPSBGQUxTRTsKKysgICAgICAgICAgICB9IGVsc2UgaWYgKCpp c19wcmVzc2VkX3JldmVyc2VfbW9kICYmCisrICAgICAgICAgICAgICAgICAgICAgICAobmV3X21v ZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9kM19tYXNrKSkgeworKyAgICAgICAgICAgICAg ICAvKiBUaGUgdW5saWtlbHkgY2FzZSAhcHJpdi0+aXNfcHJlc3NlZF9tb2QzIGFuZAorKyAgICAg ICAgICAgICAgICAgKiBwcml2LT5pc19wcmVzc2VkX21vZDUgbWVhbnMgdGhhdCAiZGUoVDMpIiBr ZXltYXAgZ2l2ZXMKKysgICAgICAgICAgICAgICAgICogdGhlIHByZXNzZWQgIkxldmVsM19TaGlm dCIga2V5c3ltIGFuZAorKyAgICAgICAgICAgICAgICAgKiB0aGUgcmVsZWFzZWQgIkxldmVsNV9M YXRjaCIga2V5c3ltIGZvciB0aGUga2V5IDxSQUxUPi4KKysgICAgICAgICAgICAgICAgICogTWF5 YmUgYSBidWcgaW4gImRlKFQzKSIgc28gbmVlZCB0byBjbGVhciB0aGUgTU9ENSBzdGF0ZQorKyAg ICAgICAgICAgICAgICAgKiBieSB0aGUgcHJlc3NlZCAiTGV2ZWwzX1NoaWZ0IiBrZXlzeW0uCisr ICAgICAgICAgICAgICAgICAqLworKyAgICAgICAgICAgICAgICAqaXNfcHJlc3NlZF9yZXZlcnNl X21vZCA9IEZBTFNFOworKyAgICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfnJl dmVyc2VfbW9kZV9tYXNrOworKyAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9 IFRSVUU7CisrICAgICAgICAgICAgICAgIGdfZGVidWcgKCJHb3QgYSB3cm9uZyByZWxlYXNlZCAl cyBrZXkgd2l0aG91dCB0aGUgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAicHJlc3NlZCBv bmUuIE1heWJlIGEgYnVnIGluIFhLQi4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJy ZW50X2xldmVsID09IElCVVNfS0VZX0lTT19MRVZFTF8zID8KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiTGV2ZWwzIiA6ICJMZXZlbDUiKTsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgLyogVGhlICJsdih0aWxkZSkiIGtleW1hcCBnaXZlcyB0aGUgIkxldmVsM19TaGlm dCIga2V5c3ltCisrICAgICAgICAgICAgICogd2l0aCB0aGUga2V5IDxSQUxUPi4KKysgICAgICAg ICAgICAgKi8KKysgICAgICAgICAgICBpZiAoKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNP X0xFVkVMXzMgJiYKKysgICAgICAgICAgICAgICAgIHN5bSA9PSBJQlVTX0tFWV9JU09fTGV2ZWwz X1NoaWZ0KSB8fAorKyAgICAgICAgICAgICAgICAoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9J U09fTEVWRUxfNSAmJgorKyAgICAgICAgICAgICAgICAgc3ltID09IElCVVNfS0VZX0lTT19MZXZl bDVfU2hpZnQpKSB7CisrICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+Y3Vy cmVudF9tb2RlX21hc2s7CisrICAgICAgICAgICAgICAgIGlmIChzeW0gIT0gc3lzdGVtX3N5bSkK KysgICAgICAgICAgICAgICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOworKyAgICAg ICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworICAgICBjYXNlIElCVVNfS0VZ X1NoaWZ0X0w6CitAQCAtNjQ5LDYgKzc0NCwyMyBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3Zp cnR1YWxfeGtiX3N0YXRlIChJQnVzV2F5bGFuZElNICp3bGltLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBYS0JfS0VZX1VQIDogWEtCX0tFWV9ET1dO KTsKKyAgICAgfQorKyAgICBpZiAocHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSAmJgorKyAg ICAgICAgKG5ld19tb2RzX2RlcHJlc3NlZCAhPSBtb2RzX2RlcHJlc3NlZCkgJiYKKysgICAgICAg IChzdGF0ZSAhPSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpKSB7CisrICAgICAgICB4 a2JfbW9kX21hc2tfdCBuZXcyX21vZHNfZGVwcmVzc2VkOworKyAgICAgICAgbmV3Ml9tb2RzX2Rl cHJlc3NlZCA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoYWN0aXZlX2tleS0+c3RhdGUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY S0JfU1RBVEVfREVQUkVTU0VEIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVRDSEVEKTsKKysgICAgICAgIC8qICJk ZShUMykiIGtleW1hcCBnaXZlcyB0aGUgcHJlc3NlZCAiTGV2ZWwzX1NoaWZ0IiBrZXlzeW0gYW5k CisrICAgICAgICAgKiBzZXRzIGJvdGggTU9EMyhMZXZlbDUpIGFuZCBNT0Q1KExldmVsMykgc3Rh dGVzIGFmdGVyCisrICAgICAgICAgKiB4a2Jfc3RhdGVfdXBkYXRlX2tleSgpIGlzIGNhbGxlZCB3 aXRoIHRoZSBrZXlwcmVzcy4KKysgICAgICAgICAqIE1heWJlIGEgYnVnIGluICJkZShUMykiIGFu ZCBzZXRzIE1PRDUoTGV2ZWwzKSBhZ2FpbiBoZXJlLgorKyAgICAgICAgICovCisrICAgICAgICBp ZiAoR19VTkxJS0VMWSAobmV3X21vZHNfZGVwcmVzc2VkICE9IG5ldzJfbW9kc19kZXByZXNzZWQp KSB7CisrICAgICAgICAgICAgeGtiX3N0YXRlX3VwZGF0ZV9tYXNrIChhY3RpdmVfa2V5LT5zdGF0 ZSwgbmV3X21vZHNfZGVwcmVzc2VkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCwgbW9kc19sb2NrZWQsIDAsIDAsIGdyb3VwKTsKKysgICAgICAgIH0KKysgICAgfQorIH0K KyAKKyAKK0BAIC0xMzU1LDYgKzE0NjcsNyBAQCBfYnVzX2dsb2JhbF9lbmdpbmVfY2hhbmdlZF9j YiAoSUJ1c0J1cyAgICAgICAqYnVzLAorICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1dB WUxBTkRfSU0gKHdsaW0pKTsKKyAgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFu Y2VfcHJpdmF0ZSAod2xpbSk7CisgICAgIGRlc2MgPSBpYnVzX2J1c19nZXRfZ2xvYmFsX2VuZ2lu ZSAoYnVzKTsKKysgICAgaWJ1c193YXlsYW5kX2ltX3Jlc2V0X21vZGlmaWVycyAod2xpbSk7Cisg ICAgIGdfYXNzZXJ0IChkZXNjKTsKKyAgICAgZ19hc3NlcnQgKCFnX3N0cmNtcDAgKGlidXNfZW5n aW5lX2Rlc2NfZ2V0X25hbWUgKGRlc2MpLCBlbmdpbmVfbmFtZSkpOworICAgICAvKiBBbHdheXMg dXBkYXRlIHByaXYtPmtleV91c2VyIGV2ZW4gaWYgcHJpdi0+dXNlX3N5c19rZXltYXAgaXMgJUZB TFNFCitAQCAtMTU0NCw3ICsxNjU3LDggQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5IChJQnVz V2F5bGFuZElNICp3bGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN5bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfa2V5LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdf bW9kc19kZXByZXNzZWQpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZuZXdfbW9kc19kZXByZXNzZWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3ZpcnR1YWxf c3RhdGUpOworICAgICBmaWx0ZXJlZCA9IGlidXNfd2F5bGFuZF9pbV9jb21taXRfa2V5X2V2ZW50 ICh3bGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1vZGlmaWVycywKK0BAIC0yNDI3LDYgKzI1NDEsNyBAQCBfY3JlYXRlX2lucHV0X2NvbnRleHRf ZG9uZSAoR09iamVjdCAgICAgICpvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICAgICAgIH0KKyAgICAg ICAgIGlidXNfaW5wdXRfY29udGV4dF9mb2N1c19pbiAocHJpdi0+aWJ1c2NvbnRleHQpOworKyAg ICAgICAgaWJ1c193YXlsYW5kX2ltX3Jlc2V0X21vZGlmaWVycyAod2xpbSk7CisgICAgICAgICBn X3NpZ25hbF9lbWl0ICh3bGltLAorICAgICAgICAgICAgICAgICAgICAgICAgd2F5bGFuZF9pbV9z aWduYWxzW0lCVVNfRk9DVVNfSU5dLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwKKy0tIAor Mi41NC4wCisKK0Zyb20gMjJjYTM3YTVkNDNhYzdjZjA0OTc4MGRhNWUxNDUyNTA1NDA2YzA3MiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmEx QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjUgSnVuIDIwMjYgMjI6MTY6NDIgKzA5MDAKK1N1Ympl Y3Q6IFtQQVRDSCA0LzVdIGNsaWVudC93YXlsYW5kOiBGaXggaW5maW5pdGUgZGVhZF9kaWFlcmVz aXMgd2l0aCBmcihlcmdvbCkga2V5bWFwCisKK1R5cGluZyB0aGUga2V5IDxBRDA5PiB0d2ljZSBn aXZlcyBkaWZmZXJlbnQga2V5c3ltcyBiZXR3ZWVuIEtleVByZXNzCithbmQgS2V5UmVsZWFzZSBl dmVudHMgYW5kIGNhdXNlcyB0aGUgcmV2ZXJzZSBvcmRlciBvZiBLZXlQcmVzcyBhbmQKK0tleVJl bGVhc2Ugb2YgdGhlICJkZWFkX2RpYWVyZXNpcyIga2V5c3ltLgorTm93IGlidXMtd2F5bGFuZCBj aGVja3MgdGhlIHNwZWNpYWwgb3JkZXIgbm90IHRvIGNhdXNlIHRoZSBrZXkgcmVwZWF0aW5nLgor QWxzbyBpYnVzLXdheWxhbmQgcmVsZWFzZXMgdGhlIHN0YXRlIG9mICJJU09fTGV2ZWw1X0xhdGNo IiB3aXRoIHR5cGluZwordGhlIGtleSA8QUQwOT4gdHdpY2UuCisKK0ZpeGVzOiAjMjg2OQorQ2xv c2VzOiAjMjg5NAorLS0tCisgY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jIHwgMjQ1ICsr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNzIgaW5z ZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFu ZC9pYnVzd2F5bGFuZGltLmMgYi9jbGllbnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMKK2luZGV4 IDk3ZTNjZTM4Li5lZmViNjc4MyAxMDA2NDQKKy0tLSBhL2NsaWVudC93YXlsYW5kL2lidXN3YXls YW5kaW0uYworKysrIGIvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCitAQCAtNzEsNiAr NzEsMTIgQEAgdHlwZWRlZiBlbnVtIHsKKyAgICAgSUJVU19LRVlfSVNPX0xFVkVMXzUKKyB9IElC dXNLZXlJc29MZXZlbFZhbHVlOworIAorK3R5cGVkZWYgZW51bSB7CisrICAgIElCVVNfS0VZX0lT T19MRVZFTF9TVEFURV9SRUxFQVNFLAorKyAgICBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfU0hJ RlQsCisrICAgIElCVVNfS0VZX0lTT19MRVZFTF9TVEFURV9MQVRDSAorK30gSUJ1c0tleUlzb0xl dmVsU3RhdGU7CisrCisgc3RydWN0IHp3cF9pbnB1dF9tZXRob2RfY29udGV4dF91bmlvbiB7Cisg ICAgIHVuaW9uIHsKKyAgICAgICAgIHN0cnVjdCB6d3BfaW5wdXRfbWV0aG9kX2NvbnRleHRfdjEg KmNvbnRleHRfdjE7CitAQCAtMTcwLDEyICsxNzYsMTQgQEAgc3RydWN0IF9JQnVzV2F5bGFuZElN UHJpdmF0ZQorIAorICAgICBJQnVzWGtiS2V5bWFwIGtleV91c2VyOworICAgICBJQnVzWGtiS2V5 bWFwIGtleV9zeXM7CistICAgIGdib29sZWFuIGlzX3ByZXNzZWRfbW9kMzsKKy0gICAgZ2Jvb2xl YW4gaXNfcHJlc3NlZF9tb2Q1OworKyAgICBJQnVzS2V5SXNvTGV2ZWxTdGF0ZSBpc29fbGV2ZWwz X3N0YXRlOworKyAgICBJQnVzS2V5SXNvTGV2ZWxTdGF0ZSBpc29fbGV2ZWw1X3N0YXRlOworIAor ICAgICB1aW50MzJfdCBpbV9zZXJpYWw7CisgICAgIGludDMyX3QgcmVwZWF0X3JhdGU7CisgICAg IGludDMyX3QgcmVwZWF0X2RlbGF5OworKyAgICB4a2Jfa2V5c3ltX3QgcHJlc3NlZF9kZWFkX2tl eTsKKysgICAgeGtiX2tleXN5bV90IHJlbGVhc2VkX2RlYWRfa2V5X3dvX3ByZXNzOworIAorICAg ICBHQ2FuY2VsbGFibGUgKmNhbmNlbGxhYmxlOworIH07CitAQCAtMzYwLDggKzM2OCwxMCBAQCBp YnVzX3dheWxhbmRfaW1fcmVzZXRfbW9kaWZpZXJzIChJQnVzV2F5bGFuZElNICp3bGltKQorIAor ICAgICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsK KyAgICAgcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSA9IEZBTFNFOworLSAgICBwcml2LT5p c19wcmVzc2VkX21vZDMgPSBGQUxTRTsKKy0gICAgcHJpdi0+aXNfcHJlc3NlZF9tb2Q1ID0gRkFM U0U7CisrICAgIHByaXYtPmlzb19sZXZlbDNfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RB VEVfUkVMRUFTRTsKKysgICAgcHJpdi0+aXNvX2xldmVsNV9zdGF0ZSA9IElCVVNfS0VZX0lTT19M RVZFTF9TVEFURV9SRUxFQVNFOworKyAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5ID0gMDsKKysg ICAgcHJpdi0+cmVsZWFzZWRfZGVhZF9rZXlfd29fcHJlc3MgPSAwOworICAgICBpZiAocHJpdi0+ a2V5X3VzZXIuc3RhdGUgJiYgcHJpdi0+a2V5X3N5cy5zdGF0ZSkgeworICAgICAgICAgZ3JvdXAg PSB4a2Jfc3RhdGVfc2VyaWFsaXplX2xheW91dCAocHJpdi0+a2V5X3N5cy5zdGF0ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MQVlPVVRf TE9DS0VEKTsKK0BAIC00MDcsNyArNDE3LDggQEAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF9rZXlf ZXZlbnQgKElCdXNXYXlsYW5kSU0gICp3bGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQnVzWGtiS2V5bWFwICAqYWN0aXZlX2tleSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgIGZpbHRlcmVkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCAqbmV3X21vZHNfZGVwcmVzc2VkLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAqY2xlYXJf dmlydHVhbF9zdGF0ZSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl YW4gICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgICppc19pbnZhbGlkX2tleSkKKyB7CisgICAgIElCdXNX YXlsYW5kSU1Qcml2YXRlICpwcml2OworICAgICB1aW50MzJfdCBjb2RlID0ga2V5ICsgODsKK0BA IC00MTYsOSArNDI3LDYgQEAgaWJ1c193YXlsYW5kX2ltX2NvbW1pdF9rZXlfZXZlbnQgKElCdXNX YXlsYW5kSU0gICp3bGltLAorICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19XQVlM QU5EX0lNICh3bGltKSwgZmlsdGVyZWQpOworICAgICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dl dF9pbnN0YW5jZV9wcml2YXRlICh3bGltKTsKKyAKKy0gICAgaWYgKHN0YXRlID09IFdMX0tFWUJP QVJEX0tFWV9TVEFURV9SRUxFQVNFRCkKKy0gICAgICAgIHJldHVybiBmaWx0ZXJlZDsKKy0KKyAg ICAgY2ggPSBpYnVzX2tleXZhbF90b191bmljb2RlIChzeW0pOworICAgICBpZiAoY2ggPT0gMCB8 fCBnX3VuaWNoYXJfaXNjbnRybCAoY2gpKQorICAgICAgICAgY2ggPSB4a2Jfc3RhdGVfa2V5X2dl dF91dGYzMiAoYWN0aXZlX2tleS0+c3RhdGUsIGNvZGUpOworQEAgLTQzMSwyMyArNDM5LDI4IEBA IGlidXNfd2F5bGFuZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5bGFuZElNICAqd2xpbSwK KyAjICBkZWZpbmUgX0lCVVNfTk9fVEVYVF9JTlBVVF9NT0RfTUFTSyAoXAorICAgICBJQlVTX0NP TlRST0xfTUFTSyB8IElCVVNfTU9EMl9NQVNLIHwgSUJVU19NT0Q0X01BU0spCisgI2VuZGlmCist ICAgIGlmICgoIWZpbHRlcmVkICYmICEobW9kaWZpZXJzICYgX0lCVVNfTk9fVEVYVF9JTlBVVF9N T0RfTUFTSykgJiYKKy0gICAgICAgICAhZ191bmljaGFyX2lzY250cmwgKGNoKSkgfHwgZmlsdGVy ZWQpIHsKKy0gICAgICAgIC8qIEluIGNhc2UgYHVzZV9zeXNfa2V5bWFwYCBpcyAlVFJVRSwgSUJ1 cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMKKy0gICAgICAgICAqIGJ1dCBmb3J3YXJkcyB0 aGUga2V5IGV2ZW50cyB0byB0aGUgZm9jdXNlZCBhcHBsaWNhdGlvbiBoZXJlLgorLSAgICAgICAg ICogQmVjYXVzZSBzb21lIGFwcGxpY2F0aW9ucyB0cmVhdCB0aGUgcHJpbnRhYmxlIGtleXMgYXMg Y29udHJvbCBrZXlzLAorLSAgICAgICAgICogRS5nLiBnYW1lIGFwcHMgImhqa2wiIHVzZSB0aGUg Y3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgorLSAgICAgICAgICogVW5mb3J0dW5hdGVseSB0aGUg V2F5bGFuZCBpbnB1dC1tZXRob2QgcHJvdG9jb2wgZG9lcyBub3QgcHJvdmlkZQorLSAgICAgICAg ICogdGhlIGZhbGxiYWNrIGxvZ2ljIGFmdGVyIGFwcHMgaGFuZGxlIHRoZSBrZXkgZXZlbnRzIGxp a2UgR1RLMy8yCistICAgICAgICAgKiBJTSBtb2R1bGVzLiBCdXQgdGhlIGlucHV0LW1ldGhvZCBh bHdheXMgc2hvdWxkIGhhbmRsZSBrZXkgZXZlbnRzCistICAgICAgICAgKiBwcmlvciB0byBhcHBz LgorLSAgICAgICAgICovCistICAgICAgICBpZiAoIWZpbHRlcmVkICYmICFwcml2LT51c2Vfc3lz X2tleW1hcCkgeworLSAgICAgICAgICAgIGdjaGFyIGJ1ZmZbOF0gPSB7IDAsIH07CistICAgICAg ICAgICAgZ191bmljaGFyX3RvX3V0ZjggKGNoLCBidWZmKTsKKy0gICAgICAgICAgICBpYnVzX3dh eWxhbmRfaW1fY29tbWl0X3RleHQgKHdsaW0sIGJ1ZmYpOworLSAgICAgICAgICAgIGZpbHRlcmVk ID0gVFJVRTsKKy0gICAgICAgIH0KKysgICAgaWYgKChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlf U1RBVEVfUkVMRUFTRUQpIHx8CisrICAgICAgICAobW9kaWZpZXJzICYgX0lCVVNfTk9fVEVYVF9J TlBVVF9NT0RfTUFTSykpIHsKKysgICAgICAgIHJldHVybiBmaWx0ZXJlZDsKKysgICAgfQorKyN1 bmRlZiBfSUJVU19OT19URVhUX0lOUFVUX01PRF9NQVNLCisrCisrICAgIC8qIEluIGNhc2UgYHVz ZV9zeXNfa2V5bWFwYCBpcyAlVFJVRSwgSUJ1cyBkb2VzIG5vdCBjb21taXQgQVNDSUkgY2hhcnMK KysgICAgICogYnV0IGZvcndhcmRzIHRoZSBrZXkgZXZlbnRzIHRvIHRoZSBmb2N1c2VkIGFwcGxp Y2F0aW9uIGhlcmUuCisrICAgICAqIEJlY2F1c2Ugc29tZSBhcHBsaWNhdGlvbnMgdHJlYXQgdGhl IHByaW50YWJsZSBrZXlzIGFzIGNvbnRyb2wga2V5cywKKysgICAgICogRS5nLiBnYW1lIGFwcHMg Imhqa2wiIHVzZSB0aGUgY3Vyc29yIG1vdmUgbGlrZSBWSSBtb2RlLgorKyAgICAgKiBVbmZvcnR1 bmF0ZWx5IHRoZSBXYXlsYW5kIGlucHV0LW1ldGhvZCBwcm90b2NvbCBkb2VzIG5vdCBwcm92aWRl CisrICAgICAqIHRoZSBmYWxsYmFjayBsb2dpYyBhZnRlciBhcHBzIGhhbmRsZSB0aGUga2V5IGV2 ZW50cyBsaWtlIEdUSzMvMgorKyAgICAgKiBJTSBtb2R1bGVzLiBCdXQgdGhlIGlucHV0LW1ldGhv ZCBhbHdheXMgc2hvdWxkIGhhbmRsZSBrZXkgZXZlbnRzCisrICAgICAqIHByaW9yIHRvIGFwcHMu CisrICAgICAqLworKyAgICBpZiAoIWZpbHRlcmVkICYmICFnX3VuaWNoYXJfaXNjbnRybCAoY2gp ICYmICFwcml2LT51c2Vfc3lzX2tleW1hcCkgeworKyAgICAgICAgZ2NoYXIgYnVmZls4XSA9IHsg MCwgfTsKKysgICAgICAgIGdfdW5pY2hhcl90b191dGY4IChjaCwgYnVmZik7CisrICAgICAgICBp YnVzX3dheWxhbmRfaW1fY29tbWl0X3RleHQgKHdsaW0sIGJ1ZmYpOworKyAgICAgICAgZmlsdGVy ZWQgPSBUUlVFOworKyAgICB9CisrICAgIGlmICghZ191bmljaGFyX2lzY250cmwgKGNoKSB8fCBJ U19ERUFEX0tFWSAoc3ltKSkgeworICAgICAgICAgLyogSWYgYGZpbHRlcmVkYCBpcyAlVFJVRSwg dGhlIGtleXN5bSBjYW4gYmUgZWF0ZW4gZm9yIHRoZSBjb21wb3NlCisgICAgICAgICAgKiBwcmVl ZGl0IGJ5IElCdXMgWEtCIGVuZ2luZS4gRS5nLiBBbHRHci1TaGlmdC1WIGtleSBwcm9kdWNlcwor ICAgICAgICAgICogYExldmVsM19TaGlmdCcgYW5kIGBHcmVla19PTUVHQWAga2V5c3ltIHdpdGgg InVzKHN5bWJvbGljKSIga2V5bWFwLgorQEAgLTQ1NiwxOSArNDY5LDQyIEBAIGlidXNfd2F5bGFu ZF9pbV9jb21taXRfa2V5X2V2ZW50IChJQnVzV2F5bGFuZElNICAqd2xpbSwKKyAgICAgICAgICAq IEknbSBub3QgY2xhcmlmaWVkIHdpdGggImxldmVsMyhyYWx0X3N3aXRjaCkiIGluIHVzIFhLQiBr ZXltYXBzLgorICAgICAgICAgICovCisgICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0Qz X01BU0spIHsKKysgICAgICAgICAgICAvKiBXaXRoIHRoZSAiZnIoZXJnb2wpIiBrZXltYXAsIFR5 cGluZyB0aGUga2V5IDxBRDA5PiB0d2ljZQorKyAgICAgICAgICAgICAqIHByb2R1Y2VzIHRoZSAi SVNPX0xldmVsNV9MYXRjaCIga2V5c3ltIGZvciB0aGUgZmlyc3QgS2V5UHJlc3MKKysgICAgICAg ICAgICAgKiBhbmQgdGhlICJkZWFkX2RpYWVyZXNpcyIga2V5c3ltIGZvciB0aGUgZmlyc3QgS2V5 UmVsZWVhc2UKKysgICAgICAgICAgICAgKiBiZWNhdXNlIHRoZSByZWxlYXNlIGtleSBldmVudCBo YXMgTU9EMyhsZXZlbDUpIHN0YXRlLgorKyAgICAgICAgICAgICAqIEFuZCB0aGUgc2Vjb25kIEtl eVByZXNzIGhhcyB0aGUgImRlYWRfZGlhZXJlc2lzIiBrZXlzeW0gYW5kCisrICAgICAgICAgICAg ICogdGhlIHNlY29uZCBLZXlSZWxlYXNlIGhhcyB0aGUgIklTT19MZXZlbDVfTGF0Y2giIGtleXN5 bS4KKysgICAgICAgICAgICAgKiBUaGUgbGF0Y2ggc3RhdGUgc2hvdWxkIGJlIGNsZWFyZWQgd2l0 aCB0aGUgZGVhZCBrZXlzLgorKyAgICAgICAgICAgICAqIEkgZG93bmdyYWRlIHRoZSBsYXRjaCBz dGF0ZSB0byB0aGUgc2hpZnQgc3RhdGUgaGVyZSBhbmQKKysgICAgICAgICAgICAgKiB0aGUgc2hp ZnQgc3RhdGUgd2lsbCBiZSBjbGVhcmVkIGJ5IHRoZSByZWxlYXNlZAorKyAgICAgICAgICAgICAq ICJJU09fTGV2ZWw1X0xhdGNoIiBrZXlzeW0gYnV0IG5vdCB0aGUgcHJlc3NlZCBkZWFkIGtleXMK KysgICAgICAgICAgICAgKiBiZWNhdXNlIHhrYl9zdGF0ZV91cGRhdGVfa2V5KCkgd2lsbCByZXZl cnQgdGhlIE1PRDMobGV2ZWw1KQorKyAgICAgICAgICAgICAqIHN0YXRlIG9mIHRoZSBkZXByZXNz ZWQgeGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzKCkKKysgICAgICAgICAgICAgKiB3aXRoIHRoZSBk ZWFkIGtleXMuCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgaWYgKHByaXYtPmlzb19s ZXZlbDVfc3RhdGUgPT0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX0xBVENIKSB7CisrICAgICAg ICAgICAgICAgIHByaXYtPmlzb19sZXZlbDVfc3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RB VEVfU0hJRlQ7CisrICAgICAgICAgICAgICAgIGlmIChpc19pbnZhbGlkX2tleSkKKysgICAgICAg ICAgICAgICAgICAgICppc19pbnZhbGlkX2tleSA9IFRSVUU7CisrICAgICAgICAgICAgfSBlbHNl IGlmIChjbGVhcl92aXJ0dWFsX3N0YXRlKSB7CisrICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0 dWFsX3N0YXRlID0gVFJVRTsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgaWYgKG5ld19t b2RzX2RlcHJlc3NlZCkKKyAgICAgICAgICAgICAgICAgKm5ld19tb2RzX2RlcHJlc3NlZCAmPSB+ YWN0aXZlX2tleS0+bW9kM19tYXNrOworLSAgICAgICAgICAgIGlmIChjbGVhcl92aXJ0dWFsX3N0 YXRlKQorLSAgICAgICAgICAgICAgICAqY2xlYXJfdmlydHVhbF9zdGF0ZSA9IFRSVUU7CisgICAg ICAgICB9CisgICAgICAgICBpZiAobW9kaWZpZXJzICYgSUJVU19NT0Q1X01BU0spIHsKKysgICAg ICAgICAgICBpZiAocHJpdi0+aXNvX2xldmVsM19zdGF0ZSA9PSBJQlVTX0tFWV9JU09fTEVWRUxf U1RBVEVfTEFUQ0gpIHsKKysgICAgICAgICAgICAgICAgcHJpdi0+aXNvX2xldmVsM19zdGF0ZSA9 IElCVVNfS0VZX0lTT19MRVZFTF9TVEFURV9TSElGVDsKKysgICAgICAgICAgICAgICAgaWYgKGlz X2ludmFsaWRfa2V5KQorKyAgICAgICAgICAgICAgICAgICAgKmlzX2ludmFsaWRfa2V5ID0gVFJV RTsKKysgICAgICAgICAgICB9IGVsc2UgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpIHsKKysgICAg ICAgICAgICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUgPSBUUlVFOworKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgICBpZiAobmV3X21vZHNfZGVwcmVzc2VkKQorICAgICAgICAgICAgICAgICAq bmV3X21vZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5tb2Q1X21hc2s7CistICAgICAgICAg ICAgaWYgKGNsZWFyX3ZpcnR1YWxfc3RhdGUpCistICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0 dWFsX3N0YXRlID0gVFJVRTsKKyAgICAgICAgIH0KKyAgICAgfQorLSN1bmRlZiBfSUJVU19OT19U RVhUX0lOUFVUX01PRF9NQVNLCisgICAgIHJldHVybiBmaWx0ZXJlZDsKKyB9CisgCitAQCAtNTU4 LDcgKzU5NCw4IEBAIGlidXNfd2F5bGFuZF9pbV91cGRhdGVfdmlydHVhbF9kZXByZXNzZWQgKElC dXNXYXlsYW5kSU0gICp3bGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIElCdXNYa2JLZXltYXAgICphY3RpdmVfa2V5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBmaWx0ZXJlZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4a2JfbW9kX21hc2tfdCAqbW9kc19k ZXByZXNzZWQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv b2xlYW4gICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgKmNsZWFyX3ZpcnR1YWxfc3RhdGUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAg ICAgKmlzX2ludmFsaWRfa2V5KQorIHsKKyAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7 CisgICAgIHVpbnQzMl90IGNvZGUgPSBrZXkgKyA4OworQEAgLTU3Miw2ICs2MDksNyBAQCBpYnVz X3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xp bSwKKyAgICAgZ19hc3NlcnQgKGFjdGl2ZV9rZXkpOworICAgICBnX2Fzc2VydCAobW9kc19kZXBy ZXNzZWQpOworICAgICBnX2Fzc2VydCAoY2xlYXJfdmlydHVhbF9zdGF0ZSk7CisrICAgIGdfYXNz ZXJ0IChpc19pbnZhbGlkX2tleSk7CisgCisgICAgIHByaXYgPSBpYnVzX3dheWxhbmRfaW1fZ2V0 X2luc3RhbmNlX3ByaXZhdGUgKHdsaW0pOworICAgICBuZXdfbW9kc19kZXByZXNzZWQgPSAqbW9k c19kZXByZXNzZWQ7CitAQCAtNTk3LDEzICs2MzUsMTkgQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0 ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0sCisgICAgICAgICBpZiAo c3RhdGUgPT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1BSRVNTRUQpIHsKKyAgICAgICAgICAgICBz d2l0Y2ggKHN5bSkgeworICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRj aDoKKysgICAgICAgICAgICAgICAgcHJpdi0+aXNvX2xldmVsM19zdGF0ZSA9IElCVVNfS0VZX0lT T19MRVZFTF9TVEFURV9MQVRDSDsKKysgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2Vk IHw9IGFjdGl2ZV9rZXktPm1vZDVfbWFzazsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgY2FzZSBJQlVTX0tFWV9JU09fTGV2ZWwzX1NoaWZ0OgorLSAgICAgICAgICAgICAg ICBwcml2LT5pc19wcmVzc2VkX21vZDUgPSBUUlVFOworKyAgICAgICAgICAgICAgICBwcml2LT5p c29fbGV2ZWwzX3N0YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1NISUZUOworICAgICAg ICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgfD0gYWN0aXZlX2tleS0+bW9kNV9tYXNrOwor ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19M ZXZlbDVfTGF0Y2g6CisrICAgICAgICAgICAgICAgIHByaXYtPmlzb19sZXZlbDVfc3RhdGUgPSBJ QlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfTEFUQ0g7CisrICAgICAgICAgICAgICAgIG5ld19tb2Rz X2RlcHJlc3NlZCB8PSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7CisrICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsNV9TaGlmdDoKKy0gICAg ICAgICAgICAgICAgcHJpdi0+aXNfcHJlc3NlZF9tb2QzID0gVFJVRTsKKysgICAgICAgICAgICAg ICAgcHJpdi0+aXNvX2xldmVsNV9zdGF0ZSA9IElCVVNfS0VZX0lTT19MRVZFTF9TVEFURV9TSElG VDsKKyAgICAgICAgICAgICAgICAgbmV3X21vZHNfZGVwcmVzc2VkIHw9IGFjdGl2ZV9rZXktPm1v ZDNfbWFzazsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgZGVmYXVsdDoK K0BAIC02MTQsNjEgKzY1OCw3MCBAQCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVw cmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xpbSwKKyAgICAgICAgICAgICBmaWx0ZXJlZCA9IFRS VUU7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIElCdXNLZXlJc29MZXZlbFZhbHVl IGN1cnJlbnRfbGV2ZWwgPSBJQlVTX0tFWV9JU09fTEVWRUxfSU5WQUxJRDsKKy0gICAgICAgICAg ICBnYm9vbGVhbiAqaXNfcHJlc3NlZF9jdXJyZW50X21vZCA9IE5VTEw7CistICAgICAgICAgICAg Z2Jvb2xlYW4gKmlzX3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSBOVUxMOworLSAgICAgICAgICAgIHhr Yl9tb2RfbWFza190IGN1cnJlbnRfbW9kZV9tYXNrID0gMDsKKy0gICAgICAgICAgICB4a2JfbW9k X21hc2tfdCByZXZlcnNlX21vZGVfbWFzayA9IDA7CisrICAgICAgICAgICAgSUJ1c0tleUlzb0xl dmVsU3RhdGUgKmN1cnJlbnRfc3RhdGUgPSBOVUxMOworKyAgICAgICAgICAgIElCdXNLZXlJc29M ZXZlbFN0YXRlICpyZXZlcnNlX3N0YXRlID0gTlVMTDsKKyAgICAgICAgICAgICBzd2l0Y2ggKHN5 bSkgeworICAgICAgICAgICAgIGNhc2UgSUJVU19LRVlfSVNPX0xldmVsM19MYXRjaDoKKyAgICAg ICAgICAgICBjYXNlIElCVVNfS0VZX0lTT19MZXZlbDNfU2hpZnQ6CisgICAgICAgICAgICAgICAg IGN1cnJlbnRfbGV2ZWwgPSBJQlVTX0tFWV9JU09fTEVWRUxfMzsKKy0gICAgICAgICAgICAgICAg aXNfcHJlc3NlZF9jdXJyZW50X21vZCA9ICZwcml2LT5pc19wcmVzc2VkX21vZDU7CistICAgICAg ICAgICAgICAgIGlzX3ByZXNzZWRfcmV2ZXJzZV9tb2QgPSAmcHJpdi0+aXNfcHJlc3NlZF9tb2Qz OworLSAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVfbWFzayA9IGFjdGl2ZV9rZXktPm1vZDVf bWFzazsKKy0gICAgICAgICAgICAgICAgcmV2ZXJzZV9tb2RlX21hc2sgPSBhY3RpdmVfa2V5LT5t b2QzX21hc2s7CisrICAgICAgICAgICAgICAgIGN1cnJlbnRfc3RhdGUgPSAmcHJpdi0+aXNvX2xl dmVsM19zdGF0ZTsKKysgICAgICAgICAgICAgICAgcmV2ZXJzZV9zdGF0ZSA9ICZwcml2LT5pc29f bGV2ZWw1X3N0YXRlOworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNl IElCVVNfS0VZX0lTT19MZXZlbDVfTGF0Y2g6CisgICAgICAgICAgICAgY2FzZSBJQlVTX0tFWV9J U09fTGV2ZWw1X1NoaWZ0OgorICAgICAgICAgICAgICAgICBjdXJyZW50X2xldmVsID0gSUJVU19L RVlfSVNPX0xFVkVMXzU7CistICAgICAgICAgICAgICAgIGlzX3ByZXNzZWRfY3VycmVudF9tb2Qg PSAmcHJpdi0+aXNfcHJlc3NlZF9tb2QzOworLSAgICAgICAgICAgICAgICBpc19wcmVzc2VkX3Jl dmVyc2VfbW9kID0gJnByaXYtPmlzX3ByZXNzZWRfbW9kNTsKKy0gICAgICAgICAgICAgICAgY3Vy cmVudF9tb2RlX21hc2sgPSBhY3RpdmVfa2V5LT5tb2QzX21hc2s7CistICAgICAgICAgICAgICAg IHJldmVyc2VfbW9kZV9tYXNrID0gYWN0aXZlX2tleS0+bW9kNV9tYXNrOworKyAgICAgICAgICAg ICAgICBjdXJyZW50X3N0YXRlID0gJnByaXYtPmlzb19sZXZlbDVfc3RhdGU7CisrICAgICAgICAg ICAgICAgIHJldmVyc2Vfc3RhdGUgPSAmcHJpdi0+aXNvX2xldmVsM19zdGF0ZTsKKyAgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgZGVmYXVsdDo7CisgICAgICAgICAgICAgfQor ICAgICAgICAgICAgIGdfYXNzZXJ0IChjdXJyZW50X2xldmVsICE9IElCVVNfS0VZX0lTT19MRVZF TF9JTlZBTElEKTsKKy0gICAgICAgICAgICBnX2Fzc2VydCAoaXNfcHJlc3NlZF9jdXJyZW50X21v ZCAmJiBpc19wcmVzc2VkX3JldmVyc2VfbW9kKTsKKy0gICAgICAgICAgICBpZiAoR19MSUtFTFkg KCppc19wcmVzc2VkX2N1cnJlbnRfbW9kKSkgeworLSAgICAgICAgICAgICAgICAqaXNfcHJlc3Nl ZF9jdXJyZW50X21vZCA9IEZBTFNFOworLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKmlzX3ByZXNz ZWRfcmV2ZXJzZV9tb2QgJiYKKy0gICAgICAgICAgICAgICAgICAgICAgIChuZXdfbW9kc19kZXBy ZXNzZWQgJiBhY3RpdmVfa2V5LT5tb2QzX21hc2spKSB7CisrICAgICAgICAgICAgZ19hc3NlcnQg KGN1cnJlbnRfc3RhdGUgJiYgcmV2ZXJzZV9zdGF0ZSk7CisrICAgICAgICAgICAgLyogVGhlICJs dih0aWxkZSkiIGtleW1hcCBnaXZlcyB0aGUgIkxldmVsM19TaGlmdCIga2V5c3ltCisrICAgICAg ICAgICAgICogd2l0aCB0aGUga2V5IDxSQUxUPi4KKysgICAgICAgICAgICAgKgorKyAgICAgICAg ICAgICAqIEhhbmRsZSB0aGUgIklTT19MZXZlbDVfTGF0Y2giIGtleXN5bSBpbiB0aGUgImZyKGVy Z29sKSIga2V5bWFwLgorKyAgICAgICAgICAgICAqIERvIG5vdCB1c2Uga2V5c3ltIGJ1dCBgY3Vy cmVudF9zdGF0ZWAgYmVjYXVzZSB0aGUgbGF0Y2ggc3RhdGUKKysgICAgICAgICAgICAgKiBjYW4g YmUgY2hhbmdlZCB0byB0aGUgc2hpZnQgc3RhdGUgd2l0aCBzb21lIGtleSBjb25kaXRpb25zLgor KyAgICAgICAgICAgICAqLworKyAgICAgICAgICAgIGlmICgqY3VycmVudF9zdGF0ZSA9PSBJQlVT X0tFWV9JU09fTEVWRUxfU1RBVEVfU0hJRlQpIHsKKysgICAgICAgICAgICAgICAgKmN1cnJlbnRf c3RhdGUgPSBJQlVTX0tFWV9JU09fTEVWRUxfU1RBVEVfUkVMRUFTRTsKKysgICAgICAgICAgICAg ICAgaWYgKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzMpCisrICAgICAgICAg ICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDVfbWFzazsK KysgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudF9sZXZlbCA9PSBJQlVTX0tFWV9JU09f TEVWRUxfNSkKKysgICAgICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJlc3NlZCAmPSB+YWN0 aXZlX2tleS0+bW9kM19tYXNrOworKyAgICAgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAg ICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKysgICAgICAgICAgICAgICAgaWYgKHN5 bSAhPSBzeXN0ZW1fc3ltKQorKyAgICAgICAgICAgICAgICAgICAgKmNsZWFyX3ZpcnR1YWxfc3Rh dGUgPSBUUlVFOworKyAgICAgICAgICAgIH0gZWxzZSBpZiAoISpjdXJyZW50X3N0YXRlICYmICpy ZXZlcnNlX3N0YXRlICYmCisrICAgICAgICAgICAgICAgICAgICAgICAoKChjdXJyZW50X2xldmVs ID09IElCVVNfS0VZX0lTT19MRVZFTF8zKSAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAo bmV3X21vZHNfZGVwcmVzc2VkICYgYWN0aXZlX2tleS0+bW9kM19tYXNrKSkgfHwKKysgICAgICAg ICAgICAgICAgICAgICAgICAoKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzUp ICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgIChuZXdfbW9kc19kZXByZXNzZWQgJiBhY3Rp dmVfa2V5LT5tb2Q1X21hc2spKQorKyAgICAgICAgICAgICAgICAgICAgICAgKSkgeworICAgICAg ICAgICAgICAgICAvKiBUaGUgdW5saWtlbHkgY2FzZSAhcHJpdi0+aXNfcHJlc3NlZF9tb2QzIGFu ZAorICAgICAgICAgICAgICAgICAgKiBwcml2LT5pc19wcmVzc2VkX21vZDUgbWVhbnMgdGhhdCAi ZGUoVDMpIiBrZXltYXAgZ2l2ZXMKKyAgICAgICAgICAgICAgICAgICogdGhlIHByZXNzZWQgIkxl dmVsM19TaGlmdCIga2V5c3ltIGFuZAorICAgICAgICAgICAgICAgICAgKiB0aGUgcmVsZWFzZWQg IkxldmVsNV9MYXRjaCIga2V5c3ltIGZvciB0aGUga2V5IDxSQUxUPi4KKy0gICAgICAgICAgICAg ICAgICogTWF5YmUgYSBidWcgaW4gImRlKFQzKSIgc28gbmVlZCB0byBjbGVhciB0aGUgTU9ENSBz dGF0ZQorLSAgICAgICAgICAgICAgICAgKiBieSB0aGUgcHJlc3NlZCAiTGV2ZWwzX1NoaWZ0IiBr ZXlzeW0uCisrICAgICAgICAgICAgICAgICAqIFRoaXMgY2FzZSBjYW4gaGFwcGVuIGlmIHRoZSBu b3JtYWwga2V5c3ltIGFuZCBzaGlmdCBrZXlzeW0KKysgICAgICAgICAgICAgICAgICogYXJlIGRp ZmZlcmVudC4KKyAgICAgICAgICAgICAgICAgICovCistICAgICAgICAgICAgICAgICppc19wcmVz c2VkX3JldmVyc2VfbW9kID0gRkFMU0U7CistICAgICAgICAgICAgICAgIG5ld19tb2RzX2RlcHJl c3NlZCAmPSB+cmV2ZXJzZV9tb2RlX21hc2s7CisrICAgICAgICAgICAgICAgICpyZXZlcnNlX3N0 YXRlID0gSUJVU19LRVlfSVNPX0xFVkVMX1NUQVRFX1JFTEVBU0U7CisrICAgICAgICAgICAgICAg ICppc19pbnZhbGlkX2tleSA9IFRSVUU7CisrICAgICAgICAgICAgICAgIGlmIChjdXJyZW50X2xl dmVsID09IElCVVNfS0VZX0lTT19MRVZFTF8zKQorKyAgICAgICAgICAgICAgICAgICAgbmV3X21v ZHNfZGVwcmVzc2VkICY9IH5hY3RpdmVfa2V5LT5tb2QzX21hc2s7CisrICAgICAgICAgICAgICAg IGVsc2UgaWYgKGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzUpCisrICAgICAg ICAgICAgICAgICAgICBuZXdfbW9kc19kZXByZXNzZWQgJj0gfmFjdGl2ZV9rZXktPm1vZDVfbWFz azsKKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnRf bm90X3JlYWNoZWQgKCk7CisgICAgICAgICAgICAgICAgICpjbGVhcl92aXJ0dWFsX3N0YXRlID0g VFJVRTsKKyAgICAgICAgICAgICAgICAgZ19kZWJ1ZyAoIkdvdCBhIHdyb25nIHJlbGVhc2VkICVz IGtleSB3aXRob3V0IHRoZSAiCistICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVzc2VkIG9u ZS4gTWF5YmUgYSBidWcgaW4gWEtCLiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVz c2VkIG9uZS4gTWF5YmUgdGhlIG5leHQgU2hpZnQgc3RhdGUgd2lsbCAiCisrICAgICAgICAgICAg ICAgICAgICAgICAgICJwcm9kdWNlIHRoZSBkZWxheWVkIHByZXNzZWQgb25lLiIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfbGV2ZWwgPT0gSUJVU19LRVlfSVNPX0xFVkVMXzMg PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMZXZlbDMiIDogIkxldmVsNSIp OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAvKiBUaGUgImx2KHRpbGRlKSIga2V5bWFw IGdpdmVzIHRoZSAiTGV2ZWwzX1NoaWZ0IiBrZXlzeW0KKy0gICAgICAgICAgICAgKiB3aXRoIHRo ZSBrZXkgPFJBTFQ+LgorLSAgICAgICAgICAgICAqLworLSAgICAgICAgICAgIGlmICgoY3VycmVu dF9sZXZlbCA9PSBJQlVTX0tFWV9JU09fTEVWRUxfMyAmJgorLSAgICAgICAgICAgICAgICAgc3lt ID09IElCVVNfS0VZX0lTT19MZXZlbDNfU2hpZnQpIHx8CistICAgICAgICAgICAgICAgIChjdXJy ZW50X2xldmVsID09IElCVVNfS0VZX0lTT19MRVZFTF81ICYmCistICAgICAgICAgICAgICAgICBz eW0gPT0gSUJVU19LRVlfSVNPX0xldmVsNV9TaGlmdCkpIHsKKy0gICAgICAgICAgICAgICAgbmV3 X21vZHNfZGVwcmVzc2VkICY9IH5jdXJyZW50X21vZGVfbWFzazsKKy0gICAgICAgICAgICAgICAg aWYgKHN5bSAhPSBzeXN0ZW1fc3ltKQorLSAgICAgICAgICAgICAgICAgICAgY2xlYXJfdmlydHVh bF9zdGF0ZSA9IFRSVUU7CistICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgYnJl YWs7CisgICAgIGNhc2UgSUJVU19LRVlfU2hpZnRfTDoKK0BAIC03MDcsNyArNzYwLDggQEAgaWJ1 c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX3hrYl9zdGF0ZSAoSUJ1c1dheWxhbmRJTSAqd2xp bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzWGtiS2V5 bWFwICphY3RpdmVfa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHhrYl9tb2RfbWFza190IG1vZHNfZGVwcmVzc2VkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHhrYl9tb2RfbWFza190IG5ld19tb2RzX2RlcHJlc3NlZCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg ICBjbGVhcl92aXJ0dWFsX3N0YXRlKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgIGNsZWFyX3ZpcnR1YWxfc3RhdGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgaXNfaW52YWxp ZF9rZXkpCisgeworICAgICBJQnVzV2F5bGFuZElNUHJpdmF0ZSAqcHJpdjsKKyAgICAgdWludDMy X3QgY29kZSA9IGtleSArIDg7CitAQCAtNzM4LDggKzc5Miw5IEBAIGlidXNfd2F5bGFuZF9pbV91 cGRhdGVfdmlydHVhbF94a2Jfc3RhdGUgKElCdXNXYXlsYW5kSU0gKndsaW0sCisgICAgICAgICBp ZiAoY2xlYXJfdmlydHVhbF9zdGF0ZSkKKyAgICAgICAgICAgICBwcml2LT5pc192aXJ0dWFsX2xh dGNoX3N0YXRlID0gRkFMU0U7CisgICAgIH0KKy0gICAgaWYgKCFwcml2LT5pc192aXJ0dWFsX2xh dGNoX3N0YXRlIHx8CistICAgICAgICAoc3RhdGUgIT0gV0xfS0VZQk9BUkRfS0VZX1NUQVRFX1JF TEVBU0VEKSkgeworKyAgICBpZiAoR19MSUtFTFkgKCFpc19pbnZhbGlkX2tleSkgJiYKKysgICAg ICAgICghcHJpdi0+aXNfdmlydHVhbF9sYXRjaF9zdGF0ZSB8fAorKyAgICAgICAgIChzdGF0ZSAh PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpKSkgeworICAgICAgICAgeGtiX3N0YXRl X3VwZGF0ZV9rZXkgKGFjdGl2ZV9rZXktPnN0YXRlLCBjb2RlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzdGF0ZSA9PSBXTF9LRVlCT0FSRF9LRVlfU1RBVEVfUkVMRUFTRUQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBYS0JfS0VZX1VQIDogWEtCX0tFWV9ET1dO KTsKK0BAIC03NTQsNyArODA5LDggQEAgaWJ1c193YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX3hr Yl9zdGF0ZSAoSUJ1c1dheWxhbmRJTSAqd2xpbSwKKyAgICAgICAgIC8qICJkZShUMykiIGtleW1h cCBnaXZlcyB0aGUgcHJlc3NlZCAiTGV2ZWwzX1NoaWZ0IiBrZXlzeW0gYW5kCisgICAgICAgICAg KiBzZXRzIGJvdGggTU9EMyhMZXZlbDUpIGFuZCBNT0Q1KExldmVsMykgc3RhdGVzIGFmdGVyCisg ICAgICAgICAgKiB4a2Jfc3RhdGVfdXBkYXRlX2tleSgpIGlzIGNhbGxlZCB3aXRoIHRoZSBrZXlw cmVzcy4KKy0gICAgICAgICAqIE1heWJlIGEgYnVnIGluICJkZShUMykiIGFuZCBzZXRzIE1PRDUo TGV2ZWwzKSBhZ2FpbiBoZXJlLgorKyAgICAgICAgICogRklYTUU6IFNob3VsZCBzZXQgYGlzX2lu dmFsaWRfa2V5YCBpbiB0aGlzIGNhc2Ugb2YgdGhlICJkZShUMykiCisrICAgICAgICAgKiBrZXlt YXAgdG9vIG5vdCB0byBjYWxsIHhrYl9zdGF0ZV91cGRhdGVfa2V5KCkgaGVyZT8KKyAgICAgICAg ICAqLworICAgICAgICAgaWYgKEdfVU5MSUtFTFkgKG5ld19tb2RzX2RlcHJlc3NlZCAhPSBuZXcy X21vZHNfZGVwcmVzc2VkKSkgeworICAgICAgICAgICAgIHhrYl9zdGF0ZV91cGRhdGVfbWFzayAo YWN0aXZlX2tleS0+c3RhdGUsIG5ld19tb2RzX2RlcHJlc3NlZCwKK0BAIC0xNjIzLDYgKzE2Nzks NyBAQCBpYnVzX3dheWxhbmRfaW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCisgICAg IElCdXNYa2JLZXltYXAgKmFjdGl2ZV9rZXk7CisgICAgIHhrYl9tb2RfbWFza190IG1vZHNfZGVw cmVzc2VkLCBuZXdfbW9kc19kZXByZXNzZWQ7CisgICAgIGdib29sZWFuIGNsZWFyX3ZpcnR1YWxf c3RhdGUgPSBGQUxTRTsKKysgICAgZ2Jvb2xlYW4gaXNfaW52YWxpZF9rZXkgPSBGQUxTRTsKKyAK KyAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKElCVVNfSVNfV0FZTEFORF9JTSAod2xpbSksIEZB TFNFKTsKKyAgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAo d2xpbSk7CitAQCAtMTY1OCw3ICsxNzE1LDggQEAgaWJ1c193YXlsYW5kX2ltX3Bvc3Rfa2V5IChJ QnVzV2F5bGFuZElNICp3bGltLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZV9rZXksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19tb2Rz X2RlcHJlc3NlZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmY2xlYXJfdmlydHVhbF9zdGF0ZSk7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNsZWFyX3ZpcnR1YWxfc3Rh dGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmlzX2ludmFsaWRfa2V5KTsKKyAgICAgZmlsdGVyZWQgPSBpYnVzX3dheWxhbmRfaW1f Y29tbWl0X2tleV9ldmVudCAod2xpbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtb2RpZmllcnMsCitAQCAtMTY2NywxNCArMTcyNSwxNiBAQCBpYnVz X3dheWxhbmRfaW1fcG9zdF9rZXkgKElCdXNXYXlsYW5kSU0gKndsaW0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZV9rZXksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X21vZHNf ZGVwcmVzc2VkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmY2xlYXJfdmlydHVhbF9zdGF0ZSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZjbGVhcl92aXJ0dWFsX3N0YXRlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXNfaW52YWxpZF9rZXkpOwor ICAgICBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlICh3bGltLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVfa2V5LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RzX2RlcHJlc3NlZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21vZHNf ZGVwcmVzc2VkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjbGVhcl92aXJ0dWFsX3N0YXRlKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2xlYXJfdmlydHVhbF9zdGF0ZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW52YWxpZF9rZXkpOworICAgICByZXR1cm4g ZmlsdGVyZWQ7CisgfQorIAorQEAgLTIwNTMsNiArMjExMywyMSBAQCBrZXlfZXZlbnRfY2hlY2tf cmVwZWF0IChJQnVzV2F5bGFuZElNICAgICAgICp3bGltLAorICAgICAgICAgZ19jbGVhcl9wb2lu dGVyICgmcmVwZWF0aW5nX2V2ZW50LmlidXNfb2JqZWN0X3BhdGgsIGdfZnJlZSk7CisgICAgICAg ICBpZiAoIXByaXYtPmlidXNjb250ZXh0KQorICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKysg ICAgICAgIGlmIChJU19ERUFEX0tFWSAoZXZlbnQtPnN5bSkpIHsKKysgICAgICAgICAgICAvKiBX aXRoICJmcihlcmdvbCkiIGtleW1hcCwgaW4gY2FzZSB0aGF0IGtleSA8QUQwOT4gaXMgdHlwZWQK KysgICAgICAgICAgICAgKiB0d2ljZSwgdGhlIHNlY29uZCBwcmVzc2VkIGtleXN5bSBpcyAiZGVh ZF9kaWFlcmVzaXMiIGFuZAorKyAgICAgICAgICAgICAqIHRoZSBzZWNvbmQgcmVsZWFzZWQga2V5 c3ltIGlzICJJU09fTGV2ZWw1X0xhdGNoIi4KKysgICAgICAgICAgICAgKiBUaGUga2V5c3ltICJk ZWFkX2RpYWVyZXNpcyIgc2hvdWxkIG5vdCBiZSBhdXRvLXJlcGVhdGVkCisrICAgICAgICAgICAg ICogaW4gdGhpcyBjYXNlLgorKyAgICAgICAgICAgICAqLworKyAgICAgICAgICAgIGlmIChwcml2 LT5yZWxlYXNlZF9kZWFkX2tleV93b19wcmVzcyA9PSBldmVudC0+c3ltKSB7CisrICAgICAgICAg ICAgICAgIHByaXYtPnJlbGVhc2VkX2RlYWRfa2V5X3dvX3ByZXNzID0gMDsKKysgICAgICAgICAg ICAgICAgcmV0dXJuIFRSVUU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHByaXYtPnBy ZXNzZWRfZGVhZF9rZXkgPSBldmVudC0+c3ltOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAg ICAgICBwcml2LT5yZWxlYXNlZF9kZWFkX2tleV93b19wcmVzcyA9IDA7CisrICAgICAgICB9Cisg ICAgICAgICBzb3VyY2UgPSBnX3RpbWVvdXRfc291cmNlX25ldyAocHJpdi0+cmVwZWF0X2RlbGF5 KTsKKyAgICAgICAgIGdfc291cmNlX2F0dGFjaCAoc291cmNlLCBOVUxMKTsKKyAgICAgICAgIGdf c291cmNlX3VucmVmIChzb3VyY2UpOworQEAgLTIwNjYsNiArMjE0MSwzMCBAQCBrZXlfZXZlbnRf Y2hlY2tfcmVwZWF0IChJQnVzV2F5bGFuZElNICAgICAgICp3bGltLAorICAgICAgICAgZ19zb3Vy Y2Vfc2V0X2NhbGxiYWNrIChzb3VyY2UsIF9wcm9jZXNzX2tleV9ldmVudF9yZXBlYXRfZGVsYXlf Y2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXBlYXRpbmdfZXZlbnQsIE5V TEwpOworICAgICB9IGVsc2UgeworKyAgICAgICAgaWYgKGV2ZW50LT5zeW0gIT0gcmVwZWF0aW5n X2V2ZW50LnN5bSkgeworKyAgICAgICAgICAgIGlmIChJU19ERUFEX0tFWSAoZXZlbnQtPnN5bSkp IHsKKysgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5zeW0gPT0gcHJpdi0+cHJlc3NlZF9kZWFk X2tleSkgeworKyAgICAgICAgICAgICAgICAgICAgcHJpdi0+cHJlc3NlZF9kZWFkX2tleSA9IDA7 CisrICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXByaXYtPnByZXNzZWRfZGVhZF9rZXkpIHsK KysgICAgICAgICAgICAgICAgICAgIC8qIFdpdGggImZyKGVyZ29sKSIga2V5bWFwLCBpbiBjYXNl IHRoYXQga2V5IDxBRDA5PiBpcworKyAgICAgICAgICAgICAgICAgICAgICogdHlwZWQgdHdpY2Us IHRoZSBmaXJzdCBwcmVzc2VkIGtleXN5bSBpcworKyAgICAgICAgICAgICAgICAgICAgICogIklT T19MZXZlbDVfTGF0Y2giIGFuZCB0aGUgZmlyc3QgcmVsZWFzZWQga2V5c3ltIGlzCisrICAgICAg ICAgICAgICAgICAgICAgKiAiZGVhZF9kaWFlcmVzaXMiIHdpdGggdGhlIE1PRDModGhlIGxldmVs NSkgbWFzaywKKysgICAgICAgICAgICAgICAgICAgICAqIHRoZSBzZWNvbmQgcHJlc3NlZCBrZXlz eW0gaXMgImRlYWRfZGlhZXJlc2lzIiBhbmQKKysgICAgICAgICAgICAgICAgICAgICAqIHRoZSBz ZWNvbmQgcmVsZWFzZWQga2V5c3ltIGlzICJJU09fTGV2ZWw1X0xhdGNoIi4KKysgICAgICAgICAg ICAgICAgICAgICAqIFNvIHRoZSBmaXJzdCByZWxlYXNlZCAiZGVhZF9kaWFlcmVzaXMiIGlzIGlu dmFsaWQgYW5kCisrICAgICAgICAgICAgICAgICAgICAgKiB0aGUgc2Vjb25kIHByZXNzZWQgImRl YWRfZGlhZXJlc2lzIiBzaG91bGQgYmUgcmVsZWFzZWQKKysgICAgICAgICAgICAgICAgICAgICAq IGltbWVkaWF0ZWx5LgorKyAgICAgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAg ICAgICBwcml2LT5yZWxlYXNlZF9kZWFkX2tleV93b19wcmVzcyA9IGV2ZW50LT5zeW07CisrICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9IGVsc2UgaWYgKElTX0RF QURfS0VZIChyZXBlYXRpbmdfZXZlbnQuc3ltKSkgeworKyAgICAgICAgICAgIGlmIChyZXBlYXRp bmdfZXZlbnQuc3ltID09IHByaXYtPnByZXNzZWRfZGVhZF9rZXkpCisrICAgICAgICAgICAgICAg IHByaXYtPnByZXNzZWRfZGVhZF9rZXkgPSAwOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAg ICAgICBwcml2LT5yZWxlYXNlZF9kZWFkX2tleV93b19wcmVzcyA9IDA7CisrICAgICAgICB9Cisg ICAgICAgICBpZiAocmVwZWF0aW5nX2V2ZW50LnJlcGVhdF9yYXRlX2lkKSB7CisgICAgICAgICAg ICAgZ19zb3VyY2VfcmVtb3ZlIChyZXBlYXRpbmdfZXZlbnQucmVwZWF0X3JhdGVfaWQpOworICAg ICAgICAgICAgIHJlcGVhdGluZ19ldmVudC5yZXBlYXRfcmF0ZV9pZCA9IDA7CistLSAKKzIuNTQu MAorCitGcm9tIGI2MGI1NDA0NDQwNmZmNTA4ZmQwMjVkZTMyYzEwZDc4ODI5ZmYyYTMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+CitEYXRlOiBTdW4sIDE5IEp1bCAyMDI2IDE4OjE1OjQyICswOTAwCitTdWJqZWN0OiBb UEFUQ0ggNS81XSBjbGllbnQvd2F5bGFuZDogRml4IENhcHNMb2NrIGJldHdlZW4gZm9jdXMgY2hh bmdlcworCitpYnVzX3dheWxhbmRfaW1fcmVzZXRfbW9kaWZpZXJzKCkgc2hvdWxkIG5vdCByZXNl dCB0aGUgc3RhdGUgb2YgQ2Fwc0xvY2sKK2FuZCBpYnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1 YWxfZGVwcmVzc2VkKCkgc2hvdWxkIGNvbXBhcmUKK2Bwcml2LT5tb2RpZmllcnNgIGFuZCBgKG1v ZHNfZGVwcmVzc2VkICYgbW9kc19sb2NrZWQpYC4KKworRml4ZXM6ICMyODY5CistLS0KKyBjbGll bnQvd2F5bGFuZC9pYnVzd2F5bGFuZGltLmMgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYyBiL2NsaWVu dC93YXlsYW5kL2lidXN3YXlsYW5kaW0uYworaW5kZXggZWZlYjY3ODMuLjhiMWU3YjUzIDEwMDY0 NAorLS0tIGEvY2xpZW50L3dheWxhbmQvaWJ1c3dheWxhbmRpbS5jCisrKysgYi9jbGllbnQvd2F5 bGFuZC9pYnVzd2F5bGFuZGltLmMKK0BAIC0zNjIsNiArMzYyLDcgQEAgc3RhdGljIHZvaWQKKyBp YnVzX3dheWxhbmRfaW1fcmVzZXRfbW9kaWZpZXJzIChJQnVzV2F5bGFuZElNICp3bGltKQorIHsK KyAgICAgSUJ1c1dheWxhbmRJTVByaXZhdGUgKnByaXY7CisrICAgIHhrYl9tb2RfbWFza190IG1v ZHNfbG9ja2VkID0gMDsKKyAgICAgeGtiX2xheW91dF9pbmRleF90ICBncm91cCA9IDA7CisgCisg ICAgIGdfYXNzZXJ0IChJQlVTX0lTX1dBWUxBTkRfSU0gKHdsaW0pKTsKK0BAIC0zNzMsMTEgKzM3 NCwxNSBAQCBpYnVzX3dheWxhbmRfaW1fcmVzZXRfbW9kaWZpZXJzIChJQnVzV2F5bGFuZElNICp3 bGltKQorICAgICBwcml2LT5wcmVzc2VkX2RlYWRfa2V5ID0gMDsKKyAgICAgcHJpdi0+cmVsZWFz ZWRfZGVhZF9rZXlfd29fcHJlc3MgPSAwOworICAgICBpZiAocHJpdi0+a2V5X3VzZXIuc3RhdGUg JiYgcHJpdi0+a2V5X3N5cy5zdGF0ZSkgeworKyAgICAgICAgbW9kc19sb2NrZWQgPSB4a2Jfc3Rh dGVfc2VyaWFsaXplX21vZHMgKHByaXYtPmtleV9zeXMuc3RhdGUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xPQ0tFRCk7CisgICAg ICAgICBncm91cCA9IHhrYl9zdGF0ZV9zZXJpYWxpemVfbGF5b3V0IChwcml2LT5rZXlfc3lzLnN0 YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NU QVRFX0xBWU9VVF9MT0NLRUQpOworLSAgICAgICAgaW5wdXRfbWV0aG9kX2tleWJvYXJkX21vZGlm aWVycyAod2xpbSwgTlVMTCwgMCwgMCwgMCwgMCwgZ3JvdXApOworKyAgICAgICAgaW5wdXRfbWV0 aG9kX2tleWJvYXJkX21vZGlmaWVycyAod2xpbSwgTlVMTCwgMCwgMCwgMCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHNfbG9ja2VkLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXApOworICAgICB9IGVsc2UgeworLSAg ICAgICAgcHJpdi0+bW9kaWZpZXJzID0gMDsKKysgICAgICAgIHByaXYtPm1vZGlmaWVycyAmPSBJ QlVTX0xPQ0tfTUFTSzsKKyAgICAgfQorIH0KKyAKK0BAIC02MDAsNiArNjA1LDcgQEAgaWJ1c193 YXlsYW5kX2ltX3VwZGF0ZV92aXJ0dWFsX2RlcHJlc3NlZCAoSUJ1c1dheWxhbmRJTSAgKndsaW0s CisgICAgIElCdXNXYXlsYW5kSU1Qcml2YXRlICpwcml2OworICAgICB1aW50MzJfdCBjb2RlID0g a2V5ICsgODsKKyAgICAgeGtiX21vZF9tYXNrX3QgbmV3X21vZHNfZGVwcmVzc2VkOworKyAgICB4 a2JfbW9kX21hc2tfdCBtb2RzX2xvY2tlZDsKKyAgICAgeGtiX2tleXN5bV90IHN5c3RlbV9zeW0g PSBzeW07CisgCisgICAgIGlmIChmaWx0ZXJlZCkKK0BAIC02MTMsMTAgKzYxOSwxMyBAQCBpYnVz X3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfZGVwcmVzc2VkIChJQnVzV2F5bGFuZElNICAqd2xp bSwKKyAKKyAgICAgcHJpdiA9IGlidXNfd2F5bGFuZF9pbV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAo d2xpbSk7CisgICAgIG5ld19tb2RzX2RlcHJlc3NlZCA9ICptb2RzX2RlcHJlc3NlZDsKKysgICAg bW9kc19sb2NrZWQgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKGFjdGl2ZV9rZXktPnN0YXRl LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRF X0xPQ0tFRCk7CisgCistICAgIGlmICgobW9kaWZpZXJzICYgfklCVVNfUkVMRUFTRV9NQVNLICkg IT0gbmV3X21vZHNfZGVwcmVzc2VkKSB7CisrICAgIGlmICgobW9kaWZpZXJzICYgfklCVVNfUkVM RUFTRV9NQVNLICkgIT0KKysgICAgICAgIChuZXdfbW9kc19kZXByZXNzZWQgfCBtb2RzX2xvY2tl ZCkpIHsKKyAgICAgICAgIGdfd2FybmluZyAoIklCdXMgbW9kaWZpZXJzICVYIGlzIGRpZmZlcmVu dCBmcm9tIFhLQiBkZXByZXNzZWQgJVgiLAorLSAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMs IG5ld19tb2RzX2RlcHJlc3NlZCk7CisrICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgbmV3 X21vZHNfZGVwcmVzc2VkIHwgbW9kc19sb2NrZWQpOworICAgICB9CisgICAgIGlmIChwcml2LT5r ZXlfc3lzLnN0YXRlKQorICAgICAgICAgc3lzdGVtX3N5bSA9IHhrYl9zdGF0ZV9rZXlfZ2V0X29u ZV9zeW0gKHByaXYtPmtleV9zeXMuc3RhdGUsIGNvZGUpOworQEAgLTc3Miw3ICs3ODEsNyBAQCBp YnVzX3dheWxhbmRfaW1fdXBkYXRlX3ZpcnR1YWxfeGtiX3N0YXRlIChJQnVzV2F5bGFuZElNICp3 bGltLAorIAorICAgICBwcml2ID0gaWJ1c193YXlsYW5kX2ltX2dldF9pbnN0YW5jZV9wcml2YXRl ICh3bGltKTsKKyAgICAgbW9kc19sb2NrZWQgPSB4a2Jfc3RhdGVfc2VyaWFsaXplX21vZHMgKGFj dGl2ZV9rZXktPnN0YXRlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWEtCX1NUQVRFX01PRFNfTE9DS0VEKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9MT0NLRUQpOworICAgICAvKiBYS0IgZ3JvdXAg bGF5b3V0IGlzIGNvbmZpZ3VyZWQgaW4gdGhlIHN5c3RlbSBrZXltYXAgYnV0IG5vdCB0aGUKKyAg ICAgICogdXNlciBrZXltYXAgd2hpY2ggYWx3YXlzIGluY2x1ZGVzIGEgc2luZ2xlIGxheW91dC4K KyAgICAgICovCitAQCAtMjIyMCw5ICsyMjI5LDE1IEBAIGlucHV0X21ldGhvZF9rZXlib2FyZF9r ZXkgKHZvaWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCisgICAgIC8qIHhrYl9rZXlfZ2V0 X3N5bXMoKSBkb2VzIG5vdCByZXR1cm4gdGhlIGNhcGl0YWwgc3ltcyB3aXRoIFNoaWZ0IGtleS4g Ki8KKyAgICAgaWYgKHByaXYtPmtleV9zeXMuc3RhdGUpCisgICAgICAgICBldmVudC5zeW0gPSB4 a2Jfc3RhdGVfa2V5X2dldF9vbmVfc3ltIChwcml2LT5rZXlfc3lzLnN0YXRlLCBjb2RlKTsKKysg ICAgLyogVGhlIHBvc2l0aW9uIG9mIENhcHNfTG9jaywgQ29udHJvbCwgSVNPX05leHRfR3JvdXAs IE11bHRpX2tleSBrZXlzeW1zCisrICAgICAqIGNhbiBiZSBjdXN0b216aWVkIGJ5IGVhY2ggZGVz a3RvcCBjb25maWd1cmF0aW9uLgorKyAgICAgKi8KKyAgICAgc3dpdGNoIChldmVudC5zeW0pIHsK Ky0gICAgY2FzZSBJQlVTX0tFWV9NdWx0aV9rZXk6CisrICAgIGNhc2UgSUJVU19LRVlfQ2Fwc19M b2NrOgorKyAgICBjYXNlIElCVVNfS0VZX0NvbnRyb2xfTDoKKysgICAgY2FzZSBJQlVTX0tFWV9D b250cm9sX1I6CisgICAgIGNhc2UgSUJVU19LRVlfSVNPX05leHRfR3JvdXA6CisrICAgIGNhc2Ug SUJVU19LRVlfTXVsdGlfa2V5OgorICAgICAgICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6CisgICAg ICAgICBpZiAocHJpdi0+a2V5X3VzZXIuc3RhdGUpCitAQCAtMjMzNywxMSArMjM1MiwxMSBAQCBp bnB1dF9tZXRob2Rfa2V5Ym9hcmRfbW9kaWZpZXJzICh2b2lkICAgICAgICAgICAgICAgICAgICAg ICpkYXRhLAorICAgICAgICAgfQorICAgICB9CisgICAgIGlmIChhY3RpdmVfa2V5LT5zdGF0ZSkg eworLSAgICAgICAgLyogQ2Fwc0xvY2sgbmVlZHMgWEtCX1NUQVRFX01PRFNfTE9DS0VEICovCisr ICAgICAgICAvKiBDYXBzTG9jayBuZWVkcyBYS0JfU1RBVEVfTE9DS0VEICovCisgICAgICAgICBt YXNrID0geGtiX3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChhY3RpdmVfa2V5LT5zdGF0ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhLQl9TVEFURV9ERVBSRVNTRUQg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NUQVRFX0xB VENIRUQgfAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWEtCX1NU QVRFX01PRFNfTE9DS0VEKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhLQl9TVEFURV9MT0NLRUQpOworICAgICB9CisgICAgIGlmIChwcml2LT52ZXJib3NlKSB7 CisgICAgICAgICBzdHJ1Y3QgeGtiX3N0YXRlICpzdGF0ZSA9IGFjdGl2ZV9rZXktPnN0YXRlOwor QEAgLTIzNTYsNyArMjM3MSw3IEBAIGlucHV0X21ldGhvZF9rZXlib2FyZF9tb2RpZmllcnMgKHZv aWQgICAgICAgICAgICAgICAgICAgICAgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgeGti X3N0YXRlX3NlcmlhbGl6ZV9tb2RzIChzdGF0ZSwgWEtCX1NUQVRFX0xBVENIRUQpIDoKKyAgICAg ICAgICAgICAgICAgICAgICAweEZGRkZGRkZGLAorICAgICAgICAgICAgICAgICAgc3RhdGUgPwor LSAgICAgICAgICAgICAgICAgICAgIHhrYl9zdGF0ZV9zZXJpYWxpemVfbW9kcyAoc3RhdGUsIFhL Ql9TVEFURV9NT0RTX0xPQ0tFRCkgOgorKyAgICAgICAgICAgICAgICAgICAgIHhrYl9zdGF0ZV9z ZXJpYWxpemVfbW9kcyAoc3RhdGUsIFhLQl9TVEFURV9MT0NLRUQpIDoKKyAgICAgICAgICAgICAg ICAgICAgICAweEZGRkZGRkZGKTsKKyAgICAgICAgIGZmbHVzaCAocHJpdi0+bG9nKTsKKyAgICAg fQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhL2lidXMuc3BlYyBiL2lidXMuc3BlYwppbmRl eCBkOThmNWNlLi5jY2M5MWE1IDEwMDY0NAotLS0gYS9pYnVzLnNwZWMKKysrIGIvaWJ1cy5zcGVj CkBAIC00OCw3ICs0OCw3IEBACiBOYW1lOiAgICAgICAgICAgaWJ1cwogVmVyc2lvbjogICAgICAg IDEuNS4zNX5hbHBoYTIKICMgaHR0cHM6Ly9naXRodWIuY29tL2ZlZG9yYS1pbmZyYS9ycG1hdXRv c3BlYy9pc3N1ZXMvMTAxCi1SZWxlYXNlOiAgICAgICAgMyV7P2Rpc3R9CitSZWxlYXNlOiAgICAg ICAgNCV7P2Rpc3R9CiBTdW1tYXJ5OiAgICAgICAgSW50ZWxsaWdlbnQgSW5wdXQgQnVzIGZvciBM aW51eCBPUwogTGljZW5zZTogICAgICAgIExHUEwtMi4xLW9yLWxhdGVyCiBVUkw6ICAgICAgICAg ICAgaHR0cHM6Ly9naXRodWIuY29tL2lidXMvJW5hbWUvd2lraQpAQCAtNTgsNyArNTgsNiBAQCBT b3VyY2UyOiAgICAgICAgJXtuYW1lfS14aW5wdXQKIFNvdXJjZTM6ICAgICAgICAle25hbWV9LmNv bmYuNQogIyBQYXRjaDogICAgICAgICAlJXtuYW1lfS1IRUFELnBhdGNoCiBQYXRjaDogICAgICAg ICAgJXtuYW1lfS1IRUFELnBhdGNoCi1QYXRjaDogICAgICAgICAgJXtuYW1lfS0yNDQ0MDA5LXdh eWxhbmQteGtiLWx2LXRpbGRlLnBhdGNoCiAjIFVuZGVyIHRlc3RpbmcgIzEzNDkxNDggIzEzODUz NDkgIzEzNTAyOTEgIzE0MDY2OTkgIzE0MzIyNTIgIzE2MDE1NzcKIFBhdGNoOiAgICAgICAgICAl e25hbWV9LTEzODUzNDktc2Vndi1idXMtcHJveHkucGF0Y2gKIApAQCAtNTQ1LDYgKzU0NCwxMSBA QCBkY29uZiB1cGRhdGUgfHwgOgogJXtfZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2lidXMKIAog JWNoYW5nZWxvZworKiBTdW4gSnVsIDE5IDIwMjYgVGFrYW8gRnVqaXdhcmEgPHRmdWppd2FyQHJl ZGhhdC5jb20+IC0gMS41LjM1fmFscGhhMi00CistIEZpeCB0eXBvIGluIGlidXMtY29tcG9zZQor LSBNZXJnZSBpYnVzLTI0NDQwMDktd2F5bGFuZC14a2ItbHYtdGlsZGUucGF0Y2gKKy0gRml4IENh cHNMb2NrIGJldHdlZW4gZm9jdXMgY2hhbmdlcyBpbiBXYXlsYW5kCisKICogVGh1IEp1bCAxNiAy MDI2IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPiAtIDEuNS4zNX5hbHBoYTIt MwogLSBGaXggQ0kgaW4gR05PTUUgNTAKIAo=